Updates
diff --git a/about/index.html b/about/index.html
index 9dc8745..53feeba 100644
--- a/about/index.html
+++ b/about/index.html
@@ -1,7 +1,7 @@
 <!DOCTYPE html><html><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="ie=edge"/><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"/><style data-href="/openj9/styles.49a8f6a822c9d7d4566b.css">/*!
  * Font Awesome Free 5.12.1 by @fontawesome - https://fontawesome.com
  * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
- */.fa,.fab,.fad,.fal,.far,.fas{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-.0667em}.fa-xs{font-size:.75em}.fa-sm{font-size:.875em}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:2.5em;padding-left:0}.fa-ul>li{position:relative}.fa-li{left:-2em;position:absolute;text-align:center;width:2em;line-height:inherit}.fa-border{border:.08em solid #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.fab.fa-pull-left,.fal.fa-pull-left,.far.fa-pull-left,.fas.fa-pull-left{margin-right:.3em}.fa.fa-pull-right,.fab.fa-pull-right,.fal.fa-pull-right,.far.fa-pull-right,.fas.fa-pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s linear infinite;animation:fa-spin 2s linear infinite}.fa-pulse{-webkit-animation:fa-spin 1s steps(8) infinite;animation:fa-spin 1s steps(8) infinite}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scaleX(-1);transform:scaleX(-1)}.fa-flip-vertical{-webkit-transform:scaleY(-1);transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical,.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{-webkit-transform:scale(-1);transform:scale(-1)}:root .fa-flip-both,:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270{-webkit-filter:none;filter:none}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-500px:before{content:"\F26E"}.fa-accessible-icon:before{content:"\F368"}.fa-accusoft:before{content:"\F369"}.fa-acquisitions-incorporated:before{content:"\F6AF"}.fa-ad:before{content:"\F641"}.fa-address-book:before{content:"\F2B9"}.fa-address-card:before{content:"\F2BB"}.fa-adjust:before{content:"\F042"}.fa-adn:before{content:"\F170"}.fa-adobe:before{content:"\F778"}.fa-adversal:before{content:"\F36A"}.fa-affiliatetheme:before{content:"\F36B"}.fa-air-freshener:before{content:"\F5D0"}.fa-airbnb:before{content:"\F834"}.fa-algolia:before{content:"\F36C"}.fa-align-center:before{content:"\F037"}.fa-align-justify:before{content:"\F039"}.fa-align-left:before{content:"\F036"}.fa-align-right:before{content:"\F038"}.fa-alipay:before{content:"\F642"}.fa-allergies:before{content:"\F461"}.fa-amazon:before{content:"\F270"}.fa-amazon-pay:before{content:"\F42C"}.fa-ambulance:before{content:"\F0F9"}.fa-american-sign-language-interpreting:before{content:"\F2A3"}.fa-amilia:before{content:"\F36D"}.fa-anchor:before{content:"\F13D"}.fa-android:before{content:"\F17B"}.fa-angellist:before{content:"\F209"}.fa-angle-double-down:before{content:"\F103"}.fa-angle-double-left:before{content:"\F100"}.fa-angle-double-right:before{content:"\F101"}.fa-angle-double-up:before{content:"\F102"}.fa-angle-down:before{content:"\F107"}.fa-angle-left:before{content:"\F104"}.fa-angle-right:before{content:"\F105"}.fa-angle-up:before{content:"\F106"}.fa-angry:before{content:"\F556"}.fa-angrycreative:before{content:"\F36E"}.fa-angular:before{content:"\F420"}.fa-ankh:before{content:"\F644"}.fa-app-store:before{content:"\F36F"}.fa-app-store-ios:before{content:"\F370"}.fa-apper:before{content:"\F371"}.fa-apple:before{content:"\F179"}.fa-apple-alt:before{content:"\F5D1"}.fa-apple-pay:before{content:"\F415"}.fa-archive:before{content:"\F187"}.fa-archway:before{content:"\F557"}.fa-arrow-alt-circle-down:before{content:"\F358"}.fa-arrow-alt-circle-left:before{content:"\F359"}.fa-arrow-alt-circle-right:before{content:"\F35A"}.fa-arrow-alt-circle-up:before{content:"\F35B"}.fa-arrow-circle-down:before{content:"\F0AB"}.fa-arrow-circle-left:before{content:"\F0A8"}.fa-arrow-circle-right:before{content:"\F0A9"}.fa-arrow-circle-up:before{content:"\F0AA"}.fa-arrow-down:before{content:"\F063"}.fa-arrow-left:before{content:"\F060"}.fa-arrow-right:before{content:"\F061"}.fa-arrow-up:before{content:"\F062"}.fa-arrows-alt:before{content:"\F0B2"}.fa-arrows-alt-h:before{content:"\F337"}.fa-arrows-alt-v:before{content:"\F338"}.fa-artstation:before{content:"\F77A"}.fa-assistive-listening-systems:before{content:"\F2A2"}.fa-asterisk:before{content:"\F069"}.fa-asymmetrik:before{content:"\F372"}.fa-at:before{content:"\F1FA"}.fa-atlas:before{content:"\F558"}.fa-atlassian:before{content:"\F77B"}.fa-atom:before{content:"\F5D2"}.fa-audible:before{content:"\F373"}.fa-audio-description:before{content:"\F29E"}.fa-autoprefixer:before{content:"\F41C"}.fa-avianex:before{content:"\F374"}.fa-aviato:before{content:"\F421"}.fa-award:before{content:"\F559"}.fa-aws:before{content:"\F375"}.fa-baby:before{content:"\F77C"}.fa-baby-carriage:before{content:"\F77D"}.fa-backspace:before{content:"\F55A"}.fa-backward:before{content:"\F04A"}.fa-bacon:before{content:"\F7E5"}.fa-bahai:before{content:"\F666"}.fa-balance-scale:before{content:"\F24E"}.fa-balance-scale-left:before{content:"\F515"}.fa-balance-scale-right:before{content:"\F516"}.fa-ban:before{content:"\F05E"}.fa-band-aid:before{content:"\F462"}.fa-bandcamp:before{content:"\F2D5"}.fa-barcode:before{content:"\F02A"}.fa-bars:before{content:"\F0C9"}.fa-baseball-ball:before{content:"\F433"}.fa-basketball-ball:before{content:"\F434"}.fa-bath:before{content:"\F2CD"}.fa-battery-empty:before{content:"\F244"}.fa-battery-full:before{content:"\F240"}.fa-battery-half:before{content:"\F242"}.fa-battery-quarter:before{content:"\F243"}.fa-battery-three-quarters:before{content:"\F241"}.fa-battle-net:before{content:"\F835"}.fa-bed:before{content:"\F236"}.fa-beer:before{content:"\F0FC"}.fa-behance:before{content:"\F1B4"}.fa-behance-square:before{content:"\F1B5"}.fa-bell:before{content:"\F0F3"}.fa-bell-slash:before{content:"\F1F6"}.fa-bezier-curve:before{content:"\F55B"}.fa-bible:before{content:"\F647"}.fa-bicycle:before{content:"\F206"}.fa-biking:before{content:"\F84A"}.fa-bimobject:before{content:"\F378"}.fa-binoculars:before{content:"\F1E5"}.fa-biohazard:before{content:"\F780"}.fa-birthday-cake:before{content:"\F1FD"}.fa-bitbucket:before{content:"\F171"}.fa-bitcoin:before{content:"\F379"}.fa-bity:before{content:"\F37A"}.fa-black-tie:before{content:"\F27E"}.fa-blackberry:before{content:"\F37B"}.fa-blender:before{content:"\F517"}.fa-blender-phone:before{content:"\F6B6"}.fa-blind:before{content:"\F29D"}.fa-blog:before{content:"\F781"}.fa-blogger:before{content:"\F37C"}.fa-blogger-b:before{content:"\F37D"}.fa-bluetooth:before{content:"\F293"}.fa-bluetooth-b:before{content:"\F294"}.fa-bold:before{content:"\F032"}.fa-bolt:before{content:"\F0E7"}.fa-bomb:before{content:"\F1E2"}.fa-bone:before{content:"\F5D7"}.fa-bong:before{content:"\F55C"}.fa-book:before{content:"\F02D"}.fa-book-dead:before{content:"\F6B7"}.fa-book-medical:before{content:"\F7E6"}.fa-book-open:before{content:"\F518"}.fa-book-reader:before{content:"\F5DA"}.fa-bookmark:before{content:"\F02E"}.fa-bootstrap:before{content:"\F836"}.fa-border-all:before{content:"\F84C"}.fa-border-none:before{content:"\F850"}.fa-border-style:before{content:"\F853"}.fa-bowling-ball:before{content:"\F436"}.fa-box:before{content:"\F466"}.fa-box-open:before{content:"\F49E"}.fa-boxes:before{content:"\F468"}.fa-braille:before{content:"\F2A1"}.fa-brain:before{content:"\F5DC"}.fa-bread-slice:before{content:"\F7EC"}.fa-briefcase:before{content:"\F0B1"}.fa-briefcase-medical:before{content:"\F469"}.fa-broadcast-tower:before{content:"\F519"}.fa-broom:before{content:"\F51A"}.fa-brush:before{content:"\F55D"}.fa-btc:before{content:"\F15A"}.fa-buffer:before{content:"\F837"}.fa-bug:before{content:"\F188"}.fa-building:before{content:"\F1AD"}.fa-bullhorn:before{content:"\F0A1"}.fa-bullseye:before{content:"\F140"}.fa-burn:before{content:"\F46A"}.fa-buromobelexperte:before{content:"\F37F"}.fa-bus:before{content:"\F207"}.fa-bus-alt:before{content:"\F55E"}.fa-business-time:before{content:"\F64A"}.fa-buy-n-large:before{content:"\F8A6"}.fa-buysellads:before{content:"\F20D"}.fa-calculator:before{content:"\F1EC"}.fa-calendar:before{content:"\F133"}.fa-calendar-alt:before{content:"\F073"}.fa-calendar-check:before{content:"\F274"}.fa-calendar-day:before{content:"\F783"}.fa-calendar-minus:before{content:"\F272"}.fa-calendar-plus:before{content:"\F271"}.fa-calendar-times:before{content:"\F273"}.fa-calendar-week:before{content:"\F784"}.fa-camera:before{content:"\F030"}.fa-camera-retro:before{content:"\F083"}.fa-campground:before{content:"\F6BB"}.fa-canadian-maple-leaf:before{content:"\F785"}.fa-candy-cane:before{content:"\F786"}.fa-cannabis:before{content:"\F55F"}.fa-capsules:before{content:"\F46B"}.fa-car:before{content:"\F1B9"}.fa-car-alt:before{content:"\F5DE"}.fa-car-battery:before{content:"\F5DF"}.fa-car-crash:before{content:"\F5E1"}.fa-car-side:before{content:"\F5E4"}.fa-caravan:before{content:"\F8FF"}.fa-caret-down:before{content:"\F0D7"}.fa-caret-left:before{content:"\F0D9"}.fa-caret-right:before{content:"\F0DA"}.fa-caret-square-down:before{content:"\F150"}.fa-caret-square-left:before{content:"\F191"}.fa-caret-square-right:before{content:"\F152"}.fa-caret-square-up:before{content:"\F151"}.fa-caret-up:before{content:"\F0D8"}.fa-carrot:before{content:"\F787"}.fa-cart-arrow-down:before{content:"\F218"}.fa-cart-plus:before{content:"\F217"}.fa-cash-register:before{content:"\F788"}.fa-cat:before{content:"\F6BE"}.fa-cc-amazon-pay:before{content:"\F42D"}.fa-cc-amex:before{content:"\F1F3"}.fa-cc-apple-pay:before{content:"\F416"}.fa-cc-diners-club:before{content:"\F24C"}.fa-cc-discover:before{content:"\F1F2"}.fa-cc-jcb:before{content:"\F24B"}.fa-cc-mastercard:before{content:"\F1F1"}.fa-cc-paypal:before{content:"\F1F4"}.fa-cc-stripe:before{content:"\F1F5"}.fa-cc-visa:before{content:"\F1F0"}.fa-centercode:before{content:"\F380"}.fa-centos:before{content:"\F789"}.fa-certificate:before{content:"\F0A3"}.fa-chair:before{content:"\F6C0"}.fa-chalkboard:before{content:"\F51B"}.fa-chalkboard-teacher:before{content:"\F51C"}.fa-charging-station:before{content:"\F5E7"}.fa-chart-area:before{content:"\F1FE"}.fa-chart-bar:before{content:"\F080"}.fa-chart-line:before{content:"\F201"}.fa-chart-pie:before{content:"\F200"}.fa-check:before{content:"\F00C"}.fa-check-circle:before{content:"\F058"}.fa-check-double:before{content:"\F560"}.fa-check-square:before{content:"\F14A"}.fa-cheese:before{content:"\F7EF"}.fa-chess:before{content:"\F439"}.fa-chess-bishop:before{content:"\F43A"}.fa-chess-board:before{content:"\F43C"}.fa-chess-king:before{content:"\F43F"}.fa-chess-knight:before{content:"\F441"}.fa-chess-pawn:before{content:"\F443"}.fa-chess-queen:before{content:"\F445"}.fa-chess-rook:before{content:"\F447"}.fa-chevron-circle-down:before{content:"\F13A"}.fa-chevron-circle-left:before{content:"\F137"}.fa-chevron-circle-right:before{content:"\F138"}.fa-chevron-circle-up:before{content:"\F139"}.fa-chevron-down:before{content:"\F078"}.fa-chevron-left:before{content:"\F053"}.fa-chevron-right:before{content:"\F054"}.fa-chevron-up:before{content:"\F077"}.fa-child:before{content:"\F1AE"}.fa-chrome:before{content:"\F268"}.fa-chromecast:before{content:"\F838"}.fa-church:before{content:"\F51D"}.fa-circle:before{content:"\F111"}.fa-circle-notch:before{content:"\F1CE"}.fa-city:before{content:"\F64F"}.fa-clinic-medical:before{content:"\F7F2"}.fa-clipboard:before{content:"\F328"}.fa-clipboard-check:before{content:"\F46C"}.fa-clipboard-list:before{content:"\F46D"}.fa-clock:before{content:"\F017"}.fa-clone:before{content:"\F24D"}.fa-closed-captioning:before{content:"\F20A"}.fa-cloud:before{content:"\F0C2"}.fa-cloud-download-alt:before{content:"\F381"}.fa-cloud-meatball:before{content:"\F73B"}.fa-cloud-moon:before{content:"\F6C3"}.fa-cloud-moon-rain:before{content:"\F73C"}.fa-cloud-rain:before{content:"\F73D"}.fa-cloud-showers-heavy:before{content:"\F740"}.fa-cloud-sun:before{content:"\F6C4"}.fa-cloud-sun-rain:before{content:"\F743"}.fa-cloud-upload-alt:before{content:"\F382"}.fa-cloudscale:before{content:"\F383"}.fa-cloudsmith:before{content:"\F384"}.fa-cloudversify:before{content:"\F385"}.fa-cocktail:before{content:"\F561"}.fa-code:before{content:"\F121"}.fa-code-branch:before{content:"\F126"}.fa-codepen:before{content:"\F1CB"}.fa-codiepie:before{content:"\F284"}.fa-coffee:before{content:"\F0F4"}.fa-cog:before{content:"\F013"}.fa-cogs:before{content:"\F085"}.fa-coins:before{content:"\F51E"}.fa-columns:before{content:"\F0DB"}.fa-comment:before{content:"\F075"}.fa-comment-alt:before{content:"\F27A"}.fa-comment-dollar:before{content:"\F651"}.fa-comment-dots:before{content:"\F4AD"}.fa-comment-medical:before{content:"\F7F5"}.fa-comment-slash:before{content:"\F4B3"}.fa-comments:before{content:"\F086"}.fa-comments-dollar:before{content:"\F653"}.fa-compact-disc:before{content:"\F51F"}.fa-compass:before{content:"\F14E"}.fa-compress:before{content:"\F066"}.fa-compress-alt:before{content:"\F422"}.fa-compress-arrows-alt:before{content:"\F78C"}.fa-concierge-bell:before{content:"\F562"}.fa-confluence:before{content:"\F78D"}.fa-connectdevelop:before{content:"\F20E"}.fa-contao:before{content:"\F26D"}.fa-cookie:before{content:"\F563"}.fa-cookie-bite:before{content:"\F564"}.fa-copy:before{content:"\F0C5"}.fa-copyright:before{content:"\F1F9"}.fa-cotton-bureau:before{content:"\F89E"}.fa-couch:before{content:"\F4B8"}.fa-cpanel:before{content:"\F388"}.fa-creative-commons:before{content:"\F25E"}.fa-creative-commons-by:before{content:"\F4E7"}.fa-creative-commons-nc:before{content:"\F4E8"}.fa-creative-commons-nc-eu:before{content:"\F4E9"}.fa-creative-commons-nc-jp:before{content:"\F4EA"}.fa-creative-commons-nd:before{content:"\F4EB"}.fa-creative-commons-pd:before{content:"\F4EC"}.fa-creative-commons-pd-alt:before{content:"\F4ED"}.fa-creative-commons-remix:before{content:"\F4EE"}.fa-creative-commons-sa:before{content:"\F4EF"}.fa-creative-commons-sampling:before{content:"\F4F0"}.fa-creative-commons-sampling-plus:before{content:"\F4F1"}.fa-creative-commons-share:before{content:"\F4F2"}.fa-creative-commons-zero:before{content:"\F4F3"}.fa-credit-card:before{content:"\F09D"}.fa-critical-role:before{content:"\F6C9"}.fa-crop:before{content:"\F125"}.fa-crop-alt:before{content:"\F565"}.fa-cross:before{content:"\F654"}.fa-crosshairs:before{content:"\F05B"}.fa-crow:before{content:"\F520"}.fa-crown:before{content:"\F521"}.fa-crutch:before{content:"\F7F7"}.fa-css3:before{content:"\F13C"}.fa-css3-alt:before{content:"\F38B"}.fa-cube:before{content:"\F1B2"}.fa-cubes:before{content:"\F1B3"}.fa-cut:before{content:"\F0C4"}.fa-cuttlefish:before{content:"\F38C"}.fa-d-and-d:before{content:"\F38D"}.fa-d-and-d-beyond:before{content:"\F6CA"}.fa-dailymotion:before{content:"\F952"}.fa-dashcube:before{content:"\F210"}.fa-database:before{content:"\F1C0"}.fa-deaf:before{content:"\F2A4"}.fa-delicious:before{content:"\F1A5"}.fa-democrat:before{content:"\F747"}.fa-deploydog:before{content:"\F38E"}.fa-deskpro:before{content:"\F38F"}.fa-desktop:before{content:"\F108"}.fa-dev:before{content:"\F6CC"}.fa-deviantart:before{content:"\F1BD"}.fa-dharmachakra:before{content:"\F655"}.fa-dhl:before{content:"\F790"}.fa-diagnoses:before{content:"\F470"}.fa-diaspora:before{content:"\F791"}.fa-dice:before{content:"\F522"}.fa-dice-d20:before{content:"\F6CF"}.fa-dice-d6:before{content:"\F6D1"}.fa-dice-five:before{content:"\F523"}.fa-dice-four:before{content:"\F524"}.fa-dice-one:before{content:"\F525"}.fa-dice-six:before{content:"\F526"}.fa-dice-three:before{content:"\F527"}.fa-dice-two:before{content:"\F528"}.fa-digg:before{content:"\F1A6"}.fa-digital-ocean:before{content:"\F391"}.fa-digital-tachograph:before{content:"\F566"}.fa-directions:before{content:"\F5EB"}.fa-discord:before{content:"\F392"}.fa-discourse:before{content:"\F393"}.fa-divide:before{content:"\F529"}.fa-dizzy:before{content:"\F567"}.fa-dna:before{content:"\F471"}.fa-dochub:before{content:"\F394"}.fa-docker:before{content:"\F395"}.fa-dog:before{content:"\F6D3"}.fa-dollar-sign:before{content:"\F155"}.fa-dolly:before{content:"\F472"}.fa-dolly-flatbed:before{content:"\F474"}.fa-donate:before{content:"\F4B9"}.fa-door-closed:before{content:"\F52A"}.fa-door-open:before{content:"\F52B"}.fa-dot-circle:before{content:"\F192"}.fa-dove:before{content:"\F4BA"}.fa-download:before{content:"\F019"}.fa-draft2digital:before{content:"\F396"}.fa-drafting-compass:before{content:"\F568"}.fa-dragon:before{content:"\F6D5"}.fa-draw-polygon:before{content:"\F5EE"}.fa-dribbble:before{content:"\F17D"}.fa-dribbble-square:before{content:"\F397"}.fa-dropbox:before{content:"\F16B"}.fa-drum:before{content:"\F569"}.fa-drum-steelpan:before{content:"\F56A"}.fa-drumstick-bite:before{content:"\F6D7"}.fa-drupal:before{content:"\F1A9"}.fa-dumbbell:before{content:"\F44B"}.fa-dumpster:before{content:"\F793"}.fa-dumpster-fire:before{content:"\F794"}.fa-dungeon:before{content:"\F6D9"}.fa-dyalog:before{content:"\F399"}.fa-earlybirds:before{content:"\F39A"}.fa-ebay:before{content:"\F4F4"}.fa-edge:before{content:"\F282"}.fa-edit:before{content:"\F044"}.fa-egg:before{content:"\F7FB"}.fa-eject:before{content:"\F052"}.fa-elementor:before{content:"\F430"}.fa-ellipsis-h:before{content:"\F141"}.fa-ellipsis-v:before{content:"\F142"}.fa-ello:before{content:"\F5F1"}.fa-ember:before{content:"\F423"}.fa-empire:before{content:"\F1D1"}.fa-envelope:before{content:"\F0E0"}.fa-envelope-open:before{content:"\F2B6"}.fa-envelope-open-text:before{content:"\F658"}.fa-envelope-square:before{content:"\F199"}.fa-envira:before{content:"\F299"}.fa-equals:before{content:"\F52C"}.fa-eraser:before{content:"\F12D"}.fa-erlang:before{content:"\F39D"}.fa-ethereum:before{content:"\F42E"}.fa-ethernet:before{content:"\F796"}.fa-etsy:before{content:"\F2D7"}.fa-euro-sign:before{content:"\F153"}.fa-evernote:before{content:"\F839"}.fa-exchange-alt:before{content:"\F362"}.fa-exclamation:before{content:"\F12A"}.fa-exclamation-circle:before{content:"\F06A"}.fa-exclamation-triangle:before{content:"\F071"}.fa-expand:before{content:"\F065"}.fa-expand-alt:before{content:"\F424"}.fa-expand-arrows-alt:before{content:"\F31E"}.fa-expeditedssl:before{content:"\F23E"}.fa-external-link-alt:before{content:"\F35D"}.fa-external-link-square-alt:before{content:"\F360"}.fa-eye:before{content:"\F06E"}.fa-eye-dropper:before{content:"\F1FB"}.fa-eye-slash:before{content:"\F070"}.fa-facebook:before{content:"\F09A"}.fa-facebook-f:before{content:"\F39E"}.fa-facebook-messenger:before{content:"\F39F"}.fa-facebook-square:before{content:"\F082"}.fa-fan:before{content:"\F863"}.fa-fantasy-flight-games:before{content:"\F6DC"}.fa-fast-backward:before{content:"\F049"}.fa-fast-forward:before{content:"\F050"}.fa-fax:before{content:"\F1AC"}.fa-feather:before{content:"\F52D"}.fa-feather-alt:before{content:"\F56B"}.fa-fedex:before{content:"\F797"}.fa-fedora:before{content:"\F798"}.fa-female:before{content:"\F182"}.fa-fighter-jet:before{content:"\F0FB"}.fa-figma:before{content:"\F799"}.fa-file:before{content:"\F15B"}.fa-file-alt:before{content:"\F15C"}.fa-file-archive:before{content:"\F1C6"}.fa-file-audio:before{content:"\F1C7"}.fa-file-code:before{content:"\F1C9"}.fa-file-contract:before{content:"\F56C"}.fa-file-csv:before{content:"\F6DD"}.fa-file-download:before{content:"\F56D"}.fa-file-excel:before{content:"\F1C3"}.fa-file-export:before{content:"\F56E"}.fa-file-image:before{content:"\F1C5"}.fa-file-import:before{content:"\F56F"}.fa-file-invoice:before{content:"\F570"}.fa-file-invoice-dollar:before{content:"\F571"}.fa-file-medical:before{content:"\F477"}.fa-file-medical-alt:before{content:"\F478"}.fa-file-pdf:before{content:"\F1C1"}.fa-file-powerpoint:before{content:"\F1C4"}.fa-file-prescription:before{content:"\F572"}.fa-file-signature:before{content:"\F573"}.fa-file-upload:before{content:"\F574"}.fa-file-video:before{content:"\F1C8"}.fa-file-word:before{content:"\F1C2"}.fa-fill:before{content:"\F575"}.fa-fill-drip:before{content:"\F576"}.fa-film:before{content:"\F008"}.fa-filter:before{content:"\F0B0"}.fa-fingerprint:before{content:"\F577"}.fa-fire:before{content:"\F06D"}.fa-fire-alt:before{content:"\F7E4"}.fa-fire-extinguisher:before{content:"\F134"}.fa-firefox:before{content:"\F269"}.fa-firefox-browser:before{content:"\F907"}.fa-first-aid:before{content:"\F479"}.fa-first-order:before{content:"\F2B0"}.fa-first-order-alt:before{content:"\F50A"}.fa-firstdraft:before{content:"\F3A1"}.fa-fish:before{content:"\F578"}.fa-fist-raised:before{content:"\F6DE"}.fa-flag:before{content:"\F024"}.fa-flag-checkered:before{content:"\F11E"}.fa-flag-usa:before{content:"\F74D"}.fa-flask:before{content:"\F0C3"}.fa-flickr:before{content:"\F16E"}.fa-flipboard:before{content:"\F44D"}.fa-flushed:before{content:"\F579"}.fa-fly:before{content:"\F417"}.fa-folder:before{content:"\F07B"}.fa-folder-minus:before{content:"\F65D"}.fa-folder-open:before{content:"\F07C"}.fa-folder-plus:before{content:"\F65E"}.fa-font:before{content:"\F031"}.fa-font-awesome:before{content:"\F2B4"}.fa-font-awesome-alt:before{content:"\F35C"}.fa-font-awesome-flag:before{content:"\F425"}.fa-font-awesome-logo-full:before{content:"\F4E6"}.fa-fonticons:before{content:"\F280"}.fa-fonticons-fi:before{content:"\F3A2"}.fa-football-ball:before{content:"\F44E"}.fa-fort-awesome:before{content:"\F286"}.fa-fort-awesome-alt:before{content:"\F3A3"}.fa-forumbee:before{content:"\F211"}.fa-forward:before{content:"\F04E"}.fa-foursquare:before{content:"\F180"}.fa-free-code-camp:before{content:"\F2C5"}.fa-freebsd:before{content:"\F3A4"}.fa-frog:before{content:"\F52E"}.fa-frown:before{content:"\F119"}.fa-frown-open:before{content:"\F57A"}.fa-fulcrum:before{content:"\F50B"}.fa-funnel-dollar:before{content:"\F662"}.fa-futbol:before{content:"\F1E3"}.fa-galactic-republic:before{content:"\F50C"}.fa-galactic-senate:before{content:"\F50D"}.fa-gamepad:before{content:"\F11B"}.fa-gas-pump:before{content:"\F52F"}.fa-gavel:before{content:"\F0E3"}.fa-gem:before{content:"\F3A5"}.fa-genderless:before{content:"\F22D"}.fa-get-pocket:before{content:"\F265"}.fa-gg:before{content:"\F260"}.fa-gg-circle:before{content:"\F261"}.fa-ghost:before{content:"\F6E2"}.fa-gift:before{content:"\F06B"}.fa-gifts:before{content:"\F79C"}.fa-git:before{content:"\F1D3"}.fa-git-alt:before{content:"\F841"}.fa-git-square:before{content:"\F1D2"}.fa-github:before{content:"\F09B"}.fa-github-alt:before{content:"\F113"}.fa-github-square:before{content:"\F092"}.fa-gitkraken:before{content:"\F3A6"}.fa-gitlab:before{content:"\F296"}.fa-gitter:before{content:"\F426"}.fa-glass-cheers:before{content:"\F79F"}.fa-glass-martini:before{content:"\F000"}.fa-glass-martini-alt:before{content:"\F57B"}.fa-glass-whiskey:before{content:"\F7A0"}.fa-glasses:before{content:"\F530"}.fa-glide:before{content:"\F2A5"}.fa-glide-g:before{content:"\F2A6"}.fa-globe:before{content:"\F0AC"}.fa-globe-africa:before{content:"\F57C"}.fa-globe-americas:before{content:"\F57D"}.fa-globe-asia:before{content:"\F57E"}.fa-globe-europe:before{content:"\F7A2"}.fa-gofore:before{content:"\F3A7"}.fa-golf-ball:before{content:"\F450"}.fa-goodreads:before{content:"\F3A8"}.fa-goodreads-g:before{content:"\F3A9"}.fa-google:before{content:"\F1A0"}.fa-google-drive:before{content:"\F3AA"}.fa-google-play:before{content:"\F3AB"}.fa-google-plus:before{content:"\F2B3"}.fa-google-plus-g:before{content:"\F0D5"}.fa-google-plus-square:before{content:"\F0D4"}.fa-google-wallet:before{content:"\F1EE"}.fa-gopuram:before{content:"\F664"}.fa-graduation-cap:before{content:"\F19D"}.fa-gratipay:before{content:"\F184"}.fa-grav:before{content:"\F2D6"}.fa-greater-than:before{content:"\F531"}.fa-greater-than-equal:before{content:"\F532"}.fa-grimace:before{content:"\F57F"}.fa-grin:before{content:"\F580"}.fa-grin-alt:before{content:"\F581"}.fa-grin-beam:before{content:"\F582"}.fa-grin-beam-sweat:before{content:"\F583"}.fa-grin-hearts:before{content:"\F584"}.fa-grin-squint:before{content:"\F585"}.fa-grin-squint-tears:before{content:"\F586"}.fa-grin-stars:before{content:"\F587"}.fa-grin-tears:before{content:"\F588"}.fa-grin-tongue:before{content:"\F589"}.fa-grin-tongue-squint:before{content:"\F58A"}.fa-grin-tongue-wink:before{content:"\F58B"}.fa-grin-wink:before{content:"\F58C"}.fa-grip-horizontal:before{content:"\F58D"}.fa-grip-lines:before{content:"\F7A4"}.fa-grip-lines-vertical:before{content:"\F7A5"}.fa-grip-vertical:before{content:"\F58E"}.fa-gripfire:before{content:"\F3AC"}.fa-grunt:before{content:"\F3AD"}.fa-guitar:before{content:"\F7A6"}.fa-gulp:before{content:"\F3AE"}.fa-h-square:before{content:"\F0FD"}.fa-hacker-news:before{content:"\F1D4"}.fa-hacker-news-square:before{content:"\F3AF"}.fa-hackerrank:before{content:"\F5F7"}.fa-hamburger:before{content:"\F805"}.fa-hammer:before{content:"\F6E3"}.fa-hamsa:before{content:"\F665"}.fa-hand-holding:before{content:"\F4BD"}.fa-hand-holding-heart:before{content:"\F4BE"}.fa-hand-holding-usd:before{content:"\F4C0"}.fa-hand-lizard:before{content:"\F258"}.fa-hand-middle-finger:before{content:"\F806"}.fa-hand-paper:before{content:"\F256"}.fa-hand-peace:before{content:"\F25B"}.fa-hand-point-down:before{content:"\F0A7"}.fa-hand-point-left:before{content:"\F0A5"}.fa-hand-point-right:before{content:"\F0A4"}.fa-hand-point-up:before{content:"\F0A6"}.fa-hand-pointer:before{content:"\F25A"}.fa-hand-rock:before{content:"\F255"}.fa-hand-scissors:before{content:"\F257"}.fa-hand-spock:before{content:"\F259"}.fa-hands:before{content:"\F4C2"}.fa-hands-helping:before{content:"\F4C4"}.fa-handshake:before{content:"\F2B5"}.fa-hanukiah:before{content:"\F6E6"}.fa-hard-hat:before{content:"\F807"}.fa-hashtag:before{content:"\F292"}.fa-hat-cowboy:before{content:"\F8C0"}.fa-hat-cowboy-side:before{content:"\F8C1"}.fa-hat-wizard:before{content:"\F6E8"}.fa-hdd:before{content:"\F0A0"}.fa-heading:before{content:"\F1DC"}.fa-headphones:before{content:"\F025"}.fa-headphones-alt:before{content:"\F58F"}.fa-headset:before{content:"\F590"}.fa-heart:before{content:"\F004"}.fa-heart-broken:before{content:"\F7A9"}.fa-heartbeat:before{content:"\F21E"}.fa-helicopter:before{content:"\F533"}.fa-highlighter:before{content:"\F591"}.fa-hiking:before{content:"\F6EC"}.fa-hippo:before{content:"\F6ED"}.fa-hips:before{content:"\F452"}.fa-hire-a-helper:before{content:"\F3B0"}.fa-history:before{content:"\F1DA"}.fa-hockey-puck:before{content:"\F453"}.fa-holly-berry:before{content:"\F7AA"}.fa-home:before{content:"\F015"}.fa-hooli:before{content:"\F427"}.fa-hornbill:before{content:"\F592"}.fa-horse:before{content:"\F6F0"}.fa-horse-head:before{content:"\F7AB"}.fa-hospital:before{content:"\F0F8"}.fa-hospital-alt:before{content:"\F47D"}.fa-hospital-symbol:before{content:"\F47E"}.fa-hot-tub:before{content:"\F593"}.fa-hotdog:before{content:"\F80F"}.fa-hotel:before{content:"\F594"}.fa-hotjar:before{content:"\F3B1"}.fa-hourglass:before{content:"\F254"}.fa-hourglass-end:before{content:"\F253"}.fa-hourglass-half:before{content:"\F252"}.fa-hourglass-start:before{content:"\F251"}.fa-house-damage:before{content:"\F6F1"}.fa-houzz:before{content:"\F27C"}.fa-hryvnia:before{content:"\F6F2"}.fa-html5:before{content:"\F13B"}.fa-hubspot:before{content:"\F3B2"}.fa-i-cursor:before{content:"\F246"}.fa-ice-cream:before{content:"\F810"}.fa-icicles:before{content:"\F7AD"}.fa-icons:before{content:"\F86D"}.fa-id-badge:before{content:"\F2C1"}.fa-id-card:before{content:"\F2C2"}.fa-id-card-alt:before{content:"\F47F"}.fa-ideal:before{content:"\F913"}.fa-igloo:before{content:"\F7AE"}.fa-image:before{content:"\F03E"}.fa-images:before{content:"\F302"}.fa-imdb:before{content:"\F2D8"}.fa-inbox:before{content:"\F01C"}.fa-indent:before{content:"\F03C"}.fa-industry:before{content:"\F275"}.fa-infinity:before{content:"\F534"}.fa-info:before{content:"\F129"}.fa-info-circle:before{content:"\F05A"}.fa-instagram:before{content:"\F16D"}.fa-instagram-square:before{content:"\F955"}.fa-intercom:before{content:"\F7AF"}.fa-internet-explorer:before{content:"\F26B"}.fa-invision:before{content:"\F7B0"}.fa-ioxhost:before{content:"\F208"}.fa-italic:before{content:"\F033"}.fa-itch-io:before{content:"\F83A"}.fa-itunes:before{content:"\F3B4"}.fa-itunes-note:before{content:"\F3B5"}.fa-java:before{content:"\F4E4"}.fa-jedi:before{content:"\F669"}.fa-jedi-order:before{content:"\F50E"}.fa-jenkins:before{content:"\F3B6"}.fa-jira:before{content:"\F7B1"}.fa-joget:before{content:"\F3B7"}.fa-joint:before{content:"\F595"}.fa-joomla:before{content:"\F1AA"}.fa-journal-whills:before{content:"\F66A"}.fa-js:before{content:"\F3B8"}.fa-js-square:before{content:"\F3B9"}.fa-jsfiddle:before{content:"\F1CC"}.fa-kaaba:before{content:"\F66B"}.fa-kaggle:before{content:"\F5FA"}.fa-key:before{content:"\F084"}.fa-keybase:before{content:"\F4F5"}.fa-keyboard:before{content:"\F11C"}.fa-keycdn:before{content:"\F3BA"}.fa-khanda:before{content:"\F66D"}.fa-kickstarter:before{content:"\F3BB"}.fa-kickstarter-k:before{content:"\F3BC"}.fa-kiss:before{content:"\F596"}.fa-kiss-beam:before{content:"\F597"}.fa-kiss-wink-heart:before{content:"\F598"}.fa-kiwi-bird:before{content:"\F535"}.fa-korvue:before{content:"\F42F"}.fa-landmark:before{content:"\F66F"}.fa-language:before{content:"\F1AB"}.fa-laptop:before{content:"\F109"}.fa-laptop-code:before{content:"\F5FC"}.fa-laptop-medical:before{content:"\F812"}.fa-laravel:before{content:"\F3BD"}.fa-lastfm:before{content:"\F202"}.fa-lastfm-square:before{content:"\F203"}.fa-laugh:before{content:"\F599"}.fa-laugh-beam:before{content:"\F59A"}.fa-laugh-squint:before{content:"\F59B"}.fa-laugh-wink:before{content:"\F59C"}.fa-layer-group:before{content:"\F5FD"}.fa-leaf:before{content:"\F06C"}.fa-leanpub:before{content:"\F212"}.fa-lemon:before{content:"\F094"}.fa-less:before{content:"\F41D"}.fa-less-than:before{content:"\F536"}.fa-less-than-equal:before{content:"\F537"}.fa-level-down-alt:before{content:"\F3BE"}.fa-level-up-alt:before{content:"\F3BF"}.fa-life-ring:before{content:"\F1CD"}.fa-lightbulb:before{content:"\F0EB"}.fa-line:before{content:"\F3C0"}.fa-link:before{content:"\F0C1"}.fa-linkedin:before{content:"\F08C"}.fa-linkedin-in:before{content:"\F0E1"}.fa-linode:before{content:"\F2B8"}.fa-linux:before{content:"\F17C"}.fa-lira-sign:before{content:"\F195"}.fa-list:before{content:"\F03A"}.fa-list-alt:before{content:"\F022"}.fa-list-ol:before{content:"\F0CB"}.fa-list-ul:before{content:"\F0CA"}.fa-location-arrow:before{content:"\F124"}.fa-lock:before{content:"\F023"}.fa-lock-open:before{content:"\F3C1"}.fa-long-arrow-alt-down:before{content:"\F309"}.fa-long-arrow-alt-left:before{content:"\F30A"}.fa-long-arrow-alt-right:before{content:"\F30B"}.fa-long-arrow-alt-up:before{content:"\F30C"}.fa-low-vision:before{content:"\F2A8"}.fa-luggage-cart:before{content:"\F59D"}.fa-lyft:before{content:"\F3C3"}.fa-magento:before{content:"\F3C4"}.fa-magic:before{content:"\F0D0"}.fa-magnet:before{content:"\F076"}.fa-mail-bulk:before{content:"\F674"}.fa-mailchimp:before{content:"\F59E"}.fa-male:before{content:"\F183"}.fa-mandalorian:before{content:"\F50F"}.fa-map:before{content:"\F279"}.fa-map-marked:before{content:"\F59F"}.fa-map-marked-alt:before{content:"\F5A0"}.fa-map-marker:before{content:"\F041"}.fa-map-marker-alt:before{content:"\F3C5"}.fa-map-pin:before{content:"\F276"}.fa-map-signs:before{content:"\F277"}.fa-markdown:before{content:"\F60F"}.fa-marker:before{content:"\F5A1"}.fa-mars:before{content:"\F222"}.fa-mars-double:before{content:"\F227"}.fa-mars-stroke:before{content:"\F229"}.fa-mars-stroke-h:before{content:"\F22B"}.fa-mars-stroke-v:before{content:"\F22A"}.fa-mask:before{content:"\F6FA"}.fa-mastodon:before{content:"\F4F6"}.fa-maxcdn:before{content:"\F136"}.fa-mdb:before{content:"\F8CA"}.fa-medal:before{content:"\F5A2"}.fa-medapps:before{content:"\F3C6"}.fa-medium:before{content:"\F23A"}.fa-medium-m:before{content:"\F3C7"}.fa-medkit:before{content:"\F0FA"}.fa-medrt:before{content:"\F3C8"}.fa-meetup:before{content:"\F2E0"}.fa-megaport:before{content:"\F5A3"}.fa-meh:before{content:"\F11A"}.fa-meh-blank:before{content:"\F5A4"}.fa-meh-rolling-eyes:before{content:"\F5A5"}.fa-memory:before{content:"\F538"}.fa-mendeley:before{content:"\F7B3"}.fa-menorah:before{content:"\F676"}.fa-mercury:before{content:"\F223"}.fa-meteor:before{content:"\F753"}.fa-microblog:before{content:"\F91A"}.fa-microchip:before{content:"\F2DB"}.fa-microphone:before{content:"\F130"}.fa-microphone-alt:before{content:"\F3C9"}.fa-microphone-alt-slash:before{content:"\F539"}.fa-microphone-slash:before{content:"\F131"}.fa-microscope:before{content:"\F610"}.fa-microsoft:before{content:"\F3CA"}.fa-minus:before{content:"\F068"}.fa-minus-circle:before{content:"\F056"}.fa-minus-square:before{content:"\F146"}.fa-mitten:before{content:"\F7B5"}.fa-mix:before{content:"\F3CB"}.fa-mixcloud:before{content:"\F289"}.fa-mixer:before{content:"\F956"}.fa-mizuni:before{content:"\F3CC"}.fa-mobile:before{content:"\F10B"}.fa-mobile-alt:before{content:"\F3CD"}.fa-modx:before{content:"\F285"}.fa-monero:before{content:"\F3D0"}.fa-money-bill:before{content:"\F0D6"}.fa-money-bill-alt:before{content:"\F3D1"}.fa-money-bill-wave:before{content:"\F53A"}.fa-money-bill-wave-alt:before{content:"\F53B"}.fa-money-check:before{content:"\F53C"}.fa-money-check-alt:before{content:"\F53D"}.fa-monument:before{content:"\F5A6"}.fa-moon:before{content:"\F186"}.fa-mortar-pestle:before{content:"\F5A7"}.fa-mosque:before{content:"\F678"}.fa-motorcycle:before{content:"\F21C"}.fa-mountain:before{content:"\F6FC"}.fa-mouse:before{content:"\F8CC"}.fa-mouse-pointer:before{content:"\F245"}.fa-mug-hot:before{content:"\F7B6"}.fa-music:before{content:"\F001"}.fa-napster:before{content:"\F3D2"}.fa-neos:before{content:"\F612"}.fa-network-wired:before{content:"\F6FF"}.fa-neuter:before{content:"\F22C"}.fa-newspaper:before{content:"\F1EA"}.fa-nimblr:before{content:"\F5A8"}.fa-node:before{content:"\F419"}.fa-node-js:before{content:"\F3D3"}.fa-not-equal:before{content:"\F53E"}.fa-notes-medical:before{content:"\F481"}.fa-npm:before{content:"\F3D4"}.fa-ns8:before{content:"\F3D5"}.fa-nutritionix:before{content:"\F3D6"}.fa-object-group:before{content:"\F247"}.fa-object-ungroup:before{content:"\F248"}.fa-odnoklassniki:before{content:"\F263"}.fa-odnoklassniki-square:before{content:"\F264"}.fa-oil-can:before{content:"\F613"}.fa-old-republic:before{content:"\F510"}.fa-om:before{content:"\F679"}.fa-opencart:before{content:"\F23D"}.fa-openid:before{content:"\F19B"}.fa-opera:before{content:"\F26A"}.fa-optin-monster:before{content:"\F23C"}.fa-orcid:before{content:"\F8D2"}.fa-osi:before{content:"\F41A"}.fa-otter:before{content:"\F700"}.fa-outdent:before{content:"\F03B"}.fa-page4:before{content:"\F3D7"}.fa-pagelines:before{content:"\F18C"}.fa-pager:before{content:"\F815"}.fa-paint-brush:before{content:"\F1FC"}.fa-paint-roller:before{content:"\F5AA"}.fa-palette:before{content:"\F53F"}.fa-palfed:before{content:"\F3D8"}.fa-pallet:before{content:"\F482"}.fa-paper-plane:before{content:"\F1D8"}.fa-paperclip:before{content:"\F0C6"}.fa-parachute-box:before{content:"\F4CD"}.fa-paragraph:before{content:"\F1DD"}.fa-parking:before{content:"\F540"}.fa-passport:before{content:"\F5AB"}.fa-pastafarianism:before{content:"\F67B"}.fa-paste:before{content:"\F0EA"}.fa-patreon:before{content:"\F3D9"}.fa-pause:before{content:"\F04C"}.fa-pause-circle:before{content:"\F28B"}.fa-paw:before{content:"\F1B0"}.fa-paypal:before{content:"\F1ED"}.fa-peace:before{content:"\F67C"}.fa-pen:before{content:"\F304"}.fa-pen-alt:before{content:"\F305"}.fa-pen-fancy:before{content:"\F5AC"}.fa-pen-nib:before{content:"\F5AD"}.fa-pen-square:before{content:"\F14B"}.fa-pencil-alt:before{content:"\F303"}.fa-pencil-ruler:before{content:"\F5AE"}.fa-penny-arcade:before{content:"\F704"}.fa-people-carry:before{content:"\F4CE"}.fa-pepper-hot:before{content:"\F816"}.fa-percent:before{content:"\F295"}.fa-percentage:before{content:"\F541"}.fa-periscope:before{content:"\F3DA"}.fa-person-booth:before{content:"\F756"}.fa-phabricator:before{content:"\F3DB"}.fa-phoenix-framework:before{content:"\F3DC"}.fa-phoenix-squadron:before{content:"\F511"}.fa-phone:before{content:"\F095"}.fa-phone-alt:before{content:"\F879"}.fa-phone-slash:before{content:"\F3DD"}.fa-phone-square:before{content:"\F098"}.fa-phone-square-alt:before{content:"\F87B"}.fa-phone-volume:before{content:"\F2A0"}.fa-photo-video:before{content:"\F87C"}.fa-php:before{content:"\F457"}.fa-pied-piper:before{content:"\F2AE"}.fa-pied-piper-alt:before{content:"\F1A8"}.fa-pied-piper-hat:before{content:"\F4E5"}.fa-pied-piper-pp:before{content:"\F1A7"}.fa-pied-piper-square:before{content:"\F91E"}.fa-piggy-bank:before{content:"\F4D3"}.fa-pills:before{content:"\F484"}.fa-pinterest:before{content:"\F0D2"}.fa-pinterest-p:before{content:"\F231"}.fa-pinterest-square:before{content:"\F0D3"}.fa-pizza-slice:before{content:"\F818"}.fa-place-of-worship:before{content:"\F67F"}.fa-plane:before{content:"\F072"}.fa-plane-arrival:before{content:"\F5AF"}.fa-plane-departure:before{content:"\F5B0"}.fa-play:before{content:"\F04B"}.fa-play-circle:before{content:"\F144"}.fa-playstation:before{content:"\F3DF"}.fa-plug:before{content:"\F1E6"}.fa-plus:before{content:"\F067"}.fa-plus-circle:before{content:"\F055"}.fa-plus-square:before{content:"\F0FE"}.fa-podcast:before{content:"\F2CE"}.fa-poll:before{content:"\F681"}.fa-poll-h:before{content:"\F682"}.fa-poo:before{content:"\F2FE"}.fa-poo-storm:before{content:"\F75A"}.fa-poop:before{content:"\F619"}.fa-portrait:before{content:"\F3E0"}.fa-pound-sign:before{content:"\F154"}.fa-power-off:before{content:"\F011"}.fa-pray:before{content:"\F683"}.fa-praying-hands:before{content:"\F684"}.fa-prescription:before{content:"\F5B1"}.fa-prescription-bottle:before{content:"\F485"}.fa-prescription-bottle-alt:before{content:"\F486"}.fa-print:before{content:"\F02F"}.fa-procedures:before{content:"\F487"}.fa-product-hunt:before{content:"\F288"}.fa-project-diagram:before{content:"\F542"}.fa-pushed:before{content:"\F3E1"}.fa-puzzle-piece:before{content:"\F12E"}.fa-python:before{content:"\F3E2"}.fa-qq:before{content:"\F1D6"}.fa-qrcode:before{content:"\F029"}.fa-question:before{content:"\F128"}.fa-question-circle:before{content:"\F059"}.fa-quidditch:before{content:"\F458"}.fa-quinscape:before{content:"\F459"}.fa-quora:before{content:"\F2C4"}.fa-quote-left:before{content:"\F10D"}.fa-quote-right:before{content:"\F10E"}.fa-quran:before{content:"\F687"}.fa-r-project:before{content:"\F4F7"}.fa-radiation:before{content:"\F7B9"}.fa-radiation-alt:before{content:"\F7BA"}.fa-rainbow:before{content:"\F75B"}.fa-random:before{content:"\F074"}.fa-raspberry-pi:before{content:"\F7BB"}.fa-ravelry:before{content:"\F2D9"}.fa-react:before{content:"\F41B"}.fa-reacteurope:before{content:"\F75D"}.fa-readme:before{content:"\F4D5"}.fa-rebel:before{content:"\F1D0"}.fa-receipt:before{content:"\F543"}.fa-record-vinyl:before{content:"\F8D9"}.fa-recycle:before{content:"\F1B8"}.fa-red-river:before{content:"\F3E3"}.fa-reddit:before{content:"\F1A1"}.fa-reddit-alien:before{content:"\F281"}.fa-reddit-square:before{content:"\F1A2"}.fa-redhat:before{content:"\F7BC"}.fa-redo:before{content:"\F01E"}.fa-redo-alt:before{content:"\F2F9"}.fa-registered:before{content:"\F25D"}.fa-remove-format:before{content:"\F87D"}.fa-renren:before{content:"\F18B"}.fa-reply:before{content:"\F3E5"}.fa-reply-all:before{content:"\F122"}.fa-replyd:before{content:"\F3E6"}.fa-republican:before{content:"\F75E"}.fa-researchgate:before{content:"\F4F8"}.fa-resolving:before{content:"\F3E7"}.fa-restroom:before{content:"\F7BD"}.fa-retweet:before{content:"\F079"}.fa-rev:before{content:"\F5B2"}.fa-ribbon:before{content:"\F4D6"}.fa-ring:before{content:"\F70B"}.fa-road:before{content:"\F018"}.fa-robot:before{content:"\F544"}.fa-rocket:before{content:"\F135"}.fa-rocketchat:before{content:"\F3E8"}.fa-rockrms:before{content:"\F3E9"}.fa-route:before{content:"\F4D7"}.fa-rss:before{content:"\F09E"}.fa-rss-square:before{content:"\F143"}.fa-ruble-sign:before{content:"\F158"}.fa-ruler:before{content:"\F545"}.fa-ruler-combined:before{content:"\F546"}.fa-ruler-horizontal:before{content:"\F547"}.fa-ruler-vertical:before{content:"\F548"}.fa-running:before{content:"\F70C"}.fa-rupee-sign:before{content:"\F156"}.fa-sad-cry:before{content:"\F5B3"}.fa-sad-tear:before{content:"\F5B4"}.fa-safari:before{content:"\F267"}.fa-salesforce:before{content:"\F83B"}.fa-sass:before{content:"\F41E"}.fa-satellite:before{content:"\F7BF"}.fa-satellite-dish:before{content:"\F7C0"}.fa-save:before{content:"\F0C7"}.fa-schlix:before{content:"\F3EA"}.fa-school:before{content:"\F549"}.fa-screwdriver:before{content:"\F54A"}.fa-scribd:before{content:"\F28A"}.fa-scroll:before{content:"\F70E"}.fa-sd-card:before{content:"\F7C2"}.fa-search:before{content:"\F002"}.fa-search-dollar:before{content:"\F688"}.fa-search-location:before{content:"\F689"}.fa-search-minus:before{content:"\F010"}.fa-search-plus:before{content:"\F00E"}.fa-searchengin:before{content:"\F3EB"}.fa-seedling:before{content:"\F4D8"}.fa-sellcast:before{content:"\F2DA"}.fa-sellsy:before{content:"\F213"}.fa-server:before{content:"\F233"}.fa-servicestack:before{content:"\F3EC"}.fa-shapes:before{content:"\F61F"}.fa-share:before{content:"\F064"}.fa-share-alt:before{content:"\F1E0"}.fa-share-alt-square:before{content:"\F1E1"}.fa-share-square:before{content:"\F14D"}.fa-shekel-sign:before{content:"\F20B"}.fa-shield-alt:before{content:"\F3ED"}.fa-ship:before{content:"\F21A"}.fa-shipping-fast:before{content:"\F48B"}.fa-shirtsinbulk:before{content:"\F214"}.fa-shoe-prints:before{content:"\F54B"}.fa-shopify:before{content:"\F957"}.fa-shopping-bag:before{content:"\F290"}.fa-shopping-basket:before{content:"\F291"}.fa-shopping-cart:before{content:"\F07A"}.fa-shopware:before{content:"\F5B5"}.fa-shower:before{content:"\F2CC"}.fa-shuttle-van:before{content:"\F5B6"}.fa-sign:before{content:"\F4D9"}.fa-sign-in-alt:before{content:"\F2F6"}.fa-sign-language:before{content:"\F2A7"}.fa-sign-out-alt:before{content:"\F2F5"}.fa-signal:before{content:"\F012"}.fa-signature:before{content:"\F5B7"}.fa-sim-card:before{content:"\F7C4"}.fa-simplybuilt:before{content:"\F215"}.fa-sistrix:before{content:"\F3EE"}.fa-sitemap:before{content:"\F0E8"}.fa-sith:before{content:"\F512"}.fa-skating:before{content:"\F7C5"}.fa-sketch:before{content:"\F7C6"}.fa-skiing:before{content:"\F7C9"}.fa-skiing-nordic:before{content:"\F7CA"}.fa-skull:before{content:"\F54C"}.fa-skull-crossbones:before{content:"\F714"}.fa-skyatlas:before{content:"\F216"}.fa-skype:before{content:"\F17E"}.fa-slack:before{content:"\F198"}.fa-slack-hash:before{content:"\F3EF"}.fa-slash:before{content:"\F715"}.fa-sleigh:before{content:"\F7CC"}.fa-sliders-h:before{content:"\F1DE"}.fa-slideshare:before{content:"\F1E7"}.fa-smile:before{content:"\F118"}.fa-smile-beam:before{content:"\F5B8"}.fa-smile-wink:before{content:"\F4DA"}.fa-smog:before{content:"\F75F"}.fa-smoking:before{content:"\F48D"}.fa-smoking-ban:before{content:"\F54D"}.fa-sms:before{content:"\F7CD"}.fa-snapchat:before{content:"\F2AB"}.fa-snapchat-ghost:before{content:"\F2AC"}.fa-snapchat-square:before{content:"\F2AD"}.fa-snowboarding:before{content:"\F7CE"}.fa-snowflake:before{content:"\F2DC"}.fa-snowman:before{content:"\F7D0"}.fa-snowplow:before{content:"\F7D2"}.fa-socks:before{content:"\F696"}.fa-solar-panel:before{content:"\F5BA"}.fa-sort:before{content:"\F0DC"}.fa-sort-alpha-down:before{content:"\F15D"}.fa-sort-alpha-down-alt:before{content:"\F881"}.fa-sort-alpha-up:before{content:"\F15E"}.fa-sort-alpha-up-alt:before{content:"\F882"}.fa-sort-amount-down:before{content:"\F160"}.fa-sort-amount-down-alt:before{content:"\F884"}.fa-sort-amount-up:before{content:"\F161"}.fa-sort-amount-up-alt:before{content:"\F885"}.fa-sort-down:before{content:"\F0DD"}.fa-sort-numeric-down:before{content:"\F162"}.fa-sort-numeric-down-alt:before{content:"\F886"}.fa-sort-numeric-up:before{content:"\F163"}.fa-sort-numeric-up-alt:before{content:"\F887"}.fa-sort-up:before{content:"\F0DE"}.fa-soundcloud:before{content:"\F1BE"}.fa-sourcetree:before{content:"\F7D3"}.fa-spa:before{content:"\F5BB"}.fa-space-shuttle:before{content:"\F197"}.fa-speakap:before{content:"\F3F3"}.fa-speaker-deck:before{content:"\F83C"}.fa-spell-check:before{content:"\F891"}.fa-spider:before{content:"\F717"}.fa-spinner:before{content:"\F110"}.fa-splotch:before{content:"\F5BC"}.fa-spotify:before{content:"\F1BC"}.fa-spray-can:before{content:"\F5BD"}.fa-square:before{content:"\F0C8"}.fa-square-full:before{content:"\F45C"}.fa-square-root-alt:before{content:"\F698"}.fa-squarespace:before{content:"\F5BE"}.fa-stack-exchange:before{content:"\F18D"}.fa-stack-overflow:before{content:"\F16C"}.fa-stackpath:before{content:"\F842"}.fa-stamp:before{content:"\F5BF"}.fa-star:before{content:"\F005"}.fa-star-and-crescent:before{content:"\F699"}.fa-star-half:before{content:"\F089"}.fa-star-half-alt:before{content:"\F5C0"}.fa-star-of-david:before{content:"\F69A"}.fa-star-of-life:before{content:"\F621"}.fa-staylinked:before{content:"\F3F5"}.fa-steam:before{content:"\F1B6"}.fa-steam-square:before{content:"\F1B7"}.fa-steam-symbol:before{content:"\F3F6"}.fa-step-backward:before{content:"\F048"}.fa-step-forward:before{content:"\F051"}.fa-stethoscope:before{content:"\F0F1"}.fa-sticker-mule:before{content:"\F3F7"}.fa-sticky-note:before{content:"\F249"}.fa-stop:before{content:"\F04D"}.fa-stop-circle:before{content:"\F28D"}.fa-stopwatch:before{content:"\F2F2"}.fa-store:before{content:"\F54E"}.fa-store-alt:before{content:"\F54F"}.fa-strava:before{content:"\F428"}.fa-stream:before{content:"\F550"}.fa-street-view:before{content:"\F21D"}.fa-strikethrough:before{content:"\F0CC"}.fa-stripe:before{content:"\F429"}.fa-stripe-s:before{content:"\F42A"}.fa-stroopwafel:before{content:"\F551"}.fa-studiovinari:before{content:"\F3F8"}.fa-stumbleupon:before{content:"\F1A4"}.fa-stumbleupon-circle:before{content:"\F1A3"}.fa-subscript:before{content:"\F12C"}.fa-subway:before{content:"\F239"}.fa-suitcase:before{content:"\F0F2"}.fa-suitcase-rolling:before{content:"\F5C1"}.fa-sun:before{content:"\F185"}.fa-superpowers:before{content:"\F2DD"}.fa-superscript:before{content:"\F12B"}.fa-supple:before{content:"\F3F9"}.fa-surprise:before{content:"\F5C2"}.fa-suse:before{content:"\F7D6"}.fa-swatchbook:before{content:"\F5C3"}.fa-swift:before{content:"\F8E1"}.fa-swimmer:before{content:"\F5C4"}.fa-swimming-pool:before{content:"\F5C5"}.fa-symfony:before{content:"\F83D"}.fa-synagogue:before{content:"\F69B"}.fa-sync:before{content:"\F021"}.fa-sync-alt:before{content:"\F2F1"}.fa-syringe:before{content:"\F48E"}.fa-table:before{content:"\F0CE"}.fa-table-tennis:before{content:"\F45D"}.fa-tablet:before{content:"\F10A"}.fa-tablet-alt:before{content:"\F3FA"}.fa-tablets:before{content:"\F490"}.fa-tachometer-alt:before{content:"\F3FD"}.fa-tag:before{content:"\F02B"}.fa-tags:before{content:"\F02C"}.fa-tape:before{content:"\F4DB"}.fa-tasks:before{content:"\F0AE"}.fa-taxi:before{content:"\F1BA"}.fa-teamspeak:before{content:"\F4F9"}.fa-teeth:before{content:"\F62E"}.fa-teeth-open:before{content:"\F62F"}.fa-telegram:before{content:"\F2C6"}.fa-telegram-plane:before{content:"\F3FE"}.fa-temperature-high:before{content:"\F769"}.fa-temperature-low:before{content:"\F76B"}.fa-tencent-weibo:before{content:"\F1D5"}.fa-tenge:before{content:"\F7D7"}.fa-terminal:before{content:"\F120"}.fa-text-height:before{content:"\F034"}.fa-text-width:before{content:"\F035"}.fa-th:before{content:"\F00A"}.fa-th-large:before{content:"\F009"}.fa-th-list:before{content:"\F00B"}.fa-the-red-yeti:before{content:"\F69D"}.fa-theater-masks:before{content:"\F630"}.fa-themeco:before{content:"\F5C6"}.fa-themeisle:before{content:"\F2B2"}.fa-thermometer:before{content:"\F491"}.fa-thermometer-empty:before{content:"\F2CB"}.fa-thermometer-full:before{content:"\F2C7"}.fa-thermometer-half:before{content:"\F2C9"}.fa-thermometer-quarter:before{content:"\F2CA"}.fa-thermometer-three-quarters:before{content:"\F2C8"}.fa-think-peaks:before{content:"\F731"}.fa-thumbs-down:before{content:"\F165"}.fa-thumbs-up:before{content:"\F164"}.fa-thumbtack:before{content:"\F08D"}.fa-ticket-alt:before{content:"\F3FF"}.fa-times:before{content:"\F00D"}.fa-times-circle:before{content:"\F057"}.fa-tint:before{content:"\F043"}.fa-tint-slash:before{content:"\F5C7"}.fa-tired:before{content:"\F5C8"}.fa-toggle-off:before{content:"\F204"}.fa-toggle-on:before{content:"\F205"}.fa-toilet:before{content:"\F7D8"}.fa-toilet-paper:before{content:"\F71E"}.fa-toolbox:before{content:"\F552"}.fa-tools:before{content:"\F7D9"}.fa-tooth:before{content:"\F5C9"}.fa-torah:before{content:"\F6A0"}.fa-torii-gate:before{content:"\F6A1"}.fa-tractor:before{content:"\F722"}.fa-trade-federation:before{content:"\F513"}.fa-trademark:before{content:"\F25C"}.fa-traffic-light:before{content:"\F637"}.fa-trailer:before{content:"\F941"}.fa-train:before{content:"\F238"}.fa-tram:before{content:"\F7DA"}.fa-transgender:before{content:"\F224"}.fa-transgender-alt:before{content:"\F225"}.fa-trash:before{content:"\F1F8"}.fa-trash-alt:before{content:"\F2ED"}.fa-trash-restore:before{content:"\F829"}.fa-trash-restore-alt:before{content:"\F82A"}.fa-tree:before{content:"\F1BB"}.fa-trello:before{content:"\F181"}.fa-tripadvisor:before{content:"\F262"}.fa-trophy:before{content:"\F091"}.fa-truck:before{content:"\F0D1"}.fa-truck-loading:before{content:"\F4DE"}.fa-truck-monster:before{content:"\F63B"}.fa-truck-moving:before{content:"\F4DF"}.fa-truck-pickup:before{content:"\F63C"}.fa-tshirt:before{content:"\F553"}.fa-tty:before{content:"\F1E4"}.fa-tumblr:before{content:"\F173"}.fa-tumblr-square:before{content:"\F174"}.fa-tv:before{content:"\F26C"}.fa-twitch:before{content:"\F1E8"}.fa-twitter:before{content:"\F099"}.fa-twitter-square:before{content:"\F081"}.fa-typo3:before{content:"\F42B"}.fa-uber:before{content:"\F402"}.fa-ubuntu:before{content:"\F7DF"}.fa-uikit:before{content:"\F403"}.fa-umbraco:before{content:"\F8E8"}.fa-umbrella:before{content:"\F0E9"}.fa-umbrella-beach:before{content:"\F5CA"}.fa-underline:before{content:"\F0CD"}.fa-undo:before{content:"\F0E2"}.fa-undo-alt:before{content:"\F2EA"}.fa-uniregistry:before{content:"\F404"}.fa-unity:before{content:"\F949"}.fa-universal-access:before{content:"\F29A"}.fa-university:before{content:"\F19C"}.fa-unlink:before{content:"\F127"}.fa-unlock:before{content:"\F09C"}.fa-unlock-alt:before{content:"\F13E"}.fa-untappd:before{content:"\F405"}.fa-upload:before{content:"\F093"}.fa-ups:before{content:"\F7E0"}.fa-usb:before{content:"\F287"}.fa-user:before{content:"\F007"}.fa-user-alt:before{content:"\F406"}.fa-user-alt-slash:before{content:"\F4FA"}.fa-user-astronaut:before{content:"\F4FB"}.fa-user-check:before{content:"\F4FC"}.fa-user-circle:before{content:"\F2BD"}.fa-user-clock:before{content:"\F4FD"}.fa-user-cog:before{content:"\F4FE"}.fa-user-edit:before{content:"\F4FF"}.fa-user-friends:before{content:"\F500"}.fa-user-graduate:before{content:"\F501"}.fa-user-injured:before{content:"\F728"}.fa-user-lock:before{content:"\F502"}.fa-user-md:before{content:"\F0F0"}.fa-user-minus:before{content:"\F503"}.fa-user-ninja:before{content:"\F504"}.fa-user-nurse:before{content:"\F82F"}.fa-user-plus:before{content:"\F234"}.fa-user-secret:before{content:"\F21B"}.fa-user-shield:before{content:"\F505"}.fa-user-slash:before{content:"\F506"}.fa-user-tag:before{content:"\F507"}.fa-user-tie:before{content:"\F508"}.fa-user-times:before{content:"\F235"}.fa-users:before{content:"\F0C0"}.fa-users-cog:before{content:"\F509"}.fa-usps:before{content:"\F7E1"}.fa-ussunnah:before{content:"\F407"}.fa-utensil-spoon:before{content:"\F2E5"}.fa-utensils:before{content:"\F2E7"}.fa-vaadin:before{content:"\F408"}.fa-vector-square:before{content:"\F5CB"}.fa-venus:before{content:"\F221"}.fa-venus-double:before{content:"\F226"}.fa-venus-mars:before{content:"\F228"}.fa-viacoin:before{content:"\F237"}.fa-viadeo:before{content:"\F2A9"}.fa-viadeo-square:before{content:"\F2AA"}.fa-vial:before{content:"\F492"}.fa-vials:before{content:"\F493"}.fa-viber:before{content:"\F409"}.fa-video:before{content:"\F03D"}.fa-video-slash:before{content:"\F4E2"}.fa-vihara:before{content:"\F6A7"}.fa-vimeo:before{content:"\F40A"}.fa-vimeo-square:before{content:"\F194"}.fa-vimeo-v:before{content:"\F27D"}.fa-vine:before{content:"\F1CA"}.fa-vk:before{content:"\F189"}.fa-vnv:before{content:"\F40B"}.fa-voicemail:before{content:"\F897"}.fa-volleyball-ball:before{content:"\F45F"}.fa-volume-down:before{content:"\F027"}.fa-volume-mute:before{content:"\F6A9"}.fa-volume-off:before{content:"\F026"}.fa-volume-up:before{content:"\F028"}.fa-vote-yea:before{content:"\F772"}.fa-vr-cardboard:before{content:"\F729"}.fa-vuejs:before{content:"\F41F"}.fa-walking:before{content:"\F554"}.fa-wallet:before{content:"\F555"}.fa-warehouse:before{content:"\F494"}.fa-water:before{content:"\F773"}.fa-wave-square:before{content:"\F83E"}.fa-waze:before{content:"\F83F"}.fa-weebly:before{content:"\F5CC"}.fa-weibo:before{content:"\F18A"}.fa-weight:before{content:"\F496"}.fa-weight-hanging:before{content:"\F5CD"}.fa-weixin:before{content:"\F1D7"}.fa-whatsapp:before{content:"\F232"}.fa-whatsapp-square:before{content:"\F40C"}.fa-wheelchair:before{content:"\F193"}.fa-whmcs:before{content:"\F40D"}.fa-wifi:before{content:"\F1EB"}.fa-wikipedia-w:before{content:"\F266"}.fa-wind:before{content:"\F72E"}.fa-window-close:before{content:"\F410"}.fa-window-maximize:before{content:"\F2D0"}.fa-window-minimize:before{content:"\F2D1"}.fa-window-restore:before{content:"\F2D2"}.fa-windows:before{content:"\F17A"}.fa-wine-bottle:before{content:"\F72F"}.fa-wine-glass:before{content:"\F4E3"}.fa-wine-glass-alt:before{content:"\F5CE"}.fa-wix:before{content:"\F5CF"}.fa-wizards-of-the-coast:before{content:"\F730"}.fa-wolf-pack-battalion:before{content:"\F514"}.fa-won-sign:before{content:"\F159"}.fa-wordpress:before{content:"\F19A"}.fa-wordpress-simple:before{content:"\F411"}.fa-wpbeginner:before{content:"\F297"}.fa-wpexplorer:before{content:"\F2DE"}.fa-wpforms:before{content:"\F298"}.fa-wpressr:before{content:"\F3E4"}.fa-wrench:before{content:"\F0AD"}.fa-x-ray:before{content:"\F497"}.fa-xbox:before{content:"\F412"}.fa-xing:before{content:"\F168"}.fa-xing-square:before{content:"\F169"}.fa-y-combinator:before{content:"\F23B"}.fa-yahoo:before{content:"\F19E"}.fa-yammer:before{content:"\F840"}.fa-yandex:before{content:"\F413"}.fa-yandex-international:before{content:"\F414"}.fa-yarn:before{content:"\F7E3"}.fa-yelp:before{content:"\F1E9"}.fa-yen-sign:before{content:"\F157"}.fa-yin-yang:before{content:"\F6AD"}.fa-yoast:before{content:"\F2B1"}.fa-youtube:before{content:"\F167"}.fa-youtube-square:before{content:"\F431"}.fa-zhihu:before{content:"\F63F"}.sr-only{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sr-only-focusable:active,.sr-only-focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}@font-face{font-family:Font Awesome\ 5 Brands;font-style:normal;font-weight:400;font-display:auto;src:url(/openj9/static/fa-brands-400-57dcda6f368ea90179f75cbdae96c263.eot);src:url(/openj9/static/fa-brands-400-57dcda6f368ea90179f75cbdae96c263.eot?#iefix) format("embedded-opentype"),url(/openj9/static/fa-brands-400-067595ad77ecc0db9c81c8905a7eef32.woff2) format("woff2"),url(/openj9/static/fa-brands-400-b564da88bbf0c4aa446fa19653713cd1.woff) format("woff"),url(/openj9/static/fa-brands-400-9ec698d1a597bff5df337094b71ddaaf.ttf) format("truetype"),url(/openj9/static/fa-brands-400-9d67fa1429375bd2a899a17eb77d0342.svg#fontawesome) format("svg")}.fab{font-family:Font Awesome\ 5 Brands}@font-face{font-family:Font Awesome\ 5 Free;font-style:normal;font-weight:400;font-display:auto;src:url(/openj9/static/fa-regular-400-3351f435b3c9037fd88aeb04dc1e43bc.eot);src:url(/openj9/static/fa-regular-400-3351f435b3c9037fd88aeb04dc1e43bc.eot?#iefix) format("embedded-opentype"),url(/openj9/static/fa-regular-400-4165c2688309cbfb1b877caf8f75afb5.woff2) format("woff2"),url(/openj9/static/fa-regular-400-73cf49a2232c06c920b7a34e36bfb58c.woff) format("woff"),url(/openj9/static/fa-regular-400-a0e3ac82940c1998c5977fd4bc1f5ef6.ttf) format("truetype"),url(/openj9/static/fa-regular-400-5d0861781aeef6c82fda3a3076954a1b.svg#fontawesome) format("svg")}.fab,.far{font-weight:400}@font-face{font-family:Font Awesome\ 5 Free;font-style:normal;font-weight:900;font-display:auto;src:url(/openj9/static/fa-solid-900-89e02bae13c9131c7468b1e729339ac1.eot);src:url(/openj9/static/fa-solid-900-89e02bae13c9131c7468b1e729339ac1.eot?#iefix) format("embedded-opentype"),url(/openj9/static/fa-solid-900-55eb2a60e8181f0e68b558c991973bf0.woff2) format("woff2"),url(/openj9/static/fa-solid-900-cdfec5cf5e9840889790bcf2c4042583.woff) format("woff"),url(/openj9/static/fa-solid-900-75f38a159982b6bd1704891332d95fa7.ttf) format("truetype"),url(/openj9/static/fa-solid-900-0724bb8b89ab6b8b9b7df917b17be0b7.svg#fontawesome) format("svg")}.fa,.far,.fas{font-family:Font Awesome\ 5 Free}.fa,.fas{font-weight:900}</style><meta name="generator" content="Gatsby 2.19.7"/><link rel="icon" href="/openj9/favicon-32x32.png?v=0a19b941415d1d6d03226a8c85fc39c9"/><link rel="manifest" href="/openj9/manifest.webmanifest"/><link rel="apple-touch-icon" sizes="48x48" href="/openj9/icons/icon-48x48.png?v=0a19b941415d1d6d03226a8c85fc39c9"/><link rel="apple-touch-icon" sizes="72x72" href="/openj9/icons/icon-72x72.png?v=0a19b941415d1d6d03226a8c85fc39c9"/><link rel="apple-touch-icon" sizes="96x96" href="/openj9/icons/icon-96x96.png?v=0a19b941415d1d6d03226a8c85fc39c9"/><link rel="apple-touch-icon" sizes="144x144" href="/openj9/icons/icon-144x144.png?v=0a19b941415d1d6d03226a8c85fc39c9"/><link rel="apple-touch-icon" sizes="192x192" href="/openj9/icons/icon-192x192.png?v=0a19b941415d1d6d03226a8c85fc39c9"/><link rel="apple-touch-icon" sizes="256x256" href="/openj9/icons/icon-256x256.png?v=0a19b941415d1d6d03226a8c85fc39c9"/><link rel="apple-touch-icon" sizes="384x384" href="/openj9/icons/icon-384x384.png?v=0a19b941415d1d6d03226a8c85fc39c9"/><link rel="apple-touch-icon" sizes="512x512" href="/openj9/icons/icon-512x512.png?v=0a19b941415d1d6d03226a8c85fc39c9"/><link rel="preconnect dns-prefetch" href="https://www.google-analytics.com"/><link as="script" rel="preload" href="/openj9/component---src-pages-about-js-0c1171ebe659e1cec428.js"/><link as="script" rel="preload" href="/openj9/commons-42a47b90457bdd243664.js"/><link as="script" rel="preload" href="/openj9/app-0b96427b0b370a80fa06.js"/><link as="script" rel="preload" href="/openj9/styles-cc4082ebb0cb6903d934.js"/><link as="script" rel="preload" href="/openj9/webpack-runtime-c69760aa7e58303b27f8.js"/><link as="fetch" rel="preload" href="/openj9/page-data/about/page-data.json" crossorigin="anonymous"/></head><body><div id="___gatsby"><div style="outline:none" tabindex="-1" role="group" id="gatsby-focus-wrapper"><style data-emotion-css="t923zi">body{color:text;background-color:var(--theme-ui-colors-background,#FFFFFF);}</style><style data-emotion-css="1gb9wyy">*{box-sizing:border-box;}body{margin:0;font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.5;font-weight:400;}</style><style data-emotion-css="1xgro3h">*{padding:0;margin:0;}</style><style data-emotion-css="1mh4t0h">.css-1mh4t0h{display:none;background-color:var(--theme-ui-colors-primary,#434343);width:100%;color:var(--theme-ui-colors-lightText,#d8d8d8);padding-left:40px;padding-right:40px;padding-top:32px;padding-bottom:32px;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}@media screen and (min-width:560px){.css-1mh4t0h{display:none;}}@media screen and (min-width:1000px){.css-1mh4t0h{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}}@media screen and (min-width:1366px){.css-1mh4t0h{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}}</style><header class="css-1mh4t0h"><style data-emotion-css="4golyb">.css-4golyb{-webkit-flex:1;-ms-flex:1;flex:1;opacity:1;pointer-events:all;}</style><div class="css-4golyb"><a href="/openj9/"><img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNzlweCIgaGVpZ2h0PSIzM3B4IiB2aWV3Qm94PSIwIDAgNzkgMzMiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5Mb2dvPC90aXRsZT4KICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPgogICAgPGcgaWQ9IlBhZ2UtMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9IkxvZ28iIGZpbGwtcnVsZT0ibm9uemVybyI+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMC4wNDUyMzE4LDE5LjQ2MTIzMzcgQzkuMjQwNjc1MjUsMjAuNjk4NDMyOCA4LjEyNjE5NTA0LDIxLjMxNjY4NzggNi43MDA3Nzc4OSwyMS4zMTY2ODc4IEM1LjMxNTQ1ODI5LDIxLjMxNjY4NzggNC4yMDg2NTAxNywyMC43MTkxMTAzIDMuMzgwMjA4NzgsMTkuNTIzODE3NCBDMi41NTIyMDE2NiwxOC4zMjgyNDg5IDIuMTM4MDUzMzUsMTYuNzc4NDA3MSAyLjEzODA1MzM1LDE0Ljg3MzMyNzMgQzIuMTM4MDUzMzUsMTIuOTIyNzU3MSAyLjU0ODE0ODQ4LDExLjM0Mzk2NyAzLjM2ODMzODc1LDEwLjEzNzIzMjYgQzQuMTg4NjczNzgsOC45MzA2MzYxMiA1LjI5NTE5MjM4LDguMzI2OTkzMjQgNi42ODg3NjMxLDguMzI2OTkzMjQgQzguMDY2NTU1MzcsOC4zMjY5OTMyNCA5LjE3MTE5MjE0LDguODg1MjgzNjUgMTAuMDAzMzk3MiwxMC4wMDA0ODYgQzEwLjgzNTYwMjMsMTEuMTE2Mzc3NSAxMS4yNTE3NzcyLDEyLjY3NjI4MjIgMTEuMjUxNzc3MiwxNC42Nzk2NDg4IEMxMS4yNTE3NzcyLDE2LjYzMDM1NjggMTAuODQ5NDk4OSwxOC4yMjQxNzI1IDEwLjA0NTIzMTgsMTkuNDYxMjMzNyBNNi43MTI3OTI2OCw2LjczNDY5Mzg4IEM0LjY5MDExMDI1LDYuNzM0NjkzODggMy4wNjU2NTI5Myw3LjUwMTQxMjcgMS44MzkyNzU5NSw5LjAzNDAyMzI0IEMwLjYxMzE4ODQ4OSwxMC41NjY3NzE2IDAsMTIuNTA5NDg0NCAwLDE0Ljg2MTg4NTggQzAsMTcuMTE1NzI0OCAwLjU4NTM5NTI0MywxOS4wMTg1OTkxIDEuNzU2MDQwOTcsMjAuNTcwMDk1IEMyLjkyNjU0MTk1LDIyLjEyMjAwNDQgNC41NTg4MTYxMiwyMi44OTc5NTkyIDYuNjUzMDA4MjUsMjIuODk3OTU5MiBDOC43NzkxOTE1NywyMi44OTc5NTkyIDEwLjQzMzQ2ODcsMjIuMDgwMDk4MiAxMS42MTYyNzQsMjAuNDQ1MDY1NSBDMTIuNzk4NTAwMiwxOC44MDk3NTcxIDEzLjM4OTgzMDUsMTYuODkxNDQzNyAxMy4zODk4MzA1LDE0LjY5MTIyODEgQzEzLjM4OTgzMDUsMTIuMzk5NjE4MyAxMi43ODA1NTA0LDEwLjUwMDQ2NiAxMS41NjIyNzk4LDguOTkzOTA5MDQgQzEwLjM0Mzg2NDUsNy40ODgwNDEzIDguNzI3MzY4NzQsNi43MzQ2OTM4OCA2LjcxMjc5MjY4LDYuNzM0NjkzODgiIGlkPSJTaGFwZSIgZmlsbD0iIzVEQTdBMyI+PC9wYXRoPgogICAgICAgICAgICA8cGF0aCBkPSJNMjIuOTc0MzgxNywyMS4zNjc1NDcyIEMyMi4zMTQxOTk5LDIyLjA3MDg5MDkgMjEuNTU1MzY4NiwyMi40MjMxMzExIDIwLjY5OTU0OTUsMjIuNDIzMTMxMSBDMTkuOTYwMDU1MywyMi40MjMxMzExIDE5LjI1MDkyNjQsMjIuMTMwOTk0OCAxOC41Njk3NDU3LDIxLjU0NjU4MDEgQzE3Ljg4ODI2MjksMjAuOTYzMDE3OSAxNy41MTMzMDM4LDIwLjIyMzAxNTEgMTcuMzYyMjMyNSwxOS4zMjc5OTI0IEwxNy4zNjIyMzI1LDE1Ljk4NjA0NCBDMTcuNjY0Mzc1MiwxNS4xNzMxNDkxIDE3Ljk2OTM4ODIsMTQuNDgxNDU2OCAxOC41ODg0Nzg2LDEzLjkxMDk2NjggQzE5LjIwNzU2ODksMTMuMzQwNDc2OSAxOS45MDY3MjcxLDEzLjA1NTE2MDkgMjAuNjg3OTE3LDEzLjA1NTE2MDkgQzIxLjY3NjgzLDEzLjA1NTE2MDkgMjIuNDcwNDA3NywxMy40NTk2OTAxIDIzLjA2ODgwMTMsMTQuMjY4NjA2NSBDMjMuNjY2ODkyNywxNS4wNzc1MjI4IDIzLjk2NjAxNCwxNi4yMjg0NDg5IDIzLjk2NjAxNCwxNy43MjE1MjY5IEMyMy45NjYwMTQsMTkuNDQ4OTEwNyAyMy42MzUxNjc3LDIwLjY2NDYyOTcgMjIuOTc0MzgxNywyMS4zNjc1NDcyIE0yMS4xNjI3MzQyLDExLjQ0ODk3OTYgQzE5LjQwMzM1NzQsMTEuNDQ4OTc5NiAxOC4xMTc1ODkyLDEyLjMyNDUzNiAxNy4yMTExNjEyLDE0LjA3NDc5NjIgTDE3LjIxMTE2MTIsMTEuNjk4MjA0OCBMMTUuMzk4MzA1MSwxMS42OTgyMDQ4IEwxNS4zOTgzMDUxLDI3LjYxMjI0NDkgTDE3LjM2MjIzMjUsMjcuNjEyMjQ0OSBMMTcuMzYyMjMyNSwyMS44MjQ5MzM3IEMxOC4yNjg2NjA1LDIzLjIzOTQzNjEgMTkuNTA4OTU2MiwyMy45NDcwNDI1IDIxLjA4NzY1MTcsMjMuOTQ3MDQyNSBDMjIuNTU4OTM1NSwyMy45NDcwNDI1IDIzLjc2MjgyMywyMy4zNzk2Nzg2IDI0LjcwMjAzMzUsMjIuMjQ1NTE5MSBDMjUuNjQwNzkwOCwyMS4xMTA3OTEyIDI2LjExMDE2OTUsMTkuNTc3NTAxOCAyNi4xMTAxNjk1LDE3LjY0NTM2NjkgQzI2LjExMDE2OTUsMTUuODUzNDc0NCAyNS42NjI5OTgzLDE0LjM3MjkwMDMgMjQuNzUwNTI3NCwxMy4yMDMzNjA0IEMyMy44Mzc2MDMzLDEyLjAzMzY3ODUgMjIuNjQ4MDY3NiwxMS40NDg5Nzk2IDIxLjE2MjczNDIsMTEuNDQ4OTc5NiIgaWQ9IlNoYXBlIiBmaWxsPSIjNURBN0EzIj48L3BhdGg+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMC4yNjM1ODc2LDE2LjM2MzMzNjcgQzMwLjM0MTcwNzYsMTUuMjU4OTg2OCAzMC43MDEzMTY2LDE0LjQwODM2MTMgMzEuMzQxNzAwNiwxMy43NzA0NjExIEMzMS45ODE2NTYxLDEzLjEzMjQyMyAzMi43NjE0Mjc5LDEyLjgwNDAxNjkgMzMuNjgwNzMwMiwxMi44MDQwMTY5IEMzNC4zNjQxMDE2LDEyLjgwNDAxNjkgMzQuOTQ5MDczMiwxMi45NzU3NDMzIDM1LjQzNjUwMiwxMy4zMjkxMzUzIEMzNS45MjM1MDIzLDEzLjY4MTk3NTEgMzYuMjY5NDAxLDE0LjEyNTc4NTcgMzYuNDczNDg0MSwxNC42MjcwMjI1IEMzNi42NzgxMzg1LDE1LjEyODEyMTMgMzYuNzg3NTM1MSwxNS42NzMxMTggMzYuODAzMzg3NiwxNi4zNjMzMzY3IEwzMC4yNjM1ODc2LDE2LjM2MzMzNjcgWiBNMzcuMzc1MjIwMiwxMy4wMzA2ODQ4IEMzNi40MjgzNTQ1LDExLjk5MDI0OTEgMzUuMTc3NDM1LDExLjQ0ODk3OTYgMzMuNjIxNzQ3NSwxMS40NDg5Nzk2IEMzMi4wNDI5MjM5LDExLjQ0ODk3OTYgMzAuNzMwNTkzOCwxMi4wMDI1MzUgMjkuNjg2MDQyNCwxMy4xMzE0NTY3IEMyOC42NDEyMDU0LDE0LjI1OTgyNjIgMjguMTE4NjQ0MSwxNS43MzQ5NjE2IDI4LjExODY0NDEsMTcuNTY2OTQwMSBDMjguMTE4NjQ0MSwxOS4zNjA4MTg0IDI4LjYyMTA2ODQsMjAuODA3Mzc4OCAyOS42MjY5MTY4LDIxLjkxMzM4NTIgQzMwLjYzMjQ3OTYsMjMuMDE5OTQzOCAzMS45NDg1MjMsMjMuNTcxNDI4NiAzMy41NzQ5MDQsMjMuNTcxNDI4NiBDMzQuODA4MjU3MywyMy41NzE0Mjg2IDM1Ljg4MDIyOTIsMjMuMjQ4OTU4NCAzNi43OTE1MzM5LDIyLjYwNDcwODMgQzM3LjcwMzEyNDIsMjEuOTYwNzM0MiAzOC4zMTU4MDIsMjEuMTQ3MzgwNSAzOC42MzAxMzg2LDIwLjE2NDA5NSBMMzYuOTA5OTI3OCwxOS44MjI3MTI4IEMzNi4yODg5NjY3LDIxLjMzMzQ2MzUgMzUuMjIwNTY1MiwyMi4wODkyNTI5IDMzLjcwNDI5NDcsMjIuMDg5MjUyOSBDMzIuODYzNjgzNywyMi4wODkyNTI5IDMyLjA2NjM0NTYsMjEuODI4MDc0MiAzMS4zMTIyODA3LDIxLjIyMDY4MTcgQzMwLjU1ODA3MjksMjAuNjEzMDEzMiAzMC4xODA3NTQ3LDE5LjQwMDI5OSAzMC4xODA3NTQ3LDE3Ljc0Mzc3NDEgTDM4LjgzMDUwODUsMTcuNzQzNzc0MSBDMzguODA2OTQzOSwxNS41MzUwNzQzIDM4LjMyMTgwMDIsMTQuMDcwODQ0MyAzNy4zNzUyMjAyLDEzLjAzMDY4NDggTDM3LjM3NTIyMDIsMTMuMDMwNjg0OCBaIiBpZD0iU2hhcGUiIGZpbGw9IiM1REE3QTMiPjwvcGF0aD4KICAgICAgICAgICAgPHBhdGggZD0iTTQ4LjQzNjA2MzksMTIuMTMxMzMxIEM0Ny43NjA0NDM5LDExLjY3NjU3MTQgNDYuOTE5MzU2NiwxMS40NDg5Nzk2IDQ1Ljk1ODg0MjIsMTEuNDQ4OTc5NiBDNDQuMjkzMDQ0MywxMS40NDg5Nzk2IDQyLjk1MDQ1NjMsMTIuMjgxMTc0IDQxLjg2ODk3LDEzLjk0NTEzODggTDQxLjg2ODk3LDExLjY5NzA2ODggTDQwLjE2OTQ5MTUsMTEuNjk3MDY4OCBMNDAuMTY5NDkxNSwyMy41NzE0Mjg2IEw0Mi4wMjM0NjgxLDIzLjU3MTQyODYgTDQyLjAyMzQ2ODEsMTcuMDk0Mzg3NSBDNDIuMDIzNDY4MSwxNS44NzQwMTQ3IDQyLjM4NTkyMDUsMTQuODg5OTk4MiA0My4wNzg1MzUyLDE0LjE0MzE4NiBDNDMuNzcwNjg2NCwxMy4zOTY3OTggNDQuNjM1NDEyLDEzLjAyMzYwNCA0NS42NTUwOTkxLDEzLjAyMzYwNCBDNDYuMzk0NjgxMiwxMy4wMjM2MDQgNDcuMDQyODAwNSwxMy4yNDUyNTg2IDQ3LjU2MTE0MTUsMTMuNjg4NTY3OSBDNDguMDc5NjM2OSwxNC4xMzE1OTQ0IDQ4LjM1Nzg4NzksMTQuODk3NjMxNyA0OC4zNTc4ODc5LDE1Ljk4NjUzODQgTDQ4LjM1Nzg4NzksMjMuNTcxNDI4NiBMNTAuMjExODY0NCwyMy41NzE0Mjg2IEw1MC4yMTE4NjQ0LDE2Ljc0NDUxODEgQzUwLjIxMTg2NDQsMTUuMjU5Mzc1NSA1MC4wODE0NjgxLDE0LjIzMzA5MTkgNDkuODMwNDA4NywxMy42NjUyNDMyIEM0OS41Nzk2NTg0LDEzLjA5NzM5NDYgNDkuMTExODM4MywxMi41ODYwOTA1IDQ4LjQzNjA2MzksMTIuMTMxMzMxIFoiIGlkPSJTaGFwZSIgZmlsbD0iIzVEQTdBMyI+PC9wYXRoPgogICAgICAgICAgICA8cGF0aCBkPSJNNTcuNzMyOTYwNywxOS4zMjIyNzI0IEM1Ny43MzI5NjA3LDIwLjIxNjkxMjkgNTcuNjY0MDE3MywyMC44NjM1NjU5IDU3LjUyOTgzNDEsMjEuMjYzMjQ2NCBDNTcuMzk1MjIzNiwyMS42NjI0OTE5IDU3LjEzMTQxNTQsMjEuOTg3NjMxMSA1Ni43Mzk0MDY4LDIyLjIzOTM4OTIgQzU2LjM0NzY4MywyMi40OTA4NTczIDU1LjY5NjI4MiwyMi42MTYxNTYzIDU0Ljg2OTM4ODcsMjIuNjE2MTU2MyBDNTQuMjg4MDcwNywyMi42MTYxNTYzIDUzLjc0NDUwMDUsMjIuNTM4NTY5NSA1Mi44ODk4MzA1LDIyLjM4MzI1MSBMNTIuODg5ODMwNSwyMy45MzQ2OTYgQzUzLjc0NDUwMDUsMjQuMTQxMjA3MyA1NC4zNzg4MDgyLDI0LjI0NDg5OCA1NS4wOTc0NDMyLDI0LjI0NDg5OCBDNTYuNDM5NTYsMjQuMjQ0ODk4IDU3LjUzNTEwNDYsMjMuODgyNDg4MSA1OC4zNDc4OTU4LDIzLjE1ODM5MzQgQzU5LjE2MDQwMjEsMjIuNDMzODYzNyA1OS41ODQ3NDU4LDIxLjE1NDkxNSA1OS41ODQ3NDU4LDE5LjMyMTExMjMgTDU5LjU4NDc0NTgsOC43NTUxMDIwNCBMNTcuNzMyOTYwNyw4Ljc1NTEwMjA0IEw1Ny43MzI5NjA3LDE5LjMyMjI3MjQgWiIgaWQ9IlNoYXBlIiBmaWxsPSIjRkZGRkZGIj48L3BhdGg+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik02OS4yNDA4MTE5LDE2LjIyNTg5MDQgQzY4LjU2Njc1NzgsMTYuOTQyNzI2NiA2Ny43MzIxNTUyLDE3LjMwMTIxNiA2Ni43Mzc0MTk4LDE3LjMwMTIxNiBDNjUuODMzODMyNiwxNy4zMDEyMTYgNjUuMDQyMDMzNywxNi45OTE5NDIyIDY0LjM2MTA1MzQsMTYuMzczNTM3MyBDNjMuNjgwMjExNiwxNS43NTQ3MDQzIDYzLjMzOTcyMTUsMTQuOTE0MTg3MiA2My4zMzk3MjE1LDEzLjg1MTI3MjQgQzYzLjMzOTcyMTUsMTIuODYxOTY3MiA2My42NDY4Mjc1LDEyLjAyMjQ0ODUgNjQuMjYwNzYyNiwxMS4zMzQ5OTkxIEM2NC44NzQxNDM1LDEwLjY0NzEyMTYgNjUuNzEwNDA4NCwxMC4zMDMzMjU2IDY2Ljc2OTAwMzEsMTAuMzAzMzI1NiBDNjcuODEzMzI5OCwxMC4zMDMzMjU2IDY4LjY1NDk5NzEsMTAuNjM3ODQ5MSA2OS4yOTM0NTA4LDExLjMwNzYwOTUgQzY5LjkzMjE4MTUsMTEuOTc3MjI3MiA3MC4yNTE0Nzc2LDEyLjc3ODA4NjYgNzAuMjUxNDc3NiwxMy43MDkzMzE3IEM3MC4yNTE0Nzc2LDE0LjY3MDEwNjIgNjkuOTE0MzEyLDE1LjUwOTA1NDIgNjkuMjQwODExOSwxNi4yMjU4OTA0IE03MC44NTQ3NDYzLDEwLjcyNDE1NDggQzY5Ljg4ODI2OTYsOS40MTIwMjM1NyA2OC40OTgwNTAzLDguNzU1MTAyMDQgNjYuNjg0MjI2OCw4Ljc1NTEwMjA0IEM2NS4yMDI1ODIxLDguNzU1MTAyMDQgNjMuOTgzNDM5LDkuMjU3MjQ0MDEgNjMuMDI3NDkwMSwxMC4yNjExIEM2Mi4wNzA5ODcsMTEuMjY1MjQxMyA2MS41OTMyMjAzLDEyLjQ3MjgwNzEgNjEuNTkzMjIwMywxMy44ODQyMjU1IEM2MS41OTMyMjAzLDE1LjI3MzgxNzggNjIuMDQ3OTkyMiwxNi40Mzk1ODYgNjIuOTU4MzY3LDE3LjM4MTY3MjkgQzYzLjg2ODg4MDMsMTguMzIzNjE3IDY0Ljk5NDI0MzIsMTguNzk0ODAzMSA2Ni4zMzQ3MzI3LDE4Ljc5NDgwMzEgQzY4LjIzMzA1NTMsMTguNzk0ODAzMSA2OS42NTUxMzUsMTcuOTAwNzkwNiA3MC42MDA4MzMyLDE2LjExMzA1MTEgQzcwLjU3OTUwMDYsMTguMTU1MTQyNyA3MC4yMjEyNzk1LDE5Ljc3MjI2ODEgNjkuNTI2NTg1NCwyMC45NjM5OTkzIEM2OC44MzEzMzcyLDIyLjE1NjAxNTkgNjcuNzk1ODc1OSwyMi43NTE0NTM2IDY2LjQxOTUwODksMjIuNzUxNDUzNiBDNjUuMDAxNTg0OSwyMi43NTE0NTM2IDYzLjk5MjMwNDUsMjIuMDY1MDAyNyA2My4zOTIzNjAzLDIwLjY5MTM4NzYgTDYxLjk0MjI5ODksMjEuMjM2NjExMSBDNjIuNzA0MTc2OCwyMy4yNDIxODMyIDY0LjE4OTU2MTYsMjQuMjQ0ODk4IDY2LjM5ODczMDQsMjQuMjQ0ODk4IEM2OC4yODk0MzQyLDI0LjI0NDg5OCA2OS43NDY5NzU5LDIzLjQ5NzgxOTEgNzAuNzcwMTA4NiwyMi4wMDM1MTg4IEM3MS43OTMyNDEzLDIwLjUwOTA3NTggNzIuMzA1MDg0NywxOC41NTQ1NzM4IDcyLjMwNTA4NDcsMTYuMTQwMDEyNyBDNzIuMzA1MDg0NywxMy44NDIxNDI2IDcxLjgyMTYzODYsMTIuMDM2ODU2NiA3MC44NTQ3NDYzLDEwLjcyNDE1NDgiIGlkPSJTaGFwZSIgZmlsbD0iI0ZGRkZGRiI+PC9wYXRoPgogICAgICAgICAgICA8cGF0aCBkPSJNNDguODQzNzkwMSwyNC42NDQ3MTU3IEM0OS41NDM5Mzk0LDI1LjkwNTU0OTIgNTAuNDE5NDA5OCwyNy4wOTIxMjI5IDUxLjQ3MDIwMTMsMjguMTY3MjQ1MyBDNTcuNzY4MDE2NSwzNC42MTA5MTgyIDY3Ljk3ODc5MjcsMzQuNjEwOTE4MiA3NC4yNzY2MDc5LDI4LjE2NzI0NTMgQzgwLjU3NDQ2NCwyMS43MjM2MDAzIDgwLjU3NDQ2NCwxMS4yNzY0MDE4IDc0LjI3NjYwNzksNC44MzI3NTY4MyBDNjcuOTc4NzkyNywtMS42MTA5MTg5NCA1Ny43NjgwMTY1LC0xLjYxMDkxODk0IDUxLjQ3MDIwMTMsNC44MzI3NTY4MyBDNDkuNjA2NzAxNiw2LjczOTM5NzA0IDQ4LjI5NDU5ODMsOC45OTY1NjQ4MyA0Ny41MzM4OTgzLDExLjM5NjgyMjkgTDQ4LjM3MDI2NzIsMTEuNzc3ODE5NiBDNDkuMDgzNDMyNSw5LjQ3ODI5OTU2IDUwLjMzMTIyMjcsNy4zMTQ3NjEyMiA1Mi4xMTM2MzM1LDUuNDkxMDg4OTIgQzU4LjA1NjA5NDgsLTAuNTg4OTk5Mjg4IDY3LjY5MDcyMTIsLTAuNTg4OTk5Mjg4IDczLjYzMzE3NTcsNS40OTEwODg5MiBDNzkuNTc1NjcxMiwxMS41NzExNDM2IDc5LjU3NTY3MTIsMjEuNDI4ODU1NyA3My42MzMxNzU3LDI3LjUwODkxNDYgQzY3LjY5MDcyMTIsMzMuNTg4OTkzIDU4LjA1NjA5NDgsMzMuNTg4OTkzIDUyLjExMzYzMzUsMjcuNTA4OTE0NiBDNTEuMTQ0MDY3NywyNi41MTY4OTg3IDUwLjMzMjY5OTgsMjUuNDI0MzI2NyA0OS42Nzk1MTYxLDI0LjI2NDAwNzMgTDQ4Ljg0Mzc5MDEsMjQuNjQ0NzE1NyBaIiBpZD0iU2hhcGUiIGZpbGw9IiM1REE3QTMiPjwvcGF0aD4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==" alt="OpenJ9 Logo"/></a></div><style data-emotion-css="kzfr2u">.css-kzfr2u{-webkit-flex:2;-ms-flex:2;flex:2;}</style><nav class="css-kzfr2u"><style data-emotion-css="d1fq55">.css-d1fq55{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;list-style:none;-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end;}.css-d1fq55 li{padding:8px;margin-left:8px;margin-right:8px;}.css-d1fq55 li a{color:white;-webkit-text-decoration:none;text-decoration:none;}.css-d1fq55 li a:hover{color:var(--theme-ui-colors-links,#5DA7A3);}.css-d1fq55 li:first-of-type{margin-left:0;}.css-d1fq55 li:last-child{margin-right:0;padding-right:0;}</style><ul class="css-d1fq55"><li><a href="/openj9/">Home</a></li><li><a href="/openj9/about">About</a></li><li><a href="https://www.eclipse.org/openj9/docs/" rel="noopener noreferrer" target="_blank">Docs</a></li><li><a href="/openj9/performance">Performance</a></li><li><a href="/openj9/news">News</a></li></ul></nav><style data-emotion-css="1rr4qq7">.css-1rr4qq7{-webkit-flex:1;-ms-flex:1;flex:1;}</style><nav class="css-1rr4qq7"><ul class="css-d1fq55"><li><a href="https://twitter.com/openj9/" rel="noopener noreferrer" target="_blank"> <img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIyNXB4IiB2aWV3Qm94PSIwIDAgMjUgMjUiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5Ud2l0dGVyPC90aXRsZT4KICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPgogICAgPGcgaWQ9IlBhZ2UtMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9IlR3aXR0ZXIiIGZpbGwtcnVsZT0ibm9uemVybyI+CiAgICAgICAgICAgIDxnIGlkPSJ0d2l0dGVyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjAwMDAwMCwgMC4yOTg4NzkpIj4KICAgICAgICAgICAgICAgIDxlbGxpcHNlIGlkPSJPdmFsLXBhdGgiIGZpbGw9IiM0MzQzNDMiIGN4PSIxMi41MDAyMjEyIiBjeT0iMTIuMjcyNzI3MyIgcng9IjEyLjUiIHJ5PSIxMi4yNzI3MjczIj48L2VsbGlwc2U+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTIuNTAwMjIxMiwwIEMxOS40MDM3ODA2LDAgMjUuMDAwMjIxMiw1LjQ5NDY4NzE2IDI1LjAwMDIyMTIsMTIuMjcyNzI3MyBDMjUuMDAwMjIxMiwxOS4wNTA3Njc0IDE5LjQwMzc4MDYsMjQuNTQ1NDU0NSAxMi41MDAyMjEyLDI0LjU0NTQ1NDUgQzUuNTk2NjYxODcsMjQuNTQ1NDU0NSAwLjAwMDIyMTIzODkzOCwxOS4wNTA3Njc0IDAuMDAwMjIxMjM4OTM4LDEyLjI3MjcyNzMgQzAuMDAwMjIxMjM4OTM4LDUuNDk0Njg3MTYgNS41OTY2NjE4NywwIDEyLjUwMDIyMTIsMCBaIE0xNS4xMDM0MzMzLDYuODE4MTgxODIgQzEzLjQ2NTM4MDIsNi44MTgxODE4MiAxMi4xMzY4NDA0LDguMDkyMTI0MTEgMTIuMTM2ODQwNCw5LjY2Mjg1OTk2IEMxMi4xMzY4NDA0LDkuODg1ODI2MzggMTIuMTYzMTY3OCwxMC4xMDI4NTI3IDEyLjIxNDA1MjgsMTAuMzExMTgxIEM5Ljc0ODU2NjA0LDEwLjE5MjU5MDggNy41NjI1MDQxLDkuMDYwMTUwNTQgNi4wOTkyMjk3Niw3LjMzODU3ODIzIEM1Ljg0MzkyMDAzLDcuNzU4NjI5MTUgNS42OTc0NTk4NSw4LjI0NzYyNzgxIDUuNjk3NDU5ODUsOC43Njg4NzI4MSBDNS42OTc0NTk4NSw5Ljc1NTU2ODE3IDYuMjIxNTc0ODksMTAuNjI2NjQzNCA3LjAxNzE1MDExLDExLjEzNjY0NDcgQzYuNTMxMDg4MTcsMTEuMTIyMDA2NSA2LjA3MzM0NDgsMTAuOTk0MDgxOSA1LjY3MzU2NjA0LDEwLjc4MDQ1IEw1LjY3MzM0NDgsMTAuODE2NTE0OSBMNS42NzMzNDQ4LDEwLjgxNjUxNDkgQzUuNjczMzQ0OCwxMi4xOTQ4MzM1IDYuNjk2MzUzNjUsMTMuMzQ0NDU3NyA4LjA1MzIxMjA2LDEzLjYwNTYxMDYgQzcuODA0NTM5NSwxMy42NzA5NTE5IDcuNTQxOTI4ODgsMTMuNzA1NTMxOCA3LjI3MTc5NjEzLDEzLjcwNTUzMTggQzcuMDgwMjAzMjEsMTMuNzA1NTMxOCA2Ljg5NDU4Mzc0LDEzLjY4NzkyMzYgNi43MTM2MTAyOSwxMy42NTQ4Mjg3IEM3LjA5MTA0MzkyLDE0Ljc4NDcyMzIgOC4xODYzOTc5LDE1LjYwNzIxNjkgOS40ODQ4NDkyMywxNS42MzAzNDA5IEM4LjQ2OTM2MjUsMTYuMzkzNDMzNCA3LjE5MDM4MDIsMTYuODQ4MDY0MiA1LjgwMDExNDcyLDE2Ljg0ODA2NDIgQzUuNTYxMTc2NjYsMTYuODQ4MDY0MiA1LjMyNDQ1MSwxNi44MzQ2OTkgNS4wOTI4MTM4MywxNi44MDgxODA2IEM2LjQwNDk4MTk3LDE3LjYxNTYxMTggNy45NjQ3MTY0OSwxOC4wODYzNjU4IDkuNjM5OTM3NzMsMTguMDg2MzY1OCBDMTUuMDk2NTc0OSwxOC4wODYzNjU4IDE4LjA4MDY0NTcsMTMuNzUxNzc5OCAxOC4wODA2NDU3LDkuOTkyMzI0MTQgQzE4LjA4MDY0NTcsOS44NjkwNjY3NyAxOC4wNzc3Njk2LDkuNzQ2MjMzNyAxOC4wNzIwMTc0LDkuNjI0NDYxMzcgQzE4LjY1MjEwNTksOS4yMjM1MDM2OCAxOS4xNTQ5ODIsOC43MjI2MjQ3OCAxOS41NTI1NDgzLDguMTUyMTYxNjkgQzE5LjAyMDY4OTksOC4zNzgzMTAzMiAxOC40NDg1NjYsOC41MzEyNjgyNSAxNy44NDg1NjYsOC41OTk1Nzk1NiBDMTguNDYxMTc2Nyw4LjI0NzYyNzgxIDE4LjkzMTMwOTQsNy42OTA3NDIxMyAxOS4xNTMyMTIxLDcuMDI2MDg1ODEgQzE4LjU3OTk4Miw3LjM1MjE1NTYzIDE3Ljk0NDgwNSw3LjU4ODY5OTQ2IDE3LjI2OTM2MjUsNy43MTYxOTk3NiBDMTYuNzI4MjEyMSw3LjE2MzU1NzAyIDE1Ljk1NzE5NDQsNi44MTgxODE4MiAxNS4xMDM0MzMzLDYuODE4MTgxODIgWiIgaWQ9IkNvbWJpbmVkLVNoYXBlIiBmaWxsPSIjRkZGRkZGIj48L3BhdGg+CiAgICAgICAgICAgIDwvZz4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==" alt="Twitter Logo"/></a></li><li><a href="https://github.com/eclipse/openj9" rel="noopener noreferrer" target="_blank"> <img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIyNXB4IiB2aWV3Qm94PSIwIDAgMjUgMjUiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5HaXRIdWI8L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0iR2l0SHViIiBmaWxsPSIjRkZGRkZGIiBmaWxsLXJ1bGU9Im5vbnplcm8iPgogICAgICAgICAgICA8ZyBpZD0iZ2l0aHViLWxvZ28iPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTIzLjMyMzIwOSw2LjM1NjM4NTg4IEMyMi4yMDU0MjQzLDQuNDI4ODY0OTMgMjAuNjg5MjIwNywyLjkwMjg0MzkxIDE4Ljc3NDE5OTMsMS43Nzc5Nzg1OCBDMTYuODU4ODkyOCwwLjY1MzA1NTg3MyAxNC43Njc5NDkxLDAuMDkwNzM3OTUzMyAxMi40OTk4ODYsMC4wOTA3Mzc5NTMzIEMxMC4yMzIxMDc5LDAuMDkwNzM3OTUzMyA4LjE0MDQ4MDEzLDAuNjUzMjI3OTkzIDYuMjI1NTcyNjksMS43Nzc5Nzg1OCBDNC4zMTAzODAyMSwyLjkwMjc4NjU0IDIuNzk0MjMzNjcsNC40Mjg4NjQ5MyAxLjY3NjQ0ODk5LDYuMzU2Mzg1ODggQzAuNTU4ODM1MzMzLDguMjgzODQ5NDUgMCwxMC4zODg2NTQ2IDAsMTIuNjcwNzQzOSBDMCwxNS40MTIwNTEgMC43OTQ2NzE0ODMsMTcuODc3MTA0NSAyLjM4NDQxMzQ5LDIwLjA2NjUzNTUgQzMuOTczOTg0NDksMjIuMjU2MTM4OCA2LjAyNzQ3NDg4LDIzLjc3MTI1ODggOC41NDQ3MTM2NywyNC42MTIwNjc4IEM4LjgzNzcyNzQsMjQuNjY2ODAyMiA5LjA1NDYzNzM3LDI0LjYyODMwNDUgOS4xOTU2NzE2MSwyNC40OTc1NTAzIEM5LjMzNjc2Mjg1LDI0LjM2NjYyMzkgOS40MDcyMjI5NiwyNC4yMDI2NTAzIDkuNDA3MjIyOTYsMjQuMDA2MzE4MSBDOS40MDcyMjI5NiwyMy45NzM1NTc5IDkuNDA0NDI5NjQsMjMuNjc4ODMwMSA5LjM5OTAxNDAxLDIzLjEyMTc5MDUgQzkuMzkzNDI3MzcsMjIuNTY0NzUxIDkuMzkwODA1MDcsMjIuMDc4Nzk3MiA5LjM5MDgwNTA3LDIxLjY2NDE1ODcgTDkuMDE2NDQyOTcsMjEuNzI5MzM1MSBDOC43Nzc3NTY1LDIxLjc3MzM0MDUgOC40NzY2NDc4MywyMS43OTE5ODY5IDguMTEzMTE2OTgsMjEuNzg2NzA4NiBDNy43NDk3NTcxNSwyMS43ODE2MDIzIDcuMzcyNTQ0NzMsMjEuNzQzMjc2OCA2Ljk4MTk5Mjc3LDIxLjY3MjAxODkgQzYuNTkxMjY5NzksMjEuNjAxMzkyMSA2LjIyNzg1Mjk1LDIxLjQzNzU5MDcgNS44OTE0NTcyMiwyMS4xODA5NTg5IEM1LjU1NTIzMjUyLDIwLjkyNDMyNzEgNS4zMTY1NDYwNCwyMC41ODg0MDUxIDUuMTc1NDU0OCwyMC4xNzM3MDkzIEw1LjAxMjcwMTA2LDE5Ljc5Njc2NTIgQzQuOTA0MjE3NTcsMTkuNTQ1ODEzNCA0LjczMzQyNTkxLDE5LjI2NzAzNTUgNC41MDAwOTgwNSwxOC45NjE0NjQxIEM0LjI2Njc3MDE5LDE4LjY1NTYwNTggNC4wMzA4MjAwMywxOC40NDgyNTc5IDMuNzkyMTMzNTUsMTguMzM5MDc2MSBMMy42NzgxNzc0MywxOC4yNTY5NzQ2IEMzLjYwMjI0NDY5LDE4LjIwMjQxMjMgMy41MzE3ODQ1OCwxOC4xMzY2MDQ5IDMuNDY2NjI2MDgsMTguMDYwMjQwOCBDMy40MDE1MjQ1OCwxNy45ODM4NzY2IDMuMzUyNzgzOTcsMTcuOTA3NDU1MSAzLjMyMDIzMzIzLDE3LjgzMDkxODggQzMuMjg3NjI1NDcsMTcuNzU0MzI1MSAzLjMxNDY0NjU4LDE3LjY5MTUwMTEgMy40MDE1ODE1OSwxNy42NDIyMTcyIEMzLjQ4ODUxNjYsMTcuNTkyOTMzNCAzLjY0NTYyNjY4LDE3LjU2OTAwODYgMy44NzM1OTU5MywxNy41NjkwMDg2IEw0LjE5ODk4OTM5LDE3LjYxNzk0ODIgQzQuNDE2MDEzMzcsMTcuNjYxNzI0MiA0LjY4NDQ1NzI3LDE3Ljc5MjQ3ODUgNS4wMDQ2NjMxNCwxOC4wMTEwMTQzIEM1LjMyNDY5Nzk4LDE4LjIyOTM3NzkgNS41ODc3ODMyNywxOC41MTMyNjIxIDUuNzkzOTc2LDE4Ljg2MjU1MjEgQzYuMDQzNjY0NzUsMTkuMzEwNDA5OSA2LjM0NDQ4ODM4LDE5LjY1MTY2NzYgNi42OTczMDE5OSwxOS44ODY0OTc0IEM3LjA0OTgzMDU4LDIwLjEyMTMyNzMgNy40MDUyNjY0OSwyMC4yMzg1NDE0IDcuNzYzMjY3NzEsMjAuMjM4NTQxNCBDOC4xMjEyNjg5MiwyMC4yMzg1NDE0IDguNDMwNDcyNTIsMjAuMjExMjMxNiA4LjY5MDk5MjUxLDIwLjE1Njg5ODkgQzguOTUxMjI3NDcsMjAuMTAyMjc5MyA5LjE5NTM4NjU3LDIwLjAyMDE3NzcgOS40MjMzNTU4MiwxOS45MTEwNTMzIEM5LjUyMTAwODA2LDE5LjE3OTA4MTkgOS43ODY4ODY2NywxOC42MTY3NjM5IDEwLjIyMDc2MzYsMTguMjIzNjk3OSBDOS42MDIzNTY0MiwxOC4xNTgyOTIxIDkuMDQ2MzcxNDIsMTguMDU5NzgxOCA4LjU1MjUyMzU3LDE3LjkyODc5OCBDOC4wNTg5NjA3NSwxNy43OTc2NDIxIDcuNTQ4OTIzMDMsMTcuNTg0Nzg2MyA3LjAyMjc1MjQ2LDE3LjI4OTY1NjkgQzYuNDk2Mjk2ODUsMTYuOTk0OTI5MSA2LjA1OTU2OTU4LDE2LjYyODk0MzQgNS43MTI0NTY2MiwxNi4xOTIzMzA5IEM1LjM2NTI4NjY1LDE1Ljc1NTQ4ODkgNS4wODAzNjc4NSwxNS4xODE5ODMxIDQuODU4MDk5MjYsMTQuNDcyMzMgQzQuNjM1NzE2NjYsMTMuNzYyMzkgNC41MjQ0OTY4NiwxMi45NDM0NDAzIDQuNTI0NDk2ODYsMTIuMDE1MjUxNCBDNC41MjQ0OTY4NiwxMC42OTM2NTIzIDQuOTUzMTg2MjEsOS41NjkwMTY0MiA1LjgxMDM5Mzg5LDguNjQwNzEyNzggQzUuNDA4ODM5NjcsNy42NDcxMTgwNyA1LjQ0Njc0OTAzLDYuNTMzMjY4NDYgNS45MjQyMzYsNS4yOTkyNzg2OCBDNi4yMzg5MTIyMiw1LjIwMDg4MzA4IDYuNzA1NTY3OTQsNS4yNzQ3MjI4MSA3LjMyMzk3NTE0LDUuNTIwMzM4ODcgQzcuOTQyNDk2MzQsNS43NjYwNjk2OCA4LjM5NTM1NjQ3LDUuOTc2NTczMTQgOC42ODMwMTE1OSw2LjE1MTEwMzQxIEM4Ljk3MDY2NjcsNi4zMjU1NzYzIDkuMjAxMTQ0MjQsNi40NzM0Mjc4NyA5LjM3NDc4NjIzLDYuNTkzMzM4NTQgQzEwLjM4NDA4NzQsNi4zMDk1MTE3MSAxMS40MjU2NTQzLDYuMTY3NTY5NjEgMTIuNDk5NzcyLDYuMTY3NTY5NjEgQzEzLjU3Mzg4OTYsNi4xNjc1Njk2MSAxNC42MTU2ODQ2LDYuMzA5NTExNzEgMTUuNjI1MDQyOCw2LjU5MzMzODU0IEwxNi4yNDM1MDcsNi4yMDAzODcyNiBDMTYuNjY2NDM4Niw1LjkzODE5MDI1IDE3LjE2NTg3MzEsNS42OTc5MDk5MyAxNy43NDA2MTMzLDUuNDc5NDg4OTIgQzE4LjMxNTY5NTUsNS4yNjExODI2NiAxOC43NTU0NDQxLDUuMjAxMDU1MiAxOS4wNTk0MDMxLDUuMjk5NDUwOCBDMTkuNTQ3NDkzMyw2LjUzMzQ5Nzk1IDE5LjU5MDk4OTMsNy42NDcyOTAxOSAxOS4xODkzMjExLDguNjQwODg0OSBDMjAuMDQ2NDcxNyw5LjU2OTE4ODU0IDIwLjQ3NTMzMjEsMTAuNjk0MTExMiAyMC40NzUzMzIxLDEyLjAxNTQyMzUgQzIwLjQ3NTMzMjEsMTIuOTQzNjEyNCAyMC4zNjM3MTMzLDEzLjc2NTE0MzkgMjAuMTQxNjcyNywxNC40ODA1MzQ0IEMxOS45MTkzNDcxLDE1LjE5NjAzOTYgMTkuNjMxOTc3LDE1Ljc2ODk3MTcgMTkuMjc5NDQ4NSwxNi4yMDA1MzUzIEMxOC45MjY1MjA4LDE2LjYzMjA0MTYgMTguNDg3MDAwMiwxNi45OTUxNTg2IDE3Ljk2MDgyOTcsMTcuMjg5ODI5MSBDMTcuNDM0NTQ1MSwxNy41ODQ3MjkgMTYuOTI0MzM2MywxNy43OTc1ODQ4IDE2LjQzMDc3MzUsMTcuOTI4NzQwNiBDMTUuOTM2OTgyNywxOC4wNTk4OTY1IDE1LjM4MDk5NzcsMTguMTU4NDY0MiAxNC43NjI1OTA1LDE4LjIyMzk4NDggQzE1LjMyNjYxMzQsMTguNzE1MjE2OSAxNS42MDg2ODE5LDE5LjQ5MDYyMDEgMTUuNjA4NjgxOSwyMC41NDk4NTAxIEwxNS42MDg2ODE5LDI0LjAwNTg1OTIgQzE1LjYwODY4MTksMjQuMjAyMTkxNCAxNS42NzY1MTk3LDI0LjM2NjEwNzUgMTUuODEyMzA5MywyNC40OTcwOTEzIEMxNS45NDc5Mjc5LDI0LjYyNzg0NTUgMTYuMTYyMTAxNiwyNC42NjYzNDMyIDE2LjQ1NTExNTMsMjQuNjExNTUxNSBDMTguOTcyNjk2MSwyMy43NzA4NTcyIDIxLjAyNjE4NjUsMjIuMjU1Njc5OCAyMi42MTU3MDA1LDIwLjA2NjA3NjYgQzI0LjIwNTA0MzUsMTcuODc2NjQ1NSAyNSwxNS40MTE1OTIgMjUsMTIuNjcwMjg0OSBDMjQuOTk5NDI5OSwxMC4zODg0ODI1IDI0LjQ0MDMwOTYsOC4yODM4NDk0NSAyMy4zMjMyMDksNi4zNTYzODU4OCBaIiBpZD0iU2hhcGUiPjwvcGF0aD4KICAgICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+" alt="GitHub Logo"/></a></li><li><a href="https://openj9.slack.com/" rel="noopener noreferrer" target="_blank"><img src="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIyNXB4IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgogPCEtLSBDcmVhdGVkIHdpdGggTWV0aG9kIERyYXcgLSBodHRwOi8vZ2l0aHViLmNvbS9kdW9waXhlbC9NZXRob2QtRHJhdy8gLS0+CgogPGc+CiAgPHRpdGxlPmJhY2tncm91bmQ8L3RpdGxlPgogIDxyZWN0IGZpbGw9Im5vbmUiIGlkPSJjYW52YXNfYmFja2dyb3VuZCIgaGVpZ2h0PSIyNiIgd2lkdGg9IjI2IiB5PSItMSIgeD0iLTEiLz4KICA8ZyBkaXNwbGF5PSJub25lIiBvdmVyZmxvdz0idmlzaWJsZSIgeT0iMCIgeD0iMCIgaGVpZ2h0PSIxMDAlIiB3aWR0aD0iMTAwJSIgaWQ9ImNhbnZhc0dyaWQiPgogICA8cmVjdCBmaWxsPSJ1cmwoI2dyaWRwYXR0ZXJuKSIgc3Ryb2tlLXdpZHRoPSIwIiB5PSIxIiB4PSIxIiBoZWlnaHQ9IjIyIiB3aWR0aD0iMjIiLz4KICA8L2c+CiA8L2c+CiA8Zz4KICA8dGl0bGU+TGF5ZXIgMTwvdGl0bGU+CiAgPGVsbGlwc2Ugcnk9IjExIiByeD0iMTEiIGlkPSJzdmdfMSIgY3k9IjEyIiBjeD0iMTIiIHN0cm9rZT0iI0ZGRiIgZmlsbD0iI0ZGRkZGRiIvPgogIDxzdHlsZSB0cmFuc2Zvcm09Im1hdHJpeCgwLjA2NTE4MjQ5NTU3MzI1MzYyLDAsMCwwLjA2NTE4MjQ5NTU3MzI1MzYyLDAsMCkgIiB0eXBlPSJ0ZXh0L2NzcyI+LnN0MHtmaWxsOiM0MzQzNDM7fTwvc3R5bGU+CiAgPGcgc3Ryb2tlPSJudWxsIiBpZD0ic3ZnXzE5Ij4KICAgPGcgc3Ryb2tlPSJudWxsIiB0cmFuc2Zvcm09Im1hdHJpeCgwLjEzMDE1NTgwODUxODA5NDg2LDAsMCwwLjEzMDE1NTgwODUxODA5NDg2LC02Ljg0OTAwNjQ1MDQwNTQ5OSwtNi44MzE1MDczOTEwMjE5MjQpICIgaWQ9InN2Z182Ij4KICAgIDxnIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z183Ij4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfOCIgZD0ibTExMC4yOTgyOTIsMTYxLjI5MzAxMWMwLDcuMSAtNS44LDEyLjkgLTEyLjksMTIuOXMtMTIuOSwtNS44IC0xMi45LC0xMi45YzAsLTcuMSA1LjgsLTEyLjkgMTIuOSwtMTIuOWwxMi45LDBsMCwxMi45eiIgY2xhc3M9InN0MCIvPgogICAgIDxwYXRoIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z185IiBkPSJtMTE2Ljc5ODI5MiwxNjEuMjkzMDExYzAsLTcuMSA1LjgsLTEyLjkgMTIuOSwtMTIuOXMxMi45LDUuOCAxMi45LDEyLjlsMCwzMi4zYzAsNy4xIC01LjgsMTIuOSAtMTIuOSwxMi45cy0xMi45LC01LjggLTEyLjksLTEyLjljMCwwIDAsLTMyLjMgMCwtMzIuM3oiIGNsYXNzPSJzdDAiLz4KICAgIDwvZz4KICAgIDxnIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z18xMCI+CiAgICAgPHBhdGggc3Ryb2tlPSJudWxsIiBpZD0ic3ZnXzExIiBkPSJtMTI5LjY5ODI5MiwxMDkuNDkzMDExYy03LjEsMCAtMTIuOSwtNS44IC0xMi45LC0xMi45czUuOCwtMTIuOSAxMi45LC0xMi45czEyLjksNS44IDEyLjksMTIuOWwwLDEyLjlsLTEyLjksMHoiIGNsYXNzPSJzdDAiLz4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTIiIGQ9Im0xMjkuNjk4MjkyLDExNS45OTMwMTFjNy4xLDAgMTIuOSw1LjggMTIuOSwxMi45cy01LjgsMTIuOSAtMTIuOSwxMi45bC0zMi4zLDBjLTcuMSwwIC0xMi45LC01LjggLTEyLjksLTEyLjlzNS44LC0xMi45IDEyLjksLTEyLjljMCwwIDMyLjMsMCAzMi4zLDB6IiBjbGFzcz0ic3QwIi8+CiAgICA8L2c+CiAgICA8ZyBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTMiPgogICAgIDxwYXRoIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z18xNCIgZD0ibTE4MS40OTgyOTIsMTI4Ljg5MzAxMWMwLC03LjEgNS44LC0xMi45IDEyLjksLTEyLjljNy4xLDAgMTIuOSw1LjggMTIuOSwxMi45cy01LjgsMTIuOSAtMTIuOSwxMi45bC0xMi45LDBsMCwtMTIuOXoiIGNsYXNzPSJzdDAiLz4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTUiIGQ9Im0xNzQuOTk4MjkyLDEyOC44OTMwMTFjMCw3LjEgLTUuOCwxMi45IC0xMi45LDEyLjljLTcuMSwwIC0xMi45LC01LjggLTEyLjksLTEyLjlsMCwtMzIuM2MwLC03LjEgNS44LC0xMi45IDEyLjksLTEyLjljNy4xLDAgMTIuOSw1LjggMTIuOSwxMi45bDAsMzIuM3oiIGNsYXNzPSJzdDAiLz4KICAgIDwvZz4KICAgIDxnIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z18xNiI+CiAgICAgPHBhdGggc3Ryb2tlPSJudWxsIiBpZD0ic3ZnXzE3IiBkPSJtMTYyLjA5ODI5MiwxODAuNjkzMDExYzcuMSwwIDEyLjksNS44IDEyLjksMTIuOWMwLDcuMSAtNS44LDEyLjkgLTEyLjksMTIuOWMtNy4xLDAgLTEyLjksLTUuOCAtMTIuOSwtMTIuOWwwLC0xMi45bDEyLjksMHoiIGNsYXNzPSJzdDAiLz4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTgiIGQ9Im0xNjIuMDk4MjkyLDE3NC4xOTMwMTFjLTcuMSwwIC0xMi45LC01LjggLTEyLjksLTEyLjljMCwtNy4xIDUuOCwtMTIuOSAxMi45LC0xMi45bDMyLjMsMGM3LjEsMCAxMi45LDUuOCAxMi45LDEyLjljMCw3LjEgLTUuOCwxMi45IC0xMi45LDEyLjlsLTMyLjMsMHoiIGNsYXNzPSJzdDAiLz4KICAgIDwvZz4KICAgPC9nPgogIDwvZz4KIDwvZz4KPC9zdmc+" alt="Slack logo"/></a></li><li><a href="https://stackoverflow.com/search?q=%23OpenJ9" rel="noopener noreferrer" target="_blank"><img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjRweCIgaGVpZ2h0PSIyNHB4IiB2aWV3Qm94PSIwIDAgNjUgNzAiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5zdGFja292ZXJmbG93LWxvZ288L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0iI0ZGRkZGRiIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0ic3RhY2tvdmVyZmxvdy1sb2dvIiBmaWxsLXJ1bGU9Im5vbnplcm8iPgogICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgZmlsbD0iI0ZGRkZGRiIgcG9pbnRzPSI1NC4yNDE3MjY2IDYzLjc3MDIyNjUgNTQuMjQxNzI2NiA0NSA2MSA0NSA2MSA3MCAwIDcwIDAgNDUgNi43NTgyNzMzOCA0NSA2Ljc1ODI3MzM4IDYzLjc3MDIyNjUiPjwvcG9seWdvbj4KICAgICAgICAgICAgPHBhdGggZD0iTTE0LjcwNzEwNTcsNDMuNjQyNzU2NyBMNDguMTE3ODUxLDUwLjA4NzIwMTEgTDQ5LjUzMjA2MjQsNDMuODg3NDgyNCBMMTYuMTIxMzE3MiwzNy40NDMwMzggTDE0LjcwNzEwNTcsNDMuNjQyNzU2NyBMMTQuNzA3MTA1Nyw0My42NDI3NTY3IFogTTE5LjEyNjUxNjUsMjguOTU5MjEyNCBMNTAuMDYyMzkxNyw0Mi4yNTU5Nzc1IEw1Mi44OTA4MTQ2LDM2LjU0NTcxMDMgTDIxLjk1NDkzOTMsMjMuMTY3MzY5OSBMMTkuMTI2NTE2NSwyOC45NTkyMTI0IFogTTI3LjcwMDE3MzMsMTQuOTI4MjcgTDUzLjk1MTQ3MzEsMzUuMDc3MzU1OCBMNTguMjgyNDk1NywzMC4yNjQ0MTYzIEwzMi4wMzExOTU4LDEwLjExNTMzMDUgTDI3LjcwMDE3MzMsMTQuOTI4MjcgTDI3LjcwMDE3MzMsMTQuOTI4MjcgWiBNNDQuNjcwNzEwNiwwIEwzOS4xOTA2NDEyLDMuNzUyNDYxMzIgTDU5LjUxOTkzMDcsMjkuMDQwNzg3NiBMNjUsMjUuMjg4MzI2MyBMNDQuNjcwNzEwNiwwIFogTTE0LDU4IEw0OC4xMTc4NTEsNTggTDQ4LjExNzg1MSw1MS43MTg3MDYgTDE0LDUxLjcxODcwNiBMMTQsNTggWiIgaWQ9IlNoYXBlIiBmaWxsPSIjRkZGRkZGIj48L3BhdGg+CiAgICAgICAgPC9nPgogICAgPC9nPgo8L3N2Zz4KCgo=" alt="Stack Overflow logo"/></a></li></ul></nav></header><style data-emotion-css="loin3l">.css-loin3l{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:fixed;width:100%;bottom:0;background-color:white;height:3rem;box-shadow:0 10px 30px grey;z-index:9999;}@media screen and (min-width:560px){.css-loin3l{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}}@media screen and (min-width:1000px){.css-loin3l{display:none;}}@media screen and (min-width:1366px){.css-loin3l{display:none;}}</style><nav class="css-loin3l"><style data-emotion-css="94xmc6">.css-94xmc6{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;list-style:none;-webkit-box-pack:space-evenly;-webkit-justify-content:space-evenly;-ms-flex-pack:space-evenly;justify-content:space-evenly;width:100%;}.css-94xmc6 li a{color:black;-webkit-text-decoration:none;text-decoration:none;}.css-94xmc6 li:first-of-type{margin-left:0;}.css-94xmc6 li:last-child{margin-right:0;padding-right:0;}</style><ul class="css-94xmc6"><li><a href="/openj9/">Home</a></li><li><a href="/openj9/about">About</a> </li><li><a href="https://www.eclipse.org/openj9/docs/" rel="noopener noreferrer" target="_blank">Docs</a> </li><li><a href="/openj9/performance">Performance</a> </li><li><a href="/openj9/news">News</a> </li></ul></nav><style data-emotion-css="8dpcwb">.css-8dpcwb{background-color:#F5F9FC;padding-left:10%;padding-right:10%;padding-top:5%;padding-bottom:5%;}</style><div class="css-8dpcwb"><style data-emotion-css="uirvwh">.css-uirvwh{margin-bottom:3rem;}</style><style data-emotion-css="17u419h">.css-17u419h{font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.125;font-weight:700;margin-top:16px;margin-bottom:16px;font-size:36px;margin-bottom:3rem;}</style><h1 class="css-17u419h">More about OpenJ9</h1><style data-emotion-css="1aohrih">.css-1aohrih{background-color:white;padding-top:40px;padding-bottom:40px;padding-left:5%;padding-right:5%;border-radius:10px;}</style><div class="css-1aohrih"><style data-emotion-css="1v4dyq7">.css-1v4dyq7{font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.125;font-weight:700;margin-top:16px;margin-bottom:16px;font-size:28px;}</style><h2 class="css-1v4dyq7">Our story</h2><style data-emotion-css="fza3g9">.css-fza3g9{margin-bottom:40px;font-size:18px;}</style><p class="css-fza3g9">Eclipse OpenJ9 is a high performance, scalable, Java virtual machine (JVM) implementation that represents hundreds of person-years of effort. Contributed to the Eclipse project by IBM, the OpenJ9 JVM underpins the IBM SDK, Java Technology Edition product that is a core component of many IBM Enterprise software products. Continued development of OpenJ9 at the Eclipse foundation ensures wider collaboration, fresh innovation, and the opportunity to influence the development of OpenJ9 for the next generation of Java applications.</p></div></div><style data-emotion-css="wbuuw9">.css-wbuuw9{background-color:var(--theme-ui-colors-primary,#434343);color:var(--theme-ui-colors-lightText,#d8d8d8);padding-left:10%;padding-right:10%;padding-top:40px;padding-bottom:40px;}</style><div class="css-wbuuw9"><style data-emotion-css="1v4dyq7">.css-1v4dyq7{font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.125;font-weight:700;margin-top:16px;margin-bottom:16px;font-size:28px;}</style><h2 class="css-1v4dyq7">Our supporters</h2><style data-emotion-css="fza3g9">.css-fza3g9{margin-bottom:40px;font-size:18px;}</style><p class="css-fza3g9">The success of the OpenJ9 project is underpinned by the generosity of our supporters, to whom we would like to extend our thanks. This support comes in different forms; monetory, people, system, and data center resources. People resources help us to staff the planning, development, delivery, and support of OpenJ9 releases as well as pioneering new and innovative technologies. Dedicated systems and hosting services allow us to run automated build and test operations, which help ensure that quality and reliability is central to all our deliverables.</p><style data-emotion-css="v2pi9l">.css-v2pi9l{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:space-around;-webkit-justify-content:space-around;-ms-flex-pack:space-around;justify-content:space-around;}</style><div class="css-v2pi9l"><style data-emotion-css="dfhusi">.css-dfhusi{min-height:200px;border-radius:10px;background-color:white;color:var(--theme-ui-colors-darkText,#4d4f50);margin-top:40px;margin-bottom:40px;margin-left:16px;margin-right:16px;width:16rem;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}</style><article class="css-dfhusi"><style data-emotion-css="vs5na0">.css-vs5na0{width:50%;height:50%;}</style><img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNDVweCIgaGVpZ2h0PSIxOHB4IiB2aWV3Qm94PSIwIDAgNDUgMTgiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5pYm0tbG9nbzwvdGl0bGU+CiAgICA8ZGVzYz5DcmVhdGVkIHdpdGggU2tldGNoLjwvZGVzYz4KICAgIDxnIGlkPSJQYWdlLTEiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPgogICAgICAgIDxnIGlkPSJpYm0tbG9nbyIgZmlsbD0iIzAwMDAwMCIgZmlsbC1ydWxlPSJub256ZXJvIj4KICAgICAgICAgICAgPHBhdGggZD0iTTAsMTcuNjk0MTE3NiBMOC42NzUwOTQxMiwxNy42OTQxMTc2IEw4LjY3NTA5NDEyLDE2LjU2NzIyMzUgTDAsMTYuNTY3MjIzNSBMMCwxNy42OTQxMTc2IFogTTAsMTUuMzI4MDgyNCBMOC42NzUwOTQxMiwxNS4zMjgwODI0IEw4LjY3NTA5NDEyLDE0LjIwMTE4ODIgTDAsMTQuMjAxMTg4MiBMMCwxNS4zMjgwODI0IFogTTIuNDc4ODM1MjksMTIuOTYyMDQ3MSBMNi4xOTY4MTE3NiwxMi45NjIwNDcxIEw2LjE5NjgxMTc2LDExLjgzNTcwNTkgTDIuNDc4ODM1MjksMTEuODM1NzA1OSBMMi40Nzg4MzUyOSwxMi45NjIwNDcxIFogTTIuNDc4ODM1MjksMTAuNTk2NTY0NyBMNi4xOTY4MTE3NiwxMC41OTY1NjQ3IEw2LjE5NjgxMTc2LDkuNDY5NjcwNTkgTDIuNDc4ODM1MjksOS40Njk2NzA1OSBMMi40Nzg4MzUyOSwxMC41OTY1NjQ3IFogTTIuNDc4ODM1MjksOC4yMzA1Mjk0MSBMNi4xOTY4MTE3Niw4LjIzMDUyOTQxIEw2LjE5NjgxMTc2LDcuMTA0MTg4MjQgTDIuNDc4ODM1MjksNy4xMDQxODgyNCBMMi40Nzg4MzUyOSw4LjIzMDUyOTQxIFogTTIuNDc4MjgyMzUsNS44NjQ0OTQxMiBMNi4xOTYyNTg4Miw1Ljg2NDQ5NDEyIEw2LjE5NjI1ODgyLDQuNzM3NiBMMi40NzgyODIzNSw0LjczNzYgTDIuNDc4MjgyMzUsNS44NjQ0OTQxMiBaIE0wLDMuNDk4NDU4ODIgTDguNjc1MDk0MTIsMy40OTg0NTg4MiBMOC42NzUwOTQxMiwyLjM3MjExNzY1IEwwLDIuMzcyMTE3NjUgTDAsMy40OTg0NTg4MiBaIE0wLDEuMTMyOTc2NDcgTDguNjc1MDk0MTIsMS4xMzI5NzY0NyBMOC42NzUwOTQxMiwwLjAwNjA4MjM1Mjk0IEwwLDAuMDA2MDgyMzUyOTQgTDAsMS4xMzI5NzY0NyBaIE05LjkxNDIzNTI5LDE2LjU2Nzc3NjUgTDkuOTE0MjM1MjksMTcuNjk0MTIxOSBMMTkuMDM5OTc2NSwxNy42OTQxMjE5IEMyMC4xNjI2NTU1LDE3LjY5NTYyMTIgMjEuMjQ4OTc1NCwxNy4yOTYxOTI4IDIyLjEwMzI3MDYsMTYuNTY3Nzc2NSBMOS45MTQyMzUyOSwxNi41Njc3NzY1IFogTTkuOTE0MjM1MjksMTQuMjAxMTg4MiBMOS45MTQyMzUyOSwxNS4zMjgwODI0IEwyMy4xMzcyNzA2LDE1LjMyODA4MjQgQzIzLjM0MjA3MjUsMTQuOTc0Mzg3NCAyMy41MDAwNjExLDE0LjU5NTU4NjYgMjMuNjA3MjcwNiwxNC4yMDExODgyIEw5LjkxNDIzNTI5LDE0LjIwMTE4ODIgWiBNMTIuMzkyNTE3NiwxMi45NjIwNDcxIEwxNi4xMTA0OTQxLDEyLjk2MjA0NzEgTDE2LjExMDQ5NDEsMTEuODM1NzA1OSBMMTIuMzkyNTE3NiwxMS44MzU3MDU5IEwxMi4zOTI1MTc2LDEyLjk2MjA0NzEgWiBNMjIuMTg2MjExOCw5LjQ2OTY3MDU5IEwxMi4zOTI1MTc2LDkuNDY5NjcwNTkgTDEyLjM5MjUxNzYsMTAuNTk2NTY0NyBMMjMuMDk2MzUyOSwxMC41OTY1NjQ3IEMyMi44NTIzMjQ4LDEwLjE3Njc5NjMgMjIuNTQ1NTg5LDkuNzk2Nzc5NjEgMjIuMTg2NzY0Nyw5LjQ2OTY3MDU5IE0xMi4zOTMwNzA2LDcuMTA0MTg4MjQgTDEyLjM5MzA3MDYsOC4yMjk5NzY0NyBMMjIuMjI3NjgyNCw4LjIyOTk3NjQ3IEMyMi41ODYzMTY2LDcuOTAzMDQyNiAyMi44OTI4Njg3LDcuNTIzMjA4ODggMjMuMTM2NzE3Niw3LjEwMzYzNTI5IEwxMi4zOTMwNzA2LDcuMTAzNjM1MjkgTDEyLjM5MzA3MDYsNy4xMDQxODgyNCBaIE0yMy42MDY3MTc2LDMuNDk4NDU4ODIgQzIzLjQ5OTk4OTMsMy4xMDQwNzA5MiAyMy4zNDE5NzM5LDIuNzI1MzkxNzkgMjMuMTM2NzE3NiwyLjM3MjExNzY1IEw5LjkxNDIzNTI5LDIuMzcyMTE3NjUgTDkuOTE0MjM1MjksMy40OTg0NTg4MiBMMjMuNjA2NzE3NiwzLjQ5ODQ1ODgyIEwyMy42MDY3MTc2LDMuNDk4NDU4ODIgWiBNMjIuMTAzMjcwNiwxLjEzMjk3NjQ3IEMyMS4yNDg5NzU0LDAuNDA0NTYwMTQyIDIwLjE2MjY1NTUsMC4wMDUxMzE2OTc4MiAxOS4wMzk5NzY1LDAuMDA2NjMxMDY0NDkgTDkuOTE0MjM1MjksMC4wMDY2MzEwNjQ0OSBMOS45MTQyMzUyOSwxLjEzMjk3NjQ3IEwyMi4xMDMyNzA2LDEuMTMyOTc2NDcgTDIyLjEwMzI3MDYsMS4xMzI5NzY0NyBaIE0xMi4zOTI1MTc2LDUuODY0NDk0MTIgTDE2LjExMDQ5NDEsNS44NjQ0OTQxMiBMMTYuMTEwNDk0MSw0LjczNzYgTDEyLjM5MjUxNzYsNC43Mzc2IEwxMi4zOTI1MTc2LDUuODY0NDk0MTIgWiBNMTkuNjAzNDIzNSw1Ljg2NDQ5NDEyIEwyMy42MzQzNjQ3LDUuODY0NDk0MTIgQzIzLjcyNDg5Miw1LjQ5NTY4MzA0IDIzLjc3MDkyOTUsNS4xMTczNTg0NCAyMy43NzE0OTQxLDQuNzM3NiBMMTkuNjAzNDIzNSw0LjczNzYgTDE5LjYwMzQyMzUsNS44NjQ0OTQxMiBaIE0xOS42MDM0MjM1LDExLjgzNTcwNTkgTDE5LjYwMzQyMzUsMTIuOTYyMDQ3MSBMMjMuNzcxNDk0MSwxMi45NjIwNDcxIEMyMy43NzE0OTQxLDEyLjU3MzMyOTQgMjMuNzIxNzI5NCwxMi4xOTY3NzY1IDIzLjYzNDM2NDcsMTEuODM1NzA1OSBMMTkuNjAzNDIzNSwxMS44MzU3MDU5IFogTTMxLjc3MDM0MTIsMCBMMjQuNzg1NTg4MiwwIEwyNC43ODU1ODgyLDEuMTI2ODk0MTIgTDMyLjE2MTgyMzUsMS4xMjY4OTQxMiBMMzEuNzcwMzQxMiwwIFogTTI0Ljc4NjE0MTIsMTcuNjk0MTE3NiBMMzAuOTg0NjExOCwxNy42OTQxMTc2IEwzMC45ODQ2MTE4LDE2LjU2NzIyMzUgTDI0Ljc4NjE0MTIsMTYuNTY3MjIzNSBMMjQuNzg2MTQxMiwxNy42OTQxMTc2IFogTTI0Ljc4NjE0MTIsMTUuMzI3NTI5NCBMMzAuOTg0NjExOCwxNS4zMjc1Mjk0IEwzMC45ODQ2MTE4LDE0LjIwMDYzNTMgTDI0Ljc4NjE0MTIsMTQuMjAwNjM1MyBMMjQuNzg2MTQxMiwxNS4zMjc1Mjk0IFogTTI3LjI2NDk3NjUsMTIuOTYwMzg4MiBMMzAuOTg0NjExOCwxMi45NjAzODgyIEwzMC45ODQ2MTE4LDExLjgzMzQ5NDEgTDI3LjI2NDk3NjUsMTEuODMzNDk0MSBMMjcuMjY0OTc2NSwxMi45NjAzODgyIFogTTI3LjI2NDk3NjUsMTAuNTkzOCBMMzAuOTg0NjExOCwxMC41OTM4IEwzMC45ODQ2MTE4LDkuNDY2OTA1ODggTDI3LjI2NDk3NjUsOS40NjY5MDU4OCBMMjcuMjY0OTc2NSwxMC41OTM4IFogTTM4LjQyMjc3NjUsMTcuNjk0MTE3NiBMNDQuNjIxMjQ3MSwxNy42OTQxMTc2IEw0NC42MjEyNDcxLDE2LjU2NzIyMzUgTDM4LjQyMjc3NjUsMTYuNTY3MjIzNSBMMzguNDIyNzc2NSwxNy42OTQxMTc2IFogTTM4LjQyMjc3NjUsMTUuMzI3NTI5NCBMNDQuNjIxMjQ3MSwxNS4zMjc1Mjk0IEw0NC42MjEyNDcxLDE0LjIwMDYzNTMgTDM4LjQyMjc3NjUsMTQuMjAwNjM1MyBMMzguNDIyNzc2NSwxNS4zMjc1Mjk0IFogTTM4LjQyMjc3NjUsMTIuOTYwMzg4MiBMNDIuMTQxODU4OCwxMi45NjAzODgyIEw0Mi4xNDE4NTg4LDExLjgzMzQ5NDEgTDM4LjQyMjc3NjUsMTEuODMzNDk0MSBMMzguNDIyNzc2NSwxMi45NjAzODgyIFogTTM4LjQyMjIyMzUsMTAuNTkzOCBMNDIuMTQxMzA1OSwxMC41OTM4IEw0Mi4xNDEzMDU5LDkuNDY2OTA1ODggTDM4LjQyMjIyMzUsOS40NjY5MDU4OCBMMzguNDIyMjIzNSwxMC41OTM4IFogTTM4LjQyMjc3NjUsOC4yMjcyMTE3NiBMNDIuMTQxODU4OCw4LjIyNzIxMTc2IEw0Mi4xNDE4NTg4LDcuMDk5NzY0NzEgTDM1LjE3MDM3NjUsNy4wOTk3NjQ3MSBMMzQuNzc5NDQ3MSw4LjIyNjY1ODgyIEwzOC4wNDM0NTg4LDguMjI2NjU4ODIgTDM4LjQyMjc3NjUsNy4xNTM5NTI5NCBMMzguNDIyNzc2NSw4LjIyNzIxMTc2IFogTTM0LjIzNTkwNTksNy4wOTk3NjQ3MSBMMjcuMjY1NTI5NCw3LjA5OTc2NDcxIEwyNy4yNjU1Mjk0LDguMjI3MjExNzYgTDMwLjk4NDYxMTgsOC4yMjcyMTE3NiBMMzAuOTg0NjExOCw3LjE1NDUwNTg4IEwzMS4zNjM5Mjk0LDguMjI3MjExNzYgTDM0LjYyNzk0MTIsOC4yMjcyMTE3NiBMMzQuMjM1OTA1OSw3LjA5OTc2NDcxIFogTTQyLjE0MTMwNTksNC43MzMxNzY0NyBMMzUuOTkxNDk0MSw0LjczMzE3NjQ3IEwzNS42MDA1NjQ3LDUuODYwMDcwNTkgTDQyLjE0MTg1ODgsNS44NjAwNzA1OSBMNDIuMTQxMzA1OSw0LjczMzE3NjQ3IFogTTM3LjYzMzE3NjUsMCBMMzcuMjQyOCwxLjEyNjg5NDEyIEw0NC42MjEyNDcxLDEuMTI2ODk0MTIgTDQ0LjYyMTI0NzEsMCBMMzcuNjMzMTc2NSwwIFogTTM0LjcwMDkyOTQsMTcuNjk0MTE3NiBMMzUuMDk5MDQ3MSwxNi41NjcyMjM1IEwzNC4zMDcyMzUzLDE2LjU2NzIyMzUgTDM0LjcwMDkyOTQsMTcuNjk0MTE3NiBaIE0zMy44Njk4NTg4LDE1LjMyNzUyOTQgTDM1LjUzNjk3NjUsMTUuMzI3NTI5NCBMMzUuOTM1MDk0MSwxNC4yMDA2MzUzIEwzMy40NzE3NDEyLDE0LjIwMDYzNTMgTDMzLjg2OTg1ODgsMTUuMzI3NTI5NCBaIE0zMy4wMzQzNjQ3LDEyLjk2MDk0MTIgTDM2LjM3MjQ3MDYsMTIuOTYwOTQxMiBMMzYuNzcwNTg4MiwxMS44MzM0OTQxIEwzMi42MzY4LDExLjgzMzQ5NDEgTDMzLjAzNDM2NDcsMTIuOTYwOTQxMiBaIE0zMi4xOTg4NzA2LDEwLjU5MzggTDM3LjIwODUxNzYsMTAuNTkzOCBMMzcuNjA2MDgyNCw5LjQ2NjkwNTg4IEwzMS44MDAyLDkuNDY2OTA1ODggTDMyLjE5ODg3MDYsMTAuNTkzOCBaIE0yNy4yNjQ5NzY1LDUuODYwMDcwNTkgTDMzLjgwNjI3MDYsNS44NjAwNzA1OSBMMzMuNDE1MzQxMiw0LjczMzE3NjQ3IEwyNy4yNjQ5NzY1LDQuNzMzMTc2NDcgTDI3LjI2NDk3NjUsNS44NjAwNzA1OSBaIE0zNi40MjExMjk0LDMuNDkzNDgyMzUgTDQ0LjYyMTI0NzEsMy40OTM0ODIzNSBMNDQuNjIxMjQ3MSwyLjM2NjU4ODI0IEwzNi44MTI2MTE4LDIuMzY2NTg4MjQgTDM2LjQyMTEyOTQsMy40OTM0ODIzNSBaIE0zMi41OTQyMjM1LDIuMzY2NTg4MjQgTDI0Ljc4NjE0MTIsMi4zNjY1ODgyNCBMMjQuNzg2MTQxMiwzLjQ5MzQ4MjM1IEwzMi45ODUxNTI5LDMuNDkzNDgyMzUgTDMyLjU5NDIyMzUsMi4zNjY1ODgyNCBaIiBpZD0iU2hhcGUiPjwvcGF0aD4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==" alt="IBM Logo" class="css-vs5na0"/></article><article class="css-dfhusi"><style data-emotion-css="138rpve">.css-138rpve{width:80%;-webkit-filter:invert(100%);filter:invert(100%);}</style><img src="/openj9/static/adopt-open-jdk-7072a4c16b356c87671638dba5c860e9.png" alt="AdoptOpenJDK Logo" class="css-138rpve"/></article><article class="css-dfhusi"><img src="/openj9/static/oregon-state-university-logo-3c2d68263b3d6bd814701041f7626cbe.svg" alt="Oregon State University Logo" class="css-vs5na0"/></article><article class="css-dfhusi"><img src="/openj9/static/uni-new-brunswick-logo-6555470091976484ab5115fd4dc596ac.svg" alt="New Brunswick University Logo" class="css-vs5na0"/></article></div></div><style data-emotion-css="n6281n">.css-n6281n{padding-left:10%;padding-right:10%;padding-top:40px;padding-bottom:40px;background-color:#F5F9FC;}</style><div class="css-n6281n"><style data-emotion-css="a6qjw7">.css-a6qjw7{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;background-color:white;padding-left:5%;padding-right:5%;padding-top:5%;padding-bottom:5%;border-radius:10px;}</style><div class="css-a6qjw7"><style data-emotion-css="14re8iy">.css-14re8iy{-webkit-flex:30%;-ms-flex:30%;flex:30%;max-width:600px;min-width:250px;margin-bottom:6rem;}@media screen and (min-width:560px){.css-14re8iy{min-width:350px;margin-bottom:6rem;}}@media screen and (min-width:1000px){.css-14re8iy{min-width:400px;margin-bottom:8rem;}}@media screen and (min-width:1366px){.css-14re8iy{min-width:500px;margin-bottom:0;}}</style><article class="css-14re8iy"><style data-emotion-css="4ddra2">.css-4ddra2{font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.125;font-weight:700;margin-top:16px;margin-bottom:16px;font-size:24px;}</style><h3 class="css-4ddra2">DOCS</h3><style data-emotion-css="xdzxfi">.css-xdzxfi{height:8rem;margin-bottom:10rem;width:90%;padding-right:1rem;}@media screen and (min-width:560px){.css-xdzxfi{height:13rem;margin-bottom:0;padding-right:0;}}@media screen and (min-width:1000px){.css-xdzxfi{height:12rem;margin-bottom:0;padding-right:0;}}@media screen and (min-width:1366px){.css-xdzxfi{height:10rem;margin-bottom:0;padding-right:0;}}</style><style data-emotion-css="7lh9bm">.css-7lh9bm{margin-bottom:40px;font-size:18px;height:8rem;margin-bottom:10rem;width:90%;padding-right:1rem;}@media screen and (min-width:560px){.css-7lh9bm{height:13rem;margin-bottom:0;padding-right:0;}}@media screen and (min-width:1000px){.css-7lh9bm{height:12rem;margin-bottom:0;padding-right:0;}}@media screen and (min-width:1366px){.css-7lh9bm{height:10rem;margin-bottom:0;padding-right:0;}}</style><p class="css-7lh9bm">If you are new to OpenJ9, our documentation will help you get started. Out of the box, we expect you to discover a great experience, but we also have many tuning options to help you ramp up application performance.</p><style data-emotion-css="wiyika">.css-wiyika{background-color:var(--theme-ui-colors-secondary,#5DA7A3);color:white;border-radius:35px;height:35px;width:190px;border:none;font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';font-size:16px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-text-decoration:none;text-decoration:none;}.css-wiyika:hover{cursor:pointer;background-color:var(--theme-ui-colors-secondaryDark,#5d9da3);border-color:var(--theme-ui-colors-secondaryDark,#5d9da3);-webkit-text-decoration:none;text-decoration:none;color:white;}</style><a href="https://www.eclipse.org/openj9/docs/" rel="noopener noreferrer" target="_blank" class="css-wiyika">Go to docs</a></article><style data-emotion-css="9nt9rn">.css-9nt9rn{-webkit-flex:30%;-ms-flex:30%;flex:30%;max-width:600px;min-width:250px;}@media screen and (min-width:560px){.css-9nt9rn{min-width:350px;}}@media screen and (min-width:1000px){.css-9nt9rn{min-width:400px;}}@media screen and (min-width:1366px){.css-9nt9rn{min-width:500px;}}</style><article class="css-9nt9rn"><h3 class="css-4ddra2">BLOGS</h3><style data-emotion-css="13mflid">.css-13mflid{height:10rem;margin-bottom:10rem;width:90%;padding-right:1rem;}@media screen and (min-width:560px){.css-13mflid{height:13rem;margin-bottom:0;padding-right:0;}}@media screen and (min-width:1000px){.css-13mflid{height:12rem;margin-bottom:0;padding-right:0;}}@media screen and (min-width:1366px){.css-13mflid{height:10rem;margin-bottom:0;padding-right:0;}}</style><style data-emotion-css="1rg6bfe">.css-1rg6bfe{margin-bottom:40px;font-size:18px;height:10rem;margin-bottom:10rem;width:90%;padding-right:1rem;}@media screen and (min-width:560px){.css-1rg6bfe{height:13rem;margin-bottom:0;padding-right:0;}}@media screen and (min-width:1000px){.css-1rg6bfe{height:12rem;margin-bottom:0;padding-right:0;}}@media screen and (min-width:1366px){.css-1rg6bfe{height:10rem;margin-bottom:0;padding-right:0;}}</style><p class="css-1rg6bfe">Our blogs are written by developers, for developers. Read about their insights into up and coming technologies, take deep dives into OpenJ9 development, or simply hear about their experiences of working on the project.</p><a href="https://blog.openj9.org/" rel="noopener noreferrer" target="_blank" class="css-wiyika">Go to blogs</a></article></div></div><style data-emotion-css="15xf14k">.css-15xf14k{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;background-color:var(--theme-ui-colors-primary,#434343);color:white;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:1rem;padding-bottom:3rem;-webkit-flex-direction:reverse-column;-ms-flex-direction:reverse-column;flex-direction:reverse-column;}@media screen and (min-width:560px){.css-15xf14k{padding-bottom:3rem;}}@media screen and (min-width:1000px){.css-15xf14k{padding-bottom:0;}}@media screen and (min-width:1366px){.css-15xf14k{padding-bottom:0;}}</style><footer class="css-15xf14k"><style data-emotion-css="o3kt9a">.css-o3kt9a{-webkit-flex:50%;-ms-flex:50%;flex:50%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}@media screen and (min-width:560px){.css-o3kt9a{display:none;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}}@media screen and (min-width:1000px){.css-o3kt9a{display:none;-webkit-align-items:flex-end;-webkit-box-align:flex-end;-ms-flex-align:flex-end;align-items:flex-end;}}@media screen and (min-width:1366px){.css-o3kt9a{display:none;-webkit-align-items:flex-end;-webkit-box-align:flex-end;-ms-flex-align:flex-end;align-items:flex-end;}}</style><section class="css-o3kt9a"><a href="https://wiki.eclipse.org/Development_Resources/Process_Guidelines/What_is_Incubation" rel="noopener noreferrer" target="_blank"><img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNTBweCIgaGVpZ2h0PSI3NXB4IiB2aWV3Qm94PSIwIDAgMTU3IDIzMSIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KICAgIDwhLS0gR2VuZXJhdG9yOiBTa2V0Y2ggNjEuMiAoODk2NTMpIC0gaHR0cHM6Ly9za2V0Y2guY29tIC0tPgogICAgPHRpdGxlPmVjbGlwc2VfaW5jdWJhdGlvbl92ZXJ0aWNhbF9zdmc8L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0iZWNsaXBzZV9pbmN1YmF0aW9uX3ZlcnRpY2FsX3N2ZyIgZmlsbC1ydWxlPSJub256ZXJvIj4KICAgICAgICAgICAgPGcgaWQ9Ikdyb3VwIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNy4wMDAwMDAsIDIxNC4wMDAwMDApIiBmaWxsPSIjRkZGRkZGIj4KICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJQYXRoIiBwb2ludHM9IjAuNzUgMC4zNCAxLjkyIDAuMzQgMS45MiAxNi4wMyAwLjc1IDE2LjAzIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSI1LjYyIDAuMzQgNi43MiAwLjM0IDE3LjU1IDEzLjk5IDE3LjU1IDAuMzQgMTguNjcgMC4zNCAxOC42NyAxNi4wMyAxNy44IDE2LjAzIDYuNzUgMi4wOSA2Ljc1IDE2LjAzIDUuNjMgMTYuMDMgNS42MyAwLjM0Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMjEuODYsOC4yMyBMMjEuODYsOC4xOSBDMjEuODYsMy43NSAyNS4xOCwwLjA4IDI5LjcxLDAuMDggQzMyLjUxLDAuMDggMzQuMTksMS4xMSAzNS44MSwyLjU5IEwzNC45OCwzLjQ0IEMzMy42MSwyLjEyIDMyLjA0LDEuMTMgMjkuNjksMS4xMyBDMjUuOTIsMS4xMyAyMy4wOCw0LjIgMjMuMDgsOC4xNSBMMjMuMDgsOC4xOSBDMjMuMDgsMTIuMTYgMjUuOTcsMTUuMjUgMjkuNzEsMTUuMjUgQzMxLjk3LDE1LjI1IDMzLjUyLDE0LjM3IDM1LjExLDEyLjgxIEwzNS44OSwxMy41NyBDMzQuMjMsMTUuMjEgMzIuNDQsMTYuMyAyOS42NiwxNi4zIEMyNS4xOCwxNi4zIDIxLjg2LDEyLjc0IDIxLjg2LDguMjMgWiIgaWQ9IlBhdGgiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0zOC40LDkuNTEgTDM4LjQsMC4zNCBMMzkuNTcsMC4zNCBMMzkuNTcsOS40IEMzOS41NywxMy4xIDQxLjU3LDE1LjIzIDQ0Ljg4LDE1LjIzIEM0OC4wNiwxNS4yMyA1MC4xLDEzLjMgNTAuMSw5LjUxIEw1MC4xLDAuMzQgTDUxLjI3LDAuMzQgTDUxLjI3LDkuMzcgQzUxLjI3LDEzLjg4IDQ4LjY1LDE2LjI3MDAzMTQgNDQuODQsMTYuMjcwMDMxNCBDNDEuMDcsMTYuMjggMzguNCwxMy45IDM4LjQsOS41MSBaIiBpZD0iUGF0aCI+PC9wYXRoPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTU0LjAyLDAuMzQgTDYwLjUsMC4zNCBDNjIuMjcsMC4zNCA2My43MSwwLjg2IDY0LjU4LDEuNzMgQzY1LjIzLDIuMzggNjUuNTksMy4yMSA2NS41OSw0LjIgTDY1LjU5LDQuMjQgQzY1LjU5LDYuMzcgNjQuMiw3LjQ1IDYyLjkyLDcuOTYgQzY0LjgsOC40NSA2Ni40Niw5LjUzIDY2LjQ2LDExLjcgTDY2LjQ2LDExLjc0IEM2Ni40NiwxNC4zNiA2NC4yMiwxNi4wMiA2MC44MywxNi4wMiBMNTQuMDIsMTYuMDIgTDU0LjAyLDAuMzQgTDU0LjAyLDAuMzQgWiBNNjQuNCw0LjMxIEM2NC40LDIuNTggNjIuOTksMS40MiA2MC40OCwxLjQyIEw1NS4xOSwxLjQyIEw1NS4xOSw3LjU4IEw2MC4zNyw3LjU4IEM2Mi43Miw3LjU4IDY0LjQsNi40NCA2NC40LDQuMzUgTDY0LjQsNC4zMSBaIE02MC41LDguNjYgTDU1LjE5LDguNjYgTDU1LjE5LDE0Ljk2IEw2MC44OCwxNC45NiBDNjMuNTcsMTQuOTYgNjUuMjcwMDQ0NCwxMy43MyA2NS4yNzAwNDQ0LDExLjc1IEw2NS4yNzAwNDQ0LDExLjcxIEM2NS4yOCw5Ljc4IDYzLjYsOC42NiA2MC41LDguNjYgWiIgaWQ9IlNoYXBlIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNzYuMjgsMC4yMyBMNzcuNCwwLjIzIEw4NC43MSwxNi4wMyBMODMuNDMsMTYuMDMgTDgxLjQ0LDExLjY0IEw3Mi4xOCwxMS42NCBMNzAuMTksMTYuMDMgTDY4Ljk4LDE2LjAzIEw3Ni4yOCwwLjIzIFogTTgwLjk0LDEwLjU5IEw3Ni44MiwxLjUxIEw3Mi42NywxMC41OSBMODAuOTQsMTAuNTkgWiIgaWQ9IlNoYXBlIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSI5MS4wNSAxLjQyIDg1LjU4IDEuNDIgODUuNTggMC4zNCA5Ny42OCAwLjM0IDk3LjY4IDEuNDIgOTIuMjEgMS40MiA5Mi4yMSAxNi4wMyA5MS4wNCAxNi4wMyA5MS4wNCAxLjQyIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSIxMDEuMjkgMC4zNCAxMDIuNDYgMC4zNCAxMDIuNDYgMTYuMDMgMTAxLjI5IDE2LjAzIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTA1LjkxLDguMjMgTDEwNS45MSw4LjE5IEMxMDUuOTEsMy45MSAxMDkuMDcsMC4wOCAxMTMuODIsMC4wOCBDMTE4LjU3LDAuMDggMTIxLjY5LDMuODcgMTIxLjY5LDguMTUgTDEyMS42OSw4LjE5IEMxMjEuNjksMTIuNDcgMTE4LjUzLDE2LjMgMTEzLjc4LDE2LjMgQzEwOS4wMywxNi4zIDEwNS45MSwxMi41MSAxMDUuOTEsOC4yMyBaIE0xMjAuNDgsOC4yMyBMMTIwLjQ4LDguMTkgQzEyMC40OCw0LjMxIDExNy42NiwxLjEzIDExMy43OCwxLjEzIEMxMDkuOSwxLjEzIDEwNy4xMiw0LjI3IDEwNy4xMiw4LjE1IEwxMDcuMTIsOC4xOSBDMTA3LjEyLDEyLjA3IDEwOS45NCwxNS4yNSAxMTMuODIsMTUuMjUgQzExNy43LDE1LjI1IDEyMC40OCwxMi4xMSAxMjAuNDgsOC4yMyBaIiBpZD0iU2hhcGUiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJQYXRoIiBwb2ludHM9IjEyNC44OSAwLjM0IDEyNS45OSAwLjM0IDEzNi44MiAxMy45OSAxMzYuODIgMC4zNCAxMzcuOTQgMC4zNCAxMzcuOTQgMTYuMDMgMTM3LjA3IDE2LjAzIDEyNi4wMiAyLjA5IDEyNi4wMiAxNi4wMyAxMjQuOSAxNi4wMyAxMjQuOSAwLjM0Ij48L3BvbHlnb24+CiAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgPHBhdGggZD0iTTU2LjY2LDE2Ni4yMyBDNTcuNTEsMTYzLjQ4IDYwLjQzLDE2MS40MyA2My45NCwxNjEuNDMgQzY1LjE0LDE2MS40MyA2Ni4yNSwxNjEuNjkgNjcuMjUsMTYyLjExIEM2OS40NiwxNjAuNjQgNzIuMTksMTU5Ljc2IDc1LjE3LDE1OS43NiBMNzUuMTksMTU5Ljc2IEM3Ni4xMSwxNTcuOSA3OC40OCwxNTYuNTcgODEuMywxNTYuNTcgQzgyLjA0LDE1Ni41NyA4Mi43NSwxNTYuNjcgODMuNDIsMTU2Ljg0IEM4My4zMywxNTQuNTYgODMuNjksMTUyLjE4IDg0LjU1LDE0OS42OCBDODUuNTUsMTQ2Ljc5IDg3LDE0NC4wMyA4OC41MiwxNDEuMjggQzg4LjE3LDEzNy4xNiA4Ny45LDEzMy41IDgyLjc0LDEzMiBDODAuODIsMTMxLjQ0IDc4LjgyLDEzMS4yNyA3Ni44NiwxMzEuMDQgTDc2Ljg1LDEzMS4wNCBMNzYuODUsMTMxLjAzIEM3Ni4wMSwxMzAuOTMgNzUuMTcsMTMwLjgxIDc0LjM1LDEzMC42NSBDNjAuMTgsMTQ1LjQxIDQwLjIsMTA5Ljk3IDQwLjIsMTA5Ljk3IEM4NC4zLDEwMy4xMyA3Ni4wMSwxMjUuNjEgNzYuMDEsMTI1LjYxIEM3Mi44MSwxMjQuMDUgNzEuOTMsMTIyLjA4IDY5LjQ5LDExOS43MyBDNjMuOTIsMTE0LjM4IDUwLjYyLDExMy40NCA1MC42MiwxMTMuNDQgQzY2LjU0LDExNy41MSA2OC43MSwxMjUuMjIgNzQuOTcsMTI3LjY5IEM3Ni4zOSwxMjguMDEgNzcuOSwxMjguMTMgNzkuMzUsMTI4LjI5IEM4Mi4xNSwxMjguNTkgODQuODksMTI5LjExIDg3LjIyLDEzMC42MSBDODkuNjMsMTMyLjE2IDkwLjcxLDEzNC4wOSA5MS4yNiwxMzYuMjYgQzkzLDEzMi45NCA5NC41LDEyOS41NiA5NS4wNywxMjUuOTIgQzk1LjgsMTIxLjI3IDk1LjEzLDExNS44OCA5MS44MywxMTIuMDcgQzg4Ljc4LDEwOC41NSA4NC42NiwxMDUuODkgODEuNCwxMDIuNTIgQzc3LjkyLDk4LjkxIDc1LjYxLDk0LjQ2IDc1LjUyLDg5LjcxIEM3My43Niw4NS44NiA3MC45LDgxLjM5IDY4LjI4LDc5LjY1IEM1Ni45LDkwLjM0IDQxLjksNjIuNTggNDEuOSw2Mi41OCBDNzYuODgsNTcuNyA3MS4xLDc1LjY3IDcxLjEsNzUuNjcgQzYyLjcsNjYuMjggNTIuMzEsNjcuMTIgNTIuMzEsNjcuMTIgQzYwLjcxLDY5Ljc5IDY3LjM0LDc1LjE1IDcxLjIsNzguODMgTDcxLjczLDc5LjM2IEM3My4zLDgxIDc0LjksODIuNzUgNzYuMjQsODQuNjMgQzc3LjYsNzkuNDggODAuNzcsNzIuMjcgODMuMjYsNjcuOTcgQzgzLjI2LDY3Ljk3IDkxLjY2LDUzLjE1IDEwNS44LDQzLjkgQzEwNS44LDQzLjkgOTUuMDIsNDUuMTQgODMuNDEsNjIuODkgQzgzLjQxLDYyLjg5IDY3Ljk5LDM4LjcgMTE3LjgzLDM0LjIzIEMxMTcuODMsMzQuMjMgMTE0LjQsNzguMTcgODcuNDUsNjkuNjMgQzgyLjc3LDc2LjY3IDc5LjcsODQuNzQgODAuMzMsOTAuNDIgQzgwLjk1LDk1Ljk2IDg0LjgzLDk5Ljg2IDg5LjExLDEwMy41IEM5MC4yNSw5Ny42NiA5NC40Niw5Mi42MyAxMDAuNjUsODkuODkgQzEwNS42LDg3LjkyIDExMi45LDg2LjAzIDExOS43Miw4NS42MiBDMTE5LjcyLDg1LjYyIDEwNi4zOSw4Mi41OCA5Ni4yNSw4OS41MSBDOTYuMjUsODkuNTEgOTYuNDIsNjkuMjIgMTMyLjM0LDgzLjk1IEMxMzIuMzQsODMuOTUgMTA2LjM0LDExMC4yOSA5Ny45OSw5NC41OSBDOTQuMDMsOTcuMiA5MS41MywxMDEuNTggOTIuMTgsMTA2LjExIEM5NC41LDEwOC4xNCA5Ni42NiwxMTAuMzMgOTcuOTcsMTEzLjAzIEM5OS44LDExNi44MiAxMDAuNDUsMTIxLjI0IDk5Ljk1LDEyNS4zNSBDOTguOTksMTMzLjI1IDk0LjA1LDEzOS45NyA5MC42NywxNDcuMTQgQzg5LjI5LDE1MC4wNiA4Ny45NywxNTMuMjcgODcuOTUsMTU2LjUxIEM4OS42NCwxNTYuMDQgOTEuNDcsMTU1Ljc4IDkzLjM5LDE1NS43OCBDMTAwLjYyLDE1NS43OCAxMDYuNzEsMTU5LjM3IDEwOC42OCwxNjQuMyBDMTExLjYxLDE2NC42MSAxMTMuOTIsMTY2LjMzIDExNC4zNCwxNjguNTEgQzExNi40NSwxNjkuODEgMTE4LjEyLDE3MS42MyAxMTkuMTMsMTczLjc1IEw1MC41NSwxNzMuNzUgQzUyLjAyLDE3MC42MiA1NC4xNCwxNjcuMTYgNTYuNjYsMTY2LjIzIiBpZD0iUGF0aCIgZmlsbD0iI0Y3OEQyQyI+PC9wYXRoPgogICAgICAgICAgICA8ZyBpZD0iR3JvdXAiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE3LjAwMDAwMCwgMTgyLjAwMDAwMCkiIGZpbGw9IiNGRkZGRkYiPgogICAgICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlBhdGgiIHBvaW50cz0iMC41NCAxLjM5IDE4LjU0IDEuMzkgMTguNTQgNS4yMSA0LjggNS4yMSA0LjggMTEuNTIgMTYuOTcgMTEuNTIgMTYuOTcgMTUuMzMgNC44IDE1LjMzIDQuOCAyMS44NSAxOC43MSAyMS44NSAxOC43MSAyNS42NyAwLjU0IDI1LjY3Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMjEuNTUsMTMuNiBMMjEuNTUsMTMuNTMgQzIxLjU1LDYuNjMgMjYuNzIsMC45NyAzNC4wNywwLjk3IEMzOC41NCwwLjk3IDQxLjI1LDIuNTMgNDMuNTcsNC43NSBMNDAuODMsNy45MSBDMzguODksNi4xMSAzNi44MSw0Ljg5IDM0LjAzLDQuODkgQzI5LjQyLDQuODkgMjYuMDIsOC43MSAyNi4wMiwxMy40NiBMMjYuMDIsMTMuNTMgQzI2LjAyLDE4LjI4IDI5LjM4LDIyLjEzIDM0LjAzLDIyLjEzIEMzNy4wMSwyMi4xMyAzOC45MiwyMC45NSA0MSwxOS4wMSBMNDMuNzQsMjEuNzggQzQxLjIxLDI0LjQyIDM4LjQzLDI2LjA4MDAxMzYgMzMuODksMjYuMDgwMDEzNiBDMjYuODMsMjYuMDkgMjEuNTUsMjAuNTcgMjEuNTUsMTMuNiBaIiBpZD0iUGF0aCI+PC9wYXRoPgogICAgICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlBhdGgiIHBvaW50cz0iNDcuMjIgMS4zOSA1MS40OSAxLjM5IDUxLjQ5IDIxLjc4IDY0LjI1IDIxLjc4IDY0LjI1IDI1LjY2IDQ3LjIyIDI1LjY2Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSI2Ny45MyAxLjM5IDcyLjIgMS4zOSA3Mi4yIDI1LjY3IDY3LjkzIDI1LjY3Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNzcuNjcsMS4zOSBMODcuMjQsMS4zOSBDOTIuOTMsMS4zOSA5Ni40Nyw0LjYyIDk2LjQ3LDkuNTEgTDk2LjQ3LDkuNTggQzk2LjQ3LDE1LjAzIDkyLjEsMTcuODcgODYuNzYsMTcuODcgTDgxLjk0LDE3Ljg3IEw4MS45NCwyNS42NyBMNzcuNjcsMjUuNjcgTDc3LjY3LDEuMzkgWiBNODYuOSwxNC4wMiBDOTAuMTMsMTQuMDIgOTIuMTQsMTIuMjIgOTIuMTQsOS42OCBMOTIuMTQsOS42MSBDOTIuMTQsNi43NyA5MC4wOSw1LjI4IDg2LjksNS4yOCBMODEuOTQsNS4yOCBMODEuOTQsMTQuMDIgTDg2LjksMTQuMDIgWiIgaWQ9IlNoYXBlIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNOTguMjEsMjIuMTMgTDEwMC43OCwxOS4wOCBDMTAzLjEsMjEuMDkgMTA1LjQ2LDIyLjI0IDEwOC40NSwyMi4yNCBDMTExLjA5LDIyLjI0IDExMi43NSwyMC45OSAxMTIuNzUsMTkuMTkgTDExMi43NSwxOS4xMiBDMTEyLjc1LDE3LjM5IDExMS43OCwxNi40NSAxMDcuMjcsMTUuNDEgQzEwMi4xLDE0LjE2IDk5LjE5LDEyLjY0IDk5LjE5LDguMTYgTDk5LjE5LDguMDkgQzk5LjE5LDMuOTMgMTAyLjY2LDEuMDUgMTA3LjQ4LDEuMDUgQzExMS4wMiwxLjA1IDExMy44MywyLjEzIDExNi4yOSw0LjEgTDExNCw3LjMzIEMxMTEuODEsNS43IDEwOS42Myw0LjgzIDEwNy40MSw0LjgzIEMxMDQuOTEsNC44MyAxMDMuNDYsNi4xMSAxMDMuNDYsNy43MSBMMTAzLjQ2LDcuNzggQzEwMy40Niw5LjY1IDEwNC41NywxMC40OSAxMDkuMjUsMTEuNiBDMTE0LjM4LDEyLjg1IDExNy4wMiwxNC42OSAxMTcuMDIsMTguNzEgTDExNy4wMiwxOC43OCBDMTE3LjAyLDIzLjMyIDExMy40NSwyNi4wMyAxMDguMzUsMjYuMDMgQzEwNC42MiwyNi4wMiAxMDEuMTIsMjQuNzMgOTguMjEsMjIuMTMgWiIgaWQ9IlBhdGgiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJQYXRoIiBwb2ludHM9IjEyMC45OSAxLjM5IDEzOC45OSAxLjM5IDEzOC45OSA1LjIxIDEyNS4yNiA1LjIxIDEyNS4yNiAxMS41MiAxMzcuNDMgMTEuNTIgMTM3LjQzIDE1LjMzIDEyNS4yNiAxNS4zMyAxMjUuMjYgMjEuODUgMTM5LjE3IDIxLjg1IDEzOS4xNyAyNS42NyAxMjEgMjUuNjcgMTIxIDEuMzkiPjwvcG9seWdvbj4KICAgICAgICAgICAgPC9nPgogICAgICAgICAgICA8cGF0aCBkPSJNMjEuNjYsMzkuOTkgQzQxLjI2LDkuNDIgODAuNSwtMS4yNSAxMTMuMjMsMTMuNDQgQzExMi41MSwxMi45NCAxMTEuNzgsMTIuNDMgMTExLjAzLDExLjk1IEM3Ny41MiwtOS41NCAzMi45OCwwLjExIDExLjU2LDMzLjUyIEMtOS44Nyw2Ni45MiAtMC4wNiwxMTEuNDMgMzMuNDUsMTMyLjkyIEMzNC4yLDEzMy40IDM0Ljk2LDEzMy44NSAzNS43MiwxMzQuMyBDOC43MywxMTAuNjggMi4wNiw3MC41NiAyMS42NiwzOS45OSIgaWQ9IlBhdGgiIGZpbGw9IiNGNzhEMkMiPjwvcGF0aD4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==" alt="Eclipse Incubator Logo"/></a><style data-emotion-css="1uno72p">.css-1uno72p{font-size:0.9rem;}</style><style data-emotion-css="2r9mng">.css-2r9mng{font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.125;font-weight:700;margin-top:16px;margin-bottom:16px;font-size:16px;font-size:0.9rem;}</style><h6 class="css-2r9mng">OpenJ9 is an Eclipse Incubator Project</h6></section><style data-emotion-css="90v6js">.css-90v6js{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex:100%;-ms-flex:100%;flex:100%;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;}@media screen and (min-width:560px){.css-90v6js{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex:50%;-ms-flex:50%;flex:50%;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;}}@media screen and (min-width:1000px){.css-90v6js{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex:50%;-ms-flex:50%;flex:50%;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;}}@media screen and (min-width:1366px){.css-90v6js{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex:50%;-ms-flex:50%;flex:50%;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;}}.css-90v6js a{color:white;-webkit-text-decoration:none;text-decoration:none;}.css-90v6js a:hover{color:var(--theme-ui-colors-links,#5DA7A3);}</style><nav class="css-90v6js"><style data-emotion-css="hkdp8o">.css-hkdp8o{-webkit-flex:1;-ms-flex:1;flex:1;padding-left:2rem;margin-right:1.1rem;padding:1rem;font-size:1rem;}@media screen and (min-width:560px){.css-hkdp8o{padding-left:0.8rem;padding:0;font-size:0.9rem;}}@media screen and (min-width:1000px){.css-hkdp8o{padding-left:0.8rem;font-size:1rem;}}@media screen and (min-width:1366px){.css-hkdp8o{padding-left:0.8rem;font-size:1rem;}}</style><section class="css-hkdp8o"><style data-emotion-css="1p7eyhh">.css-1p7eyhh{margin-bottom:0.2rem;}</style><style data-emotion-css="shyl6e">.css-shyl6e{font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.125;font-weight:700;margin-top:16px;margin-bottom:16px;font-size:20px;margin-bottom:0.2rem;}</style><h4 class="css-shyl6e">Docs</h4><style data-emotion-css="1l04qsy">.css-1l04qsy{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;list-style:none;-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}.css-1l04qsy li{padding:0;}.css-1l04qsy li:first-of-type{margin-left:0;}.css-1l04qsy li:last-child{margin-right:0;padding-right:0;}</style><ul class="css-1l04qsy"><li><style data-emotion-css="14i0930">.css-14i0930{-webkit-text-decoration:none;text-decoration:none;color:white;}</style><a href="https://www.eclipse.org/openj9/docs/openj9_newuser/" rel="noopener noreferrer" target="_blank" class="css-14i0930">New to OpenJ9?</a></li><li><a href="https://www.eclipse.org/openj9/docs/introduction/" rel="noopener noreferrer" target="_blank" class="css-14i0930">Getting started</a></li><li><a href="https://www.eclipse.org/openj9/docs/cmdline_specifying/" rel="noopener noreferrer" target="_blank" class="css-14i0930">Command-line options</a></li></ul></section><style data-emotion-css="7usxs3">.css-7usxs3{-webkit-flex:1;-ms-flex:1;flex:1;padding-left:2rem;padding:1rem;font-size:1rem;}@media screen and (min-width:560px){.css-7usxs3{padding-left:0.8rem;padding:0;font-size:0.9rem;}}@media screen and (min-width:1000px){.css-7usxs3{padding-left:0;font-size:1rem;}}@media screen and (min-width:1366px){.css-7usxs3{padding-left:0;font-size:1rem;}}</style><section class="css-7usxs3"><h4 class="css-shyl6e">Resources</h4><ul class="css-1l04qsy"><li><a class="css-14i0930" href="/openj9/about">About</a></li><li><a class="css-14i0930" href="/openj9/performance">Performance</a></li></ul></section><style data-emotion-css="rlig4a">.css-rlig4a{-webkit-flex:1;-ms-flex:1;flex:1;padding-left:2rem;padding:1rem;font-size:1rem;margin-left:0;}@media screen and (min-width:560px){.css-rlig4a{padding-left:0;padding:0;font-size:0.9rem;margin-left:1rem;}}@media screen and (min-width:1000px){.css-rlig4a{padding-left:0;font-size:1rem;}}@media screen and (min-width:1366px){.css-rlig4a{padding-left:0;font-size:1rem;}}</style><section class="css-rlig4a"><h4 class="css-shyl6e">Community</h4><ul class="css-1l04qsy"><li><a class="css-14i0930" href="/openj9/news">News</a></li><li><a href="https://blog.openj9.org/" rel="noopener noreferrer" target="_blank" class="css-14i0930">Blogs</a></li></ul></section></nav><style data-emotion-css="13pxy6t">.css-13pxy6t{-webkit-flex:25%;-ms-flex:25%;flex:25%;display:none;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}@media screen and (min-width:560px){.css-13pxy6t{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:flex-end;-webkit-box-align:flex-end;-ms-flex-align:flex-end;align-items:flex-end;}}@media screen and (min-width:1000px){.css-13pxy6t{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:flex-end;-webkit-box-align:flex-end;-ms-flex-align:flex-end;align-items:flex-end;}}@media screen and (min-width:1366px){.css-13pxy6t{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:flex-end;-webkit-box-align:flex-end;-ms-flex-align:flex-end;align-items:flex-end;}}</style><section class="css-13pxy6t"><style data-emotion-css="10op7gg">.css-10op7gg{font-size:0.9rem;margin-top:1.3rem;margin-left:0.6rem;}</style><style data-emotion-css="z87sw5">.css-z87sw5{font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.125;font-weight:700;margin-top:16px;margin-bottom:16px;font-size:16px;font-size:0.9rem;margin-top:1.3rem;margin-left:0.6rem;}</style><h6 class="css-z87sw5">OpenJ9 is an Eclipse Incubator Project</h6><a href="https://wiki.eclipse.org/Development_Resources/Process_Guidelines/What_is_Incubation" rel="noopener noreferrer" target="_blank"><img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNTBweCIgaGVpZ2h0PSI3NXB4IiB2aWV3Qm94PSIwIDAgMTU3IDIzMSIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KICAgIDwhLS0gR2VuZXJhdG9yOiBTa2V0Y2ggNjEuMiAoODk2NTMpIC0gaHR0cHM6Ly9za2V0Y2guY29tIC0tPgogICAgPHRpdGxlPmVjbGlwc2VfaW5jdWJhdGlvbl92ZXJ0aWNhbF9zdmc8L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0iZWNsaXBzZV9pbmN1YmF0aW9uX3ZlcnRpY2FsX3N2ZyIgZmlsbC1ydWxlPSJub256ZXJvIj4KICAgICAgICAgICAgPGcgaWQ9Ikdyb3VwIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNy4wMDAwMDAsIDIxNC4wMDAwMDApIiBmaWxsPSIjRkZGRkZGIj4KICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJQYXRoIiBwb2ludHM9IjAuNzUgMC4zNCAxLjkyIDAuMzQgMS45MiAxNi4wMyAwLjc1IDE2LjAzIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSI1LjYyIDAuMzQgNi43MiAwLjM0IDE3LjU1IDEzLjk5IDE3LjU1IDAuMzQgMTguNjcgMC4zNCAxOC42NyAxNi4wMyAxNy44IDE2LjAzIDYuNzUgMi4wOSA2Ljc1IDE2LjAzIDUuNjMgMTYuMDMgNS42MyAwLjM0Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMjEuODYsOC4yMyBMMjEuODYsOC4xOSBDMjEuODYsMy43NSAyNS4xOCwwLjA4IDI5LjcxLDAuMDggQzMyLjUxLDAuMDggMzQuMTksMS4xMSAzNS44MSwyLjU5IEwzNC45OCwzLjQ0IEMzMy42MSwyLjEyIDMyLjA0LDEuMTMgMjkuNjksMS4xMyBDMjUuOTIsMS4xMyAyMy4wOCw0LjIgMjMuMDgsOC4xNSBMMjMuMDgsOC4xOSBDMjMuMDgsMTIuMTYgMjUuOTcsMTUuMjUgMjkuNzEsMTUuMjUgQzMxLjk3LDE1LjI1IDMzLjUyLDE0LjM3IDM1LjExLDEyLjgxIEwzNS44OSwxMy41NyBDMzQuMjMsMTUuMjEgMzIuNDQsMTYuMyAyOS42NiwxNi4zIEMyNS4xOCwxNi4zIDIxLjg2LDEyLjc0IDIxLjg2LDguMjMgWiIgaWQ9IlBhdGgiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0zOC40LDkuNTEgTDM4LjQsMC4zNCBMMzkuNTcsMC4zNCBMMzkuNTcsOS40IEMzOS41NywxMy4xIDQxLjU3LDE1LjIzIDQ0Ljg4LDE1LjIzIEM0OC4wNiwxNS4yMyA1MC4xLDEzLjMgNTAuMSw5LjUxIEw1MC4xLDAuMzQgTDUxLjI3LDAuMzQgTDUxLjI3LDkuMzcgQzUxLjI3LDEzLjg4IDQ4LjY1LDE2LjI3MDAzMTQgNDQuODQsMTYuMjcwMDMxNCBDNDEuMDcsMTYuMjggMzguNCwxMy45IDM4LjQsOS41MSBaIiBpZD0iUGF0aCI+PC9wYXRoPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTU0LjAyLDAuMzQgTDYwLjUsMC4zNCBDNjIuMjcsMC4zNCA2My43MSwwLjg2IDY0LjU4LDEuNzMgQzY1LjIzLDIuMzggNjUuNTksMy4yMSA2NS41OSw0LjIgTDY1LjU5LDQuMjQgQzY1LjU5LDYuMzcgNjQuMiw3LjQ1IDYyLjkyLDcuOTYgQzY0LjgsOC40NSA2Ni40Niw5LjUzIDY2LjQ2LDExLjcgTDY2LjQ2LDExLjc0IEM2Ni40NiwxNC4zNiA2NC4yMiwxNi4wMiA2MC44MywxNi4wMiBMNTQuMDIsMTYuMDIgTDU0LjAyLDAuMzQgTDU0LjAyLDAuMzQgWiBNNjQuNCw0LjMxIEM2NC40LDIuNTggNjIuOTksMS40MiA2MC40OCwxLjQyIEw1NS4xOSwxLjQyIEw1NS4xOSw3LjU4IEw2MC4zNyw3LjU4IEM2Mi43Miw3LjU4IDY0LjQsNi40NCA2NC40LDQuMzUgTDY0LjQsNC4zMSBaIE02MC41LDguNjYgTDU1LjE5LDguNjYgTDU1LjE5LDE0Ljk2IEw2MC44OCwxNC45NiBDNjMuNTcsMTQuOTYgNjUuMjcwMDQ0NCwxMy43MyA2NS4yNzAwNDQ0LDExLjc1IEw2NS4yNzAwNDQ0LDExLjcxIEM2NS4yOCw5Ljc4IDYzLjYsOC42NiA2MC41LDguNjYgWiIgaWQ9IlNoYXBlIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNzYuMjgsMC4yMyBMNzcuNCwwLjIzIEw4NC43MSwxNi4wMyBMODMuNDMsMTYuMDMgTDgxLjQ0LDExLjY0IEw3Mi4xOCwxMS42NCBMNzAuMTksMTYuMDMgTDY4Ljk4LDE2LjAzIEw3Ni4yOCwwLjIzIFogTTgwLjk0LDEwLjU5IEw3Ni44MiwxLjUxIEw3Mi42NywxMC41OSBMODAuOTQsMTAuNTkgWiIgaWQ9IlNoYXBlIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSI5MS4wNSAxLjQyIDg1LjU4IDEuNDIgODUuNTggMC4zNCA5Ny42OCAwLjM0IDk3LjY4IDEuNDIgOTIuMjEgMS40MiA5Mi4yMSAxNi4wMyA5MS4wNCAxNi4wMyA5MS4wNCAxLjQyIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSIxMDEuMjkgMC4zNCAxMDIuNDYgMC4zNCAxMDIuNDYgMTYuMDMgMTAxLjI5IDE2LjAzIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTA1LjkxLDguMjMgTDEwNS45MSw4LjE5IEMxMDUuOTEsMy45MSAxMDkuMDcsMC4wOCAxMTMuODIsMC4wOCBDMTE4LjU3LDAuMDggMTIxLjY5LDMuODcgMTIxLjY5LDguMTUgTDEyMS42OSw4LjE5IEMxMjEuNjksMTIuNDcgMTE4LjUzLDE2LjMgMTEzLjc4LDE2LjMgQzEwOS4wMywxNi4zIDEwNS45MSwxMi41MSAxMDUuOTEsOC4yMyBaIE0xMjAuNDgsOC4yMyBMMTIwLjQ4LDguMTkgQzEyMC40OCw0LjMxIDExNy42NiwxLjEzIDExMy43OCwxLjEzIEMxMDkuOSwxLjEzIDEwNy4xMiw0LjI3IDEwNy4xMiw4LjE1IEwxMDcuMTIsOC4xOSBDMTA3LjEyLDEyLjA3IDEwOS45NCwxNS4yNSAxMTMuODIsMTUuMjUgQzExNy43LDE1LjI1IDEyMC40OCwxMi4xMSAxMjAuNDgsOC4yMyBaIiBpZD0iU2hhcGUiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJQYXRoIiBwb2ludHM9IjEyNC44OSAwLjM0IDEyNS45OSAwLjM0IDEzNi44MiAxMy45OSAxMzYuODIgMC4zNCAxMzcuOTQgMC4zNCAxMzcuOTQgMTYuMDMgMTM3LjA3IDE2LjAzIDEyNi4wMiAyLjA5IDEyNi4wMiAxNi4wMyAxMjQuOSAxNi4wMyAxMjQuOSAwLjM0Ij48L3BvbHlnb24+CiAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgPHBhdGggZD0iTTU2LjY2LDE2Ni4yMyBDNTcuNTEsMTYzLjQ4IDYwLjQzLDE2MS40MyA2My45NCwxNjEuNDMgQzY1LjE0LDE2MS40MyA2Ni4yNSwxNjEuNjkgNjcuMjUsMTYyLjExIEM2OS40NiwxNjAuNjQgNzIuMTksMTU5Ljc2IDc1LjE3LDE1OS43NiBMNzUuMTksMTU5Ljc2IEM3Ni4xMSwxNTcuOSA3OC40OCwxNTYuNTcgODEuMywxNTYuNTcgQzgyLjA0LDE1Ni41NyA4Mi43NSwxNTYuNjcgODMuNDIsMTU2Ljg0IEM4My4zMywxNTQuNTYgODMuNjksMTUyLjE4IDg0LjU1LDE0OS42OCBDODUuNTUsMTQ2Ljc5IDg3LDE0NC4wMyA4OC41MiwxNDEuMjggQzg4LjE3LDEzNy4xNiA4Ny45LDEzMy41IDgyLjc0LDEzMiBDODAuODIsMTMxLjQ0IDc4LjgyLDEzMS4yNyA3Ni44NiwxMzEuMDQgTDc2Ljg1LDEzMS4wNCBMNzYuODUsMTMxLjAzIEM3Ni4wMSwxMzAuOTMgNzUuMTcsMTMwLjgxIDc0LjM1LDEzMC42NSBDNjAuMTgsMTQ1LjQxIDQwLjIsMTA5Ljk3IDQwLjIsMTA5Ljk3IEM4NC4zLDEwMy4xMyA3Ni4wMSwxMjUuNjEgNzYuMDEsMTI1LjYxIEM3Mi44MSwxMjQuMDUgNzEuOTMsMTIyLjA4IDY5LjQ5LDExOS43MyBDNjMuOTIsMTE0LjM4IDUwLjYyLDExMy40NCA1MC42MiwxMTMuNDQgQzY2LjU0LDExNy41MSA2OC43MSwxMjUuMjIgNzQuOTcsMTI3LjY5IEM3Ni4zOSwxMjguMDEgNzcuOSwxMjguMTMgNzkuMzUsMTI4LjI5IEM4Mi4xNSwxMjguNTkgODQuODksMTI5LjExIDg3LjIyLDEzMC42MSBDODkuNjMsMTMyLjE2IDkwLjcxLDEzNC4wOSA5MS4yNiwxMzYuMjYgQzkzLDEzMi45NCA5NC41LDEyOS41NiA5NS4wNywxMjUuOTIgQzk1LjgsMTIxLjI3IDk1LjEzLDExNS44OCA5MS44MywxMTIuMDcgQzg4Ljc4LDEwOC41NSA4NC42NiwxMDUuODkgODEuNCwxMDIuNTIgQzc3LjkyLDk4LjkxIDc1LjYxLDk0LjQ2IDc1LjUyLDg5LjcxIEM3My43Niw4NS44NiA3MC45LDgxLjM5IDY4LjI4LDc5LjY1IEM1Ni45LDkwLjM0IDQxLjksNjIuNTggNDEuOSw2Mi41OCBDNzYuODgsNTcuNyA3MS4xLDc1LjY3IDcxLjEsNzUuNjcgQzYyLjcsNjYuMjggNTIuMzEsNjcuMTIgNTIuMzEsNjcuMTIgQzYwLjcxLDY5Ljc5IDY3LjM0LDc1LjE1IDcxLjIsNzguODMgTDcxLjczLDc5LjM2IEM3My4zLDgxIDc0LjksODIuNzUgNzYuMjQsODQuNjMgQzc3LjYsNzkuNDggODAuNzcsNzIuMjcgODMuMjYsNjcuOTcgQzgzLjI2LDY3Ljk3IDkxLjY2LDUzLjE1IDEwNS44LDQzLjkgQzEwNS44LDQzLjkgOTUuMDIsNDUuMTQgODMuNDEsNjIuODkgQzgzLjQxLDYyLjg5IDY3Ljk5LDM4LjcgMTE3LjgzLDM0LjIzIEMxMTcuODMsMzQuMjMgMTE0LjQsNzguMTcgODcuNDUsNjkuNjMgQzgyLjc3LDc2LjY3IDc5LjcsODQuNzQgODAuMzMsOTAuNDIgQzgwLjk1LDk1Ljk2IDg0LjgzLDk5Ljg2IDg5LjExLDEwMy41IEM5MC4yNSw5Ny42NiA5NC40Niw5Mi42MyAxMDAuNjUsODkuODkgQzEwNS42LDg3LjkyIDExMi45LDg2LjAzIDExOS43Miw4NS42MiBDMTE5LjcyLDg1LjYyIDEwNi4zOSw4Mi41OCA5Ni4yNSw4OS41MSBDOTYuMjUsODkuNTEgOTYuNDIsNjkuMjIgMTMyLjM0LDgzLjk1IEMxMzIuMzQsODMuOTUgMTA2LjM0LDExMC4yOSA5Ny45OSw5NC41OSBDOTQuMDMsOTcuMiA5MS41MywxMDEuNTggOTIuMTgsMTA2LjExIEM5NC41LDEwOC4xNCA5Ni42NiwxMTAuMzMgOTcuOTcsMTEzLjAzIEM5OS44LDExNi44MiAxMDAuNDUsMTIxLjI0IDk5Ljk1LDEyNS4zNSBDOTguOTksMTMzLjI1IDk0LjA1LDEzOS45NyA5MC42NywxNDcuMTQgQzg5LjI5LDE1MC4wNiA4Ny45NywxNTMuMjcgODcuOTUsMTU2LjUxIEM4OS42NCwxNTYuMDQgOTEuNDcsMTU1Ljc4IDkzLjM5LDE1NS43OCBDMTAwLjYyLDE1NS43OCAxMDYuNzEsMTU5LjM3IDEwOC42OCwxNjQuMyBDMTExLjYxLDE2NC42MSAxMTMuOTIsMTY2LjMzIDExNC4zNCwxNjguNTEgQzExNi40NSwxNjkuODEgMTE4LjEyLDE3MS42MyAxMTkuMTMsMTczLjc1IEw1MC41NSwxNzMuNzUgQzUyLjAyLDE3MC42MiA1NC4xNCwxNjcuMTYgNTYuNjYsMTY2LjIzIiBpZD0iUGF0aCIgZmlsbD0iI0Y3OEQyQyI+PC9wYXRoPgogICAgICAgICAgICA8ZyBpZD0iR3JvdXAiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE3LjAwMDAwMCwgMTgyLjAwMDAwMCkiIGZpbGw9IiNGRkZGRkYiPgogICAgICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlBhdGgiIHBvaW50cz0iMC41NCAxLjM5IDE4LjU0IDEuMzkgMTguNTQgNS4yMSA0LjggNS4yMSA0LjggMTEuNTIgMTYuOTcgMTEuNTIgMTYuOTcgMTUuMzMgNC44IDE1LjMzIDQuOCAyMS44NSAxOC43MSAyMS44NSAxOC43MSAyNS42NyAwLjU0IDI1LjY3Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMjEuNTUsMTMuNiBMMjEuNTUsMTMuNTMgQzIxLjU1LDYuNjMgMjYuNzIsMC45NyAzNC4wNywwLjk3IEMzOC41NCwwLjk3IDQxLjI1LDIuNTMgNDMuNTcsNC43NSBMNDAuODMsNy45MSBDMzguODksNi4xMSAzNi44MSw0Ljg5IDM0LjAzLDQuODkgQzI5LjQyLDQuODkgMjYuMDIsOC43MSAyNi4wMiwxMy40NiBMMjYuMDIsMTMuNTMgQzI2LjAyLDE4LjI4IDI5LjM4LDIyLjEzIDM0LjAzLDIyLjEzIEMzNy4wMSwyMi4xMyAzOC45MiwyMC45NSA0MSwxOS4wMSBMNDMuNzQsMjEuNzggQzQxLjIxLDI0LjQyIDM4LjQzLDI2LjA4MDAxMzYgMzMuODksMjYuMDgwMDEzNiBDMjYuODMsMjYuMDkgMjEuNTUsMjAuNTcgMjEuNTUsMTMuNiBaIiBpZD0iUGF0aCI+PC9wYXRoPgogICAgICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlBhdGgiIHBvaW50cz0iNDcuMjIgMS4zOSA1MS40OSAxLjM5IDUxLjQ5IDIxLjc4IDY0LjI1IDIxLjc4IDY0LjI1IDI1LjY2IDQ3LjIyIDI1LjY2Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSI2Ny45MyAxLjM5IDcyLjIgMS4zOSA3Mi4yIDI1LjY3IDY3LjkzIDI1LjY3Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNzcuNjcsMS4zOSBMODcuMjQsMS4zOSBDOTIuOTMsMS4zOSA5Ni40Nyw0LjYyIDk2LjQ3LDkuNTEgTDk2LjQ3LDkuNTggQzk2LjQ3LDE1LjAzIDkyLjEsMTcuODcgODYuNzYsMTcuODcgTDgxLjk0LDE3Ljg3IEw4MS45NCwyNS42NyBMNzcuNjcsMjUuNjcgTDc3LjY3LDEuMzkgWiBNODYuOSwxNC4wMiBDOTAuMTMsMTQuMDIgOTIuMTQsMTIuMjIgOTIuMTQsOS42OCBMOTIuMTQsOS42MSBDOTIuMTQsNi43NyA5MC4wOSw1LjI4IDg2LjksNS4yOCBMODEuOTQsNS4yOCBMODEuOTQsMTQuMDIgTDg2LjksMTQuMDIgWiIgaWQ9IlNoYXBlIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNOTguMjEsMjIuMTMgTDEwMC43OCwxOS4wOCBDMTAzLjEsMjEuMDkgMTA1LjQ2LDIyLjI0IDEwOC40NSwyMi4yNCBDMTExLjA5LDIyLjI0IDExMi43NSwyMC45OSAxMTIuNzUsMTkuMTkgTDExMi43NSwxOS4xMiBDMTEyLjc1LDE3LjM5IDExMS43OCwxNi40NSAxMDcuMjcsMTUuNDEgQzEwMi4xLDE0LjE2IDk5LjE5LDEyLjY0IDk5LjE5LDguMTYgTDk5LjE5LDguMDkgQzk5LjE5LDMuOTMgMTAyLjY2LDEuMDUgMTA3LjQ4LDEuMDUgQzExMS4wMiwxLjA1IDExMy44MywyLjEzIDExNi4yOSw0LjEgTDExNCw3LjMzIEMxMTEuODEsNS43IDEwOS42Myw0LjgzIDEwNy40MSw0LjgzIEMxMDQuOTEsNC44MyAxMDMuNDYsNi4xMSAxMDMuNDYsNy43MSBMMTAzLjQ2LDcuNzggQzEwMy40Niw5LjY1IDEwNC41NywxMC40OSAxMDkuMjUsMTEuNiBDMTE0LjM4LDEyLjg1IDExNy4wMiwxNC42OSAxMTcuMDIsMTguNzEgTDExNy4wMiwxOC43OCBDMTE3LjAyLDIzLjMyIDExMy40NSwyNi4wMyAxMDguMzUsMjYuMDMgQzEwNC42MiwyNi4wMiAxMDEuMTIsMjQuNzMgOTguMjEsMjIuMTMgWiIgaWQ9IlBhdGgiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJQYXRoIiBwb2ludHM9IjEyMC45OSAxLjM5IDEzOC45OSAxLjM5IDEzOC45OSA1LjIxIDEyNS4yNiA1LjIxIDEyNS4yNiAxMS41MiAxMzcuNDMgMTEuNTIgMTM3LjQzIDE1LjMzIDEyNS4yNiAxNS4zMyAxMjUuMjYgMjEuODUgMTM5LjE3IDIxLjg1IDEzOS4xNyAyNS42NyAxMjEgMjUuNjcgMTIxIDEuMzkiPjwvcG9seWdvbj4KICAgICAgICAgICAgPC9nPgogICAgICAgICAgICA8cGF0aCBkPSJNMjEuNjYsMzkuOTkgQzQxLjI2LDkuNDIgODAuNSwtMS4yNSAxMTMuMjMsMTMuNDQgQzExMi41MSwxMi45NCAxMTEuNzgsMTIuNDMgMTExLjAzLDExLjk1IEM3Ny41MiwtOS41NCAzMi45OCwwLjExIDExLjU2LDMzLjUyIEMtOS44Nyw2Ni45MiAtMC4wNiwxMTEuNDMgMzMuNDUsMTMyLjkyIEMzNC4yLDEzMy40IDM0Ljk2LDEzMy44NSAzNS43MiwxMzQuMyBDOC43MywxMTAuNjggMi4wNiw3MC41NiAyMS42NiwzOS45OSIgaWQ9IlBhdGgiIGZpbGw9IiNGNzhEMkMiPjwvcGF0aD4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==" alt="Eclipse Incubator Logo"/></a></section><style data-emotion-css="1mjb60s">.css-1mjb60s{height:2px;background-color:var(--theme-ui-colors-secondary,#5DA7A3);width:100%;margin-top:16px;margin-bottom:16px;}</style><div class="css-1mjb60s"></div><style data-emotion-css="6gs9hh">.css-6gs9hh{width:70%;}</style><nav class="css-6gs9hh"><style data-emotion-css="1rx6mfb">.css-1rx6mfb{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}@media screen and (min-width:560px){.css-1rx6mfb{-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;}}@media screen and (min-width:1000px){.css-1rx6mfb{-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;}}@media screen and (min-width:1366px){.css-1rx6mfb{-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;}}.css-1rx6mfb li{padding:0.4rem;font-size:0.9rem;list-style-type:none;padding-left:1rem;color:white;}@media screen and (min-width:560px){.css-1rx6mfb li{font-size:0.7rem;}}@media screen and (min-width:1000px){.css-1rx6mfb li{font-size:1rem;}}@media screen and (min-width:1366px){.css-1rx6mfb li{font-size:1rem;}}.css-1rx6mfb a{color:white;-webkit-text-decoration:none;text-decoration:none;}.css-1rx6mfb a:hover{color:var(--theme-ui-colors-links,#5DA7A3);}</style><ul class="css-1rx6mfb"><style data-emotion-css="1lir2xx">.css-1lir2xx{padding-left:1rem;}@media screen and (min-width:560px){.css-1lir2xx{padding-left:0rem !important;}}@media screen and (min-width:1000px){.css-1lir2xx{padding-left:0.5rem !important;}}@media screen and (min-width:1366px){.css-1lir2xx{padding-left:0.5 !important;}}</style><li class="css-1lir2xx"><a href="https://www.eclipse.org/" rel="noopener noreferrer" target="_blank" class="css-14i0930">Eclipse Foundation Website </a></li><li><a href="https://www.eclipse.org/legal/privacy.php" rel="noopener noreferrer" target="_blank" class="css-14i0930">Privacy Policy</a></li><li><a href="https://www.eclipse.org/legal/termsofuse.php" rel="noopener noreferrer" target="_blank" class="css-14i0930">Terms of Use</a></li><li><a href="https://www.eclipse.org/legal/copyright.php" rel="noopener noreferrer" target="_blank" class="css-14i0930">Copyright Agent</a></li><li><a href="https://www.eclipse.org/legal/" rel="noopener noreferrer" target="_blank" class="css-14i0930">Legal</a></li></ul></nav><style data-emotion-css="15pdxr9">.css-15pdxr9{display:inline;-webkit-flex:30%;-ms-flex:30%;flex:30%;}@media screen and (min-width:560px){.css-15pdxr9{display:inline;}}@media screen and (min-width:1000px){.css-15pdxr9{display:block;}}@media screen and (min-width:1366px){.css-15pdxr9{display:block;}}</style><nav class="css-15pdxr9"><style data-emotion-css="1q18ssc">.css-1q18ssc{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;list-style:none;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;}.css-1q18ssc li{padding:8px;margin-left:8px;margin-right:8px;}.css-1q18ssc li a{color:white;-webkit-text-decoration:none;text-decoration:none;}.css-1q18ssc li a:hover{color:var(--theme-ui-colors-links,#5DA7A3);}.css-1q18ssc li:first-of-type{margin-left:0;}.css-1q18ssc li:last-child{margin-right:0;padding-right:0;}@media screen and (min-width:560px){.css-1q18ssc{-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end;}}@media screen and (min-width:1000px){.css-1q18ssc{-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end;}}@media screen and (min-width:1366px){.css-1q18ssc{-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end;}}</style><ul class="css-1q18ssc"><li><a href="https://twitter.com/openj9/" rel="noopener noreferrer" target="_blank"> <img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIyNXB4IiB2aWV3Qm94PSIwIDAgMjUgMjUiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5Ud2l0dGVyPC90aXRsZT4KICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPgogICAgPGcgaWQ9IlBhZ2UtMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9IlR3aXR0ZXIiIGZpbGwtcnVsZT0ibm9uemVybyI+CiAgICAgICAgICAgIDxnIGlkPSJ0d2l0dGVyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjAwMDAwMCwgMC4yOTg4NzkpIj4KICAgICAgICAgICAgICAgIDxlbGxpcHNlIGlkPSJPdmFsLXBhdGgiIGZpbGw9IiM0MzQzNDMiIGN4PSIxMi41MDAyMjEyIiBjeT0iMTIuMjcyNzI3MyIgcng9IjEyLjUiIHJ5PSIxMi4yNzI3MjczIj48L2VsbGlwc2U+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTIuNTAwMjIxMiwwIEMxOS40MDM3ODA2LDAgMjUuMDAwMjIxMiw1LjQ5NDY4NzE2IDI1LjAwMDIyMTIsMTIuMjcyNzI3MyBDMjUuMDAwMjIxMiwxOS4wNTA3Njc0IDE5LjQwMzc4MDYsMjQuNTQ1NDU0NSAxMi41MDAyMjEyLDI0LjU0NTQ1NDUgQzUuNTk2NjYxODcsMjQuNTQ1NDU0NSAwLjAwMDIyMTIzODkzOCwxOS4wNTA3Njc0IDAuMDAwMjIxMjM4OTM4LDEyLjI3MjcyNzMgQzAuMDAwMjIxMjM4OTM4LDUuNDk0Njg3MTYgNS41OTY2NjE4NywwIDEyLjUwMDIyMTIsMCBaIE0xNS4xMDM0MzMzLDYuODE4MTgxODIgQzEzLjQ2NTM4MDIsNi44MTgxODE4MiAxMi4xMzY4NDA0LDguMDkyMTI0MTEgMTIuMTM2ODQwNCw5LjY2Mjg1OTk2IEMxMi4xMzY4NDA0LDkuODg1ODI2MzggMTIuMTYzMTY3OCwxMC4xMDI4NTI3IDEyLjIxNDA1MjgsMTAuMzExMTgxIEM5Ljc0ODU2NjA0LDEwLjE5MjU5MDggNy41NjI1MDQxLDkuMDYwMTUwNTQgNi4wOTkyMjk3Niw3LjMzODU3ODIzIEM1Ljg0MzkyMDAzLDcuNzU4NjI5MTUgNS42OTc0NTk4NSw4LjI0NzYyNzgxIDUuNjk3NDU5ODUsOC43Njg4NzI4MSBDNS42OTc0NTk4NSw5Ljc1NTU2ODE3IDYuMjIxNTc0ODksMTAuNjI2NjQzNCA3LjAxNzE1MDExLDExLjEzNjY0NDcgQzYuNTMxMDg4MTcsMTEuMTIyMDA2NSA2LjA3MzM0NDgsMTAuOTk0MDgxOSA1LjY3MzU2NjA0LDEwLjc4MDQ1IEw1LjY3MzM0NDgsMTAuODE2NTE0OSBMNS42NzMzNDQ4LDEwLjgxNjUxNDkgQzUuNjczMzQ0OCwxMi4xOTQ4MzM1IDYuNjk2MzUzNjUsMTMuMzQ0NDU3NyA4LjA1MzIxMjA2LDEzLjYwNTYxMDYgQzcuODA0NTM5NSwxMy42NzA5NTE5IDcuNTQxOTI4ODgsMTMuNzA1NTMxOCA3LjI3MTc5NjEzLDEzLjcwNTUzMTggQzcuMDgwMjAzMjEsMTMuNzA1NTMxOCA2Ljg5NDU4Mzc0LDEzLjY4NzkyMzYgNi43MTM2MTAyOSwxMy42NTQ4Mjg3IEM3LjA5MTA0MzkyLDE0Ljc4NDcyMzIgOC4xODYzOTc5LDE1LjYwNzIxNjkgOS40ODQ4NDkyMywxNS42MzAzNDA5IEM4LjQ2OTM2MjUsMTYuMzkzNDMzNCA3LjE5MDM4MDIsMTYuODQ4MDY0MiA1LjgwMDExNDcyLDE2Ljg0ODA2NDIgQzUuNTYxMTc2NjYsMTYuODQ4MDY0MiA1LjMyNDQ1MSwxNi44MzQ2OTkgNS4wOTI4MTM4MywxNi44MDgxODA2IEM2LjQwNDk4MTk3LDE3LjYxNTYxMTggNy45NjQ3MTY0OSwxOC4wODYzNjU4IDkuNjM5OTM3NzMsMTguMDg2MzY1OCBDMTUuMDk2NTc0OSwxOC4wODYzNjU4IDE4LjA4MDY0NTcsMTMuNzUxNzc5OCAxOC4wODA2NDU3LDkuOTkyMzI0MTQgQzE4LjA4MDY0NTcsOS44NjkwNjY3NyAxOC4wNzc3Njk2LDkuNzQ2MjMzNyAxOC4wNzIwMTc0LDkuNjI0NDYxMzcgQzE4LjY1MjEwNTksOS4yMjM1MDM2OCAxOS4xNTQ5ODIsOC43MjI2MjQ3OCAxOS41NTI1NDgzLDguMTUyMTYxNjkgQzE5LjAyMDY4OTksOC4zNzgzMTAzMiAxOC40NDg1NjYsOC41MzEyNjgyNSAxNy44NDg1NjYsOC41OTk1Nzk1NiBDMTguNDYxMTc2Nyw4LjI0NzYyNzgxIDE4LjkzMTMwOTQsNy42OTA3NDIxMyAxOS4xNTMyMTIxLDcuMDI2MDg1ODEgQzE4LjU3OTk4Miw3LjM1MjE1NTYzIDE3Ljk0NDgwNSw3LjU4ODY5OTQ2IDE3LjI2OTM2MjUsNy43MTYxOTk3NiBDMTYuNzI4MjEyMSw3LjE2MzU1NzAyIDE1Ljk1NzE5NDQsNi44MTgxODE4MiAxNS4xMDM0MzMzLDYuODE4MTgxODIgWiIgaWQ9IkNvbWJpbmVkLVNoYXBlIiBmaWxsPSIjRkZGRkZGIj48L3BhdGg+CiAgICAgICAgICAgIDwvZz4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==" alt="Twitter Logo"/></a></li><li><a href="https://github.com/eclipse/openj9" rel="noopener noreferrer" target="_blank"> <img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIyNXB4IiB2aWV3Qm94PSIwIDAgMjUgMjUiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5HaXRIdWI8L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0iR2l0SHViIiBmaWxsPSIjRkZGRkZGIiBmaWxsLXJ1bGU9Im5vbnplcm8iPgogICAgICAgICAgICA8ZyBpZD0iZ2l0aHViLWxvZ28iPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTIzLjMyMzIwOSw2LjM1NjM4NTg4IEMyMi4yMDU0MjQzLDQuNDI4ODY0OTMgMjAuNjg5MjIwNywyLjkwMjg0MzkxIDE4Ljc3NDE5OTMsMS43Nzc5Nzg1OCBDMTYuODU4ODkyOCwwLjY1MzA1NTg3MyAxNC43Njc5NDkxLDAuMDkwNzM3OTUzMyAxMi40OTk4ODYsMC4wOTA3Mzc5NTMzIEMxMC4yMzIxMDc5LDAuMDkwNzM3OTUzMyA4LjE0MDQ4MDEzLDAuNjUzMjI3OTkzIDYuMjI1NTcyNjksMS43Nzc5Nzg1OCBDNC4zMTAzODAyMSwyLjkwMjc4NjU0IDIuNzk0MjMzNjcsNC40Mjg4NjQ5MyAxLjY3NjQ0ODk5LDYuMzU2Mzg1ODggQzAuNTU4ODM1MzMzLDguMjgzODQ5NDUgMCwxMC4zODg2NTQ2IDAsMTIuNjcwNzQzOSBDMCwxNS40MTIwNTEgMC43OTQ2NzE0ODMsMTcuODc3MTA0NSAyLjM4NDQxMzQ5LDIwLjA2NjUzNTUgQzMuOTczOTg0NDksMjIuMjU2MTM4OCA2LjAyNzQ3NDg4LDIzLjc3MTI1ODggOC41NDQ3MTM2NywyNC42MTIwNjc4IEM4LjgzNzcyNzQsMjQuNjY2ODAyMiA5LjA1NDYzNzM3LDI0LjYyODMwNDUgOS4xOTU2NzE2MSwyNC40OTc1NTAzIEM5LjMzNjc2Mjg1LDI0LjM2NjYyMzkgOS40MDcyMjI5NiwyNC4yMDI2NTAzIDkuNDA3MjIyOTYsMjQuMDA2MzE4MSBDOS40MDcyMjI5NiwyMy45NzM1NTc5IDkuNDA0NDI5NjQsMjMuNjc4ODMwMSA5LjM5OTAxNDAxLDIzLjEyMTc5MDUgQzkuMzkzNDI3MzcsMjIuNTY0NzUxIDkuMzkwODA1MDcsMjIuMDc4Nzk3MiA5LjM5MDgwNTA3LDIxLjY2NDE1ODcgTDkuMDE2NDQyOTcsMjEuNzI5MzM1MSBDOC43Nzc3NTY1LDIxLjc3MzM0MDUgOC40NzY2NDc4MywyMS43OTE5ODY5IDguMTEzMTE2OTgsMjEuNzg2NzA4NiBDNy43NDk3NTcxNSwyMS43ODE2MDIzIDcuMzcyNTQ0NzMsMjEuNzQzMjc2OCA2Ljk4MTk5Mjc3LDIxLjY3MjAxODkgQzYuNTkxMjY5NzksMjEuNjAxMzkyMSA2LjIyNzg1Mjk1LDIxLjQzNzU5MDcgNS44OTE0NTcyMiwyMS4xODA5NTg5IEM1LjU1NTIzMjUyLDIwLjkyNDMyNzEgNS4zMTY1NDYwNCwyMC41ODg0MDUxIDUuMTc1NDU0OCwyMC4xNzM3MDkzIEw1LjAxMjcwMTA2LDE5Ljc5Njc2NTIgQzQuOTA0MjE3NTcsMTkuNTQ1ODEzNCA0LjczMzQyNTkxLDE5LjI2NzAzNTUgNC41MDAwOTgwNSwxOC45NjE0NjQxIEM0LjI2Njc3MDE5LDE4LjY1NTYwNTggNC4wMzA4MjAwMywxOC40NDgyNTc5IDMuNzkyMTMzNTUsMTguMzM5MDc2MSBMMy42NzgxNzc0MywxOC4yNTY5NzQ2IEMzLjYwMjI0NDY5LDE4LjIwMjQxMjMgMy41MzE3ODQ1OCwxOC4xMzY2MDQ5IDMuNDY2NjI2MDgsMTguMDYwMjQwOCBDMy40MDE1MjQ1OCwxNy45ODM4NzY2IDMuMzUyNzgzOTcsMTcuOTA3NDU1MSAzLjMyMDIzMzIzLDE3LjgzMDkxODggQzMuMjg3NjI1NDcsMTcuNzU0MzI1MSAzLjMxNDY0NjU4LDE3LjY5MTUwMTEgMy40MDE1ODE1OSwxNy42NDIyMTcyIEMzLjQ4ODUxNjYsMTcuNTkyOTMzNCAzLjY0NTYyNjY4LDE3LjU2OTAwODYgMy44NzM1OTU5MywxNy41NjkwMDg2IEw0LjE5ODk4OTM5LDE3LjYxNzk0ODIgQzQuNDE2MDEzMzcsMTcuNjYxNzI0MiA0LjY4NDQ1NzI3LDE3Ljc5MjQ3ODUgNS4wMDQ2NjMxNCwxOC4wMTEwMTQzIEM1LjMyNDY5Nzk4LDE4LjIyOTM3NzkgNS41ODc3ODMyNywxOC41MTMyNjIxIDUuNzkzOTc2LDE4Ljg2MjU1MjEgQzYuMDQzNjY0NzUsMTkuMzEwNDA5OSA2LjM0NDQ4ODM4LDE5LjY1MTY2NzYgNi42OTczMDE5OSwxOS44ODY0OTc0IEM3LjA0OTgzMDU4LDIwLjEyMTMyNzMgNy40MDUyNjY0OSwyMC4yMzg1NDE0IDcuNzYzMjY3NzEsMjAuMjM4NTQxNCBDOC4xMjEyNjg5MiwyMC4yMzg1NDE0IDguNDMwNDcyNTIsMjAuMjExMjMxNiA4LjY5MDk5MjUxLDIwLjE1Njg5ODkgQzguOTUxMjI3NDcsMjAuMTAyMjc5MyA5LjE5NTM4NjU3LDIwLjAyMDE3NzcgOS40MjMzNTU4MiwxOS45MTEwNTMzIEM5LjUyMTAwODA2LDE5LjE3OTA4MTkgOS43ODY4ODY2NywxOC42MTY3NjM5IDEwLjIyMDc2MzYsMTguMjIzNjk3OSBDOS42MDIzNTY0MiwxOC4xNTgyOTIxIDkuMDQ2MzcxNDIsMTguMDU5NzgxOCA4LjU1MjUyMzU3LDE3LjkyODc5OCBDOC4wNTg5NjA3NSwxNy43OTc2NDIxIDcuNTQ4OTIzMDMsMTcuNTg0Nzg2MyA3LjAyMjc1MjQ2LDE3LjI4OTY1NjkgQzYuNDk2Mjk2ODUsMTYuOTk0OTI5MSA2LjA1OTU2OTU4LDE2LjYyODk0MzQgNS43MTI0NTY2MiwxNi4xOTIzMzA5IEM1LjM2NTI4NjY1LDE1Ljc1NTQ4ODkgNS4wODAzNjc4NSwxNS4xODE5ODMxIDQuODU4MDk5MjYsMTQuNDcyMzMgQzQuNjM1NzE2NjYsMTMuNzYyMzkgNC41MjQ0OTY4NiwxMi45NDM0NDAzIDQuNTI0NDk2ODYsMTIuMDE1MjUxNCBDNC41MjQ0OTY4NiwxMC42OTM2NTIzIDQuOTUzMTg2MjEsOS41NjkwMTY0MiA1LjgxMDM5Mzg5LDguNjQwNzEyNzggQzUuNDA4ODM5NjcsNy42NDcxMTgwNyA1LjQ0Njc0OTAzLDYuNTMzMjY4NDYgNS45MjQyMzYsNS4yOTkyNzg2OCBDNi4yMzg5MTIyMiw1LjIwMDg4MzA4IDYuNzA1NTY3OTQsNS4yNzQ3MjI4MSA3LjMyMzk3NTE0LDUuNTIwMzM4ODcgQzcuOTQyNDk2MzQsNS43NjYwNjk2OCA4LjM5NTM1NjQ3LDUuOTc2NTczMTQgOC42ODMwMTE1OSw2LjE1MTEwMzQxIEM4Ljk3MDY2NjcsNi4zMjU1NzYzIDkuMjAxMTQ0MjQsNi40NzM0Mjc4NyA5LjM3NDc4NjIzLDYuNTkzMzM4NTQgQzEwLjM4NDA4NzQsNi4zMDk1MTE3MSAxMS40MjU2NTQzLDYuMTY3NTY5NjEgMTIuNDk5NzcyLDYuMTY3NTY5NjEgQzEzLjU3Mzg4OTYsNi4xNjc1Njk2MSAxNC42MTU2ODQ2LDYuMzA5NTExNzEgMTUuNjI1MDQyOCw2LjU5MzMzODU0IEwxNi4yNDM1MDcsNi4yMDAzODcyNiBDMTYuNjY2NDM4Niw1LjkzODE5MDI1IDE3LjE2NTg3MzEsNS42OTc5MDk5MyAxNy43NDA2MTMzLDUuNDc5NDg4OTIgQzE4LjMxNTY5NTUsNS4yNjExODI2NiAxOC43NTU0NDQxLDUuMjAxMDU1MiAxOS4wNTk0MDMxLDUuMjk5NDUwOCBDMTkuNTQ3NDkzMyw2LjUzMzQ5Nzk1IDE5LjU5MDk4OTMsNy42NDcyOTAxOSAxOS4xODkzMjExLDguNjQwODg0OSBDMjAuMDQ2NDcxNyw5LjU2OTE4ODU0IDIwLjQ3NTMzMjEsMTAuNjk0MTExMiAyMC40NzUzMzIxLDEyLjAxNTQyMzUgQzIwLjQ3NTMzMjEsMTIuOTQzNjEyNCAyMC4zNjM3MTMzLDEzLjc2NTE0MzkgMjAuMTQxNjcyNywxNC40ODA1MzQ0IEMxOS45MTkzNDcxLDE1LjE5NjAzOTYgMTkuNjMxOTc3LDE1Ljc2ODk3MTcgMTkuMjc5NDQ4NSwxNi4yMDA1MzUzIEMxOC45MjY1MjA4LDE2LjYzMjA0MTYgMTguNDg3MDAwMiwxNi45OTUxNTg2IDE3Ljk2MDgyOTcsMTcuMjg5ODI5MSBDMTcuNDM0NTQ1MSwxNy41ODQ3MjkgMTYuOTI0MzM2MywxNy43OTc1ODQ4IDE2LjQzMDc3MzUsMTcuOTI4NzQwNiBDMTUuOTM2OTgyNywxOC4wNTk4OTY1IDE1LjM4MDk5NzcsMTguMTU4NDY0MiAxNC43NjI1OTA1LDE4LjIyMzk4NDggQzE1LjMyNjYxMzQsMTguNzE1MjE2OSAxNS42MDg2ODE5LDE5LjQ5MDYyMDEgMTUuNjA4NjgxOSwyMC41NDk4NTAxIEwxNS42MDg2ODE5LDI0LjAwNTg1OTIgQzE1LjYwODY4MTksMjQuMjAyMTkxNCAxNS42NzY1MTk3LDI0LjM2NjEwNzUgMTUuODEyMzA5MywyNC40OTcwOTEzIEMxNS45NDc5Mjc5LDI0LjYyNzg0NTUgMTYuMTYyMTAxNiwyNC42NjYzNDMyIDE2LjQ1NTExNTMsMjQuNjExNTUxNSBDMTguOTcyNjk2MSwyMy43NzA4NTcyIDIxLjAyNjE4NjUsMjIuMjU1Njc5OCAyMi42MTU3MDA1LDIwLjA2NjA3NjYgQzI0LjIwNTA0MzUsMTcuODc2NjQ1NSAyNSwxNS40MTE1OTIgMjUsMTIuNjcwMjg0OSBDMjQuOTk5NDI5OSwxMC4zODg0ODI1IDI0LjQ0MDMwOTYsOC4yODM4NDk0NSAyMy4zMjMyMDksNi4zNTYzODU4OCBaIiBpZD0iU2hhcGUiPjwvcGF0aD4KICAgICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+" alt="GitHub Logo"/></a></li><li><a href="https://openj9.slack.com/" rel="noopener noreferrer" target="_blank"><img src="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIyNXB4IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgogPCEtLSBDcmVhdGVkIHdpdGggTWV0aG9kIERyYXcgLSBodHRwOi8vZ2l0aHViLmNvbS9kdW9waXhlbC9NZXRob2QtRHJhdy8gLS0+CgogPGc+CiAgPHRpdGxlPmJhY2tncm91bmQ8L3RpdGxlPgogIDxyZWN0IGZpbGw9Im5vbmUiIGlkPSJjYW52YXNfYmFja2dyb3VuZCIgaGVpZ2h0PSIyNiIgd2lkdGg9IjI2IiB5PSItMSIgeD0iLTEiLz4KICA8ZyBkaXNwbGF5PSJub25lIiBvdmVyZmxvdz0idmlzaWJsZSIgeT0iMCIgeD0iMCIgaGVpZ2h0PSIxMDAlIiB3aWR0aD0iMTAwJSIgaWQ9ImNhbnZhc0dyaWQiPgogICA8cmVjdCBmaWxsPSJ1cmwoI2dyaWRwYXR0ZXJuKSIgc3Ryb2tlLXdpZHRoPSIwIiB5PSIxIiB4PSIxIiBoZWlnaHQ9IjIyIiB3aWR0aD0iMjIiLz4KICA8L2c+CiA8L2c+CiA8Zz4KICA8dGl0bGU+TGF5ZXIgMTwvdGl0bGU+CiAgPGVsbGlwc2Ugcnk9IjExIiByeD0iMTEiIGlkPSJzdmdfMSIgY3k9IjEyIiBjeD0iMTIiIHN0cm9rZT0iI0ZGRiIgZmlsbD0iI0ZGRkZGRiIvPgogIDxzdHlsZSB0cmFuc2Zvcm09Im1hdHJpeCgwLjA2NTE4MjQ5NTU3MzI1MzYyLDAsMCwwLjA2NTE4MjQ5NTU3MzI1MzYyLDAsMCkgIiB0eXBlPSJ0ZXh0L2NzcyI+LnN0MHtmaWxsOiM0MzQzNDM7fTwvc3R5bGU+CiAgPGcgc3Ryb2tlPSJudWxsIiBpZD0ic3ZnXzE5Ij4KICAgPGcgc3Ryb2tlPSJudWxsIiB0cmFuc2Zvcm09Im1hdHJpeCgwLjEzMDE1NTgwODUxODA5NDg2LDAsMCwwLjEzMDE1NTgwODUxODA5NDg2LC02Ljg0OTAwNjQ1MDQwNTQ5OSwtNi44MzE1MDczOTEwMjE5MjQpICIgaWQ9InN2Z182Ij4KICAgIDxnIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z183Ij4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfOCIgZD0ibTExMC4yOTgyOTIsMTYxLjI5MzAxMWMwLDcuMSAtNS44LDEyLjkgLTEyLjksMTIuOXMtMTIuOSwtNS44IC0xMi45LC0xMi45YzAsLTcuMSA1LjgsLTEyLjkgMTIuOSwtMTIuOWwxMi45LDBsMCwxMi45eiIgY2xhc3M9InN0MCIvPgogICAgIDxwYXRoIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z185IiBkPSJtMTE2Ljc5ODI5MiwxNjEuMjkzMDExYzAsLTcuMSA1LjgsLTEyLjkgMTIuOSwtMTIuOXMxMi45LDUuOCAxMi45LDEyLjlsMCwzMi4zYzAsNy4xIC01LjgsMTIuOSAtMTIuOSwxMi45cy0xMi45LC01LjggLTEyLjksLTEyLjljMCwwIDAsLTMyLjMgMCwtMzIuM3oiIGNsYXNzPSJzdDAiLz4KICAgIDwvZz4KICAgIDxnIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z18xMCI+CiAgICAgPHBhdGggc3Ryb2tlPSJudWxsIiBpZD0ic3ZnXzExIiBkPSJtMTI5LjY5ODI5MiwxMDkuNDkzMDExYy03LjEsMCAtMTIuOSwtNS44IC0xMi45LC0xMi45czUuOCwtMTIuOSAxMi45LC0xMi45czEyLjksNS44IDEyLjksMTIuOWwwLDEyLjlsLTEyLjksMHoiIGNsYXNzPSJzdDAiLz4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTIiIGQ9Im0xMjkuNjk4MjkyLDExNS45OTMwMTFjNy4xLDAgMTIuOSw1LjggMTIuOSwxMi45cy01LjgsMTIuOSAtMTIuOSwxMi45bC0zMi4zLDBjLTcuMSwwIC0xMi45LC01LjggLTEyLjksLTEyLjlzNS44LC0xMi45IDEyLjksLTEyLjljMCwwIDMyLjMsMCAzMi4zLDB6IiBjbGFzcz0ic3QwIi8+CiAgICA8L2c+CiAgICA8ZyBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTMiPgogICAgIDxwYXRoIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z18xNCIgZD0ibTE4MS40OTgyOTIsMTI4Ljg5MzAxMWMwLC03LjEgNS44LC0xMi45IDEyLjksLTEyLjljNy4xLDAgMTIuOSw1LjggMTIuOSwxMi45cy01LjgsMTIuOSAtMTIuOSwxMi45bC0xMi45LDBsMCwtMTIuOXoiIGNsYXNzPSJzdDAiLz4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTUiIGQ9Im0xNzQuOTk4MjkyLDEyOC44OTMwMTFjMCw3LjEgLTUuOCwxMi45IC0xMi45LDEyLjljLTcuMSwwIC0xMi45LC01LjggLTEyLjksLTEyLjlsMCwtMzIuM2MwLC03LjEgNS44LC0xMi45IDEyLjksLTEyLjljNy4xLDAgMTIuOSw1LjggMTIuOSwxMi45bDAsMzIuM3oiIGNsYXNzPSJzdDAiLz4KICAgIDwvZz4KICAgIDxnIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z18xNiI+CiAgICAgPHBhdGggc3Ryb2tlPSJudWxsIiBpZD0ic3ZnXzE3IiBkPSJtMTYyLjA5ODI5MiwxODAuNjkzMDExYzcuMSwwIDEyLjksNS44IDEyLjksMTIuOWMwLDcuMSAtNS44LDEyLjkgLTEyLjksMTIuOWMtNy4xLDAgLTEyLjksLTUuOCAtMTIuOSwtMTIuOWwwLC0xMi45bDEyLjksMHoiIGNsYXNzPSJzdDAiLz4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTgiIGQ9Im0xNjIuMDk4MjkyLDE3NC4xOTMwMTFjLTcuMSwwIC0xMi45LC01LjggLTEyLjksLTEyLjljMCwtNy4xIDUuOCwtMTIuOSAxMi45LC0xMi45bDMyLjMsMGM3LjEsMCAxMi45LDUuOCAxMi45LDEyLjljMCw3LjEgLTUuOCwxMi45IC0xMi45LDEyLjlsLTMyLjMsMHoiIGNsYXNzPSJzdDAiLz4KICAgIDwvZz4KICAgPC9nPgogIDwvZz4KIDwvZz4KPC9zdmc+" alt="Slack logo"/></a></li><li><a href="https://stackoverflow.com/search?q=%23OpenJ9" rel="noopener noreferrer" target="_blank"><img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjRweCIgaGVpZ2h0PSIyNHB4IiB2aWV3Qm94PSIwIDAgNjUgNzAiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5zdGFja292ZXJmbG93LWxvZ288L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0iI0ZGRkZGRiIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0ic3RhY2tvdmVyZmxvdy1sb2dvIiBmaWxsLXJ1bGU9Im5vbnplcm8iPgogICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgZmlsbD0iI0ZGRkZGRiIgcG9pbnRzPSI1NC4yNDE3MjY2IDYzLjc3MDIyNjUgNTQuMjQxNzI2NiA0NSA2MSA0NSA2MSA3MCAwIDcwIDAgNDUgNi43NTgyNzMzOCA0NSA2Ljc1ODI3MzM4IDYzLjc3MDIyNjUiPjwvcG9seWdvbj4KICAgICAgICAgICAgPHBhdGggZD0iTTE0LjcwNzEwNTcsNDMuNjQyNzU2NyBMNDguMTE3ODUxLDUwLjA4NzIwMTEgTDQ5LjUzMjA2MjQsNDMuODg3NDgyNCBMMTYuMTIxMzE3MiwzNy40NDMwMzggTDE0LjcwNzEwNTcsNDMuNjQyNzU2NyBMMTQuNzA3MTA1Nyw0My42NDI3NTY3IFogTTE5LjEyNjUxNjUsMjguOTU5MjEyNCBMNTAuMDYyMzkxNyw0Mi4yNTU5Nzc1IEw1Mi44OTA4MTQ2LDM2LjU0NTcxMDMgTDIxLjk1NDkzOTMsMjMuMTY3MzY5OSBMMTkuMTI2NTE2NSwyOC45NTkyMTI0IFogTTI3LjcwMDE3MzMsMTQuOTI4MjcgTDUzLjk1MTQ3MzEsMzUuMDc3MzU1OCBMNTguMjgyNDk1NywzMC4yNjQ0MTYzIEwzMi4wMzExOTU4LDEwLjExNTMzMDUgTDI3LjcwMDE3MzMsMTQuOTI4MjcgTDI3LjcwMDE3MzMsMTQuOTI4MjcgWiBNNDQuNjcwNzEwNiwwIEwzOS4xOTA2NDEyLDMuNzUyNDYxMzIgTDU5LjUxOTkzMDcsMjkuMDQwNzg3NiBMNjUsMjUuMjg4MzI2MyBMNDQuNjcwNzEwNiwwIFogTTE0LDU4IEw0OC4xMTc4NTEsNTggTDQ4LjExNzg1MSw1MS43MTg3MDYgTDE0LDUxLjcxODcwNiBMMTQsNTggWiIgaWQ9IlNoYXBlIiBmaWxsPSIjRkZGRkZGIj48L3BhdGg+CiAgICAgICAgPC9nPgogICAgPC9nPgo8L3N2Zz4KCgo=" alt="Stack Overflow logo"/></a></li></ul></nav></footer></div></div><script>
+ */.fa,.fab,.fad,.fal,.far,.fas{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-.0667em}.fa-xs{font-size:.75em}.fa-sm{font-size:.875em}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:2.5em;padding-left:0}.fa-ul>li{position:relative}.fa-li{left:-2em;position:absolute;text-align:center;width:2em;line-height:inherit}.fa-border{border:.08em solid #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.fab.fa-pull-left,.fal.fa-pull-left,.far.fa-pull-left,.fas.fa-pull-left{margin-right:.3em}.fa.fa-pull-right,.fab.fa-pull-right,.fal.fa-pull-right,.far.fa-pull-right,.fas.fa-pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s linear infinite;animation:fa-spin 2s linear infinite}.fa-pulse{-webkit-animation:fa-spin 1s steps(8) infinite;animation:fa-spin 1s steps(8) infinite}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scaleX(-1);transform:scaleX(-1)}.fa-flip-vertical{-webkit-transform:scaleY(-1);transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical,.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{-webkit-transform:scale(-1);transform:scale(-1)}:root .fa-flip-both,:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270{-webkit-filter:none;filter:none}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-500px:before{content:"\F26E"}.fa-accessible-icon:before{content:"\F368"}.fa-accusoft:before{content:"\F369"}.fa-acquisitions-incorporated:before{content:"\F6AF"}.fa-ad:before{content:"\F641"}.fa-address-book:before{content:"\F2B9"}.fa-address-card:before{content:"\F2BB"}.fa-adjust:before{content:"\F042"}.fa-adn:before{content:"\F170"}.fa-adobe:before{content:"\F778"}.fa-adversal:before{content:"\F36A"}.fa-affiliatetheme:before{content:"\F36B"}.fa-air-freshener:before{content:"\F5D0"}.fa-airbnb:before{content:"\F834"}.fa-algolia:before{content:"\F36C"}.fa-align-center:before{content:"\F037"}.fa-align-justify:before{content:"\F039"}.fa-align-left:before{content:"\F036"}.fa-align-right:before{content:"\F038"}.fa-alipay:before{content:"\F642"}.fa-allergies:before{content:"\F461"}.fa-amazon:before{content:"\F270"}.fa-amazon-pay:before{content:"\F42C"}.fa-ambulance:before{content:"\F0F9"}.fa-american-sign-language-interpreting:before{content:"\F2A3"}.fa-amilia:before{content:"\F36D"}.fa-anchor:before{content:"\F13D"}.fa-android:before{content:"\F17B"}.fa-angellist:before{content:"\F209"}.fa-angle-double-down:before{content:"\F103"}.fa-angle-double-left:before{content:"\F100"}.fa-angle-double-right:before{content:"\F101"}.fa-angle-double-up:before{content:"\F102"}.fa-angle-down:before{content:"\F107"}.fa-angle-left:before{content:"\F104"}.fa-angle-right:before{content:"\F105"}.fa-angle-up:before{content:"\F106"}.fa-angry:before{content:"\F556"}.fa-angrycreative:before{content:"\F36E"}.fa-angular:before{content:"\F420"}.fa-ankh:before{content:"\F644"}.fa-app-store:before{content:"\F36F"}.fa-app-store-ios:before{content:"\F370"}.fa-apper:before{content:"\F371"}.fa-apple:before{content:"\F179"}.fa-apple-alt:before{content:"\F5D1"}.fa-apple-pay:before{content:"\F415"}.fa-archive:before{content:"\F187"}.fa-archway:before{content:"\F557"}.fa-arrow-alt-circle-down:before{content:"\F358"}.fa-arrow-alt-circle-left:before{content:"\F359"}.fa-arrow-alt-circle-right:before{content:"\F35A"}.fa-arrow-alt-circle-up:before{content:"\F35B"}.fa-arrow-circle-down:before{content:"\F0AB"}.fa-arrow-circle-left:before{content:"\F0A8"}.fa-arrow-circle-right:before{content:"\F0A9"}.fa-arrow-circle-up:before{content:"\F0AA"}.fa-arrow-down:before{content:"\F063"}.fa-arrow-left:before{content:"\F060"}.fa-arrow-right:before{content:"\F061"}.fa-arrow-up:before{content:"\F062"}.fa-arrows-alt:before{content:"\F0B2"}.fa-arrows-alt-h:before{content:"\F337"}.fa-arrows-alt-v:before{content:"\F338"}.fa-artstation:before{content:"\F77A"}.fa-assistive-listening-systems:before{content:"\F2A2"}.fa-asterisk:before{content:"\F069"}.fa-asymmetrik:before{content:"\F372"}.fa-at:before{content:"\F1FA"}.fa-atlas:before{content:"\F558"}.fa-atlassian:before{content:"\F77B"}.fa-atom:before{content:"\F5D2"}.fa-audible:before{content:"\F373"}.fa-audio-description:before{content:"\F29E"}.fa-autoprefixer:before{content:"\F41C"}.fa-avianex:before{content:"\F374"}.fa-aviato:before{content:"\F421"}.fa-award:before{content:"\F559"}.fa-aws:before{content:"\F375"}.fa-baby:before{content:"\F77C"}.fa-baby-carriage:before{content:"\F77D"}.fa-backspace:before{content:"\F55A"}.fa-backward:before{content:"\F04A"}.fa-bacon:before{content:"\F7E5"}.fa-bahai:before{content:"\F666"}.fa-balance-scale:before{content:"\F24E"}.fa-balance-scale-left:before{content:"\F515"}.fa-balance-scale-right:before{content:"\F516"}.fa-ban:before{content:"\F05E"}.fa-band-aid:before{content:"\F462"}.fa-bandcamp:before{content:"\F2D5"}.fa-barcode:before{content:"\F02A"}.fa-bars:before{content:"\F0C9"}.fa-baseball-ball:before{content:"\F433"}.fa-basketball-ball:before{content:"\F434"}.fa-bath:before{content:"\F2CD"}.fa-battery-empty:before{content:"\F244"}.fa-battery-full:before{content:"\F240"}.fa-battery-half:before{content:"\F242"}.fa-battery-quarter:before{content:"\F243"}.fa-battery-three-quarters:before{content:"\F241"}.fa-battle-net:before{content:"\F835"}.fa-bed:before{content:"\F236"}.fa-beer:before{content:"\F0FC"}.fa-behance:before{content:"\F1B4"}.fa-behance-square:before{content:"\F1B5"}.fa-bell:before{content:"\F0F3"}.fa-bell-slash:before{content:"\F1F6"}.fa-bezier-curve:before{content:"\F55B"}.fa-bible:before{content:"\F647"}.fa-bicycle:before{content:"\F206"}.fa-biking:before{content:"\F84A"}.fa-bimobject:before{content:"\F378"}.fa-binoculars:before{content:"\F1E5"}.fa-biohazard:before{content:"\F780"}.fa-birthday-cake:before{content:"\F1FD"}.fa-bitbucket:before{content:"\F171"}.fa-bitcoin:before{content:"\F379"}.fa-bity:before{content:"\F37A"}.fa-black-tie:before{content:"\F27E"}.fa-blackberry:before{content:"\F37B"}.fa-blender:before{content:"\F517"}.fa-blender-phone:before{content:"\F6B6"}.fa-blind:before{content:"\F29D"}.fa-blog:before{content:"\F781"}.fa-blogger:before{content:"\F37C"}.fa-blogger-b:before{content:"\F37D"}.fa-bluetooth:before{content:"\F293"}.fa-bluetooth-b:before{content:"\F294"}.fa-bold:before{content:"\F032"}.fa-bolt:before{content:"\F0E7"}.fa-bomb:before{content:"\F1E2"}.fa-bone:before{content:"\F5D7"}.fa-bong:before{content:"\F55C"}.fa-book:before{content:"\F02D"}.fa-book-dead:before{content:"\F6B7"}.fa-book-medical:before{content:"\F7E6"}.fa-book-open:before{content:"\F518"}.fa-book-reader:before{content:"\F5DA"}.fa-bookmark:before{content:"\F02E"}.fa-bootstrap:before{content:"\F836"}.fa-border-all:before{content:"\F84C"}.fa-border-none:before{content:"\F850"}.fa-border-style:before{content:"\F853"}.fa-bowling-ball:before{content:"\F436"}.fa-box:before{content:"\F466"}.fa-box-open:before{content:"\F49E"}.fa-boxes:before{content:"\F468"}.fa-braille:before{content:"\F2A1"}.fa-brain:before{content:"\F5DC"}.fa-bread-slice:before{content:"\F7EC"}.fa-briefcase:before{content:"\F0B1"}.fa-briefcase-medical:before{content:"\F469"}.fa-broadcast-tower:before{content:"\F519"}.fa-broom:before{content:"\F51A"}.fa-brush:before{content:"\F55D"}.fa-btc:before{content:"\F15A"}.fa-buffer:before{content:"\F837"}.fa-bug:before{content:"\F188"}.fa-building:before{content:"\F1AD"}.fa-bullhorn:before{content:"\F0A1"}.fa-bullseye:before{content:"\F140"}.fa-burn:before{content:"\F46A"}.fa-buromobelexperte:before{content:"\F37F"}.fa-bus:before{content:"\F207"}.fa-bus-alt:before{content:"\F55E"}.fa-business-time:before{content:"\F64A"}.fa-buy-n-large:before{content:"\F8A6"}.fa-buysellads:before{content:"\F20D"}.fa-calculator:before{content:"\F1EC"}.fa-calendar:before{content:"\F133"}.fa-calendar-alt:before{content:"\F073"}.fa-calendar-check:before{content:"\F274"}.fa-calendar-day:before{content:"\F783"}.fa-calendar-minus:before{content:"\F272"}.fa-calendar-plus:before{content:"\F271"}.fa-calendar-times:before{content:"\F273"}.fa-calendar-week:before{content:"\F784"}.fa-camera:before{content:"\F030"}.fa-camera-retro:before{content:"\F083"}.fa-campground:before{content:"\F6BB"}.fa-canadian-maple-leaf:before{content:"\F785"}.fa-candy-cane:before{content:"\F786"}.fa-cannabis:before{content:"\F55F"}.fa-capsules:before{content:"\F46B"}.fa-car:before{content:"\F1B9"}.fa-car-alt:before{content:"\F5DE"}.fa-car-battery:before{content:"\F5DF"}.fa-car-crash:before{content:"\F5E1"}.fa-car-side:before{content:"\F5E4"}.fa-caravan:before{content:"\F8FF"}.fa-caret-down:before{content:"\F0D7"}.fa-caret-left:before{content:"\F0D9"}.fa-caret-right:before{content:"\F0DA"}.fa-caret-square-down:before{content:"\F150"}.fa-caret-square-left:before{content:"\F191"}.fa-caret-square-right:before{content:"\F152"}.fa-caret-square-up:before{content:"\F151"}.fa-caret-up:before{content:"\F0D8"}.fa-carrot:before{content:"\F787"}.fa-cart-arrow-down:before{content:"\F218"}.fa-cart-plus:before{content:"\F217"}.fa-cash-register:before{content:"\F788"}.fa-cat:before{content:"\F6BE"}.fa-cc-amazon-pay:before{content:"\F42D"}.fa-cc-amex:before{content:"\F1F3"}.fa-cc-apple-pay:before{content:"\F416"}.fa-cc-diners-club:before{content:"\F24C"}.fa-cc-discover:before{content:"\F1F2"}.fa-cc-jcb:before{content:"\F24B"}.fa-cc-mastercard:before{content:"\F1F1"}.fa-cc-paypal:before{content:"\F1F4"}.fa-cc-stripe:before{content:"\F1F5"}.fa-cc-visa:before{content:"\F1F0"}.fa-centercode:before{content:"\F380"}.fa-centos:before{content:"\F789"}.fa-certificate:before{content:"\F0A3"}.fa-chair:before{content:"\F6C0"}.fa-chalkboard:before{content:"\F51B"}.fa-chalkboard-teacher:before{content:"\F51C"}.fa-charging-station:before{content:"\F5E7"}.fa-chart-area:before{content:"\F1FE"}.fa-chart-bar:before{content:"\F080"}.fa-chart-line:before{content:"\F201"}.fa-chart-pie:before{content:"\F200"}.fa-check:before{content:"\F00C"}.fa-check-circle:before{content:"\F058"}.fa-check-double:before{content:"\F560"}.fa-check-square:before{content:"\F14A"}.fa-cheese:before{content:"\F7EF"}.fa-chess:before{content:"\F439"}.fa-chess-bishop:before{content:"\F43A"}.fa-chess-board:before{content:"\F43C"}.fa-chess-king:before{content:"\F43F"}.fa-chess-knight:before{content:"\F441"}.fa-chess-pawn:before{content:"\F443"}.fa-chess-queen:before{content:"\F445"}.fa-chess-rook:before{content:"\F447"}.fa-chevron-circle-down:before{content:"\F13A"}.fa-chevron-circle-left:before{content:"\F137"}.fa-chevron-circle-right:before{content:"\F138"}.fa-chevron-circle-up:before{content:"\F139"}.fa-chevron-down:before{content:"\F078"}.fa-chevron-left:before{content:"\F053"}.fa-chevron-right:before{content:"\F054"}.fa-chevron-up:before{content:"\F077"}.fa-child:before{content:"\F1AE"}.fa-chrome:before{content:"\F268"}.fa-chromecast:before{content:"\F838"}.fa-church:before{content:"\F51D"}.fa-circle:before{content:"\F111"}.fa-circle-notch:before{content:"\F1CE"}.fa-city:before{content:"\F64F"}.fa-clinic-medical:before{content:"\F7F2"}.fa-clipboard:before{content:"\F328"}.fa-clipboard-check:before{content:"\F46C"}.fa-clipboard-list:before{content:"\F46D"}.fa-clock:before{content:"\F017"}.fa-clone:before{content:"\F24D"}.fa-closed-captioning:before{content:"\F20A"}.fa-cloud:before{content:"\F0C2"}.fa-cloud-download-alt:before{content:"\F381"}.fa-cloud-meatball:before{content:"\F73B"}.fa-cloud-moon:before{content:"\F6C3"}.fa-cloud-moon-rain:before{content:"\F73C"}.fa-cloud-rain:before{content:"\F73D"}.fa-cloud-showers-heavy:before{content:"\F740"}.fa-cloud-sun:before{content:"\F6C4"}.fa-cloud-sun-rain:before{content:"\F743"}.fa-cloud-upload-alt:before{content:"\F382"}.fa-cloudscale:before{content:"\F383"}.fa-cloudsmith:before{content:"\F384"}.fa-cloudversify:before{content:"\F385"}.fa-cocktail:before{content:"\F561"}.fa-code:before{content:"\F121"}.fa-code-branch:before{content:"\F126"}.fa-codepen:before{content:"\F1CB"}.fa-codiepie:before{content:"\F284"}.fa-coffee:before{content:"\F0F4"}.fa-cog:before{content:"\F013"}.fa-cogs:before{content:"\F085"}.fa-coins:before{content:"\F51E"}.fa-columns:before{content:"\F0DB"}.fa-comment:before{content:"\F075"}.fa-comment-alt:before{content:"\F27A"}.fa-comment-dollar:before{content:"\F651"}.fa-comment-dots:before{content:"\F4AD"}.fa-comment-medical:before{content:"\F7F5"}.fa-comment-slash:before{content:"\F4B3"}.fa-comments:before{content:"\F086"}.fa-comments-dollar:before{content:"\F653"}.fa-compact-disc:before{content:"\F51F"}.fa-compass:before{content:"\F14E"}.fa-compress:before{content:"\F066"}.fa-compress-alt:before{content:"\F422"}.fa-compress-arrows-alt:before{content:"\F78C"}.fa-concierge-bell:before{content:"\F562"}.fa-confluence:before{content:"\F78D"}.fa-connectdevelop:before{content:"\F20E"}.fa-contao:before{content:"\F26D"}.fa-cookie:before{content:"\F563"}.fa-cookie-bite:before{content:"\F564"}.fa-copy:before{content:"\F0C5"}.fa-copyright:before{content:"\F1F9"}.fa-cotton-bureau:before{content:"\F89E"}.fa-couch:before{content:"\F4B8"}.fa-cpanel:before{content:"\F388"}.fa-creative-commons:before{content:"\F25E"}.fa-creative-commons-by:before{content:"\F4E7"}.fa-creative-commons-nc:before{content:"\F4E8"}.fa-creative-commons-nc-eu:before{content:"\F4E9"}.fa-creative-commons-nc-jp:before{content:"\F4EA"}.fa-creative-commons-nd:before{content:"\F4EB"}.fa-creative-commons-pd:before{content:"\F4EC"}.fa-creative-commons-pd-alt:before{content:"\F4ED"}.fa-creative-commons-remix:before{content:"\F4EE"}.fa-creative-commons-sa:before{content:"\F4EF"}.fa-creative-commons-sampling:before{content:"\F4F0"}.fa-creative-commons-sampling-plus:before{content:"\F4F1"}.fa-creative-commons-share:before{content:"\F4F2"}.fa-creative-commons-zero:before{content:"\F4F3"}.fa-credit-card:before{content:"\F09D"}.fa-critical-role:before{content:"\F6C9"}.fa-crop:before{content:"\F125"}.fa-crop-alt:before{content:"\F565"}.fa-cross:before{content:"\F654"}.fa-crosshairs:before{content:"\F05B"}.fa-crow:before{content:"\F520"}.fa-crown:before{content:"\F521"}.fa-crutch:before{content:"\F7F7"}.fa-css3:before{content:"\F13C"}.fa-css3-alt:before{content:"\F38B"}.fa-cube:before{content:"\F1B2"}.fa-cubes:before{content:"\F1B3"}.fa-cut:before{content:"\F0C4"}.fa-cuttlefish:before{content:"\F38C"}.fa-d-and-d:before{content:"\F38D"}.fa-d-and-d-beyond:before{content:"\F6CA"}.fa-dailymotion:before{content:"\F952"}.fa-dashcube:before{content:"\F210"}.fa-database:before{content:"\F1C0"}.fa-deaf:before{content:"\F2A4"}.fa-delicious:before{content:"\F1A5"}.fa-democrat:before{content:"\F747"}.fa-deploydog:before{content:"\F38E"}.fa-deskpro:before{content:"\F38F"}.fa-desktop:before{content:"\F108"}.fa-dev:before{content:"\F6CC"}.fa-deviantart:before{content:"\F1BD"}.fa-dharmachakra:before{content:"\F655"}.fa-dhl:before{content:"\F790"}.fa-diagnoses:before{content:"\F470"}.fa-diaspora:before{content:"\F791"}.fa-dice:before{content:"\F522"}.fa-dice-d20:before{content:"\F6CF"}.fa-dice-d6:before{content:"\F6D1"}.fa-dice-five:before{content:"\F523"}.fa-dice-four:before{content:"\F524"}.fa-dice-one:before{content:"\F525"}.fa-dice-six:before{content:"\F526"}.fa-dice-three:before{content:"\F527"}.fa-dice-two:before{content:"\F528"}.fa-digg:before{content:"\F1A6"}.fa-digital-ocean:before{content:"\F391"}.fa-digital-tachograph:before{content:"\F566"}.fa-directions:before{content:"\F5EB"}.fa-discord:before{content:"\F392"}.fa-discourse:before{content:"\F393"}.fa-divide:before{content:"\F529"}.fa-dizzy:before{content:"\F567"}.fa-dna:before{content:"\F471"}.fa-dochub:before{content:"\F394"}.fa-docker:before{content:"\F395"}.fa-dog:before{content:"\F6D3"}.fa-dollar-sign:before{content:"\F155"}.fa-dolly:before{content:"\F472"}.fa-dolly-flatbed:before{content:"\F474"}.fa-donate:before{content:"\F4B9"}.fa-door-closed:before{content:"\F52A"}.fa-door-open:before{content:"\F52B"}.fa-dot-circle:before{content:"\F192"}.fa-dove:before{content:"\F4BA"}.fa-download:before{content:"\F019"}.fa-draft2digital:before{content:"\F396"}.fa-drafting-compass:before{content:"\F568"}.fa-dragon:before{content:"\F6D5"}.fa-draw-polygon:before{content:"\F5EE"}.fa-dribbble:before{content:"\F17D"}.fa-dribbble-square:before{content:"\F397"}.fa-dropbox:before{content:"\F16B"}.fa-drum:before{content:"\F569"}.fa-drum-steelpan:before{content:"\F56A"}.fa-drumstick-bite:before{content:"\F6D7"}.fa-drupal:before{content:"\F1A9"}.fa-dumbbell:before{content:"\F44B"}.fa-dumpster:before{content:"\F793"}.fa-dumpster-fire:before{content:"\F794"}.fa-dungeon:before{content:"\F6D9"}.fa-dyalog:before{content:"\F399"}.fa-earlybirds:before{content:"\F39A"}.fa-ebay:before{content:"\F4F4"}.fa-edge:before{content:"\F282"}.fa-edit:before{content:"\F044"}.fa-egg:before{content:"\F7FB"}.fa-eject:before{content:"\F052"}.fa-elementor:before{content:"\F430"}.fa-ellipsis-h:before{content:"\F141"}.fa-ellipsis-v:before{content:"\F142"}.fa-ello:before{content:"\F5F1"}.fa-ember:before{content:"\F423"}.fa-empire:before{content:"\F1D1"}.fa-envelope:before{content:"\F0E0"}.fa-envelope-open:before{content:"\F2B6"}.fa-envelope-open-text:before{content:"\F658"}.fa-envelope-square:before{content:"\F199"}.fa-envira:before{content:"\F299"}.fa-equals:before{content:"\F52C"}.fa-eraser:before{content:"\F12D"}.fa-erlang:before{content:"\F39D"}.fa-ethereum:before{content:"\F42E"}.fa-ethernet:before{content:"\F796"}.fa-etsy:before{content:"\F2D7"}.fa-euro-sign:before{content:"\F153"}.fa-evernote:before{content:"\F839"}.fa-exchange-alt:before{content:"\F362"}.fa-exclamation:before{content:"\F12A"}.fa-exclamation-circle:before{content:"\F06A"}.fa-exclamation-triangle:before{content:"\F071"}.fa-expand:before{content:"\F065"}.fa-expand-alt:before{content:"\F424"}.fa-expand-arrows-alt:before{content:"\F31E"}.fa-expeditedssl:before{content:"\F23E"}.fa-external-link-alt:before{content:"\F35D"}.fa-external-link-square-alt:before{content:"\F360"}.fa-eye:before{content:"\F06E"}.fa-eye-dropper:before{content:"\F1FB"}.fa-eye-slash:before{content:"\F070"}.fa-facebook:before{content:"\F09A"}.fa-facebook-f:before{content:"\F39E"}.fa-facebook-messenger:before{content:"\F39F"}.fa-facebook-square:before{content:"\F082"}.fa-fan:before{content:"\F863"}.fa-fantasy-flight-games:before{content:"\F6DC"}.fa-fast-backward:before{content:"\F049"}.fa-fast-forward:before{content:"\F050"}.fa-fax:before{content:"\F1AC"}.fa-feather:before{content:"\F52D"}.fa-feather-alt:before{content:"\F56B"}.fa-fedex:before{content:"\F797"}.fa-fedora:before{content:"\F798"}.fa-female:before{content:"\F182"}.fa-fighter-jet:before{content:"\F0FB"}.fa-figma:before{content:"\F799"}.fa-file:before{content:"\F15B"}.fa-file-alt:before{content:"\F15C"}.fa-file-archive:before{content:"\F1C6"}.fa-file-audio:before{content:"\F1C7"}.fa-file-code:before{content:"\F1C9"}.fa-file-contract:before{content:"\F56C"}.fa-file-csv:before{content:"\F6DD"}.fa-file-download:before{content:"\F56D"}.fa-file-excel:before{content:"\F1C3"}.fa-file-export:before{content:"\F56E"}.fa-file-image:before{content:"\F1C5"}.fa-file-import:before{content:"\F56F"}.fa-file-invoice:before{content:"\F570"}.fa-file-invoice-dollar:before{content:"\F571"}.fa-file-medical:before{content:"\F477"}.fa-file-medical-alt:before{content:"\F478"}.fa-file-pdf:before{content:"\F1C1"}.fa-file-powerpoint:before{content:"\F1C4"}.fa-file-prescription:before{content:"\F572"}.fa-file-signature:before{content:"\F573"}.fa-file-upload:before{content:"\F574"}.fa-file-video:before{content:"\F1C8"}.fa-file-word:before{content:"\F1C2"}.fa-fill:before{content:"\F575"}.fa-fill-drip:before{content:"\F576"}.fa-film:before{content:"\F008"}.fa-filter:before{content:"\F0B0"}.fa-fingerprint:before{content:"\F577"}.fa-fire:before{content:"\F06D"}.fa-fire-alt:before{content:"\F7E4"}.fa-fire-extinguisher:before{content:"\F134"}.fa-firefox:before{content:"\F269"}.fa-firefox-browser:before{content:"\F907"}.fa-first-aid:before{content:"\F479"}.fa-first-order:before{content:"\F2B0"}.fa-first-order-alt:before{content:"\F50A"}.fa-firstdraft:before{content:"\F3A1"}.fa-fish:before{content:"\F578"}.fa-fist-raised:before{content:"\F6DE"}.fa-flag:before{content:"\F024"}.fa-flag-checkered:before{content:"\F11E"}.fa-flag-usa:before{content:"\F74D"}.fa-flask:before{content:"\F0C3"}.fa-flickr:before{content:"\F16E"}.fa-flipboard:before{content:"\F44D"}.fa-flushed:before{content:"\F579"}.fa-fly:before{content:"\F417"}.fa-folder:before{content:"\F07B"}.fa-folder-minus:before{content:"\F65D"}.fa-folder-open:before{content:"\F07C"}.fa-folder-plus:before{content:"\F65E"}.fa-font:before{content:"\F031"}.fa-font-awesome:before{content:"\F2B4"}.fa-font-awesome-alt:before{content:"\F35C"}.fa-font-awesome-flag:before{content:"\F425"}.fa-font-awesome-logo-full:before{content:"\F4E6"}.fa-fonticons:before{content:"\F280"}.fa-fonticons-fi:before{content:"\F3A2"}.fa-football-ball:before{content:"\F44E"}.fa-fort-awesome:before{content:"\F286"}.fa-fort-awesome-alt:before{content:"\F3A3"}.fa-forumbee:before{content:"\F211"}.fa-forward:before{content:"\F04E"}.fa-foursquare:before{content:"\F180"}.fa-free-code-camp:before{content:"\F2C5"}.fa-freebsd:before{content:"\F3A4"}.fa-frog:before{content:"\F52E"}.fa-frown:before{content:"\F119"}.fa-frown-open:before{content:"\F57A"}.fa-fulcrum:before{content:"\F50B"}.fa-funnel-dollar:before{content:"\F662"}.fa-futbol:before{content:"\F1E3"}.fa-galactic-republic:before{content:"\F50C"}.fa-galactic-senate:before{content:"\F50D"}.fa-gamepad:before{content:"\F11B"}.fa-gas-pump:before{content:"\F52F"}.fa-gavel:before{content:"\F0E3"}.fa-gem:before{content:"\F3A5"}.fa-genderless:before{content:"\F22D"}.fa-get-pocket:before{content:"\F265"}.fa-gg:before{content:"\F260"}.fa-gg-circle:before{content:"\F261"}.fa-ghost:before{content:"\F6E2"}.fa-gift:before{content:"\F06B"}.fa-gifts:before{content:"\F79C"}.fa-git:before{content:"\F1D3"}.fa-git-alt:before{content:"\F841"}.fa-git-square:before{content:"\F1D2"}.fa-github:before{content:"\F09B"}.fa-github-alt:before{content:"\F113"}.fa-github-square:before{content:"\F092"}.fa-gitkraken:before{content:"\F3A6"}.fa-gitlab:before{content:"\F296"}.fa-gitter:before{content:"\F426"}.fa-glass-cheers:before{content:"\F79F"}.fa-glass-martini:before{content:"\F000"}.fa-glass-martini-alt:before{content:"\F57B"}.fa-glass-whiskey:before{content:"\F7A0"}.fa-glasses:before{content:"\F530"}.fa-glide:before{content:"\F2A5"}.fa-glide-g:before{content:"\F2A6"}.fa-globe:before{content:"\F0AC"}.fa-globe-africa:before{content:"\F57C"}.fa-globe-americas:before{content:"\F57D"}.fa-globe-asia:before{content:"\F57E"}.fa-globe-europe:before{content:"\F7A2"}.fa-gofore:before{content:"\F3A7"}.fa-golf-ball:before{content:"\F450"}.fa-goodreads:before{content:"\F3A8"}.fa-goodreads-g:before{content:"\F3A9"}.fa-google:before{content:"\F1A0"}.fa-google-drive:before{content:"\F3AA"}.fa-google-play:before{content:"\F3AB"}.fa-google-plus:before{content:"\F2B3"}.fa-google-plus-g:before{content:"\F0D5"}.fa-google-plus-square:before{content:"\F0D4"}.fa-google-wallet:before{content:"\F1EE"}.fa-gopuram:before{content:"\F664"}.fa-graduation-cap:before{content:"\F19D"}.fa-gratipay:before{content:"\F184"}.fa-grav:before{content:"\F2D6"}.fa-greater-than:before{content:"\F531"}.fa-greater-than-equal:before{content:"\F532"}.fa-grimace:before{content:"\F57F"}.fa-grin:before{content:"\F580"}.fa-grin-alt:before{content:"\F581"}.fa-grin-beam:before{content:"\F582"}.fa-grin-beam-sweat:before{content:"\F583"}.fa-grin-hearts:before{content:"\F584"}.fa-grin-squint:before{content:"\F585"}.fa-grin-squint-tears:before{content:"\F586"}.fa-grin-stars:before{content:"\F587"}.fa-grin-tears:before{content:"\F588"}.fa-grin-tongue:before{content:"\F589"}.fa-grin-tongue-squint:before{content:"\F58A"}.fa-grin-tongue-wink:before{content:"\F58B"}.fa-grin-wink:before{content:"\F58C"}.fa-grip-horizontal:before{content:"\F58D"}.fa-grip-lines:before{content:"\F7A4"}.fa-grip-lines-vertical:before{content:"\F7A5"}.fa-grip-vertical:before{content:"\F58E"}.fa-gripfire:before{content:"\F3AC"}.fa-grunt:before{content:"\F3AD"}.fa-guitar:before{content:"\F7A6"}.fa-gulp:before{content:"\F3AE"}.fa-h-square:before{content:"\F0FD"}.fa-hacker-news:before{content:"\F1D4"}.fa-hacker-news-square:before{content:"\F3AF"}.fa-hackerrank:before{content:"\F5F7"}.fa-hamburger:before{content:"\F805"}.fa-hammer:before{content:"\F6E3"}.fa-hamsa:before{content:"\F665"}.fa-hand-holding:before{content:"\F4BD"}.fa-hand-holding-heart:before{content:"\F4BE"}.fa-hand-holding-usd:before{content:"\F4C0"}.fa-hand-lizard:before{content:"\F258"}.fa-hand-middle-finger:before{content:"\F806"}.fa-hand-paper:before{content:"\F256"}.fa-hand-peace:before{content:"\F25B"}.fa-hand-point-down:before{content:"\F0A7"}.fa-hand-point-left:before{content:"\F0A5"}.fa-hand-point-right:before{content:"\F0A4"}.fa-hand-point-up:before{content:"\F0A6"}.fa-hand-pointer:before{content:"\F25A"}.fa-hand-rock:before{content:"\F255"}.fa-hand-scissors:before{content:"\F257"}.fa-hand-spock:before{content:"\F259"}.fa-hands:before{content:"\F4C2"}.fa-hands-helping:before{content:"\F4C4"}.fa-handshake:before{content:"\F2B5"}.fa-hanukiah:before{content:"\F6E6"}.fa-hard-hat:before{content:"\F807"}.fa-hashtag:before{content:"\F292"}.fa-hat-cowboy:before{content:"\F8C0"}.fa-hat-cowboy-side:before{content:"\F8C1"}.fa-hat-wizard:before{content:"\F6E8"}.fa-hdd:before{content:"\F0A0"}.fa-heading:before{content:"\F1DC"}.fa-headphones:before{content:"\F025"}.fa-headphones-alt:before{content:"\F58F"}.fa-headset:before{content:"\F590"}.fa-heart:before{content:"\F004"}.fa-heart-broken:before{content:"\F7A9"}.fa-heartbeat:before{content:"\F21E"}.fa-helicopter:before{content:"\F533"}.fa-highlighter:before{content:"\F591"}.fa-hiking:before{content:"\F6EC"}.fa-hippo:before{content:"\F6ED"}.fa-hips:before{content:"\F452"}.fa-hire-a-helper:before{content:"\F3B0"}.fa-history:before{content:"\F1DA"}.fa-hockey-puck:before{content:"\F453"}.fa-holly-berry:before{content:"\F7AA"}.fa-home:before{content:"\F015"}.fa-hooli:before{content:"\F427"}.fa-hornbill:before{content:"\F592"}.fa-horse:before{content:"\F6F0"}.fa-horse-head:before{content:"\F7AB"}.fa-hospital:before{content:"\F0F8"}.fa-hospital-alt:before{content:"\F47D"}.fa-hospital-symbol:before{content:"\F47E"}.fa-hot-tub:before{content:"\F593"}.fa-hotdog:before{content:"\F80F"}.fa-hotel:before{content:"\F594"}.fa-hotjar:before{content:"\F3B1"}.fa-hourglass:before{content:"\F254"}.fa-hourglass-end:before{content:"\F253"}.fa-hourglass-half:before{content:"\F252"}.fa-hourglass-start:before{content:"\F251"}.fa-house-damage:before{content:"\F6F1"}.fa-houzz:before{content:"\F27C"}.fa-hryvnia:before{content:"\F6F2"}.fa-html5:before{content:"\F13B"}.fa-hubspot:before{content:"\F3B2"}.fa-i-cursor:before{content:"\F246"}.fa-ice-cream:before{content:"\F810"}.fa-icicles:before{content:"\F7AD"}.fa-icons:before{content:"\F86D"}.fa-id-badge:before{content:"\F2C1"}.fa-id-card:before{content:"\F2C2"}.fa-id-card-alt:before{content:"\F47F"}.fa-ideal:before{content:"\F913"}.fa-igloo:before{content:"\F7AE"}.fa-image:before{content:"\F03E"}.fa-images:before{content:"\F302"}.fa-imdb:before{content:"\F2D8"}.fa-inbox:before{content:"\F01C"}.fa-indent:before{content:"\F03C"}.fa-industry:before{content:"\F275"}.fa-infinity:before{content:"\F534"}.fa-info:before{content:"\F129"}.fa-info-circle:before{content:"\F05A"}.fa-instagram:before{content:"\F16D"}.fa-instagram-square:before{content:"\F955"}.fa-intercom:before{content:"\F7AF"}.fa-internet-explorer:before{content:"\F26B"}.fa-invision:before{content:"\F7B0"}.fa-ioxhost:before{content:"\F208"}.fa-italic:before{content:"\F033"}.fa-itch-io:before{content:"\F83A"}.fa-itunes:before{content:"\F3B4"}.fa-itunes-note:before{content:"\F3B5"}.fa-java:before{content:"\F4E4"}.fa-jedi:before{content:"\F669"}.fa-jedi-order:before{content:"\F50E"}.fa-jenkins:before{content:"\F3B6"}.fa-jira:before{content:"\F7B1"}.fa-joget:before{content:"\F3B7"}.fa-joint:before{content:"\F595"}.fa-joomla:before{content:"\F1AA"}.fa-journal-whills:before{content:"\F66A"}.fa-js:before{content:"\F3B8"}.fa-js-square:before{content:"\F3B9"}.fa-jsfiddle:before{content:"\F1CC"}.fa-kaaba:before{content:"\F66B"}.fa-kaggle:before{content:"\F5FA"}.fa-key:before{content:"\F084"}.fa-keybase:before{content:"\F4F5"}.fa-keyboard:before{content:"\F11C"}.fa-keycdn:before{content:"\F3BA"}.fa-khanda:before{content:"\F66D"}.fa-kickstarter:before{content:"\F3BB"}.fa-kickstarter-k:before{content:"\F3BC"}.fa-kiss:before{content:"\F596"}.fa-kiss-beam:before{content:"\F597"}.fa-kiss-wink-heart:before{content:"\F598"}.fa-kiwi-bird:before{content:"\F535"}.fa-korvue:before{content:"\F42F"}.fa-landmark:before{content:"\F66F"}.fa-language:before{content:"\F1AB"}.fa-laptop:before{content:"\F109"}.fa-laptop-code:before{content:"\F5FC"}.fa-laptop-medical:before{content:"\F812"}.fa-laravel:before{content:"\F3BD"}.fa-lastfm:before{content:"\F202"}.fa-lastfm-square:before{content:"\F203"}.fa-laugh:before{content:"\F599"}.fa-laugh-beam:before{content:"\F59A"}.fa-laugh-squint:before{content:"\F59B"}.fa-laugh-wink:before{content:"\F59C"}.fa-layer-group:before{content:"\F5FD"}.fa-leaf:before{content:"\F06C"}.fa-leanpub:before{content:"\F212"}.fa-lemon:before{content:"\F094"}.fa-less:before{content:"\F41D"}.fa-less-than:before{content:"\F536"}.fa-less-than-equal:before{content:"\F537"}.fa-level-down-alt:before{content:"\F3BE"}.fa-level-up-alt:before{content:"\F3BF"}.fa-life-ring:before{content:"\F1CD"}.fa-lightbulb:before{content:"\F0EB"}.fa-line:before{content:"\F3C0"}.fa-link:before{content:"\F0C1"}.fa-linkedin:before{content:"\F08C"}.fa-linkedin-in:before{content:"\F0E1"}.fa-linode:before{content:"\F2B8"}.fa-linux:before{content:"\F17C"}.fa-lira-sign:before{content:"\F195"}.fa-list:before{content:"\F03A"}.fa-list-alt:before{content:"\F022"}.fa-list-ol:before{content:"\F0CB"}.fa-list-ul:before{content:"\F0CA"}.fa-location-arrow:before{content:"\F124"}.fa-lock:before{content:"\F023"}.fa-lock-open:before{content:"\F3C1"}.fa-long-arrow-alt-down:before{content:"\F309"}.fa-long-arrow-alt-left:before{content:"\F30A"}.fa-long-arrow-alt-right:before{content:"\F30B"}.fa-long-arrow-alt-up:before{content:"\F30C"}.fa-low-vision:before{content:"\F2A8"}.fa-luggage-cart:before{content:"\F59D"}.fa-lyft:before{content:"\F3C3"}.fa-magento:before{content:"\F3C4"}.fa-magic:before{content:"\F0D0"}.fa-magnet:before{content:"\F076"}.fa-mail-bulk:before{content:"\F674"}.fa-mailchimp:before{content:"\F59E"}.fa-male:before{content:"\F183"}.fa-mandalorian:before{content:"\F50F"}.fa-map:before{content:"\F279"}.fa-map-marked:before{content:"\F59F"}.fa-map-marked-alt:before{content:"\F5A0"}.fa-map-marker:before{content:"\F041"}.fa-map-marker-alt:before{content:"\F3C5"}.fa-map-pin:before{content:"\F276"}.fa-map-signs:before{content:"\F277"}.fa-markdown:before{content:"\F60F"}.fa-marker:before{content:"\F5A1"}.fa-mars:before{content:"\F222"}.fa-mars-double:before{content:"\F227"}.fa-mars-stroke:before{content:"\F229"}.fa-mars-stroke-h:before{content:"\F22B"}.fa-mars-stroke-v:before{content:"\F22A"}.fa-mask:before{content:"\F6FA"}.fa-mastodon:before{content:"\F4F6"}.fa-maxcdn:before{content:"\F136"}.fa-mdb:before{content:"\F8CA"}.fa-medal:before{content:"\F5A2"}.fa-medapps:before{content:"\F3C6"}.fa-medium:before{content:"\F23A"}.fa-medium-m:before{content:"\F3C7"}.fa-medkit:before{content:"\F0FA"}.fa-medrt:before{content:"\F3C8"}.fa-meetup:before{content:"\F2E0"}.fa-megaport:before{content:"\F5A3"}.fa-meh:before{content:"\F11A"}.fa-meh-blank:before{content:"\F5A4"}.fa-meh-rolling-eyes:before{content:"\F5A5"}.fa-memory:before{content:"\F538"}.fa-mendeley:before{content:"\F7B3"}.fa-menorah:before{content:"\F676"}.fa-mercury:before{content:"\F223"}.fa-meteor:before{content:"\F753"}.fa-microblog:before{content:"\F91A"}.fa-microchip:before{content:"\F2DB"}.fa-microphone:before{content:"\F130"}.fa-microphone-alt:before{content:"\F3C9"}.fa-microphone-alt-slash:before{content:"\F539"}.fa-microphone-slash:before{content:"\F131"}.fa-microscope:before{content:"\F610"}.fa-microsoft:before{content:"\F3CA"}.fa-minus:before{content:"\F068"}.fa-minus-circle:before{content:"\F056"}.fa-minus-square:before{content:"\F146"}.fa-mitten:before{content:"\F7B5"}.fa-mix:before{content:"\F3CB"}.fa-mixcloud:before{content:"\F289"}.fa-mixer:before{content:"\F956"}.fa-mizuni:before{content:"\F3CC"}.fa-mobile:before{content:"\F10B"}.fa-mobile-alt:before{content:"\F3CD"}.fa-modx:before{content:"\F285"}.fa-monero:before{content:"\F3D0"}.fa-money-bill:before{content:"\F0D6"}.fa-money-bill-alt:before{content:"\F3D1"}.fa-money-bill-wave:before{content:"\F53A"}.fa-money-bill-wave-alt:before{content:"\F53B"}.fa-money-check:before{content:"\F53C"}.fa-money-check-alt:before{content:"\F53D"}.fa-monument:before{content:"\F5A6"}.fa-moon:before{content:"\F186"}.fa-mortar-pestle:before{content:"\F5A7"}.fa-mosque:before{content:"\F678"}.fa-motorcycle:before{content:"\F21C"}.fa-mountain:before{content:"\F6FC"}.fa-mouse:before{content:"\F8CC"}.fa-mouse-pointer:before{content:"\F245"}.fa-mug-hot:before{content:"\F7B6"}.fa-music:before{content:"\F001"}.fa-napster:before{content:"\F3D2"}.fa-neos:before{content:"\F612"}.fa-network-wired:before{content:"\F6FF"}.fa-neuter:before{content:"\F22C"}.fa-newspaper:before{content:"\F1EA"}.fa-nimblr:before{content:"\F5A8"}.fa-node:before{content:"\F419"}.fa-node-js:before{content:"\F3D3"}.fa-not-equal:before{content:"\F53E"}.fa-notes-medical:before{content:"\F481"}.fa-npm:before{content:"\F3D4"}.fa-ns8:before{content:"\F3D5"}.fa-nutritionix:before{content:"\F3D6"}.fa-object-group:before{content:"\F247"}.fa-object-ungroup:before{content:"\F248"}.fa-odnoklassniki:before{content:"\F263"}.fa-odnoklassniki-square:before{content:"\F264"}.fa-oil-can:before{content:"\F613"}.fa-old-republic:before{content:"\F510"}.fa-om:before{content:"\F679"}.fa-opencart:before{content:"\F23D"}.fa-openid:before{content:"\F19B"}.fa-opera:before{content:"\F26A"}.fa-optin-monster:before{content:"\F23C"}.fa-orcid:before{content:"\F8D2"}.fa-osi:before{content:"\F41A"}.fa-otter:before{content:"\F700"}.fa-outdent:before{content:"\F03B"}.fa-page4:before{content:"\F3D7"}.fa-pagelines:before{content:"\F18C"}.fa-pager:before{content:"\F815"}.fa-paint-brush:before{content:"\F1FC"}.fa-paint-roller:before{content:"\F5AA"}.fa-palette:before{content:"\F53F"}.fa-palfed:before{content:"\F3D8"}.fa-pallet:before{content:"\F482"}.fa-paper-plane:before{content:"\F1D8"}.fa-paperclip:before{content:"\F0C6"}.fa-parachute-box:before{content:"\F4CD"}.fa-paragraph:before{content:"\F1DD"}.fa-parking:before{content:"\F540"}.fa-passport:before{content:"\F5AB"}.fa-pastafarianism:before{content:"\F67B"}.fa-paste:before{content:"\F0EA"}.fa-patreon:before{content:"\F3D9"}.fa-pause:before{content:"\F04C"}.fa-pause-circle:before{content:"\F28B"}.fa-paw:before{content:"\F1B0"}.fa-paypal:before{content:"\F1ED"}.fa-peace:before{content:"\F67C"}.fa-pen:before{content:"\F304"}.fa-pen-alt:before{content:"\F305"}.fa-pen-fancy:before{content:"\F5AC"}.fa-pen-nib:before{content:"\F5AD"}.fa-pen-square:before{content:"\F14B"}.fa-pencil-alt:before{content:"\F303"}.fa-pencil-ruler:before{content:"\F5AE"}.fa-penny-arcade:before{content:"\F704"}.fa-people-carry:before{content:"\F4CE"}.fa-pepper-hot:before{content:"\F816"}.fa-percent:before{content:"\F295"}.fa-percentage:before{content:"\F541"}.fa-periscope:before{content:"\F3DA"}.fa-person-booth:before{content:"\F756"}.fa-phabricator:before{content:"\F3DB"}.fa-phoenix-framework:before{content:"\F3DC"}.fa-phoenix-squadron:before{content:"\F511"}.fa-phone:before{content:"\F095"}.fa-phone-alt:before{content:"\F879"}.fa-phone-slash:before{content:"\F3DD"}.fa-phone-square:before{content:"\F098"}.fa-phone-square-alt:before{content:"\F87B"}.fa-phone-volume:before{content:"\F2A0"}.fa-photo-video:before{content:"\F87C"}.fa-php:before{content:"\F457"}.fa-pied-piper:before{content:"\F2AE"}.fa-pied-piper-alt:before{content:"\F1A8"}.fa-pied-piper-hat:before{content:"\F4E5"}.fa-pied-piper-pp:before{content:"\F1A7"}.fa-pied-piper-square:before{content:"\F91E"}.fa-piggy-bank:before{content:"\F4D3"}.fa-pills:before{content:"\F484"}.fa-pinterest:before{content:"\F0D2"}.fa-pinterest-p:before{content:"\F231"}.fa-pinterest-square:before{content:"\F0D3"}.fa-pizza-slice:before{content:"\F818"}.fa-place-of-worship:before{content:"\F67F"}.fa-plane:before{content:"\F072"}.fa-plane-arrival:before{content:"\F5AF"}.fa-plane-departure:before{content:"\F5B0"}.fa-play:before{content:"\F04B"}.fa-play-circle:before{content:"\F144"}.fa-playstation:before{content:"\F3DF"}.fa-plug:before{content:"\F1E6"}.fa-plus:before{content:"\F067"}.fa-plus-circle:before{content:"\F055"}.fa-plus-square:before{content:"\F0FE"}.fa-podcast:before{content:"\F2CE"}.fa-poll:before{content:"\F681"}.fa-poll-h:before{content:"\F682"}.fa-poo:before{content:"\F2FE"}.fa-poo-storm:before{content:"\F75A"}.fa-poop:before{content:"\F619"}.fa-portrait:before{content:"\F3E0"}.fa-pound-sign:before{content:"\F154"}.fa-power-off:before{content:"\F011"}.fa-pray:before{content:"\F683"}.fa-praying-hands:before{content:"\F684"}.fa-prescription:before{content:"\F5B1"}.fa-prescription-bottle:before{content:"\F485"}.fa-prescription-bottle-alt:before{content:"\F486"}.fa-print:before{content:"\F02F"}.fa-procedures:before{content:"\F487"}.fa-product-hunt:before{content:"\F288"}.fa-project-diagram:before{content:"\F542"}.fa-pushed:before{content:"\F3E1"}.fa-puzzle-piece:before{content:"\F12E"}.fa-python:before{content:"\F3E2"}.fa-qq:before{content:"\F1D6"}.fa-qrcode:before{content:"\F029"}.fa-question:before{content:"\F128"}.fa-question-circle:before{content:"\F059"}.fa-quidditch:before{content:"\F458"}.fa-quinscape:before{content:"\F459"}.fa-quora:before{content:"\F2C4"}.fa-quote-left:before{content:"\F10D"}.fa-quote-right:before{content:"\F10E"}.fa-quran:before{content:"\F687"}.fa-r-project:before{content:"\F4F7"}.fa-radiation:before{content:"\F7B9"}.fa-radiation-alt:before{content:"\F7BA"}.fa-rainbow:before{content:"\F75B"}.fa-random:before{content:"\F074"}.fa-raspberry-pi:before{content:"\F7BB"}.fa-ravelry:before{content:"\F2D9"}.fa-react:before{content:"\F41B"}.fa-reacteurope:before{content:"\F75D"}.fa-readme:before{content:"\F4D5"}.fa-rebel:before{content:"\F1D0"}.fa-receipt:before{content:"\F543"}.fa-record-vinyl:before{content:"\F8D9"}.fa-recycle:before{content:"\F1B8"}.fa-red-river:before{content:"\F3E3"}.fa-reddit:before{content:"\F1A1"}.fa-reddit-alien:before{content:"\F281"}.fa-reddit-square:before{content:"\F1A2"}.fa-redhat:before{content:"\F7BC"}.fa-redo:before{content:"\F01E"}.fa-redo-alt:before{content:"\F2F9"}.fa-registered:before{content:"\F25D"}.fa-remove-format:before{content:"\F87D"}.fa-renren:before{content:"\F18B"}.fa-reply:before{content:"\F3E5"}.fa-reply-all:before{content:"\F122"}.fa-replyd:before{content:"\F3E6"}.fa-republican:before{content:"\F75E"}.fa-researchgate:before{content:"\F4F8"}.fa-resolving:before{content:"\F3E7"}.fa-restroom:before{content:"\F7BD"}.fa-retweet:before{content:"\F079"}.fa-rev:before{content:"\F5B2"}.fa-ribbon:before{content:"\F4D6"}.fa-ring:before{content:"\F70B"}.fa-road:before{content:"\F018"}.fa-robot:before{content:"\F544"}.fa-rocket:before{content:"\F135"}.fa-rocketchat:before{content:"\F3E8"}.fa-rockrms:before{content:"\F3E9"}.fa-route:before{content:"\F4D7"}.fa-rss:before{content:"\F09E"}.fa-rss-square:before{content:"\F143"}.fa-ruble-sign:before{content:"\F158"}.fa-ruler:before{content:"\F545"}.fa-ruler-combined:before{content:"\F546"}.fa-ruler-horizontal:before{content:"\F547"}.fa-ruler-vertical:before{content:"\F548"}.fa-running:before{content:"\F70C"}.fa-rupee-sign:before{content:"\F156"}.fa-sad-cry:before{content:"\F5B3"}.fa-sad-tear:before{content:"\F5B4"}.fa-safari:before{content:"\F267"}.fa-salesforce:before{content:"\F83B"}.fa-sass:before{content:"\F41E"}.fa-satellite:before{content:"\F7BF"}.fa-satellite-dish:before{content:"\F7C0"}.fa-save:before{content:"\F0C7"}.fa-schlix:before{content:"\F3EA"}.fa-school:before{content:"\F549"}.fa-screwdriver:before{content:"\F54A"}.fa-scribd:before{content:"\F28A"}.fa-scroll:before{content:"\F70E"}.fa-sd-card:before{content:"\F7C2"}.fa-search:before{content:"\F002"}.fa-search-dollar:before{content:"\F688"}.fa-search-location:before{content:"\F689"}.fa-search-minus:before{content:"\F010"}.fa-search-plus:before{content:"\F00E"}.fa-searchengin:before{content:"\F3EB"}.fa-seedling:before{content:"\F4D8"}.fa-sellcast:before{content:"\F2DA"}.fa-sellsy:before{content:"\F213"}.fa-server:before{content:"\F233"}.fa-servicestack:before{content:"\F3EC"}.fa-shapes:before{content:"\F61F"}.fa-share:before{content:"\F064"}.fa-share-alt:before{content:"\F1E0"}.fa-share-alt-square:before{content:"\F1E1"}.fa-share-square:before{content:"\F14D"}.fa-shekel-sign:before{content:"\F20B"}.fa-shield-alt:before{content:"\F3ED"}.fa-ship:before{content:"\F21A"}.fa-shipping-fast:before{content:"\F48B"}.fa-shirtsinbulk:before{content:"\F214"}.fa-shoe-prints:before{content:"\F54B"}.fa-shopify:before{content:"\F957"}.fa-shopping-bag:before{content:"\F290"}.fa-shopping-basket:before{content:"\F291"}.fa-shopping-cart:before{content:"\F07A"}.fa-shopware:before{content:"\F5B5"}.fa-shower:before{content:"\F2CC"}.fa-shuttle-van:before{content:"\F5B6"}.fa-sign:before{content:"\F4D9"}.fa-sign-in-alt:before{content:"\F2F6"}.fa-sign-language:before{content:"\F2A7"}.fa-sign-out-alt:before{content:"\F2F5"}.fa-signal:before{content:"\F012"}.fa-signature:before{content:"\F5B7"}.fa-sim-card:before{content:"\F7C4"}.fa-simplybuilt:before{content:"\F215"}.fa-sistrix:before{content:"\F3EE"}.fa-sitemap:before{content:"\F0E8"}.fa-sith:before{content:"\F512"}.fa-skating:before{content:"\F7C5"}.fa-sketch:before{content:"\F7C6"}.fa-skiing:before{content:"\F7C9"}.fa-skiing-nordic:before{content:"\F7CA"}.fa-skull:before{content:"\F54C"}.fa-skull-crossbones:before{content:"\F714"}.fa-skyatlas:before{content:"\F216"}.fa-skype:before{content:"\F17E"}.fa-slack:before{content:"\F198"}.fa-slack-hash:before{content:"\F3EF"}.fa-slash:before{content:"\F715"}.fa-sleigh:before{content:"\F7CC"}.fa-sliders-h:before{content:"\F1DE"}.fa-slideshare:before{content:"\F1E7"}.fa-smile:before{content:"\F118"}.fa-smile-beam:before{content:"\F5B8"}.fa-smile-wink:before{content:"\F4DA"}.fa-smog:before{content:"\F75F"}.fa-smoking:before{content:"\F48D"}.fa-smoking-ban:before{content:"\F54D"}.fa-sms:before{content:"\F7CD"}.fa-snapchat:before{content:"\F2AB"}.fa-snapchat-ghost:before{content:"\F2AC"}.fa-snapchat-square:before{content:"\F2AD"}.fa-snowboarding:before{content:"\F7CE"}.fa-snowflake:before{content:"\F2DC"}.fa-snowman:before{content:"\F7D0"}.fa-snowplow:before{content:"\F7D2"}.fa-socks:before{content:"\F696"}.fa-solar-panel:before{content:"\F5BA"}.fa-sort:before{content:"\F0DC"}.fa-sort-alpha-down:before{content:"\F15D"}.fa-sort-alpha-down-alt:before{content:"\F881"}.fa-sort-alpha-up:before{content:"\F15E"}.fa-sort-alpha-up-alt:before{content:"\F882"}.fa-sort-amount-down:before{content:"\F160"}.fa-sort-amount-down-alt:before{content:"\F884"}.fa-sort-amount-up:before{content:"\F161"}.fa-sort-amount-up-alt:before{content:"\F885"}.fa-sort-down:before{content:"\F0DD"}.fa-sort-numeric-down:before{content:"\F162"}.fa-sort-numeric-down-alt:before{content:"\F886"}.fa-sort-numeric-up:before{content:"\F163"}.fa-sort-numeric-up-alt:before{content:"\F887"}.fa-sort-up:before{content:"\F0DE"}.fa-soundcloud:before{content:"\F1BE"}.fa-sourcetree:before{content:"\F7D3"}.fa-spa:before{content:"\F5BB"}.fa-space-shuttle:before{content:"\F197"}.fa-speakap:before{content:"\F3F3"}.fa-speaker-deck:before{content:"\F83C"}.fa-spell-check:before{content:"\F891"}.fa-spider:before{content:"\F717"}.fa-spinner:before{content:"\F110"}.fa-splotch:before{content:"\F5BC"}.fa-spotify:before{content:"\F1BC"}.fa-spray-can:before{content:"\F5BD"}.fa-square:before{content:"\F0C8"}.fa-square-full:before{content:"\F45C"}.fa-square-root-alt:before{content:"\F698"}.fa-squarespace:before{content:"\F5BE"}.fa-stack-exchange:before{content:"\F18D"}.fa-stack-overflow:before{content:"\F16C"}.fa-stackpath:before{content:"\F842"}.fa-stamp:before{content:"\F5BF"}.fa-star:before{content:"\F005"}.fa-star-and-crescent:before{content:"\F699"}.fa-star-half:before{content:"\F089"}.fa-star-half-alt:before{content:"\F5C0"}.fa-star-of-david:before{content:"\F69A"}.fa-star-of-life:before{content:"\F621"}.fa-staylinked:before{content:"\F3F5"}.fa-steam:before{content:"\F1B6"}.fa-steam-square:before{content:"\F1B7"}.fa-steam-symbol:before{content:"\F3F6"}.fa-step-backward:before{content:"\F048"}.fa-step-forward:before{content:"\F051"}.fa-stethoscope:before{content:"\F0F1"}.fa-sticker-mule:before{content:"\F3F7"}.fa-sticky-note:before{content:"\F249"}.fa-stop:before{content:"\F04D"}.fa-stop-circle:before{content:"\F28D"}.fa-stopwatch:before{content:"\F2F2"}.fa-store:before{content:"\F54E"}.fa-store-alt:before{content:"\F54F"}.fa-strava:before{content:"\F428"}.fa-stream:before{content:"\F550"}.fa-street-view:before{content:"\F21D"}.fa-strikethrough:before{content:"\F0CC"}.fa-stripe:before{content:"\F429"}.fa-stripe-s:before{content:"\F42A"}.fa-stroopwafel:before{content:"\F551"}.fa-studiovinari:before{content:"\F3F8"}.fa-stumbleupon:before{content:"\F1A4"}.fa-stumbleupon-circle:before{content:"\F1A3"}.fa-subscript:before{content:"\F12C"}.fa-subway:before{content:"\F239"}.fa-suitcase:before{content:"\F0F2"}.fa-suitcase-rolling:before{content:"\F5C1"}.fa-sun:before{content:"\F185"}.fa-superpowers:before{content:"\F2DD"}.fa-superscript:before{content:"\F12B"}.fa-supple:before{content:"\F3F9"}.fa-surprise:before{content:"\F5C2"}.fa-suse:before{content:"\F7D6"}.fa-swatchbook:before{content:"\F5C3"}.fa-swift:before{content:"\F8E1"}.fa-swimmer:before{content:"\F5C4"}.fa-swimming-pool:before{content:"\F5C5"}.fa-symfony:before{content:"\F83D"}.fa-synagogue:before{content:"\F69B"}.fa-sync:before{content:"\F021"}.fa-sync-alt:before{content:"\F2F1"}.fa-syringe:before{content:"\F48E"}.fa-table:before{content:"\F0CE"}.fa-table-tennis:before{content:"\F45D"}.fa-tablet:before{content:"\F10A"}.fa-tablet-alt:before{content:"\F3FA"}.fa-tablets:before{content:"\F490"}.fa-tachometer-alt:before{content:"\F3FD"}.fa-tag:before{content:"\F02B"}.fa-tags:before{content:"\F02C"}.fa-tape:before{content:"\F4DB"}.fa-tasks:before{content:"\F0AE"}.fa-taxi:before{content:"\F1BA"}.fa-teamspeak:before{content:"\F4F9"}.fa-teeth:before{content:"\F62E"}.fa-teeth-open:before{content:"\F62F"}.fa-telegram:before{content:"\F2C6"}.fa-telegram-plane:before{content:"\F3FE"}.fa-temperature-high:before{content:"\F769"}.fa-temperature-low:before{content:"\F76B"}.fa-tencent-weibo:before{content:"\F1D5"}.fa-tenge:before{content:"\F7D7"}.fa-terminal:before{content:"\F120"}.fa-text-height:before{content:"\F034"}.fa-text-width:before{content:"\F035"}.fa-th:before{content:"\F00A"}.fa-th-large:before{content:"\F009"}.fa-th-list:before{content:"\F00B"}.fa-the-red-yeti:before{content:"\F69D"}.fa-theater-masks:before{content:"\F630"}.fa-themeco:before{content:"\F5C6"}.fa-themeisle:before{content:"\F2B2"}.fa-thermometer:before{content:"\F491"}.fa-thermometer-empty:before{content:"\F2CB"}.fa-thermometer-full:before{content:"\F2C7"}.fa-thermometer-half:before{content:"\F2C9"}.fa-thermometer-quarter:before{content:"\F2CA"}.fa-thermometer-three-quarters:before{content:"\F2C8"}.fa-think-peaks:before{content:"\F731"}.fa-thumbs-down:before{content:"\F165"}.fa-thumbs-up:before{content:"\F164"}.fa-thumbtack:before{content:"\F08D"}.fa-ticket-alt:before{content:"\F3FF"}.fa-times:before{content:"\F00D"}.fa-times-circle:before{content:"\F057"}.fa-tint:before{content:"\F043"}.fa-tint-slash:before{content:"\F5C7"}.fa-tired:before{content:"\F5C8"}.fa-toggle-off:before{content:"\F204"}.fa-toggle-on:before{content:"\F205"}.fa-toilet:before{content:"\F7D8"}.fa-toilet-paper:before{content:"\F71E"}.fa-toolbox:before{content:"\F552"}.fa-tools:before{content:"\F7D9"}.fa-tooth:before{content:"\F5C9"}.fa-torah:before{content:"\F6A0"}.fa-torii-gate:before{content:"\F6A1"}.fa-tractor:before{content:"\F722"}.fa-trade-federation:before{content:"\F513"}.fa-trademark:before{content:"\F25C"}.fa-traffic-light:before{content:"\F637"}.fa-trailer:before{content:"\F941"}.fa-train:before{content:"\F238"}.fa-tram:before{content:"\F7DA"}.fa-transgender:before{content:"\F224"}.fa-transgender-alt:before{content:"\F225"}.fa-trash:before{content:"\F1F8"}.fa-trash-alt:before{content:"\F2ED"}.fa-trash-restore:before{content:"\F829"}.fa-trash-restore-alt:before{content:"\F82A"}.fa-tree:before{content:"\F1BB"}.fa-trello:before{content:"\F181"}.fa-tripadvisor:before{content:"\F262"}.fa-trophy:before{content:"\F091"}.fa-truck:before{content:"\F0D1"}.fa-truck-loading:before{content:"\F4DE"}.fa-truck-monster:before{content:"\F63B"}.fa-truck-moving:before{content:"\F4DF"}.fa-truck-pickup:before{content:"\F63C"}.fa-tshirt:before{content:"\F553"}.fa-tty:before{content:"\F1E4"}.fa-tumblr:before{content:"\F173"}.fa-tumblr-square:before{content:"\F174"}.fa-tv:before{content:"\F26C"}.fa-twitch:before{content:"\F1E8"}.fa-twitter:before{content:"\F099"}.fa-twitter-square:before{content:"\F081"}.fa-typo3:before{content:"\F42B"}.fa-uber:before{content:"\F402"}.fa-ubuntu:before{content:"\F7DF"}.fa-uikit:before{content:"\F403"}.fa-umbraco:before{content:"\F8E8"}.fa-umbrella:before{content:"\F0E9"}.fa-umbrella-beach:before{content:"\F5CA"}.fa-underline:before{content:"\F0CD"}.fa-undo:before{content:"\F0E2"}.fa-undo-alt:before{content:"\F2EA"}.fa-uniregistry:before{content:"\F404"}.fa-unity:before{content:"\F949"}.fa-universal-access:before{content:"\F29A"}.fa-university:before{content:"\F19C"}.fa-unlink:before{content:"\F127"}.fa-unlock:before{content:"\F09C"}.fa-unlock-alt:before{content:"\F13E"}.fa-untappd:before{content:"\F405"}.fa-upload:before{content:"\F093"}.fa-ups:before{content:"\F7E0"}.fa-usb:before{content:"\F287"}.fa-user:before{content:"\F007"}.fa-user-alt:before{content:"\F406"}.fa-user-alt-slash:before{content:"\F4FA"}.fa-user-astronaut:before{content:"\F4FB"}.fa-user-check:before{content:"\F4FC"}.fa-user-circle:before{content:"\F2BD"}.fa-user-clock:before{content:"\F4FD"}.fa-user-cog:before{content:"\F4FE"}.fa-user-edit:before{content:"\F4FF"}.fa-user-friends:before{content:"\F500"}.fa-user-graduate:before{content:"\F501"}.fa-user-injured:before{content:"\F728"}.fa-user-lock:before{content:"\F502"}.fa-user-md:before{content:"\F0F0"}.fa-user-minus:before{content:"\F503"}.fa-user-ninja:before{content:"\F504"}.fa-user-nurse:before{content:"\F82F"}.fa-user-plus:before{content:"\F234"}.fa-user-secret:before{content:"\F21B"}.fa-user-shield:before{content:"\F505"}.fa-user-slash:before{content:"\F506"}.fa-user-tag:before{content:"\F507"}.fa-user-tie:before{content:"\F508"}.fa-user-times:before{content:"\F235"}.fa-users:before{content:"\F0C0"}.fa-users-cog:before{content:"\F509"}.fa-usps:before{content:"\F7E1"}.fa-ussunnah:before{content:"\F407"}.fa-utensil-spoon:before{content:"\F2E5"}.fa-utensils:before{content:"\F2E7"}.fa-vaadin:before{content:"\F408"}.fa-vector-square:before{content:"\F5CB"}.fa-venus:before{content:"\F221"}.fa-venus-double:before{content:"\F226"}.fa-venus-mars:before{content:"\F228"}.fa-viacoin:before{content:"\F237"}.fa-viadeo:before{content:"\F2A9"}.fa-viadeo-square:before{content:"\F2AA"}.fa-vial:before{content:"\F492"}.fa-vials:before{content:"\F493"}.fa-viber:before{content:"\F409"}.fa-video:before{content:"\F03D"}.fa-video-slash:before{content:"\F4E2"}.fa-vihara:before{content:"\F6A7"}.fa-vimeo:before{content:"\F40A"}.fa-vimeo-square:before{content:"\F194"}.fa-vimeo-v:before{content:"\F27D"}.fa-vine:before{content:"\F1CA"}.fa-vk:before{content:"\F189"}.fa-vnv:before{content:"\F40B"}.fa-voicemail:before{content:"\F897"}.fa-volleyball-ball:before{content:"\F45F"}.fa-volume-down:before{content:"\F027"}.fa-volume-mute:before{content:"\F6A9"}.fa-volume-off:before{content:"\F026"}.fa-volume-up:before{content:"\F028"}.fa-vote-yea:before{content:"\F772"}.fa-vr-cardboard:before{content:"\F729"}.fa-vuejs:before{content:"\F41F"}.fa-walking:before{content:"\F554"}.fa-wallet:before{content:"\F555"}.fa-warehouse:before{content:"\F494"}.fa-water:before{content:"\F773"}.fa-wave-square:before{content:"\F83E"}.fa-waze:before{content:"\F83F"}.fa-weebly:before{content:"\F5CC"}.fa-weibo:before{content:"\F18A"}.fa-weight:before{content:"\F496"}.fa-weight-hanging:before{content:"\F5CD"}.fa-weixin:before{content:"\F1D7"}.fa-whatsapp:before{content:"\F232"}.fa-whatsapp-square:before{content:"\F40C"}.fa-wheelchair:before{content:"\F193"}.fa-whmcs:before{content:"\F40D"}.fa-wifi:before{content:"\F1EB"}.fa-wikipedia-w:before{content:"\F266"}.fa-wind:before{content:"\F72E"}.fa-window-close:before{content:"\F410"}.fa-window-maximize:before{content:"\F2D0"}.fa-window-minimize:before{content:"\F2D1"}.fa-window-restore:before{content:"\F2D2"}.fa-windows:before{content:"\F17A"}.fa-wine-bottle:before{content:"\F72F"}.fa-wine-glass:before{content:"\F4E3"}.fa-wine-glass-alt:before{content:"\F5CE"}.fa-wix:before{content:"\F5CF"}.fa-wizards-of-the-coast:before{content:"\F730"}.fa-wolf-pack-battalion:before{content:"\F514"}.fa-won-sign:before{content:"\F159"}.fa-wordpress:before{content:"\F19A"}.fa-wordpress-simple:before{content:"\F411"}.fa-wpbeginner:before{content:"\F297"}.fa-wpexplorer:before{content:"\F2DE"}.fa-wpforms:before{content:"\F298"}.fa-wpressr:before{content:"\F3E4"}.fa-wrench:before{content:"\F0AD"}.fa-x-ray:before{content:"\F497"}.fa-xbox:before{content:"\F412"}.fa-xing:before{content:"\F168"}.fa-xing-square:before{content:"\F169"}.fa-y-combinator:before{content:"\F23B"}.fa-yahoo:before{content:"\F19E"}.fa-yammer:before{content:"\F840"}.fa-yandex:before{content:"\F413"}.fa-yandex-international:before{content:"\F414"}.fa-yarn:before{content:"\F7E3"}.fa-yelp:before{content:"\F1E9"}.fa-yen-sign:before{content:"\F157"}.fa-yin-yang:before{content:"\F6AD"}.fa-yoast:before{content:"\F2B1"}.fa-youtube:before{content:"\F167"}.fa-youtube-square:before{content:"\F431"}.fa-zhihu:before{content:"\F63F"}.sr-only{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sr-only-focusable:active,.sr-only-focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}@font-face{font-family:Font Awesome\ 5 Brands;font-style:normal;font-weight:400;font-display:auto;src:url(/openj9/static/fa-brands-400-57dcda6f368ea90179f75cbdae96c263.eot);src:url(/openj9/static/fa-brands-400-57dcda6f368ea90179f75cbdae96c263.eot?#iefix) format("embedded-opentype"),url(/openj9/static/fa-brands-400-067595ad77ecc0db9c81c8905a7eef32.woff2) format("woff2"),url(/openj9/static/fa-brands-400-b564da88bbf0c4aa446fa19653713cd1.woff) format("woff"),url(/openj9/static/fa-brands-400-9ec698d1a597bff5df337094b71ddaaf.ttf) format("truetype"),url(/openj9/static/fa-brands-400-9d67fa1429375bd2a899a17eb77d0342.svg#fontawesome) format("svg")}.fab{font-family:Font Awesome\ 5 Brands}@font-face{font-family:Font Awesome\ 5 Free;font-style:normal;font-weight:400;font-display:auto;src:url(/openj9/static/fa-regular-400-3351f435b3c9037fd88aeb04dc1e43bc.eot);src:url(/openj9/static/fa-regular-400-3351f435b3c9037fd88aeb04dc1e43bc.eot?#iefix) format("embedded-opentype"),url(/openj9/static/fa-regular-400-4165c2688309cbfb1b877caf8f75afb5.woff2) format("woff2"),url(/openj9/static/fa-regular-400-73cf49a2232c06c920b7a34e36bfb58c.woff) format("woff"),url(/openj9/static/fa-regular-400-a0e3ac82940c1998c5977fd4bc1f5ef6.ttf) format("truetype"),url(/openj9/static/fa-regular-400-5d0861781aeef6c82fda3a3076954a1b.svg#fontawesome) format("svg")}.fab,.far{font-weight:400}@font-face{font-family:Font Awesome\ 5 Free;font-style:normal;font-weight:900;font-display:auto;src:url(/openj9/static/fa-solid-900-89e02bae13c9131c7468b1e729339ac1.eot);src:url(/openj9/static/fa-solid-900-89e02bae13c9131c7468b1e729339ac1.eot?#iefix) format("embedded-opentype"),url(/openj9/static/fa-solid-900-55eb2a60e8181f0e68b558c991973bf0.woff2) format("woff2"),url(/openj9/static/fa-solid-900-cdfec5cf5e9840889790bcf2c4042583.woff) format("woff"),url(/openj9/static/fa-solid-900-75f38a159982b6bd1704891332d95fa7.ttf) format("truetype"),url(/openj9/static/fa-solid-900-0724bb8b89ab6b8b9b7df917b17be0b7.svg#fontawesome) format("svg")}.fa,.far,.fas{font-family:Font Awesome\ 5 Free}.fa,.fas{font-weight:900}</style><meta name="generator" content="Gatsby 2.19.7"/><link rel="icon" href="/openj9/favicon-32x32.png?v=521b6ab03638f6a52fffc5f7bf4c617e"/><link rel="manifest" href="/openj9/manifest.webmanifest"/><link rel="apple-touch-icon" sizes="48x48" href="/openj9/icons/icon-48x48.png?v=521b6ab03638f6a52fffc5f7bf4c617e"/><link rel="apple-touch-icon" sizes="72x72" href="/openj9/icons/icon-72x72.png?v=521b6ab03638f6a52fffc5f7bf4c617e"/><link rel="apple-touch-icon" sizes="96x96" href="/openj9/icons/icon-96x96.png?v=521b6ab03638f6a52fffc5f7bf4c617e"/><link rel="apple-touch-icon" sizes="144x144" href="/openj9/icons/icon-144x144.png?v=521b6ab03638f6a52fffc5f7bf4c617e"/><link rel="apple-touch-icon" sizes="192x192" href="/openj9/icons/icon-192x192.png?v=521b6ab03638f6a52fffc5f7bf4c617e"/><link rel="apple-touch-icon" sizes="256x256" href="/openj9/icons/icon-256x256.png?v=521b6ab03638f6a52fffc5f7bf4c617e"/><link rel="apple-touch-icon" sizes="384x384" href="/openj9/icons/icon-384x384.png?v=521b6ab03638f6a52fffc5f7bf4c617e"/><link rel="apple-touch-icon" sizes="512x512" href="/openj9/icons/icon-512x512.png?v=521b6ab03638f6a52fffc5f7bf4c617e"/><link rel="preconnect dns-prefetch" href="https://www.google-analytics.com"/><link as="script" rel="preload" href="/openj9/component---src-pages-about-js-f3472e79e3f9cd8dc280.js"/><link as="script" rel="preload" href="/openj9/commons-b35008cb74c6abd7ace8.js"/><link as="script" rel="preload" href="/openj9/app-2da2270a07d62743bcd4.js"/><link as="script" rel="preload" href="/openj9/styles-cc4082ebb0cb6903d934.js"/><link as="script" rel="preload" href="/openj9/webpack-runtime-4324011276ab16472ff8.js"/><link as="fetch" rel="preload" href="/openj9/page-data/about/page-data.json" crossorigin="anonymous"/></head><body><div id="___gatsby"><div style="outline:none" tabindex="-1" role="group" id="gatsby-focus-wrapper"><style data-emotion-css="t923zi">body{color:text;background-color:var(--theme-ui-colors-background,#FFFFFF);}</style><style data-emotion-css="1gb9wyy">*{box-sizing:border-box;}body{margin:0;font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.5;font-weight:400;}</style><style data-emotion-css="1xgro3h">*{padding:0;margin:0;}</style><style data-emotion-css="gns71q">.css-gns71q{display:none;background-color:var(--theme-ui-colors-primary,#434343);width:100%;color:var(--theme-ui-colors-lightText,#d8d8d8);padding-left:40px;padding-right:40px;padding-top:32px;padding-bottom:32px;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}@media screen and (min-width:35rem){.css-gns71q{display:none;}}@media screen and (min-width:62.5rem){.css-gns71q{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}}@media screen and (min-width:85rem){.css-gns71q{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}}</style><header class="css-gns71q"><style data-emotion-css="4golyb">.css-4golyb{-webkit-flex:1;-ms-flex:1;flex:1;opacity:1;pointer-events:all;}</style><div class="css-4golyb"><a href="/openj9/"><img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNzlweCIgaGVpZ2h0PSIzM3B4IiB2aWV3Qm94PSIwIDAgNzkgMzMiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5Mb2dvPC90aXRsZT4KICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPgogICAgPGcgaWQ9IlBhZ2UtMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9IkxvZ28iIGZpbGwtcnVsZT0ibm9uemVybyI+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMC4wNDUyMzE4LDE5LjQ2MTIzMzcgQzkuMjQwNjc1MjUsMjAuNjk4NDMyOCA4LjEyNjE5NTA0LDIxLjMxNjY4NzggNi43MDA3Nzc4OSwyMS4zMTY2ODc4IEM1LjMxNTQ1ODI5LDIxLjMxNjY4NzggNC4yMDg2NTAxNywyMC43MTkxMTAzIDMuMzgwMjA4NzgsMTkuNTIzODE3NCBDMi41NTIyMDE2NiwxOC4zMjgyNDg5IDIuMTM4MDUzMzUsMTYuNzc4NDA3MSAyLjEzODA1MzM1LDE0Ljg3MzMyNzMgQzIuMTM4MDUzMzUsMTIuOTIyNzU3MSAyLjU0ODE0ODQ4LDExLjM0Mzk2NyAzLjM2ODMzODc1LDEwLjEzNzIzMjYgQzQuMTg4NjczNzgsOC45MzA2MzYxMiA1LjI5NTE5MjM4LDguMzI2OTkzMjQgNi42ODg3NjMxLDguMzI2OTkzMjQgQzguMDY2NTU1MzcsOC4zMjY5OTMyNCA5LjE3MTE5MjE0LDguODg1MjgzNjUgMTAuMDAzMzk3MiwxMC4wMDA0ODYgQzEwLjgzNTYwMjMsMTEuMTE2Mzc3NSAxMS4yNTE3NzcyLDEyLjY3NjI4MjIgMTEuMjUxNzc3MiwxNC42Nzk2NDg4IEMxMS4yNTE3NzcyLDE2LjYzMDM1NjggMTAuODQ5NDk4OSwxOC4yMjQxNzI1IDEwLjA0NTIzMTgsMTkuNDYxMjMzNyBNNi43MTI3OTI2OCw2LjczNDY5Mzg4IEM0LjY5MDExMDI1LDYuNzM0NjkzODggMy4wNjU2NTI5Myw3LjUwMTQxMjcgMS44MzkyNzU5NSw5LjAzNDAyMzI0IEMwLjYxMzE4ODQ4OSwxMC41NjY3NzE2IDAsMTIuNTA5NDg0NCAwLDE0Ljg2MTg4NTggQzAsMTcuMTE1NzI0OCAwLjU4NTM5NTI0MywxOS4wMTg1OTkxIDEuNzU2MDQwOTcsMjAuNTcwMDk1IEMyLjkyNjU0MTk1LDIyLjEyMjAwNDQgNC41NTg4MTYxMiwyMi44OTc5NTkyIDYuNjUzMDA4MjUsMjIuODk3OTU5MiBDOC43NzkxOTE1NywyMi44OTc5NTkyIDEwLjQzMzQ2ODcsMjIuMDgwMDk4MiAxMS42MTYyNzQsMjAuNDQ1MDY1NSBDMTIuNzk4NTAwMiwxOC44MDk3NTcxIDEzLjM4OTgzMDUsMTYuODkxNDQzNyAxMy4zODk4MzA1LDE0LjY5MTIyODEgQzEzLjM4OTgzMDUsMTIuMzk5NjE4MyAxMi43ODA1NTA0LDEwLjUwMDQ2NiAxMS41NjIyNzk4LDguOTkzOTA5MDQgQzEwLjM0Mzg2NDUsNy40ODgwNDEzIDguNzI3MzY4NzQsNi43MzQ2OTM4OCA2LjcxMjc5MjY4LDYuNzM0NjkzODgiIGlkPSJTaGFwZSIgZmlsbD0iIzVEQTdBMyI+PC9wYXRoPgogICAgICAgICAgICA8cGF0aCBkPSJNMjIuOTc0MzgxNywyMS4zNjc1NDcyIEMyMi4zMTQxOTk5LDIyLjA3MDg5MDkgMjEuNTU1MzY4NiwyMi40MjMxMzExIDIwLjY5OTU0OTUsMjIuNDIzMTMxMSBDMTkuOTYwMDU1MywyMi40MjMxMzExIDE5LjI1MDkyNjQsMjIuMTMwOTk0OCAxOC41Njk3NDU3LDIxLjU0NjU4MDEgQzE3Ljg4ODI2MjksMjAuOTYzMDE3OSAxNy41MTMzMDM4LDIwLjIyMzAxNTEgMTcuMzYyMjMyNSwxOS4zMjc5OTI0IEwxNy4zNjIyMzI1LDE1Ljk4NjA0NCBDMTcuNjY0Mzc1MiwxNS4xNzMxNDkxIDE3Ljk2OTM4ODIsMTQuNDgxNDU2OCAxOC41ODg0Nzg2LDEzLjkxMDk2NjggQzE5LjIwNzU2ODksMTMuMzQwNDc2OSAxOS45MDY3MjcxLDEzLjA1NTE2MDkgMjAuNjg3OTE3LDEzLjA1NTE2MDkgQzIxLjY3NjgzLDEzLjA1NTE2MDkgMjIuNDcwNDA3NywxMy40NTk2OTAxIDIzLjA2ODgwMTMsMTQuMjY4NjA2NSBDMjMuNjY2ODkyNywxNS4wNzc1MjI4IDIzLjk2NjAxNCwxNi4yMjg0NDg5IDIzLjk2NjAxNCwxNy43MjE1MjY5IEMyMy45NjYwMTQsMTkuNDQ4OTEwNyAyMy42MzUxNjc3LDIwLjY2NDYyOTcgMjIuOTc0MzgxNywyMS4zNjc1NDcyIE0yMS4xNjI3MzQyLDExLjQ0ODk3OTYgQzE5LjQwMzM1NzQsMTEuNDQ4OTc5NiAxOC4xMTc1ODkyLDEyLjMyNDUzNiAxNy4yMTExNjEyLDE0LjA3NDc5NjIgTDE3LjIxMTE2MTIsMTEuNjk4MjA0OCBMMTUuMzk4MzA1MSwxMS42OTgyMDQ4IEwxNS4zOTgzMDUxLDI3LjYxMjI0NDkgTDE3LjM2MjIzMjUsMjcuNjEyMjQ0OSBMMTcuMzYyMjMyNSwyMS44MjQ5MzM3IEMxOC4yNjg2NjA1LDIzLjIzOTQzNjEgMTkuNTA4OTU2MiwyMy45NDcwNDI1IDIxLjA4NzY1MTcsMjMuOTQ3MDQyNSBDMjIuNTU4OTM1NSwyMy45NDcwNDI1IDIzLjc2MjgyMywyMy4zNzk2Nzg2IDI0LjcwMjAzMzUsMjIuMjQ1NTE5MSBDMjUuNjQwNzkwOCwyMS4xMTA3OTEyIDI2LjExMDE2OTUsMTkuNTc3NTAxOCAyNi4xMTAxNjk1LDE3LjY0NTM2NjkgQzI2LjExMDE2OTUsMTUuODUzNDc0NCAyNS42NjI5OTgzLDE0LjM3MjkwMDMgMjQuNzUwNTI3NCwxMy4yMDMzNjA0IEMyMy44Mzc2MDMzLDEyLjAzMzY3ODUgMjIuNjQ4MDY3NiwxMS40NDg5Nzk2IDIxLjE2MjczNDIsMTEuNDQ4OTc5NiIgaWQ9IlNoYXBlIiBmaWxsPSIjNURBN0EzIj48L3BhdGg+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMC4yNjM1ODc2LDE2LjM2MzMzNjcgQzMwLjM0MTcwNzYsMTUuMjU4OTg2OCAzMC43MDEzMTY2LDE0LjQwODM2MTMgMzEuMzQxNzAwNiwxMy43NzA0NjExIEMzMS45ODE2NTYxLDEzLjEzMjQyMyAzMi43NjE0Mjc5LDEyLjgwNDAxNjkgMzMuNjgwNzMwMiwxMi44MDQwMTY5IEMzNC4zNjQxMDE2LDEyLjgwNDAxNjkgMzQuOTQ5MDczMiwxMi45NzU3NDMzIDM1LjQzNjUwMiwxMy4zMjkxMzUzIEMzNS45MjM1MDIzLDEzLjY4MTk3NTEgMzYuMjY5NDAxLDE0LjEyNTc4NTcgMzYuNDczNDg0MSwxNC42MjcwMjI1IEMzNi42NzgxMzg1LDE1LjEyODEyMTMgMzYuNzg3NTM1MSwxNS42NzMxMTggMzYuODAzMzg3NiwxNi4zNjMzMzY3IEwzMC4yNjM1ODc2LDE2LjM2MzMzNjcgWiBNMzcuMzc1MjIwMiwxMy4wMzA2ODQ4IEMzNi40MjgzNTQ1LDExLjk5MDI0OTEgMzUuMTc3NDM1LDExLjQ0ODk3OTYgMzMuNjIxNzQ3NSwxMS40NDg5Nzk2IEMzMi4wNDI5MjM5LDExLjQ0ODk3OTYgMzAuNzMwNTkzOCwxMi4wMDI1MzUgMjkuNjg2MDQyNCwxMy4xMzE0NTY3IEMyOC42NDEyMDU0LDE0LjI1OTgyNjIgMjguMTE4NjQ0MSwxNS43MzQ5NjE2IDI4LjExODY0NDEsMTcuNTY2OTQwMSBDMjguMTE4NjQ0MSwxOS4zNjA4MTg0IDI4LjYyMTA2ODQsMjAuODA3Mzc4OCAyOS42MjY5MTY4LDIxLjkxMzM4NTIgQzMwLjYzMjQ3OTYsMjMuMDE5OTQzOCAzMS45NDg1MjMsMjMuNTcxNDI4NiAzMy41NzQ5MDQsMjMuNTcxNDI4NiBDMzQuODA4MjU3MywyMy41NzE0Mjg2IDM1Ljg4MDIyOTIsMjMuMjQ4OTU4NCAzNi43OTE1MzM5LDIyLjYwNDcwODMgQzM3LjcwMzEyNDIsMjEuOTYwNzM0MiAzOC4zMTU4MDIsMjEuMTQ3MzgwNSAzOC42MzAxMzg2LDIwLjE2NDA5NSBMMzYuOTA5OTI3OCwxOS44MjI3MTI4IEMzNi4yODg5NjY3LDIxLjMzMzQ2MzUgMzUuMjIwNTY1MiwyMi4wODkyNTI5IDMzLjcwNDI5NDcsMjIuMDg5MjUyOSBDMzIuODYzNjgzNywyMi4wODkyNTI5IDMyLjA2NjM0NTYsMjEuODI4MDc0MiAzMS4zMTIyODA3LDIxLjIyMDY4MTcgQzMwLjU1ODA3MjksMjAuNjEzMDEzMiAzMC4xODA3NTQ3LDE5LjQwMDI5OSAzMC4xODA3NTQ3LDE3Ljc0Mzc3NDEgTDM4LjgzMDUwODUsMTcuNzQzNzc0MSBDMzguODA2OTQzOSwxNS41MzUwNzQzIDM4LjMyMTgwMDIsMTQuMDcwODQ0MyAzNy4zNzUyMjAyLDEzLjAzMDY4NDggTDM3LjM3NTIyMDIsMTMuMDMwNjg0OCBaIiBpZD0iU2hhcGUiIGZpbGw9IiM1REE3QTMiPjwvcGF0aD4KICAgICAgICAgICAgPHBhdGggZD0iTTQ4LjQzNjA2MzksMTIuMTMxMzMxIEM0Ny43NjA0NDM5LDExLjY3NjU3MTQgNDYuOTE5MzU2NiwxMS40NDg5Nzk2IDQ1Ljk1ODg0MjIsMTEuNDQ4OTc5NiBDNDQuMjkzMDQ0MywxMS40NDg5Nzk2IDQyLjk1MDQ1NjMsMTIuMjgxMTc0IDQxLjg2ODk3LDEzLjk0NTEzODggTDQxLjg2ODk3LDExLjY5NzA2ODggTDQwLjE2OTQ5MTUsMTEuNjk3MDY4OCBMNDAuMTY5NDkxNSwyMy41NzE0Mjg2IEw0Mi4wMjM0NjgxLDIzLjU3MTQyODYgTDQyLjAyMzQ2ODEsMTcuMDk0Mzg3NSBDNDIuMDIzNDY4MSwxNS44NzQwMTQ3IDQyLjM4NTkyMDUsMTQuODg5OTk4MiA0My4wNzg1MzUyLDE0LjE0MzE4NiBDNDMuNzcwNjg2NCwxMy4zOTY3OTggNDQuNjM1NDEyLDEzLjAyMzYwNCA0NS42NTUwOTkxLDEzLjAyMzYwNCBDNDYuMzk0NjgxMiwxMy4wMjM2MDQgNDcuMDQyODAwNSwxMy4yNDUyNTg2IDQ3LjU2MTE0MTUsMTMuNjg4NTY3OSBDNDguMDc5NjM2OSwxNC4xMzE1OTQ0IDQ4LjM1Nzg4NzksMTQuODk3NjMxNyA0OC4zNTc4ODc5LDE1Ljk4NjUzODQgTDQ4LjM1Nzg4NzksMjMuNTcxNDI4NiBMNTAuMjExODY0NCwyMy41NzE0Mjg2IEw1MC4yMTE4NjQ0LDE2Ljc0NDUxODEgQzUwLjIxMTg2NDQsMTUuMjU5Mzc1NSA1MC4wODE0NjgxLDE0LjIzMzA5MTkgNDkuODMwNDA4NywxMy42NjUyNDMyIEM0OS41Nzk2NTg0LDEzLjA5NzM5NDYgNDkuMTExODM4MywxMi41ODYwOTA1IDQ4LjQzNjA2MzksMTIuMTMxMzMxIFoiIGlkPSJTaGFwZSIgZmlsbD0iIzVEQTdBMyI+PC9wYXRoPgogICAgICAgICAgICA8cGF0aCBkPSJNNTcuNzMyOTYwNywxOS4zMjIyNzI0IEM1Ny43MzI5NjA3LDIwLjIxNjkxMjkgNTcuNjY0MDE3MywyMC44NjM1NjU5IDU3LjUyOTgzNDEsMjEuMjYzMjQ2NCBDNTcuMzk1MjIzNiwyMS42NjI0OTE5IDU3LjEzMTQxNTQsMjEuOTg3NjMxMSA1Ni43Mzk0MDY4LDIyLjIzOTM4OTIgQzU2LjM0NzY4MywyMi40OTA4NTczIDU1LjY5NjI4MiwyMi42MTYxNTYzIDU0Ljg2OTM4ODcsMjIuNjE2MTU2MyBDNTQuMjg4MDcwNywyMi42MTYxNTYzIDUzLjc0NDUwMDUsMjIuNTM4NTY5NSA1Mi44ODk4MzA1LDIyLjM4MzI1MSBMNTIuODg5ODMwNSwyMy45MzQ2OTYgQzUzLjc0NDUwMDUsMjQuMTQxMjA3MyA1NC4zNzg4MDgyLDI0LjI0NDg5OCA1NS4wOTc0NDMyLDI0LjI0NDg5OCBDNTYuNDM5NTYsMjQuMjQ0ODk4IDU3LjUzNTEwNDYsMjMuODgyNDg4MSA1OC4zNDc4OTU4LDIzLjE1ODM5MzQgQzU5LjE2MDQwMjEsMjIuNDMzODYzNyA1OS41ODQ3NDU4LDIxLjE1NDkxNSA1OS41ODQ3NDU4LDE5LjMyMTExMjMgTDU5LjU4NDc0NTgsOC43NTUxMDIwNCBMNTcuNzMyOTYwNyw4Ljc1NTEwMjA0IEw1Ny43MzI5NjA3LDE5LjMyMjI3MjQgWiIgaWQ9IlNoYXBlIiBmaWxsPSIjRkZGRkZGIj48L3BhdGg+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik02OS4yNDA4MTE5LDE2LjIyNTg5MDQgQzY4LjU2Njc1NzgsMTYuOTQyNzI2NiA2Ny43MzIxNTUyLDE3LjMwMTIxNiA2Ni43Mzc0MTk4LDE3LjMwMTIxNiBDNjUuODMzODMyNiwxNy4zMDEyMTYgNjUuMDQyMDMzNywxNi45OTE5NDIyIDY0LjM2MTA1MzQsMTYuMzczNTM3MyBDNjMuNjgwMjExNiwxNS43NTQ3MDQzIDYzLjMzOTcyMTUsMTQuOTE0MTg3MiA2My4zMzk3MjE1LDEzLjg1MTI3MjQgQzYzLjMzOTcyMTUsMTIuODYxOTY3MiA2My42NDY4Mjc1LDEyLjAyMjQ0ODUgNjQuMjYwNzYyNiwxMS4zMzQ5OTkxIEM2NC44NzQxNDM1LDEwLjY0NzEyMTYgNjUuNzEwNDA4NCwxMC4zMDMzMjU2IDY2Ljc2OTAwMzEsMTAuMzAzMzI1NiBDNjcuODEzMzI5OCwxMC4zMDMzMjU2IDY4LjY1NDk5NzEsMTAuNjM3ODQ5MSA2OS4yOTM0NTA4LDExLjMwNzYwOTUgQzY5LjkzMjE4MTUsMTEuOTc3MjI3MiA3MC4yNTE0Nzc2LDEyLjc3ODA4NjYgNzAuMjUxNDc3NiwxMy43MDkzMzE3IEM3MC4yNTE0Nzc2LDE0LjY3MDEwNjIgNjkuOTE0MzEyLDE1LjUwOTA1NDIgNjkuMjQwODExOSwxNi4yMjU4OTA0IE03MC44NTQ3NDYzLDEwLjcyNDE1NDggQzY5Ljg4ODI2OTYsOS40MTIwMjM1NyA2OC40OTgwNTAzLDguNzU1MTAyMDQgNjYuNjg0MjI2OCw4Ljc1NTEwMjA0IEM2NS4yMDI1ODIxLDguNzU1MTAyMDQgNjMuOTgzNDM5LDkuMjU3MjQ0MDEgNjMuMDI3NDkwMSwxMC4yNjExIEM2Mi4wNzA5ODcsMTEuMjY1MjQxMyA2MS41OTMyMjAzLDEyLjQ3MjgwNzEgNjEuNTkzMjIwMywxMy44ODQyMjU1IEM2MS41OTMyMjAzLDE1LjI3MzgxNzggNjIuMDQ3OTkyMiwxNi40Mzk1ODYgNjIuOTU4MzY3LDE3LjM4MTY3MjkgQzYzLjg2ODg4MDMsMTguMzIzNjE3IDY0Ljk5NDI0MzIsMTguNzk0ODAzMSA2Ni4zMzQ3MzI3LDE4Ljc5NDgwMzEgQzY4LjIzMzA1NTMsMTguNzk0ODAzMSA2OS42NTUxMzUsMTcuOTAwNzkwNiA3MC42MDA4MzMyLDE2LjExMzA1MTEgQzcwLjU3OTUwMDYsMTguMTU1MTQyNyA3MC4yMjEyNzk1LDE5Ljc3MjI2ODEgNjkuNTI2NTg1NCwyMC45NjM5OTkzIEM2OC44MzEzMzcyLDIyLjE1NjAxNTkgNjcuNzk1ODc1OSwyMi43NTE0NTM2IDY2LjQxOTUwODksMjIuNzUxNDUzNiBDNjUuMDAxNTg0OSwyMi43NTE0NTM2IDYzLjk5MjMwNDUsMjIuMDY1MDAyNyA2My4zOTIzNjAzLDIwLjY5MTM4NzYgTDYxLjk0MjI5ODksMjEuMjM2NjExMSBDNjIuNzA0MTc2OCwyMy4yNDIxODMyIDY0LjE4OTU2MTYsMjQuMjQ0ODk4IDY2LjM5ODczMDQsMjQuMjQ0ODk4IEM2OC4yODk0MzQyLDI0LjI0NDg5OCA2OS43NDY5NzU5LDIzLjQ5NzgxOTEgNzAuNzcwMTA4NiwyMi4wMDM1MTg4IEM3MS43OTMyNDEzLDIwLjUwOTA3NTggNzIuMzA1MDg0NywxOC41NTQ1NzM4IDcyLjMwNTA4NDcsMTYuMTQwMDEyNyBDNzIuMzA1MDg0NywxMy44NDIxNDI2IDcxLjgyMTYzODYsMTIuMDM2ODU2NiA3MC44NTQ3NDYzLDEwLjcyNDE1NDgiIGlkPSJTaGFwZSIgZmlsbD0iI0ZGRkZGRiI+PC9wYXRoPgogICAgICAgICAgICA8cGF0aCBkPSJNNDguODQzNzkwMSwyNC42NDQ3MTU3IEM0OS41NDM5Mzk0LDI1LjkwNTU0OTIgNTAuNDE5NDA5OCwyNy4wOTIxMjI5IDUxLjQ3MDIwMTMsMjguMTY3MjQ1MyBDNTcuNzY4MDE2NSwzNC42MTA5MTgyIDY3Ljk3ODc5MjcsMzQuNjEwOTE4MiA3NC4yNzY2MDc5LDI4LjE2NzI0NTMgQzgwLjU3NDQ2NCwyMS43MjM2MDAzIDgwLjU3NDQ2NCwxMS4yNzY0MDE4IDc0LjI3NjYwNzksNC44MzI3NTY4MyBDNjcuOTc4NzkyNywtMS42MTA5MTg5NCA1Ny43NjgwMTY1LC0xLjYxMDkxODk0IDUxLjQ3MDIwMTMsNC44MzI3NTY4MyBDNDkuNjA2NzAxNiw2LjczOTM5NzA0IDQ4LjI5NDU5ODMsOC45OTY1NjQ4MyA0Ny41MzM4OTgzLDExLjM5NjgyMjkgTDQ4LjM3MDI2NzIsMTEuNzc3ODE5NiBDNDkuMDgzNDMyNSw5LjQ3ODI5OTU2IDUwLjMzMTIyMjcsNy4zMTQ3NjEyMiA1Mi4xMTM2MzM1LDUuNDkxMDg4OTIgQzU4LjA1NjA5NDgsLTAuNTg4OTk5Mjg4IDY3LjY5MDcyMTIsLTAuNTg4OTk5Mjg4IDczLjYzMzE3NTcsNS40OTEwODg5MiBDNzkuNTc1NjcxMiwxMS41NzExNDM2IDc5LjU3NTY3MTIsMjEuNDI4ODU1NyA3My42MzMxNzU3LDI3LjUwODkxNDYgQzY3LjY5MDcyMTIsMzMuNTg4OTkzIDU4LjA1NjA5NDgsMzMuNTg4OTkzIDUyLjExMzYzMzUsMjcuNTA4OTE0NiBDNTEuMTQ0MDY3NywyNi41MTY4OTg3IDUwLjMzMjY5OTgsMjUuNDI0MzI2NyA0OS42Nzk1MTYxLDI0LjI2NDAwNzMgTDQ4Ljg0Mzc5MDEsMjQuNjQ0NzE1NyBaIiBpZD0iU2hhcGUiIGZpbGw9IiM1REE3QTMiPjwvcGF0aD4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==" alt="OpenJ9 Logo"/></a></div><style data-emotion-css="kzfr2u">.css-kzfr2u{-webkit-flex:2;-ms-flex:2;flex:2;}</style><nav class="css-kzfr2u"><style data-emotion-css="d1fq55">.css-d1fq55{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;list-style:none;-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end;}.css-d1fq55 li{padding:8px;margin-left:8px;margin-right:8px;}.css-d1fq55 li a{color:white;-webkit-text-decoration:none;text-decoration:none;}.css-d1fq55 li a:hover{color:var(--theme-ui-colors-links,#5DA7A3);}.css-d1fq55 li:first-of-type{margin-left:0;}.css-d1fq55 li:last-child{margin-right:0;padding-right:0;}</style><ul class="css-d1fq55"><li><a href="/openj9/">Home</a></li><li><a href="/openj9/about">About</a></li><li><a href="https://www.eclipse.org/openj9/docs/" rel="noopener noreferrer" target="_blank">Docs</a></li><li><a href="/openj9/performance">Performance</a></li><li><a href="/openj9/news">News</a></li></ul></nav><style data-emotion-css="1rr4qq7">.css-1rr4qq7{-webkit-flex:1;-ms-flex:1;flex:1;}</style><nav class="css-1rr4qq7"><ul class="css-d1fq55"><li><a href="https://twitter.com/openj9/" rel="noopener noreferrer" target="_blank"> <img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIyNXB4IiB2aWV3Qm94PSIwIDAgMjUgMjUiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5Ud2l0dGVyPC90aXRsZT4KICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPgogICAgPGcgaWQ9IlBhZ2UtMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9IlR3aXR0ZXIiIGZpbGwtcnVsZT0ibm9uemVybyI+CiAgICAgICAgICAgIDxnIGlkPSJ0d2l0dGVyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjAwMDAwMCwgMC4yOTg4NzkpIj4KICAgICAgICAgICAgICAgIDxlbGxpcHNlIGlkPSJPdmFsLXBhdGgiIGZpbGw9IiM0MzQzNDMiIGN4PSIxMi41MDAyMjEyIiBjeT0iMTIuMjcyNzI3MyIgcng9IjEyLjUiIHJ5PSIxMi4yNzI3MjczIj48L2VsbGlwc2U+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTIuNTAwMjIxMiwwIEMxOS40MDM3ODA2LDAgMjUuMDAwMjIxMiw1LjQ5NDY4NzE2IDI1LjAwMDIyMTIsMTIuMjcyNzI3MyBDMjUuMDAwMjIxMiwxOS4wNTA3Njc0IDE5LjQwMzc4MDYsMjQuNTQ1NDU0NSAxMi41MDAyMjEyLDI0LjU0NTQ1NDUgQzUuNTk2NjYxODcsMjQuNTQ1NDU0NSAwLjAwMDIyMTIzODkzOCwxOS4wNTA3Njc0IDAuMDAwMjIxMjM4OTM4LDEyLjI3MjcyNzMgQzAuMDAwMjIxMjM4OTM4LDUuNDk0Njg3MTYgNS41OTY2NjE4NywwIDEyLjUwMDIyMTIsMCBaIE0xNS4xMDM0MzMzLDYuODE4MTgxODIgQzEzLjQ2NTM4MDIsNi44MTgxODE4MiAxMi4xMzY4NDA0LDguMDkyMTI0MTEgMTIuMTM2ODQwNCw5LjY2Mjg1OTk2IEMxMi4xMzY4NDA0LDkuODg1ODI2MzggMTIuMTYzMTY3OCwxMC4xMDI4NTI3IDEyLjIxNDA1MjgsMTAuMzExMTgxIEM5Ljc0ODU2NjA0LDEwLjE5MjU5MDggNy41NjI1MDQxLDkuMDYwMTUwNTQgNi4wOTkyMjk3Niw3LjMzODU3ODIzIEM1Ljg0MzkyMDAzLDcuNzU4NjI5MTUgNS42OTc0NTk4NSw4LjI0NzYyNzgxIDUuNjk3NDU5ODUsOC43Njg4NzI4MSBDNS42OTc0NTk4NSw5Ljc1NTU2ODE3IDYuMjIxNTc0ODksMTAuNjI2NjQzNCA3LjAxNzE1MDExLDExLjEzNjY0NDcgQzYuNTMxMDg4MTcsMTEuMTIyMDA2NSA2LjA3MzM0NDgsMTAuOTk0MDgxOSA1LjY3MzU2NjA0LDEwLjc4MDQ1IEw1LjY3MzM0NDgsMTAuODE2NTE0OSBMNS42NzMzNDQ4LDEwLjgxNjUxNDkgQzUuNjczMzQ0OCwxMi4xOTQ4MzM1IDYuNjk2MzUzNjUsMTMuMzQ0NDU3NyA4LjA1MzIxMjA2LDEzLjYwNTYxMDYgQzcuODA0NTM5NSwxMy42NzA5NTE5IDcuNTQxOTI4ODgsMTMuNzA1NTMxOCA3LjI3MTc5NjEzLDEzLjcwNTUzMTggQzcuMDgwMjAzMjEsMTMuNzA1NTMxOCA2Ljg5NDU4Mzc0LDEzLjY4NzkyMzYgNi43MTM2MTAyOSwxMy42NTQ4Mjg3IEM3LjA5MTA0MzkyLDE0Ljc4NDcyMzIgOC4xODYzOTc5LDE1LjYwNzIxNjkgOS40ODQ4NDkyMywxNS42MzAzNDA5IEM4LjQ2OTM2MjUsMTYuMzkzNDMzNCA3LjE5MDM4MDIsMTYuODQ4MDY0MiA1LjgwMDExNDcyLDE2Ljg0ODA2NDIgQzUuNTYxMTc2NjYsMTYuODQ4MDY0MiA1LjMyNDQ1MSwxNi44MzQ2OTkgNS4wOTI4MTM4MywxNi44MDgxODA2IEM2LjQwNDk4MTk3LDE3LjYxNTYxMTggNy45NjQ3MTY0OSwxOC4wODYzNjU4IDkuNjM5OTM3NzMsMTguMDg2MzY1OCBDMTUuMDk2NTc0OSwxOC4wODYzNjU4IDE4LjA4MDY0NTcsMTMuNzUxNzc5OCAxOC4wODA2NDU3LDkuOTkyMzI0MTQgQzE4LjA4MDY0NTcsOS44NjkwNjY3NyAxOC4wNzc3Njk2LDkuNzQ2MjMzNyAxOC4wNzIwMTc0LDkuNjI0NDYxMzcgQzE4LjY1MjEwNTksOS4yMjM1MDM2OCAxOS4xNTQ5ODIsOC43MjI2MjQ3OCAxOS41NTI1NDgzLDguMTUyMTYxNjkgQzE5LjAyMDY4OTksOC4zNzgzMTAzMiAxOC40NDg1NjYsOC41MzEyNjgyNSAxNy44NDg1NjYsOC41OTk1Nzk1NiBDMTguNDYxMTc2Nyw4LjI0NzYyNzgxIDE4LjkzMTMwOTQsNy42OTA3NDIxMyAxOS4xNTMyMTIxLDcuMDI2MDg1ODEgQzE4LjU3OTk4Miw3LjM1MjE1NTYzIDE3Ljk0NDgwNSw3LjU4ODY5OTQ2IDE3LjI2OTM2MjUsNy43MTYxOTk3NiBDMTYuNzI4MjEyMSw3LjE2MzU1NzAyIDE1Ljk1NzE5NDQsNi44MTgxODE4MiAxNS4xMDM0MzMzLDYuODE4MTgxODIgWiIgaWQ9IkNvbWJpbmVkLVNoYXBlIiBmaWxsPSIjRkZGRkZGIj48L3BhdGg+CiAgICAgICAgICAgIDwvZz4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==" alt="Twitter Logo"/></a></li><li><a href="https://github.com/eclipse/openj9" rel="noopener noreferrer" target="_blank"> <img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIyNXB4IiB2aWV3Qm94PSIwIDAgMjUgMjUiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5HaXRIdWI8L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0iR2l0SHViIiBmaWxsPSIjRkZGRkZGIiBmaWxsLXJ1bGU9Im5vbnplcm8iPgogICAgICAgICAgICA8ZyBpZD0iZ2l0aHViLWxvZ28iPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTIzLjMyMzIwOSw2LjM1NjM4NTg4IEMyMi4yMDU0MjQzLDQuNDI4ODY0OTMgMjAuNjg5MjIwNywyLjkwMjg0MzkxIDE4Ljc3NDE5OTMsMS43Nzc5Nzg1OCBDMTYuODU4ODkyOCwwLjY1MzA1NTg3MyAxNC43Njc5NDkxLDAuMDkwNzM3OTUzMyAxMi40OTk4ODYsMC4wOTA3Mzc5NTMzIEMxMC4yMzIxMDc5LDAuMDkwNzM3OTUzMyA4LjE0MDQ4MDEzLDAuNjUzMjI3OTkzIDYuMjI1NTcyNjksMS43Nzc5Nzg1OCBDNC4zMTAzODAyMSwyLjkwMjc4NjU0IDIuNzk0MjMzNjcsNC40Mjg4NjQ5MyAxLjY3NjQ0ODk5LDYuMzU2Mzg1ODggQzAuNTU4ODM1MzMzLDguMjgzODQ5NDUgMCwxMC4zODg2NTQ2IDAsMTIuNjcwNzQzOSBDMCwxNS40MTIwNTEgMC43OTQ2NzE0ODMsMTcuODc3MTA0NSAyLjM4NDQxMzQ5LDIwLjA2NjUzNTUgQzMuOTczOTg0NDksMjIuMjU2MTM4OCA2LjAyNzQ3NDg4LDIzLjc3MTI1ODggOC41NDQ3MTM2NywyNC42MTIwNjc4IEM4LjgzNzcyNzQsMjQuNjY2ODAyMiA5LjA1NDYzNzM3LDI0LjYyODMwNDUgOS4xOTU2NzE2MSwyNC40OTc1NTAzIEM5LjMzNjc2Mjg1LDI0LjM2NjYyMzkgOS40MDcyMjI5NiwyNC4yMDI2NTAzIDkuNDA3MjIyOTYsMjQuMDA2MzE4MSBDOS40MDcyMjI5NiwyMy45NzM1NTc5IDkuNDA0NDI5NjQsMjMuNjc4ODMwMSA5LjM5OTAxNDAxLDIzLjEyMTc5MDUgQzkuMzkzNDI3MzcsMjIuNTY0NzUxIDkuMzkwODA1MDcsMjIuMDc4Nzk3MiA5LjM5MDgwNTA3LDIxLjY2NDE1ODcgTDkuMDE2NDQyOTcsMjEuNzI5MzM1MSBDOC43Nzc3NTY1LDIxLjc3MzM0MDUgOC40NzY2NDc4MywyMS43OTE5ODY5IDguMTEzMTE2OTgsMjEuNzg2NzA4NiBDNy43NDk3NTcxNSwyMS43ODE2MDIzIDcuMzcyNTQ0NzMsMjEuNzQzMjc2OCA2Ljk4MTk5Mjc3LDIxLjY3MjAxODkgQzYuNTkxMjY5NzksMjEuNjAxMzkyMSA2LjIyNzg1Mjk1LDIxLjQzNzU5MDcgNS44OTE0NTcyMiwyMS4xODA5NTg5IEM1LjU1NTIzMjUyLDIwLjkyNDMyNzEgNS4zMTY1NDYwNCwyMC41ODg0MDUxIDUuMTc1NDU0OCwyMC4xNzM3MDkzIEw1LjAxMjcwMTA2LDE5Ljc5Njc2NTIgQzQuOTA0MjE3NTcsMTkuNTQ1ODEzNCA0LjczMzQyNTkxLDE5LjI2NzAzNTUgNC41MDAwOTgwNSwxOC45NjE0NjQxIEM0LjI2Njc3MDE5LDE4LjY1NTYwNTggNC4wMzA4MjAwMywxOC40NDgyNTc5IDMuNzkyMTMzNTUsMTguMzM5MDc2MSBMMy42NzgxNzc0MywxOC4yNTY5NzQ2IEMzLjYwMjI0NDY5LDE4LjIwMjQxMjMgMy41MzE3ODQ1OCwxOC4xMzY2MDQ5IDMuNDY2NjI2MDgsMTguMDYwMjQwOCBDMy40MDE1MjQ1OCwxNy45ODM4NzY2IDMuMzUyNzgzOTcsMTcuOTA3NDU1MSAzLjMyMDIzMzIzLDE3LjgzMDkxODggQzMuMjg3NjI1NDcsMTcuNzU0MzI1MSAzLjMxNDY0NjU4LDE3LjY5MTUwMTEgMy40MDE1ODE1OSwxNy42NDIyMTcyIEMzLjQ4ODUxNjYsMTcuNTkyOTMzNCAzLjY0NTYyNjY4LDE3LjU2OTAwODYgMy44NzM1OTU5MywxNy41NjkwMDg2IEw0LjE5ODk4OTM5LDE3LjYxNzk0ODIgQzQuNDE2MDEzMzcsMTcuNjYxNzI0MiA0LjY4NDQ1NzI3LDE3Ljc5MjQ3ODUgNS4wMDQ2NjMxNCwxOC4wMTEwMTQzIEM1LjMyNDY5Nzk4LDE4LjIyOTM3NzkgNS41ODc3ODMyNywxOC41MTMyNjIxIDUuNzkzOTc2LDE4Ljg2MjU1MjEgQzYuMDQzNjY0NzUsMTkuMzEwNDA5OSA2LjM0NDQ4ODM4LDE5LjY1MTY2NzYgNi42OTczMDE5OSwxOS44ODY0OTc0IEM3LjA0OTgzMDU4LDIwLjEyMTMyNzMgNy40MDUyNjY0OSwyMC4yMzg1NDE0IDcuNzYzMjY3NzEsMjAuMjM4NTQxNCBDOC4xMjEyNjg5MiwyMC4yMzg1NDE0IDguNDMwNDcyNTIsMjAuMjExMjMxNiA4LjY5MDk5MjUxLDIwLjE1Njg5ODkgQzguOTUxMjI3NDcsMjAuMTAyMjc5MyA5LjE5NTM4NjU3LDIwLjAyMDE3NzcgOS40MjMzNTU4MiwxOS45MTEwNTMzIEM5LjUyMTAwODA2LDE5LjE3OTA4MTkgOS43ODY4ODY2NywxOC42MTY3NjM5IDEwLjIyMDc2MzYsMTguMjIzNjk3OSBDOS42MDIzNTY0MiwxOC4xNTgyOTIxIDkuMDQ2MzcxNDIsMTguMDU5NzgxOCA4LjU1MjUyMzU3LDE3LjkyODc5OCBDOC4wNTg5NjA3NSwxNy43OTc2NDIxIDcuNTQ4OTIzMDMsMTcuNTg0Nzg2MyA3LjAyMjc1MjQ2LDE3LjI4OTY1NjkgQzYuNDk2Mjk2ODUsMTYuOTk0OTI5MSA2LjA1OTU2OTU4LDE2LjYyODk0MzQgNS43MTI0NTY2MiwxNi4xOTIzMzA5IEM1LjM2NTI4NjY1LDE1Ljc1NTQ4ODkgNS4wODAzNjc4NSwxNS4xODE5ODMxIDQuODU4MDk5MjYsMTQuNDcyMzMgQzQuNjM1NzE2NjYsMTMuNzYyMzkgNC41MjQ0OTY4NiwxMi45NDM0NDAzIDQuNTI0NDk2ODYsMTIuMDE1MjUxNCBDNC41MjQ0OTY4NiwxMC42OTM2NTIzIDQuOTUzMTg2MjEsOS41NjkwMTY0MiA1LjgxMDM5Mzg5LDguNjQwNzEyNzggQzUuNDA4ODM5NjcsNy42NDcxMTgwNyA1LjQ0Njc0OTAzLDYuNTMzMjY4NDYgNS45MjQyMzYsNS4yOTkyNzg2OCBDNi4yMzg5MTIyMiw1LjIwMDg4MzA4IDYuNzA1NTY3OTQsNS4yNzQ3MjI4MSA3LjMyMzk3NTE0LDUuNTIwMzM4ODcgQzcuOTQyNDk2MzQsNS43NjYwNjk2OCA4LjM5NTM1NjQ3LDUuOTc2NTczMTQgOC42ODMwMTE1OSw2LjE1MTEwMzQxIEM4Ljk3MDY2NjcsNi4zMjU1NzYzIDkuMjAxMTQ0MjQsNi40NzM0Mjc4NyA5LjM3NDc4NjIzLDYuNTkzMzM4NTQgQzEwLjM4NDA4NzQsNi4zMDk1MTE3MSAxMS40MjU2NTQzLDYuMTY3NTY5NjEgMTIuNDk5NzcyLDYuMTY3NTY5NjEgQzEzLjU3Mzg4OTYsNi4xNjc1Njk2MSAxNC42MTU2ODQ2LDYuMzA5NTExNzEgMTUuNjI1MDQyOCw2LjU5MzMzODU0IEwxNi4yNDM1MDcsNi4yMDAzODcyNiBDMTYuNjY2NDM4Niw1LjkzODE5MDI1IDE3LjE2NTg3MzEsNS42OTc5MDk5MyAxNy43NDA2MTMzLDUuNDc5NDg4OTIgQzE4LjMxNTY5NTUsNS4yNjExODI2NiAxOC43NTU0NDQxLDUuMjAxMDU1MiAxOS4wNTk0MDMxLDUuMjk5NDUwOCBDMTkuNTQ3NDkzMyw2LjUzMzQ5Nzk1IDE5LjU5MDk4OTMsNy42NDcyOTAxOSAxOS4xODkzMjExLDguNjQwODg0OSBDMjAuMDQ2NDcxNyw5LjU2OTE4ODU0IDIwLjQ3NTMzMjEsMTAuNjk0MTExMiAyMC40NzUzMzIxLDEyLjAxNTQyMzUgQzIwLjQ3NTMzMjEsMTIuOTQzNjEyNCAyMC4zNjM3MTMzLDEzLjc2NTE0MzkgMjAuMTQxNjcyNywxNC40ODA1MzQ0IEMxOS45MTkzNDcxLDE1LjE5NjAzOTYgMTkuNjMxOTc3LDE1Ljc2ODk3MTcgMTkuMjc5NDQ4NSwxNi4yMDA1MzUzIEMxOC45MjY1MjA4LDE2LjYzMjA0MTYgMTguNDg3MDAwMiwxNi45OTUxNTg2IDE3Ljk2MDgyOTcsMTcuMjg5ODI5MSBDMTcuNDM0NTQ1MSwxNy41ODQ3MjkgMTYuOTI0MzM2MywxNy43OTc1ODQ4IDE2LjQzMDc3MzUsMTcuOTI4NzQwNiBDMTUuOTM2OTgyNywxOC4wNTk4OTY1IDE1LjM4MDk5NzcsMTguMTU4NDY0MiAxNC43NjI1OTA1LDE4LjIyMzk4NDggQzE1LjMyNjYxMzQsMTguNzE1MjE2OSAxNS42MDg2ODE5LDE5LjQ5MDYyMDEgMTUuNjA4NjgxOSwyMC41NDk4NTAxIEwxNS42MDg2ODE5LDI0LjAwNTg1OTIgQzE1LjYwODY4MTksMjQuMjAyMTkxNCAxNS42NzY1MTk3LDI0LjM2NjEwNzUgMTUuODEyMzA5MywyNC40OTcwOTEzIEMxNS45NDc5Mjc5LDI0LjYyNzg0NTUgMTYuMTYyMTAxNiwyNC42NjYzNDMyIDE2LjQ1NTExNTMsMjQuNjExNTUxNSBDMTguOTcyNjk2MSwyMy43NzA4NTcyIDIxLjAyNjE4NjUsMjIuMjU1Njc5OCAyMi42MTU3MDA1LDIwLjA2NjA3NjYgQzI0LjIwNTA0MzUsMTcuODc2NjQ1NSAyNSwxNS40MTE1OTIgMjUsMTIuNjcwMjg0OSBDMjQuOTk5NDI5OSwxMC4zODg0ODI1IDI0LjQ0MDMwOTYsOC4yODM4NDk0NSAyMy4zMjMyMDksNi4zNTYzODU4OCBaIiBpZD0iU2hhcGUiPjwvcGF0aD4KICAgICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+" alt="GitHub Logo"/></a></li><li><a href="https://openj9.slack.com/" rel="noopener noreferrer" target="_blank"><img src="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIyNXB4IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgogPCEtLSBDcmVhdGVkIHdpdGggTWV0aG9kIERyYXcgLSBodHRwOi8vZ2l0aHViLmNvbS9kdW9waXhlbC9NZXRob2QtRHJhdy8gLS0+CgogPGc+CiAgPHRpdGxlPmJhY2tncm91bmQ8L3RpdGxlPgogIDxyZWN0IGZpbGw9Im5vbmUiIGlkPSJjYW52YXNfYmFja2dyb3VuZCIgaGVpZ2h0PSIyNiIgd2lkdGg9IjI2IiB5PSItMSIgeD0iLTEiLz4KICA8ZyBkaXNwbGF5PSJub25lIiBvdmVyZmxvdz0idmlzaWJsZSIgeT0iMCIgeD0iMCIgaGVpZ2h0PSIxMDAlIiB3aWR0aD0iMTAwJSIgaWQ9ImNhbnZhc0dyaWQiPgogICA8cmVjdCBmaWxsPSJ1cmwoI2dyaWRwYXR0ZXJuKSIgc3Ryb2tlLXdpZHRoPSIwIiB5PSIxIiB4PSIxIiBoZWlnaHQ9IjIyIiB3aWR0aD0iMjIiLz4KICA8L2c+CiA8L2c+CiA8Zz4KICA8dGl0bGU+TGF5ZXIgMTwvdGl0bGU+CiAgPGVsbGlwc2Ugcnk9IjExIiByeD0iMTEiIGlkPSJzdmdfMSIgY3k9IjEyIiBjeD0iMTIiIHN0cm9rZT0iI0ZGRiIgZmlsbD0iI0ZGRkZGRiIvPgogIDxzdHlsZSB0cmFuc2Zvcm09Im1hdHJpeCgwLjA2NTE4MjQ5NTU3MzI1MzYyLDAsMCwwLjA2NTE4MjQ5NTU3MzI1MzYyLDAsMCkgIiB0eXBlPSJ0ZXh0L2NzcyI+LnN0MHtmaWxsOiM0MzQzNDM7fTwvc3R5bGU+CiAgPGcgc3Ryb2tlPSJudWxsIiBpZD0ic3ZnXzE5Ij4KICAgPGcgc3Ryb2tlPSJudWxsIiB0cmFuc2Zvcm09Im1hdHJpeCgwLjEzMDE1NTgwODUxODA5NDg2LDAsMCwwLjEzMDE1NTgwODUxODA5NDg2LC02Ljg0OTAwNjQ1MDQwNTQ5OSwtNi44MzE1MDczOTEwMjE5MjQpICIgaWQ9InN2Z182Ij4KICAgIDxnIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z183Ij4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfOCIgZD0ibTExMC4yOTgyOTIsMTYxLjI5MzAxMWMwLDcuMSAtNS44LDEyLjkgLTEyLjksMTIuOXMtMTIuOSwtNS44IC0xMi45LC0xMi45YzAsLTcuMSA1LjgsLTEyLjkgMTIuOSwtMTIuOWwxMi45LDBsMCwxMi45eiIgY2xhc3M9InN0MCIvPgogICAgIDxwYXRoIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z185IiBkPSJtMTE2Ljc5ODI5MiwxNjEuMjkzMDExYzAsLTcuMSA1LjgsLTEyLjkgMTIuOSwtMTIuOXMxMi45LDUuOCAxMi45LDEyLjlsMCwzMi4zYzAsNy4xIC01LjgsMTIuOSAtMTIuOSwxMi45cy0xMi45LC01LjggLTEyLjksLTEyLjljMCwwIDAsLTMyLjMgMCwtMzIuM3oiIGNsYXNzPSJzdDAiLz4KICAgIDwvZz4KICAgIDxnIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z18xMCI+CiAgICAgPHBhdGggc3Ryb2tlPSJudWxsIiBpZD0ic3ZnXzExIiBkPSJtMTI5LjY5ODI5MiwxMDkuNDkzMDExYy03LjEsMCAtMTIuOSwtNS44IC0xMi45LC0xMi45czUuOCwtMTIuOSAxMi45LC0xMi45czEyLjksNS44IDEyLjksMTIuOWwwLDEyLjlsLTEyLjksMHoiIGNsYXNzPSJzdDAiLz4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTIiIGQ9Im0xMjkuNjk4MjkyLDExNS45OTMwMTFjNy4xLDAgMTIuOSw1LjggMTIuOSwxMi45cy01LjgsMTIuOSAtMTIuOSwxMi45bC0zMi4zLDBjLTcuMSwwIC0xMi45LC01LjggLTEyLjksLTEyLjlzNS44LC0xMi45IDEyLjksLTEyLjljMCwwIDMyLjMsMCAzMi4zLDB6IiBjbGFzcz0ic3QwIi8+CiAgICA8L2c+CiAgICA8ZyBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTMiPgogICAgIDxwYXRoIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z18xNCIgZD0ibTE4MS40OTgyOTIsMTI4Ljg5MzAxMWMwLC03LjEgNS44LC0xMi45IDEyLjksLTEyLjljNy4xLDAgMTIuOSw1LjggMTIuOSwxMi45cy01LjgsMTIuOSAtMTIuOSwxMi45bC0xMi45LDBsMCwtMTIuOXoiIGNsYXNzPSJzdDAiLz4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTUiIGQ9Im0xNzQuOTk4MjkyLDEyOC44OTMwMTFjMCw3LjEgLTUuOCwxMi45IC0xMi45LDEyLjljLTcuMSwwIC0xMi45LC01LjggLTEyLjksLTEyLjlsMCwtMzIuM2MwLC03LjEgNS44LC0xMi45IDEyLjksLTEyLjljNy4xLDAgMTIuOSw1LjggMTIuOSwxMi45bDAsMzIuM3oiIGNsYXNzPSJzdDAiLz4KICAgIDwvZz4KICAgIDxnIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z18xNiI+CiAgICAgPHBhdGggc3Ryb2tlPSJudWxsIiBpZD0ic3ZnXzE3IiBkPSJtMTYyLjA5ODI5MiwxODAuNjkzMDExYzcuMSwwIDEyLjksNS44IDEyLjksMTIuOWMwLDcuMSAtNS44LDEyLjkgLTEyLjksMTIuOWMtNy4xLDAgLTEyLjksLTUuOCAtMTIuOSwtMTIuOWwwLC0xMi45bDEyLjksMHoiIGNsYXNzPSJzdDAiLz4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTgiIGQ9Im0xNjIuMDk4MjkyLDE3NC4xOTMwMTFjLTcuMSwwIC0xMi45LC01LjggLTEyLjksLTEyLjljMCwtNy4xIDUuOCwtMTIuOSAxMi45LC0xMi45bDMyLjMsMGM3LjEsMCAxMi45LDUuOCAxMi45LDEyLjljMCw3LjEgLTUuOCwxMi45IC0xMi45LDEyLjlsLTMyLjMsMHoiIGNsYXNzPSJzdDAiLz4KICAgIDwvZz4KICAgPC9nPgogIDwvZz4KIDwvZz4KPC9zdmc+" alt="Slack logo"/></a></li><li><a href="https://stackoverflow.com/search?q=%23OpenJ9" rel="noopener noreferrer" target="_blank"><img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjRweCIgaGVpZ2h0PSIyNHB4IiB2aWV3Qm94PSIwIDAgNjUgNzAiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5zdGFja292ZXJmbG93LWxvZ288L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0iI0ZGRkZGRiIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0ic3RhY2tvdmVyZmxvdy1sb2dvIiBmaWxsLXJ1bGU9Im5vbnplcm8iPgogICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgZmlsbD0iI0ZGRkZGRiIgcG9pbnRzPSI1NC4yNDE3MjY2IDYzLjc3MDIyNjUgNTQuMjQxNzI2NiA0NSA2MSA0NSA2MSA3MCAwIDcwIDAgNDUgNi43NTgyNzMzOCA0NSA2Ljc1ODI3MzM4IDYzLjc3MDIyNjUiPjwvcG9seWdvbj4KICAgICAgICAgICAgPHBhdGggZD0iTTE0LjcwNzEwNTcsNDMuNjQyNzU2NyBMNDguMTE3ODUxLDUwLjA4NzIwMTEgTDQ5LjUzMjA2MjQsNDMuODg3NDgyNCBMMTYuMTIxMzE3MiwzNy40NDMwMzggTDE0LjcwNzEwNTcsNDMuNjQyNzU2NyBMMTQuNzA3MTA1Nyw0My42NDI3NTY3IFogTTE5LjEyNjUxNjUsMjguOTU5MjEyNCBMNTAuMDYyMzkxNyw0Mi4yNTU5Nzc1IEw1Mi44OTA4MTQ2LDM2LjU0NTcxMDMgTDIxLjk1NDkzOTMsMjMuMTY3MzY5OSBMMTkuMTI2NTE2NSwyOC45NTkyMTI0IFogTTI3LjcwMDE3MzMsMTQuOTI4MjcgTDUzLjk1MTQ3MzEsMzUuMDc3MzU1OCBMNTguMjgyNDk1NywzMC4yNjQ0MTYzIEwzMi4wMzExOTU4LDEwLjExNTMzMDUgTDI3LjcwMDE3MzMsMTQuOTI4MjcgTDI3LjcwMDE3MzMsMTQuOTI4MjcgWiBNNDQuNjcwNzEwNiwwIEwzOS4xOTA2NDEyLDMuNzUyNDYxMzIgTDU5LjUxOTkzMDcsMjkuMDQwNzg3NiBMNjUsMjUuMjg4MzI2MyBMNDQuNjcwNzEwNiwwIFogTTE0LDU4IEw0OC4xMTc4NTEsNTggTDQ4LjExNzg1MSw1MS43MTg3MDYgTDE0LDUxLjcxODcwNiBMMTQsNTggWiIgaWQ9IlNoYXBlIiBmaWxsPSIjRkZGRkZGIj48L3BhdGg+CiAgICAgICAgPC9nPgogICAgPC9nPgo8L3N2Zz4KCgo=" alt="Stack Overflow logo"/></a></li></ul></nav></header><style data-emotion-css="1824c0p">.css-1824c0p{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:fixed;width:100%;bottom:0;background-color:white;height:3rem;box-shadow:0 0.5rem 2rem grey;z-index:9999;}@media screen and (min-width:35rem){.css-1824c0p{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}}@media screen and (min-width:62.5rem){.css-1824c0p{display:none;}}@media screen and (min-width:85rem){.css-1824c0p{display:none;}}</style><nav class="css-1824c0p"><style data-emotion-css="94xmc6">.css-94xmc6{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;list-style:none;-webkit-box-pack:space-evenly;-webkit-justify-content:space-evenly;-ms-flex-pack:space-evenly;justify-content:space-evenly;width:100%;}.css-94xmc6 li a{color:black;-webkit-text-decoration:none;text-decoration:none;}.css-94xmc6 li:first-of-type{margin-left:0;}.css-94xmc6 li:last-child{margin-right:0;padding-right:0;}</style><ul class="css-94xmc6"><li><a href="/openj9/">Home</a></li><li><a href="/openj9/about">About</a> </li><li><a href="https://www.eclipse.org/openj9/docs/" rel="noopener noreferrer" target="_blank">Docs</a> </li><li><a href="/openj9/performance">Performance</a> </li><li><a href="/openj9/news">News</a> </li></ul></nav><style data-emotion-css="tvfjev">.css-tvfjev{background-color:#F5F9FC;padding-left:7%;padding-right:7%;padding-top:5%;padding-bottom:5%;}</style><section class="css-tvfjev"><style data-emotion-css="uirvwh">.css-uirvwh{margin-bottom:3rem;}</style><style data-emotion-css="17u419h">.css-17u419h{font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.125;font-weight:700;margin-top:16px;margin-bottom:16px;font-size:36px;margin-bottom:3rem;}</style><h1 class="css-17u419h">More about OpenJ9</h1><style data-emotion-css="1l4ed6i">.css-1l4ed6i{background-color:white;padding-top:40px;padding-bottom:40px;padding-left:5%;padding-right:5%;border-radius:0.5rem;}</style><div class="css-1l4ed6i"><style data-emotion-css="1v4dyq7">.css-1v4dyq7{font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.125;font-weight:700;margin-top:16px;margin-bottom:16px;font-size:28px;}</style><h2 class="css-1v4dyq7">Our story</h2><style data-emotion-css="fza3g9">.css-fza3g9{margin-bottom:40px;font-size:18px;}</style><p class="css-fza3g9">Eclipse OpenJ9 is a high performance, scalable, Java virtual machine (JVM) implementation that represents hundreds of person-years of effort. Contributed to the Eclipse project by IBM, the OpenJ9 JVM underpins the IBM SDK, Java Technology Edition product that is a core component of many IBM Enterprise software products. Continued development of OpenJ9 at the Eclipse foundation ensures wider collaboration, fresh innovation, and the opportunity to influence the development of OpenJ9 for the next generation of Java applications.</p></div></section><style data-emotion-css="nmazqb">.css-nmazqb{background-color:var(--theme-ui-colors-primary,#434343);color:var(--theme-ui-colors-lightText,#d8d8d8);padding-left:7%;padding-right:7%;padding-top:40px;padding-bottom:40px;}</style><section class="css-nmazqb"><style data-emotion-css="1v4dyq7">.css-1v4dyq7{font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.125;font-weight:700;margin-top:16px;margin-bottom:16px;font-size:28px;}</style><h2 class="css-1v4dyq7">Our supporters</h2><style data-emotion-css="fza3g9">.css-fza3g9{margin-bottom:40px;font-size:18px;}</style><p class="css-fza3g9">The success of the OpenJ9 project is underpinned by the generosity of our supporters, to whom we would like to extend our thanks. This support comes in different forms; monetory, people, system, and data center resources. People resources help us to staff the planning, development, delivery, and support of OpenJ9 releases as well as pioneering new and innovative technologies. Dedicated systems and hosting services allow us to run automated build and test operations, which help ensure that quality and reliability is central to all our deliverables.</p><style data-emotion-css="v2pi9l">.css-v2pi9l{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:space-around;-webkit-justify-content:space-around;-ms-flex-pack:space-around;justify-content:space-around;}</style><div class="css-v2pi9l"><style data-emotion-css="16innyo">.css-16innyo{min-height:12.5rem;border-radius:0.5rem;background-color:white;color:var(--theme-ui-colors-darkText,#4d4f50);margin-top:40px;margin-bottom:40px;margin-left:16px;margin-right:16px;width:16rem;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}</style><article class="css-16innyo"><style data-emotion-css="vs5na0">.css-vs5na0{width:50%;height:50%;}</style><img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNDVweCIgaGVpZ2h0PSIxOHB4IiB2aWV3Qm94PSIwIDAgNDUgMTgiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5pYm0tbG9nbzwvdGl0bGU+CiAgICA8ZGVzYz5DcmVhdGVkIHdpdGggU2tldGNoLjwvZGVzYz4KICAgIDxnIGlkPSJQYWdlLTEiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPgogICAgICAgIDxnIGlkPSJpYm0tbG9nbyIgZmlsbD0iIzAwMDAwMCIgZmlsbC1ydWxlPSJub256ZXJvIj4KICAgICAgICAgICAgPHBhdGggZD0iTTAsMTcuNjk0MTE3NiBMOC42NzUwOTQxMiwxNy42OTQxMTc2IEw4LjY3NTA5NDEyLDE2LjU2NzIyMzUgTDAsMTYuNTY3MjIzNSBMMCwxNy42OTQxMTc2IFogTTAsMTUuMzI4MDgyNCBMOC42NzUwOTQxMiwxNS4zMjgwODI0IEw4LjY3NTA5NDEyLDE0LjIwMTE4ODIgTDAsMTQuMjAxMTg4MiBMMCwxNS4zMjgwODI0IFogTTIuNDc4ODM1MjksMTIuOTYyMDQ3MSBMNi4xOTY4MTE3NiwxMi45NjIwNDcxIEw2LjE5NjgxMTc2LDExLjgzNTcwNTkgTDIuNDc4ODM1MjksMTEuODM1NzA1OSBMMi40Nzg4MzUyOSwxMi45NjIwNDcxIFogTTIuNDc4ODM1MjksMTAuNTk2NTY0NyBMNi4xOTY4MTE3NiwxMC41OTY1NjQ3IEw2LjE5NjgxMTc2LDkuNDY5NjcwNTkgTDIuNDc4ODM1MjksOS40Njk2NzA1OSBMMi40Nzg4MzUyOSwxMC41OTY1NjQ3IFogTTIuNDc4ODM1MjksOC4yMzA1Mjk0MSBMNi4xOTY4MTE3Niw4LjIzMDUyOTQxIEw2LjE5NjgxMTc2LDcuMTA0MTg4MjQgTDIuNDc4ODM1MjksNy4xMDQxODgyNCBMMi40Nzg4MzUyOSw4LjIzMDUyOTQxIFogTTIuNDc4MjgyMzUsNS44NjQ0OTQxMiBMNi4xOTYyNTg4Miw1Ljg2NDQ5NDEyIEw2LjE5NjI1ODgyLDQuNzM3NiBMMi40NzgyODIzNSw0LjczNzYgTDIuNDc4MjgyMzUsNS44NjQ0OTQxMiBaIE0wLDMuNDk4NDU4ODIgTDguNjc1MDk0MTIsMy40OTg0NTg4MiBMOC42NzUwOTQxMiwyLjM3MjExNzY1IEwwLDIuMzcyMTE3NjUgTDAsMy40OTg0NTg4MiBaIE0wLDEuMTMyOTc2NDcgTDguNjc1MDk0MTIsMS4xMzI5NzY0NyBMOC42NzUwOTQxMiwwLjAwNjA4MjM1Mjk0IEwwLDAuMDA2MDgyMzUyOTQgTDAsMS4xMzI5NzY0NyBaIE05LjkxNDIzNTI5LDE2LjU2Nzc3NjUgTDkuOTE0MjM1MjksMTcuNjk0MTIxOSBMMTkuMDM5OTc2NSwxNy42OTQxMjE5IEMyMC4xNjI2NTU1LDE3LjY5NTYyMTIgMjEuMjQ4OTc1NCwxNy4yOTYxOTI4IDIyLjEwMzI3MDYsMTYuNTY3Nzc2NSBMOS45MTQyMzUyOSwxNi41Njc3NzY1IFogTTkuOTE0MjM1MjksMTQuMjAxMTg4MiBMOS45MTQyMzUyOSwxNS4zMjgwODI0IEwyMy4xMzcyNzA2LDE1LjMyODA4MjQgQzIzLjM0MjA3MjUsMTQuOTc0Mzg3NCAyMy41MDAwNjExLDE0LjU5NTU4NjYgMjMuNjA3MjcwNiwxNC4yMDExODgyIEw5LjkxNDIzNTI5LDE0LjIwMTE4ODIgWiBNMTIuMzkyNTE3NiwxMi45NjIwNDcxIEwxNi4xMTA0OTQxLDEyLjk2MjA0NzEgTDE2LjExMDQ5NDEsMTEuODM1NzA1OSBMMTIuMzkyNTE3NiwxMS44MzU3MDU5IEwxMi4zOTI1MTc2LDEyLjk2MjA0NzEgWiBNMjIuMTg2MjExOCw5LjQ2OTY3MDU5IEwxMi4zOTI1MTc2LDkuNDY5NjcwNTkgTDEyLjM5MjUxNzYsMTAuNTk2NTY0NyBMMjMuMDk2MzUyOSwxMC41OTY1NjQ3IEMyMi44NTIzMjQ4LDEwLjE3Njc5NjMgMjIuNTQ1NTg5LDkuNzk2Nzc5NjEgMjIuMTg2NzY0Nyw5LjQ2OTY3MDU5IE0xMi4zOTMwNzA2LDcuMTA0MTg4MjQgTDEyLjM5MzA3MDYsOC4yMjk5NzY0NyBMMjIuMjI3NjgyNCw4LjIyOTk3NjQ3IEMyMi41ODYzMTY2LDcuOTAzMDQyNiAyMi44OTI4Njg3LDcuNTIzMjA4ODggMjMuMTM2NzE3Niw3LjEwMzYzNTI5IEwxMi4zOTMwNzA2LDcuMTAzNjM1MjkgTDEyLjM5MzA3MDYsNy4xMDQxODgyNCBaIE0yMy42MDY3MTc2LDMuNDk4NDU4ODIgQzIzLjQ5OTk4OTMsMy4xMDQwNzA5MiAyMy4zNDE5NzM5LDIuNzI1MzkxNzkgMjMuMTM2NzE3NiwyLjM3MjExNzY1IEw5LjkxNDIzNTI5LDIuMzcyMTE3NjUgTDkuOTE0MjM1MjksMy40OTg0NTg4MiBMMjMuNjA2NzE3NiwzLjQ5ODQ1ODgyIEwyMy42MDY3MTc2LDMuNDk4NDU4ODIgWiBNMjIuMTAzMjcwNiwxLjEzMjk3NjQ3IEMyMS4yNDg5NzU0LDAuNDA0NTYwMTQyIDIwLjE2MjY1NTUsMC4wMDUxMzE2OTc4MiAxOS4wMzk5NzY1LDAuMDA2NjMxMDY0NDkgTDkuOTE0MjM1MjksMC4wMDY2MzEwNjQ0OSBMOS45MTQyMzUyOSwxLjEzMjk3NjQ3IEwyMi4xMDMyNzA2LDEuMTMyOTc2NDcgTDIyLjEwMzI3MDYsMS4xMzI5NzY0NyBaIE0xMi4zOTI1MTc2LDUuODY0NDk0MTIgTDE2LjExMDQ5NDEsNS44NjQ0OTQxMiBMMTYuMTEwNDk0MSw0LjczNzYgTDEyLjM5MjUxNzYsNC43Mzc2IEwxMi4zOTI1MTc2LDUuODY0NDk0MTIgWiBNMTkuNjAzNDIzNSw1Ljg2NDQ5NDEyIEwyMy42MzQzNjQ3LDUuODY0NDk0MTIgQzIzLjcyNDg5Miw1LjQ5NTY4MzA0IDIzLjc3MDkyOTUsNS4xMTczNTg0NCAyMy43NzE0OTQxLDQuNzM3NiBMMTkuNjAzNDIzNSw0LjczNzYgTDE5LjYwMzQyMzUsNS44NjQ0OTQxMiBaIE0xOS42MDM0MjM1LDExLjgzNTcwNTkgTDE5LjYwMzQyMzUsMTIuOTYyMDQ3MSBMMjMuNzcxNDk0MSwxMi45NjIwNDcxIEMyMy43NzE0OTQxLDEyLjU3MzMyOTQgMjMuNzIxNzI5NCwxMi4xOTY3NzY1IDIzLjYzNDM2NDcsMTEuODM1NzA1OSBMMTkuNjAzNDIzNSwxMS44MzU3MDU5IFogTTMxLjc3MDM0MTIsMCBMMjQuNzg1NTg4MiwwIEwyNC43ODU1ODgyLDEuMTI2ODk0MTIgTDMyLjE2MTgyMzUsMS4xMjY4OTQxMiBMMzEuNzcwMzQxMiwwIFogTTI0Ljc4NjE0MTIsMTcuNjk0MTE3NiBMMzAuOTg0NjExOCwxNy42OTQxMTc2IEwzMC45ODQ2MTE4LDE2LjU2NzIyMzUgTDI0Ljc4NjE0MTIsMTYuNTY3MjIzNSBMMjQuNzg2MTQxMiwxNy42OTQxMTc2IFogTTI0Ljc4NjE0MTIsMTUuMzI3NTI5NCBMMzAuOTg0NjExOCwxNS4zMjc1Mjk0IEwzMC45ODQ2MTE4LDE0LjIwMDYzNTMgTDI0Ljc4NjE0MTIsMTQuMjAwNjM1MyBMMjQuNzg2MTQxMiwxNS4zMjc1Mjk0IFogTTI3LjI2NDk3NjUsMTIuOTYwMzg4MiBMMzAuOTg0NjExOCwxMi45NjAzODgyIEwzMC45ODQ2MTE4LDExLjgzMzQ5NDEgTDI3LjI2NDk3NjUsMTEuODMzNDk0MSBMMjcuMjY0OTc2NSwxMi45NjAzODgyIFogTTI3LjI2NDk3NjUsMTAuNTkzOCBMMzAuOTg0NjExOCwxMC41OTM4IEwzMC45ODQ2MTE4LDkuNDY2OTA1ODggTDI3LjI2NDk3NjUsOS40NjY5MDU4OCBMMjcuMjY0OTc2NSwxMC41OTM4IFogTTM4LjQyMjc3NjUsMTcuNjk0MTE3NiBMNDQuNjIxMjQ3MSwxNy42OTQxMTc2IEw0NC42MjEyNDcxLDE2LjU2NzIyMzUgTDM4LjQyMjc3NjUsMTYuNTY3MjIzNSBMMzguNDIyNzc2NSwxNy42OTQxMTc2IFogTTM4LjQyMjc3NjUsMTUuMzI3NTI5NCBMNDQuNjIxMjQ3MSwxNS4zMjc1Mjk0IEw0NC42MjEyNDcxLDE0LjIwMDYzNTMgTDM4LjQyMjc3NjUsMTQuMjAwNjM1MyBMMzguNDIyNzc2NSwxNS4zMjc1Mjk0IFogTTM4LjQyMjc3NjUsMTIuOTYwMzg4MiBMNDIuMTQxODU4OCwxMi45NjAzODgyIEw0Mi4xNDE4NTg4LDExLjgzMzQ5NDEgTDM4LjQyMjc3NjUsMTEuODMzNDk0MSBMMzguNDIyNzc2NSwxMi45NjAzODgyIFogTTM4LjQyMjIyMzUsMTAuNTkzOCBMNDIuMTQxMzA1OSwxMC41OTM4IEw0Mi4xNDEzMDU5LDkuNDY2OTA1ODggTDM4LjQyMjIyMzUsOS40NjY5MDU4OCBMMzguNDIyMjIzNSwxMC41OTM4IFogTTM4LjQyMjc3NjUsOC4yMjcyMTE3NiBMNDIuMTQxODU4OCw4LjIyNzIxMTc2IEw0Mi4xNDE4NTg4LDcuMDk5NzY0NzEgTDM1LjE3MDM3NjUsNy4wOTk3NjQ3MSBMMzQuNzc5NDQ3MSw4LjIyNjY1ODgyIEwzOC4wNDM0NTg4LDguMjI2NjU4ODIgTDM4LjQyMjc3NjUsNy4xNTM5NTI5NCBMMzguNDIyNzc2NSw4LjIyNzIxMTc2IFogTTM0LjIzNTkwNTksNy4wOTk3NjQ3MSBMMjcuMjY1NTI5NCw3LjA5OTc2NDcxIEwyNy4yNjU1Mjk0LDguMjI3MjExNzYgTDMwLjk4NDYxMTgsOC4yMjcyMTE3NiBMMzAuOTg0NjExOCw3LjE1NDUwNTg4IEwzMS4zNjM5Mjk0LDguMjI3MjExNzYgTDM0LjYyNzk0MTIsOC4yMjcyMTE3NiBMMzQuMjM1OTA1OSw3LjA5OTc2NDcxIFogTTQyLjE0MTMwNTksNC43MzMxNzY0NyBMMzUuOTkxNDk0MSw0LjczMzE3NjQ3IEwzNS42MDA1NjQ3LDUuODYwMDcwNTkgTDQyLjE0MTg1ODgsNS44NjAwNzA1OSBMNDIuMTQxMzA1OSw0LjczMzE3NjQ3IFogTTM3LjYzMzE3NjUsMCBMMzcuMjQyOCwxLjEyNjg5NDEyIEw0NC42MjEyNDcxLDEuMTI2ODk0MTIgTDQ0LjYyMTI0NzEsMCBMMzcuNjMzMTc2NSwwIFogTTM0LjcwMDkyOTQsMTcuNjk0MTE3NiBMMzUuMDk5MDQ3MSwxNi41NjcyMjM1IEwzNC4zMDcyMzUzLDE2LjU2NzIyMzUgTDM0LjcwMDkyOTQsMTcuNjk0MTE3NiBaIE0zMy44Njk4NTg4LDE1LjMyNzUyOTQgTDM1LjUzNjk3NjUsMTUuMzI3NTI5NCBMMzUuOTM1MDk0MSwxNC4yMDA2MzUzIEwzMy40NzE3NDEyLDE0LjIwMDYzNTMgTDMzLjg2OTg1ODgsMTUuMzI3NTI5NCBaIE0zMy4wMzQzNjQ3LDEyLjk2MDk0MTIgTDM2LjM3MjQ3MDYsMTIuOTYwOTQxMiBMMzYuNzcwNTg4MiwxMS44MzM0OTQxIEwzMi42MzY4LDExLjgzMzQ5NDEgTDMzLjAzNDM2NDcsMTIuOTYwOTQxMiBaIE0zMi4xOTg4NzA2LDEwLjU5MzggTDM3LjIwODUxNzYsMTAuNTkzOCBMMzcuNjA2MDgyNCw5LjQ2NjkwNTg4IEwzMS44MDAyLDkuNDY2OTA1ODggTDMyLjE5ODg3MDYsMTAuNTkzOCBaIE0yNy4yNjQ5NzY1LDUuODYwMDcwNTkgTDMzLjgwNjI3MDYsNS44NjAwNzA1OSBMMzMuNDE1MzQxMiw0LjczMzE3NjQ3IEwyNy4yNjQ5NzY1LDQuNzMzMTc2NDcgTDI3LjI2NDk3NjUsNS44NjAwNzA1OSBaIE0zNi40MjExMjk0LDMuNDkzNDgyMzUgTDQ0LjYyMTI0NzEsMy40OTM0ODIzNSBMNDQuNjIxMjQ3MSwyLjM2NjU4ODI0IEwzNi44MTI2MTE4LDIuMzY2NTg4MjQgTDM2LjQyMTEyOTQsMy40OTM0ODIzNSBaIE0zMi41OTQyMjM1LDIuMzY2NTg4MjQgTDI0Ljc4NjE0MTIsMi4zNjY1ODgyNCBMMjQuNzg2MTQxMiwzLjQ5MzQ4MjM1IEwzMi45ODUxNTI5LDMuNDkzNDgyMzUgTDMyLjU5NDIyMzUsMi4zNjY1ODgyNCBaIiBpZD0iU2hhcGUiPjwvcGF0aD4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==" alt="IBM Logo" class="css-vs5na0"/></article><article class="css-16innyo"><style data-emotion-css="138rpve">.css-138rpve{width:80%;-webkit-filter:invert(100%);filter:invert(100%);}</style><img src="/openj9/static/adopt-open-jdk-7072a4c16b356c87671638dba5c860e9.png" alt="AdoptOpenJDK Logo" class="css-138rpve"/></article><article class="css-16innyo"><img src="/openj9/static/oregon-state-university-logo-3c2d68263b3d6bd814701041f7626cbe.svg" alt="Oregon State University Logo" class="css-vs5na0"/></article><article class="css-16innyo"><img src="/openj9/static/uni-new-brunswick-logo-6555470091976484ab5115fd4dc596ac.svg" alt="New Brunswick University Logo" class="css-vs5na0"/></article></div></section><style data-emotion-css="1ewngfy">.css-1ewngfy{padding-left:7%;padding-right:7%;padding-top:40px;padding-bottom:40px;background-color:#F5F9FC;}</style><section class="css-1ewngfy"><style data-emotion-css="117m7rp">.css-117m7rp{display:grid;grid-gap:6rem;grid-template-columns:repeat(1,1fr);background-color:white;padding-left:5%;padding-right:5%;padding-top:5%;padding-bottom:5%;border-radius:0.5rem;}@media screen and (min-width:35rem){.css-117m7rp{grid-template-columns:repeat(1,1fr);}}@media screen and (min-width:62.5rem){.css-117m7rp{grid-template-columns:repeat(1,1fr);}}@media screen and (min-width:85rem){.css-117m7rp{grid-template-columns:repeat(2,1fr);}}</style><div class="css-117m7rp"><style data-emotion-css="1b6n4o1">.css-1b6n4o1{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;}</style><article class="css-1b6n4o1"><style data-emotion-css="4ddra2">.css-4ddra2{font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.125;font-weight:700;margin-top:16px;margin-bottom:16px;font-size:24px;}</style><h3 class="css-4ddra2">DOCS</h3><style data-emotion-css="fza3g9">.css-fza3g9{margin-bottom:40px;font-size:18px;}</style><p class="css-fza3g9">If you are new to OpenJ9, our documentation will help you get started. Out of the box, we expect you to discover a great experience, but we also have many tuning options to help you ramp up application performance.</p><style data-emotion-css="1575med">.css-1575med{background-color:var(--theme-ui-colors-secondary,#5DA7A3);color:white;border-radius:2.5rem;height:2rem;width:12rem;border:none;font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';font-size:16px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-text-decoration:none;text-decoration:none;}.css-1575med:hover{cursor:pointer;background-color:var(--theme-ui-colors-secondaryDark,#5d9da3);border-color:var(--theme-ui-colors-secondaryDark,#5d9da3);-webkit-text-decoration:none;text-decoration:none;color:white;}</style><a href="https://www.eclipse.org/openj9/docs/" rel="noopener noreferrer" target="_blank" class="css-1575med">Go to docs</a></article><article class="css-1b6n4o1"><h3 class="css-4ddra2">BLOGS</h3><p class="css-fza3g9">Our blogs are written by developers, for developers. Read about their insights into up and coming technologies, take deep dives into OpenJ9 development, or simply hear about their experiences of working on the project.</p><a href="https://blog.openj9.org/" rel="noopener noreferrer" target="_blank" class="css-1575med">Go to blogs</a></article></div></section><style data-emotion-css="17cbhv0">.css-17cbhv0{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;background-color:var(--theme-ui-colors-primary,#434343);color:white;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:1rem;padding-bottom:3rem;-webkit-flex-direction:reverse-column;-ms-flex-direction:reverse-column;flex-direction:reverse-column;}@media screen and (min-width:35rem){.css-17cbhv0{padding-bottom:3rem;}}@media screen and (min-width:62.5rem){.css-17cbhv0{padding-bottom:0;}}@media screen and (min-width:85rem){.css-17cbhv0{padding-bottom:0;}}</style><footer class="css-17cbhv0"><style data-emotion-css="vkolmb">.css-vkolmb{-webkit-flex:50%;-ms-flex:50%;flex:50%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}@media screen and (min-width:35rem){.css-vkolmb{display:none;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}}@media screen and (min-width:62.5rem){.css-vkolmb{display:none;-webkit-align-items:flex-end;-webkit-box-align:flex-end;-ms-flex-align:flex-end;align-items:flex-end;}}@media screen and (min-width:85rem){.css-vkolmb{display:none;-webkit-align-items:flex-end;-webkit-box-align:flex-end;-ms-flex-align:flex-end;align-items:flex-end;}}</style><section class="css-vkolmb"><a href="https://wiki.eclipse.org/Development_Resources/Process_Guidelines/What_is_Incubation" rel="noopener noreferrer" target="_blank"><img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNTBweCIgaGVpZ2h0PSI3NXB4IiB2aWV3Qm94PSIwIDAgMTU3IDIzMSIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KICAgIDwhLS0gR2VuZXJhdG9yOiBTa2V0Y2ggNjEuMiAoODk2NTMpIC0gaHR0cHM6Ly9za2V0Y2guY29tIC0tPgogICAgPHRpdGxlPmVjbGlwc2VfaW5jdWJhdGlvbl92ZXJ0aWNhbF9zdmc8L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0iZWNsaXBzZV9pbmN1YmF0aW9uX3ZlcnRpY2FsX3N2ZyIgZmlsbC1ydWxlPSJub256ZXJvIj4KICAgICAgICAgICAgPGcgaWQ9Ikdyb3VwIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNy4wMDAwMDAsIDIxNC4wMDAwMDApIiBmaWxsPSIjRkZGRkZGIj4KICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJQYXRoIiBwb2ludHM9IjAuNzUgMC4zNCAxLjkyIDAuMzQgMS45MiAxNi4wMyAwLjc1IDE2LjAzIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSI1LjYyIDAuMzQgNi43MiAwLjM0IDE3LjU1IDEzLjk5IDE3LjU1IDAuMzQgMTguNjcgMC4zNCAxOC42NyAxNi4wMyAxNy44IDE2LjAzIDYuNzUgMi4wOSA2Ljc1IDE2LjAzIDUuNjMgMTYuMDMgNS42MyAwLjM0Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMjEuODYsOC4yMyBMMjEuODYsOC4xOSBDMjEuODYsMy43NSAyNS4xOCwwLjA4IDI5LjcxLDAuMDggQzMyLjUxLDAuMDggMzQuMTksMS4xMSAzNS44MSwyLjU5IEwzNC45OCwzLjQ0IEMzMy42MSwyLjEyIDMyLjA0LDEuMTMgMjkuNjksMS4xMyBDMjUuOTIsMS4xMyAyMy4wOCw0LjIgMjMuMDgsOC4xNSBMMjMuMDgsOC4xOSBDMjMuMDgsMTIuMTYgMjUuOTcsMTUuMjUgMjkuNzEsMTUuMjUgQzMxLjk3LDE1LjI1IDMzLjUyLDE0LjM3IDM1LjExLDEyLjgxIEwzNS44OSwxMy41NyBDMzQuMjMsMTUuMjEgMzIuNDQsMTYuMyAyOS42NiwxNi4zIEMyNS4xOCwxNi4zIDIxLjg2LDEyLjc0IDIxLjg2LDguMjMgWiIgaWQ9IlBhdGgiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0zOC40LDkuNTEgTDM4LjQsMC4zNCBMMzkuNTcsMC4zNCBMMzkuNTcsOS40IEMzOS41NywxMy4xIDQxLjU3LDE1LjIzIDQ0Ljg4LDE1LjIzIEM0OC4wNiwxNS4yMyA1MC4xLDEzLjMgNTAuMSw5LjUxIEw1MC4xLDAuMzQgTDUxLjI3LDAuMzQgTDUxLjI3LDkuMzcgQzUxLjI3LDEzLjg4IDQ4LjY1LDE2LjI3MDAzMTQgNDQuODQsMTYuMjcwMDMxNCBDNDEuMDcsMTYuMjggMzguNCwxMy45IDM4LjQsOS41MSBaIiBpZD0iUGF0aCI+PC9wYXRoPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTU0LjAyLDAuMzQgTDYwLjUsMC4zNCBDNjIuMjcsMC4zNCA2My43MSwwLjg2IDY0LjU4LDEuNzMgQzY1LjIzLDIuMzggNjUuNTksMy4yMSA2NS41OSw0LjIgTDY1LjU5LDQuMjQgQzY1LjU5LDYuMzcgNjQuMiw3LjQ1IDYyLjkyLDcuOTYgQzY0LjgsOC40NSA2Ni40Niw5LjUzIDY2LjQ2LDExLjcgTDY2LjQ2LDExLjc0IEM2Ni40NiwxNC4zNiA2NC4yMiwxNi4wMiA2MC44MywxNi4wMiBMNTQuMDIsMTYuMDIgTDU0LjAyLDAuMzQgTDU0LjAyLDAuMzQgWiBNNjQuNCw0LjMxIEM2NC40LDIuNTggNjIuOTksMS40MiA2MC40OCwxLjQyIEw1NS4xOSwxLjQyIEw1NS4xOSw3LjU4IEw2MC4zNyw3LjU4IEM2Mi43Miw3LjU4IDY0LjQsNi40NCA2NC40LDQuMzUgTDY0LjQsNC4zMSBaIE02MC41LDguNjYgTDU1LjE5LDguNjYgTDU1LjE5LDE0Ljk2IEw2MC44OCwxNC45NiBDNjMuNTcsMTQuOTYgNjUuMjcwMDQ0NCwxMy43MyA2NS4yNzAwNDQ0LDExLjc1IEw2NS4yNzAwNDQ0LDExLjcxIEM2NS4yOCw5Ljc4IDYzLjYsOC42NiA2MC41LDguNjYgWiIgaWQ9IlNoYXBlIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNzYuMjgsMC4yMyBMNzcuNCwwLjIzIEw4NC43MSwxNi4wMyBMODMuNDMsMTYuMDMgTDgxLjQ0LDExLjY0IEw3Mi4xOCwxMS42NCBMNzAuMTksMTYuMDMgTDY4Ljk4LDE2LjAzIEw3Ni4yOCwwLjIzIFogTTgwLjk0LDEwLjU5IEw3Ni44MiwxLjUxIEw3Mi42NywxMC41OSBMODAuOTQsMTAuNTkgWiIgaWQ9IlNoYXBlIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSI5MS4wNSAxLjQyIDg1LjU4IDEuNDIgODUuNTggMC4zNCA5Ny42OCAwLjM0IDk3LjY4IDEuNDIgOTIuMjEgMS40MiA5Mi4yMSAxNi4wMyA5MS4wNCAxNi4wMyA5MS4wNCAxLjQyIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSIxMDEuMjkgMC4zNCAxMDIuNDYgMC4zNCAxMDIuNDYgMTYuMDMgMTAxLjI5IDE2LjAzIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTA1LjkxLDguMjMgTDEwNS45MSw4LjE5IEMxMDUuOTEsMy45MSAxMDkuMDcsMC4wOCAxMTMuODIsMC4wOCBDMTE4LjU3LDAuMDggMTIxLjY5LDMuODcgMTIxLjY5LDguMTUgTDEyMS42OSw4LjE5IEMxMjEuNjksMTIuNDcgMTE4LjUzLDE2LjMgMTEzLjc4LDE2LjMgQzEwOS4wMywxNi4zIDEwNS45MSwxMi41MSAxMDUuOTEsOC4yMyBaIE0xMjAuNDgsOC4yMyBMMTIwLjQ4LDguMTkgQzEyMC40OCw0LjMxIDExNy42NiwxLjEzIDExMy43OCwxLjEzIEMxMDkuOSwxLjEzIDEwNy4xMiw0LjI3IDEwNy4xMiw4LjE1IEwxMDcuMTIsOC4xOSBDMTA3LjEyLDEyLjA3IDEwOS45NCwxNS4yNSAxMTMuODIsMTUuMjUgQzExNy43LDE1LjI1IDEyMC40OCwxMi4xMSAxMjAuNDgsOC4yMyBaIiBpZD0iU2hhcGUiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJQYXRoIiBwb2ludHM9IjEyNC44OSAwLjM0IDEyNS45OSAwLjM0IDEzNi44MiAxMy45OSAxMzYuODIgMC4zNCAxMzcuOTQgMC4zNCAxMzcuOTQgMTYuMDMgMTM3LjA3IDE2LjAzIDEyNi4wMiAyLjA5IDEyNi4wMiAxNi4wMyAxMjQuOSAxNi4wMyAxMjQuOSAwLjM0Ij48L3BvbHlnb24+CiAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgPHBhdGggZD0iTTU2LjY2LDE2Ni4yMyBDNTcuNTEsMTYzLjQ4IDYwLjQzLDE2MS40MyA2My45NCwxNjEuNDMgQzY1LjE0LDE2MS40MyA2Ni4yNSwxNjEuNjkgNjcuMjUsMTYyLjExIEM2OS40NiwxNjAuNjQgNzIuMTksMTU5Ljc2IDc1LjE3LDE1OS43NiBMNzUuMTksMTU5Ljc2IEM3Ni4xMSwxNTcuOSA3OC40OCwxNTYuNTcgODEuMywxNTYuNTcgQzgyLjA0LDE1Ni41NyA4Mi43NSwxNTYuNjcgODMuNDIsMTU2Ljg0IEM4My4zMywxNTQuNTYgODMuNjksMTUyLjE4IDg0LjU1LDE0OS42OCBDODUuNTUsMTQ2Ljc5IDg3LDE0NC4wMyA4OC41MiwxNDEuMjggQzg4LjE3LDEzNy4xNiA4Ny45LDEzMy41IDgyLjc0LDEzMiBDODAuODIsMTMxLjQ0IDc4LjgyLDEzMS4yNyA3Ni44NiwxMzEuMDQgTDc2Ljg1LDEzMS4wNCBMNzYuODUsMTMxLjAzIEM3Ni4wMSwxMzAuOTMgNzUuMTcsMTMwLjgxIDc0LjM1LDEzMC42NSBDNjAuMTgsMTQ1LjQxIDQwLjIsMTA5Ljk3IDQwLjIsMTA5Ljk3IEM4NC4zLDEwMy4xMyA3Ni4wMSwxMjUuNjEgNzYuMDEsMTI1LjYxIEM3Mi44MSwxMjQuMDUgNzEuOTMsMTIyLjA4IDY5LjQ5LDExOS43MyBDNjMuOTIsMTE0LjM4IDUwLjYyLDExMy40NCA1MC42MiwxMTMuNDQgQzY2LjU0LDExNy41MSA2OC43MSwxMjUuMjIgNzQuOTcsMTI3LjY5IEM3Ni4zOSwxMjguMDEgNzcuOSwxMjguMTMgNzkuMzUsMTI4LjI5IEM4Mi4xNSwxMjguNTkgODQuODksMTI5LjExIDg3LjIyLDEzMC42MSBDODkuNjMsMTMyLjE2IDkwLjcxLDEzNC4wOSA5MS4yNiwxMzYuMjYgQzkzLDEzMi45NCA5NC41LDEyOS41NiA5NS4wNywxMjUuOTIgQzk1LjgsMTIxLjI3IDk1LjEzLDExNS44OCA5MS44MywxMTIuMDcgQzg4Ljc4LDEwOC41NSA4NC42NiwxMDUuODkgODEuNCwxMDIuNTIgQzc3LjkyLDk4LjkxIDc1LjYxLDk0LjQ2IDc1LjUyLDg5LjcxIEM3My43Niw4NS44NiA3MC45LDgxLjM5IDY4LjI4LDc5LjY1IEM1Ni45LDkwLjM0IDQxLjksNjIuNTggNDEuOSw2Mi41OCBDNzYuODgsNTcuNyA3MS4xLDc1LjY3IDcxLjEsNzUuNjcgQzYyLjcsNjYuMjggNTIuMzEsNjcuMTIgNTIuMzEsNjcuMTIgQzYwLjcxLDY5Ljc5IDY3LjM0LDc1LjE1IDcxLjIsNzguODMgTDcxLjczLDc5LjM2IEM3My4zLDgxIDc0LjksODIuNzUgNzYuMjQsODQuNjMgQzc3LjYsNzkuNDggODAuNzcsNzIuMjcgODMuMjYsNjcuOTcgQzgzLjI2LDY3Ljk3IDkxLjY2LDUzLjE1IDEwNS44LDQzLjkgQzEwNS44LDQzLjkgOTUuMDIsNDUuMTQgODMuNDEsNjIuODkgQzgzLjQxLDYyLjg5IDY3Ljk5LDM4LjcgMTE3LjgzLDM0LjIzIEMxMTcuODMsMzQuMjMgMTE0LjQsNzguMTcgODcuNDUsNjkuNjMgQzgyLjc3LDc2LjY3IDc5LjcsODQuNzQgODAuMzMsOTAuNDIgQzgwLjk1LDk1Ljk2IDg0LjgzLDk5Ljg2IDg5LjExLDEwMy41IEM5MC4yNSw5Ny42NiA5NC40Niw5Mi42MyAxMDAuNjUsODkuODkgQzEwNS42LDg3LjkyIDExMi45LDg2LjAzIDExOS43Miw4NS42MiBDMTE5LjcyLDg1LjYyIDEwNi4zOSw4Mi41OCA5Ni4yNSw4OS41MSBDOTYuMjUsODkuNTEgOTYuNDIsNjkuMjIgMTMyLjM0LDgzLjk1IEMxMzIuMzQsODMuOTUgMTA2LjM0LDExMC4yOSA5Ny45OSw5NC41OSBDOTQuMDMsOTcuMiA5MS41MywxMDEuNTggOTIuMTgsMTA2LjExIEM5NC41LDEwOC4xNCA5Ni42NiwxMTAuMzMgOTcuOTcsMTEzLjAzIEM5OS44LDExNi44MiAxMDAuNDUsMTIxLjI0IDk5Ljk1LDEyNS4zNSBDOTguOTksMTMzLjI1IDk0LjA1LDEzOS45NyA5MC42NywxNDcuMTQgQzg5LjI5LDE1MC4wNiA4Ny45NywxNTMuMjcgODcuOTUsMTU2LjUxIEM4OS42NCwxNTYuMDQgOTEuNDcsMTU1Ljc4IDkzLjM5LDE1NS43OCBDMTAwLjYyLDE1NS43OCAxMDYuNzEsMTU5LjM3IDEwOC42OCwxNjQuMyBDMTExLjYxLDE2NC42MSAxMTMuOTIsMTY2LjMzIDExNC4zNCwxNjguNTEgQzExNi40NSwxNjkuODEgMTE4LjEyLDE3MS42MyAxMTkuMTMsMTczLjc1IEw1MC41NSwxNzMuNzUgQzUyLjAyLDE3MC42MiA1NC4xNCwxNjcuMTYgNTYuNjYsMTY2LjIzIiBpZD0iUGF0aCIgZmlsbD0iI0Y3OEQyQyI+PC9wYXRoPgogICAgICAgICAgICA8ZyBpZD0iR3JvdXAiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE3LjAwMDAwMCwgMTgyLjAwMDAwMCkiIGZpbGw9IiNGRkZGRkYiPgogICAgICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlBhdGgiIHBvaW50cz0iMC41NCAxLjM5IDE4LjU0IDEuMzkgMTguNTQgNS4yMSA0LjggNS4yMSA0LjggMTEuNTIgMTYuOTcgMTEuNTIgMTYuOTcgMTUuMzMgNC44IDE1LjMzIDQuOCAyMS44NSAxOC43MSAyMS44NSAxOC43MSAyNS42NyAwLjU0IDI1LjY3Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMjEuNTUsMTMuNiBMMjEuNTUsMTMuNTMgQzIxLjU1LDYuNjMgMjYuNzIsMC45NyAzNC4wNywwLjk3IEMzOC41NCwwLjk3IDQxLjI1LDIuNTMgNDMuNTcsNC43NSBMNDAuODMsNy45MSBDMzguODksNi4xMSAzNi44MSw0Ljg5IDM0LjAzLDQuODkgQzI5LjQyLDQuODkgMjYuMDIsOC43MSAyNi4wMiwxMy40NiBMMjYuMDIsMTMuNTMgQzI2LjAyLDE4LjI4IDI5LjM4LDIyLjEzIDM0LjAzLDIyLjEzIEMzNy4wMSwyMi4xMyAzOC45MiwyMC45NSA0MSwxOS4wMSBMNDMuNzQsMjEuNzggQzQxLjIxLDI0LjQyIDM4LjQzLDI2LjA4MDAxMzYgMzMuODksMjYuMDgwMDEzNiBDMjYuODMsMjYuMDkgMjEuNTUsMjAuNTcgMjEuNTUsMTMuNiBaIiBpZD0iUGF0aCI+PC9wYXRoPgogICAgICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlBhdGgiIHBvaW50cz0iNDcuMjIgMS4zOSA1MS40OSAxLjM5IDUxLjQ5IDIxLjc4IDY0LjI1IDIxLjc4IDY0LjI1IDI1LjY2IDQ3LjIyIDI1LjY2Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSI2Ny45MyAxLjM5IDcyLjIgMS4zOSA3Mi4yIDI1LjY3IDY3LjkzIDI1LjY3Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNzcuNjcsMS4zOSBMODcuMjQsMS4zOSBDOTIuOTMsMS4zOSA5Ni40Nyw0LjYyIDk2LjQ3LDkuNTEgTDk2LjQ3LDkuNTggQzk2LjQ3LDE1LjAzIDkyLjEsMTcuODcgODYuNzYsMTcuODcgTDgxLjk0LDE3Ljg3IEw4MS45NCwyNS42NyBMNzcuNjcsMjUuNjcgTDc3LjY3LDEuMzkgWiBNODYuOSwxNC4wMiBDOTAuMTMsMTQuMDIgOTIuMTQsMTIuMjIgOTIuMTQsOS42OCBMOTIuMTQsOS42MSBDOTIuMTQsNi43NyA5MC4wOSw1LjI4IDg2LjksNS4yOCBMODEuOTQsNS4yOCBMODEuOTQsMTQuMDIgTDg2LjksMTQuMDIgWiIgaWQ9IlNoYXBlIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNOTguMjEsMjIuMTMgTDEwMC43OCwxOS4wOCBDMTAzLjEsMjEuMDkgMTA1LjQ2LDIyLjI0IDEwOC40NSwyMi4yNCBDMTExLjA5LDIyLjI0IDExMi43NSwyMC45OSAxMTIuNzUsMTkuMTkgTDExMi43NSwxOS4xMiBDMTEyLjc1LDE3LjM5IDExMS43OCwxNi40NSAxMDcuMjcsMTUuNDEgQzEwMi4xLDE0LjE2IDk5LjE5LDEyLjY0IDk5LjE5LDguMTYgTDk5LjE5LDguMDkgQzk5LjE5LDMuOTMgMTAyLjY2LDEuMDUgMTA3LjQ4LDEuMDUgQzExMS4wMiwxLjA1IDExMy44MywyLjEzIDExNi4yOSw0LjEgTDExNCw3LjMzIEMxMTEuODEsNS43IDEwOS42Myw0LjgzIDEwNy40MSw0LjgzIEMxMDQuOTEsNC44MyAxMDMuNDYsNi4xMSAxMDMuNDYsNy43MSBMMTAzLjQ2LDcuNzggQzEwMy40Niw5LjY1IDEwNC41NywxMC40OSAxMDkuMjUsMTEuNiBDMTE0LjM4LDEyLjg1IDExNy4wMiwxNC42OSAxMTcuMDIsMTguNzEgTDExNy4wMiwxOC43OCBDMTE3LjAyLDIzLjMyIDExMy40NSwyNi4wMyAxMDguMzUsMjYuMDMgQzEwNC42MiwyNi4wMiAxMDEuMTIsMjQuNzMgOTguMjEsMjIuMTMgWiIgaWQ9IlBhdGgiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJQYXRoIiBwb2ludHM9IjEyMC45OSAxLjM5IDEzOC45OSAxLjM5IDEzOC45OSA1LjIxIDEyNS4yNiA1LjIxIDEyNS4yNiAxMS41MiAxMzcuNDMgMTEuNTIgMTM3LjQzIDE1LjMzIDEyNS4yNiAxNS4zMyAxMjUuMjYgMjEuODUgMTM5LjE3IDIxLjg1IDEzOS4xNyAyNS42NyAxMjEgMjUuNjcgMTIxIDEuMzkiPjwvcG9seWdvbj4KICAgICAgICAgICAgPC9nPgogICAgICAgICAgICA8cGF0aCBkPSJNMjEuNjYsMzkuOTkgQzQxLjI2LDkuNDIgODAuNSwtMS4yNSAxMTMuMjMsMTMuNDQgQzExMi41MSwxMi45NCAxMTEuNzgsMTIuNDMgMTExLjAzLDExLjk1IEM3Ny41MiwtOS41NCAzMi45OCwwLjExIDExLjU2LDMzLjUyIEMtOS44Nyw2Ni45MiAtMC4wNiwxMTEuNDMgMzMuNDUsMTMyLjkyIEMzNC4yLDEzMy40IDM0Ljk2LDEzMy44NSAzNS43MiwxMzQuMyBDOC43MywxMTAuNjggMi4wNiw3MC41NiAyMS42NiwzOS45OSIgaWQ9IlBhdGgiIGZpbGw9IiNGNzhEMkMiPjwvcGF0aD4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==" alt="Eclipse Incubator Logo"/></a><style data-emotion-css="1uno72p">.css-1uno72p{font-size:0.9rem;}</style><style data-emotion-css="2r9mng">.css-2r9mng{font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.125;font-weight:700;margin-top:16px;margin-bottom:16px;font-size:16px;font-size:0.9rem;}</style><h6 class="css-2r9mng">OpenJ9 is an Eclipse Incubator Project</h6></section><style data-emotion-css="1hrevlp">.css-1hrevlp{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex:100%;-ms-flex:100%;flex:100%;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;}@media screen and (min-width:35rem){.css-1hrevlp{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex:50%;-ms-flex:50%;flex:50%;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;}}@media screen and (min-width:62.5rem){.css-1hrevlp{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex:50%;-ms-flex:50%;flex:50%;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;}}@media screen and (min-width:85rem){.css-1hrevlp{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex:50%;-ms-flex:50%;flex:50%;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;}}.css-1hrevlp a{color:white;-webkit-text-decoration:none;text-decoration:none;}.css-1hrevlp a:hover{color:var(--theme-ui-colors-links,#5DA7A3);}</style><nav class="css-1hrevlp"><style data-emotion-css="1vm4d63">.css-1vm4d63{-webkit-flex:1;-ms-flex:1;flex:1;padding-left:2rem;margin-right:1.1rem;padding:1rem;font-size:1rem;}@media screen and (min-width:35rem){.css-1vm4d63{padding-left:0.8rem;padding:0;font-size:0.9rem;}}@media screen and (min-width:62.5rem){.css-1vm4d63{padding-left:0.8rem;font-size:1rem;}}@media screen and (min-width:85rem){.css-1vm4d63{padding-left:0.8rem;font-size:1rem;}}</style><section class="css-1vm4d63"><style data-emotion-css="1p7eyhh">.css-1p7eyhh{margin-bottom:0.2rem;}</style><style data-emotion-css="shyl6e">.css-shyl6e{font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.125;font-weight:700;margin-top:16px;margin-bottom:16px;font-size:20px;margin-bottom:0.2rem;}</style><h4 class="css-shyl6e">Docs</h4><style data-emotion-css="1l04qsy">.css-1l04qsy{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;list-style:none;-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}.css-1l04qsy li{padding:0;}.css-1l04qsy li:first-of-type{margin-left:0;}.css-1l04qsy li:last-child{margin-right:0;padding-right:0;}</style><ul class="css-1l04qsy"><li><style data-emotion-css="14i0930">.css-14i0930{-webkit-text-decoration:none;text-decoration:none;color:white;}</style><a href="https://www.eclipse.org/openj9/docs/openj9_newuser/" rel="noopener noreferrer" target="_blank" class="css-14i0930">New to OpenJ9?</a></li><li><a href="https://www.eclipse.org/openj9/docs/introduction/" rel="noopener noreferrer" target="_blank" class="css-14i0930">Getting started</a></li><li><a href="https://www.eclipse.org/openj9/docs/cmdline_specifying/" rel="noopener noreferrer" target="_blank" class="css-14i0930">Command-line options</a></li></ul></section><style data-emotion-css="4nlx3l">.css-4nlx3l{-webkit-flex:1;-ms-flex:1;flex:1;padding-left:2rem;padding:1rem;font-size:1rem;}@media screen and (min-width:35rem){.css-4nlx3l{padding-left:0.8rem;padding:0;font-size:0.9rem;}}@media screen and (min-width:62.5rem){.css-4nlx3l{padding-left:0;font-size:1rem;}}@media screen and (min-width:85rem){.css-4nlx3l{padding-left:0;font-size:1rem;}}</style><section class="css-4nlx3l"><h4 class="css-shyl6e">Resources</h4><ul class="css-1l04qsy"><li><a class="css-14i0930" href="/openj9/about">About</a></li><li><a class="css-14i0930" href="/openj9/performance">Performance</a></li></ul></section><style data-emotion-css="1v1ksah">.css-1v1ksah{-webkit-flex:1;-ms-flex:1;flex:1;padding-left:2rem;padding:1rem;font-size:1rem;margin-left:0;}@media screen and (min-width:35rem){.css-1v1ksah{padding-left:0;padding:0;font-size:0.9rem;margin-left:1rem;}}@media screen and (min-width:62.5rem){.css-1v1ksah{padding-left:0;font-size:1rem;}}@media screen and (min-width:85rem){.css-1v1ksah{padding-left:0;font-size:1rem;}}</style><section class="css-1v1ksah"><h4 class="css-shyl6e">Community</h4><ul class="css-1l04qsy"><li><a class="css-14i0930" href="/openj9/news">News</a></li><li><a href="https://blog.openj9.org/" rel="noopener noreferrer" target="_blank" class="css-14i0930">Blogs</a></li></ul></section></nav><style data-emotion-css="1qgmx7a">.css-1qgmx7a{-webkit-flex:25%;-ms-flex:25%;flex:25%;display:none;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}@media screen and (min-width:35rem){.css-1qgmx7a{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:flex-end;-webkit-box-align:flex-end;-ms-flex-align:flex-end;align-items:flex-end;}}@media screen and (min-width:62.5rem){.css-1qgmx7a{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:flex-end;-webkit-box-align:flex-end;-ms-flex-align:flex-end;align-items:flex-end;}}@media screen and (min-width:85rem){.css-1qgmx7a{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:flex-end;-webkit-box-align:flex-end;-ms-flex-align:flex-end;align-items:flex-end;}}</style><section class="css-1qgmx7a"><style data-emotion-css="10op7gg">.css-10op7gg{font-size:0.9rem;margin-top:1.3rem;margin-left:0.6rem;}</style><style data-emotion-css="z87sw5">.css-z87sw5{font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.125;font-weight:700;margin-top:16px;margin-bottom:16px;font-size:16px;font-size:0.9rem;margin-top:1.3rem;margin-left:0.6rem;}</style><h6 class="css-z87sw5">OpenJ9 is an Eclipse Incubator Project</h6><a href="https://wiki.eclipse.org/Development_Resources/Process_Guidelines/What_is_Incubation" rel="noopener noreferrer" target="_blank"><img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNTBweCIgaGVpZ2h0PSI3NXB4IiB2aWV3Qm94PSIwIDAgMTU3IDIzMSIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KICAgIDwhLS0gR2VuZXJhdG9yOiBTa2V0Y2ggNjEuMiAoODk2NTMpIC0gaHR0cHM6Ly9za2V0Y2guY29tIC0tPgogICAgPHRpdGxlPmVjbGlwc2VfaW5jdWJhdGlvbl92ZXJ0aWNhbF9zdmc8L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0iZWNsaXBzZV9pbmN1YmF0aW9uX3ZlcnRpY2FsX3N2ZyIgZmlsbC1ydWxlPSJub256ZXJvIj4KICAgICAgICAgICAgPGcgaWQ9Ikdyb3VwIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNy4wMDAwMDAsIDIxNC4wMDAwMDApIiBmaWxsPSIjRkZGRkZGIj4KICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJQYXRoIiBwb2ludHM9IjAuNzUgMC4zNCAxLjkyIDAuMzQgMS45MiAxNi4wMyAwLjc1IDE2LjAzIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSI1LjYyIDAuMzQgNi43MiAwLjM0IDE3LjU1IDEzLjk5IDE3LjU1IDAuMzQgMTguNjcgMC4zNCAxOC42NyAxNi4wMyAxNy44IDE2LjAzIDYuNzUgMi4wOSA2Ljc1IDE2LjAzIDUuNjMgMTYuMDMgNS42MyAwLjM0Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMjEuODYsOC4yMyBMMjEuODYsOC4xOSBDMjEuODYsMy43NSAyNS4xOCwwLjA4IDI5LjcxLDAuMDggQzMyLjUxLDAuMDggMzQuMTksMS4xMSAzNS44MSwyLjU5IEwzNC45OCwzLjQ0IEMzMy42MSwyLjEyIDMyLjA0LDEuMTMgMjkuNjksMS4xMyBDMjUuOTIsMS4xMyAyMy4wOCw0LjIgMjMuMDgsOC4xNSBMMjMuMDgsOC4xOSBDMjMuMDgsMTIuMTYgMjUuOTcsMTUuMjUgMjkuNzEsMTUuMjUgQzMxLjk3LDE1LjI1IDMzLjUyLDE0LjM3IDM1LjExLDEyLjgxIEwzNS44OSwxMy41NyBDMzQuMjMsMTUuMjEgMzIuNDQsMTYuMyAyOS42NiwxNi4zIEMyNS4xOCwxNi4zIDIxLjg2LDEyLjc0IDIxLjg2LDguMjMgWiIgaWQ9IlBhdGgiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0zOC40LDkuNTEgTDM4LjQsMC4zNCBMMzkuNTcsMC4zNCBMMzkuNTcsOS40IEMzOS41NywxMy4xIDQxLjU3LDE1LjIzIDQ0Ljg4LDE1LjIzIEM0OC4wNiwxNS4yMyA1MC4xLDEzLjMgNTAuMSw5LjUxIEw1MC4xLDAuMzQgTDUxLjI3LDAuMzQgTDUxLjI3LDkuMzcgQzUxLjI3LDEzLjg4IDQ4LjY1LDE2LjI3MDAzMTQgNDQuODQsMTYuMjcwMDMxNCBDNDEuMDcsMTYuMjggMzguNCwxMy45IDM4LjQsOS41MSBaIiBpZD0iUGF0aCI+PC9wYXRoPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTU0LjAyLDAuMzQgTDYwLjUsMC4zNCBDNjIuMjcsMC4zNCA2My43MSwwLjg2IDY0LjU4LDEuNzMgQzY1LjIzLDIuMzggNjUuNTksMy4yMSA2NS41OSw0LjIgTDY1LjU5LDQuMjQgQzY1LjU5LDYuMzcgNjQuMiw3LjQ1IDYyLjkyLDcuOTYgQzY0LjgsOC40NSA2Ni40Niw5LjUzIDY2LjQ2LDExLjcgTDY2LjQ2LDExLjc0IEM2Ni40NiwxNC4zNiA2NC4yMiwxNi4wMiA2MC44MywxNi4wMiBMNTQuMDIsMTYuMDIgTDU0LjAyLDAuMzQgTDU0LjAyLDAuMzQgWiBNNjQuNCw0LjMxIEM2NC40LDIuNTggNjIuOTksMS40MiA2MC40OCwxLjQyIEw1NS4xOSwxLjQyIEw1NS4xOSw3LjU4IEw2MC4zNyw3LjU4IEM2Mi43Miw3LjU4IDY0LjQsNi40NCA2NC40LDQuMzUgTDY0LjQsNC4zMSBaIE02MC41LDguNjYgTDU1LjE5LDguNjYgTDU1LjE5LDE0Ljk2IEw2MC44OCwxNC45NiBDNjMuNTcsMTQuOTYgNjUuMjcwMDQ0NCwxMy43MyA2NS4yNzAwNDQ0LDExLjc1IEw2NS4yNzAwNDQ0LDExLjcxIEM2NS4yOCw5Ljc4IDYzLjYsOC42NiA2MC41LDguNjYgWiIgaWQ9IlNoYXBlIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNzYuMjgsMC4yMyBMNzcuNCwwLjIzIEw4NC43MSwxNi4wMyBMODMuNDMsMTYuMDMgTDgxLjQ0LDExLjY0IEw3Mi4xOCwxMS42NCBMNzAuMTksMTYuMDMgTDY4Ljk4LDE2LjAzIEw3Ni4yOCwwLjIzIFogTTgwLjk0LDEwLjU5IEw3Ni44MiwxLjUxIEw3Mi42NywxMC41OSBMODAuOTQsMTAuNTkgWiIgaWQ9IlNoYXBlIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSI5MS4wNSAxLjQyIDg1LjU4IDEuNDIgODUuNTggMC4zNCA5Ny42OCAwLjM0IDk3LjY4IDEuNDIgOTIuMjEgMS40MiA5Mi4yMSAxNi4wMyA5MS4wNCAxNi4wMyA5MS4wNCAxLjQyIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSIxMDEuMjkgMC4zNCAxMDIuNDYgMC4zNCAxMDIuNDYgMTYuMDMgMTAxLjI5IDE2LjAzIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTA1LjkxLDguMjMgTDEwNS45MSw4LjE5IEMxMDUuOTEsMy45MSAxMDkuMDcsMC4wOCAxMTMuODIsMC4wOCBDMTE4LjU3LDAuMDggMTIxLjY5LDMuODcgMTIxLjY5LDguMTUgTDEyMS42OSw4LjE5IEMxMjEuNjksMTIuNDcgMTE4LjUzLDE2LjMgMTEzLjc4LDE2LjMgQzEwOS4wMywxNi4zIDEwNS45MSwxMi41MSAxMDUuOTEsOC4yMyBaIE0xMjAuNDgsOC4yMyBMMTIwLjQ4LDguMTkgQzEyMC40OCw0LjMxIDExNy42NiwxLjEzIDExMy43OCwxLjEzIEMxMDkuOSwxLjEzIDEwNy4xMiw0LjI3IDEwNy4xMiw4LjE1IEwxMDcuMTIsOC4xOSBDMTA3LjEyLDEyLjA3IDEwOS45NCwxNS4yNSAxMTMuODIsMTUuMjUgQzExNy43LDE1LjI1IDEyMC40OCwxMi4xMSAxMjAuNDgsOC4yMyBaIiBpZD0iU2hhcGUiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJQYXRoIiBwb2ludHM9IjEyNC44OSAwLjM0IDEyNS45OSAwLjM0IDEzNi44MiAxMy45OSAxMzYuODIgMC4zNCAxMzcuOTQgMC4zNCAxMzcuOTQgMTYuMDMgMTM3LjA3IDE2LjAzIDEyNi4wMiAyLjA5IDEyNi4wMiAxNi4wMyAxMjQuOSAxNi4wMyAxMjQuOSAwLjM0Ij48L3BvbHlnb24+CiAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgPHBhdGggZD0iTTU2LjY2LDE2Ni4yMyBDNTcuNTEsMTYzLjQ4IDYwLjQzLDE2MS40MyA2My45NCwxNjEuNDMgQzY1LjE0LDE2MS40MyA2Ni4yNSwxNjEuNjkgNjcuMjUsMTYyLjExIEM2OS40NiwxNjAuNjQgNzIuMTksMTU5Ljc2IDc1LjE3LDE1OS43NiBMNzUuMTksMTU5Ljc2IEM3Ni4xMSwxNTcuOSA3OC40OCwxNTYuNTcgODEuMywxNTYuNTcgQzgyLjA0LDE1Ni41NyA4Mi43NSwxNTYuNjcgODMuNDIsMTU2Ljg0IEM4My4zMywxNTQuNTYgODMuNjksMTUyLjE4IDg0LjU1LDE0OS42OCBDODUuNTUsMTQ2Ljc5IDg3LDE0NC4wMyA4OC41MiwxNDEuMjggQzg4LjE3LDEzNy4xNiA4Ny45LDEzMy41IDgyLjc0LDEzMiBDODAuODIsMTMxLjQ0IDc4LjgyLDEzMS4yNyA3Ni44NiwxMzEuMDQgTDc2Ljg1LDEzMS4wNCBMNzYuODUsMTMxLjAzIEM3Ni4wMSwxMzAuOTMgNzUuMTcsMTMwLjgxIDc0LjM1LDEzMC42NSBDNjAuMTgsMTQ1LjQxIDQwLjIsMTA5Ljk3IDQwLjIsMTA5Ljk3IEM4NC4zLDEwMy4xMyA3Ni4wMSwxMjUuNjEgNzYuMDEsMTI1LjYxIEM3Mi44MSwxMjQuMDUgNzEuOTMsMTIyLjA4IDY5LjQ5LDExOS43MyBDNjMuOTIsMTE0LjM4IDUwLjYyLDExMy40NCA1MC42MiwxMTMuNDQgQzY2LjU0LDExNy41MSA2OC43MSwxMjUuMjIgNzQuOTcsMTI3LjY5IEM3Ni4zOSwxMjguMDEgNzcuOSwxMjguMTMgNzkuMzUsMTI4LjI5IEM4Mi4xNSwxMjguNTkgODQuODksMTI5LjExIDg3LjIyLDEzMC42MSBDODkuNjMsMTMyLjE2IDkwLjcxLDEzNC4wOSA5MS4yNiwxMzYuMjYgQzkzLDEzMi45NCA5NC41LDEyOS41NiA5NS4wNywxMjUuOTIgQzk1LjgsMTIxLjI3IDk1LjEzLDExNS44OCA5MS44MywxMTIuMDcgQzg4Ljc4LDEwOC41NSA4NC42NiwxMDUuODkgODEuNCwxMDIuNTIgQzc3LjkyLDk4LjkxIDc1LjYxLDk0LjQ2IDc1LjUyLDg5LjcxIEM3My43Niw4NS44NiA3MC45LDgxLjM5IDY4LjI4LDc5LjY1IEM1Ni45LDkwLjM0IDQxLjksNjIuNTggNDEuOSw2Mi41OCBDNzYuODgsNTcuNyA3MS4xLDc1LjY3IDcxLjEsNzUuNjcgQzYyLjcsNjYuMjggNTIuMzEsNjcuMTIgNTIuMzEsNjcuMTIgQzYwLjcxLDY5Ljc5IDY3LjM0LDc1LjE1IDcxLjIsNzguODMgTDcxLjczLDc5LjM2IEM3My4zLDgxIDc0LjksODIuNzUgNzYuMjQsODQuNjMgQzc3LjYsNzkuNDggODAuNzcsNzIuMjcgODMuMjYsNjcuOTcgQzgzLjI2LDY3Ljk3IDkxLjY2LDUzLjE1IDEwNS44LDQzLjkgQzEwNS44LDQzLjkgOTUuMDIsNDUuMTQgODMuNDEsNjIuODkgQzgzLjQxLDYyLjg5IDY3Ljk5LDM4LjcgMTE3LjgzLDM0LjIzIEMxMTcuODMsMzQuMjMgMTE0LjQsNzguMTcgODcuNDUsNjkuNjMgQzgyLjc3LDc2LjY3IDc5LjcsODQuNzQgODAuMzMsOTAuNDIgQzgwLjk1LDk1Ljk2IDg0LjgzLDk5Ljg2IDg5LjExLDEwMy41IEM5MC4yNSw5Ny42NiA5NC40Niw5Mi42MyAxMDAuNjUsODkuODkgQzEwNS42LDg3LjkyIDExMi45LDg2LjAzIDExOS43Miw4NS42MiBDMTE5LjcyLDg1LjYyIDEwNi4zOSw4Mi41OCA5Ni4yNSw4OS41MSBDOTYuMjUsODkuNTEgOTYuNDIsNjkuMjIgMTMyLjM0LDgzLjk1IEMxMzIuMzQsODMuOTUgMTA2LjM0LDExMC4yOSA5Ny45OSw5NC41OSBDOTQuMDMsOTcuMiA5MS41MywxMDEuNTggOTIuMTgsMTA2LjExIEM5NC41LDEwOC4xNCA5Ni42NiwxMTAuMzMgOTcuOTcsMTEzLjAzIEM5OS44LDExNi44MiAxMDAuNDUsMTIxLjI0IDk5Ljk1LDEyNS4zNSBDOTguOTksMTMzLjI1IDk0LjA1LDEzOS45NyA5MC42NywxNDcuMTQgQzg5LjI5LDE1MC4wNiA4Ny45NywxNTMuMjcgODcuOTUsMTU2LjUxIEM4OS42NCwxNTYuMDQgOTEuNDcsMTU1Ljc4IDkzLjM5LDE1NS43OCBDMTAwLjYyLDE1NS43OCAxMDYuNzEsMTU5LjM3IDEwOC42OCwxNjQuMyBDMTExLjYxLDE2NC42MSAxMTMuOTIsMTY2LjMzIDExNC4zNCwxNjguNTEgQzExNi40NSwxNjkuODEgMTE4LjEyLDE3MS42MyAxMTkuMTMsMTczLjc1IEw1MC41NSwxNzMuNzUgQzUyLjAyLDE3MC42MiA1NC4xNCwxNjcuMTYgNTYuNjYsMTY2LjIzIiBpZD0iUGF0aCIgZmlsbD0iI0Y3OEQyQyI+PC9wYXRoPgogICAgICAgICAgICA8ZyBpZD0iR3JvdXAiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE3LjAwMDAwMCwgMTgyLjAwMDAwMCkiIGZpbGw9IiNGRkZGRkYiPgogICAgICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlBhdGgiIHBvaW50cz0iMC41NCAxLjM5IDE4LjU0IDEuMzkgMTguNTQgNS4yMSA0LjggNS4yMSA0LjggMTEuNTIgMTYuOTcgMTEuNTIgMTYuOTcgMTUuMzMgNC44IDE1LjMzIDQuOCAyMS44NSAxOC43MSAyMS44NSAxOC43MSAyNS42NyAwLjU0IDI1LjY3Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMjEuNTUsMTMuNiBMMjEuNTUsMTMuNTMgQzIxLjU1LDYuNjMgMjYuNzIsMC45NyAzNC4wNywwLjk3IEMzOC41NCwwLjk3IDQxLjI1LDIuNTMgNDMuNTcsNC43NSBMNDAuODMsNy45MSBDMzguODksNi4xMSAzNi44MSw0Ljg5IDM0LjAzLDQuODkgQzI5LjQyLDQuODkgMjYuMDIsOC43MSAyNi4wMiwxMy40NiBMMjYuMDIsMTMuNTMgQzI2LjAyLDE4LjI4IDI5LjM4LDIyLjEzIDM0LjAzLDIyLjEzIEMzNy4wMSwyMi4xMyAzOC45MiwyMC45NSA0MSwxOS4wMSBMNDMuNzQsMjEuNzggQzQxLjIxLDI0LjQyIDM4LjQzLDI2LjA4MDAxMzYgMzMuODksMjYuMDgwMDEzNiBDMjYuODMsMjYuMDkgMjEuNTUsMjAuNTcgMjEuNTUsMTMuNiBaIiBpZD0iUGF0aCI+PC9wYXRoPgogICAgICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlBhdGgiIHBvaW50cz0iNDcuMjIgMS4zOSA1MS40OSAxLjM5IDUxLjQ5IDIxLjc4IDY0LjI1IDIxLjc4IDY0LjI1IDI1LjY2IDQ3LjIyIDI1LjY2Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSI2Ny45MyAxLjM5IDcyLjIgMS4zOSA3Mi4yIDI1LjY3IDY3LjkzIDI1LjY3Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNzcuNjcsMS4zOSBMODcuMjQsMS4zOSBDOTIuOTMsMS4zOSA5Ni40Nyw0LjYyIDk2LjQ3LDkuNTEgTDk2LjQ3LDkuNTggQzk2LjQ3LDE1LjAzIDkyLjEsMTcuODcgODYuNzYsMTcuODcgTDgxLjk0LDE3Ljg3IEw4MS45NCwyNS42NyBMNzcuNjcsMjUuNjcgTDc3LjY3LDEuMzkgWiBNODYuOSwxNC4wMiBDOTAuMTMsMTQuMDIgOTIuMTQsMTIuMjIgOTIuMTQsOS42OCBMOTIuMTQsOS42MSBDOTIuMTQsNi43NyA5MC4wOSw1LjI4IDg2LjksNS4yOCBMODEuOTQsNS4yOCBMODEuOTQsMTQuMDIgTDg2LjksMTQuMDIgWiIgaWQ9IlNoYXBlIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNOTguMjEsMjIuMTMgTDEwMC43OCwxOS4wOCBDMTAzLjEsMjEuMDkgMTA1LjQ2LDIyLjI0IDEwOC40NSwyMi4yNCBDMTExLjA5LDIyLjI0IDExMi43NSwyMC45OSAxMTIuNzUsMTkuMTkgTDExMi43NSwxOS4xMiBDMTEyLjc1LDE3LjM5IDExMS43OCwxNi40NSAxMDcuMjcsMTUuNDEgQzEwMi4xLDE0LjE2IDk5LjE5LDEyLjY0IDk5LjE5LDguMTYgTDk5LjE5LDguMDkgQzk5LjE5LDMuOTMgMTAyLjY2LDEuMDUgMTA3LjQ4LDEuMDUgQzExMS4wMiwxLjA1IDExMy44MywyLjEzIDExNi4yOSw0LjEgTDExNCw3LjMzIEMxMTEuODEsNS43IDEwOS42Myw0LjgzIDEwNy40MSw0LjgzIEMxMDQuOTEsNC44MyAxMDMuNDYsNi4xMSAxMDMuNDYsNy43MSBMMTAzLjQ2LDcuNzggQzEwMy40Niw5LjY1IDEwNC41NywxMC40OSAxMDkuMjUsMTEuNiBDMTE0LjM4LDEyLjg1IDExNy4wMiwxNC42OSAxMTcuMDIsMTguNzEgTDExNy4wMiwxOC43OCBDMTE3LjAyLDIzLjMyIDExMy40NSwyNi4wMyAxMDguMzUsMjYuMDMgQzEwNC42MiwyNi4wMiAxMDEuMTIsMjQuNzMgOTguMjEsMjIuMTMgWiIgaWQ9IlBhdGgiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJQYXRoIiBwb2ludHM9IjEyMC45OSAxLjM5IDEzOC45OSAxLjM5IDEzOC45OSA1LjIxIDEyNS4yNiA1LjIxIDEyNS4yNiAxMS41MiAxMzcuNDMgMTEuNTIgMTM3LjQzIDE1LjMzIDEyNS4yNiAxNS4zMyAxMjUuMjYgMjEuODUgMTM5LjE3IDIxLjg1IDEzOS4xNyAyNS42NyAxMjEgMjUuNjcgMTIxIDEuMzkiPjwvcG9seWdvbj4KICAgICAgICAgICAgPC9nPgogICAgICAgICAgICA8cGF0aCBkPSJNMjEuNjYsMzkuOTkgQzQxLjI2LDkuNDIgODAuNSwtMS4yNSAxMTMuMjMsMTMuNDQgQzExMi41MSwxMi45NCAxMTEuNzgsMTIuNDMgMTExLjAzLDExLjk1IEM3Ny41MiwtOS41NCAzMi45OCwwLjExIDExLjU2LDMzLjUyIEMtOS44Nyw2Ni45MiAtMC4wNiwxMTEuNDMgMzMuNDUsMTMyLjkyIEMzNC4yLDEzMy40IDM0Ljk2LDEzMy44NSAzNS43MiwxMzQuMyBDOC43MywxMTAuNjggMi4wNiw3MC41NiAyMS42NiwzOS45OSIgaWQ9IlBhdGgiIGZpbGw9IiNGNzhEMkMiPjwvcGF0aD4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==" alt="Eclipse Incubator Logo"/></a></section><style data-emotion-css="7f8z6s">.css-7f8z6s{height:0.15rem;background-color:var(--theme-ui-colors-secondary,#5DA7A3);width:100%;margin-top:16px;margin-bottom:16px;}</style><div class="css-7f8z6s"></div><style data-emotion-css="6gs9hh">.css-6gs9hh{width:70%;}</style><nav class="css-6gs9hh"><style data-emotion-css="1dz3xom">.css-1dz3xom{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}@media screen and (min-width:35rem){.css-1dz3xom{-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;}}@media screen and (min-width:62.5rem){.css-1dz3xom{-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;}}@media screen and (min-width:85rem){.css-1dz3xom{-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;}}.css-1dz3xom li{padding:0.4rem;font-size:0.9rem;list-style-type:none;padding-left:1rem;color:white;}@media screen and (min-width:35rem){.css-1dz3xom li{font-size:0.7rem;}}@media screen and (min-width:62.5rem){.css-1dz3xom li{font-size:1rem;}}@media screen and (min-width:85rem){.css-1dz3xom li{font-size:1rem;}}.css-1dz3xom a{color:white;-webkit-text-decoration:none;text-decoration:none;}.css-1dz3xom a:hover{color:var(--theme-ui-colors-links,#5DA7A3);}</style><ul class="css-1dz3xom"><style data-emotion-css="1ga24ma">.css-1ga24ma{padding-left:1rem;}@media screen and (min-width:35rem){.css-1ga24ma{padding-left:0rem !important;}}@media screen and (min-width:62.5rem){.css-1ga24ma{padding-left:0.5rem !important;}}@media screen and (min-width:85rem){.css-1ga24ma{padding-left:0.5 !important;}}</style><li class="css-1ga24ma"><a href="https://www.eclipse.org/" rel="noopener noreferrer" target="_blank" class="css-14i0930">Eclipse Foundation Website </a></li><li><a href="https://www.eclipse.org/legal/privacy.php" rel="noopener noreferrer" target="_blank" class="css-14i0930">Privacy Policy</a></li><li><a href="https://www.eclipse.org/legal/termsofuse.php" rel="noopener noreferrer" target="_blank" class="css-14i0930">Terms of Use</a></li><li><a href="https://www.eclipse.org/legal/copyright.php" rel="noopener noreferrer" target="_blank" class="css-14i0930">Copyright Agent</a></li><li><a href="https://www.eclipse.org/legal/" rel="noopener noreferrer" target="_blank" class="css-14i0930">Legal</a></li></ul></nav><style data-emotion-css="1g96o9k">.css-1g96o9k{display:inline;-webkit-flex:30%;-ms-flex:30%;flex:30%;}@media screen and (min-width:35rem){.css-1g96o9k{display:inline;}}@media screen and (min-width:62.5rem){.css-1g96o9k{display:block;}}@media screen and (min-width:85rem){.css-1g96o9k{display:block;}}</style><nav class="css-1g96o9k"><style data-emotion-css="gwenrj">.css-gwenrj{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;list-style:none;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;}.css-gwenrj li{padding:8px;margin-left:8px;margin-right:8px;}.css-gwenrj li a{color:white;-webkit-text-decoration:none;text-decoration:none;}.css-gwenrj li a:hover{color:var(--theme-ui-colors-links,#5DA7A3);}.css-gwenrj li:first-of-type{margin-left:0;}.css-gwenrj li:last-child{margin-right:0;padding-right:0;}@media screen and (min-width:35rem){.css-gwenrj{-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end;}}@media screen and (min-width:62.5rem){.css-gwenrj{-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end;}}@media screen and (min-width:85rem){.css-gwenrj{-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end;}}</style><ul class="css-gwenrj"><li><a href="https://twitter.com/openj9/" rel="noopener noreferrer" target="_blank"> <img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIyNXB4IiB2aWV3Qm94PSIwIDAgMjUgMjUiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5Ud2l0dGVyPC90aXRsZT4KICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPgogICAgPGcgaWQ9IlBhZ2UtMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9IlR3aXR0ZXIiIGZpbGwtcnVsZT0ibm9uemVybyI+CiAgICAgICAgICAgIDxnIGlkPSJ0d2l0dGVyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjAwMDAwMCwgMC4yOTg4NzkpIj4KICAgICAgICAgICAgICAgIDxlbGxpcHNlIGlkPSJPdmFsLXBhdGgiIGZpbGw9IiM0MzQzNDMiIGN4PSIxMi41MDAyMjEyIiBjeT0iMTIuMjcyNzI3MyIgcng9IjEyLjUiIHJ5PSIxMi4yNzI3MjczIj48L2VsbGlwc2U+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTIuNTAwMjIxMiwwIEMxOS40MDM3ODA2LDAgMjUuMDAwMjIxMiw1LjQ5NDY4NzE2IDI1LjAwMDIyMTIsMTIuMjcyNzI3MyBDMjUuMDAwMjIxMiwxOS4wNTA3Njc0IDE5LjQwMzc4MDYsMjQuNTQ1NDU0NSAxMi41MDAyMjEyLDI0LjU0NTQ1NDUgQzUuNTk2NjYxODcsMjQuNTQ1NDU0NSAwLjAwMDIyMTIzODkzOCwxOS4wNTA3Njc0IDAuMDAwMjIxMjM4OTM4LDEyLjI3MjcyNzMgQzAuMDAwMjIxMjM4OTM4LDUuNDk0Njg3MTYgNS41OTY2NjE4NywwIDEyLjUwMDIyMTIsMCBaIE0xNS4xMDM0MzMzLDYuODE4MTgxODIgQzEzLjQ2NTM4MDIsNi44MTgxODE4MiAxMi4xMzY4NDA0LDguMDkyMTI0MTEgMTIuMTM2ODQwNCw5LjY2Mjg1OTk2IEMxMi4xMzY4NDA0LDkuODg1ODI2MzggMTIuMTYzMTY3OCwxMC4xMDI4NTI3IDEyLjIxNDA1MjgsMTAuMzExMTgxIEM5Ljc0ODU2NjA0LDEwLjE5MjU5MDggNy41NjI1MDQxLDkuMDYwMTUwNTQgNi4wOTkyMjk3Niw3LjMzODU3ODIzIEM1Ljg0MzkyMDAzLDcuNzU4NjI5MTUgNS42OTc0NTk4NSw4LjI0NzYyNzgxIDUuNjk3NDU5ODUsOC43Njg4NzI4MSBDNS42OTc0NTk4NSw5Ljc1NTU2ODE3IDYuMjIxNTc0ODksMTAuNjI2NjQzNCA3LjAxNzE1MDExLDExLjEzNjY0NDcgQzYuNTMxMDg4MTcsMTEuMTIyMDA2NSA2LjA3MzM0NDgsMTAuOTk0MDgxOSA1LjY3MzU2NjA0LDEwLjc4MDQ1IEw1LjY3MzM0NDgsMTAuODE2NTE0OSBMNS42NzMzNDQ4LDEwLjgxNjUxNDkgQzUuNjczMzQ0OCwxMi4xOTQ4MzM1IDYuNjk2MzUzNjUsMTMuMzQ0NDU3NyA4LjA1MzIxMjA2LDEzLjYwNTYxMDYgQzcuODA0NTM5NSwxMy42NzA5NTE5IDcuNTQxOTI4ODgsMTMuNzA1NTMxOCA3LjI3MTc5NjEzLDEzLjcwNTUzMTggQzcuMDgwMjAzMjEsMTMuNzA1NTMxOCA2Ljg5NDU4Mzc0LDEzLjY4NzkyMzYgNi43MTM2MTAyOSwxMy42NTQ4Mjg3IEM3LjA5MTA0MzkyLDE0Ljc4NDcyMzIgOC4xODYzOTc5LDE1LjYwNzIxNjkgOS40ODQ4NDkyMywxNS42MzAzNDA5IEM4LjQ2OTM2MjUsMTYuMzkzNDMzNCA3LjE5MDM4MDIsMTYuODQ4MDY0MiA1LjgwMDExNDcyLDE2Ljg0ODA2NDIgQzUuNTYxMTc2NjYsMTYuODQ4MDY0MiA1LjMyNDQ1MSwxNi44MzQ2OTkgNS4wOTI4MTM4MywxNi44MDgxODA2IEM2LjQwNDk4MTk3LDE3LjYxNTYxMTggNy45NjQ3MTY0OSwxOC4wODYzNjU4IDkuNjM5OTM3NzMsMTguMDg2MzY1OCBDMTUuMDk2NTc0OSwxOC4wODYzNjU4IDE4LjA4MDY0NTcsMTMuNzUxNzc5OCAxOC4wODA2NDU3LDkuOTkyMzI0MTQgQzE4LjA4MDY0NTcsOS44NjkwNjY3NyAxOC4wNzc3Njk2LDkuNzQ2MjMzNyAxOC4wNzIwMTc0LDkuNjI0NDYxMzcgQzE4LjY1MjEwNTksOS4yMjM1MDM2OCAxOS4xNTQ5ODIsOC43MjI2MjQ3OCAxOS41NTI1NDgzLDguMTUyMTYxNjkgQzE5LjAyMDY4OTksOC4zNzgzMTAzMiAxOC40NDg1NjYsOC41MzEyNjgyNSAxNy44NDg1NjYsOC41OTk1Nzk1NiBDMTguNDYxMTc2Nyw4LjI0NzYyNzgxIDE4LjkzMTMwOTQsNy42OTA3NDIxMyAxOS4xNTMyMTIxLDcuMDI2MDg1ODEgQzE4LjU3OTk4Miw3LjM1MjE1NTYzIDE3Ljk0NDgwNSw3LjU4ODY5OTQ2IDE3LjI2OTM2MjUsNy43MTYxOTk3NiBDMTYuNzI4MjEyMSw3LjE2MzU1NzAyIDE1Ljk1NzE5NDQsNi44MTgxODE4MiAxNS4xMDM0MzMzLDYuODE4MTgxODIgWiIgaWQ9IkNvbWJpbmVkLVNoYXBlIiBmaWxsPSIjRkZGRkZGIj48L3BhdGg+CiAgICAgICAgICAgIDwvZz4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==" alt="Twitter Logo"/></a></li><li><a href="https://github.com/eclipse/openj9" rel="noopener noreferrer" target="_blank"> <img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIyNXB4IiB2aWV3Qm94PSIwIDAgMjUgMjUiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5HaXRIdWI8L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0iR2l0SHViIiBmaWxsPSIjRkZGRkZGIiBmaWxsLXJ1bGU9Im5vbnplcm8iPgogICAgICAgICAgICA8ZyBpZD0iZ2l0aHViLWxvZ28iPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTIzLjMyMzIwOSw2LjM1NjM4NTg4IEMyMi4yMDU0MjQzLDQuNDI4ODY0OTMgMjAuNjg5MjIwNywyLjkwMjg0MzkxIDE4Ljc3NDE5OTMsMS43Nzc5Nzg1OCBDMTYuODU4ODkyOCwwLjY1MzA1NTg3MyAxNC43Njc5NDkxLDAuMDkwNzM3OTUzMyAxMi40OTk4ODYsMC4wOTA3Mzc5NTMzIEMxMC4yMzIxMDc5LDAuMDkwNzM3OTUzMyA4LjE0MDQ4MDEzLDAuNjUzMjI3OTkzIDYuMjI1NTcyNjksMS43Nzc5Nzg1OCBDNC4zMTAzODAyMSwyLjkwMjc4NjU0IDIuNzk0MjMzNjcsNC40Mjg4NjQ5MyAxLjY3NjQ0ODk5LDYuMzU2Mzg1ODggQzAuNTU4ODM1MzMzLDguMjgzODQ5NDUgMCwxMC4zODg2NTQ2IDAsMTIuNjcwNzQzOSBDMCwxNS40MTIwNTEgMC43OTQ2NzE0ODMsMTcuODc3MTA0NSAyLjM4NDQxMzQ5LDIwLjA2NjUzNTUgQzMuOTczOTg0NDksMjIuMjU2MTM4OCA2LjAyNzQ3NDg4LDIzLjc3MTI1ODggOC41NDQ3MTM2NywyNC42MTIwNjc4IEM4LjgzNzcyNzQsMjQuNjY2ODAyMiA5LjA1NDYzNzM3LDI0LjYyODMwNDUgOS4xOTU2NzE2MSwyNC40OTc1NTAzIEM5LjMzNjc2Mjg1LDI0LjM2NjYyMzkgOS40MDcyMjI5NiwyNC4yMDI2NTAzIDkuNDA3MjIyOTYsMjQuMDA2MzE4MSBDOS40MDcyMjI5NiwyMy45NzM1NTc5IDkuNDA0NDI5NjQsMjMuNjc4ODMwMSA5LjM5OTAxNDAxLDIzLjEyMTc5MDUgQzkuMzkzNDI3MzcsMjIuNTY0NzUxIDkuMzkwODA1MDcsMjIuMDc4Nzk3MiA5LjM5MDgwNTA3LDIxLjY2NDE1ODcgTDkuMDE2NDQyOTcsMjEuNzI5MzM1MSBDOC43Nzc3NTY1LDIxLjc3MzM0MDUgOC40NzY2NDc4MywyMS43OTE5ODY5IDguMTEzMTE2OTgsMjEuNzg2NzA4NiBDNy43NDk3NTcxNSwyMS43ODE2MDIzIDcuMzcyNTQ0NzMsMjEuNzQzMjc2OCA2Ljk4MTk5Mjc3LDIxLjY3MjAxODkgQzYuNTkxMjY5NzksMjEuNjAxMzkyMSA2LjIyNzg1Mjk1LDIxLjQzNzU5MDcgNS44OTE0NTcyMiwyMS4xODA5NTg5IEM1LjU1NTIzMjUyLDIwLjkyNDMyNzEgNS4zMTY1NDYwNCwyMC41ODg0MDUxIDUuMTc1NDU0OCwyMC4xNzM3MDkzIEw1LjAxMjcwMTA2LDE5Ljc5Njc2NTIgQzQuOTA0MjE3NTcsMTkuNTQ1ODEzNCA0LjczMzQyNTkxLDE5LjI2NzAzNTUgNC41MDAwOTgwNSwxOC45NjE0NjQxIEM0LjI2Njc3MDE5LDE4LjY1NTYwNTggNC4wMzA4MjAwMywxOC40NDgyNTc5IDMuNzkyMTMzNTUsMTguMzM5MDc2MSBMMy42NzgxNzc0MywxOC4yNTY5NzQ2IEMzLjYwMjI0NDY5LDE4LjIwMjQxMjMgMy41MzE3ODQ1OCwxOC4xMzY2MDQ5IDMuNDY2NjI2MDgsMTguMDYwMjQwOCBDMy40MDE1MjQ1OCwxNy45ODM4NzY2IDMuMzUyNzgzOTcsMTcuOTA3NDU1MSAzLjMyMDIzMzIzLDE3LjgzMDkxODggQzMuMjg3NjI1NDcsMTcuNzU0MzI1MSAzLjMxNDY0NjU4LDE3LjY5MTUwMTEgMy40MDE1ODE1OSwxNy42NDIyMTcyIEMzLjQ4ODUxNjYsMTcuNTkyOTMzNCAzLjY0NTYyNjY4LDE3LjU2OTAwODYgMy44NzM1OTU5MywxNy41NjkwMDg2IEw0LjE5ODk4OTM5LDE3LjYxNzk0ODIgQzQuNDE2MDEzMzcsMTcuNjYxNzI0MiA0LjY4NDQ1NzI3LDE3Ljc5MjQ3ODUgNS4wMDQ2NjMxNCwxOC4wMTEwMTQzIEM1LjMyNDY5Nzk4LDE4LjIyOTM3NzkgNS41ODc3ODMyNywxOC41MTMyNjIxIDUuNzkzOTc2LDE4Ljg2MjU1MjEgQzYuMDQzNjY0NzUsMTkuMzEwNDA5OSA2LjM0NDQ4ODM4LDE5LjY1MTY2NzYgNi42OTczMDE5OSwxOS44ODY0OTc0IEM3LjA0OTgzMDU4LDIwLjEyMTMyNzMgNy40MDUyNjY0OSwyMC4yMzg1NDE0IDcuNzYzMjY3NzEsMjAuMjM4NTQxNCBDOC4xMjEyNjg5MiwyMC4yMzg1NDE0IDguNDMwNDcyNTIsMjAuMjExMjMxNiA4LjY5MDk5MjUxLDIwLjE1Njg5ODkgQzguOTUxMjI3NDcsMjAuMTAyMjc5MyA5LjE5NTM4NjU3LDIwLjAyMDE3NzcgOS40MjMzNTU4MiwxOS45MTEwNTMzIEM5LjUyMTAwODA2LDE5LjE3OTA4MTkgOS43ODY4ODY2NywxOC42MTY3NjM5IDEwLjIyMDc2MzYsMTguMjIzNjk3OSBDOS42MDIzNTY0MiwxOC4xNTgyOTIxIDkuMDQ2MzcxNDIsMTguMDU5NzgxOCA4LjU1MjUyMzU3LDE3LjkyODc5OCBDOC4wNTg5NjA3NSwxNy43OTc2NDIxIDcuNTQ4OTIzMDMsMTcuNTg0Nzg2MyA3LjAyMjc1MjQ2LDE3LjI4OTY1NjkgQzYuNDk2Mjk2ODUsMTYuOTk0OTI5MSA2LjA1OTU2OTU4LDE2LjYyODk0MzQgNS43MTI0NTY2MiwxNi4xOTIzMzA5IEM1LjM2NTI4NjY1LDE1Ljc1NTQ4ODkgNS4wODAzNjc4NSwxNS4xODE5ODMxIDQuODU4MDk5MjYsMTQuNDcyMzMgQzQuNjM1NzE2NjYsMTMuNzYyMzkgNC41MjQ0OTY4NiwxMi45NDM0NDAzIDQuNTI0NDk2ODYsMTIuMDE1MjUxNCBDNC41MjQ0OTY4NiwxMC42OTM2NTIzIDQuOTUzMTg2MjEsOS41NjkwMTY0MiA1LjgxMDM5Mzg5LDguNjQwNzEyNzggQzUuNDA4ODM5NjcsNy42NDcxMTgwNyA1LjQ0Njc0OTAzLDYuNTMzMjY4NDYgNS45MjQyMzYsNS4yOTkyNzg2OCBDNi4yMzg5MTIyMiw1LjIwMDg4MzA4IDYuNzA1NTY3OTQsNS4yNzQ3MjI4MSA3LjMyMzk3NTE0LDUuNTIwMzM4ODcgQzcuOTQyNDk2MzQsNS43NjYwNjk2OCA4LjM5NTM1NjQ3LDUuOTc2NTczMTQgOC42ODMwMTE1OSw2LjE1MTEwMzQxIEM4Ljk3MDY2NjcsNi4zMjU1NzYzIDkuMjAxMTQ0MjQsNi40NzM0Mjc4NyA5LjM3NDc4NjIzLDYuNTkzMzM4NTQgQzEwLjM4NDA4NzQsNi4zMDk1MTE3MSAxMS40MjU2NTQzLDYuMTY3NTY5NjEgMTIuNDk5NzcyLDYuMTY3NTY5NjEgQzEzLjU3Mzg4OTYsNi4xNjc1Njk2MSAxNC42MTU2ODQ2LDYuMzA5NTExNzEgMTUuNjI1MDQyOCw2LjU5MzMzODU0IEwxNi4yNDM1MDcsNi4yMDAzODcyNiBDMTYuNjY2NDM4Niw1LjkzODE5MDI1IDE3LjE2NTg3MzEsNS42OTc5MDk5MyAxNy43NDA2MTMzLDUuNDc5NDg4OTIgQzE4LjMxNTY5NTUsNS4yNjExODI2NiAxOC43NTU0NDQxLDUuMjAxMDU1MiAxOS4wNTk0MDMxLDUuMjk5NDUwOCBDMTkuNTQ3NDkzMyw2LjUzMzQ5Nzk1IDE5LjU5MDk4OTMsNy42NDcyOTAxOSAxOS4xODkzMjExLDguNjQwODg0OSBDMjAuMDQ2NDcxNyw5LjU2OTE4ODU0IDIwLjQ3NTMzMjEsMTAuNjk0MTExMiAyMC40NzUzMzIxLDEyLjAxNTQyMzUgQzIwLjQ3NTMzMjEsMTIuOTQzNjEyNCAyMC4zNjM3MTMzLDEzLjc2NTE0MzkgMjAuMTQxNjcyNywxNC40ODA1MzQ0IEMxOS45MTkzNDcxLDE1LjE5NjAzOTYgMTkuNjMxOTc3LDE1Ljc2ODk3MTcgMTkuMjc5NDQ4NSwxNi4yMDA1MzUzIEMxOC45MjY1MjA4LDE2LjYzMjA0MTYgMTguNDg3MDAwMiwxNi45OTUxNTg2IDE3Ljk2MDgyOTcsMTcuMjg5ODI5MSBDMTcuNDM0NTQ1MSwxNy41ODQ3MjkgMTYuOTI0MzM2MywxNy43OTc1ODQ4IDE2LjQzMDc3MzUsMTcuOTI4NzQwNiBDMTUuOTM2OTgyNywxOC4wNTk4OTY1IDE1LjM4MDk5NzcsMTguMTU4NDY0MiAxNC43NjI1OTA1LDE4LjIyMzk4NDggQzE1LjMyNjYxMzQsMTguNzE1MjE2OSAxNS42MDg2ODE5LDE5LjQ5MDYyMDEgMTUuNjA4NjgxOSwyMC41NDk4NTAxIEwxNS42MDg2ODE5LDI0LjAwNTg1OTIgQzE1LjYwODY4MTksMjQuMjAyMTkxNCAxNS42NzY1MTk3LDI0LjM2NjEwNzUgMTUuODEyMzA5MywyNC40OTcwOTEzIEMxNS45NDc5Mjc5LDI0LjYyNzg0NTUgMTYuMTYyMTAxNiwyNC42NjYzNDMyIDE2LjQ1NTExNTMsMjQuNjExNTUxNSBDMTguOTcyNjk2MSwyMy43NzA4NTcyIDIxLjAyNjE4NjUsMjIuMjU1Njc5OCAyMi42MTU3MDA1LDIwLjA2NjA3NjYgQzI0LjIwNTA0MzUsMTcuODc2NjQ1NSAyNSwxNS40MTE1OTIgMjUsMTIuNjcwMjg0OSBDMjQuOTk5NDI5OSwxMC4zODg0ODI1IDI0LjQ0MDMwOTYsOC4yODM4NDk0NSAyMy4zMjMyMDksNi4zNTYzODU4OCBaIiBpZD0iU2hhcGUiPjwvcGF0aD4KICAgICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+" alt="GitHub Logo"/></a></li><li><a href="https://openj9.slack.com/" rel="noopener noreferrer" target="_blank"><img src="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIyNXB4IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgogPCEtLSBDcmVhdGVkIHdpdGggTWV0aG9kIERyYXcgLSBodHRwOi8vZ2l0aHViLmNvbS9kdW9waXhlbC9NZXRob2QtRHJhdy8gLS0+CgogPGc+CiAgPHRpdGxlPmJhY2tncm91bmQ8L3RpdGxlPgogIDxyZWN0IGZpbGw9Im5vbmUiIGlkPSJjYW52YXNfYmFja2dyb3VuZCIgaGVpZ2h0PSIyNiIgd2lkdGg9IjI2IiB5PSItMSIgeD0iLTEiLz4KICA8ZyBkaXNwbGF5PSJub25lIiBvdmVyZmxvdz0idmlzaWJsZSIgeT0iMCIgeD0iMCIgaGVpZ2h0PSIxMDAlIiB3aWR0aD0iMTAwJSIgaWQ9ImNhbnZhc0dyaWQiPgogICA8cmVjdCBmaWxsPSJ1cmwoI2dyaWRwYXR0ZXJuKSIgc3Ryb2tlLXdpZHRoPSIwIiB5PSIxIiB4PSIxIiBoZWlnaHQ9IjIyIiB3aWR0aD0iMjIiLz4KICA8L2c+CiA8L2c+CiA8Zz4KICA8dGl0bGU+TGF5ZXIgMTwvdGl0bGU+CiAgPGVsbGlwc2Ugcnk9IjExIiByeD0iMTEiIGlkPSJzdmdfMSIgY3k9IjEyIiBjeD0iMTIiIHN0cm9rZT0iI0ZGRiIgZmlsbD0iI0ZGRkZGRiIvPgogIDxzdHlsZSB0cmFuc2Zvcm09Im1hdHJpeCgwLjA2NTE4MjQ5NTU3MzI1MzYyLDAsMCwwLjA2NTE4MjQ5NTU3MzI1MzYyLDAsMCkgIiB0eXBlPSJ0ZXh0L2NzcyI+LnN0MHtmaWxsOiM0MzQzNDM7fTwvc3R5bGU+CiAgPGcgc3Ryb2tlPSJudWxsIiBpZD0ic3ZnXzE5Ij4KICAgPGcgc3Ryb2tlPSJudWxsIiB0cmFuc2Zvcm09Im1hdHJpeCgwLjEzMDE1NTgwODUxODA5NDg2LDAsMCwwLjEzMDE1NTgwODUxODA5NDg2LC02Ljg0OTAwNjQ1MDQwNTQ5OSwtNi44MzE1MDczOTEwMjE5MjQpICIgaWQ9InN2Z182Ij4KICAgIDxnIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z183Ij4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfOCIgZD0ibTExMC4yOTgyOTIsMTYxLjI5MzAxMWMwLDcuMSAtNS44LDEyLjkgLTEyLjksMTIuOXMtMTIuOSwtNS44IC0xMi45LC0xMi45YzAsLTcuMSA1LjgsLTEyLjkgMTIuOSwtMTIuOWwxMi45LDBsMCwxMi45eiIgY2xhc3M9InN0MCIvPgogICAgIDxwYXRoIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z185IiBkPSJtMTE2Ljc5ODI5MiwxNjEuMjkzMDExYzAsLTcuMSA1LjgsLTEyLjkgMTIuOSwtMTIuOXMxMi45LDUuOCAxMi45LDEyLjlsMCwzMi4zYzAsNy4xIC01LjgsMTIuOSAtMTIuOSwxMi45cy0xMi45LC01LjggLTEyLjksLTEyLjljMCwwIDAsLTMyLjMgMCwtMzIuM3oiIGNsYXNzPSJzdDAiLz4KICAgIDwvZz4KICAgIDxnIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z18xMCI+CiAgICAgPHBhdGggc3Ryb2tlPSJudWxsIiBpZD0ic3ZnXzExIiBkPSJtMTI5LjY5ODI5MiwxMDkuNDkzMDExYy03LjEsMCAtMTIuOSwtNS44IC0xMi45LC0xMi45czUuOCwtMTIuOSAxMi45LC0xMi45czEyLjksNS44IDEyLjksMTIuOWwwLDEyLjlsLTEyLjksMHoiIGNsYXNzPSJzdDAiLz4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTIiIGQ9Im0xMjkuNjk4MjkyLDExNS45OTMwMTFjNy4xLDAgMTIuOSw1LjggMTIuOSwxMi45cy01LjgsMTIuOSAtMTIuOSwxMi45bC0zMi4zLDBjLTcuMSwwIC0xMi45LC01LjggLTEyLjksLTEyLjlzNS44LC0xMi45IDEyLjksLTEyLjljMCwwIDMyLjMsMCAzMi4zLDB6IiBjbGFzcz0ic3QwIi8+CiAgICA8L2c+CiAgICA8ZyBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTMiPgogICAgIDxwYXRoIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z18xNCIgZD0ibTE4MS40OTgyOTIsMTI4Ljg5MzAxMWMwLC03LjEgNS44LC0xMi45IDEyLjksLTEyLjljNy4xLDAgMTIuOSw1LjggMTIuOSwxMi45cy01LjgsMTIuOSAtMTIuOSwxMi45bC0xMi45LDBsMCwtMTIuOXoiIGNsYXNzPSJzdDAiLz4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTUiIGQ9Im0xNzQuOTk4MjkyLDEyOC44OTMwMTFjMCw3LjEgLTUuOCwxMi45IC0xMi45LDEyLjljLTcuMSwwIC0xMi45LC01LjggLTEyLjksLTEyLjlsMCwtMzIuM2MwLC03LjEgNS44LC0xMi45IDEyLjksLTEyLjljNy4xLDAgMTIuOSw1LjggMTIuOSwxMi45bDAsMzIuM3oiIGNsYXNzPSJzdDAiLz4KICAgIDwvZz4KICAgIDxnIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z18xNiI+CiAgICAgPHBhdGggc3Ryb2tlPSJudWxsIiBpZD0ic3ZnXzE3IiBkPSJtMTYyLjA5ODI5MiwxODAuNjkzMDExYzcuMSwwIDEyLjksNS44IDEyLjksMTIuOWMwLDcuMSAtNS44LDEyLjkgLTEyLjksMTIuOWMtNy4xLDAgLTEyLjksLTUuOCAtMTIuOSwtMTIuOWwwLC0xMi45bDEyLjksMHoiIGNsYXNzPSJzdDAiLz4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTgiIGQ9Im0xNjIuMDk4MjkyLDE3NC4xOTMwMTFjLTcuMSwwIC0xMi45LC01LjggLTEyLjksLTEyLjljMCwtNy4xIDUuOCwtMTIuOSAxMi45LC0xMi45bDMyLjMsMGM3LjEsMCAxMi45LDUuOCAxMi45LDEyLjljMCw3LjEgLTUuOCwxMi45IC0xMi45LDEyLjlsLTMyLjMsMHoiIGNsYXNzPSJzdDAiLz4KICAgIDwvZz4KICAgPC9nPgogIDwvZz4KIDwvZz4KPC9zdmc+" alt="Slack logo"/></a></li><li><a href="https://stackoverflow.com/search?q=%23OpenJ9" rel="noopener noreferrer" target="_blank"><img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjRweCIgaGVpZ2h0PSIyNHB4IiB2aWV3Qm94PSIwIDAgNjUgNzAiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5zdGFja292ZXJmbG93LWxvZ288L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0iI0ZGRkZGRiIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0ic3RhY2tvdmVyZmxvdy1sb2dvIiBmaWxsLXJ1bGU9Im5vbnplcm8iPgogICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgZmlsbD0iI0ZGRkZGRiIgcG9pbnRzPSI1NC4yNDE3MjY2IDYzLjc3MDIyNjUgNTQuMjQxNzI2NiA0NSA2MSA0NSA2MSA3MCAwIDcwIDAgNDUgNi43NTgyNzMzOCA0NSA2Ljc1ODI3MzM4IDYzLjc3MDIyNjUiPjwvcG9seWdvbj4KICAgICAgICAgICAgPHBhdGggZD0iTTE0LjcwNzEwNTcsNDMuNjQyNzU2NyBMNDguMTE3ODUxLDUwLjA4NzIwMTEgTDQ5LjUzMjA2MjQsNDMuODg3NDgyNCBMMTYuMTIxMzE3MiwzNy40NDMwMzggTDE0LjcwNzEwNTcsNDMuNjQyNzU2NyBMMTQuNzA3MTA1Nyw0My42NDI3NTY3IFogTTE5LjEyNjUxNjUsMjguOTU5MjEyNCBMNTAuMDYyMzkxNyw0Mi4yNTU5Nzc1IEw1Mi44OTA4MTQ2LDM2LjU0NTcxMDMgTDIxLjk1NDkzOTMsMjMuMTY3MzY5OSBMMTkuMTI2NTE2NSwyOC45NTkyMTI0IFogTTI3LjcwMDE3MzMsMTQuOTI4MjcgTDUzLjk1MTQ3MzEsMzUuMDc3MzU1OCBMNTguMjgyNDk1NywzMC4yNjQ0MTYzIEwzMi4wMzExOTU4LDEwLjExNTMzMDUgTDI3LjcwMDE3MzMsMTQuOTI4MjcgTDI3LjcwMDE3MzMsMTQuOTI4MjcgWiBNNDQuNjcwNzEwNiwwIEwzOS4xOTA2NDEyLDMuNzUyNDYxMzIgTDU5LjUxOTkzMDcsMjkuMDQwNzg3NiBMNjUsMjUuMjg4MzI2MyBMNDQuNjcwNzEwNiwwIFogTTE0LDU4IEw0OC4xMTc4NTEsNTggTDQ4LjExNzg1MSw1MS43MTg3MDYgTDE0LDUxLjcxODcwNiBMMTQsNTggWiIgaWQ9IlNoYXBlIiBmaWxsPSIjRkZGRkZGIj48L3BhdGg+CiAgICAgICAgPC9nPgogICAgPC9nPgo8L3N2Zz4KCgo=" alt="Stack Overflow logo"/></a></li></ul></nav></footer></div></div><script>
   
   function gaOptout(){document.cookie=disableStr+'=true; expires=Thu, 31 Dec 2099 23:59:59 UTC;path=/',window[disableStr]=!0}var gaProperty='UA-105616558-3',disableStr='ga-disable-'+gaProperty;document.cookie.indexOf(disableStr+'=true')>-1&&(window[disableStr]=!0);
   if(true) {
@@ -17,4 +17,4 @@
       
       
       
-      }</script><script id="gatsby-script-loader">/*<![CDATA[*/window.pagePath="/about/";/*]]>*/</script><script id="gatsby-chunk-mapping">/*<![CDATA[*/window.___chunkMapping={"app":["/app-0b96427b0b370a80fa06.js"],"component---src-pages-about-js":["/component---src-pages-about-js-0c1171ebe659e1cec428.js"],"component---src-pages-index-js":["/component---src-pages-index-js-743bf9596a9631508e4e.js"],"component---src-pages-news-js":["/component---src-pages-news-js-771033deb1dca3596266.js"],"component---src-pages-performance-js":["/component---src-pages-performance-js-31be57d58d932a4860aa.js"]};/*]]>*/</script><script src="/openj9/webpack-runtime-c69760aa7e58303b27f8.js" async=""></script><script src="/openj9/styles-cc4082ebb0cb6903d934.js" async=""></script><script src="/openj9/app-0b96427b0b370a80fa06.js" async=""></script><script src="/openj9/commons-42a47b90457bdd243664.js" async=""></script><script src="/openj9/component---src-pages-about-js-0c1171ebe659e1cec428.js" async=""></script></body></html>
\ No newline at end of file
+      }</script><script id="gatsby-script-loader">/*<![CDATA[*/window.pagePath="/about/";/*]]>*/</script><script id="gatsby-chunk-mapping">/*<![CDATA[*/window.___chunkMapping={"app":["/app-2da2270a07d62743bcd4.js"],"component---src-pages-about-js":["/component---src-pages-about-js-f3472e79e3f9cd8dc280.js"],"component---src-pages-index-js":["/component---src-pages-index-js-4f88f89ee8348cf9654f.js"],"component---src-pages-news-js":["/component---src-pages-news-js-63e528f45eabc859ccac.js"],"component---src-pages-performance-js":["/component---src-pages-performance-js-985e1e9d446123113ec2.js"]};/*]]>*/</script><script src="/openj9/webpack-runtime-4324011276ab16472ff8.js" async=""></script><script src="/openj9/styles-cc4082ebb0cb6903d934.js" async=""></script><script src="/openj9/app-2da2270a07d62743bcd4.js" async=""></script><script src="/openj9/commons-b35008cb74c6abd7ace8.js" async=""></script><script src="/openj9/component---src-pages-about-js-f3472e79e3f9cd8dc280.js" async=""></script></body></html>
\ No newline at end of file
diff --git a/app-0b96427b0b370a80fa06.js b/app-2da2270a07d62743bcd4.js
similarity index 99%
rename from app-0b96427b0b370a80fa06.js
rename to app-2da2270a07d62743bcd4.js
index 5804d9b..dceeb56 100644
--- a/app-0b96427b0b370a80fa06.js
+++ b/app-2da2270a07d62743bcd4.js
@@ -1,2 +1,2 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[1],{"+ZDr":function(t,e,n){"use strict";n("2Spj"),n("0l/t"),n("8+KV"),n("pIFo");var r=n("TqRt");e.__esModule=!0,e.withPrefix=h,e.withAssetPrefix=function(t){return["/openj9"].concat([t.replace(/^\//,"")]).join("/")},e.navigateTo=e.replace=e.push=e.navigate=e.default=void 0;var o=r(n("8OQS")),i=r(n("pVnL")),a=r(n("PJYZ")),c=r(n("VbXa")),u=r(n("lSNA")),s=r(n("17x9")),l=r(n("q1tI")),f=n("YwZP"),p=n("cu4x");function h(t){return function(t){return t.replace(/\/+/g,"/")}(["/openj9",t].join("/"))}e.parsePath=p.parsePath;var d={activeClassName:s.default.string,activeStyle:s.default.object,partiallyActive:s.default.bool},v=function(t){function e(e){var n;n=t.call(this,e)||this,(0,u.default)((0,a.default)(n),"defaultGetProps",(function(t){var e=t.isPartiallyCurrent,r=t.isCurrent;return(n.props.partiallyActive?e:r)?{className:[n.props.className,n.props.activeClassName].filter(Boolean).join(" "),style:(0,i.default)({},n.props.style,{},n.props.activeStyle)}:null}));var r=!1;return"undefined"!=typeof window&&window.IntersectionObserver&&(r=!0),n.state={IOSupported:r},n.handleRef=n.handleRef.bind((0,a.default)(n)),n}(0,c.default)(e,t);var n=e.prototype;return n.componentDidUpdate=function(t,e){this.props.to===t.to||this.state.IOSupported||___loader.enqueue((0,p.parsePath)(this.props.to).pathname)},n.componentDidMount=function(){this.state.IOSupported||___loader.enqueue((0,p.parsePath)(this.props.to).pathname)},n.componentWillUnmount=function(){if(this.io){var t=this.io,e=t.instance,n=t.el;e.unobserve(n),e.disconnect()}},n.handleRef=function(t){var e,n,r,o=this;this.props.innerRef&&this.props.innerRef.hasOwnProperty("current")?this.props.innerRef.current=t:this.props.innerRef&&this.props.innerRef(t),this.state.IOSupported&&t&&(this.io=(e=t,n=function(){___loader.enqueue((0,p.parsePath)(o.props.to).pathname)},(r=new window.IntersectionObserver((function(t){t.forEach((function(t){e===t.target&&(t.isIntersecting||t.intersectionRatio>0)&&(r.unobserve(e),r.disconnect(),n())}))}))).observe(e),{instance:r,el:e}))},n.render=function(){var t=this,e=this.props,n=e.to,r=e.getProps,a=void 0===r?this.defaultGetProps:r,c=e.onClick,u=e.onMouseEnter,s=(e.activeClassName,e.activeStyle,e.innerRef,e.partiallyActive,e.state),d=e.replace,v=(0,o.default)(e,["to","getProps","onClick","onMouseEnter","activeClassName","activeStyle","innerRef","partiallyActive","state","replace"]);var g=h(n);return l.default.createElement(f.Link,(0,i.default)({to:g,state:s,getProps:a,innerRef:this.handleRef,onMouseEnter:function(t){u&&u(t),___loader.hovering((0,p.parsePath)(n).pathname)},onClick:function(e){return c&&c(e),0!==e.button||t.props.target||e.defaultPrevented||e.metaKey||e.altKey||e.ctrlKey||e.shiftKey||(e.preventDefault(),y(n,{state:s,replace:d})),!0}},v))},e}(l.default.Component);v.propTypes=(0,i.default)({},d,{onClick:s.default.func,to:s.default.string.isRequired,replace:s.default.bool});var g=function(t,e,n){return console.warn('The "'+t+'" method is now deprecated and will be removed in Gatsby v'+n+'. Please use "'+e+'" instead.')},m=l.default.forwardRef((function(t,e){return l.default.createElement(v,(0,i.default)({innerRef:e},t))}));e.default=m;var y=function(t,e){window.___navigate(h(t),e)};e.navigate=y;var b=function(t){g("push","navigate",3),window.___push(h(t))};e.push=b;e.replace=function(t){g("replace","navigate",3),window.___replace(h(t))};e.navigateTo=function(t){return g("navigateTo","navigate",3),b(t)}},"+i7v":function(t,e,n){"use strict";var r=n("TqRt");e.__esModule=!0,e.default=function(t,e){var n=(0,o.default)(t);if(void 0===e)return n?"pageXOffset"in n?n.pageXOffset:n.document.documentElement.scrollLeft:t.scrollLeft;n?n.scrollTo(e,"pageYOffset"in n?n.pageYOffset:n.document.documentElement.scrollTop):t.scrollLeft=e};var o=r(n("8Y+z"));t.exports=e.default},"+lvF":function(t,e,n){t.exports=n("VTer")("native-function-to-string",Function.toString)},"+rLv":function(t,e,n){var r=n("dyZX").document;t.exports=r&&r.documentElement},"/SS/":function(t,e,n){var r=n("XKFU");r(r.S,"Object",{setPrototypeOf:n("i5dc").set})},"/e88":function(t,e){t.exports="\t\n\v\f\r   ᠎              \u2028\u2029\ufeff"},"0/R4":function(t,e){t.exports=function(t){return"object"==typeof t?null!==t:"function"==typeof t}},"0l/t":function(t,e,n){"use strict";var r=n("XKFU"),o=n("CkkT")(2);r(r.P+r.F*!n("LyE8")([].filter,!0),"Array",{filter:function(t){return o(this,t,arguments[1])}})},"0sh+":function(t,e,n){var r=n("quPj"),o=n("vhPU");t.exports=function(t,e,n){if(r(e))throw TypeError("String#"+n+" doesn't accept regex!");return String(o(t))}},"16Al":function(t,e,n){"use strict";n("f3/d");var r=n("WbBG");function o(){}function i(){}i.resetWarningCache=o,t.exports=function(){function t(t,e,n,o,i,a){if(a!==r){var c=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");throw c.name="Invariant Violation",c}}function e(){return t}t.isRequired=t;var n={array:t,bool:t,func:t,number:t,object:t,string:t,symbol:t,any:t,arrayOf:e,element:t,elementType:t,instanceOf:e,node:t,objectOf:e,oneOf:e,oneOfType:e,shape:e,exact:e,checkPropTypes:i,resetWarningCache:o};return n.PropTypes=n,n}},"17x9":function(t,e,n){t.exports=n("16Al")()},"1MBn":function(t,e,n){var r=n("DVgA"),o=n("JiEa"),i=n("UqcF");t.exports=function(t){var e=r(t),n=o.f;if(n)for(var a,c=n(t),u=i.f,s=0;c.length>s;)u.call(t,a=c[s++])&&e.push(a);return e}},"1TsA":function(t,e){t.exports=function(t,e){return{value:e,done:!!t}}},"1fHE":function(t,e,n){"use strict";e.__esModule=!0,e.default=void 0;var r=function(){function t(){}var e=t.prototype;return e.read=function(t,e){var n=this.getStateKey(t,e);try{var r=window.sessionStorage.getItem(n);return JSON.parse(r)}catch(o){return window&&window.___GATSBY_REACT_ROUTER_SCROLL&&window.___GATSBY_REACT_ROUTER_SCROLL[n]?window.___GATSBY_REACT_ROUTER_SCROLL[n]:{}}},e.save=function(t,e,n){var r=this.getStateKey(t,e),o=JSON.stringify(n);try{window.sessionStorage.setItem(r,o)}catch(i){window&&window.___GATSBY_REACT_ROUTER_SCROLL?window.___GATSBY_REACT_ROUTER_SCROLL[r]=JSON.parse(o):(window.___GATSBY_REACT_ROUTER_SCROLL={},window.___GATSBY_REACT_ROUTER_SCROLL[r]=JSON.parse(o))}},e.getStateKey=function(t,e){var n="@@scroll|"+(t.key||t.pathname);return null==e?n:n+"|"+e},t}();e.default=r},"25dN":function(t,e,n){var r=n("XKFU");r(r.S,"Object",{is:n("g6HL")})},"2OiF":function(t,e){t.exports=function(t){if("function"!=typeof t)throw TypeError(t+" is not a function!");return t}},"2Spj":function(t,e,n){var r=n("XKFU");r(r.P,"Function",{bind:n("8MEG")})},"3Lyj":function(t,e,n){var r=n("KroJ");t.exports=function(t,e,n){for(var o in e)r(t,o,e[o],n);return t}},"444f":function(t,e,n){"use strict";var r=n("TqRt");e.__esModule=!0,e.default=void 0;var o=r(n("PJYZ")),i=r(n("VbXa")),a=r(n("lSNA")),c=r(n("q1tI")),u=r(n("LHMV")),s=r(n("17x9")),l=n("9Xx/"),f=r(n("1fHE")),p={shouldUpdateScroll:s.default.func,children:s.default.element.isRequired,location:s.default.object.isRequired},h={scrollBehavior:s.default.object.isRequired},d=function(t){function e(e,n){var r;return r=t.call(this,e,n)||this,(0,a.default)((0,o.default)(r),"shouldUpdateScroll",(function(t,e){var n=r.props.shouldUpdateScroll;return!n||n.call(r.scrollBehavior,t,e)})),(0,a.default)((0,o.default)(r),"registerElement",(function(t,e,n){r.scrollBehavior.registerElement(t,e,n,r.getRouterProps())})),(0,a.default)((0,o.default)(r),"unregisterElement",(function(t){r.scrollBehavior.unregisterElement(t)})),r.scrollBehavior=new u.default({addTransitionHook:l.globalHistory.listen,stateStorage:new f.default,getCurrentLocation:function(){return r.props.location},shouldUpdateScroll:r.shouldUpdateScroll}),r}(0,i.default)(e,t);var n=e.prototype;return n.getChildContext=function(){return{scrollBehavior:this}},n.componentDidUpdate=function(t){var e=this.props.location;if(e!==t.location){var n={location:t.location};window.__navigatingToLink?e.action="PUSH":e.action="POP",this.scrollBehavior.updateScroll(n,{history:l.globalHistory,location:e})}},n.componentWillUnmount=function(){this.scrollBehavior.stop()},n.getRouterProps=function(){return{location:this.props.location,history:l.globalHistory}},n.render=function(){return c.default.Children.only(this.props.children)},e}(c.default.Component);d.propTypes=p,d.childContextTypes=h;var v=d;e.default=v},"4LiD":function(t,e,n){"use strict";var r=n("dyZX"),o=n("XKFU"),i=n("KroJ"),a=n("3Lyj"),c=n("Z6vF"),u=n("SlkY"),s=n("9gX7"),l=n("0/R4"),f=n("eeVq"),p=n("XMVh"),h=n("fyDq"),d=n("Xbzi");t.exports=function(t,e,n,v,g,m){var y=r[t],b=y,w=g?"set":"add",_=b&&b.prototype,x={},S=function(t){var e=_[t];i(_,t,"delete"==t?function(t){return!(m&&!l(t))&&e.call(this,0===t?0:t)}:"has"==t?function(t){return!(m&&!l(t))&&e.call(this,0===t?0:t)}:"get"==t?function(t){return m&&!l(t)?void 0:e.call(this,0===t?0:t)}:"add"==t?function(t){return e.call(this,0===t?0:t),this}:function(t,n){return e.call(this,0===t?0:t,n),this})};if("function"==typeof b&&(m||_.forEach&&!f((function(){(new b).entries().next()})))){var O=new b,P=O[w](m?{}:-0,1)!=O,k=f((function(){O.has(1)})),E=p((function(t){new b(t)})),j=!m&&f((function(){for(var t=new b,e=5;e--;)t[w](e,e);return!t.has(-0)}));E||((b=e((function(e,n){s(e,b,t);var r=d(new y,e,b);return null!=n&&u(n,g,r[w],r),r}))).prototype=_,_.constructor=b),(k||j)&&(S("delete"),S("has"),g&&S("get")),(j||P)&&S(w),m&&_.clear&&delete _.clear}else b=v.getConstructor(e,t,g,w),a(b.prototype,n),c.NEED=!0;return h(b,t),x[t]=b,o(o.G+o.W+o.F*(b!=y),x),m||v.setStrong(b,t,g),b}},"4R4u":function(t,e){t.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},"4qRI":function(t,e,n){"use strict";e.a=function(t){var e={};return function(n){return void 0===e[n]&&(e[n]=t(n)),e[n]}}},"5yr3":function(t,e,n){"use strict";n("bWfx"),n("V+eJ"),n("hHhE");var r=function(t){return t=t||Object.create(null),{on:function(e,n){(t[e]||(t[e]=[])).push(n)},off:function(e,n){t[e]&&t[e].splice(t[e].indexOf(n)>>>0,1)},emit:function(e,n){(t[e]||[]).slice().map((function(t){t(n)})),(t["*"]||[]).slice().map((function(t){t(e,n)}))}}}();e.a=r},"69bn":function(t,e,n){var r=n("y3w9"),o=n("2OiF"),i=n("K0xU")("species");t.exports=function(t,e){var n,a=r(t).constructor;return void 0===a||null==(n=r(a)[i])?e:o(n)}},"6DQo":function(t,e,n){"use strict";n("pIFo");t.exports=function(){}},"6FMO":function(t,e,n){var r=n("0/R4"),o=n("EWmC"),i=n("K0xU")("species");t.exports=function(t){var e;return o(t)&&("function"!=typeof(e=t.constructor)||e!==Array&&!o(e.prototype)||(e=void 0),r(e)&&null===(e=e[i])&&(e=void 0)),void 0===e?Array:e}},"7hJ6":function(t,e,n){"use strict";var r=n("TqRt"),o=r(n("444f")),i=r(n("IVHb"));e.ScrollContainer=i.default,e.ScrollContext=o.default},"8+KV":function(t,e,n){"use strict";var r=n("XKFU"),o=n("CkkT")(0),i=n("LyE8")([].forEach,!0);r(r.P+r.F*!i,"Array",{forEach:function(t){return o(this,t,arguments[1])}})},"8MEG":function(t,e,n){"use strict";var r=n("2OiF"),o=n("0/R4"),i=n("MfQN"),a=[].slice,c={},u=function(t,e,n){if(!(e in c)){for(var r=[],o=0;o<e;o++)r[o]="a["+o+"]";c[e]=Function("F,a","return new F("+r.join(",")+")")}return c[e](t,n)};t.exports=Function.bind||function(t){var e=r(this),n=a.call(arguments,1),c=function(){var r=n.concat(a.call(arguments));return this instanceof c?u(e,r.length,r):i(e,r,t)};return o(e.prototype)&&(c.prototype=e.prototype),c}},"8OQS":function(t,e){t.exports=function(t,e){if(null==t)return{};var n,r,o={},i=Object.keys(t);for(r=0;r<i.length;r++)n=i[r],e.indexOf(n)>=0||(o[n]=t[n]);return o}},"8Y+z":function(t,e,n){"use strict";e.__esModule=!0,e.default=function(t){return t===t.window?t:9===t.nodeType&&(t.defaultView||t.parentWindow)},t.exports=e.default},"8a7r":function(t,e,n){"use strict";var r=n("hswa"),o=n("RjD/");t.exports=function(t,e,n){e in t?r.f(t,e,o(0,n)):t[e]=n}},"91GP":function(t,e,n){var r=n("XKFU");r(r.S+r.F,"Object",{assign:n("czNK")})},"94VI":function(t,e){e.polyfill=function(t){return t}},"9AAn":function(t,e,n){"use strict";var r=n("wmvG"),o=n("s5qY");t.exports=n("4LiD")("Map",(function(t){return function(){return t(this,arguments.length>0?arguments[0]:void 0)}}),{get:function(t){var e=r.getEntry(o(this,"Map"),t);return e&&e.v},set:function(t,e){return r.def(o(this,"Map"),0===t?0:t,e)}},r,!0)},"9VmF":function(t,e,n){"use strict";var r=n("XKFU"),o=n("ne8i"),i=n("0sh+"),a="".startsWith;r(r.P+r.F*n("UUeW")("startsWith"),"String",{startsWith:function(t){var e=i(this,t,"startsWith"),n=o(Math.min(arguments.length>1?arguments[1]:void 0,e.length)),r=String(t);return a?a.call(e,r,n):e.slice(n,n+r.length)===r}})},"9Xx/":function(t,e,n){"use strict";n.r(e),n.d(e,"globalHistory",(function(){return u})),n.d(e,"navigate",(function(){return s})),n.d(e,"createHistory",(function(){return i})),n.d(e,"createMemorySource",(function(){return a}));n("KKXr"),n("8+KV"),n("VRzm"),n("Btvt"),n("eM6i"),n("pIFo"),n("0l/t"),n("91GP");var r=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(t[r]=n[r])}return t},o=function(t){return r({},t.location,{state:t.history.state,key:t.history.state&&t.history.state.key||"initial"})},i=function(t,e){var n=[],i=o(t),a=!1,c=function(){};return{get location(){return i},get transitioning(){return a},_onTransitionComplete:function(){a=!1,c()},listen:function(e){n.push(e);var r=function(){i=o(t),e({location:i,action:"POP"})};return t.addEventListener("popstate",r),function(){t.removeEventListener("popstate",r),n=n.filter((function(t){return t!==e}))}},navigate:function(e){var u=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},s=u.state,l=u.replace,f=void 0!==l&&l;s=r({},s,{key:Date.now()+""});try{a||f?t.history.replaceState(s,null,e):t.history.pushState(s,null,e)}catch(h){t.location[f?"replace":"assign"](e)}i=o(t),a=!0;var p=new Promise((function(t){return c=t}));return n.forEach((function(t){return t({location:i,action:"PUSH"})})),p}}},a=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"/",e=0,n=[{pathname:t,search:""}],r=[];return{get location(){return n[e]},addEventListener:function(t,e){},removeEventListener:function(t,e){},history:{get entries(){return n},get index(){return e},get state(){return r[e]},pushState:function(t,o,i){var a=i.split("?"),c=a[0],u=a[1],s=void 0===u?"":u;e++,n.push({pathname:c,search:s}),r.push(t)},replaceState:function(t,o,i){var a=i.split("?"),c=a[0],u=a[1],s=void 0===u?"":u;n[e]={pathname:c,search:s},r[e]=t}}}},c=!("undefined"==typeof window||!window.document||!window.document.createElement),u=i(c?window:a()),s=u.navigate},"9gX7":function(t,e){t.exports=function(t,e,n,r){if(!(t instanceof e)||void 0!==r&&r in t)throw TypeError(n+": incorrect invocation!");return t}},"9hXx":function(t,e,n){"use strict";n("9VmF"),n("dRSK"),e.__esModule=!0,e.default=void 0;e.default=function(t,e){if(!Array.isArray(e))return"manifest.webmanifest";var n=e.find((function(e){return t.startsWith(e.start_url)}));return n?"manifest_"+n.lang+".webmanifest":"manifest.webmanifest"}},A5AN:function(t,e,n){"use strict";var r=n("AvRE")(!0);t.exports=function(t,e,n){return e+(n?r(t,e).length:1)}},Afnz:function(t,e,n){"use strict";var r=n("LQAc"),o=n("XKFU"),i=n("KroJ"),a=n("Mukb"),c=n("hPIQ"),u=n("QaDb"),s=n("fyDq"),l=n("OP3Y"),f=n("K0xU")("iterator"),p=!([].keys&&"next"in[].keys()),h=function(){return this};t.exports=function(t,e,n,d,v,g,m){u(n,e,d);var y,b,w,_=function(t){if(!p&&t in P)return P[t];switch(t){case"keys":case"values":return function(){return new n(this,t)}}return function(){return new n(this,t)}},x=e+" Iterator",S="values"==v,O=!1,P=t.prototype,k=P[f]||P["@@iterator"]||v&&P[v],E=k||_(v),j=v?S?_("entries"):E:void 0,R="Array"==e&&P.entries||k;if(R&&(w=l(R.call(new t)))!==Object.prototype&&w.next&&(s(w,x,!0),r||"function"==typeof w[f]||a(w,f,h)),S&&k&&"values"!==k.name&&(O=!0,E=function(){return k.call(this)}),r&&!m||!p&&!O&&P[f]||a(P,f,E),c[e]=E,c[x]=h,v)if(y={values:S?E:_("values"),keys:g?E:_("keys"),entries:j},m)for(b in y)b in P||i(P,b,y[b]);else o(o.P+o.F*(p||O),e,y);return y}},AvRE:function(t,e,n){var r=n("RYi7"),o=n("vhPU");t.exports=function(t){return function(e,n){var i,a,c=String(o(e)),u=r(n),s=c.length;return u<0||u>=s?t?"":void 0:(i=c.charCodeAt(u))<55296||i>56319||u+1===s||(a=c.charCodeAt(u+1))<56320||a>57343?t?c.charAt(u):i:t?c.slice(u,u+2):a-56320+(i-55296<<10)+65536}}},Bp9Y:function(t,e,n){"use strict";e.__esModule=!0,e.default=void 0;var r=!("undefined"==typeof window||!window.document||!window.document.createElement);e.default=r,t.exports=e.default},Btvt:function(t,e,n){"use strict";var r=n("I8a+"),o={};o[n("K0xU")("toStringTag")]="z",o+""!="[object z]"&&n("KroJ")(Object.prototype,"toString",(function(){return"[object "+r(this)+"]"}),!0)},"C/va":function(t,e,n){"use strict";var r=n("y3w9");t.exports=function(){var t=r(this),e="";return t.global&&(e+="g"),t.ignoreCase&&(e+="i"),t.multiline&&(e+="m"),t.unicode&&(e+="u"),t.sticky&&(e+="y"),e}},CkkT:function(t,e,n){var r=n("m0Pp"),o=n("Ymqv"),i=n("S/j/"),a=n("ne8i"),c=n("zRwo");t.exports=function(t,e){var n=1==t,u=2==t,s=3==t,l=4==t,f=6==t,p=5==t||f,h=e||c;return function(e,c,d){for(var v,g,m=i(e),y=o(m),b=r(c,d,3),w=a(y.length),_=0,x=n?h(e,w):u?h(e,0):void 0;w>_;_++)if((p||_ in y)&&(g=b(v=y[_],_,m),t))if(n)x[_]=g;else if(g)switch(t){case 3:return!0;case 5:return v;case 6:return _;case 2:x.push(v)}else if(l)return!1;return f?-1:s||l?l:x}}},DNiP:function(t,e,n){"use strict";var r=n("XKFU"),o=n("eyMr");r(r.P+r.F*!n("LyE8")([].reduce,!0),"Array",{reduce:function(t){return o(this,t,arguments.length,arguments[1],!1)}})},DVgA:function(t,e,n){var r=n("zhAb"),o=n("4R4u");t.exports=Object.keys||function(t){return r(t,o)}},EK0E:function(t,e,n){"use strict";var r,o=n("dyZX"),i=n("CkkT")(0),a=n("KroJ"),c=n("Z6vF"),u=n("czNK"),s=n("ZD67"),l=n("0/R4"),f=n("s5qY"),p=n("s5qY"),h=!o.ActiveXObject&&"ActiveXObject"in o,d=c.getWeak,v=Object.isExtensible,g=s.ufstore,m=function(t){return function(){return t(this,arguments.length>0?arguments[0]:void 0)}},y={get:function(t){if(l(t)){var e=d(t);return!0===e?g(f(this,"WeakMap")).get(t):e?e[this._i]:void 0}},set:function(t,e){return s.def(f(this,"WeakMap"),t,e)}},b=t.exports=n("4LiD")("WeakMap",m,y,s,!0,!0);p&&h&&(u((r=s.getConstructor(m,"WeakMap")).prototype,y),c.NEED=!0,i(["delete","has","get","set"],(function(t){var e=b.prototype,n=e[t];a(e,t,(function(e,o){if(l(e)&&!v(e)){this._f||(this._f=new r);var i=this._f[t](e,o);return"set"==t?this:i}return n.call(this,e,o)}))})))},EWmC:function(t,e,n){var r=n("LZWt");t.exports=Array.isArray||function(t){return"Array"==r(t)}},EemH:function(t,e,n){var r=n("UqcF"),o=n("RjD/"),i=n("aCFj"),a=n("apmT"),c=n("aagx"),u=n("xpql"),s=Object.getOwnPropertyDescriptor;e.f=n("nh4g")?s:function(t,e){if(t=i(t),e=a(e,!0),u)try{return s(t,e)}catch(n){}if(c(t,e))return o(!r.f.call(t,e),t[e])}},FJW5:function(t,e,n){var r=n("hswa"),o=n("y3w9"),i=n("DVgA");t.exports=n("nh4g")?Object.defineProperties:function(t,e){o(t);for(var n,a=i(e),c=a.length,u=0;c>u;)r.f(t,n=a[u++],e[n]);return t}},GZEu:function(t,e,n){var r,o,i,a=n("m0Pp"),c=n("MfQN"),u=n("+rLv"),s=n("Iw71"),l=n("dyZX"),f=l.process,p=l.setImmediate,h=l.clearImmediate,d=l.MessageChannel,v=l.Dispatch,g=0,m={},y=function(){var t=+this;if(m.hasOwnProperty(t)){var e=m[t];delete m[t],e()}},b=function(t){y.call(t.data)};p&&h||(p=function(t){for(var e=[],n=1;arguments.length>n;)e.push(arguments[n++]);return m[++g]=function(){c("function"==typeof t?t:Function(t),e)},r(g),g},h=function(t){delete m[t]},"process"==n("LZWt")(f)?r=function(t){f.nextTick(a(y,t,1))}:v&&v.now?r=function(t){v.now(a(y,t,1))}:d?(i=(o=new d).port2,o.port1.onmessage=b,r=a(i.postMessage,i,1)):l.addEventListener&&"function"==typeof postMessage&&!l.importScripts?(r=function(t){l.postMessage(t+"","*")},l.addEventListener("message",b,!1)):r="onreadystatechange"in s("script")?function(t){u.appendChild(s("script")).onreadystatechange=function(){u.removeChild(this),y.call(t)}}:function(t){setTimeout(a(y,t,1),0)}),t.exports={set:p,clear:h}},GddB:function(t,e,n){"use strict";n.r(e);n("FfUf")},H6hf:function(t,e,n){var r=n("y3w9");t.exports=function(t,e,n,o){try{return o?e(r(n)[0],n[1]):e(n)}catch(a){var i=t.return;throw void 0!==i&&r(i.call(t)),a}}},"HAE/":function(t,e,n){var r=n("XKFU");r(r.S+r.F*!n("nh4g"),"Object",{defineProperty:n("hswa").f})},HEwt:function(t,e,n){"use strict";var r=n("m0Pp"),o=n("XKFU"),i=n("S/j/"),a=n("H6hf"),c=n("M6Qj"),u=n("ne8i"),s=n("8a7r"),l=n("J+6e");o(o.S+o.F*!n("XMVh")((function(t){Array.from(t)})),"Array",{from:function(t){var e,n,o,f,p=i(t),h="function"==typeof this?this:Array,d=arguments.length,v=d>1?arguments[1]:void 0,g=void 0!==v,m=0,y=l(p);if(g&&(v=r(v,d>2?arguments[2]:void 0,2)),null==y||h==Array&&c(y))for(n=new h(e=u(p.length));e>m;m++)s(n,m,g?v(p[m],m):p[m]);else for(f=y.call(p),n=new h;!(o=f.next()).done;m++)s(n,m,g?a(f,v,[o.value,m],!0):o.value);return n.length=m,n}})},"I8a+":function(t,e,n){var r=n("LZWt"),o=n("K0xU")("toStringTag"),i="Arguments"==r(function(){return arguments}());t.exports=function(t){var e,n,a;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(n=function(t,e){try{return t[e]}catch(n){}}(e=Object(t),o))?n:i?r(e):"Object"==(a=r(e))&&"function"==typeof e.callee?"Arguments":a}},IOVJ:function(t,e,n){"use strict";n("91GP");var r=n("q1tI"),o=n.n(r),i=n("emEt"),a=n("xtsi");var c=function(t){var e,n;function o(){return t.apply(this,arguments)||this}return n=t,(e=o).prototype=Object.create(n.prototype),e.prototype.constructor=e,e.__proto__=n,o.prototype.render=function(){var t=Object.assign({},this.props,{pathContext:this.props.pageContext}),e=Object(a.apiRunner)("replaceComponentRenderer",{props:this.props,loader:i.publicLoader})[0]||Object(r.createElement)(this.props.pageResources.component,Object.assign({},t,{key:this.props.path||this.props.pageResources.page.path}));return Object(a.apiRunner)("wrapPageElement",{element:e,props:t},e,(function(e){return{element:e.result,props:t}})).pop()},o}(o.a.Component);e.a=c},"IU+Z":function(t,e,n){"use strict";n("sMXx");var r=n("KroJ"),o=n("Mukb"),i=n("eeVq"),a=n("vhPU"),c=n("K0xU"),u=n("Ugos"),s=c("species"),l=!i((function(){var t=/./;return t.exec=function(){var t=[];return t.groups={a:"7"},t},"7"!=="".replace(t,"$<a>")})),f=function(){var t=/(?:)/,e=t.exec;t.exec=function(){return e.apply(this,arguments)};var n="ab".split(t);return 2===n.length&&"a"===n[0]&&"b"===n[1]}();t.exports=function(t,e,n){var p=c(t),h=!i((function(){var e={};return e[p]=function(){return 7},7!=""[t](e)})),d=h?!i((function(){var e=!1,n=/a/;return n.exec=function(){return e=!0,null},"split"===t&&(n.constructor={},n.constructor[s]=function(){return n}),n[p](""),!e})):void 0;if(!h||!d||"replace"===t&&!l||"split"===t&&!f){var v=/./[p],g=n(a,p,""[t],(function(t,e,n,r,o){return e.exec===u?h&&!o?{done:!0,value:v.call(e,n,r)}:{done:!0,value:t.call(n,e,r)}:{done:!1}})),m=g[0],y=g[1];r(String.prototype,t,m),o(RegExp.prototype,p,2==e?function(t,e){return y.call(t,this,e)}:function(t){return y.call(t,this)})}}},IVHb:function(t,e,n){"use strict";var r=n("TqRt");e.__esModule=!0,e.default=void 0;var o=r(n("PJYZ")),i=r(n("VbXa")),a=r(n("lSNA")),c=r(n("q1tI")),u=r(n("i8i4")),s=r(n("6DQo")),l=r(n("17x9")),f={scrollKey:l.default.string.isRequired,shouldUpdateScroll:l.default.func,children:l.default.element.isRequired},p={scrollBehavior:l.default.object},h=function(t){function e(e,n){var r;return r=t.call(this,e,n)||this,(0,a.default)((0,o.default)(r),"shouldUpdateScroll",(function(t,e){var n=r.props.shouldUpdateScroll;return!n||n.call(r.context.scrollBehavior.scrollBehavior,t,e)})),r.scrollKey=e.scrollKey,r}(0,i.default)(e,t);var n=e.prototype;return n.componentDidMount=function(){this.context.scrollBehavior.registerElement(this.props.scrollKey,u.default.findDOMNode(this),this.shouldUpdateScroll)},n.componentDidUpdate=function(t){(0,s.default)(t.scrollKey===this.props.scrollKey,"<ScrollContainer> does not support changing scrollKey.")},n.componentWillUnmount=function(){this.context.scrollBehavior.unregisterElement(this.scrollKey)},n.render=function(){return this.props.children},e}(c.default.Component);h.propTypes=f,h.contextTypes=p;var d=h;e.default=d},Iw71:function(t,e,n){var r=n("0/R4"),o=n("dyZX").document,i=r(o)&&r(o.createElement);t.exports=function(t){return i?o.createElement(t):{}}},"J+6e":function(t,e,n){var r=n("I8a+"),o=n("K0xU")("iterator"),i=n("hPIQ");t.exports=n("g3g5").getIteratorMethod=function(t){if(null!=t)return t[o]||t["@@iterator"]||i[r(t)]}},JiEa:function(t,e){e.f=Object.getOwnPropertySymbols},K0xU:function(t,e,n){var r=n("VTer")("wks"),o=n("ylqs"),i=n("dyZX").Symbol,a="function"==typeof i;(t.exports=function(t){return r[t]||(r[t]=a&&i[t]||(a?i:o)("Symbol."+t))}).store=r},KKXr:function(t,e,n){"use strict";var r=n("quPj"),o=n("y3w9"),i=n("69bn"),a=n("A5AN"),c=n("ne8i"),u=n("Xxuz"),s=n("Ugos"),l=n("eeVq"),f=Math.min,p=[].push,h=!l((function(){RegExp(4294967295,"y")}));n("IU+Z")("split",2,(function(t,e,n,l){var d;return d="c"=="abbc".split(/(b)*/)[1]||4!="test".split(/(?:)/,-1).length||2!="ab".split(/(?:ab)*/).length||4!=".".split(/(.?)(.?)/).length||".".split(/()()/).length>1||"".split(/.?/).length?function(t,e){var o=String(this);if(void 0===t&&0===e)return[];if(!r(t))return n.call(o,t,e);for(var i,a,c,u=[],l=(t.ignoreCase?"i":"")+(t.multiline?"m":"")+(t.unicode?"u":"")+(t.sticky?"y":""),f=0,h=void 0===e?4294967295:e>>>0,d=new RegExp(t.source,l+"g");(i=s.call(d,o))&&!((a=d.lastIndex)>f&&(u.push(o.slice(f,i.index)),i.length>1&&i.index<o.length&&p.apply(u,i.slice(1)),c=i[0].length,f=a,u.length>=h));)d.lastIndex===i.index&&d.lastIndex++;return f===o.length?!c&&d.test("")||u.push(""):u.push(o.slice(f)),u.length>h?u.slice(0,h):u}:"0".split(void 0,0).length?function(t,e){return void 0===t&&0===e?[]:n.call(this,t,e)}:n,[function(n,r){var o=t(this),i=null==n?void 0:n[e];return void 0!==i?i.call(n,o,r):d.call(String(o),n,r)},function(t,e){var r=l(d,t,this,e,d!==n);if(r.done)return r.value;var s=o(t),p=String(this),v=i(s,RegExp),g=s.unicode,m=(s.ignoreCase?"i":"")+(s.multiline?"m":"")+(s.unicode?"u":"")+(h?"y":"g"),y=new v(h?s:"^(?:"+s.source+")",m),b=void 0===e?4294967295:e>>>0;if(0===b)return[];if(0===p.length)return null===u(y,p)?[p]:[];for(var w=0,_=0,x=[];_<p.length;){y.lastIndex=h?_:0;var S,O=u(y,h?p:p.slice(_));if(null===O||(S=f(c(y.lastIndex+(h?0:_)),p.length))===w)_=a(p,_,g);else{if(x.push(p.slice(w,_)),x.length===b)return x;for(var P=1;P<=O.length-1;P++)if(x.push(O[P]),x.length===b)return x;_=w=S}}return x.push(p.slice(w)),x}]}))},KroJ:function(t,e,n){var r=n("dyZX"),o=n("Mukb"),i=n("aagx"),a=n("ylqs")("src"),c=n("+lvF"),u=(""+c).split("toString");n("g3g5").inspectSource=function(t){return c.call(t)},(t.exports=function(t,e,n,c){var s="function"==typeof n;s&&(i(n,"name")||o(n,"name",e)),t[e]!==n&&(s&&(i(n,a)||o(n,a,t[e]?""+t[e]:u.join(String(e)))),t===r?t[e]=n:c?t[e]?t[e]=n:o(t,e,n):(delete t[e],o(t,e,n)))})(Function.prototype,"toString",(function(){return"function"==typeof this&&this[a]||c.call(this)}))},Kuth:function(t,e,n){var r=n("y3w9"),o=n("FJW5"),i=n("4R4u"),a=n("YTvA")("IE_PROTO"),c=function(){},u=function(){var t,e=n("Iw71")("iframe"),r=i.length;for(e.style.display="none",n("+rLv").appendChild(e),e.src="javascript:",(t=e.contentWindow.document).open(),t.write("<script>document.F=Object<\/script>"),t.close(),u=t.F;r--;)delete u.prototype[i[r]];return u()};t.exports=Object.create||function(t,e){var n;return null!==t?(c.prototype=r(t),n=new c,c.prototype=null,n[a]=t):n=u(),void 0===e?n:o(n,e)}},L9s1:function(t,e,n){"use strict";var r=n("XKFU"),o=n("0sh+");r(r.P+r.F*n("UUeW")("includes"),"String",{includes:function(t){return!!~o(this,t,"includes").indexOf(t,arguments.length>1?arguments[1]:void 0)}})},LHMV:function(t,e,n){"use strict";n("LK8F"),n("rGqo"),n("yt8O"),n("RW0V"),n("8+KV"),n("VRzm"),n("Btvt"),e.__esModule=!0,e.default=void 0;var r=s(n("c0Fl")),o=s(n("raBC")),i=s(n("+i7v")),a=s(n("ZfQF")),c=s(n("q5+k")),u=(s(n("QLaP")),n("OysZ"));function s(t){return t&&t.__esModule?t:{default:t}}var l=function(){function t(t){var e=this,n=t.addTransitionHook,r=t.stateStorage,s=t.getCurrentLocation,l=t.shouldUpdateScroll;if(this._restoreScrollRestoration=function(){if(e._oldScrollRestoration)try{window.history.scrollRestoration=e._oldScrollRestoration}catch(t){}},this._onWindowScroll=function(){if(!e._ignoreScrollEvents&&(e._saveWindowPositionHandle||(e._saveWindowPositionHandle=(0,c.default)(e._saveWindowPosition)),e._windowScrollTarget)){var t=e._windowScrollTarget,n=t[0],r=t[1],o=(0,i.default)(window),u=(0,a.default)(window);o===n&&u===r&&(e._windowScrollTarget=null,e._cancelCheckWindowScroll())}},this._saveWindowPosition=function(){e._saveWindowPositionHandle=null,e._savePosition(null,window)},this._checkWindowScrollPosition=function(){return e._checkWindowScrollHandle=null,e._windowScrollTarget?(e.scrollToTarget(window,e._windowScrollTarget),++e._numWindowScrollAttempts,e._numWindowScrollAttempts>=2?(e._windowScrollTarget=null,Promise.resolve()):new Promise((function(t){e._checkWindowScrollHandle=(0,c.default)((function(){return t(e._checkWindowScrollPosition())}))}))):Promise.resolve()},this._stateStorage=r,this._getCurrentLocation=s,this._shouldUpdateScroll=l,"scrollRestoration"in window.history&&!(0,u.isMobileSafari)()){this._oldScrollRestoration=window.history.scrollRestoration;try{window.history.scrollRestoration="manual",(0,o.default)(window,"beforeunload",this._restoreScrollRestoration)}catch(f){this._oldScrollRestoration=null}}else this._oldScrollRestoration=null;this._saveWindowPositionHandle=null,this._checkWindowScrollHandle=null,this._windowScrollTarget=null,this._numWindowScrollAttempts=0,this._ignoreScrollEvents=!1,this._scrollElements={},(0,o.default)(window,"scroll",this._onWindowScroll),this._removeTransitionHook=n((function(){c.default.cancel(e._saveWindowPositionHandle),e._saveWindowPositionHandle=null,Object.keys(e._scrollElements).forEach((function(t){var n=e._scrollElements[t];c.default.cancel(n.savePositionHandle),n.savePositionHandle=null,e._ignoreScrollEvents||e._saveElementPosition(t)}))}))}var e=t.prototype;return e.registerElement=function(t,e,n,r){var i=this;this._scrollElements[t]&&invariant(!1);var a=function(){i._saveElementPosition(t)},u={element:e,shouldUpdateScroll:n,savePositionHandle:null,onScroll:function(){u.savePositionHandle||i._ignoreScrollEvents||(u.savePositionHandle=(0,c.default)(a))}};u.savePositionHandle||this._ignoreScrollEvents||(u.savePositionHandle=(0,c.default)(a)),this._scrollElements[t]=u,(0,o.default)(e,"scroll",u.onScroll),this._updateElementScroll(t,null,r)},e.unregisterElement=function(t){this._scrollElements[t]||invariant(!1);var e=this._scrollElements[t],n=e.element,o=e.onScroll,i=e.savePositionHandle;(0,r.default)(n,"scroll",o),c.default.cancel(i),delete this._scrollElements[t]},e.updateScroll=function(t,e){var n=this;this._updateWindowScroll(t,e).then((function(){n._saveWindowPositionHandle||(n._saveWindowPositionHandle=(0,c.default)(n._saveWindowPosition))})),Object.keys(this._scrollElements).forEach((function(r){n._updateElementScroll(r,t,e)}))},e.stop=function(){this._restoreScrollRestoration(),(0,r.default)(window,"scroll",this._onWindowScroll),this._cancelCheckWindowScroll(),this._removeTransitionHook()},e.startIgnoringScrollEvents=function(){this._ignoreScrollEvents=!0},e.stopIgnoringScrollEvents=function(){this._ignoreScrollEvents=!1},e._cancelCheckWindowScroll=function(){c.default.cancel(this._checkWindowScrollHandle),this._checkWindowScrollHandle=null},e._saveElementPosition=function(t){var e=this._scrollElements[t];e.savePositionHandle=null,this._savePosition(t,e.element)},e._savePosition=function(t,e){this._stateStorage.save(this._getCurrentLocation(),t,[(0,i.default)(e),(0,a.default)(e)])},e._updateWindowScroll=function(t,e){return this._cancelCheckWindowScroll(),this._windowScrollTarget=this._getScrollTarget(null,this._shouldUpdateScroll,t,e),this._numWindowScrollAttempts=0,this._checkWindowScrollPosition()},e._updateElementScroll=function(t,e,n){var r=this._scrollElements[t],o=r.element,i=r.shouldUpdateScroll,a=this._getScrollTarget(t,i,e,n);a&&this.scrollToTarget(o,a)},e._getDefaultScrollTarget=function(t){var e=t.hash;return e&&"#"!==e?"#"===e.charAt(0)?e.slice(1):e:[0,0]},e._getScrollTarget=function(t,e,n,r){var o=!e||e.call(this,n,r);if(!o||Array.isArray(o)||"string"==typeof o)return o;var i=this._getCurrentLocation();return this._getSavedScrollTarget(t,i)||this._getDefaultScrollTarget(i)},e._getSavedScrollTarget=function(t,e){return"PUSH"===e.action?null:this._stateStorage.read(e,t)},e.scrollToTarget=function(t,e){if("string"==typeof e){var n=document.getElementById(e)||document.getElementsByName(e)[0];if(n)return void n.scrollIntoView();e=[0,0]}var r=e,o=r[0],c=r[1];(0,i.default)(t,o),(0,a.default)(t,c)},t}();e.default=l,t.exports=e.default},LK8F:function(t,e,n){var r=n("XKFU");r(r.S,"Array",{isArray:n("EWmC")})},LQAc:function(t,e){t.exports=!1},LYrO:function(t,e,n){"use strict";n.d(e,"e",(function(){return i})),n.d(e,"c",(function(){return a})),n.d(e,"b",(function(){return c})),n.d(e,"d",(function(){return u})),n.d(e,"a",(function(){return s})),n.d(e,"f",(function(){return l}));n("pIFo"),n("DNiP"),n("0l/t"),n("Vd3H"),n("V+eJ"),n("bWfx"),n("KKXr");var r=n("QLaP"),o=n.n(r),i=function(t,e){return t.substr(0,e.length)===e},a=function(t,e){for(var n=void 0,r=void 0,i=e.split("?")[0],a=v(i),c=""===a[0],u=d(t),s=0,l=u.length;s<l;s++){var p=!1,h=u[s].route;if(h.default)r={route:h,params:{},uri:e};else{for(var g=v(h.path),y={},b=Math.max(a.length,g.length),w=0;w<b;w++){var _=g[w],x=a[w];if("*"===_){y["*"]=a.slice(w).map(decodeURIComponent).join("/");break}if(void 0===x){p=!0;break}var S=f.exec(_);if(S&&!c){-1===m.indexOf(S[1])||o()(!1);var O=decodeURIComponent(x);y[S[1]]=O}else if(_!==x){p=!0;break}}if(!p){n={route:h,params:y,uri:"/"+a.slice(0,w).join("/")};break}}}return n||r||null},c=function(t,e){return a([{path:t}],e)},u=function(t,e){if(i(t,"/"))return t;var n=t.split("?"),r=n[0],o=n[1],a=e.split("?")[0],c=v(r),u=v(a);if(""===c[0])return g(a,o);if(!i(c[0],".")){var s=u.concat(c).join("/");return g(("/"===a?"":"/")+s,o)}for(var l=u.concat(c),f=[],p=0,h=l.length;p<h;p++){var d=l[p];".."===d?f.pop():"."!==d&&f.push(d)}return g("/"+f.join("/"),o)},s=function(t,e){return"/"+v(t).map((function(t){var n=f.exec(t);return n?e[n[1]]:t})).join("/")},l=function(t,e){var n=function(t){return p(t)};return v(t).filter(n).sort().join("/")===v(e).filter(n).sort().join("/")},f=/^:(.+)/,p=function(t){return f.test(t)},h=function(t,e){return{route:t,score:t.default?0:v(t.path).reduce((function(t,e){return t+=4,!function(t){return""===t}(e)?p(e)?t+=2:!function(t){return"*"===t}(e)?t+=3:t-=5:t+=1,t}),0),index:e}},d=function(t){return t.map(h).sort((function(t,e){return t.score<e.score?1:t.score>e.score?-1:t.index-e.index}))},v=function(t){return t.replace(/(^\/+|\/+$)/g,"").split("/")},g=function(t,e){return t+(e?"?"+e:"")},m=["uri","path"]},LZWt:function(t,e){var n={}.toString;t.exports=function(t){return n.call(t).slice(8,-1)}},LeKB:function(t,e,n){t.exports=[{plugin:n("npZl"),options:{plugins:[],icon:"static/openj9-logo.svg",cache_busting_mode:"query",include_favicon:!0,legacy:!0,theme_color_in_head:!0,cacheDigest:"0a19b941415d1d6d03226a8c85fc39c9"}},{plugin:n("pWkz"),options:{plugins:[],trackingId:"UA-105616558-3",head:!1,anonymize:!0}},{plugin:n("GddB"),options:{plugins:[]}}]},LyE8:function(t,e,n){"use strict";var r=n("eeVq");t.exports=function(t,e){return!!t&&r((function(){e?t.call(null,(function(){}),1):t.call(null)}))}},M6Qj:function(t,e,n){var r=n("hPIQ"),o=n("K0xU")("iterator"),i=Array.prototype;t.exports=function(t){return void 0!==t&&(r.Array===t||i[o]===t)}},MMVs:function(t,e,n){n("V+eJ"),t.exports=function(){var t=!1;-1!==navigator.appVersion.indexOf("MSIE 10")&&(t=!0);var e,n=[],r="object"==typeof document&&document,o=t?r.documentElement.doScroll("left"):r.documentElement.doScroll,i=r&&(o?/^loaded|^c/:/^loaded|^i|^c/).test(r.readyState);return!i&&r&&r.addEventListener("DOMContentLoaded",e=function(){for(r.removeEventListener("DOMContentLoaded",e),i=1;e=n.shift();)e()}),function(t){i?setTimeout(t,0):n.push(t)}}()},MfQN:function(t,e){t.exports=function(t,e,n){var r=void 0===n;switch(e.length){case 0:return r?t():t.call(n);case 1:return r?t(e[0]):t.call(n,e[0]);case 2:return r?t(e[0],e[1]):t.call(n,e[0],e[1]);case 3:return r?t(e[0],e[1],e[2]):t.call(n,e[0],e[1],e[2]);case 4:return r?t(e[0],e[1],e[2],e[3]):t.call(n,e[0],e[1],e[2],e[3])}return t.apply(n,e)}},MgzW:function(t,e,n){"use strict";n("rGqo"),n("yt8O"),n("Btvt"),n("RW0V"),n("KKXr"),n("8+KV"),n("bWfx"),n("91GP"),n("ioFf");var r=Object.getOwnPropertySymbols,o=Object.prototype.hasOwnProperty,i=Object.prototype.propertyIsEnumerable;function a(t){if(null==t)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(t)}t.exports=function(){try{if(!Object.assign)return!1;var t=new String("abc");if(t[5]="de","5"===Object.getOwnPropertyNames(t)[0])return!1;for(var e={},n=0;n<10;n++)e["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(e).map((function(t){return e[t]})).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach((function(t){r[t]=t})),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},r)).join("")}catch(o){return!1}}()?Object.assign:function(t,e){for(var n,c,u=a(t),s=1;s<arguments.length;s++){for(var l in n=Object(arguments[s]))o.call(n,l)&&(u[l]=n[l]);if(r){c=r(n);for(var f=0;f<c.length;f++)i.call(n,c[f])&&(u[c[f]]=n[c[f]])}}return u}},MiSq:function(t,e,n){"use strict";n("LK8F"),n("bWfx"),n("f3/d"),n("a1Th"),n("h7Nl"),n("Btvt"),n("V+eJ"),n("pIFo");var r=function(t){for(var e,n=t.length,r=n^n,o=0;n>=4;)e=1540483477*(65535&(e=255&t.charCodeAt(o)|(255&t.charCodeAt(++o))<<8|(255&t.charCodeAt(++o))<<16|(255&t.charCodeAt(++o))<<24))+((1540483477*(e>>>16)&65535)<<16),r=1540483477*(65535&r)+((1540483477*(r>>>16)&65535)<<16)^(e=1540483477*(65535&(e^=e>>>24))+((1540483477*(e>>>16)&65535)<<16)),n-=4,++o;switch(n){case 3:r^=(255&t.charCodeAt(o+2))<<16;case 2:r^=(255&t.charCodeAt(o+1))<<8;case 1:r=1540483477*(65535&(r^=255&t.charCodeAt(o)))+((1540483477*(r>>>16)&65535)<<16)}return r=1540483477*(65535&(r^=r>>>13))+((1540483477*(r>>>16)&65535)<<16),((r^=r>>>15)>>>0).toString(36)},o={animationIterationCount:1,borderImageOutset:1,borderImageSlice:1,borderImageWidth:1,boxFlex:1,boxFlexGroup:1,boxOrdinalGroup:1,columnCount:1,columns:1,flex:1,flexGrow:1,flexPositive:1,flexShrink:1,flexNegative:1,flexOrder:1,gridRow:1,gridRowEnd:1,gridRowSpan:1,gridRowStart:1,gridColumn:1,gridColumnEnd:1,gridColumnSpan:1,gridColumnStart:1,msGridRow:1,msGridRowSpan:1,msGridColumn:1,msGridColumnSpan:1,fontWeight:1,lineHeight:1,opacity:1,order:1,orphans:1,tabSize:1,widows:1,zIndex:1,zoom:1,WebkitLineClamp:1,fillOpacity:1,floodOpacity:1,stopOpacity:1,strokeDasharray:1,strokeDashoffset:1,strokeMiterlimit:1,strokeOpacity:1,strokeWidth:1},i=n("4qRI");n.d(e,"a",(function(){return v}));var a=/[A-Z]|^ms/g,c=/_EMO_([^_]+?)_([^]*?)_EMO_/g,u=function(t){return 45===t.charCodeAt(1)},s=function(t){return null!=t&&"boolean"!=typeof t},l=Object(i.a)((function(t){return u(t)?t:t.replace(a,"-$&").toLowerCase()})),f=function(t,e){switch(t){case"animation":case"animationName":if("string"==typeof e)return e.replace(c,(function(t,e,n){return h={name:e,styles:n,next:h},e}))}return 1===o[t]||u(t)||"number"!=typeof e||0===e?e:e+"px"};function p(t,e,n,r){if(null==n)return"";if(void 0!==n.__emotion_styles)return n;switch(typeof n){case"boolean":return"";case"object":if(1===n.anim)return h={name:n.name,styles:n.styles,next:h},n.name;if(void 0!==n.styles){var o=n.next;if(void 0!==o)for(;void 0!==o;)h={name:o.name,styles:o.styles,next:h},o=o.next;return n.styles+";"}return function(t,e,n){var r="";if(Array.isArray(n))for(var o=0;o<n.length;o++)r+=p(t,e,n[o],!1);else for(var i in n){var a=n[i];if("object"!=typeof a)null!=e&&void 0!==e[a]?r+=i+"{"+e[a]+"}":s(a)&&(r+=l(i)+":"+f(i,a)+";");else if(!Array.isArray(a)||"string"!=typeof a[0]||null!=e&&void 0!==e[a[0]]){var c=p(t,e,a,!1);switch(i){case"animation":case"animationName":r+=l(i)+":"+c+";";break;default:r+=i+"{"+c+"}"}}else for(var u=0;u<a.length;u++)s(a[u])&&(r+=l(i)+":"+f(i,a[u])+";")}return r}(t,e,n);case"function":if(void 0!==t){var i=h,a=n(t);return h=i,p(t,e,a,r)}break;case"string":}if(null==e)return n;var c=e[n];return void 0===c||r?n:c}var h,d=/label:\s*([^\s;\n{]+)\s*;/g;var v=function(t,e,n){if(1===t.length&&"object"==typeof t[0]&&null!==t[0]&&void 0!==t[0].styles)return t[0];var o=!0,i="";h=void 0;var a=t[0];null==a||void 0===a.raw?(o=!1,i+=p(n,e,a,!1)):i+=a[0];for(var c=1;c<t.length;c++)i+=p(n,e,t[c],46===i.charCodeAt(i.length-1)),o&&(i+=a[c]);d.lastIndex=0;for(var u,s="";null!==(u=d.exec(i));)s+="-"+u[1];return{name:r(i)+s,styles:i,next:h}}},Mukb:function(t,e,n){var r=n("hswa"),o=n("RjD/");t.exports=n("nh4g")?function(t,e,n){return r.f(t,e,o(1,n))}:function(t,e,n){return t[e]=n,t}},N8g3:function(t,e,n){e.f=n("K0xU")},NSX3:function(t,e,n){"use strict";n.r(e);var r=n("xtsi");"https:"!==window.location.protocol&&"localhost"!==window.location.hostname?console.error("Service workers can only be used over HTTPS, or on localhost for development"):"serviceWorker"in navigator&&navigator.serviceWorker.register("/openj9/sw.js").then((function(t){t.addEventListener("updatefound",(function(){Object(r.apiRunner)("onServiceWorkerUpdateFound",{serviceWorker:t});var e=t.installing;console.log("installingWorker",e),e.addEventListener("statechange",(function(){switch(e.state){case"installed":navigator.serviceWorker.controller?(window.___swUpdated=!0,Object(r.apiRunner)("onServiceWorkerUpdateReady",{serviceWorker:t}),window.___failedResources&&(console.log("resources failed, SW updated - reloading"),window.location.reload())):(console.log("Content is now available offline!"),Object(r.apiRunner)("onServiceWorkerInstalled",{serviceWorker:t}));break;case"redundant":console.error("The installing service worker became redundant."),Object(r.apiRunner)("onServiceWorkerRedundant",{serviceWorker:t});break;case"activated":Object(r.apiRunner)("onServiceWorkerActive",{serviceWorker:t})}}))}))})).catch((function(t){console.error("Error during service worker registration:",t)}))},OEbY:function(t,e,n){n("nh4g")&&"g"!=/./g.flags&&n("hswa").f(RegExp.prototype,"flags",{configurable:!0,get:n("C/va")})},OG14:function(t,e,n){"use strict";var r=n("y3w9"),o=n("g6HL"),i=n("Xxuz");n("IU+Z")("search",1,(function(t,e,n,a){return[function(n){var r=t(this),o=null==n?void 0:n[e];return void 0!==o?o.call(n,r):new RegExp(n)[e](String(r))},function(t){var e=a(n,t,this);if(e.done)return e.value;var c=r(t),u=String(this),s=c.lastIndex;o(s,0)||(c.lastIndex=0);var l=i(c,u);return o(c.lastIndex,s)||(c.lastIndex=s),null===l?-1:l.index}]}))},OP3Y:function(t,e,n){var r=n("aagx"),o=n("S/j/"),i=n("YTvA")("IE_PROTO"),a=Object.prototype;t.exports=Object.getPrototypeOf||function(t){return t=o(t),r(t,i)?t[i]:"function"==typeof t.constructor&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?a:null}},OnI7:function(t,e,n){var r=n("dyZX"),o=n("g3g5"),i=n("LQAc"),a=n("N8g3"),c=n("hswa").f;t.exports=function(t){var e=o.Symbol||(o.Symbol=i?{}:r.Symbol||{});"_"==t.charAt(0)||t in e||c(e,t,{value:a.f(t)})}},OysZ:function(t,e,n){"use strict";e.__esModule=!0,e.isMobileSafari=function(){return/iPad|iPhone|iPod/.test(window.navigator.platform)&&/^((?!CriOS).)*Safari/.test(window.navigator.userAgent)}},Oyvg:function(t,e,n){var r=n("dyZX"),o=n("Xbzi"),i=n("hswa").f,a=n("kJMx").f,c=n("quPj"),u=n("C/va"),s=r.RegExp,l=s,f=s.prototype,p=/a/g,h=/a/g,d=new s(p)!==p;if(n("nh4g")&&(!d||n("eeVq")((function(){return h[n("K0xU")("match")]=!1,s(p)!=p||s(h)==h||"/a/i"!=s(p,"i")})))){s=function(t,e){var n=this instanceof s,r=c(t),i=void 0===e;return!n&&r&&t.constructor===s&&i?t:o(d?new l(r&&!i?t.source:t,e):l((r=t instanceof s)?t.source:t,r&&i?u.call(t):e),n?this:f,s)};for(var v=function(t){t in s||i(s,t,{configurable:!0,get:function(){return l[t]},set:function(e){l[t]=e}})},g=a(l),m=0;g.length>m;)v(g[m++]);f.constructor=s,s.prototype=f,n("KroJ")(r,"RegExp",s)}n("elZq")("RegExp")},PJYZ:function(t,e){t.exports=function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}},QLaP:function(t,e,n){"use strict";n("f3/d"),n("pIFo");t.exports=function(t,e,n,r,o,i,a,c){if(!t){var u;if(void 0===e)u=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var s=[n,r,o,i,a,c],l=0;(u=new Error(e.replace(/%s/g,(function(){return s[l++]})))).name="Invariant Violation"}throw u.framesToPop=1,u}}},QaDb:function(t,e,n){"use strict";var r=n("Kuth"),o=n("RjD/"),i=n("fyDq"),a={};n("Mukb")(a,n("K0xU")("iterator"),(function(){return this})),t.exports=function(t,e,n){t.prototype=r(a,{next:o(1,n)}),i(t,e+" Iterator")}},RW0V:function(t,e,n){var r=n("S/j/"),o=n("DVgA");n("Xtr8")("keys",(function(){return function(t){return o(r(t))}}))},RYi7:function(t,e){var n=Math.ceil,r=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?r:n)(t)}},"RjD/":function(t,e){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},"S/j/":function(t,e,n){var r=n("vhPU");t.exports=function(t){return Object(r(t))}},SIPS:function(t,e,n){"use strict";n.d(e,"a",(function(){return r})),n.d(e,"b",(function(){return o}));n("f3/d"),n("KKXr"),n("8+KV");function r(t,e,n){var r="";return n.split(" ").forEach((function(n){void 0!==t[n]?e.push(t[n]):r+=n+" "})),r}var o=function(t,e,n){var r=t.key+"-"+e.name;if(!1===n&&void 0===t.registered[r]&&(t.registered[r]=e.styles),void 0===t.inserted[e.name]){var o=e;do{t.insert("."+r,o,t.sheet,!0);o=o.next}while(void 0!==o)}}},SRfc:function(t,e,n){"use strict";var r=n("y3w9"),o=n("ne8i"),i=n("A5AN"),a=n("Xxuz");n("IU+Z")("match",1,(function(t,e,n,c){return[function(n){var r=t(this),o=null==n?void 0:n[e];return void 0!==o?o.call(n,r):new RegExp(n)[e](String(r))},function(t){var e=c(n,t,this);if(e.done)return e.value;var u=r(t),s=String(this);if(!u.global)return a(u,s);var l=u.unicode;u.lastIndex=0;for(var f,p=[],h=0;null!==(f=a(u,s));){var d=String(f[0]);p[h]=d,""===d&&(u.lastIndex=i(s,o(u.lastIndex),l)),h++}return 0===h?null:p}]}))},SlkY:function(t,e,n){var r=n("m0Pp"),o=n("H6hf"),i=n("M6Qj"),a=n("y3w9"),c=n("ne8i"),u=n("J+6e"),s={},l={};(e=t.exports=function(t,e,n,f,p){var h,d,v,g,m=p?function(){return t}:u(t),y=r(n,f,e?2:1),b=0;if("function"!=typeof m)throw TypeError(t+" is not iterable!");if(i(m)){for(h=c(t.length);h>b;b++)if((g=e?y(a(d=t[b])[0],d[1]):y(t[b]))===s||g===l)return g}else for(v=m.call(t);!(d=v.next()).done;)if((g=o(v,y,d.value,e))===s||g===l)return g}).BREAK=s,e.RETURN=l},T39b:function(t,e,n){"use strict";var r=n("wmvG"),o=n("s5qY");t.exports=n("4LiD")("Set",(function(t){return function(){return t(this,arguments.length>0?arguments[0]:void 0)}}),{add:function(t){return r.def(o(this,"Set"),t=0===t?0:t,t)}},r)},TqRt:function(t,e){t.exports=function(t){return t&&t.__esModule?t:{default:t}}},Tze0:function(t,e,n){"use strict";n("qncB")("trim",(function(t){return function(){return t(this,3)}}))},UUeW:function(t,e,n){var r=n("K0xU")("match");t.exports=function(t){var e=/./;try{"/./"[t](e)}catch(n){try{return e[r]=!1,!"/./"[t](e)}catch(o){}}return!0}},Ugos:function(t,e,n){"use strict";var r,o,i=n("C/va"),a=RegExp.prototype.exec,c=String.prototype.replace,u=a,s=(r=/a/,o=/b*/g,a.call(r,"a"),a.call(o,"a"),0!==r.lastIndex||0!==o.lastIndex),l=void 0!==/()??/.exec("")[1];(s||l)&&(u=function(t){var e,n,r,o,u=this;return l&&(n=new RegExp("^"+u.source+"$(?!\\s)",i.call(u))),s&&(e=u.lastIndex),r=a.call(u,t),s&&r&&(u.lastIndex=u.global?r.index+r[0].length:e),l&&r&&r.length>1&&c.call(r[0],n,(function(){for(o=1;o<arguments.length-2;o++)void 0===arguments[o]&&(r[o]=void 0)})),r}),t.exports=u},UqcF:function(t,e){e.f={}.propertyIsEnumerable},UxWs:function(t,e,n){"use strict";n.r(e);n("91GP"),n("OG14"),n("SRfc");var r=n("xtsi"),o=n("q1tI"),i=n.n(o),a=n("i8i4"),c=n.n(a),u=n("YwZP"),s=n("7hJ6"),l=n("MMVs"),f=n.n(l),p=(n("pIFo"),n("emEt")),h=n("YLt+"),d=n("5yr3"),v=n("+ZDr"),g=n("qKvR");function m(t,e){t.prototype=Object.create(e.prototype),t.prototype.constructor=t,t.__proto__=e}var y=h.reduce((function(t,e){return t[e.fromPath]=e,t}),{});function b(t){var e=y[t];return null!=e&&(window.___replace(e.toPath),!0)}var w=function(t,e){b(t.pathname)||Object(r.apiRunner)("onPreRouteUpdate",{location:t,prevLocation:e})},_=function(t,e){b(t.pathname)||(Object(r.apiRunner)("onRouteUpdate",{location:t,prevLocation:e}),window.__navigatingToLink=!1)},x=function(t,e){void 0===e&&(e={}),e.replace||(window.__navigatingToLink=!0);var n=Object(v.parsePath)(t).pathname,o=y[n];if(o&&(t=o.toPath,n=Object(v.parsePath)(t).pathname),window.___swUpdated)window.location=n;else{var i=setTimeout((function(){d.a.emit("onDelayedLoadPageResources",{pathname:n}),Object(r.apiRunner)("onRouteUpdateDelayed",{location:window.location})}),1e3);p.default.loadPage(n).then((function(r){r&&"error"!==r.status||(window.history.replaceState({},"",location.href),window.location=n),r&&r.page.webpackCompilationHash!==window.___webpackCompilationHash&&("serviceWorker"in navigator&&null!==navigator.serviceWorker.controller&&"activated"===navigator.serviceWorker.controller.state&&navigator.serviceWorker.controller.postMessage({gatsbyApi:"clearPathResources"}),console.log("Site has changed on server. Reloading browser"),window.location=n),Object(u.navigate)(t,e),clearTimeout(i)}))}};function S(t,e){var n=this,o=e.location,i=o.pathname,a=o.hash,c=Object(r.apiRunner)("shouldUpdateScroll",{prevRouterProps:t,pathname:i,routerProps:{location:o},getSavedScrollPosition:function(t){return n._stateStorage.read(t)}});if(c.length>0)return c[c.length-1];if(t&&t.location.pathname===i)return a?decodeURI(a.slice(1)):[0,0];return!0}var O=function(t){function e(e){var n;return(n=t.call(this,e)||this).announcementRef=i.a.createRef(),n}m(e,t);var n=e.prototype;return n.componentDidUpdate=function(t,e){var n=this;requestAnimationFrame((function(){var t="new page at "+n.props.location.pathname;document.title&&(t=document.title);var e=document.getElementById("gatsby-focus-wrapper").getElementsByTagName("h1");e&&e.length&&(t=e[0].textContent);var r="Navigated to "+t;n.announcementRef.current.innerText!==r&&(n.announcementRef.current.innerText=r)}))},n.render=function(){return Object(g.c)("div",{id:"gatsby-announcer",style:{position:"absolute",top:0,width:1,height:1,padding:0,overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",border:0},role:"alert","aria-live":"assertive","aria-atomic":"true",ref:this.announcementRef})},e}(i.a.Component),P=function(t){function e(e){var n;return n=t.call(this,e)||this,w(e.location,null),n}m(e,t);var n=e.prototype;return n.componentDidMount=function(){_(this.props.location,null)},n.componentDidUpdate=function(t,e,n){n&&_(this.props.location,t.location)},n.getSnapshotBeforeUpdate=function(t){return this.props.location.pathname!==t.location.pathname&&(w(this.props.location,t.location),!0)},n.render=function(){return Object(g.c)(i.a.Fragment,null,this.props.children,Object(g.c)(O,{location:location}))},e}(i.a.Component),k=n("IOVJ"),E=n("pCP8"),j=n.n(E);function R(t,e){for(var n in t)if(!(n in e))return!0;for(var r in e)if(t[r]!==e[r])return!0;return!1}var C=function(t){var e,n;function r(e){var n;n=t.call(this)||this;var r=e.location,o=e.pageResources;return n.state={location:Object.assign({},r),pageResources:o||p.default.loadPageSync(r.pathname)},n}n=t,(e=r).prototype=Object.create(n.prototype),e.prototype.constructor=e,e.__proto__=n,r.getDerivedStateFromProps=function(t,e){var n=t.location;return e.location.href!==n.href?{pageResources:p.default.loadPageSync(n.pathname),location:Object.assign({},n)}:{location:Object.assign({},n)}};var o=r.prototype;return o.loadResources=function(t){var e=this;p.default.loadPage(t).then((function(n){n&&"error"!==n.status?e.setState({location:Object.assign({},window.location),pageResources:n}):(window.history.replaceState({},"",location.href),window.location=t)}))},o.shouldComponentUpdate=function(t,e){return e.pageResources?this.state.pageResources!==e.pageResources||(this.state.pageResources.component!==e.pageResources.component||(this.state.pageResources.json!==e.pageResources.json||(!(this.state.location.key===e.location.key||!e.pageResources.page||!e.pageResources.page.matchPath&&!e.pageResources.page.path)||function(t,e,n){return R(t.props,e)||R(t.state,n)}(this,t,e)))):(this.loadResources(t.location.pathname),!1)},o.render=function(){return this.props.children(this.state)},r}(i.a.Component),A=n("cSJ8"),T=n("vf9c");function F(){return(F=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(t[r]=n[r])}return t}).apply(this,arguments)}var L=new p.ProdLoader(j.a,T);Object(p.setLoader)(L),L.setApiRunner(r.apiRunner),window.asyncRequires=j.a,window.___emitter=d.a,window.___loader=p.publicLoader,window.__navigatingToLink=!1,window.___push=function(t){return x(t,{replace:!1})},window.___replace=function(t){return x(t,{replace:!0})},window.___navigate=function(t,e){return x(t,e)},b(window.location.pathname),Object(r.apiRunnerAsync)("onClientEntry").then((function(){Object(r.apiRunner)("registerServiceWorker").length>0&&n("NSX3");var t=function(t){return Object(g.c)(u.BaseContext.Provider,{value:{baseuri:"/",basepath:"/"}},Object(g.c)(k.a,t))},e=function(e){var n,r;function o(){return e.apply(this,arguments)||this}return r=e,(n=o).prototype=Object.create(r.prototype),n.prototype.constructor=n,n.__proto__=r,o.prototype.render=function(){var e=this,n=this.props.location;return Object(g.c)(C,{location:n},(function(n){var r=n.pageResources,o=n.location;return Object(g.c)(P,{location:o},Object(g.c)(s.ScrollContext,{location:o,shouldUpdateScroll:S},Object(g.c)(u.Router,{basepath:"/openj9",location:o,id:"gatsby-focus-wrapper"},Object(g.c)(t,F({path:"/404.html"===r.page.path?Object(A.a)(o.pathname,"/openj9"):encodeURI(r.page.matchPath||r.page.path)},e.props,{location:o,pageResources:r},r.json)))))}))},o}(i.a.Component),o=window,a=o.pagePath,l=o.location;a&&"/openj9"+a!==l.pathname&&!(L.findMatchPath(Object(A.a)(l.pathname,"/openj9"))||"/404.html"===a||a.match(/^\/404\/?$/)||a.match(/^\/offline-plugin-app-shell-fallback\/?$/))&&Object(u.navigate)("/openj9"+a+l.search+l.hash,{replace:!0}),p.publicLoader.loadPage(l.pathname).then((function(t){if(!t||"error"===t.status)throw new Error("page resources for "+l.pathname+" not found. Not rendering React");window.___webpackCompilationHash=t.page.webpackCompilationHash;var n=function(){return Object(g.c)(u.Location,null,(function(t){return Object(g.c)(e,t)}))},o=Object(r.apiRunner)("wrapRootElement",{element:Object(g.c)(n,null)},Object(g.c)(n,null),(function(t){return{element:t.result}})).pop(),i=function(){return o},a=Object(r.apiRunner)("replaceHydrateFunction",void 0,c.a.hydrate)[0];f()((function(){a(Object(g.c)(i,null),"undefined"!=typeof window?document.getElementById("___gatsby"):void 0,(function(){Object(r.apiRunner)("onInitialClientRender")}))}))}))}))},"V+eJ":function(t,e,n){"use strict";var r=n("XKFU"),o=n("w2a5")(!1),i=[].indexOf,a=!!i&&1/[1].indexOf(1,-0)<0;r(r.P+r.F*(a||!n("LyE8")(i)),"Array",{indexOf:function(t){return a?i.apply(this,arguments)||0:o(this,t,arguments[1])}})},VRzm:function(t,e,n){"use strict";var r,o,i,a,c=n("LQAc"),u=n("dyZX"),s=n("m0Pp"),l=n("I8a+"),f=n("XKFU"),p=n("0/R4"),h=n("2OiF"),d=n("9gX7"),v=n("SlkY"),g=n("69bn"),m=n("GZEu").set,y=n("gHnn")(),b=n("pbhE"),w=n("nICZ"),_=n("ol8x"),x=n("vKrd"),S=u.TypeError,O=u.process,P=O&&O.versions,k=P&&P.v8||"",E=u.Promise,j="process"==l(O),R=function(){},C=o=b.f,A=!!function(){try{var t=E.resolve(1),e=(t.constructor={})[n("K0xU")("species")]=function(t){t(R,R)};return(j||"function"==typeof PromiseRejectionEvent)&&t.then(R)instanceof e&&0!==k.indexOf("6.6")&&-1===_.indexOf("Chrome/66")}catch(r){}}(),T=function(t){var e;return!(!p(t)||"function"!=typeof(e=t.then))&&e},F=function(t,e){if(!t._n){t._n=!0;var n=t._c;y((function(){for(var r=t._v,o=1==t._s,i=0,a=function(e){var n,i,a,c=o?e.ok:e.fail,u=e.resolve,s=e.reject,l=e.domain;try{c?(o||(2==t._h&&M(t),t._h=1),!0===c?n=r:(l&&l.enter(),n=c(r),l&&(l.exit(),a=!0)),n===e.promise?s(S("Promise-chain cycle")):(i=T(n))?i.call(n,u,s):u(n)):s(r)}catch(f){l&&!a&&l.exit(),s(f)}};n.length>i;)a(n[i++]);t._c=[],t._n=!1,e&&!t._h&&L(t)}))}},L=function(t){m.call(u,(function(){var e,n,r,o=t._v,i=U(t);if(i&&(e=w((function(){j?O.emit("unhandledRejection",o,t):(n=u.onunhandledrejection)?n({promise:t,reason:o}):(r=u.console)&&r.error&&r.error("Unhandled promise rejection",o)})),t._h=j||U(t)?2:1),t._a=void 0,i&&e.e)throw e.v}))},U=function(t){return 1!==t._h&&0===(t._a||t._c).length},M=function(t){m.call(u,(function(){var e;j?O.emit("rejectionHandled",t):(e=u.onrejectionhandled)&&e({promise:t,reason:t._v})}))},K=function(t){var e=this;e._d||(e._d=!0,(e=e._w||e)._v=t,e._s=2,e._a||(e._a=e._c.slice()),F(e,!0))},D=function(t){var e,n=this;if(!n._d){n._d=!0,n=n._w||n;try{if(n===t)throw S("Promise can't be resolved itself");(e=T(t))?y((function(){var r={_w:n,_d:!1};try{e.call(t,s(D,r,1),s(K,r,1))}catch(o){K.call(r,o)}})):(n._v=t,n._s=1,F(n,!1))}catch(r){K.call({_w:n,_d:!1},r)}}};A||(E=function(t){d(this,E,"Promise","_h"),h(t),r.call(this);try{t(s(D,this,1),s(K,this,1))}catch(e){K.call(this,e)}},(r=function(t){this._c=[],this._a=void 0,this._s=0,this._d=!1,this._v=void 0,this._h=0,this._n=!1}).prototype=n("3Lyj")(E.prototype,{then:function(t,e){var n=C(g(this,E));return n.ok="function"!=typeof t||t,n.fail="function"==typeof e&&e,n.domain=j?O.domain:void 0,this._c.push(n),this._a&&this._a.push(n),this._s&&F(this,!1),n.promise},catch:function(t){return this.then(void 0,t)}}),i=function(){var t=new r;this.promise=t,this.resolve=s(D,t,1),this.reject=s(K,t,1)},b.f=C=function(t){return t===E||t===a?new i(t):o(t)}),f(f.G+f.W+f.F*!A,{Promise:E}),n("fyDq")(E,"Promise"),n("elZq")("Promise"),a=n("g3g5").Promise,f(f.S+f.F*!A,"Promise",{reject:function(t){var e=C(this);return(0,e.reject)(t),e.promise}}),f(f.S+f.F*(c||!A),"Promise",{resolve:function(t){return x(c&&this===a?E:this,t)}}),f(f.S+f.F*!(A&&n("XMVh")((function(t){E.all(t).catch(R)}))),"Promise",{all:function(t){var e=this,n=C(e),r=n.resolve,o=n.reject,i=w((function(){var n=[],i=0,a=1;v(t,!1,(function(t){var c=i++,u=!1;n.push(void 0),a++,e.resolve(t).then((function(t){u||(u=!0,n[c]=t,--a||r(n))}),o)})),--a||r(n)}));return i.e&&o(i.v),n.promise},race:function(t){var e=this,n=C(e),r=n.reject,o=w((function(){v(t,!1,(function(t){e.resolve(t).then(n.resolve,r)}))}));return o.e&&r(o.v),n.promise}})},VTer:function(t,e,n){var r=n("g3g5"),o=n("dyZX"),i=o["__core-js_shared__"]||(o["__core-js_shared__"]={});(t.exports=function(t,e){return i[t]||(i[t]=void 0!==e?e:{})})("versions",[]).push({version:r.version,mode:n("LQAc")?"pure":"global",copyright:"© 2019 Denis Pushkarev (zloirock.ru)"})},VbXa:function(t,e){t.exports=function(t,e){t.prototype=Object.create(e.prototype),t.prototype.constructor=t,t.__proto__=e}},Vd3H:function(t,e,n){"use strict";var r=n("XKFU"),o=n("2OiF"),i=n("S/j/"),a=n("eeVq"),c=[].sort,u=[1,2,3];r(r.P+r.F*(a((function(){u.sort(void 0)}))||!a((function(){u.sort(null)}))||!n("LyE8")(c)),"Array",{sort:function(t){return void 0===t?c.call(i(this)):c.call(i(this),o(t))}})},WbBG:function(t,e,n){"use strict";t.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},Wbzz:function(t,e,n){"use strict";n.r(e),n.d(e,"graphql",(function(){return g})),n.d(e,"StaticQueryContext",(function(){return p})),n.d(e,"StaticQuery",(function(){return d})),n.d(e,"useStaticQuery",(function(){return v})),n.d(e,"prefetchPathname",(function(){return f}));var r=n("q1tI"),o=n.n(r),i=n("+ZDr"),a=n.n(i);n.d(e,"Link",(function(){return a.a})),n.d(e,"withAssetPrefix",(function(){return i.withAssetPrefix})),n.d(e,"withPrefix",(function(){return i.withPrefix})),n.d(e,"parsePath",(function(){return i.parsePath})),n.d(e,"navigate",(function(){return i.navigate})),n.d(e,"push",(function(){return i.push})),n.d(e,"replace",(function(){return i.replace})),n.d(e,"navigateTo",(function(){return i.navigateTo}));var c=n("lw3w"),u=n.n(c);n.d(e,"PageRenderer",(function(){return u.a}));var s=n("emEt"),l=n("qKvR"),f=s.default.enqueue,p=o.a.createContext({});function h(t){var e=t.staticQueryData,n=t.data,r=t.query,i=t.render,a=n?n.data:e[r]&&e[r].data;return Object(l.c)(o.a.Fragment,null,a&&i(a),!a&&Object(l.c)("div",null,"Loading (StaticQuery)"))}var d=function(t){var e=t.data,n=t.query,r=t.render,o=t.children;return Object(l.c)(p.Consumer,null,(function(t){return Object(l.c)(h,{data:e,query:n,render:r||o,staticQueryData:t})}))},v=function(t){o.a.useContext;var e=o.a.useContext(p);if(e[t]&&e[t].data)return e[t].data;throw new Error("The result of this StaticQuery could not be fetched.\n\nThis is likely a bug in Gatsby and if refreshing the page does not fix it, please open an issue in https://github.com/gatsbyjs/gatsby/issues")};function g(){throw new Error("It appears like Gatsby is misconfigured. Gatsby related `graphql` calls are supposed to only be evaluated at compile time, and then compiled away. Unfortunately, something went wrong and the query was left in the compiled code.\n\nUnless your site has a complex or custom babel/Gatsby configuration this is likely a bug in Gatsby.")}},XKFU:function(t,e,n){var r=n("dyZX"),o=n("g3g5"),i=n("Mukb"),a=n("KroJ"),c=n("m0Pp"),u=function(t,e,n){var s,l,f,p,h=t&u.F,d=t&u.G,v=t&u.S,g=t&u.P,m=t&u.B,y=d?r:v?r[e]||(r[e]={}):(r[e]||{}).prototype,b=d?o:o[e]||(o[e]={}),w=b.prototype||(b.prototype={});for(s in d&&(n=e),n)f=((l=!h&&y&&void 0!==y[s])?y:n)[s],p=m&&l?c(f,r):g&&"function"==typeof f?c(Function.call,f):f,y&&a(y,s,f,t&u.U),b[s]!=f&&i(b,s,p),g&&w[s]!=f&&(w[s]=f)};r.core=o,u.F=1,u.G=2,u.S=4,u.P=8,u.B=16,u.W=32,u.U=64,u.R=128,t.exports=u},XMVh:function(t,e,n){var r=n("K0xU")("iterator"),o=!1;try{var i=[7][r]();i.return=function(){o=!0},Array.from(i,(function(){throw 2}))}catch(a){}t.exports=function(t,e){if(!e&&!o)return!1;var n=!1;try{var i=[7],c=i[r]();c.next=function(){return{done:n=!0}},i[r]=function(){return c},t(i)}catch(a){}return n}},Xbzi:function(t,e,n){var r=n("0/R4"),o=n("i5dc").set;t.exports=function(t,e,n){var i,a=e.constructor;return a!==n&&"function"==typeof a&&(i=a.prototype)!==n.prototype&&r(i)&&o&&o(t,i),t}},XfO3:function(t,e,n){"use strict";var r=n("AvRE")(!0);n("Afnz")(String,"String",(function(t){this._t=String(t),this._i=0}),(function(){var t,e=this._t,n=this._i;return n>=e.length?{value:void 0,done:!0}:(t=r(e,n),this._i+=t.length,{value:t,done:!1})}))},Xtr8:function(t,e,n){var r=n("XKFU"),o=n("g3g5"),i=n("eeVq");t.exports=function(t,e){var n=(o.Object||{})[t]||Object[t],a={};a[t]=e(n),r(r.S+r.F*i((function(){n(1)})),"Object",a)}},Xxuz:function(t,e,n){"use strict";var r=n("I8a+"),o=RegExp.prototype.exec;t.exports=function(t,e){var n=t.exec;if("function"==typeof n){var i=n.call(t,e);if("object"!=typeof i)throw new TypeError("RegExp exec method returned something other than an Object or null");return i}if("RegExp"!==r(t))throw new TypeError("RegExp#exec called on incompatible receiver");return o.call(t,e)}},"YLt+":function(t){t.exports=JSON.parse("[]")},YTvA:function(t,e,n){var r=n("VTer")("keys"),o=n("ylqs");t.exports=function(t){return r[t]||(r[t]=o(t))}},Ymqv:function(t,e,n){var r=n("LZWt");t.exports=Object("z").propertyIsEnumerable(0)?Object:function(t){return"String"==r(t)?t.split(""):Object(t)}},YwZP:function(t,e,n){"use strict";n.r(e);n("pIFo"),n("bWfx"),n("VRzm"),n("Btvt"),n("/SS/"),n("hHhE"),n("V+eJ"),n("91GP");var r=n("q1tI"),o=n.n(r),i=(n("6DQo"),n("17x9"),n("QLaP")),a=n.n(i),c=o.a.createContext,u=n("94VI"),s=n("LYrO"),l=n("9Xx/");n.d(e,"Link",(function(){return A})),n.d(e,"Location",(function(){return y})),n.d(e,"LocationProvider",(function(){return b})),n.d(e,"Match",(function(){return K})),n.d(e,"Redirect",(function(){return M})),n.d(e,"Router",(function(){return x})),n.d(e,"ServerLocation",(function(){return w})),n.d(e,"isRedirect",(function(){return F})),n.d(e,"redirectTo",(function(){return L})),n.d(e,"BaseContext",(function(){return _})),n.d(e,"createHistory",(function(){return l.createHistory})),n.d(e,"createMemorySource",(function(){return l.createMemorySource})),n.d(e,"navigate",(function(){return l.navigate})),n.d(e,"globalHistory",(function(){return l.globalHistory}));var f=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(t[r]=n[r])}return t};function p(t,e){var n={};for(var r in t)e.indexOf(r)>=0||Object.prototype.hasOwnProperty.call(t,r)&&(n[r]=t[r]);return n}function h(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function d(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function v(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}var g=function(t,e){var n=c(e);return n.Consumer.displayName=t+".Consumer",n.Provider.displayName=t+".Provider",n},m=g("Location"),y=function(t){var e=t.children;return o.a.createElement(m.Consumer,null,(function(t){return t?e(t):o.a.createElement(b,null,e)}))},b=function(t){function e(){var n,r;h(this,e);for(var o=arguments.length,i=Array(o),a=0;a<o;a++)i[a]=arguments[a];return n=r=d(this,t.call.apply(t,[this].concat(i))),r.state={context:r.getContext(),refs:{unlisten:null}},d(r,n)}return v(e,t),e.prototype.getContext=function(){var t=this.props.history;return{navigate:t.navigate,location:t.location}},e.prototype.componentDidCatch=function(t,e){if(!F(t))throw t;(0,this.props.history.navigate)(t.uri,{replace:!0})},e.prototype.componentDidUpdate=function(t,e){e.context.location!==this.state.context.location&&this.props.history._onTransitionComplete()},e.prototype.componentDidMount=function(){var t=this,e=this.state.refs,n=this.props.history;e.unlisten=n.listen((function(){Promise.resolve().then((function(){requestAnimationFrame((function(){t.unmounted||t.setState((function(){return{context:t.getContext()}}))}))}))}))},e.prototype.componentWillUnmount=function(){var t=this.state.refs;this.unmounted=!0,t.unlisten()},e.prototype.render=function(){var t=this.state.context,e=this.props.children;return o.a.createElement(m.Provider,{value:t},"function"==typeof e?e(t):e||null)},e}(o.a.Component);b.defaultProps={history:l.globalHistory};var w=function(t){var e=t.url,n=t.children;return o.a.createElement(m.Provider,{value:{location:{pathname:e,search:"",hash:""},navigate:function(){throw new Error("You can't call navigate on the server.")}}},n)},_=g("Base",{baseuri:"/",basepath:"/"}),x=function(t){return o.a.createElement(_.Consumer,null,(function(e){return o.a.createElement(y,null,(function(n){return o.a.createElement(S,f({},e,n,t))}))}))},S=function(t){function e(){return h(this,e),d(this,t.apply(this,arguments))}return v(e,t),e.prototype.render=function(){var t=this.props,e=t.location,n=t.navigate,r=t.basepath,i=t.primary,a=t.children,c=(t.baseuri,t.component),u=void 0===c?"div":c,l=p(t,["location","navigate","basepath","primary","children","baseuri","component"]),h=o.a.Children.map(a,I(r)),d=e.pathname,v=Object(s.c)(h,d);if(v){var g=v.params,m=v.uri,y=v.route,b=v.route.value;r=y.default?r:y.path.replace(/\*$/,"");var w=f({},g,{uri:m,location:e,navigate:function(t,e){return n(Object(s.d)(t,m),e)}}),S=o.a.cloneElement(b,w,b.props.children?o.a.createElement(x,{primary:i},b.props.children):void 0),O=i?P:u,k=i?f({uri:m,location:e,component:u},l):l;return o.a.createElement(_.Provider,{value:{baseuri:m,basepath:r}},o.a.createElement(O,k,S))}return null},e}(o.a.PureComponent);S.defaultProps={primary:!0};var O=g("Focus"),P=function(t){var e=t.uri,n=t.location,r=t.component,i=p(t,["uri","location","component"]);return o.a.createElement(O.Consumer,null,(function(t){return o.a.createElement(j,f({},i,{component:r,requestFocus:t,uri:e,location:n}))}))},k=!0,E=0,j=function(t){function e(){var n,r;h(this,e);for(var o=arguments.length,i=Array(o),a=0;a<o;a++)i[a]=arguments[a];return n=r=d(this,t.call.apply(t,[this].concat(i))),r.state={},r.requestFocus=function(t){r.state.shouldFocus||t.focus()},d(r,n)}return v(e,t),e.getDerivedStateFromProps=function(t,e){if(null==e.uri)return f({shouldFocus:!0},t);var n=t.uri!==e.uri,r=e.location.pathname!==t.location.pathname&&t.location.pathname===t.uri;return f({shouldFocus:n||r},t)},e.prototype.componentDidMount=function(){E++,this.focus()},e.prototype.componentWillUnmount=function(){0===--E&&(k=!0)},e.prototype.componentDidUpdate=function(t,e){t.location!==this.props.location&&this.state.shouldFocus&&this.focus()},e.prototype.focus=function(){var t=this.props.requestFocus;t?t(this.node):k?k=!1:this.node.contains(document.activeElement)||this.node.focus()},e.prototype.render=function(){var t=this,e=this.props,n=(e.children,e.style),r=(e.requestFocus,e.role),i=void 0===r?"group":r,a=e.component,c=void 0===a?"div":a,u=(e.uri,e.location,p(e,["children","style","requestFocus","role","component","uri","location"]));return o.a.createElement(c,f({style:f({outline:"none"},n),tabIndex:"-1",role:i,ref:function(e){return t.node=e}},u),o.a.createElement(O.Provider,{value:this.requestFocus},this.props.children))},e}(o.a.Component);Object(u.polyfill)(j);var R=function(){},C=o.a.forwardRef;void 0===C&&(C=function(t){return t});var A=C((function(t,e){var n=t.innerRef,r=p(t,["innerRef"]);return o.a.createElement(_.Consumer,null,(function(t){t.basepath;var i=t.baseuri;return o.a.createElement(y,null,(function(t){var a=t.location,c=t.navigate,u=r.to,l=r.state,h=r.replace,d=r.getProps,v=void 0===d?R:d,g=p(r,["to","state","replace","getProps"]),m=Object(s.d)(u,i),y=a.pathname===m,b=Object(s.e)(a.pathname,m);return o.a.createElement("a",f({ref:e||n,"aria-current":y?"page":void 0},g,v({isCurrent:y,isPartiallyCurrent:b,href:m,location:a}),{href:m,onClick:function(t){g.onClick&&g.onClick(t),W(t)&&(t.preventDefault(),c(m,{state:l,replace:h}))}}))}))}))}));function T(t){this.uri=t}var F=function(t){return t instanceof T},L=function(t){throw new T(t)},U=function(t){function e(){return h(this,e),d(this,t.apply(this,arguments))}return v(e,t),e.prototype.componentDidMount=function(){var t=this.props,e=t.navigate,n=t.to,r=(t.from,t.replace),o=void 0===r||r,i=t.state,a=(t.noThrow,p(t,["navigate","to","from","replace","state","noThrow"]));Promise.resolve().then((function(){e(Object(s.a)(n,a),{replace:o,state:i})}))},e.prototype.render=function(){var t=this.props,e=(t.navigate,t.to),n=(t.from,t.replace,t.state,t.noThrow),r=p(t,["navigate","to","from","replace","state","noThrow"]);return n||L(Object(s.a)(e,r)),null},e}(o.a.Component),M=function(t){return o.a.createElement(y,null,(function(e){return o.a.createElement(U,f({},e,t))}))},K=function(t){var e=t.path,n=t.children;return o.a.createElement(_.Consumer,null,(function(t){var r=t.baseuri;return o.a.createElement(y,null,(function(t){var o=t.navigate,i=t.location,a=Object(s.d)(e,r),c=Object(s.b)(a,i.pathname);return n({navigate:o,location:i,match:c?f({},c.params,{uri:c.uri,path:e}):null})}))}))},D=function(t){return t.replace(/(^\/+|\/+$)/g,"")},I=function(t){return function(e){if(!e)return null;if(e.props.path||e.props.default||e.type===M||a()(!1),e.type!==M||e.props.from&&e.props.to||a()(!1),e.type!==M||Object(s.f)(e.props.from,e.props.to)||a()(!1),e.props.default)return{value:e,default:!0};var n=e.type===M?e.props.from:e.props.path,r="/"===n?t:D(t)+"/"+D(n);return{value:e,default:e.props.default,path:e.props.children?D(r)+"/*":r}}},W=function(t){return!t.defaultPrevented&&0===t.button&&!(t.metaKey||t.altKey||t.ctrlKey||t.shiftKey)}},Z2Ku:function(t,e,n){"use strict";var r=n("XKFU"),o=n("w2a5")(!0);r(r.P,"Array",{includes:function(t){return o(this,t,arguments.length>1?arguments[1]:void 0)}}),n("nGyu")("includes")},Z6vF:function(t,e,n){var r=n("ylqs")("meta"),o=n("0/R4"),i=n("aagx"),a=n("hswa").f,c=0,u=Object.isExtensible||function(){return!0},s=!n("eeVq")((function(){return u(Object.preventExtensions({}))})),l=function(t){a(t,r,{value:{i:"O"+ ++c,w:{}}})},f=t.exports={KEY:r,NEED:!1,fastKey:function(t,e){if(!o(t))return"symbol"==typeof t?t:("string"==typeof t?"S":"P")+t;if(!i(t,r)){if(!u(t))return"F";if(!e)return"E";l(t)}return t[r].i},getWeak:function(t,e){if(!i(t,r)){if(!u(t))return!0;if(!e)return!1;l(t)}return t[r].w},onFreeze:function(t){return s&&f.NEED&&u(t)&&!i(t,r)&&l(t),t}}},ZD67:function(t,e,n){"use strict";var r=n("3Lyj"),o=n("Z6vF").getWeak,i=n("y3w9"),a=n("0/R4"),c=n("9gX7"),u=n("SlkY"),s=n("CkkT"),l=n("aagx"),f=n("s5qY"),p=s(5),h=s(6),d=0,v=function(t){return t._l||(t._l=new g)},g=function(){this.a=[]},m=function(t,e){return p(t.a,(function(t){return t[0]===e}))};g.prototype={get:function(t){var e=m(this,t);if(e)return e[1]},has:function(t){return!!m(this,t)},set:function(t,e){var n=m(this,t);n?n[1]=e:this.a.push([t,e])},delete:function(t){var e=h(this.a,(function(e){return e[0]===t}));return~e&&this.a.splice(e,1),!!~e}},t.exports={getConstructor:function(t,e,n,i){var s=t((function(t,r){c(t,s,e,"_i"),t._t=e,t._i=d++,t._l=void 0,null!=r&&u(r,n,t[i],t)}));return r(s.prototype,{delete:function(t){if(!a(t))return!1;var n=o(t);return!0===n?v(f(this,e)).delete(t):n&&l(n,this._i)&&delete n[this._i]},has:function(t){if(!a(t))return!1;var n=o(t);return!0===n?v(f(this,e)).has(t):n&&l(n,this._i)}}),s},def:function(t,e,n){var r=o(i(e),!0);return!0===r?v(t).set(e,n):r[t._i]=n,t},ufstore:v}},ZfQF:function(t,e,n){"use strict";var r=n("TqRt");e.__esModule=!0,e.default=function(t,e){var n=(0,o.default)(t);if(void 0===e)return n?"pageYOffset"in n?n.pageYOffset:n.document.documentElement.scrollTop:t.scrollTop;n?n.scrollTo("pageXOffset"in n?n.pageXOffset:n.document.documentElement.scrollLeft,e):t.scrollTop=e};var o=r(n("8Y+z"));t.exports=e.default},a1Th:function(t,e,n){"use strict";n("OEbY");var r=n("y3w9"),o=n("C/va"),i=n("nh4g"),a=/./.toString,c=function(t){n("KroJ")(RegExp.prototype,"toString",t,!0)};n("eeVq")((function(){return"/a/b"!=a.call({source:"a",flags:"b"})}))?c((function(){var t=r(this);return"/".concat(t.source,"/","flags"in t?t.flags:!i&&t instanceof RegExp?o.call(t):void 0)})):"toString"!=a.name&&c((function(){return a.call(this)}))},aCFj:function(t,e,n){var r=n("Ymqv"),o=n("vhPU");t.exports=function(t){return r(o(t))}},aagx:function(t,e){var n={}.hasOwnProperty;t.exports=function(t,e){return n.call(t,e)}},apmT:function(t,e,n){var r=n("0/R4");t.exports=function(t,e){if(!r(t))return t;var n,o;if(e&&"function"==typeof(n=t.toString)&&!r(o=n.call(t)))return o;if("function"==typeof(n=t.valueOf)&&!r(o=n.call(t)))return o;if(!e&&"function"==typeof(n=t.toString)&&!r(o=n.call(t)))return o;throw TypeError("Can't convert object to primitive value")}},bWfx:function(t,e,n){"use strict";var r=n("XKFU"),o=n("CkkT")(1);r(r.P+r.F*!n("LyE8")([].map,!0),"Array",{map:function(t){return o(this,t,arguments[1])}})},c0Fl:function(t,e,n){"use strict";var r=n("TqRt");e.__esModule=!0,e.default=void 0;var o=function(){};r(n("Bp9Y")).default&&(o=document.addEventListener?function(t,e,n,r){return t.removeEventListener(e,n,r||!1)}:document.attachEvent?function(t,e,n){return t.detachEvent("on"+e,n)}:void 0);var i=o;e.default=i,t.exports=e.default},cSJ8:function(t,e,n){"use strict";e.a=function(t,e){return void 0===e&&(e=""),e?(e+="/",t.substr(0,e.length)===e?t.slice(e.length-1):t):t}},cu4x:function(t,e,n){"use strict";n("V+eJ"),e.__esModule=!0,e.parsePath=function(t){var e=t||"/",n="",r="",o=e.indexOf("#");-1!==o&&(r=e.substr(o),e=e.substr(0,o));var i=e.indexOf("?");-1!==i&&(n=e.substr(i),e=e.substr(0,i));return{pathname:e,search:"?"===n?"":n,hash:"#"===r?"":r}}},czNK:function(t,e,n){"use strict";var r=n("nh4g"),o=n("DVgA"),i=n("JiEa"),a=n("UqcF"),c=n("S/j/"),u=n("Ymqv"),s=Object.assign;t.exports=!s||n("eeVq")((function(){var t={},e={},n=Symbol(),r="abcdefghijklmnopqrst";return t[n]=7,r.split("").forEach((function(t){e[t]=t})),7!=s({},t)[n]||Object.keys(s({},e)).join("")!=r}))?function(t,e){for(var n=c(t),s=arguments.length,l=1,f=i.f,p=a.f;s>l;)for(var h,d=u(arguments[l++]),v=f?o(d).concat(f(d)):o(d),g=v.length,m=0;g>m;)h=v[m++],r&&!p.call(d,h)||(n[h]=d[h]);return n}:s},"d/Gc":function(t,e,n){var r=n("RYi7"),o=Math.max,i=Math.min;t.exports=function(t,e){return(t=r(t))<0?o(t+e,0):i(t,e)}},dRSK:function(t,e,n){"use strict";var r=n("XKFU"),o=n("CkkT")(5),i=!0;"find"in[]&&Array(1).find((function(){i=!1})),r(r.P+r.F*i,"Array",{find:function(t){return o(this,t,arguments.length>1?arguments[1]:void 0)}}),n("nGyu")("find")},"dZ+Y":function(t,e,n){"use strict";var r=n("XKFU"),o=n("CkkT")(3);r(r.P+r.F*!n("LyE8")([].some,!0),"Array",{some:function(t){return o(this,t,arguments[1])}})},dyZX:function(t,e){var n=t.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=n)},e7yV:function(t,e,n){var r=n("aCFj"),o=n("kJMx").f,i={}.toString,a="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];t.exports.f=function(t){return a&&"[object Window]"==i.call(t)?function(t){try{return o(t)}catch(e){return a.slice()}}(t):o(r(t))}},eM6i:function(t,e,n){var r=n("XKFU");r(r.S,"Date",{now:function(){return(new Date).getTime()}})},eeVq:function(t,e){t.exports=function(t){try{return!!t()}catch(e){return!0}}},elZq:function(t,e,n){"use strict";var r=n("dyZX"),o=n("hswa"),i=n("nh4g"),a=n("K0xU")("species");t.exports=function(t){var e=r[t];i&&e&&!e[a]&&o.f(e,a,{configurable:!0,get:function(){return this}})}},emEt:function(t,e,n){"use strict";n.r(e);n("HEwt"),n("a1Th"),n("rE2o"),n("ioFf"),n("T39b"),n("rGqo"),n("yt8O"),n("XfO3"),n("9AAn"),n("Z2Ku"),n("L9s1"),n("91GP"),n("VRzm"),n("Btvt"),n("rvZc"),n("RW0V");var r=function(t){if("undefined"==typeof document)return!1;var e=document.createElement("link");try{if(e.relList&&"function"==typeof e.relList.supports)return e.relList.supports(t)}catch(n){return!1}return!1}("prefetch")?function(t,e){return new Promise((function(n,r){if("undefined"!=typeof document){var o=document.createElement("link");o.setAttribute("rel","prefetch"),o.setAttribute("href",t),Object.keys(e).forEach((function(t){o.setAttribute(t,e[t])})),o.onload=n,o.onerror=r,(document.getElementsByTagName("head")[0]||document.getElementsByName("script")[0].parentNode).appendChild(o)}else r()}))}:function(t){return new Promise((function(e,n){var r=new XMLHttpRequest;r.open("GET",t,!0),r.onload=function(){200===r.status?e():n()},r.send(null)}))},o={},i=function(t,e){return new Promise((function(n){o[t]?n():r(t,e).then((function(){n(),o[t]=!0})).catch((function(){}))}))},a=n("5yr3"),c=(n("KKXr"),n("LYrO")),u=n("cSJ8"),s=function(t){return void 0===t?t:"/"===t?"/":"/"===t.charAt(t.length-1)?t.slice(0,-1):t},l=new Map,f=[],p=function(t){var e=decodeURIComponent(t);return Object(u.a)(e,"/openj9").split("#")[0].split("?")[0]},h=function(t){var e=v(t),n=f,r=Array.isArray(n),o=0;for(n=r?n:n[Symbol.iterator]();;){var i;if(r){if(o>=n.length)break;i=n[o++]}else{if((o=n.next()).done)break;i=o.value}var a=i,u=a.matchPath,l=a.path;if(Object(c.b)(u,e))return s(l)}return null},d=function(t){var e=p(t);if(l.has(e))return l.get(e);var n=h(e);return n||(n=v(t)),l.set(e,n),n},v=function(t){var e=p(t);return"/index.html"===e&&(e="/"),e=s(e)};function g(t){return function(t){if(Array.isArray(t)){for(var e=0,n=new Array(t.length);e<t.length;e++)n[e]=t[e];return n}}(t)||function(t){if(Symbol.iterator in Object(t)||"[object Arguments]"===Object.prototype.toString.call(t))return Array.from(t)}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance")}()}n.d(e,"BaseLoader",(function(){return S})),n.d(e,"ProdLoader",(function(){return P})),n.d(e,"setLoader",(function(){return k})),n.d(e,"publicLoader",(function(){return E}));var m,y=function(t){return t&&t.default||t},b=function(t){var e;return"/openj9/page-data/"+("/"===t?"index":e=(e="/"===(e=t)[0]?e.slice(1):e).endsWith("/")?e.slice(0,-1):e)+"/page-data.json"},w=function(t,e){return void 0===e&&(e="GET"),new Promise((function(n,r){var o=new XMLHttpRequest;o.open(e,t,!0),o.onreadystatechange=function(){4==o.readyState&&n(o)},o.send(null)}))},_=function(t){var e=t.pagePath,n=t.retries,r=void 0===n?0:n,o=b(e);return w(o).then((function(n){var o=n.status,i=n.responseText;if(200===o)try{var a=JSON.parse(i);if(void 0===a.path)throw new Error("not a valid pageData response");return Object.assign(t,{status:"success",payload:a})}catch(c){}return 404===o||200===o?"/404.html"===e?Object.assign(t,{status:"failure"}):_(Object.assign(t,{pagePath:"/404.html",notFound:!0})):500===o?Object.assign(t,{status:"error"}):r<3?_(Object.assign(t,{retries:r+1})):Object.assign(t,{status:"error"})}))},x=function(t,e){void 0===e&&(e=null);var n={componentChunkName:t.componentChunkName,path:t.path,webpackCompilationHash:t.webpackCompilationHash,matchPath:t.matchPath};return{component:e,json:t.result,page:n}},S=function(){function t(t,e){this.pageDb=new Map,this.inFlightDb=new Map,this.pageDataDb=new Map,this.prefetchTriggered=new Set,this.prefetchCompleted=new Set,this.loadComponent=t,f=e}var e=t.prototype;return e.setApiRunner=function(t){this.apiRunner=t,this.prefetchDisabled=t("disableCorePrefetching").some((function(t){return t}))},e.loadPageDataJson=function(t){var e=this,n=d(t);return this.pageDataDb.has(n)?Promise.resolve(this.pageDataDb.get(n)):_({pagePath:n}).then((function(t){return e.pageDataDb.set(n,t),t}))},e.findMatchPath=function(t){return h(t)},e.loadPage=function(t){var e=this,n=d(t);if(this.pageDb.has(n)){var r=this.pageDb.get(n);return Promise.resolve(r.payload)}if(this.inFlightDb.has(n))return this.inFlightDb.get(n);var o=Promise.all([this.loadAppData(),this.loadPageDataJson(n)]).then((function(t){var r=t[1];if("error"===r.status)return{status:"error"};if("failure"===r.status)throw new Error("404 page could not be found. Checkout https://www.gatsbyjs.org/docs/add-404-page/");var o=r.payload,i=o.componentChunkName;return e.loadComponent(i).then((function(i){var c,u={createdAt:new Date};return i?(u.status="success",!0===r.notFound&&(u.notFound=!0),o=Object.assign(o,{webpackCompilationHash:t[0]?t[0].webpackCompilationHash:""}),c=x(o,i),u.payload=c,a.a.emit("onPostLoadPageResources",{page:c,pageResources:c})):u.status="error",e.pageDb.set(n,u),c}))})).then((function(t){return e.inFlightDb.delete(n),t})).catch((function(t){throw e.inFlightDb.delete(n),t}));return this.inFlightDb.set(n,o),o},e.loadPageSync=function(t){var e=d(t);if(this.pageDb.has(e))return this.pageDb.get(e).payload},e.shouldPrefetch=function(t){return!!function(){if("connection"in navigator&&void 0!==navigator.connection){if((navigator.connection.effectiveType||"").includes("2g"))return!1;if(navigator.connection.saveData)return!1}return!0}()&&!this.pageDb.has(t)},e.prefetch=function(t){var e=this;if(!this.shouldPrefetch(t))return!1;if(this.prefetchTriggered.has(t)||(this.apiRunner("onPrefetchPathname",{pathname:t}),this.prefetchTriggered.add(t)),this.prefetchDisabled)return!1;var n=d(t);return this.doPrefetch(n).then((function(){e.prefetchCompleted.has(t)||(e.apiRunner("onPostPrefetchPathname",{pathname:t}),e.prefetchCompleted.add(t))})),!0},e.doPrefetch=function(t){throw new Error("doPrefetch not implemented")},e.hovering=function(t){this.loadPage(t)},e.getResourceURLsForPathname=function(t){var e=d(t),n=this.pageDataDb.get(e);if(n){var r=x(n.payload);return[].concat(g(O(r.page.componentChunkName)),[b(e)])}return null},e.isPageNotFound=function(t){var e=d(t),n=this.pageDb.get(e);return n&&!0===n.notFound},e.loadAppData=function(t){var e=this;return void 0===t&&(t=0),w("/openj9/page-data/app-data.json").then((function(n){var r,o=n.status,i=n.responseText;if(200!==o&&t<3)return e.loadAppData(t+1);if(200===o)try{var a=JSON.parse(i);if(void 0===a.webpackCompilationHash)throw new Error("not a valid app-data response");r=a}catch(c){}return r}))},t}(),O=function(t){return window.___chunkMapping[t].map((function(t){return"/openj9"+t}))},P=function(t){var e,n;function r(e,n){return t.call(this,(function(t){return e.components[t]().then(y)}),n)||this}return n=t,(e=r).prototype=Object.create(n.prototype),e.prototype.constructor=e,e.__proto__=n,r.prototype.doPrefetch=function(t){var e=this,n=b(t);return i(n,{crossOrigin:"anonymous",as:"fetch"}).then((function(){return e.loadPageDataJson(t)})).then((function(t){if("success"!==t.status)return Promise.resolve();var e=t.payload,n=e.componentChunkName,r=O(n);return Promise.all(r.map(i)).then((function(){return e}))}))},r}(S),k=function(t){m=t},E={getResourcesForPathname:function(t){return console.warn("Warning: getResourcesForPathname is deprecated. Use loadPage instead"),m.i.loadPage(t)},getResourcesForPathnameSync:function(t){return console.warn("Warning: getResourcesForPathnameSync is deprecated. Use loadPageSync instead"),m.i.loadPageSync(t)},enqueue:function(t){return m.prefetch(t)},getResourceURLsForPathname:function(t){return m.getResourceURLsForPathname(t)},loadPage:function(t){return m.loadPage(t)},loadPageSync:function(t){return m.loadPageSync(t)},prefetch:function(t){return m.prefetch(t)},isPageNotFound:function(t){return m.isPageNotFound(t)},hovering:function(t){return m.hovering(t)},loadAppData:function(){return m.loadAppData()}};e.default=E},eyMr:function(t,e,n){var r=n("2OiF"),o=n("S/j/"),i=n("Ymqv"),a=n("ne8i");t.exports=function(t,e,n,c,u){r(e);var s=o(t),l=i(s),f=a(s.length),p=u?f-1:0,h=u?-1:1;if(n<2)for(;;){if(p in l){c=l[p],p+=h;break}if(p+=h,u?p<0:f<=p)throw TypeError("Reduce of empty array with no initial value")}for(;u?p>=0:f>p;p+=h)p in l&&(c=e(c,l[p],p,s));return c}},"f3/d":function(t,e,n){var r=n("hswa").f,o=Function.prototype,i=/^\s*function ([^ (]*)/;"name"in o||n("nh4g")&&r(o,"name",{configurable:!0,get:function(){try{return(""+this).match(i)[1]}catch(t){return""}}})},fyDq:function(t,e,n){var r=n("hswa").f,o=n("aagx"),i=n("K0xU")("toStringTag");t.exports=function(t,e,n){t&&!o(t=n?t:t.prototype,i)&&r(t,i,{configurable:!0,value:e})}},g3g5:function(t,e){var n=t.exports={version:"2.6.11"};"number"==typeof __e&&(__e=n)},g6HL:function(t,e){t.exports=Object.is||function(t,e){return t===e?0!==t||1/t==1/e:t!=t&&e!=e}},gHnn:function(t,e,n){var r=n("dyZX"),o=n("GZEu").set,i=r.MutationObserver||r.WebKitMutationObserver,a=r.process,c=r.Promise,u="process"==n("LZWt")(a);t.exports=function(){var t,e,n,s=function(){var r,o;for(u&&(r=a.domain)&&r.exit();t;){o=t.fn,t=t.next;try{o()}catch(i){throw t?n():e=void 0,i}}e=void 0,r&&r.enter()};if(u)n=function(){a.nextTick(s)};else if(!i||r.navigator&&r.navigator.standalone)if(c&&c.resolve){var l=c.resolve(void 0);n=function(){l.then(s)}}else n=function(){o.call(r,s)};else{var f=!0,p=document.createTextNode("");new i(s).observe(p,{characterData:!0}),n=function(){p.data=f=!f}}return function(r){var o={fn:r,next:void 0};e&&(e.next=o),t||(t=o,n()),e=o}}},h7Nl:function(t,e,n){var r=Date.prototype,o=r.toString,i=r.getTime;new Date(NaN)+""!="Invalid Date"&&n("KroJ")(r,"toString",(function(){var t=i.call(this);return t==t?o.call(this):"Invalid Date"}))},hHhE:function(t,e,n){var r=n("XKFU");r(r.S,"Object",{create:n("Kuth")})},hPIQ:function(t,e){t.exports={}},hswa:function(t,e,n){var r=n("y3w9"),o=n("xpql"),i=n("apmT"),a=Object.defineProperty;e.f=n("nh4g")?Object.defineProperty:function(t,e,n){if(r(t),e=i(e,!0),r(n),o)try{return a(t,e,n)}catch(c){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");return"value"in n&&(t[e]=n.value),t}},i5dc:function(t,e,n){var r=n("0/R4"),o=n("y3w9"),i=function(t,e){if(o(t),!r(e)&&null!==e)throw TypeError(e+": can't set as prototype!")};t.exports={set:Object.setPrototypeOf||("__proto__"in{}?function(t,e,r){try{(r=n("m0Pp")(Function.call,n("EemH").f(Object.prototype,"__proto__").set,2))(t,[]),e=!(t instanceof Array)}catch(o){e=!0}return function(t,n){return i(t,n),e?t.__proto__=n:r(t,n),t}}({},!1):void 0),check:i}},ioFf:function(t,e,n){"use strict";var r=n("dyZX"),o=n("aagx"),i=n("nh4g"),a=n("XKFU"),c=n("KroJ"),u=n("Z6vF").KEY,s=n("eeVq"),l=n("VTer"),f=n("fyDq"),p=n("ylqs"),h=n("K0xU"),d=n("N8g3"),v=n("OnI7"),g=n("1MBn"),m=n("EWmC"),y=n("y3w9"),b=n("0/R4"),w=n("S/j/"),_=n("aCFj"),x=n("apmT"),S=n("RjD/"),O=n("Kuth"),P=n("e7yV"),k=n("EemH"),E=n("JiEa"),j=n("hswa"),R=n("DVgA"),C=k.f,A=j.f,T=P.f,F=r.Symbol,L=r.JSON,U=L&&L.stringify,M=h("_hidden"),K=h("toPrimitive"),D={}.propertyIsEnumerable,I=l("symbol-registry"),W=l("symbols"),q=l("op-symbols"),X=Object.prototype,N="function"==typeof F&&!!E.f,V=r.QObject,H=!V||!V.prototype||!V.prototype.findChild,G=i&&s((function(){return 7!=O(A({},"a",{get:function(){return A(this,"a",{value:7}).a}})).a}))?function(t,e,n){var r=C(X,e);r&&delete X[e],A(t,e,n),r&&t!==X&&A(X,e,r)}:A,Z=function(t){var e=W[t]=O(F.prototype);return e._k=t,e},z=N&&"symbol"==typeof F.iterator?function(t){return"symbol"==typeof t}:function(t){return t instanceof F},Y=function(t,e,n){return t===X&&Y(q,e,n),y(t),e=x(e,!0),y(n),o(W,e)?(n.enumerable?(o(t,M)&&t[M][e]&&(t[M][e]=!1),n=O(n,{enumerable:S(0,!1)})):(o(t,M)||A(t,M,S(1,{})),t[M][e]=!0),G(t,e,n)):A(t,e,n)},B=function(t,e){y(t);for(var n,r=g(e=_(e)),o=0,i=r.length;i>o;)Y(t,n=r[o++],e[n]);return t},J=function(t){var e=D.call(this,t=x(t,!0));return!(this===X&&o(W,t)&&!o(q,t))&&(!(e||!o(this,t)||!o(W,t)||o(this,M)&&this[M][t])||e)},Q=function(t,e){if(t=_(t),e=x(e,!0),t!==X||!o(W,e)||o(q,e)){var n=C(t,e);return!n||!o(W,e)||o(t,M)&&t[M][e]||(n.enumerable=!0),n}},$=function(t){for(var e,n=T(_(t)),r=[],i=0;n.length>i;)o(W,e=n[i++])||e==M||e==u||r.push(e);return r},tt=function(t){for(var e,n=t===X,r=T(n?q:_(t)),i=[],a=0;r.length>a;)!o(W,e=r[a++])||n&&!o(X,e)||i.push(W[e]);return i};N||(c((F=function(){if(this instanceof F)throw TypeError("Symbol is not a constructor!");var t=p(arguments.length>0?arguments[0]:void 0),e=function(n){this===X&&e.call(q,n),o(this,M)&&o(this[M],t)&&(this[M][t]=!1),G(this,t,S(1,n))};return i&&H&&G(X,t,{configurable:!0,set:e}),Z(t)}).prototype,"toString",(function(){return this._k})),k.f=Q,j.f=Y,n("kJMx").f=P.f=$,n("UqcF").f=J,E.f=tt,i&&!n("LQAc")&&c(X,"propertyIsEnumerable",J,!0),d.f=function(t){return Z(h(t))}),a(a.G+a.W+a.F*!N,{Symbol:F});for(var et="hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","),nt=0;et.length>nt;)h(et[nt++]);for(var rt=R(h.store),ot=0;rt.length>ot;)v(rt[ot++]);a(a.S+a.F*!N,"Symbol",{for:function(t){return o(I,t+="")?I[t]:I[t]=F(t)},keyFor:function(t){if(!z(t))throw TypeError(t+" is not a symbol!");for(var e in I)if(I[e]===t)return e},useSetter:function(){H=!0},useSimple:function(){H=!1}}),a(a.S+a.F*!N,"Object",{create:function(t,e){return void 0===e?O(t):B(O(t),e)},defineProperty:Y,defineProperties:B,getOwnPropertyDescriptor:Q,getOwnPropertyNames:$,getOwnPropertySymbols:tt});var it=s((function(){E.f(1)}));a(a.S+a.F*it,"Object",{getOwnPropertySymbols:function(t){return E.f(w(t))}}),L&&a(a.S+a.F*(!N||s((function(){var t=F();return"[null]"!=U([t])||"{}"!=U({a:t})||"{}"!=U(Object(t))}))),"JSON",{stringify:function(t){for(var e,n,r=[t],o=1;arguments.length>o;)r.push(arguments[o++]);if(n=e=r[1],(b(e)||void 0!==t)&&!z(t))return m(e)||(e=function(t,e){if("function"==typeof n&&(e=n.call(this,t,e)),!z(e))return e}),r[1]=e,U.apply(L,r)}}),F.prototype[K]||n("Mukb")(F.prototype,K,F.prototype.valueOf),f(F,"Symbol"),f(Math,"Math",!0),f(r.JSON,"JSON",!0)},kJMx:function(t,e,n){var r=n("zhAb"),o=n("4R4u").concat("length","prototype");e.f=Object.getOwnPropertyNames||function(t){return r(t,o)}},lSNA:function(t,e){t.exports=function(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}},lw3w:function(t,e,n){var r;t.exports=(r=n("rzlk"))&&r.default||r},m0Pp:function(t,e,n){var r=n("2OiF");t.exports=function(t,e,n){if(r(t),void 0===e)return t;switch(n){case 1:return function(n){return t.call(e,n)};case 2:return function(n,r){return t.call(e,n,r)};case 3:return function(n,r,o){return t.call(e,n,r,o)}}return function(){return t.apply(e,arguments)}}},nGyu:function(t,e,n){var r=n("K0xU")("unscopables"),o=Array.prototype;null==o[r]&&n("Mukb")(o,r,{}),t.exports=function(t){o[r][t]=!0}},nICZ:function(t,e){t.exports=function(t){try{return{e:!1,v:t()}}catch(e){return{e:!0,v:e}}}},ne8i:function(t,e,n){var r=n("RYi7"),o=Math.min;t.exports=function(t){return t>0?o(r(t),9007199254740991):0}},nh4g:function(t,e,n){t.exports=!n("eeVq")((function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a}))},npZl:function(t,e,n){"use strict";var r=n("TqRt");n("Wbzz"),r(n("9hXx"))},ol8x:function(t,e,n){var r=n("dyZX").navigator;t.exports=r&&r.userAgent||""},pCP8:function(t,e,n){e.components={"component---src-pages-about-js":function(){return Promise.all([n.e(0),n.e(2)]).then(n.bind(null,"3XHS"))},"component---src-pages-index-js":function(){return Promise.all([n.e(0),n.e(3)]).then(n.bind(null,"RXBc"))},"component---src-pages-news-js":function(){return Promise.all([n.e(0),n.e(4)]).then(n.bind(null,"FJi0"))},"component---src-pages-performance-js":function(){return Promise.all([n.e(0),n.e(5)]).then(n.bind(null,"oweT"))}}},pIFo:function(t,e,n){"use strict";var r=n("y3w9"),o=n("S/j/"),i=n("ne8i"),a=n("RYi7"),c=n("A5AN"),u=n("Xxuz"),s=Math.max,l=Math.min,f=Math.floor,p=/\$([$&`']|\d\d?|<[^>]*>)/g,h=/\$([$&`']|\d\d?)/g;n("IU+Z")("replace",2,(function(t,e,n,d){return[function(r,o){var i=t(this),a=null==r?void 0:r[e];return void 0!==a?a.call(r,i,o):n.call(String(i),r,o)},function(t,e){var o=d(n,t,this,e);if(o.done)return o.value;var f=r(t),p=String(this),h="function"==typeof e;h||(e=String(e));var g=f.global;if(g){var m=f.unicode;f.lastIndex=0}for(var y=[];;){var b=u(f,p);if(null===b)break;if(y.push(b),!g)break;""===String(b[0])&&(f.lastIndex=c(p,i(f.lastIndex),m))}for(var w,_="",x=0,S=0;S<y.length;S++){b=y[S];for(var O=String(b[0]),P=s(l(a(b.index),p.length),0),k=[],E=1;E<b.length;E++)k.push(void 0===(w=b[E])?w:String(w));var j=b.groups;if(h){var R=[O].concat(k,P,p);void 0!==j&&R.push(j);var C=String(e.apply(void 0,R))}else C=v(O,p,P,k,j,e);P>=x&&(_+=p.slice(x,P)+C,x=P+O.length)}return _+p.slice(x)}];function v(t,e,r,i,a,c){var u=r+t.length,s=i.length,l=h;return void 0!==a&&(a=o(a),l=p),n.call(c,l,(function(n,o){var c;switch(o.charAt(0)){case"$":return"$";case"&":return t;case"`":return e.slice(0,r);case"'":return e.slice(u);case"<":c=a[o.slice(1,-1)];break;default:var l=+o;if(0===l)return n;if(l>s){var p=f(l/10);return 0===p?n:p<=s?void 0===i[p-1]?o.charAt(1):i[p-1]+o.charAt(1):n}c=i[l-1]}return void 0===c?"":c}))}}))},pVnL:function(t,e){function n(){return t.exports=n=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(t[r]=n[r])}return t},n.apply(this,arguments)}t.exports=n},pWkz:function(t,e,n){"use strict";n("OG14"),e.__esModule=!0,e.onRouteUpdate=void 0;e.onRouteUpdate=function(t,e){var n=t.location;if(void 0===e&&(e={}),"function"!=typeof ga)return null;if(n&&void 0!==window.excludeGAPaths&&window.excludeGAPaths.some((function(t){return t.test(n.pathname)})))return null;var r=Math.max(32,e.pageTransitionDelay||0);return setTimeout((function(){var t=n?n.pathname+n.search+n.hash:void 0;window.ga("set","page",t),window.ga("send","pageview")}),r),null}},pbhE:function(t,e,n){"use strict";var r=n("2OiF");function o(t){var e,n;this.promise=new t((function(t,r){if(void 0!==e||void 0!==n)throw TypeError("Bad Promise constructor");e=t,n=r})),this.resolve=r(e),this.reject=r(n)}t.exports.f=function(t){return new o(t)}},"q5+k":function(t,e,n){"use strict";n("dZ+Y");var r=n("TqRt");e.__esModule=!0,e.default=void 0;var o,i=r(n("Bp9Y")),a="clearTimeout",c=function(t){var e=(new Date).getTime(),n=Math.max(0,16-(e-s)),r=setTimeout(t,n);return s=e,r},u=function(t,e){return t+(t?e[0].toUpperCase()+e.substr(1):e)+"AnimationFrame"};i.default&&["","webkit","moz","o","ms"].some((function(t){var e=u(t,"request");if(e in window)return a=u(t,"cancel"),c=function(t){return window[e](t)}}));var s=(new Date).getTime();(o=function(t){return c(t)}).cancel=function(t){window[a]&&"function"==typeof window[a]&&window[a](t)};var l=o;e.default=l,t.exports=e.default},qKvR:function(t,e,n){"use strict";n("LK8F"),n("SRfc"),n("f3/d"),n("V+eJ"),n("pIFo");var r=n("VbXa"),o=n.n(r),i=n("q1tI");n("Oyvg"),n("bWfx"),n("KKXr"),n("8+KV");var a=function(){function t(t){this.isSpeedy=void 0===t.speedy||t.speedy,this.tags=[],this.ctr=0,this.nonce=t.nonce,this.key=t.key,this.container=t.container,this.before=null}var e=t.prototype;return e.insert=function(t){if(this.ctr%(this.isSpeedy?65e3:1)==0){var e,n=function(t){var e=document.createElement("style");return e.setAttribute("data-emotion",t.key),void 0!==t.nonce&&e.setAttribute("nonce",t.nonce),e.appendChild(document.createTextNode("")),e}(this);e=0===this.tags.length?this.before:this.tags[this.tags.length-1].nextSibling,this.container.insertBefore(n,e),this.tags.push(n)}var r=this.tags[this.tags.length-1];if(this.isSpeedy){var o=function(t){if(t.sheet)return t.sheet;for(var e=0;e<document.styleSheets.length;e++)if(document.styleSheets[e].ownerNode===t)return document.styleSheets[e]}(r);try{var i=105===t.charCodeAt(1)&&64===t.charCodeAt(0);o.insertRule(t,i?0:o.cssRules.length)}catch(a){0}}else r.appendChild(document.createTextNode(t));this.ctr++},e.flush=function(){this.tags.forEach((function(t){return t.parentNode.removeChild(t)})),this.tags=[],this.ctr=0},t}();n("Tze0");var c=function(t){function e(t,e,r){var o=e.trim().split(d);e=o;var i=o.length,a=t.length;switch(a){case 0:case 1:var c=0;for(t=0===a?"":t[0]+" ";c<i;++c)e[c]=n(t,e[c],r).trim();break;default:var u=c=0;for(e=[];c<i;++c)for(var s=0;s<a;++s)e[u++]=n(t[s]+" ",o[c],r).trim()}return e}function n(t,e,n){var r=e.charCodeAt(0);switch(33>r&&(r=(e=e.trim()).charCodeAt(0)),r){case 38:return e.replace(v,"$1"+t.trim());case 58:return t.trim()+e.replace(v,"$1"+t.trim());default:if(0<1*n&&0<e.indexOf("\f"))return e.replace(v,(58===t.charCodeAt(0)?"":"$1")+t.trim())}return t+e}function r(t,e,n,i){var a=t+";",c=2*e+3*n+4*i;if(944===c){t=a.indexOf(":",9)+1;var u=a.substring(t,a.length-1).trim();return u=a.substring(0,t).trim()+u+";",1===R||2===R&&o(u,1)?"-webkit-"+u+u:u}if(0===R||2===R&&!o(a,1))return a;switch(c){case 1015:return 97===a.charCodeAt(10)?"-webkit-"+a+a:a;case 951:return 116===a.charCodeAt(3)?"-webkit-"+a+a:a;case 963:return 110===a.charCodeAt(5)?"-webkit-"+a+a:a;case 1009:if(100!==a.charCodeAt(4))break;case 969:case 942:return"-webkit-"+a+a;case 978:return"-webkit-"+a+"-moz-"+a+a;case 1019:case 983:return"-webkit-"+a+"-moz-"+a+"-ms-"+a+a;case 883:if(45===a.charCodeAt(8))return"-webkit-"+a+a;if(0<a.indexOf("image-set(",11))return a.replace(P,"$1-webkit-$2")+a;break;case 932:if(45===a.charCodeAt(4))switch(a.charCodeAt(5)){case 103:return"-webkit-box-"+a.replace("-grow","")+"-webkit-"+a+"-ms-"+a.replace("grow","positive")+a;case 115:return"-webkit-"+a+"-ms-"+a.replace("shrink","negative")+a;case 98:return"-webkit-"+a+"-ms-"+a.replace("basis","preferred-size")+a}return"-webkit-"+a+"-ms-"+a+a;case 964:return"-webkit-"+a+"-ms-flex-"+a+a;case 1023:if(99!==a.charCodeAt(8))break;return"-webkit-box-pack"+(u=a.substring(a.indexOf(":",15)).replace("flex-","").replace("space-between","justify"))+"-webkit-"+a+"-ms-flex-pack"+u+a;case 1005:return p.test(a)?a.replace(f,":-webkit-")+a.replace(f,":-moz-")+a:a;case 1e3:switch(e=(u=a.substring(13).trim()).indexOf("-")+1,u.charCodeAt(0)+u.charCodeAt(e)){case 226:u=a.replace(b,"tb");break;case 232:u=a.replace(b,"tb-rl");break;case 220:u=a.replace(b,"lr");break;default:return a}return"-webkit-"+a+"-ms-"+u+a;case 1017:if(-1===a.indexOf("sticky",9))break;case 975:switch(e=(a=t).length-10,c=(u=(33===a.charCodeAt(e)?a.substring(0,e):a).substring(t.indexOf(":",7)+1).trim()).charCodeAt(0)+(0|u.charCodeAt(7))){case 203:if(111>u.charCodeAt(8))break;case 115:a=a.replace(u,"-webkit-"+u)+";"+a;break;case 207:case 102:a=a.replace(u,"-webkit-"+(102<c?"inline-":"")+"box")+";"+a.replace(u,"-webkit-"+u)+";"+a.replace(u,"-ms-"+u+"box")+";"+a}return a+";";case 938:if(45===a.charCodeAt(5))switch(a.charCodeAt(6)){case 105:return u=a.replace("-items",""),"-webkit-"+a+"-webkit-box-"+u+"-ms-flex-"+u+a;case 115:return"-webkit-"+a+"-ms-flex-item-"+a.replace(x,"")+a;default:return"-webkit-"+a+"-ms-flex-line-pack"+a.replace("align-content","").replace(x,"")+a}break;case 973:case 989:if(45!==a.charCodeAt(3)||122===a.charCodeAt(4))break;case 931:case 953:if(!0===O.test(t))return 115===(u=t.substring(t.indexOf(":")+1)).charCodeAt(0)?r(t.replace("stretch","fill-available"),e,n,i).replace(":fill-available",":stretch"):a.replace(u,"-webkit-"+u)+a.replace(u,"-moz-"+u.replace("fill-",""))+a;break;case 962:if(a="-webkit-"+a+(102===a.charCodeAt(5)?"-ms-"+a:"")+a,211===n+i&&105===a.charCodeAt(13)&&0<a.indexOf("transform",10))return a.substring(0,a.indexOf(";",27)+1).replace(h,"$1-webkit-$2")+a}return a}function o(t,e){var n=t.indexOf(1===e?":":"{"),r=t.substring(0,3!==e?n:10);return n=t.substring(n+1,t.length-1),F(2!==e?r:r.replace(S,"$1"),n,e)}function i(t,e){var n=r(e,e.charCodeAt(0),e.charCodeAt(1),e.charCodeAt(2));return n!==e+";"?n.replace(_," or ($1)").substring(4):"("+e+")"}function a(t,e,n,r,o,i,a,c,s,l){for(var f,p=0,h=e;p<T;++p)switch(f=A[p].call(u,t,h,n,r,o,i,a,c,s,l)){case void 0:case!1:case!0:case null:break;default:h=f}if(h!==e)return h}function c(t){return void 0!==(t=t.prefix)&&(F=null,t?"function"!=typeof t?R=1:(R=2,F=t):R=0),c}function u(t,n){var c=t;if(33>c.charCodeAt(0)&&(c=c.trim()),c=[c],0<T){var u=a(-1,n,c,c,E,k,0,0,0,0);void 0!==u&&"string"==typeof u&&(n=u)}var f=function t(n,c,u,f,p){for(var h,d,v,b,_,x=0,S=0,O=0,P=0,A=0,F=0,U=v=h=0,M=0,K=0,D=0,I=0,W=u.length,q=W-1,X="",N="",V="",H="";M<W;){if(d=u.charCodeAt(M),M===q&&0!==S+P+O+x&&(0!==S&&(d=47===S?10:47),P=O=x=0,W++,q++),0===S+P+O+x){if(M===q&&(0<K&&(X=X.replace(l,"")),0<X.trim().length)){switch(d){case 32:case 9:case 59:case 13:case 10:break;default:X+=u.charAt(M)}d=59}switch(d){case 123:for(h=(X=X.trim()).charCodeAt(0),v=1,I=++M;M<W;){switch(d=u.charCodeAt(M)){case 123:v++;break;case 125:v--;break;case 47:switch(d=u.charCodeAt(M+1)){case 42:case 47:t:{for(U=M+1;U<q;++U)switch(u.charCodeAt(U)){case 47:if(42===d&&42===u.charCodeAt(U-1)&&M+2!==U){M=U+1;break t}break;case 10:if(47===d){M=U+1;break t}}M=U}}break;case 91:d++;case 40:d++;case 34:case 39:for(;M++<q&&u.charCodeAt(M)!==d;);}if(0===v)break;M++}switch(v=u.substring(I,M),0===h&&(h=(X=X.replace(s,"").trim()).charCodeAt(0)),h){case 64:switch(0<K&&(X=X.replace(l,"")),d=X.charCodeAt(1)){case 100:case 109:case 115:case 45:K=c;break;default:K=C}if(I=(v=t(c,K,v,d,p+1)).length,0<T&&(_=a(3,v,K=e(C,X,D),c,E,k,I,d,p,f),X=K.join(""),void 0!==_&&0===(I=(v=_.trim()).length)&&(d=0,v="")),0<I)switch(d){case 115:X=X.replace(w,i);case 100:case 109:case 45:v=X+"{"+v+"}";break;case 107:v=(X=X.replace(g,"$1 $2"))+"{"+v+"}",v=1===R||2===R&&o("@"+v,3)?"@-webkit-"+v+"@"+v:"@"+v;break;default:v=X+v,112===f&&(N+=v,v="")}else v="";break;default:v=t(c,e(c,X,D),v,f,p+1)}V+=v,v=D=K=U=h=0,X="",d=u.charCodeAt(++M);break;case 125:case 59:if(1<(I=(X=(0<K?X.replace(l,""):X).trim()).length))switch(0===U&&(h=X.charCodeAt(0),45===h||96<h&&123>h)&&(I=(X=X.replace(" ",":")).length),0<T&&void 0!==(_=a(1,X,c,n,E,k,N.length,f,p,f))&&0===(I=(X=_.trim()).length)&&(X="\0\0"),h=X.charCodeAt(0),d=X.charCodeAt(1),h){case 0:break;case 64:if(105===d||99===d){H+=X+u.charAt(M);break}default:58!==X.charCodeAt(I-1)&&(N+=r(X,h,d,X.charCodeAt(2)))}D=K=U=h=0,X="",d=u.charCodeAt(++M)}}switch(d){case 13:case 10:47===S?S=0:0===1+h&&107!==f&&0<X.length&&(K=1,X+="\0"),0<T*L&&a(0,X,c,n,E,k,N.length,f,p,f),k=1,E++;break;case 59:case 125:if(0===S+P+O+x){k++;break}default:switch(k++,b=u.charAt(M),d){case 9:case 32:if(0===P+x+S)switch(A){case 44:case 58:case 9:case 32:b="";break;default:32!==d&&(b=" ")}break;case 0:b="\\0";break;case 12:b="\\f";break;case 11:b="\\v";break;case 38:0===P+S+x&&(K=D=1,b="\f"+b);break;case 108:if(0===P+S+x+j&&0<U)switch(M-U){case 2:112===A&&58===u.charCodeAt(M-3)&&(j=A);case 8:111===F&&(j=F)}break;case 58:0===P+S+x&&(U=M);break;case 44:0===S+O+P+x&&(K=1,b+="\r");break;case 34:case 39:0===S&&(P=P===d?0:0===P?d:P);break;case 91:0===P+S+O&&x++;break;case 93:0===P+S+O&&x--;break;case 41:0===P+S+x&&O--;break;case 40:if(0===P+S+x){if(0===h)switch(2*A+3*F){case 533:break;default:h=1}O++}break;case 64:0===S+O+P+x+U+v&&(v=1);break;case 42:case 47:if(!(0<P+x+O))switch(S){case 0:switch(2*d+3*u.charCodeAt(M+1)){case 235:S=47;break;case 220:I=M,S=42}break;case 42:47===d&&42===A&&I+2!==M&&(33===u.charCodeAt(I+2)&&(N+=u.substring(I,M+1)),b="",S=0)}}0===S&&(X+=b)}F=A,A=d,M++}if(0<(I=N.length)){if(K=c,0<T&&(void 0!==(_=a(2,N,K,n,E,k,I,f,p,f))&&0===(N=_).length))return H+N+V;if(N=K.join(",")+"{"+N+"}",0!=R*j){switch(2!==R||o(N,2)||(j=0),j){case 111:N=N.replace(y,":-moz-$1")+N;break;case 112:N=N.replace(m,"::-webkit-input-$1")+N.replace(m,"::-moz-$1")+N.replace(m,":-ms-input-$1")+N}j=0}}return H+N+V}(C,c,n,0,0);return 0<T&&(void 0!==(u=a(-2,f,c,c,E,k,f.length,0,0,0))&&(f=u)),"",j=0,k=E=1,f}var s=/^\0+/g,l=/[\0\r\f]/g,f=/: */g,p=/zoo|gra/,h=/([,: ])(transform)/g,d=/,\r+?/g,v=/([\t\r\n ])*\f?&/g,g=/@(k\w+)\s*(\S*)\s*/,m=/::(place)/g,y=/:(read-only)/g,b=/[svh]\w+-[tblr]{2}/,w=/\(\s*(.*)\s*\)/g,_=/([\s\S]*?);/g,x=/-self|flex-/g,S=/[^]*?(:[rp][el]a[\w-]+)[^]*/,O=/stretch|:\s*\w+\-(?:conte|avail)/,P=/([^-])(image-set\()/,k=1,E=1,j=0,R=1,C=[],A=[],T=0,F=null,L=0;return u.use=function t(e){switch(e){case void 0:case null:T=A.length=0;break;default:if("function"==typeof e)A[T++]=e;else if("object"==typeof e)for(var n=0,r=e.length;n<r;++n)t(e[n]);else L=0|!!e}return t},u.set=c,void 0!==t&&c(t),u};n("rGqo"),n("yt8O"),n("Btvt"),n("XfO3"),n("EK0E");function u(t){t&&s.current.insert(t+"}")}var s={current:null},l=function(t,e,n,r,o,i,a,c,l,f){switch(t){case 1:switch(e.charCodeAt(0)){case 64:return s.current.insert(e+";"),"";case 108:if(98===e.charCodeAt(2))return""}break;case 2:if(0===c)return e+"/*|*/";break;case 3:switch(c){case 102:case 112:return s.current.insert(n[0]+e),"";default:return e+(0===f?"/*|*/":"")}case-2:e.split("/*|*/}").forEach(u)}},f=function(t){void 0===t&&(t={});var e,n=t.key||"css";void 0!==t.prefix&&(e={prefix:t.prefix});var r=new c(e);var o,i={};o=t.container||document.head;var u,f=document.querySelectorAll("style[data-emotion-"+n+"]");Array.prototype.forEach.call(f,(function(t){t.getAttribute("data-emotion-"+n).split(" ").forEach((function(t){i[t]=!0})),t.parentNode!==o&&o.appendChild(t)})),r.use(t.stylisPlugins)(l),u=function(t,e,n,o){var i=e.name;s.current=n,r(t,e.styles),o&&(p.inserted[i]=!0)};var p={key:n,sheet:new a({key:n,container:o,nonce:t.nonce,speedy:t.speedy}),nonce:t.nonce,inserted:i,registered:{},insert:u};return p},p=n("SIPS"),h=n("MiSq");n.d(e,"a",(function(){return x})),n.d(e,"b",(function(){return v})),n.d(e,"c",(function(){return _})),n.d(e,"d",(function(){return g}));var d=Object(i.createContext)("undefined"!=typeof HTMLElement?f():null),v=Object(i.createContext)({}),g=(d.Provider,function(t){return Object(i.forwardRef)((function(e,n){return Object(i.createElement)(d.Consumer,null,(function(r){return t(e,r,n)}))}))}),m="__EMOTION_TYPE_PLEASE_DO_NOT_USE__",y=Object.prototype.hasOwnProperty,b=function(t,e,n,r){var o=null===n?e.css:e.css(n);"string"==typeof o&&void 0!==t.registered[o]&&(o=t.registered[o]);var a=e[m],c=[o],u="";"string"==typeof e.className?u=Object(p.a)(t.registered,c,e.className):null!=e.className&&(u=e.className+" ");var s=Object(h.a)(c);Object(p.b)(t,s,"string"==typeof a);u+=t.key+"-"+s.name;var l={};for(var f in e)y.call(e,f)&&"css"!==f&&f!==m&&(l[f]=e[f]);return l.ref=r,l.className=u,Object(i.createElement)(a,l)},w=g((function(t,e,n){return"function"==typeof t.css?Object(i.createElement)(v.Consumer,null,(function(r){return b(e,t,r,n)})):b(e,t,null,n)}));var _=function(t,e){var n=arguments;if(null==e||!y.call(e,"css"))return i.createElement.apply(void 0,n);var r=n.length,o=new Array(r);o[0]=w;var a={};for(var c in e)y.call(e,c)&&(a[c]=e[c]);a[m]=t,o[1]=a;for(var u=2;u<r;u++)o[u]=n[u];return i.createElement.apply(null,o)},x=g((function(t,e){var n=t.styles;if("function"==typeof n)return Object(i.createElement)(v.Consumer,null,(function(t){var r=Object(h.a)([n(t)]);return Object(i.createElement)(S,{serialized:r,cache:e})}));var r=Object(h.a)([n]);return Object(i.createElement)(S,{serialized:r,cache:e})})),S=function(t){function e(e,n,r){return t.call(this,e,n,r)||this}o()(e,t);var n=e.prototype;return n.componentDidMount=function(){this.sheet=new a({key:this.props.cache.key+"-global",nonce:this.props.cache.sheet.nonce,container:this.props.cache.sheet.container});var t=document.querySelector("style[data-emotion-"+this.props.cache.key+'="'+this.props.serialized.name+'"]');null!==t&&this.sheet.tags.push(t),this.props.cache.sheet.tags.length&&(this.sheet.before=this.props.cache.sheet.tags[0]),this.insertStyles()},n.componentDidUpdate=function(t){t.serialized.name!==this.props.serialized.name&&this.insertStyles()},n.insertStyles=function(){if(void 0!==this.props.serialized.next&&Object(p.b)(this.props.cache,this.props.serialized.next,!0),this.sheet.tags.length){var t=this.sheet.tags[this.sheet.tags.length-1].nextElementSibling;this.sheet.before=t,this.sheet.flush()}this.props.cache.insert("",this.props.serialized,this.sheet,!1)},n.componentWillUnmount=function(){this.sheet.flush()},n.render=function(){return null},e}(i.Component),O=function t(e){for(var n=e.length,r=0,o="";r<n;r++){var i=e[r];if(null!=i){var a=void 0;switch(typeof i){case"boolean":break;case"object":if(Array.isArray(i))a=t(i);else for(var c in a="",i)i[c]&&c&&(a&&(a+=" "),a+=c);break;default:a=i}a&&(o&&(o+=" "),o+=a)}}return o};function P(t,e,n){var r=[],o=Object(p.a)(t,r,n);return r.length<2?n:o+e(r)}g((function(t,e){return Object(i.createElement)(v.Consumer,null,(function(n){var r=function(){for(var t=arguments.length,n=new Array(t),r=0;r<t;r++)n[r]=arguments[r];var o=Object(h.a)(n,e.registered);return Object(p.b)(e,o,!1),e.key+"-"+o.name},o={css:r,cx:function(){for(var t=arguments.length,n=new Array(t),o=0;o<t;o++)n[o]=arguments[o];return P(e.registered,r,O(n))},theme:n},i=t.children(o);return!0,i}))}))},qncB:function(t,e,n){var r=n("XKFU"),o=n("vhPU"),i=n("eeVq"),a=n("/e88"),c="["+a+"]",u=RegExp("^"+c+c+"*"),s=RegExp(c+c+"*$"),l=function(t,e,n){var o={},c=i((function(){return!!a[t]()||"​…"!="​…"[t]()})),u=o[t]=c?e(f):a[t];n&&(o[n]=u),r(r.P+r.F*c,"String",o)},f=l.trim=function(t,e){return t=String(o(t)),1&e&&(t=t.replace(u,"")),2&e&&(t=t.replace(s,"")),t};t.exports=l},quPj:function(t,e,n){var r=n("0/R4"),o=n("LZWt"),i=n("K0xU")("match");t.exports=function(t){var e;return r(t)&&(void 0!==(e=t[i])?!!e:"RegExp"==o(t))}},rE2o:function(t,e,n){n("OnI7")("asyncIterator")},rGqo:function(t,e,n){for(var r=n("yt8O"),o=n("DVgA"),i=n("KroJ"),a=n("dyZX"),c=n("Mukb"),u=n("hPIQ"),s=n("K0xU"),l=s("iterator"),f=s("toStringTag"),p=u.Array,h={CSSRuleList:!0,CSSStyleDeclaration:!1,CSSValueList:!1,ClientRectList:!1,DOMRectList:!1,DOMStringList:!1,DOMTokenList:!0,DataTransferItemList:!1,FileList:!1,HTMLAllCollection:!1,HTMLCollection:!1,HTMLFormElement:!1,HTMLSelectElement:!1,MediaList:!0,MimeTypeArray:!1,NamedNodeMap:!1,NodeList:!0,PaintRequestList:!1,Plugin:!1,PluginArray:!1,SVGLengthList:!1,SVGNumberList:!1,SVGPathSegList:!1,SVGPointList:!1,SVGStringList:!1,SVGTransformList:!1,SourceBufferList:!1,StyleSheetList:!0,TextTrackCueList:!1,TextTrackList:!1,TouchList:!1},d=o(h),v=0;v<d.length;v++){var g,m=d[v],y=h[m],b=a[m],w=b&&b.prototype;if(w&&(w[l]||c(w,l,p),w[f]||c(w,f,m),u[m]=p,y))for(g in r)w[g]||i(w,g,r[g],!0)}},raBC:function(t,e,n){"use strict";var r=n("TqRt");e.__esModule=!0,e.default=void 0;var o=function(){};r(n("Bp9Y")).default&&(o=document.addEventListener?function(t,e,n,r){return t.addEventListener(e,n,r||!1)}:document.attachEvent?function(t,e,n){return t.attachEvent("on"+e,(function(e){(e=e||window.event).target=e.target||e.srcElement,e.currentTarget=t,n.call(t,e)}))}:void 0);var i=o;e.default=i,t.exports=e.default},rvZc:function(t,e,n){"use strict";var r=n("XKFU"),o=n("ne8i"),i=n("0sh+"),a="".endsWith;r(r.P+r.F*n("UUeW")("endsWith"),"String",{endsWith:function(t){var e=i(this,t,"endsWith"),n=arguments.length>1?arguments[1]:void 0,r=o(e.length),c=void 0===n?r:Math.min(o(n),r),u=String(t);return a?a.call(e,u,c):e.slice(c-u.length,c)===u}})},rzlk:function(t,e,n){"use strict";n.r(e);n("91GP");var r=n("q1tI"),o=n.n(r),i=n("IOVJ");e.default=function(t){var e=t.location,n=t.pageResources;return n?o.a.createElement(i.a,Object.assign({location:e,pageResources:n},n.json)):null}},s5qY:function(t,e,n){var r=n("0/R4");t.exports=function(t,e){if(!r(t)||t._t!==e)throw TypeError("Incompatible receiver, "+e+" required!");return t}},sMXx:function(t,e,n){"use strict";var r=n("Ugos");n("XKFU")({target:"RegExp",proto:!0,forced:r!==/./.exec},{exec:r})},vKrd:function(t,e,n){var r=n("y3w9"),o=n("0/R4"),i=n("pbhE");t.exports=function(t,e){if(r(t),o(e)&&e.constructor===t)return e;var n=i.f(t);return(0,n.resolve)(e),n.promise}},vf9c:function(t){t.exports=JSON.parse("[]")},vhPU:function(t,e){t.exports=function(t){if(null==t)throw TypeError("Can't call method on  "+t);return t}},w2a5:function(t,e,n){var r=n("aCFj"),o=n("ne8i"),i=n("d/Gc");t.exports=function(t){return function(e,n,a){var c,u=r(e),s=o(u.length),l=i(a,s);if(t&&n!=n){for(;s>l;)if((c=u[l++])!=c)return!0}else for(;s>l;l++)if((t||l in u)&&u[l]===n)return t||l||0;return!t&&-1}}},wCsR:function(t,e,n){"use strict";var r=n("ZD67"),o=n("s5qY");n("4LiD")("WeakSet",(function(t){return function(){return t(this,arguments.length>0?arguments[0]:void 0)}}),{add:function(t){return r.def(o(this,"WeakSet"),t,!0)}},r,!1,!0)},wmvG:function(t,e,n){"use strict";var r=n("hswa").f,o=n("Kuth"),i=n("3Lyj"),a=n("m0Pp"),c=n("9gX7"),u=n("SlkY"),s=n("Afnz"),l=n("1TsA"),f=n("elZq"),p=n("nh4g"),h=n("Z6vF").fastKey,d=n("s5qY"),v=p?"_s":"size",g=function(t,e){var n,r=h(e);if("F"!==r)return t._i[r];for(n=t._f;n;n=n.n)if(n.k==e)return n};t.exports={getConstructor:function(t,e,n,s){var l=t((function(t,r){c(t,l,e,"_i"),t._t=e,t._i=o(null),t._f=void 0,t._l=void 0,t[v]=0,null!=r&&u(r,n,t[s],t)}));return i(l.prototype,{clear:function(){for(var t=d(this,e),n=t._i,r=t._f;r;r=r.n)r.r=!0,r.p&&(r.p=r.p.n=void 0),delete n[r.i];t._f=t._l=void 0,t[v]=0},delete:function(t){var n=d(this,e),r=g(n,t);if(r){var o=r.n,i=r.p;delete n._i[r.i],r.r=!0,i&&(i.n=o),o&&(o.p=i),n._f==r&&(n._f=o),n._l==r&&(n._l=i),n[v]--}return!!r},forEach:function(t){d(this,e);for(var n,r=a(t,arguments.length>1?arguments[1]:void 0,3);n=n?n.n:this._f;)for(r(n.v,n.k,this);n&&n.r;)n=n.p},has:function(t){return!!g(d(this,e),t)}}),p&&r(l.prototype,"size",{get:function(){return d(this,e)[v]}}),l},def:function(t,e,n){var r,o,i=g(t,e);return i?i.v=n:(t._l=i={i:o=h(e,!0),k:e,v:n,p:r=t._l,n:void 0,r:!1},t._f||(t._f=i),r&&(r.n=i),t[v]++,"F"!==o&&(t._i[o]=i)),t},getEntry:g,setStrong:function(t,e,n){s(t,e,(function(t,n){this._t=d(t,e),this._k=n,this._l=void 0}),(function(){for(var t=this._k,e=this._l;e&&e.r;)e=e.p;return this._t&&(this._l=e=e?e.n:this._t._f)?l(0,"keys"==t?e.k:"values"==t?e.v:[e.k,e.v]):(this._t=void 0,l(1))}),n?"entries":"values",!n,!0),f(e)}}},xpql:function(t,e,n){t.exports=!n("nh4g")&&!n("eeVq")((function(){return 7!=Object.defineProperty(n("Iw71")("div"),"a",{get:function(){return 7}}).a}))},xtsi:function(t,e,n){n("VRzm"),n("Btvt");var r=n("LeKB"),o=n("emEt").publicLoader,i=o.getResourcesForPathname,a=o.getResourcesForPathnameSync,c=o.getResourceURLsForPathname,u=o.loadPage,s=o.loadPageSync;e.apiRunner=function(t,e,n,o){void 0===e&&(e={});var l=r.map((function(n){if(n.plugin[t]){e.getResourcesForPathnameSync=a,e.getResourcesForPathname=i,e.getResourceURLsForPathname=c,e.loadPage=u,e.loadPageSync=s;var r=n.plugin[t](e,n.options);return r&&o&&(e=o({args:e,result:r,plugin:n})),r}}));return(l=l.filter((function(t){return void 0!==t}))).length>0?l:n?[n]:[]},e.apiRunnerAsync=function(t,e,n){return r.reduce((function(n,r){return r.plugin[t]?n.then((function(){return r.plugin[t](e,r.options)})):n}),Promise.resolve())}},y3w9:function(t,e,n){var r=n("0/R4");t.exports=function(t){if(!r(t))throw TypeError(t+" is not an object!");return t}},ylqs:function(t,e){var n=0,r=Math.random();t.exports=function(t){return"Symbol(".concat(void 0===t?"":t,")_",(++n+r).toString(36))}},yt8O:function(t,e,n){"use strict";var r=n("nGyu"),o=n("1TsA"),i=n("hPIQ"),a=n("aCFj");t.exports=n("Afnz")(Array,"Array",(function(t,e){this._t=a(t),this._i=0,this._k=e}),(function(){var t=this._t,e=this._k,n=this._i++;return!t||n>=t.length?(this._t=void 0,o(1)):o(0,"keys"==e?n:"values"==e?t[n]:[n,t[n]])}),"values"),i.Arguments=i.Array,r("keys"),r("values"),r("entries")},zRwo:function(t,e,n){var r=n("6FMO");t.exports=function(t,e){return new(r(t))(e)}},zhAb:function(t,e,n){var r=n("aagx"),o=n("aCFj"),i=n("w2a5")(!1),a=n("YTvA")("IE_PROTO");t.exports=function(t,e){var n,c=o(t),u=0,s=[];for(n in c)n!=a&&r(c,n)&&s.push(n);for(;e.length>u;)r(c,n=e[u++])&&(~i(s,n)||s.push(n));return s}}},[["UxWs",7,6,0]]]);
-//# sourceMappingURL=app-0b96427b0b370a80fa06.js.map
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[1],{"+ZDr":function(t,e,n){"use strict";n("2Spj"),n("0l/t"),n("8+KV"),n("pIFo");var r=n("TqRt");e.__esModule=!0,e.withPrefix=h,e.withAssetPrefix=function(t){return["/openj9"].concat([t.replace(/^\//,"")]).join("/")},e.navigateTo=e.replace=e.push=e.navigate=e.default=void 0;var o=r(n("8OQS")),i=r(n("pVnL")),a=r(n("PJYZ")),c=r(n("VbXa")),u=r(n("lSNA")),s=r(n("17x9")),l=r(n("q1tI")),f=n("YwZP"),p=n("cu4x");function h(t){return function(t){return t.replace(/\/+/g,"/")}(["/openj9",t].join("/"))}e.parsePath=p.parsePath;var d={activeClassName:s.default.string,activeStyle:s.default.object,partiallyActive:s.default.bool},v=function(t){function e(e){var n;n=t.call(this,e)||this,(0,u.default)((0,a.default)(n),"defaultGetProps",(function(t){var e=t.isPartiallyCurrent,r=t.isCurrent;return(n.props.partiallyActive?e:r)?{className:[n.props.className,n.props.activeClassName].filter(Boolean).join(" "),style:(0,i.default)({},n.props.style,{},n.props.activeStyle)}:null}));var r=!1;return"undefined"!=typeof window&&window.IntersectionObserver&&(r=!0),n.state={IOSupported:r},n.handleRef=n.handleRef.bind((0,a.default)(n)),n}(0,c.default)(e,t);var n=e.prototype;return n.componentDidUpdate=function(t,e){this.props.to===t.to||this.state.IOSupported||___loader.enqueue((0,p.parsePath)(this.props.to).pathname)},n.componentDidMount=function(){this.state.IOSupported||___loader.enqueue((0,p.parsePath)(this.props.to).pathname)},n.componentWillUnmount=function(){if(this.io){var t=this.io,e=t.instance,n=t.el;e.unobserve(n),e.disconnect()}},n.handleRef=function(t){var e,n,r,o=this;this.props.innerRef&&this.props.innerRef.hasOwnProperty("current")?this.props.innerRef.current=t:this.props.innerRef&&this.props.innerRef(t),this.state.IOSupported&&t&&(this.io=(e=t,n=function(){___loader.enqueue((0,p.parsePath)(o.props.to).pathname)},(r=new window.IntersectionObserver((function(t){t.forEach((function(t){e===t.target&&(t.isIntersecting||t.intersectionRatio>0)&&(r.unobserve(e),r.disconnect(),n())}))}))).observe(e),{instance:r,el:e}))},n.render=function(){var t=this,e=this.props,n=e.to,r=e.getProps,a=void 0===r?this.defaultGetProps:r,c=e.onClick,u=e.onMouseEnter,s=(e.activeClassName,e.activeStyle,e.innerRef,e.partiallyActive,e.state),d=e.replace,v=(0,o.default)(e,["to","getProps","onClick","onMouseEnter","activeClassName","activeStyle","innerRef","partiallyActive","state","replace"]);var g=h(n);return l.default.createElement(f.Link,(0,i.default)({to:g,state:s,getProps:a,innerRef:this.handleRef,onMouseEnter:function(t){u&&u(t),___loader.hovering((0,p.parsePath)(n).pathname)},onClick:function(e){return c&&c(e),0!==e.button||t.props.target||e.defaultPrevented||e.metaKey||e.altKey||e.ctrlKey||e.shiftKey||(e.preventDefault(),y(n,{state:s,replace:d})),!0}},v))},e}(l.default.Component);v.propTypes=(0,i.default)({},d,{onClick:s.default.func,to:s.default.string.isRequired,replace:s.default.bool});var g=function(t,e,n){return console.warn('The "'+t+'" method is now deprecated and will be removed in Gatsby v'+n+'. Please use "'+e+'" instead.')},m=l.default.forwardRef((function(t,e){return l.default.createElement(v,(0,i.default)({innerRef:e},t))}));e.default=m;var y=function(t,e){window.___navigate(h(t),e)};e.navigate=y;var b=function(t){g("push","navigate",3),window.___push(h(t))};e.push=b;e.replace=function(t){g("replace","navigate",3),window.___replace(h(t))};e.navigateTo=function(t){return g("navigateTo","navigate",3),b(t)}},"+i7v":function(t,e,n){"use strict";var r=n("TqRt");e.__esModule=!0,e.default=function(t,e){var n=(0,o.default)(t);if(void 0===e)return n?"pageXOffset"in n?n.pageXOffset:n.document.documentElement.scrollLeft:t.scrollLeft;n?n.scrollTo(e,"pageYOffset"in n?n.pageYOffset:n.document.documentElement.scrollTop):t.scrollLeft=e};var o=r(n("8Y+z"));t.exports=e.default},"+lvF":function(t,e,n){t.exports=n("VTer")("native-function-to-string",Function.toString)},"+rLv":function(t,e,n){var r=n("dyZX").document;t.exports=r&&r.documentElement},"/SS/":function(t,e,n){var r=n("XKFU");r(r.S,"Object",{setPrototypeOf:n("i5dc").set})},"/e88":function(t,e){t.exports="\t\n\v\f\r   ᠎              \u2028\u2029\ufeff"},"0/R4":function(t,e){t.exports=function(t){return"object"==typeof t?null!==t:"function"==typeof t}},"0l/t":function(t,e,n){"use strict";var r=n("XKFU"),o=n("CkkT")(2);r(r.P+r.F*!n("LyE8")([].filter,!0),"Array",{filter:function(t){return o(this,t,arguments[1])}})},"0sh+":function(t,e,n){var r=n("quPj"),o=n("vhPU");t.exports=function(t,e,n){if(r(e))throw TypeError("String#"+n+" doesn't accept regex!");return String(o(t))}},"16Al":function(t,e,n){"use strict";n("f3/d");var r=n("WbBG");function o(){}function i(){}i.resetWarningCache=o,t.exports=function(){function t(t,e,n,o,i,a){if(a!==r){var c=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");throw c.name="Invariant Violation",c}}function e(){return t}t.isRequired=t;var n={array:t,bool:t,func:t,number:t,object:t,string:t,symbol:t,any:t,arrayOf:e,element:t,elementType:t,instanceOf:e,node:t,objectOf:e,oneOf:e,oneOfType:e,shape:e,exact:e,checkPropTypes:i,resetWarningCache:o};return n.PropTypes=n,n}},"17x9":function(t,e,n){t.exports=n("16Al")()},"1MBn":function(t,e,n){var r=n("DVgA"),o=n("JiEa"),i=n("UqcF");t.exports=function(t){var e=r(t),n=o.f;if(n)for(var a,c=n(t),u=i.f,s=0;c.length>s;)u.call(t,a=c[s++])&&e.push(a);return e}},"1TsA":function(t,e){t.exports=function(t,e){return{value:e,done:!!t}}},"1fHE":function(t,e,n){"use strict";e.__esModule=!0,e.default=void 0;var r=function(){function t(){}var e=t.prototype;return e.read=function(t,e){var n=this.getStateKey(t,e);try{var r=window.sessionStorage.getItem(n);return JSON.parse(r)}catch(o){return window&&window.___GATSBY_REACT_ROUTER_SCROLL&&window.___GATSBY_REACT_ROUTER_SCROLL[n]?window.___GATSBY_REACT_ROUTER_SCROLL[n]:{}}},e.save=function(t,e,n){var r=this.getStateKey(t,e),o=JSON.stringify(n);try{window.sessionStorage.setItem(r,o)}catch(i){window&&window.___GATSBY_REACT_ROUTER_SCROLL?window.___GATSBY_REACT_ROUTER_SCROLL[r]=JSON.parse(o):(window.___GATSBY_REACT_ROUTER_SCROLL={},window.___GATSBY_REACT_ROUTER_SCROLL[r]=JSON.parse(o))}},e.getStateKey=function(t,e){var n="@@scroll|"+(t.key||t.pathname);return null==e?n:n+"|"+e},t}();e.default=r},"25dN":function(t,e,n){var r=n("XKFU");r(r.S,"Object",{is:n("g6HL")})},"2OiF":function(t,e){t.exports=function(t){if("function"!=typeof t)throw TypeError(t+" is not a function!");return t}},"2Spj":function(t,e,n){var r=n("XKFU");r(r.P,"Function",{bind:n("8MEG")})},"3Lyj":function(t,e,n){var r=n("KroJ");t.exports=function(t,e,n){for(var o in e)r(t,o,e[o],n);return t}},"444f":function(t,e,n){"use strict";var r=n("TqRt");e.__esModule=!0,e.default=void 0;var o=r(n("PJYZ")),i=r(n("VbXa")),a=r(n("lSNA")),c=r(n("q1tI")),u=r(n("LHMV")),s=r(n("17x9")),l=n("9Xx/"),f=r(n("1fHE")),p={shouldUpdateScroll:s.default.func,children:s.default.element.isRequired,location:s.default.object.isRequired},h={scrollBehavior:s.default.object.isRequired},d=function(t){function e(e,n){var r;return r=t.call(this,e,n)||this,(0,a.default)((0,o.default)(r),"shouldUpdateScroll",(function(t,e){var n=r.props.shouldUpdateScroll;return!n||n.call(r.scrollBehavior,t,e)})),(0,a.default)((0,o.default)(r),"registerElement",(function(t,e,n){r.scrollBehavior.registerElement(t,e,n,r.getRouterProps())})),(0,a.default)((0,o.default)(r),"unregisterElement",(function(t){r.scrollBehavior.unregisterElement(t)})),r.scrollBehavior=new u.default({addTransitionHook:l.globalHistory.listen,stateStorage:new f.default,getCurrentLocation:function(){return r.props.location},shouldUpdateScroll:r.shouldUpdateScroll}),r}(0,i.default)(e,t);var n=e.prototype;return n.getChildContext=function(){return{scrollBehavior:this}},n.componentDidUpdate=function(t){var e=this.props.location;if(e!==t.location){var n={location:t.location};window.__navigatingToLink?e.action="PUSH":e.action="POP",this.scrollBehavior.updateScroll(n,{history:l.globalHistory,location:e})}},n.componentWillUnmount=function(){this.scrollBehavior.stop()},n.getRouterProps=function(){return{location:this.props.location,history:l.globalHistory}},n.render=function(){return c.default.Children.only(this.props.children)},e}(c.default.Component);d.propTypes=p,d.childContextTypes=h;var v=d;e.default=v},"4LiD":function(t,e,n){"use strict";var r=n("dyZX"),o=n("XKFU"),i=n("KroJ"),a=n("3Lyj"),c=n("Z6vF"),u=n("SlkY"),s=n("9gX7"),l=n("0/R4"),f=n("eeVq"),p=n("XMVh"),h=n("fyDq"),d=n("Xbzi");t.exports=function(t,e,n,v,g,m){var y=r[t],b=y,w=g?"set":"add",_=b&&b.prototype,x={},S=function(t){var e=_[t];i(_,t,"delete"==t?function(t){return!(m&&!l(t))&&e.call(this,0===t?0:t)}:"has"==t?function(t){return!(m&&!l(t))&&e.call(this,0===t?0:t)}:"get"==t?function(t){return m&&!l(t)?void 0:e.call(this,0===t?0:t)}:"add"==t?function(t){return e.call(this,0===t?0:t),this}:function(t,n){return e.call(this,0===t?0:t,n),this})};if("function"==typeof b&&(m||_.forEach&&!f((function(){(new b).entries().next()})))){var O=new b,P=O[w](m?{}:-0,1)!=O,k=f((function(){O.has(1)})),E=p((function(t){new b(t)})),j=!m&&f((function(){for(var t=new b,e=5;e--;)t[w](e,e);return!t.has(-0)}));E||((b=e((function(e,n){s(e,b,t);var r=d(new y,e,b);return null!=n&&u(n,g,r[w],r),r}))).prototype=_,_.constructor=b),(k||j)&&(S("delete"),S("has"),g&&S("get")),(j||P)&&S(w),m&&_.clear&&delete _.clear}else b=v.getConstructor(e,t,g,w),a(b.prototype,n),c.NEED=!0;return h(b,t),x[t]=b,o(o.G+o.W+o.F*(b!=y),x),m||v.setStrong(b,t,g),b}},"4R4u":function(t,e){t.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},"4qRI":function(t,e,n){"use strict";e.a=function(t){var e={};return function(n){return void 0===e[n]&&(e[n]=t(n)),e[n]}}},"5yr3":function(t,e,n){"use strict";n("bWfx"),n("V+eJ"),n("hHhE");var r=function(t){return t=t||Object.create(null),{on:function(e,n){(t[e]||(t[e]=[])).push(n)},off:function(e,n){t[e]&&t[e].splice(t[e].indexOf(n)>>>0,1)},emit:function(e,n){(t[e]||[]).slice().map((function(t){t(n)})),(t["*"]||[]).slice().map((function(t){t(e,n)}))}}}();e.a=r},"69bn":function(t,e,n){var r=n("y3w9"),o=n("2OiF"),i=n("K0xU")("species");t.exports=function(t,e){var n,a=r(t).constructor;return void 0===a||null==(n=r(a)[i])?e:o(n)}},"6DQo":function(t,e,n){"use strict";n("pIFo");t.exports=function(){}},"6FMO":function(t,e,n){var r=n("0/R4"),o=n("EWmC"),i=n("K0xU")("species");t.exports=function(t){var e;return o(t)&&("function"!=typeof(e=t.constructor)||e!==Array&&!o(e.prototype)||(e=void 0),r(e)&&null===(e=e[i])&&(e=void 0)),void 0===e?Array:e}},"7hJ6":function(t,e,n){"use strict";var r=n("TqRt"),o=r(n("444f")),i=r(n("IVHb"));e.ScrollContainer=i.default,e.ScrollContext=o.default},"8+KV":function(t,e,n){"use strict";var r=n("XKFU"),o=n("CkkT")(0),i=n("LyE8")([].forEach,!0);r(r.P+r.F*!i,"Array",{forEach:function(t){return o(this,t,arguments[1])}})},"8MEG":function(t,e,n){"use strict";var r=n("2OiF"),o=n("0/R4"),i=n("MfQN"),a=[].slice,c={},u=function(t,e,n){if(!(e in c)){for(var r=[],o=0;o<e;o++)r[o]="a["+o+"]";c[e]=Function("F,a","return new F("+r.join(",")+")")}return c[e](t,n)};t.exports=Function.bind||function(t){var e=r(this),n=a.call(arguments,1),c=function(){var r=n.concat(a.call(arguments));return this instanceof c?u(e,r.length,r):i(e,r,t)};return o(e.prototype)&&(c.prototype=e.prototype),c}},"8OQS":function(t,e){t.exports=function(t,e){if(null==t)return{};var n,r,o={},i=Object.keys(t);for(r=0;r<i.length;r++)n=i[r],e.indexOf(n)>=0||(o[n]=t[n]);return o}},"8Y+z":function(t,e,n){"use strict";e.__esModule=!0,e.default=function(t){return t===t.window?t:9===t.nodeType&&(t.defaultView||t.parentWindow)},t.exports=e.default},"8a7r":function(t,e,n){"use strict";var r=n("hswa"),o=n("RjD/");t.exports=function(t,e,n){e in t?r.f(t,e,o(0,n)):t[e]=n}},"91GP":function(t,e,n){var r=n("XKFU");r(r.S+r.F,"Object",{assign:n("czNK")})},"94VI":function(t,e){e.polyfill=function(t){return t}},"9AAn":function(t,e,n){"use strict";var r=n("wmvG"),o=n("s5qY");t.exports=n("4LiD")("Map",(function(t){return function(){return t(this,arguments.length>0?arguments[0]:void 0)}}),{get:function(t){var e=r.getEntry(o(this,"Map"),t);return e&&e.v},set:function(t,e){return r.def(o(this,"Map"),0===t?0:t,e)}},r,!0)},"9VmF":function(t,e,n){"use strict";var r=n("XKFU"),o=n("ne8i"),i=n("0sh+"),a="".startsWith;r(r.P+r.F*n("UUeW")("startsWith"),"String",{startsWith:function(t){var e=i(this,t,"startsWith"),n=o(Math.min(arguments.length>1?arguments[1]:void 0,e.length)),r=String(t);return a?a.call(e,r,n):e.slice(n,n+r.length)===r}})},"9Xx/":function(t,e,n){"use strict";n.r(e),n.d(e,"globalHistory",(function(){return u})),n.d(e,"navigate",(function(){return s})),n.d(e,"createHistory",(function(){return i})),n.d(e,"createMemorySource",(function(){return a}));n("KKXr"),n("8+KV"),n("VRzm"),n("Btvt"),n("eM6i"),n("pIFo"),n("0l/t"),n("91GP");var r=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(t[r]=n[r])}return t},o=function(t){return r({},t.location,{state:t.history.state,key:t.history.state&&t.history.state.key||"initial"})},i=function(t,e){var n=[],i=o(t),a=!1,c=function(){};return{get location(){return i},get transitioning(){return a},_onTransitionComplete:function(){a=!1,c()},listen:function(e){n.push(e);var r=function(){i=o(t),e({location:i,action:"POP"})};return t.addEventListener("popstate",r),function(){t.removeEventListener("popstate",r),n=n.filter((function(t){return t!==e}))}},navigate:function(e){var u=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},s=u.state,l=u.replace,f=void 0!==l&&l;s=r({},s,{key:Date.now()+""});try{a||f?t.history.replaceState(s,null,e):t.history.pushState(s,null,e)}catch(h){t.location[f?"replace":"assign"](e)}i=o(t),a=!0;var p=new Promise((function(t){return c=t}));return n.forEach((function(t){return t({location:i,action:"PUSH"})})),p}}},a=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"/",e=0,n=[{pathname:t,search:""}],r=[];return{get location(){return n[e]},addEventListener:function(t,e){},removeEventListener:function(t,e){},history:{get entries(){return n},get index(){return e},get state(){return r[e]},pushState:function(t,o,i){var a=i.split("?"),c=a[0],u=a[1],s=void 0===u?"":u;e++,n.push({pathname:c,search:s}),r.push(t)},replaceState:function(t,o,i){var a=i.split("?"),c=a[0],u=a[1],s=void 0===u?"":u;n[e]={pathname:c,search:s},r[e]=t}}}},c=!("undefined"==typeof window||!window.document||!window.document.createElement),u=i(c?window:a()),s=u.navigate},"9gX7":function(t,e){t.exports=function(t,e,n,r){if(!(t instanceof e)||void 0!==r&&r in t)throw TypeError(n+": incorrect invocation!");return t}},"9hXx":function(t,e,n){"use strict";n("9VmF"),n("dRSK"),e.__esModule=!0,e.default=void 0;e.default=function(t,e){if(!Array.isArray(e))return"manifest.webmanifest";var n=e.find((function(e){return t.startsWith(e.start_url)}));return n?"manifest_"+n.lang+".webmanifest":"manifest.webmanifest"}},A5AN:function(t,e,n){"use strict";var r=n("AvRE")(!0);t.exports=function(t,e,n){return e+(n?r(t,e).length:1)}},Afnz:function(t,e,n){"use strict";var r=n("LQAc"),o=n("XKFU"),i=n("KroJ"),a=n("Mukb"),c=n("hPIQ"),u=n("QaDb"),s=n("fyDq"),l=n("OP3Y"),f=n("K0xU")("iterator"),p=!([].keys&&"next"in[].keys()),h=function(){return this};t.exports=function(t,e,n,d,v,g,m){u(n,e,d);var y,b,w,_=function(t){if(!p&&t in P)return P[t];switch(t){case"keys":case"values":return function(){return new n(this,t)}}return function(){return new n(this,t)}},x=e+" Iterator",S="values"==v,O=!1,P=t.prototype,k=P[f]||P["@@iterator"]||v&&P[v],E=k||_(v),j=v?S?_("entries"):E:void 0,R="Array"==e&&P.entries||k;if(R&&(w=l(R.call(new t)))!==Object.prototype&&w.next&&(s(w,x,!0),r||"function"==typeof w[f]||a(w,f,h)),S&&k&&"values"!==k.name&&(O=!0,E=function(){return k.call(this)}),r&&!m||!p&&!O&&P[f]||a(P,f,E),c[e]=E,c[x]=h,v)if(y={values:S?E:_("values"),keys:g?E:_("keys"),entries:j},m)for(b in y)b in P||i(P,b,y[b]);else o(o.P+o.F*(p||O),e,y);return y}},AvRE:function(t,e,n){var r=n("RYi7"),o=n("vhPU");t.exports=function(t){return function(e,n){var i,a,c=String(o(e)),u=r(n),s=c.length;return u<0||u>=s?t?"":void 0:(i=c.charCodeAt(u))<55296||i>56319||u+1===s||(a=c.charCodeAt(u+1))<56320||a>57343?t?c.charAt(u):i:t?c.slice(u,u+2):a-56320+(i-55296<<10)+65536}}},Bp9Y:function(t,e,n){"use strict";e.__esModule=!0,e.default=void 0;var r=!("undefined"==typeof window||!window.document||!window.document.createElement);e.default=r,t.exports=e.default},Btvt:function(t,e,n){"use strict";var r=n("I8a+"),o={};o[n("K0xU")("toStringTag")]="z",o+""!="[object z]"&&n("KroJ")(Object.prototype,"toString",(function(){return"[object "+r(this)+"]"}),!0)},"C/va":function(t,e,n){"use strict";var r=n("y3w9");t.exports=function(){var t=r(this),e="";return t.global&&(e+="g"),t.ignoreCase&&(e+="i"),t.multiline&&(e+="m"),t.unicode&&(e+="u"),t.sticky&&(e+="y"),e}},CkkT:function(t,e,n){var r=n("m0Pp"),o=n("Ymqv"),i=n("S/j/"),a=n("ne8i"),c=n("zRwo");t.exports=function(t,e){var n=1==t,u=2==t,s=3==t,l=4==t,f=6==t,p=5==t||f,h=e||c;return function(e,c,d){for(var v,g,m=i(e),y=o(m),b=r(c,d,3),w=a(y.length),_=0,x=n?h(e,w):u?h(e,0):void 0;w>_;_++)if((p||_ in y)&&(g=b(v=y[_],_,m),t))if(n)x[_]=g;else if(g)switch(t){case 3:return!0;case 5:return v;case 6:return _;case 2:x.push(v)}else if(l)return!1;return f?-1:s||l?l:x}}},DNiP:function(t,e,n){"use strict";var r=n("XKFU"),o=n("eyMr");r(r.P+r.F*!n("LyE8")([].reduce,!0),"Array",{reduce:function(t){return o(this,t,arguments.length,arguments[1],!1)}})},DVgA:function(t,e,n){var r=n("zhAb"),o=n("4R4u");t.exports=Object.keys||function(t){return r(t,o)}},EK0E:function(t,e,n){"use strict";var r,o=n("dyZX"),i=n("CkkT")(0),a=n("KroJ"),c=n("Z6vF"),u=n("czNK"),s=n("ZD67"),l=n("0/R4"),f=n("s5qY"),p=n("s5qY"),h=!o.ActiveXObject&&"ActiveXObject"in o,d=c.getWeak,v=Object.isExtensible,g=s.ufstore,m=function(t){return function(){return t(this,arguments.length>0?arguments[0]:void 0)}},y={get:function(t){if(l(t)){var e=d(t);return!0===e?g(f(this,"WeakMap")).get(t):e?e[this._i]:void 0}},set:function(t,e){return s.def(f(this,"WeakMap"),t,e)}},b=t.exports=n("4LiD")("WeakMap",m,y,s,!0,!0);p&&h&&(u((r=s.getConstructor(m,"WeakMap")).prototype,y),c.NEED=!0,i(["delete","has","get","set"],(function(t){var e=b.prototype,n=e[t];a(e,t,(function(e,o){if(l(e)&&!v(e)){this._f||(this._f=new r);var i=this._f[t](e,o);return"set"==t?this:i}return n.call(this,e,o)}))})))},EWmC:function(t,e,n){var r=n("LZWt");t.exports=Array.isArray||function(t){return"Array"==r(t)}},EemH:function(t,e,n){var r=n("UqcF"),o=n("RjD/"),i=n("aCFj"),a=n("apmT"),c=n("aagx"),u=n("xpql"),s=Object.getOwnPropertyDescriptor;e.f=n("nh4g")?s:function(t,e){if(t=i(t),e=a(e,!0),u)try{return s(t,e)}catch(n){}if(c(t,e))return o(!r.f.call(t,e),t[e])}},FJW5:function(t,e,n){var r=n("hswa"),o=n("y3w9"),i=n("DVgA");t.exports=n("nh4g")?Object.defineProperties:function(t,e){o(t);for(var n,a=i(e),c=a.length,u=0;c>u;)r.f(t,n=a[u++],e[n]);return t}},GZEu:function(t,e,n){var r,o,i,a=n("m0Pp"),c=n("MfQN"),u=n("+rLv"),s=n("Iw71"),l=n("dyZX"),f=l.process,p=l.setImmediate,h=l.clearImmediate,d=l.MessageChannel,v=l.Dispatch,g=0,m={},y=function(){var t=+this;if(m.hasOwnProperty(t)){var e=m[t];delete m[t],e()}},b=function(t){y.call(t.data)};p&&h||(p=function(t){for(var e=[],n=1;arguments.length>n;)e.push(arguments[n++]);return m[++g]=function(){c("function"==typeof t?t:Function(t),e)},r(g),g},h=function(t){delete m[t]},"process"==n("LZWt")(f)?r=function(t){f.nextTick(a(y,t,1))}:v&&v.now?r=function(t){v.now(a(y,t,1))}:d?(i=(o=new d).port2,o.port1.onmessage=b,r=a(i.postMessage,i,1)):l.addEventListener&&"function"==typeof postMessage&&!l.importScripts?(r=function(t){l.postMessage(t+"","*")},l.addEventListener("message",b,!1)):r="onreadystatechange"in s("script")?function(t){u.appendChild(s("script")).onreadystatechange=function(){u.removeChild(this),y.call(t)}}:function(t){setTimeout(a(y,t,1),0)}),t.exports={set:p,clear:h}},GddB:function(t,e,n){"use strict";n.r(e);n("FfUf")},H6hf:function(t,e,n){var r=n("y3w9");t.exports=function(t,e,n,o){try{return o?e(r(n)[0],n[1]):e(n)}catch(a){var i=t.return;throw void 0!==i&&r(i.call(t)),a}}},"HAE/":function(t,e,n){var r=n("XKFU");r(r.S+r.F*!n("nh4g"),"Object",{defineProperty:n("hswa").f})},HEwt:function(t,e,n){"use strict";var r=n("m0Pp"),o=n("XKFU"),i=n("S/j/"),a=n("H6hf"),c=n("M6Qj"),u=n("ne8i"),s=n("8a7r"),l=n("J+6e");o(o.S+o.F*!n("XMVh")((function(t){Array.from(t)})),"Array",{from:function(t){var e,n,o,f,p=i(t),h="function"==typeof this?this:Array,d=arguments.length,v=d>1?arguments[1]:void 0,g=void 0!==v,m=0,y=l(p);if(g&&(v=r(v,d>2?arguments[2]:void 0,2)),null==y||h==Array&&c(y))for(n=new h(e=u(p.length));e>m;m++)s(n,m,g?v(p[m],m):p[m]);else for(f=y.call(p),n=new h;!(o=f.next()).done;m++)s(n,m,g?a(f,v,[o.value,m],!0):o.value);return n.length=m,n}})},"I8a+":function(t,e,n){var r=n("LZWt"),o=n("K0xU")("toStringTag"),i="Arguments"==r(function(){return arguments}());t.exports=function(t){var e,n,a;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(n=function(t,e){try{return t[e]}catch(n){}}(e=Object(t),o))?n:i?r(e):"Object"==(a=r(e))&&"function"==typeof e.callee?"Arguments":a}},IOVJ:function(t,e,n){"use strict";n("91GP");var r=n("q1tI"),o=n.n(r),i=n("emEt"),a=n("xtsi");var c=function(t){var e,n;function o(){return t.apply(this,arguments)||this}return n=t,(e=o).prototype=Object.create(n.prototype),e.prototype.constructor=e,e.__proto__=n,o.prototype.render=function(){var t=Object.assign({},this.props,{pathContext:this.props.pageContext}),e=Object(a.apiRunner)("replaceComponentRenderer",{props:this.props,loader:i.publicLoader})[0]||Object(r.createElement)(this.props.pageResources.component,Object.assign({},t,{key:this.props.path||this.props.pageResources.page.path}));return Object(a.apiRunner)("wrapPageElement",{element:e,props:t},e,(function(e){return{element:e.result,props:t}})).pop()},o}(o.a.Component);e.a=c},"IU+Z":function(t,e,n){"use strict";n("sMXx");var r=n("KroJ"),o=n("Mukb"),i=n("eeVq"),a=n("vhPU"),c=n("K0xU"),u=n("Ugos"),s=c("species"),l=!i((function(){var t=/./;return t.exec=function(){var t=[];return t.groups={a:"7"},t},"7"!=="".replace(t,"$<a>")})),f=function(){var t=/(?:)/,e=t.exec;t.exec=function(){return e.apply(this,arguments)};var n="ab".split(t);return 2===n.length&&"a"===n[0]&&"b"===n[1]}();t.exports=function(t,e,n){var p=c(t),h=!i((function(){var e={};return e[p]=function(){return 7},7!=""[t](e)})),d=h?!i((function(){var e=!1,n=/a/;return n.exec=function(){return e=!0,null},"split"===t&&(n.constructor={},n.constructor[s]=function(){return n}),n[p](""),!e})):void 0;if(!h||!d||"replace"===t&&!l||"split"===t&&!f){var v=/./[p],g=n(a,p,""[t],(function(t,e,n,r,o){return e.exec===u?h&&!o?{done:!0,value:v.call(e,n,r)}:{done:!0,value:t.call(n,e,r)}:{done:!1}})),m=g[0],y=g[1];r(String.prototype,t,m),o(RegExp.prototype,p,2==e?function(t,e){return y.call(t,this,e)}:function(t){return y.call(t,this)})}}},IVHb:function(t,e,n){"use strict";var r=n("TqRt");e.__esModule=!0,e.default=void 0;var o=r(n("PJYZ")),i=r(n("VbXa")),a=r(n("lSNA")),c=r(n("q1tI")),u=r(n("i8i4")),s=r(n("6DQo")),l=r(n("17x9")),f={scrollKey:l.default.string.isRequired,shouldUpdateScroll:l.default.func,children:l.default.element.isRequired},p={scrollBehavior:l.default.object},h=function(t){function e(e,n){var r;return r=t.call(this,e,n)||this,(0,a.default)((0,o.default)(r),"shouldUpdateScroll",(function(t,e){var n=r.props.shouldUpdateScroll;return!n||n.call(r.context.scrollBehavior.scrollBehavior,t,e)})),r.scrollKey=e.scrollKey,r}(0,i.default)(e,t);var n=e.prototype;return n.componentDidMount=function(){this.context.scrollBehavior.registerElement(this.props.scrollKey,u.default.findDOMNode(this),this.shouldUpdateScroll)},n.componentDidUpdate=function(t){(0,s.default)(t.scrollKey===this.props.scrollKey,"<ScrollContainer> does not support changing scrollKey.")},n.componentWillUnmount=function(){this.context.scrollBehavior.unregisterElement(this.scrollKey)},n.render=function(){return this.props.children},e}(c.default.Component);h.propTypes=f,h.contextTypes=p;var d=h;e.default=d},Iw71:function(t,e,n){var r=n("0/R4"),o=n("dyZX").document,i=r(o)&&r(o.createElement);t.exports=function(t){return i?o.createElement(t):{}}},"J+6e":function(t,e,n){var r=n("I8a+"),o=n("K0xU")("iterator"),i=n("hPIQ");t.exports=n("g3g5").getIteratorMethod=function(t){if(null!=t)return t[o]||t["@@iterator"]||i[r(t)]}},JiEa:function(t,e){e.f=Object.getOwnPropertySymbols},K0xU:function(t,e,n){var r=n("VTer")("wks"),o=n("ylqs"),i=n("dyZX").Symbol,a="function"==typeof i;(t.exports=function(t){return r[t]||(r[t]=a&&i[t]||(a?i:o)("Symbol."+t))}).store=r},KKXr:function(t,e,n){"use strict";var r=n("quPj"),o=n("y3w9"),i=n("69bn"),a=n("A5AN"),c=n("ne8i"),u=n("Xxuz"),s=n("Ugos"),l=n("eeVq"),f=Math.min,p=[].push,h=!l((function(){RegExp(4294967295,"y")}));n("IU+Z")("split",2,(function(t,e,n,l){var d;return d="c"=="abbc".split(/(b)*/)[1]||4!="test".split(/(?:)/,-1).length||2!="ab".split(/(?:ab)*/).length||4!=".".split(/(.?)(.?)/).length||".".split(/()()/).length>1||"".split(/.?/).length?function(t,e){var o=String(this);if(void 0===t&&0===e)return[];if(!r(t))return n.call(o,t,e);for(var i,a,c,u=[],l=(t.ignoreCase?"i":"")+(t.multiline?"m":"")+(t.unicode?"u":"")+(t.sticky?"y":""),f=0,h=void 0===e?4294967295:e>>>0,d=new RegExp(t.source,l+"g");(i=s.call(d,o))&&!((a=d.lastIndex)>f&&(u.push(o.slice(f,i.index)),i.length>1&&i.index<o.length&&p.apply(u,i.slice(1)),c=i[0].length,f=a,u.length>=h));)d.lastIndex===i.index&&d.lastIndex++;return f===o.length?!c&&d.test("")||u.push(""):u.push(o.slice(f)),u.length>h?u.slice(0,h):u}:"0".split(void 0,0).length?function(t,e){return void 0===t&&0===e?[]:n.call(this,t,e)}:n,[function(n,r){var o=t(this),i=null==n?void 0:n[e];return void 0!==i?i.call(n,o,r):d.call(String(o),n,r)},function(t,e){var r=l(d,t,this,e,d!==n);if(r.done)return r.value;var s=o(t),p=String(this),v=i(s,RegExp),g=s.unicode,m=(s.ignoreCase?"i":"")+(s.multiline?"m":"")+(s.unicode?"u":"")+(h?"y":"g"),y=new v(h?s:"^(?:"+s.source+")",m),b=void 0===e?4294967295:e>>>0;if(0===b)return[];if(0===p.length)return null===u(y,p)?[p]:[];for(var w=0,_=0,x=[];_<p.length;){y.lastIndex=h?_:0;var S,O=u(y,h?p:p.slice(_));if(null===O||(S=f(c(y.lastIndex+(h?0:_)),p.length))===w)_=a(p,_,g);else{if(x.push(p.slice(w,_)),x.length===b)return x;for(var P=1;P<=O.length-1;P++)if(x.push(O[P]),x.length===b)return x;_=w=S}}return x.push(p.slice(w)),x}]}))},KroJ:function(t,e,n){var r=n("dyZX"),o=n("Mukb"),i=n("aagx"),a=n("ylqs")("src"),c=n("+lvF"),u=(""+c).split("toString");n("g3g5").inspectSource=function(t){return c.call(t)},(t.exports=function(t,e,n,c){var s="function"==typeof n;s&&(i(n,"name")||o(n,"name",e)),t[e]!==n&&(s&&(i(n,a)||o(n,a,t[e]?""+t[e]:u.join(String(e)))),t===r?t[e]=n:c?t[e]?t[e]=n:o(t,e,n):(delete t[e],o(t,e,n)))})(Function.prototype,"toString",(function(){return"function"==typeof this&&this[a]||c.call(this)}))},Kuth:function(t,e,n){var r=n("y3w9"),o=n("FJW5"),i=n("4R4u"),a=n("YTvA")("IE_PROTO"),c=function(){},u=function(){var t,e=n("Iw71")("iframe"),r=i.length;for(e.style.display="none",n("+rLv").appendChild(e),e.src="javascript:",(t=e.contentWindow.document).open(),t.write("<script>document.F=Object<\/script>"),t.close(),u=t.F;r--;)delete u.prototype[i[r]];return u()};t.exports=Object.create||function(t,e){var n;return null!==t?(c.prototype=r(t),n=new c,c.prototype=null,n[a]=t):n=u(),void 0===e?n:o(n,e)}},L9s1:function(t,e,n){"use strict";var r=n("XKFU"),o=n("0sh+");r(r.P+r.F*n("UUeW")("includes"),"String",{includes:function(t){return!!~o(this,t,"includes").indexOf(t,arguments.length>1?arguments[1]:void 0)}})},LHMV:function(t,e,n){"use strict";n("LK8F"),n("rGqo"),n("yt8O"),n("RW0V"),n("8+KV"),n("VRzm"),n("Btvt"),e.__esModule=!0,e.default=void 0;var r=s(n("c0Fl")),o=s(n("raBC")),i=s(n("+i7v")),a=s(n("ZfQF")),c=s(n("q5+k")),u=(s(n("QLaP")),n("OysZ"));function s(t){return t&&t.__esModule?t:{default:t}}var l=function(){function t(t){var e=this,n=t.addTransitionHook,r=t.stateStorage,s=t.getCurrentLocation,l=t.shouldUpdateScroll;if(this._restoreScrollRestoration=function(){if(e._oldScrollRestoration)try{window.history.scrollRestoration=e._oldScrollRestoration}catch(t){}},this._onWindowScroll=function(){if(!e._ignoreScrollEvents&&(e._saveWindowPositionHandle||(e._saveWindowPositionHandle=(0,c.default)(e._saveWindowPosition)),e._windowScrollTarget)){var t=e._windowScrollTarget,n=t[0],r=t[1],o=(0,i.default)(window),u=(0,a.default)(window);o===n&&u===r&&(e._windowScrollTarget=null,e._cancelCheckWindowScroll())}},this._saveWindowPosition=function(){e._saveWindowPositionHandle=null,e._savePosition(null,window)},this._checkWindowScrollPosition=function(){return e._checkWindowScrollHandle=null,e._windowScrollTarget?(e.scrollToTarget(window,e._windowScrollTarget),++e._numWindowScrollAttempts,e._numWindowScrollAttempts>=2?(e._windowScrollTarget=null,Promise.resolve()):new Promise((function(t){e._checkWindowScrollHandle=(0,c.default)((function(){return t(e._checkWindowScrollPosition())}))}))):Promise.resolve()},this._stateStorage=r,this._getCurrentLocation=s,this._shouldUpdateScroll=l,"scrollRestoration"in window.history&&!(0,u.isMobileSafari)()){this._oldScrollRestoration=window.history.scrollRestoration;try{window.history.scrollRestoration="manual",(0,o.default)(window,"beforeunload",this._restoreScrollRestoration)}catch(f){this._oldScrollRestoration=null}}else this._oldScrollRestoration=null;this._saveWindowPositionHandle=null,this._checkWindowScrollHandle=null,this._windowScrollTarget=null,this._numWindowScrollAttempts=0,this._ignoreScrollEvents=!1,this._scrollElements={},(0,o.default)(window,"scroll",this._onWindowScroll),this._removeTransitionHook=n((function(){c.default.cancel(e._saveWindowPositionHandle),e._saveWindowPositionHandle=null,Object.keys(e._scrollElements).forEach((function(t){var n=e._scrollElements[t];c.default.cancel(n.savePositionHandle),n.savePositionHandle=null,e._ignoreScrollEvents||e._saveElementPosition(t)}))}))}var e=t.prototype;return e.registerElement=function(t,e,n,r){var i=this;this._scrollElements[t]&&invariant(!1);var a=function(){i._saveElementPosition(t)},u={element:e,shouldUpdateScroll:n,savePositionHandle:null,onScroll:function(){u.savePositionHandle||i._ignoreScrollEvents||(u.savePositionHandle=(0,c.default)(a))}};u.savePositionHandle||this._ignoreScrollEvents||(u.savePositionHandle=(0,c.default)(a)),this._scrollElements[t]=u,(0,o.default)(e,"scroll",u.onScroll),this._updateElementScroll(t,null,r)},e.unregisterElement=function(t){this._scrollElements[t]||invariant(!1);var e=this._scrollElements[t],n=e.element,o=e.onScroll,i=e.savePositionHandle;(0,r.default)(n,"scroll",o),c.default.cancel(i),delete this._scrollElements[t]},e.updateScroll=function(t,e){var n=this;this._updateWindowScroll(t,e).then((function(){n._saveWindowPositionHandle||(n._saveWindowPositionHandle=(0,c.default)(n._saveWindowPosition))})),Object.keys(this._scrollElements).forEach((function(r){n._updateElementScroll(r,t,e)}))},e.stop=function(){this._restoreScrollRestoration(),(0,r.default)(window,"scroll",this._onWindowScroll),this._cancelCheckWindowScroll(),this._removeTransitionHook()},e.startIgnoringScrollEvents=function(){this._ignoreScrollEvents=!0},e.stopIgnoringScrollEvents=function(){this._ignoreScrollEvents=!1},e._cancelCheckWindowScroll=function(){c.default.cancel(this._checkWindowScrollHandle),this._checkWindowScrollHandle=null},e._saveElementPosition=function(t){var e=this._scrollElements[t];e.savePositionHandle=null,this._savePosition(t,e.element)},e._savePosition=function(t,e){this._stateStorage.save(this._getCurrentLocation(),t,[(0,i.default)(e),(0,a.default)(e)])},e._updateWindowScroll=function(t,e){return this._cancelCheckWindowScroll(),this._windowScrollTarget=this._getScrollTarget(null,this._shouldUpdateScroll,t,e),this._numWindowScrollAttempts=0,this._checkWindowScrollPosition()},e._updateElementScroll=function(t,e,n){var r=this._scrollElements[t],o=r.element,i=r.shouldUpdateScroll,a=this._getScrollTarget(t,i,e,n);a&&this.scrollToTarget(o,a)},e._getDefaultScrollTarget=function(t){var e=t.hash;return e&&"#"!==e?"#"===e.charAt(0)?e.slice(1):e:[0,0]},e._getScrollTarget=function(t,e,n,r){var o=!e||e.call(this,n,r);if(!o||Array.isArray(o)||"string"==typeof o)return o;var i=this._getCurrentLocation();return this._getSavedScrollTarget(t,i)||this._getDefaultScrollTarget(i)},e._getSavedScrollTarget=function(t,e){return"PUSH"===e.action?null:this._stateStorage.read(e,t)},e.scrollToTarget=function(t,e){if("string"==typeof e){var n=document.getElementById(e)||document.getElementsByName(e)[0];if(n)return void n.scrollIntoView();e=[0,0]}var r=e,o=r[0],c=r[1];(0,i.default)(t,o),(0,a.default)(t,c)},t}();e.default=l,t.exports=e.default},LK8F:function(t,e,n){var r=n("XKFU");r(r.S,"Array",{isArray:n("EWmC")})},LQAc:function(t,e){t.exports=!1},LYrO:function(t,e,n){"use strict";n.d(e,"e",(function(){return i})),n.d(e,"c",(function(){return a})),n.d(e,"b",(function(){return c})),n.d(e,"d",(function(){return u})),n.d(e,"a",(function(){return s})),n.d(e,"f",(function(){return l}));n("pIFo"),n("DNiP"),n("0l/t"),n("Vd3H"),n("V+eJ"),n("bWfx"),n("KKXr");var r=n("QLaP"),o=n.n(r),i=function(t,e){return t.substr(0,e.length)===e},a=function(t,e){for(var n=void 0,r=void 0,i=e.split("?")[0],a=v(i),c=""===a[0],u=d(t),s=0,l=u.length;s<l;s++){var p=!1,h=u[s].route;if(h.default)r={route:h,params:{},uri:e};else{for(var g=v(h.path),y={},b=Math.max(a.length,g.length),w=0;w<b;w++){var _=g[w],x=a[w];if("*"===_){y["*"]=a.slice(w).map(decodeURIComponent).join("/");break}if(void 0===x){p=!0;break}var S=f.exec(_);if(S&&!c){-1===m.indexOf(S[1])||o()(!1);var O=decodeURIComponent(x);y[S[1]]=O}else if(_!==x){p=!0;break}}if(!p){n={route:h,params:y,uri:"/"+a.slice(0,w).join("/")};break}}}return n||r||null},c=function(t,e){return a([{path:t}],e)},u=function(t,e){if(i(t,"/"))return t;var n=t.split("?"),r=n[0],o=n[1],a=e.split("?")[0],c=v(r),u=v(a);if(""===c[0])return g(a,o);if(!i(c[0],".")){var s=u.concat(c).join("/");return g(("/"===a?"":"/")+s,o)}for(var l=u.concat(c),f=[],p=0,h=l.length;p<h;p++){var d=l[p];".."===d?f.pop():"."!==d&&f.push(d)}return g("/"+f.join("/"),o)},s=function(t,e){return"/"+v(t).map((function(t){var n=f.exec(t);return n?e[n[1]]:t})).join("/")},l=function(t,e){var n=function(t){return p(t)};return v(t).filter(n).sort().join("/")===v(e).filter(n).sort().join("/")},f=/^:(.+)/,p=function(t){return f.test(t)},h=function(t,e){return{route:t,score:t.default?0:v(t.path).reduce((function(t,e){return t+=4,!function(t){return""===t}(e)?p(e)?t+=2:!function(t){return"*"===t}(e)?t+=3:t-=5:t+=1,t}),0),index:e}},d=function(t){return t.map(h).sort((function(t,e){return t.score<e.score?1:t.score>e.score?-1:t.index-e.index}))},v=function(t){return t.replace(/(^\/+|\/+$)/g,"").split("/")},g=function(t,e){return t+(e?"?"+e:"")},m=["uri","path"]},LZWt:function(t,e){var n={}.toString;t.exports=function(t){return n.call(t).slice(8,-1)}},LeKB:function(t,e,n){t.exports=[{plugin:n("npZl"),options:{plugins:[],icon:"static/openj9-logo.svg",cache_busting_mode:"query",include_favicon:!0,legacy:!0,theme_color_in_head:!0,cacheDigest:"521b6ab03638f6a52fffc5f7bf4c617e"}},{plugin:n("pWkz"),options:{plugins:[],trackingId:"UA-105616558-3",head:!1,anonymize:!0}},{plugin:n("GddB"),options:{plugins:[]}}]},LyE8:function(t,e,n){"use strict";var r=n("eeVq");t.exports=function(t,e){return!!t&&r((function(){e?t.call(null,(function(){}),1):t.call(null)}))}},M6Qj:function(t,e,n){var r=n("hPIQ"),o=n("K0xU")("iterator"),i=Array.prototype;t.exports=function(t){return void 0!==t&&(r.Array===t||i[o]===t)}},MMVs:function(t,e,n){n("V+eJ"),t.exports=function(){var t=!1;-1!==navigator.appVersion.indexOf("MSIE 10")&&(t=!0);var e,n=[],r="object"==typeof document&&document,o=t?r.documentElement.doScroll("left"):r.documentElement.doScroll,i=r&&(o?/^loaded|^c/:/^loaded|^i|^c/).test(r.readyState);return!i&&r&&r.addEventListener("DOMContentLoaded",e=function(){for(r.removeEventListener("DOMContentLoaded",e),i=1;e=n.shift();)e()}),function(t){i?setTimeout(t,0):n.push(t)}}()},MfQN:function(t,e){t.exports=function(t,e,n){var r=void 0===n;switch(e.length){case 0:return r?t():t.call(n);case 1:return r?t(e[0]):t.call(n,e[0]);case 2:return r?t(e[0],e[1]):t.call(n,e[0],e[1]);case 3:return r?t(e[0],e[1],e[2]):t.call(n,e[0],e[1],e[2]);case 4:return r?t(e[0],e[1],e[2],e[3]):t.call(n,e[0],e[1],e[2],e[3])}return t.apply(n,e)}},MgzW:function(t,e,n){"use strict";n("rGqo"),n("yt8O"),n("Btvt"),n("RW0V"),n("KKXr"),n("8+KV"),n("bWfx"),n("91GP"),n("ioFf");var r=Object.getOwnPropertySymbols,o=Object.prototype.hasOwnProperty,i=Object.prototype.propertyIsEnumerable;function a(t){if(null==t)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(t)}t.exports=function(){try{if(!Object.assign)return!1;var t=new String("abc");if(t[5]="de","5"===Object.getOwnPropertyNames(t)[0])return!1;for(var e={},n=0;n<10;n++)e["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(e).map((function(t){return e[t]})).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach((function(t){r[t]=t})),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},r)).join("")}catch(o){return!1}}()?Object.assign:function(t,e){for(var n,c,u=a(t),s=1;s<arguments.length;s++){for(var l in n=Object(arguments[s]))o.call(n,l)&&(u[l]=n[l]);if(r){c=r(n);for(var f=0;f<c.length;f++)i.call(n,c[f])&&(u[c[f]]=n[c[f]])}}return u}},MiSq:function(t,e,n){"use strict";n("LK8F"),n("bWfx"),n("f3/d"),n("a1Th"),n("h7Nl"),n("Btvt"),n("V+eJ"),n("pIFo");var r=function(t){for(var e,n=t.length,r=n^n,o=0;n>=4;)e=1540483477*(65535&(e=255&t.charCodeAt(o)|(255&t.charCodeAt(++o))<<8|(255&t.charCodeAt(++o))<<16|(255&t.charCodeAt(++o))<<24))+((1540483477*(e>>>16)&65535)<<16),r=1540483477*(65535&r)+((1540483477*(r>>>16)&65535)<<16)^(e=1540483477*(65535&(e^=e>>>24))+((1540483477*(e>>>16)&65535)<<16)),n-=4,++o;switch(n){case 3:r^=(255&t.charCodeAt(o+2))<<16;case 2:r^=(255&t.charCodeAt(o+1))<<8;case 1:r=1540483477*(65535&(r^=255&t.charCodeAt(o)))+((1540483477*(r>>>16)&65535)<<16)}return r=1540483477*(65535&(r^=r>>>13))+((1540483477*(r>>>16)&65535)<<16),((r^=r>>>15)>>>0).toString(36)},o={animationIterationCount:1,borderImageOutset:1,borderImageSlice:1,borderImageWidth:1,boxFlex:1,boxFlexGroup:1,boxOrdinalGroup:1,columnCount:1,columns:1,flex:1,flexGrow:1,flexPositive:1,flexShrink:1,flexNegative:1,flexOrder:1,gridRow:1,gridRowEnd:1,gridRowSpan:1,gridRowStart:1,gridColumn:1,gridColumnEnd:1,gridColumnSpan:1,gridColumnStart:1,msGridRow:1,msGridRowSpan:1,msGridColumn:1,msGridColumnSpan:1,fontWeight:1,lineHeight:1,opacity:1,order:1,orphans:1,tabSize:1,widows:1,zIndex:1,zoom:1,WebkitLineClamp:1,fillOpacity:1,floodOpacity:1,stopOpacity:1,strokeDasharray:1,strokeDashoffset:1,strokeMiterlimit:1,strokeOpacity:1,strokeWidth:1},i=n("4qRI");n.d(e,"a",(function(){return v}));var a=/[A-Z]|^ms/g,c=/_EMO_([^_]+?)_([^]*?)_EMO_/g,u=function(t){return 45===t.charCodeAt(1)},s=function(t){return null!=t&&"boolean"!=typeof t},l=Object(i.a)((function(t){return u(t)?t:t.replace(a,"-$&").toLowerCase()})),f=function(t,e){switch(t){case"animation":case"animationName":if("string"==typeof e)return e.replace(c,(function(t,e,n){return h={name:e,styles:n,next:h},e}))}return 1===o[t]||u(t)||"number"!=typeof e||0===e?e:e+"px"};function p(t,e,n,r){if(null==n)return"";if(void 0!==n.__emotion_styles)return n;switch(typeof n){case"boolean":return"";case"object":if(1===n.anim)return h={name:n.name,styles:n.styles,next:h},n.name;if(void 0!==n.styles){var o=n.next;if(void 0!==o)for(;void 0!==o;)h={name:o.name,styles:o.styles,next:h},o=o.next;return n.styles+";"}return function(t,e,n){var r="";if(Array.isArray(n))for(var o=0;o<n.length;o++)r+=p(t,e,n[o],!1);else for(var i in n){var a=n[i];if("object"!=typeof a)null!=e&&void 0!==e[a]?r+=i+"{"+e[a]+"}":s(a)&&(r+=l(i)+":"+f(i,a)+";");else if(!Array.isArray(a)||"string"!=typeof a[0]||null!=e&&void 0!==e[a[0]]){var c=p(t,e,a,!1);switch(i){case"animation":case"animationName":r+=l(i)+":"+c+";";break;default:r+=i+"{"+c+"}"}}else for(var u=0;u<a.length;u++)s(a[u])&&(r+=l(i)+":"+f(i,a[u])+";")}return r}(t,e,n);case"function":if(void 0!==t){var i=h,a=n(t);return h=i,p(t,e,a,r)}break;case"string":}if(null==e)return n;var c=e[n];return void 0===c||r?n:c}var h,d=/label:\s*([^\s;\n{]+)\s*;/g;var v=function(t,e,n){if(1===t.length&&"object"==typeof t[0]&&null!==t[0]&&void 0!==t[0].styles)return t[0];var o=!0,i="";h=void 0;var a=t[0];null==a||void 0===a.raw?(o=!1,i+=p(n,e,a,!1)):i+=a[0];for(var c=1;c<t.length;c++)i+=p(n,e,t[c],46===i.charCodeAt(i.length-1)),o&&(i+=a[c]);d.lastIndex=0;for(var u,s="";null!==(u=d.exec(i));)s+="-"+u[1];return{name:r(i)+s,styles:i,next:h}}},Mukb:function(t,e,n){var r=n("hswa"),o=n("RjD/");t.exports=n("nh4g")?function(t,e,n){return r.f(t,e,o(1,n))}:function(t,e,n){return t[e]=n,t}},N8g3:function(t,e,n){e.f=n("K0xU")},NSX3:function(t,e,n){"use strict";n.r(e);var r=n("xtsi");"https:"!==window.location.protocol&&"localhost"!==window.location.hostname?console.error("Service workers can only be used over HTTPS, or on localhost for development"):"serviceWorker"in navigator&&navigator.serviceWorker.register("/openj9/sw.js").then((function(t){t.addEventListener("updatefound",(function(){Object(r.apiRunner)("onServiceWorkerUpdateFound",{serviceWorker:t});var e=t.installing;console.log("installingWorker",e),e.addEventListener("statechange",(function(){switch(e.state){case"installed":navigator.serviceWorker.controller?(window.___swUpdated=!0,Object(r.apiRunner)("onServiceWorkerUpdateReady",{serviceWorker:t}),window.___failedResources&&(console.log("resources failed, SW updated - reloading"),window.location.reload())):(console.log("Content is now available offline!"),Object(r.apiRunner)("onServiceWorkerInstalled",{serviceWorker:t}));break;case"redundant":console.error("The installing service worker became redundant."),Object(r.apiRunner)("onServiceWorkerRedundant",{serviceWorker:t});break;case"activated":Object(r.apiRunner)("onServiceWorkerActive",{serviceWorker:t})}}))}))})).catch((function(t){console.error("Error during service worker registration:",t)}))},OEbY:function(t,e,n){n("nh4g")&&"g"!=/./g.flags&&n("hswa").f(RegExp.prototype,"flags",{configurable:!0,get:n("C/va")})},OG14:function(t,e,n){"use strict";var r=n("y3w9"),o=n("g6HL"),i=n("Xxuz");n("IU+Z")("search",1,(function(t,e,n,a){return[function(n){var r=t(this),o=null==n?void 0:n[e];return void 0!==o?o.call(n,r):new RegExp(n)[e](String(r))},function(t){var e=a(n,t,this);if(e.done)return e.value;var c=r(t),u=String(this),s=c.lastIndex;o(s,0)||(c.lastIndex=0);var l=i(c,u);return o(c.lastIndex,s)||(c.lastIndex=s),null===l?-1:l.index}]}))},OP3Y:function(t,e,n){var r=n("aagx"),o=n("S/j/"),i=n("YTvA")("IE_PROTO"),a=Object.prototype;t.exports=Object.getPrototypeOf||function(t){return t=o(t),r(t,i)?t[i]:"function"==typeof t.constructor&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?a:null}},OnI7:function(t,e,n){var r=n("dyZX"),o=n("g3g5"),i=n("LQAc"),a=n("N8g3"),c=n("hswa").f;t.exports=function(t){var e=o.Symbol||(o.Symbol=i?{}:r.Symbol||{});"_"==t.charAt(0)||t in e||c(e,t,{value:a.f(t)})}},OysZ:function(t,e,n){"use strict";e.__esModule=!0,e.isMobileSafari=function(){return/iPad|iPhone|iPod/.test(window.navigator.platform)&&/^((?!CriOS).)*Safari/.test(window.navigator.userAgent)}},Oyvg:function(t,e,n){var r=n("dyZX"),o=n("Xbzi"),i=n("hswa").f,a=n("kJMx").f,c=n("quPj"),u=n("C/va"),s=r.RegExp,l=s,f=s.prototype,p=/a/g,h=/a/g,d=new s(p)!==p;if(n("nh4g")&&(!d||n("eeVq")((function(){return h[n("K0xU")("match")]=!1,s(p)!=p||s(h)==h||"/a/i"!=s(p,"i")})))){s=function(t,e){var n=this instanceof s,r=c(t),i=void 0===e;return!n&&r&&t.constructor===s&&i?t:o(d?new l(r&&!i?t.source:t,e):l((r=t instanceof s)?t.source:t,r&&i?u.call(t):e),n?this:f,s)};for(var v=function(t){t in s||i(s,t,{configurable:!0,get:function(){return l[t]},set:function(e){l[t]=e}})},g=a(l),m=0;g.length>m;)v(g[m++]);f.constructor=s,s.prototype=f,n("KroJ")(r,"RegExp",s)}n("elZq")("RegExp")},PJYZ:function(t,e){t.exports=function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}},QLaP:function(t,e,n){"use strict";n("f3/d"),n("pIFo");t.exports=function(t,e,n,r,o,i,a,c){if(!t){var u;if(void 0===e)u=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var s=[n,r,o,i,a,c],l=0;(u=new Error(e.replace(/%s/g,(function(){return s[l++]})))).name="Invariant Violation"}throw u.framesToPop=1,u}}},QaDb:function(t,e,n){"use strict";var r=n("Kuth"),o=n("RjD/"),i=n("fyDq"),a={};n("Mukb")(a,n("K0xU")("iterator"),(function(){return this})),t.exports=function(t,e,n){t.prototype=r(a,{next:o(1,n)}),i(t,e+" Iterator")}},RW0V:function(t,e,n){var r=n("S/j/"),o=n("DVgA");n("Xtr8")("keys",(function(){return function(t){return o(r(t))}}))},RYi7:function(t,e){var n=Math.ceil,r=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?r:n)(t)}},"RjD/":function(t,e){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},"S/j/":function(t,e,n){var r=n("vhPU");t.exports=function(t){return Object(r(t))}},SIPS:function(t,e,n){"use strict";n.d(e,"a",(function(){return r})),n.d(e,"b",(function(){return o}));n("f3/d"),n("KKXr"),n("8+KV");function r(t,e,n){var r="";return n.split(" ").forEach((function(n){void 0!==t[n]?e.push(t[n]):r+=n+" "})),r}var o=function(t,e,n){var r=t.key+"-"+e.name;if(!1===n&&void 0===t.registered[r]&&(t.registered[r]=e.styles),void 0===t.inserted[e.name]){var o=e;do{t.insert("."+r,o,t.sheet,!0);o=o.next}while(void 0!==o)}}},SRfc:function(t,e,n){"use strict";var r=n("y3w9"),o=n("ne8i"),i=n("A5AN"),a=n("Xxuz");n("IU+Z")("match",1,(function(t,e,n,c){return[function(n){var r=t(this),o=null==n?void 0:n[e];return void 0!==o?o.call(n,r):new RegExp(n)[e](String(r))},function(t){var e=c(n,t,this);if(e.done)return e.value;var u=r(t),s=String(this);if(!u.global)return a(u,s);var l=u.unicode;u.lastIndex=0;for(var f,p=[],h=0;null!==(f=a(u,s));){var d=String(f[0]);p[h]=d,""===d&&(u.lastIndex=i(s,o(u.lastIndex),l)),h++}return 0===h?null:p}]}))},SlkY:function(t,e,n){var r=n("m0Pp"),o=n("H6hf"),i=n("M6Qj"),a=n("y3w9"),c=n("ne8i"),u=n("J+6e"),s={},l={};(e=t.exports=function(t,e,n,f,p){var h,d,v,g,m=p?function(){return t}:u(t),y=r(n,f,e?2:1),b=0;if("function"!=typeof m)throw TypeError(t+" is not iterable!");if(i(m)){for(h=c(t.length);h>b;b++)if((g=e?y(a(d=t[b])[0],d[1]):y(t[b]))===s||g===l)return g}else for(v=m.call(t);!(d=v.next()).done;)if((g=o(v,y,d.value,e))===s||g===l)return g}).BREAK=s,e.RETURN=l},T39b:function(t,e,n){"use strict";var r=n("wmvG"),o=n("s5qY");t.exports=n("4LiD")("Set",(function(t){return function(){return t(this,arguments.length>0?arguments[0]:void 0)}}),{add:function(t){return r.def(o(this,"Set"),t=0===t?0:t,t)}},r)},TqRt:function(t,e){t.exports=function(t){return t&&t.__esModule?t:{default:t}}},Tze0:function(t,e,n){"use strict";n("qncB")("trim",(function(t){return function(){return t(this,3)}}))},UUeW:function(t,e,n){var r=n("K0xU")("match");t.exports=function(t){var e=/./;try{"/./"[t](e)}catch(n){try{return e[r]=!1,!"/./"[t](e)}catch(o){}}return!0}},Ugos:function(t,e,n){"use strict";var r,o,i=n("C/va"),a=RegExp.prototype.exec,c=String.prototype.replace,u=a,s=(r=/a/,o=/b*/g,a.call(r,"a"),a.call(o,"a"),0!==r.lastIndex||0!==o.lastIndex),l=void 0!==/()??/.exec("")[1];(s||l)&&(u=function(t){var e,n,r,o,u=this;return l&&(n=new RegExp("^"+u.source+"$(?!\\s)",i.call(u))),s&&(e=u.lastIndex),r=a.call(u,t),s&&r&&(u.lastIndex=u.global?r.index+r[0].length:e),l&&r&&r.length>1&&c.call(r[0],n,(function(){for(o=1;o<arguments.length-2;o++)void 0===arguments[o]&&(r[o]=void 0)})),r}),t.exports=u},UqcF:function(t,e){e.f={}.propertyIsEnumerable},UxWs:function(t,e,n){"use strict";n.r(e);n("91GP"),n("OG14"),n("SRfc");var r=n("xtsi"),o=n("q1tI"),i=n.n(o),a=n("i8i4"),c=n.n(a),u=n("YwZP"),s=n("7hJ6"),l=n("MMVs"),f=n.n(l),p=(n("pIFo"),n("emEt")),h=n("YLt+"),d=n("5yr3"),v=n("+ZDr"),g=n("qKvR");function m(t,e){t.prototype=Object.create(e.prototype),t.prototype.constructor=t,t.__proto__=e}var y=h.reduce((function(t,e){return t[e.fromPath]=e,t}),{});function b(t){var e=y[t];return null!=e&&(window.___replace(e.toPath),!0)}var w=function(t,e){b(t.pathname)||Object(r.apiRunner)("onPreRouteUpdate",{location:t,prevLocation:e})},_=function(t,e){b(t.pathname)||(Object(r.apiRunner)("onRouteUpdate",{location:t,prevLocation:e}),window.__navigatingToLink=!1)},x=function(t,e){void 0===e&&(e={}),e.replace||(window.__navigatingToLink=!0);var n=Object(v.parsePath)(t).pathname,o=y[n];if(o&&(t=o.toPath,n=Object(v.parsePath)(t).pathname),window.___swUpdated)window.location=n;else{var i=setTimeout((function(){d.a.emit("onDelayedLoadPageResources",{pathname:n}),Object(r.apiRunner)("onRouteUpdateDelayed",{location:window.location})}),1e3);p.default.loadPage(n).then((function(r){r&&"error"!==r.status||(window.history.replaceState({},"",location.href),window.location=n),r&&r.page.webpackCompilationHash!==window.___webpackCompilationHash&&("serviceWorker"in navigator&&null!==navigator.serviceWorker.controller&&"activated"===navigator.serviceWorker.controller.state&&navigator.serviceWorker.controller.postMessage({gatsbyApi:"clearPathResources"}),console.log("Site has changed on server. Reloading browser"),window.location=n),Object(u.navigate)(t,e),clearTimeout(i)}))}};function S(t,e){var n=this,o=e.location,i=o.pathname,a=o.hash,c=Object(r.apiRunner)("shouldUpdateScroll",{prevRouterProps:t,pathname:i,routerProps:{location:o},getSavedScrollPosition:function(t){return n._stateStorage.read(t)}});if(c.length>0)return c[c.length-1];if(t&&t.location.pathname===i)return a?decodeURI(a.slice(1)):[0,0];return!0}var O=function(t){function e(e){var n;return(n=t.call(this,e)||this).announcementRef=i.a.createRef(),n}m(e,t);var n=e.prototype;return n.componentDidUpdate=function(t,e){var n=this;requestAnimationFrame((function(){var t="new page at "+n.props.location.pathname;document.title&&(t=document.title);var e=document.getElementById("gatsby-focus-wrapper").getElementsByTagName("h1");e&&e.length&&(t=e[0].textContent);var r="Navigated to "+t;n.announcementRef.current.innerText!==r&&(n.announcementRef.current.innerText=r)}))},n.render=function(){return Object(g.c)("div",{id:"gatsby-announcer",style:{position:"absolute",top:0,width:1,height:1,padding:0,overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",border:0},role:"alert","aria-live":"assertive","aria-atomic":"true",ref:this.announcementRef})},e}(i.a.Component),P=function(t){function e(e){var n;return n=t.call(this,e)||this,w(e.location,null),n}m(e,t);var n=e.prototype;return n.componentDidMount=function(){_(this.props.location,null)},n.componentDidUpdate=function(t,e,n){n&&_(this.props.location,t.location)},n.getSnapshotBeforeUpdate=function(t){return this.props.location.pathname!==t.location.pathname&&(w(this.props.location,t.location),!0)},n.render=function(){return Object(g.c)(i.a.Fragment,null,this.props.children,Object(g.c)(O,{location:location}))},e}(i.a.Component),k=n("IOVJ"),E=n("pCP8"),j=n.n(E);function R(t,e){for(var n in t)if(!(n in e))return!0;for(var r in e)if(t[r]!==e[r])return!0;return!1}var C=function(t){var e,n;function r(e){var n;n=t.call(this)||this;var r=e.location,o=e.pageResources;return n.state={location:Object.assign({},r),pageResources:o||p.default.loadPageSync(r.pathname)},n}n=t,(e=r).prototype=Object.create(n.prototype),e.prototype.constructor=e,e.__proto__=n,r.getDerivedStateFromProps=function(t,e){var n=t.location;return e.location.href!==n.href?{pageResources:p.default.loadPageSync(n.pathname),location:Object.assign({},n)}:{location:Object.assign({},n)}};var o=r.prototype;return o.loadResources=function(t){var e=this;p.default.loadPage(t).then((function(n){n&&"error"!==n.status?e.setState({location:Object.assign({},window.location),pageResources:n}):(window.history.replaceState({},"",location.href),window.location=t)}))},o.shouldComponentUpdate=function(t,e){return e.pageResources?this.state.pageResources!==e.pageResources||(this.state.pageResources.component!==e.pageResources.component||(this.state.pageResources.json!==e.pageResources.json||(!(this.state.location.key===e.location.key||!e.pageResources.page||!e.pageResources.page.matchPath&&!e.pageResources.page.path)||function(t,e,n){return R(t.props,e)||R(t.state,n)}(this,t,e)))):(this.loadResources(t.location.pathname),!1)},o.render=function(){return this.props.children(this.state)},r}(i.a.Component),A=n("cSJ8"),T=n("vf9c");function F(){return(F=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(t[r]=n[r])}return t}).apply(this,arguments)}var L=new p.ProdLoader(j.a,T);Object(p.setLoader)(L),L.setApiRunner(r.apiRunner),window.asyncRequires=j.a,window.___emitter=d.a,window.___loader=p.publicLoader,window.__navigatingToLink=!1,window.___push=function(t){return x(t,{replace:!1})},window.___replace=function(t){return x(t,{replace:!0})},window.___navigate=function(t,e){return x(t,e)},b(window.location.pathname),Object(r.apiRunnerAsync)("onClientEntry").then((function(){Object(r.apiRunner)("registerServiceWorker").length>0&&n("NSX3");var t=function(t){return Object(g.c)(u.BaseContext.Provider,{value:{baseuri:"/",basepath:"/"}},Object(g.c)(k.a,t))},e=function(e){var n,r;function o(){return e.apply(this,arguments)||this}return r=e,(n=o).prototype=Object.create(r.prototype),n.prototype.constructor=n,n.__proto__=r,o.prototype.render=function(){var e=this,n=this.props.location;return Object(g.c)(C,{location:n},(function(n){var r=n.pageResources,o=n.location;return Object(g.c)(P,{location:o},Object(g.c)(s.ScrollContext,{location:o,shouldUpdateScroll:S},Object(g.c)(u.Router,{basepath:"/openj9",location:o,id:"gatsby-focus-wrapper"},Object(g.c)(t,F({path:"/404.html"===r.page.path?Object(A.a)(o.pathname,"/openj9"):encodeURI(r.page.matchPath||r.page.path)},e.props,{location:o,pageResources:r},r.json)))))}))},o}(i.a.Component),o=window,a=o.pagePath,l=o.location;a&&"/openj9"+a!==l.pathname&&!(L.findMatchPath(Object(A.a)(l.pathname,"/openj9"))||"/404.html"===a||a.match(/^\/404\/?$/)||a.match(/^\/offline-plugin-app-shell-fallback\/?$/))&&Object(u.navigate)("/openj9"+a+l.search+l.hash,{replace:!0}),p.publicLoader.loadPage(l.pathname).then((function(t){if(!t||"error"===t.status)throw new Error("page resources for "+l.pathname+" not found. Not rendering React");window.___webpackCompilationHash=t.page.webpackCompilationHash;var n=function(){return Object(g.c)(u.Location,null,(function(t){return Object(g.c)(e,t)}))},o=Object(r.apiRunner)("wrapRootElement",{element:Object(g.c)(n,null)},Object(g.c)(n,null),(function(t){return{element:t.result}})).pop(),i=function(){return o},a=Object(r.apiRunner)("replaceHydrateFunction",void 0,c.a.hydrate)[0];f()((function(){a(Object(g.c)(i,null),"undefined"!=typeof window?document.getElementById("___gatsby"):void 0,(function(){Object(r.apiRunner)("onInitialClientRender")}))}))}))}))},"V+eJ":function(t,e,n){"use strict";var r=n("XKFU"),o=n("w2a5")(!1),i=[].indexOf,a=!!i&&1/[1].indexOf(1,-0)<0;r(r.P+r.F*(a||!n("LyE8")(i)),"Array",{indexOf:function(t){return a?i.apply(this,arguments)||0:o(this,t,arguments[1])}})},VRzm:function(t,e,n){"use strict";var r,o,i,a,c=n("LQAc"),u=n("dyZX"),s=n("m0Pp"),l=n("I8a+"),f=n("XKFU"),p=n("0/R4"),h=n("2OiF"),d=n("9gX7"),v=n("SlkY"),g=n("69bn"),m=n("GZEu").set,y=n("gHnn")(),b=n("pbhE"),w=n("nICZ"),_=n("ol8x"),x=n("vKrd"),S=u.TypeError,O=u.process,P=O&&O.versions,k=P&&P.v8||"",E=u.Promise,j="process"==l(O),R=function(){},C=o=b.f,A=!!function(){try{var t=E.resolve(1),e=(t.constructor={})[n("K0xU")("species")]=function(t){t(R,R)};return(j||"function"==typeof PromiseRejectionEvent)&&t.then(R)instanceof e&&0!==k.indexOf("6.6")&&-1===_.indexOf("Chrome/66")}catch(r){}}(),T=function(t){var e;return!(!p(t)||"function"!=typeof(e=t.then))&&e},F=function(t,e){if(!t._n){t._n=!0;var n=t._c;y((function(){for(var r=t._v,o=1==t._s,i=0,a=function(e){var n,i,a,c=o?e.ok:e.fail,u=e.resolve,s=e.reject,l=e.domain;try{c?(o||(2==t._h&&M(t),t._h=1),!0===c?n=r:(l&&l.enter(),n=c(r),l&&(l.exit(),a=!0)),n===e.promise?s(S("Promise-chain cycle")):(i=T(n))?i.call(n,u,s):u(n)):s(r)}catch(f){l&&!a&&l.exit(),s(f)}};n.length>i;)a(n[i++]);t._c=[],t._n=!1,e&&!t._h&&L(t)}))}},L=function(t){m.call(u,(function(){var e,n,r,o=t._v,i=U(t);if(i&&(e=w((function(){j?O.emit("unhandledRejection",o,t):(n=u.onunhandledrejection)?n({promise:t,reason:o}):(r=u.console)&&r.error&&r.error("Unhandled promise rejection",o)})),t._h=j||U(t)?2:1),t._a=void 0,i&&e.e)throw e.v}))},U=function(t){return 1!==t._h&&0===(t._a||t._c).length},M=function(t){m.call(u,(function(){var e;j?O.emit("rejectionHandled",t):(e=u.onrejectionhandled)&&e({promise:t,reason:t._v})}))},K=function(t){var e=this;e._d||(e._d=!0,(e=e._w||e)._v=t,e._s=2,e._a||(e._a=e._c.slice()),F(e,!0))},D=function(t){var e,n=this;if(!n._d){n._d=!0,n=n._w||n;try{if(n===t)throw S("Promise can't be resolved itself");(e=T(t))?y((function(){var r={_w:n,_d:!1};try{e.call(t,s(D,r,1),s(K,r,1))}catch(o){K.call(r,o)}})):(n._v=t,n._s=1,F(n,!1))}catch(r){K.call({_w:n,_d:!1},r)}}};A||(E=function(t){d(this,E,"Promise","_h"),h(t),r.call(this);try{t(s(D,this,1),s(K,this,1))}catch(e){K.call(this,e)}},(r=function(t){this._c=[],this._a=void 0,this._s=0,this._d=!1,this._v=void 0,this._h=0,this._n=!1}).prototype=n("3Lyj")(E.prototype,{then:function(t,e){var n=C(g(this,E));return n.ok="function"!=typeof t||t,n.fail="function"==typeof e&&e,n.domain=j?O.domain:void 0,this._c.push(n),this._a&&this._a.push(n),this._s&&F(this,!1),n.promise},catch:function(t){return this.then(void 0,t)}}),i=function(){var t=new r;this.promise=t,this.resolve=s(D,t,1),this.reject=s(K,t,1)},b.f=C=function(t){return t===E||t===a?new i(t):o(t)}),f(f.G+f.W+f.F*!A,{Promise:E}),n("fyDq")(E,"Promise"),n("elZq")("Promise"),a=n("g3g5").Promise,f(f.S+f.F*!A,"Promise",{reject:function(t){var e=C(this);return(0,e.reject)(t),e.promise}}),f(f.S+f.F*(c||!A),"Promise",{resolve:function(t){return x(c&&this===a?E:this,t)}}),f(f.S+f.F*!(A&&n("XMVh")((function(t){E.all(t).catch(R)}))),"Promise",{all:function(t){var e=this,n=C(e),r=n.resolve,o=n.reject,i=w((function(){var n=[],i=0,a=1;v(t,!1,(function(t){var c=i++,u=!1;n.push(void 0),a++,e.resolve(t).then((function(t){u||(u=!0,n[c]=t,--a||r(n))}),o)})),--a||r(n)}));return i.e&&o(i.v),n.promise},race:function(t){var e=this,n=C(e),r=n.reject,o=w((function(){v(t,!1,(function(t){e.resolve(t).then(n.resolve,r)}))}));return o.e&&r(o.v),n.promise}})},VTer:function(t,e,n){var r=n("g3g5"),o=n("dyZX"),i=o["__core-js_shared__"]||(o["__core-js_shared__"]={});(t.exports=function(t,e){return i[t]||(i[t]=void 0!==e?e:{})})("versions",[]).push({version:r.version,mode:n("LQAc")?"pure":"global",copyright:"© 2019 Denis Pushkarev (zloirock.ru)"})},VbXa:function(t,e){t.exports=function(t,e){t.prototype=Object.create(e.prototype),t.prototype.constructor=t,t.__proto__=e}},Vd3H:function(t,e,n){"use strict";var r=n("XKFU"),o=n("2OiF"),i=n("S/j/"),a=n("eeVq"),c=[].sort,u=[1,2,3];r(r.P+r.F*(a((function(){u.sort(void 0)}))||!a((function(){u.sort(null)}))||!n("LyE8")(c)),"Array",{sort:function(t){return void 0===t?c.call(i(this)):c.call(i(this),o(t))}})},WbBG:function(t,e,n){"use strict";t.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},Wbzz:function(t,e,n){"use strict";n.r(e),n.d(e,"graphql",(function(){return g})),n.d(e,"StaticQueryContext",(function(){return p})),n.d(e,"StaticQuery",(function(){return d})),n.d(e,"useStaticQuery",(function(){return v})),n.d(e,"prefetchPathname",(function(){return f}));var r=n("q1tI"),o=n.n(r),i=n("+ZDr"),a=n.n(i);n.d(e,"Link",(function(){return a.a})),n.d(e,"withAssetPrefix",(function(){return i.withAssetPrefix})),n.d(e,"withPrefix",(function(){return i.withPrefix})),n.d(e,"parsePath",(function(){return i.parsePath})),n.d(e,"navigate",(function(){return i.navigate})),n.d(e,"push",(function(){return i.push})),n.d(e,"replace",(function(){return i.replace})),n.d(e,"navigateTo",(function(){return i.navigateTo}));var c=n("lw3w"),u=n.n(c);n.d(e,"PageRenderer",(function(){return u.a}));var s=n("emEt"),l=n("qKvR"),f=s.default.enqueue,p=o.a.createContext({});function h(t){var e=t.staticQueryData,n=t.data,r=t.query,i=t.render,a=n?n.data:e[r]&&e[r].data;return Object(l.c)(o.a.Fragment,null,a&&i(a),!a&&Object(l.c)("div",null,"Loading (StaticQuery)"))}var d=function(t){var e=t.data,n=t.query,r=t.render,o=t.children;return Object(l.c)(p.Consumer,null,(function(t){return Object(l.c)(h,{data:e,query:n,render:r||o,staticQueryData:t})}))},v=function(t){o.a.useContext;var e=o.a.useContext(p);if(e[t]&&e[t].data)return e[t].data;throw new Error("The result of this StaticQuery could not be fetched.\n\nThis is likely a bug in Gatsby and if refreshing the page does not fix it, please open an issue in https://github.com/gatsbyjs/gatsby/issues")};function g(){throw new Error("It appears like Gatsby is misconfigured. Gatsby related `graphql` calls are supposed to only be evaluated at compile time, and then compiled away. Unfortunately, something went wrong and the query was left in the compiled code.\n\nUnless your site has a complex or custom babel/Gatsby configuration this is likely a bug in Gatsby.")}},XKFU:function(t,e,n){var r=n("dyZX"),o=n("g3g5"),i=n("Mukb"),a=n("KroJ"),c=n("m0Pp"),u=function(t,e,n){var s,l,f,p,h=t&u.F,d=t&u.G,v=t&u.S,g=t&u.P,m=t&u.B,y=d?r:v?r[e]||(r[e]={}):(r[e]||{}).prototype,b=d?o:o[e]||(o[e]={}),w=b.prototype||(b.prototype={});for(s in d&&(n=e),n)f=((l=!h&&y&&void 0!==y[s])?y:n)[s],p=m&&l?c(f,r):g&&"function"==typeof f?c(Function.call,f):f,y&&a(y,s,f,t&u.U),b[s]!=f&&i(b,s,p),g&&w[s]!=f&&(w[s]=f)};r.core=o,u.F=1,u.G=2,u.S=4,u.P=8,u.B=16,u.W=32,u.U=64,u.R=128,t.exports=u},XMVh:function(t,e,n){var r=n("K0xU")("iterator"),o=!1;try{var i=[7][r]();i.return=function(){o=!0},Array.from(i,(function(){throw 2}))}catch(a){}t.exports=function(t,e){if(!e&&!o)return!1;var n=!1;try{var i=[7],c=i[r]();c.next=function(){return{done:n=!0}},i[r]=function(){return c},t(i)}catch(a){}return n}},Xbzi:function(t,e,n){var r=n("0/R4"),o=n("i5dc").set;t.exports=function(t,e,n){var i,a=e.constructor;return a!==n&&"function"==typeof a&&(i=a.prototype)!==n.prototype&&r(i)&&o&&o(t,i),t}},XfO3:function(t,e,n){"use strict";var r=n("AvRE")(!0);n("Afnz")(String,"String",(function(t){this._t=String(t),this._i=0}),(function(){var t,e=this._t,n=this._i;return n>=e.length?{value:void 0,done:!0}:(t=r(e,n),this._i+=t.length,{value:t,done:!1})}))},Xtr8:function(t,e,n){var r=n("XKFU"),o=n("g3g5"),i=n("eeVq");t.exports=function(t,e){var n=(o.Object||{})[t]||Object[t],a={};a[t]=e(n),r(r.S+r.F*i((function(){n(1)})),"Object",a)}},Xxuz:function(t,e,n){"use strict";var r=n("I8a+"),o=RegExp.prototype.exec;t.exports=function(t,e){var n=t.exec;if("function"==typeof n){var i=n.call(t,e);if("object"!=typeof i)throw new TypeError("RegExp exec method returned something other than an Object or null");return i}if("RegExp"!==r(t))throw new TypeError("RegExp#exec called on incompatible receiver");return o.call(t,e)}},"YLt+":function(t){t.exports=JSON.parse("[]")},YTvA:function(t,e,n){var r=n("VTer")("keys"),o=n("ylqs");t.exports=function(t){return r[t]||(r[t]=o(t))}},Ymqv:function(t,e,n){var r=n("LZWt");t.exports=Object("z").propertyIsEnumerable(0)?Object:function(t){return"String"==r(t)?t.split(""):Object(t)}},YwZP:function(t,e,n){"use strict";n.r(e);n("pIFo"),n("bWfx"),n("VRzm"),n("Btvt"),n("/SS/"),n("hHhE"),n("V+eJ"),n("91GP");var r=n("q1tI"),o=n.n(r),i=(n("6DQo"),n("17x9"),n("QLaP")),a=n.n(i),c=o.a.createContext,u=n("94VI"),s=n("LYrO"),l=n("9Xx/");n.d(e,"Link",(function(){return A})),n.d(e,"Location",(function(){return y})),n.d(e,"LocationProvider",(function(){return b})),n.d(e,"Match",(function(){return K})),n.d(e,"Redirect",(function(){return M})),n.d(e,"Router",(function(){return x})),n.d(e,"ServerLocation",(function(){return w})),n.d(e,"isRedirect",(function(){return F})),n.d(e,"redirectTo",(function(){return L})),n.d(e,"BaseContext",(function(){return _})),n.d(e,"createHistory",(function(){return l.createHistory})),n.d(e,"createMemorySource",(function(){return l.createMemorySource})),n.d(e,"navigate",(function(){return l.navigate})),n.d(e,"globalHistory",(function(){return l.globalHistory}));var f=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(t[r]=n[r])}return t};function p(t,e){var n={};for(var r in t)e.indexOf(r)>=0||Object.prototype.hasOwnProperty.call(t,r)&&(n[r]=t[r]);return n}function h(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function d(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function v(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}var g=function(t,e){var n=c(e);return n.Consumer.displayName=t+".Consumer",n.Provider.displayName=t+".Provider",n},m=g("Location"),y=function(t){var e=t.children;return o.a.createElement(m.Consumer,null,(function(t){return t?e(t):o.a.createElement(b,null,e)}))},b=function(t){function e(){var n,r;h(this,e);for(var o=arguments.length,i=Array(o),a=0;a<o;a++)i[a]=arguments[a];return n=r=d(this,t.call.apply(t,[this].concat(i))),r.state={context:r.getContext(),refs:{unlisten:null}},d(r,n)}return v(e,t),e.prototype.getContext=function(){var t=this.props.history;return{navigate:t.navigate,location:t.location}},e.prototype.componentDidCatch=function(t,e){if(!F(t))throw t;(0,this.props.history.navigate)(t.uri,{replace:!0})},e.prototype.componentDidUpdate=function(t,e){e.context.location!==this.state.context.location&&this.props.history._onTransitionComplete()},e.prototype.componentDidMount=function(){var t=this,e=this.state.refs,n=this.props.history;e.unlisten=n.listen((function(){Promise.resolve().then((function(){requestAnimationFrame((function(){t.unmounted||t.setState((function(){return{context:t.getContext()}}))}))}))}))},e.prototype.componentWillUnmount=function(){var t=this.state.refs;this.unmounted=!0,t.unlisten()},e.prototype.render=function(){var t=this.state.context,e=this.props.children;return o.a.createElement(m.Provider,{value:t},"function"==typeof e?e(t):e||null)},e}(o.a.Component);b.defaultProps={history:l.globalHistory};var w=function(t){var e=t.url,n=t.children;return o.a.createElement(m.Provider,{value:{location:{pathname:e,search:"",hash:""},navigate:function(){throw new Error("You can't call navigate on the server.")}}},n)},_=g("Base",{baseuri:"/",basepath:"/"}),x=function(t){return o.a.createElement(_.Consumer,null,(function(e){return o.a.createElement(y,null,(function(n){return o.a.createElement(S,f({},e,n,t))}))}))},S=function(t){function e(){return h(this,e),d(this,t.apply(this,arguments))}return v(e,t),e.prototype.render=function(){var t=this.props,e=t.location,n=t.navigate,r=t.basepath,i=t.primary,a=t.children,c=(t.baseuri,t.component),u=void 0===c?"div":c,l=p(t,["location","navigate","basepath","primary","children","baseuri","component"]),h=o.a.Children.map(a,I(r)),d=e.pathname,v=Object(s.c)(h,d);if(v){var g=v.params,m=v.uri,y=v.route,b=v.route.value;r=y.default?r:y.path.replace(/\*$/,"");var w=f({},g,{uri:m,location:e,navigate:function(t,e){return n(Object(s.d)(t,m),e)}}),S=o.a.cloneElement(b,w,b.props.children?o.a.createElement(x,{primary:i},b.props.children):void 0),O=i?P:u,k=i?f({uri:m,location:e,component:u},l):l;return o.a.createElement(_.Provider,{value:{baseuri:m,basepath:r}},o.a.createElement(O,k,S))}return null},e}(o.a.PureComponent);S.defaultProps={primary:!0};var O=g("Focus"),P=function(t){var e=t.uri,n=t.location,r=t.component,i=p(t,["uri","location","component"]);return o.a.createElement(O.Consumer,null,(function(t){return o.a.createElement(j,f({},i,{component:r,requestFocus:t,uri:e,location:n}))}))},k=!0,E=0,j=function(t){function e(){var n,r;h(this,e);for(var o=arguments.length,i=Array(o),a=0;a<o;a++)i[a]=arguments[a];return n=r=d(this,t.call.apply(t,[this].concat(i))),r.state={},r.requestFocus=function(t){r.state.shouldFocus||t.focus()},d(r,n)}return v(e,t),e.getDerivedStateFromProps=function(t,e){if(null==e.uri)return f({shouldFocus:!0},t);var n=t.uri!==e.uri,r=e.location.pathname!==t.location.pathname&&t.location.pathname===t.uri;return f({shouldFocus:n||r},t)},e.prototype.componentDidMount=function(){E++,this.focus()},e.prototype.componentWillUnmount=function(){0===--E&&(k=!0)},e.prototype.componentDidUpdate=function(t,e){t.location!==this.props.location&&this.state.shouldFocus&&this.focus()},e.prototype.focus=function(){var t=this.props.requestFocus;t?t(this.node):k?k=!1:this.node.contains(document.activeElement)||this.node.focus()},e.prototype.render=function(){var t=this,e=this.props,n=(e.children,e.style),r=(e.requestFocus,e.role),i=void 0===r?"group":r,a=e.component,c=void 0===a?"div":a,u=(e.uri,e.location,p(e,["children","style","requestFocus","role","component","uri","location"]));return o.a.createElement(c,f({style:f({outline:"none"},n),tabIndex:"-1",role:i,ref:function(e){return t.node=e}},u),o.a.createElement(O.Provider,{value:this.requestFocus},this.props.children))},e}(o.a.Component);Object(u.polyfill)(j);var R=function(){},C=o.a.forwardRef;void 0===C&&(C=function(t){return t});var A=C((function(t,e){var n=t.innerRef,r=p(t,["innerRef"]);return o.a.createElement(_.Consumer,null,(function(t){t.basepath;var i=t.baseuri;return o.a.createElement(y,null,(function(t){var a=t.location,c=t.navigate,u=r.to,l=r.state,h=r.replace,d=r.getProps,v=void 0===d?R:d,g=p(r,["to","state","replace","getProps"]),m=Object(s.d)(u,i),y=a.pathname===m,b=Object(s.e)(a.pathname,m);return o.a.createElement("a",f({ref:e||n,"aria-current":y?"page":void 0},g,v({isCurrent:y,isPartiallyCurrent:b,href:m,location:a}),{href:m,onClick:function(t){g.onClick&&g.onClick(t),W(t)&&(t.preventDefault(),c(m,{state:l,replace:h}))}}))}))}))}));function T(t){this.uri=t}var F=function(t){return t instanceof T},L=function(t){throw new T(t)},U=function(t){function e(){return h(this,e),d(this,t.apply(this,arguments))}return v(e,t),e.prototype.componentDidMount=function(){var t=this.props,e=t.navigate,n=t.to,r=(t.from,t.replace),o=void 0===r||r,i=t.state,a=(t.noThrow,p(t,["navigate","to","from","replace","state","noThrow"]));Promise.resolve().then((function(){e(Object(s.a)(n,a),{replace:o,state:i})}))},e.prototype.render=function(){var t=this.props,e=(t.navigate,t.to),n=(t.from,t.replace,t.state,t.noThrow),r=p(t,["navigate","to","from","replace","state","noThrow"]);return n||L(Object(s.a)(e,r)),null},e}(o.a.Component),M=function(t){return o.a.createElement(y,null,(function(e){return o.a.createElement(U,f({},e,t))}))},K=function(t){var e=t.path,n=t.children;return o.a.createElement(_.Consumer,null,(function(t){var r=t.baseuri;return o.a.createElement(y,null,(function(t){var o=t.navigate,i=t.location,a=Object(s.d)(e,r),c=Object(s.b)(a,i.pathname);return n({navigate:o,location:i,match:c?f({},c.params,{uri:c.uri,path:e}):null})}))}))},D=function(t){return t.replace(/(^\/+|\/+$)/g,"")},I=function(t){return function(e){if(!e)return null;if(e.props.path||e.props.default||e.type===M||a()(!1),e.type!==M||e.props.from&&e.props.to||a()(!1),e.type!==M||Object(s.f)(e.props.from,e.props.to)||a()(!1),e.props.default)return{value:e,default:!0};var n=e.type===M?e.props.from:e.props.path,r="/"===n?t:D(t)+"/"+D(n);return{value:e,default:e.props.default,path:e.props.children?D(r)+"/*":r}}},W=function(t){return!t.defaultPrevented&&0===t.button&&!(t.metaKey||t.altKey||t.ctrlKey||t.shiftKey)}},Z2Ku:function(t,e,n){"use strict";var r=n("XKFU"),o=n("w2a5")(!0);r(r.P,"Array",{includes:function(t){return o(this,t,arguments.length>1?arguments[1]:void 0)}}),n("nGyu")("includes")},Z6vF:function(t,e,n){var r=n("ylqs")("meta"),o=n("0/R4"),i=n("aagx"),a=n("hswa").f,c=0,u=Object.isExtensible||function(){return!0},s=!n("eeVq")((function(){return u(Object.preventExtensions({}))})),l=function(t){a(t,r,{value:{i:"O"+ ++c,w:{}}})},f=t.exports={KEY:r,NEED:!1,fastKey:function(t,e){if(!o(t))return"symbol"==typeof t?t:("string"==typeof t?"S":"P")+t;if(!i(t,r)){if(!u(t))return"F";if(!e)return"E";l(t)}return t[r].i},getWeak:function(t,e){if(!i(t,r)){if(!u(t))return!0;if(!e)return!1;l(t)}return t[r].w},onFreeze:function(t){return s&&f.NEED&&u(t)&&!i(t,r)&&l(t),t}}},ZD67:function(t,e,n){"use strict";var r=n("3Lyj"),o=n("Z6vF").getWeak,i=n("y3w9"),a=n("0/R4"),c=n("9gX7"),u=n("SlkY"),s=n("CkkT"),l=n("aagx"),f=n("s5qY"),p=s(5),h=s(6),d=0,v=function(t){return t._l||(t._l=new g)},g=function(){this.a=[]},m=function(t,e){return p(t.a,(function(t){return t[0]===e}))};g.prototype={get:function(t){var e=m(this,t);if(e)return e[1]},has:function(t){return!!m(this,t)},set:function(t,e){var n=m(this,t);n?n[1]=e:this.a.push([t,e])},delete:function(t){var e=h(this.a,(function(e){return e[0]===t}));return~e&&this.a.splice(e,1),!!~e}},t.exports={getConstructor:function(t,e,n,i){var s=t((function(t,r){c(t,s,e,"_i"),t._t=e,t._i=d++,t._l=void 0,null!=r&&u(r,n,t[i],t)}));return r(s.prototype,{delete:function(t){if(!a(t))return!1;var n=o(t);return!0===n?v(f(this,e)).delete(t):n&&l(n,this._i)&&delete n[this._i]},has:function(t){if(!a(t))return!1;var n=o(t);return!0===n?v(f(this,e)).has(t):n&&l(n,this._i)}}),s},def:function(t,e,n){var r=o(i(e),!0);return!0===r?v(t).set(e,n):r[t._i]=n,t},ufstore:v}},ZfQF:function(t,e,n){"use strict";var r=n("TqRt");e.__esModule=!0,e.default=function(t,e){var n=(0,o.default)(t);if(void 0===e)return n?"pageYOffset"in n?n.pageYOffset:n.document.documentElement.scrollTop:t.scrollTop;n?n.scrollTo("pageXOffset"in n?n.pageXOffset:n.document.documentElement.scrollLeft,e):t.scrollTop=e};var o=r(n("8Y+z"));t.exports=e.default},a1Th:function(t,e,n){"use strict";n("OEbY");var r=n("y3w9"),o=n("C/va"),i=n("nh4g"),a=/./.toString,c=function(t){n("KroJ")(RegExp.prototype,"toString",t,!0)};n("eeVq")((function(){return"/a/b"!=a.call({source:"a",flags:"b"})}))?c((function(){var t=r(this);return"/".concat(t.source,"/","flags"in t?t.flags:!i&&t instanceof RegExp?o.call(t):void 0)})):"toString"!=a.name&&c((function(){return a.call(this)}))},aCFj:function(t,e,n){var r=n("Ymqv"),o=n("vhPU");t.exports=function(t){return r(o(t))}},aagx:function(t,e){var n={}.hasOwnProperty;t.exports=function(t,e){return n.call(t,e)}},apmT:function(t,e,n){var r=n("0/R4");t.exports=function(t,e){if(!r(t))return t;var n,o;if(e&&"function"==typeof(n=t.toString)&&!r(o=n.call(t)))return o;if("function"==typeof(n=t.valueOf)&&!r(o=n.call(t)))return o;if(!e&&"function"==typeof(n=t.toString)&&!r(o=n.call(t)))return o;throw TypeError("Can't convert object to primitive value")}},bWfx:function(t,e,n){"use strict";var r=n("XKFU"),o=n("CkkT")(1);r(r.P+r.F*!n("LyE8")([].map,!0),"Array",{map:function(t){return o(this,t,arguments[1])}})},c0Fl:function(t,e,n){"use strict";var r=n("TqRt");e.__esModule=!0,e.default=void 0;var o=function(){};r(n("Bp9Y")).default&&(o=document.addEventListener?function(t,e,n,r){return t.removeEventListener(e,n,r||!1)}:document.attachEvent?function(t,e,n){return t.detachEvent("on"+e,n)}:void 0);var i=o;e.default=i,t.exports=e.default},cSJ8:function(t,e,n){"use strict";e.a=function(t,e){return void 0===e&&(e=""),e?(e+="/",t.substr(0,e.length)===e?t.slice(e.length-1):t):t}},cu4x:function(t,e,n){"use strict";n("V+eJ"),e.__esModule=!0,e.parsePath=function(t){var e=t||"/",n="",r="",o=e.indexOf("#");-1!==o&&(r=e.substr(o),e=e.substr(0,o));var i=e.indexOf("?");-1!==i&&(n=e.substr(i),e=e.substr(0,i));return{pathname:e,search:"?"===n?"":n,hash:"#"===r?"":r}}},czNK:function(t,e,n){"use strict";var r=n("nh4g"),o=n("DVgA"),i=n("JiEa"),a=n("UqcF"),c=n("S/j/"),u=n("Ymqv"),s=Object.assign;t.exports=!s||n("eeVq")((function(){var t={},e={},n=Symbol(),r="abcdefghijklmnopqrst";return t[n]=7,r.split("").forEach((function(t){e[t]=t})),7!=s({},t)[n]||Object.keys(s({},e)).join("")!=r}))?function(t,e){for(var n=c(t),s=arguments.length,l=1,f=i.f,p=a.f;s>l;)for(var h,d=u(arguments[l++]),v=f?o(d).concat(f(d)):o(d),g=v.length,m=0;g>m;)h=v[m++],r&&!p.call(d,h)||(n[h]=d[h]);return n}:s},"d/Gc":function(t,e,n){var r=n("RYi7"),o=Math.max,i=Math.min;t.exports=function(t,e){return(t=r(t))<0?o(t+e,0):i(t,e)}},dRSK:function(t,e,n){"use strict";var r=n("XKFU"),o=n("CkkT")(5),i=!0;"find"in[]&&Array(1).find((function(){i=!1})),r(r.P+r.F*i,"Array",{find:function(t){return o(this,t,arguments.length>1?arguments[1]:void 0)}}),n("nGyu")("find")},"dZ+Y":function(t,e,n){"use strict";var r=n("XKFU"),o=n("CkkT")(3);r(r.P+r.F*!n("LyE8")([].some,!0),"Array",{some:function(t){return o(this,t,arguments[1])}})},dyZX:function(t,e){var n=t.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=n)},e7yV:function(t,e,n){var r=n("aCFj"),o=n("kJMx").f,i={}.toString,a="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];t.exports.f=function(t){return a&&"[object Window]"==i.call(t)?function(t){try{return o(t)}catch(e){return a.slice()}}(t):o(r(t))}},eM6i:function(t,e,n){var r=n("XKFU");r(r.S,"Date",{now:function(){return(new Date).getTime()}})},eeVq:function(t,e){t.exports=function(t){try{return!!t()}catch(e){return!0}}},elZq:function(t,e,n){"use strict";var r=n("dyZX"),o=n("hswa"),i=n("nh4g"),a=n("K0xU")("species");t.exports=function(t){var e=r[t];i&&e&&!e[a]&&o.f(e,a,{configurable:!0,get:function(){return this}})}},emEt:function(t,e,n){"use strict";n.r(e);n("HEwt"),n("a1Th"),n("rE2o"),n("ioFf"),n("T39b"),n("rGqo"),n("yt8O"),n("XfO3"),n("9AAn"),n("Z2Ku"),n("L9s1"),n("91GP"),n("VRzm"),n("Btvt"),n("rvZc"),n("RW0V");var r=function(t){if("undefined"==typeof document)return!1;var e=document.createElement("link");try{if(e.relList&&"function"==typeof e.relList.supports)return e.relList.supports(t)}catch(n){return!1}return!1}("prefetch")?function(t,e){return new Promise((function(n,r){if("undefined"!=typeof document){var o=document.createElement("link");o.setAttribute("rel","prefetch"),o.setAttribute("href",t),Object.keys(e).forEach((function(t){o.setAttribute(t,e[t])})),o.onload=n,o.onerror=r,(document.getElementsByTagName("head")[0]||document.getElementsByName("script")[0].parentNode).appendChild(o)}else r()}))}:function(t){return new Promise((function(e,n){var r=new XMLHttpRequest;r.open("GET",t,!0),r.onload=function(){200===r.status?e():n()},r.send(null)}))},o={},i=function(t,e){return new Promise((function(n){o[t]?n():r(t,e).then((function(){n(),o[t]=!0})).catch((function(){}))}))},a=n("5yr3"),c=(n("KKXr"),n("LYrO")),u=n("cSJ8"),s=function(t){return void 0===t?t:"/"===t?"/":"/"===t.charAt(t.length-1)?t.slice(0,-1):t},l=new Map,f=[],p=function(t){var e=decodeURIComponent(t);return Object(u.a)(e,"/openj9").split("#")[0].split("?")[0]},h=function(t){var e=v(t),n=f,r=Array.isArray(n),o=0;for(n=r?n:n[Symbol.iterator]();;){var i;if(r){if(o>=n.length)break;i=n[o++]}else{if((o=n.next()).done)break;i=o.value}var a=i,u=a.matchPath,l=a.path;if(Object(c.b)(u,e))return s(l)}return null},d=function(t){var e=p(t);if(l.has(e))return l.get(e);var n=h(e);return n||(n=v(t)),l.set(e,n),n},v=function(t){var e=p(t);return"/index.html"===e&&(e="/"),e=s(e)};function g(t){return function(t){if(Array.isArray(t)){for(var e=0,n=new Array(t.length);e<t.length;e++)n[e]=t[e];return n}}(t)||function(t){if(Symbol.iterator in Object(t)||"[object Arguments]"===Object.prototype.toString.call(t))return Array.from(t)}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance")}()}n.d(e,"BaseLoader",(function(){return S})),n.d(e,"ProdLoader",(function(){return P})),n.d(e,"setLoader",(function(){return k})),n.d(e,"publicLoader",(function(){return E}));var m,y=function(t){return t&&t.default||t},b=function(t){var e;return"/openj9/page-data/"+("/"===t?"index":e=(e="/"===(e=t)[0]?e.slice(1):e).endsWith("/")?e.slice(0,-1):e)+"/page-data.json"},w=function(t,e){return void 0===e&&(e="GET"),new Promise((function(n,r){var o=new XMLHttpRequest;o.open(e,t,!0),o.onreadystatechange=function(){4==o.readyState&&n(o)},o.send(null)}))},_=function(t){var e=t.pagePath,n=t.retries,r=void 0===n?0:n,o=b(e);return w(o).then((function(n){var o=n.status,i=n.responseText;if(200===o)try{var a=JSON.parse(i);if(void 0===a.path)throw new Error("not a valid pageData response");return Object.assign(t,{status:"success",payload:a})}catch(c){}return 404===o||200===o?"/404.html"===e?Object.assign(t,{status:"failure"}):_(Object.assign(t,{pagePath:"/404.html",notFound:!0})):500===o?Object.assign(t,{status:"error"}):r<3?_(Object.assign(t,{retries:r+1})):Object.assign(t,{status:"error"})}))},x=function(t,e){void 0===e&&(e=null);var n={componentChunkName:t.componentChunkName,path:t.path,webpackCompilationHash:t.webpackCompilationHash,matchPath:t.matchPath};return{component:e,json:t.result,page:n}},S=function(){function t(t,e){this.pageDb=new Map,this.inFlightDb=new Map,this.pageDataDb=new Map,this.prefetchTriggered=new Set,this.prefetchCompleted=new Set,this.loadComponent=t,f=e}var e=t.prototype;return e.setApiRunner=function(t){this.apiRunner=t,this.prefetchDisabled=t("disableCorePrefetching").some((function(t){return t}))},e.loadPageDataJson=function(t){var e=this,n=d(t);return this.pageDataDb.has(n)?Promise.resolve(this.pageDataDb.get(n)):_({pagePath:n}).then((function(t){return e.pageDataDb.set(n,t),t}))},e.findMatchPath=function(t){return h(t)},e.loadPage=function(t){var e=this,n=d(t);if(this.pageDb.has(n)){var r=this.pageDb.get(n);return Promise.resolve(r.payload)}if(this.inFlightDb.has(n))return this.inFlightDb.get(n);var o=Promise.all([this.loadAppData(),this.loadPageDataJson(n)]).then((function(t){var r=t[1];if("error"===r.status)return{status:"error"};if("failure"===r.status)throw new Error("404 page could not be found. Checkout https://www.gatsbyjs.org/docs/add-404-page/");var o=r.payload,i=o.componentChunkName;return e.loadComponent(i).then((function(i){var c,u={createdAt:new Date};return i?(u.status="success",!0===r.notFound&&(u.notFound=!0),o=Object.assign(o,{webpackCompilationHash:t[0]?t[0].webpackCompilationHash:""}),c=x(o,i),u.payload=c,a.a.emit("onPostLoadPageResources",{page:c,pageResources:c})):u.status="error",e.pageDb.set(n,u),c}))})).then((function(t){return e.inFlightDb.delete(n),t})).catch((function(t){throw e.inFlightDb.delete(n),t}));return this.inFlightDb.set(n,o),o},e.loadPageSync=function(t){var e=d(t);if(this.pageDb.has(e))return this.pageDb.get(e).payload},e.shouldPrefetch=function(t){return!!function(){if("connection"in navigator&&void 0!==navigator.connection){if((navigator.connection.effectiveType||"").includes("2g"))return!1;if(navigator.connection.saveData)return!1}return!0}()&&!this.pageDb.has(t)},e.prefetch=function(t){var e=this;if(!this.shouldPrefetch(t))return!1;if(this.prefetchTriggered.has(t)||(this.apiRunner("onPrefetchPathname",{pathname:t}),this.prefetchTriggered.add(t)),this.prefetchDisabled)return!1;var n=d(t);return this.doPrefetch(n).then((function(){e.prefetchCompleted.has(t)||(e.apiRunner("onPostPrefetchPathname",{pathname:t}),e.prefetchCompleted.add(t))})),!0},e.doPrefetch=function(t){throw new Error("doPrefetch not implemented")},e.hovering=function(t){this.loadPage(t)},e.getResourceURLsForPathname=function(t){var e=d(t),n=this.pageDataDb.get(e);if(n){var r=x(n.payload);return[].concat(g(O(r.page.componentChunkName)),[b(e)])}return null},e.isPageNotFound=function(t){var e=d(t),n=this.pageDb.get(e);return n&&!0===n.notFound},e.loadAppData=function(t){var e=this;return void 0===t&&(t=0),w("/openj9/page-data/app-data.json").then((function(n){var r,o=n.status,i=n.responseText;if(200!==o&&t<3)return e.loadAppData(t+1);if(200===o)try{var a=JSON.parse(i);if(void 0===a.webpackCompilationHash)throw new Error("not a valid app-data response");r=a}catch(c){}return r}))},t}(),O=function(t){return window.___chunkMapping[t].map((function(t){return"/openj9"+t}))},P=function(t){var e,n;function r(e,n){return t.call(this,(function(t){return e.components[t]().then(y)}),n)||this}return n=t,(e=r).prototype=Object.create(n.prototype),e.prototype.constructor=e,e.__proto__=n,r.prototype.doPrefetch=function(t){var e=this,n=b(t);return i(n,{crossOrigin:"anonymous",as:"fetch"}).then((function(){return e.loadPageDataJson(t)})).then((function(t){if("success"!==t.status)return Promise.resolve();var e=t.payload,n=e.componentChunkName,r=O(n);return Promise.all(r.map(i)).then((function(){return e}))}))},r}(S),k=function(t){m=t},E={getResourcesForPathname:function(t){return console.warn("Warning: getResourcesForPathname is deprecated. Use loadPage instead"),m.i.loadPage(t)},getResourcesForPathnameSync:function(t){return console.warn("Warning: getResourcesForPathnameSync is deprecated. Use loadPageSync instead"),m.i.loadPageSync(t)},enqueue:function(t){return m.prefetch(t)},getResourceURLsForPathname:function(t){return m.getResourceURLsForPathname(t)},loadPage:function(t){return m.loadPage(t)},loadPageSync:function(t){return m.loadPageSync(t)},prefetch:function(t){return m.prefetch(t)},isPageNotFound:function(t){return m.isPageNotFound(t)},hovering:function(t){return m.hovering(t)},loadAppData:function(){return m.loadAppData()}};e.default=E},eyMr:function(t,e,n){var r=n("2OiF"),o=n("S/j/"),i=n("Ymqv"),a=n("ne8i");t.exports=function(t,e,n,c,u){r(e);var s=o(t),l=i(s),f=a(s.length),p=u?f-1:0,h=u?-1:1;if(n<2)for(;;){if(p in l){c=l[p],p+=h;break}if(p+=h,u?p<0:f<=p)throw TypeError("Reduce of empty array with no initial value")}for(;u?p>=0:f>p;p+=h)p in l&&(c=e(c,l[p],p,s));return c}},"f3/d":function(t,e,n){var r=n("hswa").f,o=Function.prototype,i=/^\s*function ([^ (]*)/;"name"in o||n("nh4g")&&r(o,"name",{configurable:!0,get:function(){try{return(""+this).match(i)[1]}catch(t){return""}}})},fyDq:function(t,e,n){var r=n("hswa").f,o=n("aagx"),i=n("K0xU")("toStringTag");t.exports=function(t,e,n){t&&!o(t=n?t:t.prototype,i)&&r(t,i,{configurable:!0,value:e})}},g3g5:function(t,e){var n=t.exports={version:"2.6.11"};"number"==typeof __e&&(__e=n)},g6HL:function(t,e){t.exports=Object.is||function(t,e){return t===e?0!==t||1/t==1/e:t!=t&&e!=e}},gHnn:function(t,e,n){var r=n("dyZX"),o=n("GZEu").set,i=r.MutationObserver||r.WebKitMutationObserver,a=r.process,c=r.Promise,u="process"==n("LZWt")(a);t.exports=function(){var t,e,n,s=function(){var r,o;for(u&&(r=a.domain)&&r.exit();t;){o=t.fn,t=t.next;try{o()}catch(i){throw t?n():e=void 0,i}}e=void 0,r&&r.enter()};if(u)n=function(){a.nextTick(s)};else if(!i||r.navigator&&r.navigator.standalone)if(c&&c.resolve){var l=c.resolve(void 0);n=function(){l.then(s)}}else n=function(){o.call(r,s)};else{var f=!0,p=document.createTextNode("");new i(s).observe(p,{characterData:!0}),n=function(){p.data=f=!f}}return function(r){var o={fn:r,next:void 0};e&&(e.next=o),t||(t=o,n()),e=o}}},h7Nl:function(t,e,n){var r=Date.prototype,o=r.toString,i=r.getTime;new Date(NaN)+""!="Invalid Date"&&n("KroJ")(r,"toString",(function(){var t=i.call(this);return t==t?o.call(this):"Invalid Date"}))},hHhE:function(t,e,n){var r=n("XKFU");r(r.S,"Object",{create:n("Kuth")})},hPIQ:function(t,e){t.exports={}},hswa:function(t,e,n){var r=n("y3w9"),o=n("xpql"),i=n("apmT"),a=Object.defineProperty;e.f=n("nh4g")?Object.defineProperty:function(t,e,n){if(r(t),e=i(e,!0),r(n),o)try{return a(t,e,n)}catch(c){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");return"value"in n&&(t[e]=n.value),t}},i5dc:function(t,e,n){var r=n("0/R4"),o=n("y3w9"),i=function(t,e){if(o(t),!r(e)&&null!==e)throw TypeError(e+": can't set as prototype!")};t.exports={set:Object.setPrototypeOf||("__proto__"in{}?function(t,e,r){try{(r=n("m0Pp")(Function.call,n("EemH").f(Object.prototype,"__proto__").set,2))(t,[]),e=!(t instanceof Array)}catch(o){e=!0}return function(t,n){return i(t,n),e?t.__proto__=n:r(t,n),t}}({},!1):void 0),check:i}},ioFf:function(t,e,n){"use strict";var r=n("dyZX"),o=n("aagx"),i=n("nh4g"),a=n("XKFU"),c=n("KroJ"),u=n("Z6vF").KEY,s=n("eeVq"),l=n("VTer"),f=n("fyDq"),p=n("ylqs"),h=n("K0xU"),d=n("N8g3"),v=n("OnI7"),g=n("1MBn"),m=n("EWmC"),y=n("y3w9"),b=n("0/R4"),w=n("S/j/"),_=n("aCFj"),x=n("apmT"),S=n("RjD/"),O=n("Kuth"),P=n("e7yV"),k=n("EemH"),E=n("JiEa"),j=n("hswa"),R=n("DVgA"),C=k.f,A=j.f,T=P.f,F=r.Symbol,L=r.JSON,U=L&&L.stringify,M=h("_hidden"),K=h("toPrimitive"),D={}.propertyIsEnumerable,I=l("symbol-registry"),W=l("symbols"),q=l("op-symbols"),X=Object.prototype,N="function"==typeof F&&!!E.f,V=r.QObject,H=!V||!V.prototype||!V.prototype.findChild,G=i&&s((function(){return 7!=O(A({},"a",{get:function(){return A(this,"a",{value:7}).a}})).a}))?function(t,e,n){var r=C(X,e);r&&delete X[e],A(t,e,n),r&&t!==X&&A(X,e,r)}:A,Z=function(t){var e=W[t]=O(F.prototype);return e._k=t,e},z=N&&"symbol"==typeof F.iterator?function(t){return"symbol"==typeof t}:function(t){return t instanceof F},Y=function(t,e,n){return t===X&&Y(q,e,n),y(t),e=x(e,!0),y(n),o(W,e)?(n.enumerable?(o(t,M)&&t[M][e]&&(t[M][e]=!1),n=O(n,{enumerable:S(0,!1)})):(o(t,M)||A(t,M,S(1,{})),t[M][e]=!0),G(t,e,n)):A(t,e,n)},B=function(t,e){y(t);for(var n,r=g(e=_(e)),o=0,i=r.length;i>o;)Y(t,n=r[o++],e[n]);return t},J=function(t){var e=D.call(this,t=x(t,!0));return!(this===X&&o(W,t)&&!o(q,t))&&(!(e||!o(this,t)||!o(W,t)||o(this,M)&&this[M][t])||e)},Q=function(t,e){if(t=_(t),e=x(e,!0),t!==X||!o(W,e)||o(q,e)){var n=C(t,e);return!n||!o(W,e)||o(t,M)&&t[M][e]||(n.enumerable=!0),n}},$=function(t){for(var e,n=T(_(t)),r=[],i=0;n.length>i;)o(W,e=n[i++])||e==M||e==u||r.push(e);return r},tt=function(t){for(var e,n=t===X,r=T(n?q:_(t)),i=[],a=0;r.length>a;)!o(W,e=r[a++])||n&&!o(X,e)||i.push(W[e]);return i};N||(c((F=function(){if(this instanceof F)throw TypeError("Symbol is not a constructor!");var t=p(arguments.length>0?arguments[0]:void 0),e=function(n){this===X&&e.call(q,n),o(this,M)&&o(this[M],t)&&(this[M][t]=!1),G(this,t,S(1,n))};return i&&H&&G(X,t,{configurable:!0,set:e}),Z(t)}).prototype,"toString",(function(){return this._k})),k.f=Q,j.f=Y,n("kJMx").f=P.f=$,n("UqcF").f=J,E.f=tt,i&&!n("LQAc")&&c(X,"propertyIsEnumerable",J,!0),d.f=function(t){return Z(h(t))}),a(a.G+a.W+a.F*!N,{Symbol:F});for(var et="hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","),nt=0;et.length>nt;)h(et[nt++]);for(var rt=R(h.store),ot=0;rt.length>ot;)v(rt[ot++]);a(a.S+a.F*!N,"Symbol",{for:function(t){return o(I,t+="")?I[t]:I[t]=F(t)},keyFor:function(t){if(!z(t))throw TypeError(t+" is not a symbol!");for(var e in I)if(I[e]===t)return e},useSetter:function(){H=!0},useSimple:function(){H=!1}}),a(a.S+a.F*!N,"Object",{create:function(t,e){return void 0===e?O(t):B(O(t),e)},defineProperty:Y,defineProperties:B,getOwnPropertyDescriptor:Q,getOwnPropertyNames:$,getOwnPropertySymbols:tt});var it=s((function(){E.f(1)}));a(a.S+a.F*it,"Object",{getOwnPropertySymbols:function(t){return E.f(w(t))}}),L&&a(a.S+a.F*(!N||s((function(){var t=F();return"[null]"!=U([t])||"{}"!=U({a:t})||"{}"!=U(Object(t))}))),"JSON",{stringify:function(t){for(var e,n,r=[t],o=1;arguments.length>o;)r.push(arguments[o++]);if(n=e=r[1],(b(e)||void 0!==t)&&!z(t))return m(e)||(e=function(t,e){if("function"==typeof n&&(e=n.call(this,t,e)),!z(e))return e}),r[1]=e,U.apply(L,r)}}),F.prototype[K]||n("Mukb")(F.prototype,K,F.prototype.valueOf),f(F,"Symbol"),f(Math,"Math",!0),f(r.JSON,"JSON",!0)},kJMx:function(t,e,n){var r=n("zhAb"),o=n("4R4u").concat("length","prototype");e.f=Object.getOwnPropertyNames||function(t){return r(t,o)}},lSNA:function(t,e){t.exports=function(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}},lw3w:function(t,e,n){var r;t.exports=(r=n("rzlk"))&&r.default||r},m0Pp:function(t,e,n){var r=n("2OiF");t.exports=function(t,e,n){if(r(t),void 0===e)return t;switch(n){case 1:return function(n){return t.call(e,n)};case 2:return function(n,r){return t.call(e,n,r)};case 3:return function(n,r,o){return t.call(e,n,r,o)}}return function(){return t.apply(e,arguments)}}},nGyu:function(t,e,n){var r=n("K0xU")("unscopables"),o=Array.prototype;null==o[r]&&n("Mukb")(o,r,{}),t.exports=function(t){o[r][t]=!0}},nICZ:function(t,e){t.exports=function(t){try{return{e:!1,v:t()}}catch(e){return{e:!0,v:e}}}},ne8i:function(t,e,n){var r=n("RYi7"),o=Math.min;t.exports=function(t){return t>0?o(r(t),9007199254740991):0}},nh4g:function(t,e,n){t.exports=!n("eeVq")((function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a}))},npZl:function(t,e,n){"use strict";var r=n("TqRt");n("Wbzz"),r(n("9hXx"))},ol8x:function(t,e,n){var r=n("dyZX").navigator;t.exports=r&&r.userAgent||""},pCP8:function(t,e,n){e.components={"component---src-pages-about-js":function(){return Promise.all([n.e(0),n.e(2)]).then(n.bind(null,"3XHS"))},"component---src-pages-index-js":function(){return Promise.all([n.e(0),n.e(3)]).then(n.bind(null,"RXBc"))},"component---src-pages-news-js":function(){return Promise.all([n.e(0),n.e(4)]).then(n.bind(null,"FJi0"))},"component---src-pages-performance-js":function(){return Promise.all([n.e(0),n.e(5)]).then(n.bind(null,"oweT"))}}},pIFo:function(t,e,n){"use strict";var r=n("y3w9"),o=n("S/j/"),i=n("ne8i"),a=n("RYi7"),c=n("A5AN"),u=n("Xxuz"),s=Math.max,l=Math.min,f=Math.floor,p=/\$([$&`']|\d\d?|<[^>]*>)/g,h=/\$([$&`']|\d\d?)/g;n("IU+Z")("replace",2,(function(t,e,n,d){return[function(r,o){var i=t(this),a=null==r?void 0:r[e];return void 0!==a?a.call(r,i,o):n.call(String(i),r,o)},function(t,e){var o=d(n,t,this,e);if(o.done)return o.value;var f=r(t),p=String(this),h="function"==typeof e;h||(e=String(e));var g=f.global;if(g){var m=f.unicode;f.lastIndex=0}for(var y=[];;){var b=u(f,p);if(null===b)break;if(y.push(b),!g)break;""===String(b[0])&&(f.lastIndex=c(p,i(f.lastIndex),m))}for(var w,_="",x=0,S=0;S<y.length;S++){b=y[S];for(var O=String(b[0]),P=s(l(a(b.index),p.length),0),k=[],E=1;E<b.length;E++)k.push(void 0===(w=b[E])?w:String(w));var j=b.groups;if(h){var R=[O].concat(k,P,p);void 0!==j&&R.push(j);var C=String(e.apply(void 0,R))}else C=v(O,p,P,k,j,e);P>=x&&(_+=p.slice(x,P)+C,x=P+O.length)}return _+p.slice(x)}];function v(t,e,r,i,a,c){var u=r+t.length,s=i.length,l=h;return void 0!==a&&(a=o(a),l=p),n.call(c,l,(function(n,o){var c;switch(o.charAt(0)){case"$":return"$";case"&":return t;case"`":return e.slice(0,r);case"'":return e.slice(u);case"<":c=a[o.slice(1,-1)];break;default:var l=+o;if(0===l)return n;if(l>s){var p=f(l/10);return 0===p?n:p<=s?void 0===i[p-1]?o.charAt(1):i[p-1]+o.charAt(1):n}c=i[l-1]}return void 0===c?"":c}))}}))},pVnL:function(t,e){function n(){return t.exports=n=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(t[r]=n[r])}return t},n.apply(this,arguments)}t.exports=n},pWkz:function(t,e,n){"use strict";n("OG14"),e.__esModule=!0,e.onRouteUpdate=void 0;e.onRouteUpdate=function(t,e){var n=t.location;if(void 0===e&&(e={}),"function"!=typeof ga)return null;if(n&&void 0!==window.excludeGAPaths&&window.excludeGAPaths.some((function(t){return t.test(n.pathname)})))return null;var r=Math.max(32,e.pageTransitionDelay||0);return setTimeout((function(){var t=n?n.pathname+n.search+n.hash:void 0;window.ga("set","page",t),window.ga("send","pageview")}),r),null}},pbhE:function(t,e,n){"use strict";var r=n("2OiF");function o(t){var e,n;this.promise=new t((function(t,r){if(void 0!==e||void 0!==n)throw TypeError("Bad Promise constructor");e=t,n=r})),this.resolve=r(e),this.reject=r(n)}t.exports.f=function(t){return new o(t)}},"q5+k":function(t,e,n){"use strict";n("dZ+Y");var r=n("TqRt");e.__esModule=!0,e.default=void 0;var o,i=r(n("Bp9Y")),a="clearTimeout",c=function(t){var e=(new Date).getTime(),n=Math.max(0,16-(e-s)),r=setTimeout(t,n);return s=e,r},u=function(t,e){return t+(t?e[0].toUpperCase()+e.substr(1):e)+"AnimationFrame"};i.default&&["","webkit","moz","o","ms"].some((function(t){var e=u(t,"request");if(e in window)return a=u(t,"cancel"),c=function(t){return window[e](t)}}));var s=(new Date).getTime();(o=function(t){return c(t)}).cancel=function(t){window[a]&&"function"==typeof window[a]&&window[a](t)};var l=o;e.default=l,t.exports=e.default},qKvR:function(t,e,n){"use strict";n("LK8F"),n("SRfc"),n("f3/d"),n("V+eJ"),n("pIFo");var r=n("VbXa"),o=n.n(r),i=n("q1tI");n("Oyvg"),n("bWfx"),n("KKXr"),n("8+KV");var a=function(){function t(t){this.isSpeedy=void 0===t.speedy||t.speedy,this.tags=[],this.ctr=0,this.nonce=t.nonce,this.key=t.key,this.container=t.container,this.before=null}var e=t.prototype;return e.insert=function(t){if(this.ctr%(this.isSpeedy?65e3:1)==0){var e,n=function(t){var e=document.createElement("style");return e.setAttribute("data-emotion",t.key),void 0!==t.nonce&&e.setAttribute("nonce",t.nonce),e.appendChild(document.createTextNode("")),e}(this);e=0===this.tags.length?this.before:this.tags[this.tags.length-1].nextSibling,this.container.insertBefore(n,e),this.tags.push(n)}var r=this.tags[this.tags.length-1];if(this.isSpeedy){var o=function(t){if(t.sheet)return t.sheet;for(var e=0;e<document.styleSheets.length;e++)if(document.styleSheets[e].ownerNode===t)return document.styleSheets[e]}(r);try{var i=105===t.charCodeAt(1)&&64===t.charCodeAt(0);o.insertRule(t,i?0:o.cssRules.length)}catch(a){0}}else r.appendChild(document.createTextNode(t));this.ctr++},e.flush=function(){this.tags.forEach((function(t){return t.parentNode.removeChild(t)})),this.tags=[],this.ctr=0},t}();n("Tze0");var c=function(t){function e(t,e,r){var o=e.trim().split(d);e=o;var i=o.length,a=t.length;switch(a){case 0:case 1:var c=0;for(t=0===a?"":t[0]+" ";c<i;++c)e[c]=n(t,e[c],r).trim();break;default:var u=c=0;for(e=[];c<i;++c)for(var s=0;s<a;++s)e[u++]=n(t[s]+" ",o[c],r).trim()}return e}function n(t,e,n){var r=e.charCodeAt(0);switch(33>r&&(r=(e=e.trim()).charCodeAt(0)),r){case 38:return e.replace(v,"$1"+t.trim());case 58:return t.trim()+e.replace(v,"$1"+t.trim());default:if(0<1*n&&0<e.indexOf("\f"))return e.replace(v,(58===t.charCodeAt(0)?"":"$1")+t.trim())}return t+e}function r(t,e,n,i){var a=t+";",c=2*e+3*n+4*i;if(944===c){t=a.indexOf(":",9)+1;var u=a.substring(t,a.length-1).trim();return u=a.substring(0,t).trim()+u+";",1===R||2===R&&o(u,1)?"-webkit-"+u+u:u}if(0===R||2===R&&!o(a,1))return a;switch(c){case 1015:return 97===a.charCodeAt(10)?"-webkit-"+a+a:a;case 951:return 116===a.charCodeAt(3)?"-webkit-"+a+a:a;case 963:return 110===a.charCodeAt(5)?"-webkit-"+a+a:a;case 1009:if(100!==a.charCodeAt(4))break;case 969:case 942:return"-webkit-"+a+a;case 978:return"-webkit-"+a+"-moz-"+a+a;case 1019:case 983:return"-webkit-"+a+"-moz-"+a+"-ms-"+a+a;case 883:if(45===a.charCodeAt(8))return"-webkit-"+a+a;if(0<a.indexOf("image-set(",11))return a.replace(P,"$1-webkit-$2")+a;break;case 932:if(45===a.charCodeAt(4))switch(a.charCodeAt(5)){case 103:return"-webkit-box-"+a.replace("-grow","")+"-webkit-"+a+"-ms-"+a.replace("grow","positive")+a;case 115:return"-webkit-"+a+"-ms-"+a.replace("shrink","negative")+a;case 98:return"-webkit-"+a+"-ms-"+a.replace("basis","preferred-size")+a}return"-webkit-"+a+"-ms-"+a+a;case 964:return"-webkit-"+a+"-ms-flex-"+a+a;case 1023:if(99!==a.charCodeAt(8))break;return"-webkit-box-pack"+(u=a.substring(a.indexOf(":",15)).replace("flex-","").replace("space-between","justify"))+"-webkit-"+a+"-ms-flex-pack"+u+a;case 1005:return p.test(a)?a.replace(f,":-webkit-")+a.replace(f,":-moz-")+a:a;case 1e3:switch(e=(u=a.substring(13).trim()).indexOf("-")+1,u.charCodeAt(0)+u.charCodeAt(e)){case 226:u=a.replace(b,"tb");break;case 232:u=a.replace(b,"tb-rl");break;case 220:u=a.replace(b,"lr");break;default:return a}return"-webkit-"+a+"-ms-"+u+a;case 1017:if(-1===a.indexOf("sticky",9))break;case 975:switch(e=(a=t).length-10,c=(u=(33===a.charCodeAt(e)?a.substring(0,e):a).substring(t.indexOf(":",7)+1).trim()).charCodeAt(0)+(0|u.charCodeAt(7))){case 203:if(111>u.charCodeAt(8))break;case 115:a=a.replace(u,"-webkit-"+u)+";"+a;break;case 207:case 102:a=a.replace(u,"-webkit-"+(102<c?"inline-":"")+"box")+";"+a.replace(u,"-webkit-"+u)+";"+a.replace(u,"-ms-"+u+"box")+";"+a}return a+";";case 938:if(45===a.charCodeAt(5))switch(a.charCodeAt(6)){case 105:return u=a.replace("-items",""),"-webkit-"+a+"-webkit-box-"+u+"-ms-flex-"+u+a;case 115:return"-webkit-"+a+"-ms-flex-item-"+a.replace(x,"")+a;default:return"-webkit-"+a+"-ms-flex-line-pack"+a.replace("align-content","").replace(x,"")+a}break;case 973:case 989:if(45!==a.charCodeAt(3)||122===a.charCodeAt(4))break;case 931:case 953:if(!0===O.test(t))return 115===(u=t.substring(t.indexOf(":")+1)).charCodeAt(0)?r(t.replace("stretch","fill-available"),e,n,i).replace(":fill-available",":stretch"):a.replace(u,"-webkit-"+u)+a.replace(u,"-moz-"+u.replace("fill-",""))+a;break;case 962:if(a="-webkit-"+a+(102===a.charCodeAt(5)?"-ms-"+a:"")+a,211===n+i&&105===a.charCodeAt(13)&&0<a.indexOf("transform",10))return a.substring(0,a.indexOf(";",27)+1).replace(h,"$1-webkit-$2")+a}return a}function o(t,e){var n=t.indexOf(1===e?":":"{"),r=t.substring(0,3!==e?n:10);return n=t.substring(n+1,t.length-1),F(2!==e?r:r.replace(S,"$1"),n,e)}function i(t,e){var n=r(e,e.charCodeAt(0),e.charCodeAt(1),e.charCodeAt(2));return n!==e+";"?n.replace(_," or ($1)").substring(4):"("+e+")"}function a(t,e,n,r,o,i,a,c,s,l){for(var f,p=0,h=e;p<T;++p)switch(f=A[p].call(u,t,h,n,r,o,i,a,c,s,l)){case void 0:case!1:case!0:case null:break;default:h=f}if(h!==e)return h}function c(t){return void 0!==(t=t.prefix)&&(F=null,t?"function"!=typeof t?R=1:(R=2,F=t):R=0),c}function u(t,n){var c=t;if(33>c.charCodeAt(0)&&(c=c.trim()),c=[c],0<T){var u=a(-1,n,c,c,E,k,0,0,0,0);void 0!==u&&"string"==typeof u&&(n=u)}var f=function t(n,c,u,f,p){for(var h,d,v,b,_,x=0,S=0,O=0,P=0,A=0,F=0,U=v=h=0,M=0,K=0,D=0,I=0,W=u.length,q=W-1,X="",N="",V="",H="";M<W;){if(d=u.charCodeAt(M),M===q&&0!==S+P+O+x&&(0!==S&&(d=47===S?10:47),P=O=x=0,W++,q++),0===S+P+O+x){if(M===q&&(0<K&&(X=X.replace(l,"")),0<X.trim().length)){switch(d){case 32:case 9:case 59:case 13:case 10:break;default:X+=u.charAt(M)}d=59}switch(d){case 123:for(h=(X=X.trim()).charCodeAt(0),v=1,I=++M;M<W;){switch(d=u.charCodeAt(M)){case 123:v++;break;case 125:v--;break;case 47:switch(d=u.charCodeAt(M+1)){case 42:case 47:t:{for(U=M+1;U<q;++U)switch(u.charCodeAt(U)){case 47:if(42===d&&42===u.charCodeAt(U-1)&&M+2!==U){M=U+1;break t}break;case 10:if(47===d){M=U+1;break t}}M=U}}break;case 91:d++;case 40:d++;case 34:case 39:for(;M++<q&&u.charCodeAt(M)!==d;);}if(0===v)break;M++}switch(v=u.substring(I,M),0===h&&(h=(X=X.replace(s,"").trim()).charCodeAt(0)),h){case 64:switch(0<K&&(X=X.replace(l,"")),d=X.charCodeAt(1)){case 100:case 109:case 115:case 45:K=c;break;default:K=C}if(I=(v=t(c,K,v,d,p+1)).length,0<T&&(_=a(3,v,K=e(C,X,D),c,E,k,I,d,p,f),X=K.join(""),void 0!==_&&0===(I=(v=_.trim()).length)&&(d=0,v="")),0<I)switch(d){case 115:X=X.replace(w,i);case 100:case 109:case 45:v=X+"{"+v+"}";break;case 107:v=(X=X.replace(g,"$1 $2"))+"{"+v+"}",v=1===R||2===R&&o("@"+v,3)?"@-webkit-"+v+"@"+v:"@"+v;break;default:v=X+v,112===f&&(N+=v,v="")}else v="";break;default:v=t(c,e(c,X,D),v,f,p+1)}V+=v,v=D=K=U=h=0,X="",d=u.charCodeAt(++M);break;case 125:case 59:if(1<(I=(X=(0<K?X.replace(l,""):X).trim()).length))switch(0===U&&(h=X.charCodeAt(0),45===h||96<h&&123>h)&&(I=(X=X.replace(" ",":")).length),0<T&&void 0!==(_=a(1,X,c,n,E,k,N.length,f,p,f))&&0===(I=(X=_.trim()).length)&&(X="\0\0"),h=X.charCodeAt(0),d=X.charCodeAt(1),h){case 0:break;case 64:if(105===d||99===d){H+=X+u.charAt(M);break}default:58!==X.charCodeAt(I-1)&&(N+=r(X,h,d,X.charCodeAt(2)))}D=K=U=h=0,X="",d=u.charCodeAt(++M)}}switch(d){case 13:case 10:47===S?S=0:0===1+h&&107!==f&&0<X.length&&(K=1,X+="\0"),0<T*L&&a(0,X,c,n,E,k,N.length,f,p,f),k=1,E++;break;case 59:case 125:if(0===S+P+O+x){k++;break}default:switch(k++,b=u.charAt(M),d){case 9:case 32:if(0===P+x+S)switch(A){case 44:case 58:case 9:case 32:b="";break;default:32!==d&&(b=" ")}break;case 0:b="\\0";break;case 12:b="\\f";break;case 11:b="\\v";break;case 38:0===P+S+x&&(K=D=1,b="\f"+b);break;case 108:if(0===P+S+x+j&&0<U)switch(M-U){case 2:112===A&&58===u.charCodeAt(M-3)&&(j=A);case 8:111===F&&(j=F)}break;case 58:0===P+S+x&&(U=M);break;case 44:0===S+O+P+x&&(K=1,b+="\r");break;case 34:case 39:0===S&&(P=P===d?0:0===P?d:P);break;case 91:0===P+S+O&&x++;break;case 93:0===P+S+O&&x--;break;case 41:0===P+S+x&&O--;break;case 40:if(0===P+S+x){if(0===h)switch(2*A+3*F){case 533:break;default:h=1}O++}break;case 64:0===S+O+P+x+U+v&&(v=1);break;case 42:case 47:if(!(0<P+x+O))switch(S){case 0:switch(2*d+3*u.charCodeAt(M+1)){case 235:S=47;break;case 220:I=M,S=42}break;case 42:47===d&&42===A&&I+2!==M&&(33===u.charCodeAt(I+2)&&(N+=u.substring(I,M+1)),b="",S=0)}}0===S&&(X+=b)}F=A,A=d,M++}if(0<(I=N.length)){if(K=c,0<T&&(void 0!==(_=a(2,N,K,n,E,k,I,f,p,f))&&0===(N=_).length))return H+N+V;if(N=K.join(",")+"{"+N+"}",0!=R*j){switch(2!==R||o(N,2)||(j=0),j){case 111:N=N.replace(y,":-moz-$1")+N;break;case 112:N=N.replace(m,"::-webkit-input-$1")+N.replace(m,"::-moz-$1")+N.replace(m,":-ms-input-$1")+N}j=0}}return H+N+V}(C,c,n,0,0);return 0<T&&(void 0!==(u=a(-2,f,c,c,E,k,f.length,0,0,0))&&(f=u)),"",j=0,k=E=1,f}var s=/^\0+/g,l=/[\0\r\f]/g,f=/: */g,p=/zoo|gra/,h=/([,: ])(transform)/g,d=/,\r+?/g,v=/([\t\r\n ])*\f?&/g,g=/@(k\w+)\s*(\S*)\s*/,m=/::(place)/g,y=/:(read-only)/g,b=/[svh]\w+-[tblr]{2}/,w=/\(\s*(.*)\s*\)/g,_=/([\s\S]*?);/g,x=/-self|flex-/g,S=/[^]*?(:[rp][el]a[\w-]+)[^]*/,O=/stretch|:\s*\w+\-(?:conte|avail)/,P=/([^-])(image-set\()/,k=1,E=1,j=0,R=1,C=[],A=[],T=0,F=null,L=0;return u.use=function t(e){switch(e){case void 0:case null:T=A.length=0;break;default:if("function"==typeof e)A[T++]=e;else if("object"==typeof e)for(var n=0,r=e.length;n<r;++n)t(e[n]);else L=0|!!e}return t},u.set=c,void 0!==t&&c(t),u};n("rGqo"),n("yt8O"),n("Btvt"),n("XfO3"),n("EK0E");function u(t){t&&s.current.insert(t+"}")}var s={current:null},l=function(t,e,n,r,o,i,a,c,l,f){switch(t){case 1:switch(e.charCodeAt(0)){case 64:return s.current.insert(e+";"),"";case 108:if(98===e.charCodeAt(2))return""}break;case 2:if(0===c)return e+"/*|*/";break;case 3:switch(c){case 102:case 112:return s.current.insert(n[0]+e),"";default:return e+(0===f?"/*|*/":"")}case-2:e.split("/*|*/}").forEach(u)}},f=function(t){void 0===t&&(t={});var e,n=t.key||"css";void 0!==t.prefix&&(e={prefix:t.prefix});var r=new c(e);var o,i={};o=t.container||document.head;var u,f=document.querySelectorAll("style[data-emotion-"+n+"]");Array.prototype.forEach.call(f,(function(t){t.getAttribute("data-emotion-"+n).split(" ").forEach((function(t){i[t]=!0})),t.parentNode!==o&&o.appendChild(t)})),r.use(t.stylisPlugins)(l),u=function(t,e,n,o){var i=e.name;s.current=n,r(t,e.styles),o&&(p.inserted[i]=!0)};var p={key:n,sheet:new a({key:n,container:o,nonce:t.nonce,speedy:t.speedy}),nonce:t.nonce,inserted:i,registered:{},insert:u};return p},p=n("SIPS"),h=n("MiSq");n.d(e,"a",(function(){return x})),n.d(e,"b",(function(){return v})),n.d(e,"c",(function(){return _})),n.d(e,"d",(function(){return g}));var d=Object(i.createContext)("undefined"!=typeof HTMLElement?f():null),v=Object(i.createContext)({}),g=(d.Provider,function(t){return Object(i.forwardRef)((function(e,n){return Object(i.createElement)(d.Consumer,null,(function(r){return t(e,r,n)}))}))}),m="__EMOTION_TYPE_PLEASE_DO_NOT_USE__",y=Object.prototype.hasOwnProperty,b=function(t,e,n,r){var o=null===n?e.css:e.css(n);"string"==typeof o&&void 0!==t.registered[o]&&(o=t.registered[o]);var a=e[m],c=[o],u="";"string"==typeof e.className?u=Object(p.a)(t.registered,c,e.className):null!=e.className&&(u=e.className+" ");var s=Object(h.a)(c);Object(p.b)(t,s,"string"==typeof a);u+=t.key+"-"+s.name;var l={};for(var f in e)y.call(e,f)&&"css"!==f&&f!==m&&(l[f]=e[f]);return l.ref=r,l.className=u,Object(i.createElement)(a,l)},w=g((function(t,e,n){return"function"==typeof t.css?Object(i.createElement)(v.Consumer,null,(function(r){return b(e,t,r,n)})):b(e,t,null,n)}));var _=function(t,e){var n=arguments;if(null==e||!y.call(e,"css"))return i.createElement.apply(void 0,n);var r=n.length,o=new Array(r);o[0]=w;var a={};for(var c in e)y.call(e,c)&&(a[c]=e[c]);a[m]=t,o[1]=a;for(var u=2;u<r;u++)o[u]=n[u];return i.createElement.apply(null,o)},x=g((function(t,e){var n=t.styles;if("function"==typeof n)return Object(i.createElement)(v.Consumer,null,(function(t){var r=Object(h.a)([n(t)]);return Object(i.createElement)(S,{serialized:r,cache:e})}));var r=Object(h.a)([n]);return Object(i.createElement)(S,{serialized:r,cache:e})})),S=function(t){function e(e,n,r){return t.call(this,e,n,r)||this}o()(e,t);var n=e.prototype;return n.componentDidMount=function(){this.sheet=new a({key:this.props.cache.key+"-global",nonce:this.props.cache.sheet.nonce,container:this.props.cache.sheet.container});var t=document.querySelector("style[data-emotion-"+this.props.cache.key+'="'+this.props.serialized.name+'"]');null!==t&&this.sheet.tags.push(t),this.props.cache.sheet.tags.length&&(this.sheet.before=this.props.cache.sheet.tags[0]),this.insertStyles()},n.componentDidUpdate=function(t){t.serialized.name!==this.props.serialized.name&&this.insertStyles()},n.insertStyles=function(){if(void 0!==this.props.serialized.next&&Object(p.b)(this.props.cache,this.props.serialized.next,!0),this.sheet.tags.length){var t=this.sheet.tags[this.sheet.tags.length-1].nextElementSibling;this.sheet.before=t,this.sheet.flush()}this.props.cache.insert("",this.props.serialized,this.sheet,!1)},n.componentWillUnmount=function(){this.sheet.flush()},n.render=function(){return null},e}(i.Component),O=function t(e){for(var n=e.length,r=0,o="";r<n;r++){var i=e[r];if(null!=i){var a=void 0;switch(typeof i){case"boolean":break;case"object":if(Array.isArray(i))a=t(i);else for(var c in a="",i)i[c]&&c&&(a&&(a+=" "),a+=c);break;default:a=i}a&&(o&&(o+=" "),o+=a)}}return o};function P(t,e,n){var r=[],o=Object(p.a)(t,r,n);return r.length<2?n:o+e(r)}g((function(t,e){return Object(i.createElement)(v.Consumer,null,(function(n){var r=function(){for(var t=arguments.length,n=new Array(t),r=0;r<t;r++)n[r]=arguments[r];var o=Object(h.a)(n,e.registered);return Object(p.b)(e,o,!1),e.key+"-"+o.name},o={css:r,cx:function(){for(var t=arguments.length,n=new Array(t),o=0;o<t;o++)n[o]=arguments[o];return P(e.registered,r,O(n))},theme:n},i=t.children(o);return!0,i}))}))},qncB:function(t,e,n){var r=n("XKFU"),o=n("vhPU"),i=n("eeVq"),a=n("/e88"),c="["+a+"]",u=RegExp("^"+c+c+"*"),s=RegExp(c+c+"*$"),l=function(t,e,n){var o={},c=i((function(){return!!a[t]()||"​…"!="​…"[t]()})),u=o[t]=c?e(f):a[t];n&&(o[n]=u),r(r.P+r.F*c,"String",o)},f=l.trim=function(t,e){return t=String(o(t)),1&e&&(t=t.replace(u,"")),2&e&&(t=t.replace(s,"")),t};t.exports=l},quPj:function(t,e,n){var r=n("0/R4"),o=n("LZWt"),i=n("K0xU")("match");t.exports=function(t){var e;return r(t)&&(void 0!==(e=t[i])?!!e:"RegExp"==o(t))}},rE2o:function(t,e,n){n("OnI7")("asyncIterator")},rGqo:function(t,e,n){for(var r=n("yt8O"),o=n("DVgA"),i=n("KroJ"),a=n("dyZX"),c=n("Mukb"),u=n("hPIQ"),s=n("K0xU"),l=s("iterator"),f=s("toStringTag"),p=u.Array,h={CSSRuleList:!0,CSSStyleDeclaration:!1,CSSValueList:!1,ClientRectList:!1,DOMRectList:!1,DOMStringList:!1,DOMTokenList:!0,DataTransferItemList:!1,FileList:!1,HTMLAllCollection:!1,HTMLCollection:!1,HTMLFormElement:!1,HTMLSelectElement:!1,MediaList:!0,MimeTypeArray:!1,NamedNodeMap:!1,NodeList:!0,PaintRequestList:!1,Plugin:!1,PluginArray:!1,SVGLengthList:!1,SVGNumberList:!1,SVGPathSegList:!1,SVGPointList:!1,SVGStringList:!1,SVGTransformList:!1,SourceBufferList:!1,StyleSheetList:!0,TextTrackCueList:!1,TextTrackList:!1,TouchList:!1},d=o(h),v=0;v<d.length;v++){var g,m=d[v],y=h[m],b=a[m],w=b&&b.prototype;if(w&&(w[l]||c(w,l,p),w[f]||c(w,f,m),u[m]=p,y))for(g in r)w[g]||i(w,g,r[g],!0)}},raBC:function(t,e,n){"use strict";var r=n("TqRt");e.__esModule=!0,e.default=void 0;var o=function(){};r(n("Bp9Y")).default&&(o=document.addEventListener?function(t,e,n,r){return t.addEventListener(e,n,r||!1)}:document.attachEvent?function(t,e,n){return t.attachEvent("on"+e,(function(e){(e=e||window.event).target=e.target||e.srcElement,e.currentTarget=t,n.call(t,e)}))}:void 0);var i=o;e.default=i,t.exports=e.default},rvZc:function(t,e,n){"use strict";var r=n("XKFU"),o=n("ne8i"),i=n("0sh+"),a="".endsWith;r(r.P+r.F*n("UUeW")("endsWith"),"String",{endsWith:function(t){var e=i(this,t,"endsWith"),n=arguments.length>1?arguments[1]:void 0,r=o(e.length),c=void 0===n?r:Math.min(o(n),r),u=String(t);return a?a.call(e,u,c):e.slice(c-u.length,c)===u}})},rzlk:function(t,e,n){"use strict";n.r(e);n("91GP");var r=n("q1tI"),o=n.n(r),i=n("IOVJ");e.default=function(t){var e=t.location,n=t.pageResources;return n?o.a.createElement(i.a,Object.assign({location:e,pageResources:n},n.json)):null}},s5qY:function(t,e,n){var r=n("0/R4");t.exports=function(t,e){if(!r(t)||t._t!==e)throw TypeError("Incompatible receiver, "+e+" required!");return t}},sMXx:function(t,e,n){"use strict";var r=n("Ugos");n("XKFU")({target:"RegExp",proto:!0,forced:r!==/./.exec},{exec:r})},vKrd:function(t,e,n){var r=n("y3w9"),o=n("0/R4"),i=n("pbhE");t.exports=function(t,e){if(r(t),o(e)&&e.constructor===t)return e;var n=i.f(t);return(0,n.resolve)(e),n.promise}},vf9c:function(t){t.exports=JSON.parse("[]")},vhPU:function(t,e){t.exports=function(t){if(null==t)throw TypeError("Can't call method on  "+t);return t}},w2a5:function(t,e,n){var r=n("aCFj"),o=n("ne8i"),i=n("d/Gc");t.exports=function(t){return function(e,n,a){var c,u=r(e),s=o(u.length),l=i(a,s);if(t&&n!=n){for(;s>l;)if((c=u[l++])!=c)return!0}else for(;s>l;l++)if((t||l in u)&&u[l]===n)return t||l||0;return!t&&-1}}},wCsR:function(t,e,n){"use strict";var r=n("ZD67"),o=n("s5qY");n("4LiD")("WeakSet",(function(t){return function(){return t(this,arguments.length>0?arguments[0]:void 0)}}),{add:function(t){return r.def(o(this,"WeakSet"),t,!0)}},r,!1,!0)},wmvG:function(t,e,n){"use strict";var r=n("hswa").f,o=n("Kuth"),i=n("3Lyj"),a=n("m0Pp"),c=n("9gX7"),u=n("SlkY"),s=n("Afnz"),l=n("1TsA"),f=n("elZq"),p=n("nh4g"),h=n("Z6vF").fastKey,d=n("s5qY"),v=p?"_s":"size",g=function(t,e){var n,r=h(e);if("F"!==r)return t._i[r];for(n=t._f;n;n=n.n)if(n.k==e)return n};t.exports={getConstructor:function(t,e,n,s){var l=t((function(t,r){c(t,l,e,"_i"),t._t=e,t._i=o(null),t._f=void 0,t._l=void 0,t[v]=0,null!=r&&u(r,n,t[s],t)}));return i(l.prototype,{clear:function(){for(var t=d(this,e),n=t._i,r=t._f;r;r=r.n)r.r=!0,r.p&&(r.p=r.p.n=void 0),delete n[r.i];t._f=t._l=void 0,t[v]=0},delete:function(t){var n=d(this,e),r=g(n,t);if(r){var o=r.n,i=r.p;delete n._i[r.i],r.r=!0,i&&(i.n=o),o&&(o.p=i),n._f==r&&(n._f=o),n._l==r&&(n._l=i),n[v]--}return!!r},forEach:function(t){d(this,e);for(var n,r=a(t,arguments.length>1?arguments[1]:void 0,3);n=n?n.n:this._f;)for(r(n.v,n.k,this);n&&n.r;)n=n.p},has:function(t){return!!g(d(this,e),t)}}),p&&r(l.prototype,"size",{get:function(){return d(this,e)[v]}}),l},def:function(t,e,n){var r,o,i=g(t,e);return i?i.v=n:(t._l=i={i:o=h(e,!0),k:e,v:n,p:r=t._l,n:void 0,r:!1},t._f||(t._f=i),r&&(r.n=i),t[v]++,"F"!==o&&(t._i[o]=i)),t},getEntry:g,setStrong:function(t,e,n){s(t,e,(function(t,n){this._t=d(t,e),this._k=n,this._l=void 0}),(function(){for(var t=this._k,e=this._l;e&&e.r;)e=e.p;return this._t&&(this._l=e=e?e.n:this._t._f)?l(0,"keys"==t?e.k:"values"==t?e.v:[e.k,e.v]):(this._t=void 0,l(1))}),n?"entries":"values",!n,!0),f(e)}}},xpql:function(t,e,n){t.exports=!n("nh4g")&&!n("eeVq")((function(){return 7!=Object.defineProperty(n("Iw71")("div"),"a",{get:function(){return 7}}).a}))},xtsi:function(t,e,n){n("VRzm"),n("Btvt");var r=n("LeKB"),o=n("emEt").publicLoader,i=o.getResourcesForPathname,a=o.getResourcesForPathnameSync,c=o.getResourceURLsForPathname,u=o.loadPage,s=o.loadPageSync;e.apiRunner=function(t,e,n,o){void 0===e&&(e={});var l=r.map((function(n){if(n.plugin[t]){e.getResourcesForPathnameSync=a,e.getResourcesForPathname=i,e.getResourceURLsForPathname=c,e.loadPage=u,e.loadPageSync=s;var r=n.plugin[t](e,n.options);return r&&o&&(e=o({args:e,result:r,plugin:n})),r}}));return(l=l.filter((function(t){return void 0!==t}))).length>0?l:n?[n]:[]},e.apiRunnerAsync=function(t,e,n){return r.reduce((function(n,r){return r.plugin[t]?n.then((function(){return r.plugin[t](e,r.options)})):n}),Promise.resolve())}},y3w9:function(t,e,n){var r=n("0/R4");t.exports=function(t){if(!r(t))throw TypeError(t+" is not an object!");return t}},ylqs:function(t,e){var n=0,r=Math.random();t.exports=function(t){return"Symbol(".concat(void 0===t?"":t,")_",(++n+r).toString(36))}},yt8O:function(t,e,n){"use strict";var r=n("nGyu"),o=n("1TsA"),i=n("hPIQ"),a=n("aCFj");t.exports=n("Afnz")(Array,"Array",(function(t,e){this._t=a(t),this._i=0,this._k=e}),(function(){var t=this._t,e=this._k,n=this._i++;return!t||n>=t.length?(this._t=void 0,o(1)):o(0,"keys"==e?n:"values"==e?t[n]:[n,t[n]])}),"values"),i.Arguments=i.Array,r("keys"),r("values"),r("entries")},zRwo:function(t,e,n){var r=n("6FMO");t.exports=function(t,e){return new(r(t))(e)}},zhAb:function(t,e,n){var r=n("aagx"),o=n("aCFj"),i=n("w2a5")(!1),a=n("YTvA")("IE_PROTO");t.exports=function(t,e){var n,c=o(t),u=0,s=[];for(n in c)n!=a&&r(c,n)&&s.push(n);for(;e.length>u;)r(c,n=e[u++])&&(~i(s,n)||s.push(n));return s}}},[["UxWs",7,6,0]]]);
+//# sourceMappingURL=app-2da2270a07d62743bcd4.js.map
\ No newline at end of file
diff --git a/app-0b96427b0b370a80fa06.js.map b/app-2da2270a07d62743bcd4.js.map
similarity index 99%
rename from app-0b96427b0b370a80fa06.js.map
rename to app-2da2270a07d62743bcd4.js.map
index 4f96d47..3e7760f 100644
--- a/app-0b96427b0b370a80fa06.js.map
+++ b/app-2da2270a07d62743bcd4.js.map
@@ -1 +1 @@
-{"version":3,"sources":["webpack:///./node_modules/gatsby-link/index.js","webpack:///./node_modules/dom-helpers/query/scrollLeft.js","webpack:///./node_modules/core-js/modules/_function-to-string.js","webpack:///./node_modules/core-js/modules/_html.js","webpack:///./node_modules/core-js/modules/es6.object.set-prototype-of.js","webpack:///./node_modules/core-js/modules/_string-ws.js","webpack:///./node_modules/core-js/modules/_is-object.js","webpack:///./node_modules/core-js/modules/es6.array.filter.js","webpack:///./node_modules/core-js/modules/_string-context.js","webpack:///./node_modules/prop-types/factoryWithThrowingShims.js","webpack:///./node_modules/prop-types/index.js","webpack:///./node_modules/core-js/modules/_enum-keys.js","webpack:///./node_modules/core-js/modules/_iter-step.js","webpack:///./node_modules/gatsby-react-router-scroll/StateStorage.js","webpack:///./node_modules/core-js/modules/es6.object.is.js","webpack:///./node_modules/core-js/modules/_a-function.js","webpack:///./node_modules/core-js/modules/es6.function.bind.js","webpack:///./node_modules/core-js/modules/_redefine-all.js","webpack:///./node_modules/gatsby-react-router-scroll/ScrollBehaviorContext.js","webpack:///./node_modules/core-js/modules/_collection.js","webpack:///./node_modules/core-js/modules/_enum-bug-keys.js","webpack:///./node_modules/@emotion/memoize/dist/memoize.browser.esm.js","webpack:///./node_modules/mitt/dist/mitt.es.js","webpack:///./.cache/emitter.js","webpack:///./node_modules/core-js/modules/_species-constructor.js","webpack:///./node_modules/warning/browser.js","webpack:///./node_modules/core-js/modules/_array-species-constructor.js","webpack:///./node_modules/gatsby-react-router-scroll/index.js","webpack:///./node_modules/core-js/modules/es6.array.for-each.js","webpack:///./node_modules/core-js/modules/_bind.js","webpack:///./node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js","webpack:///./node_modules/dom-helpers/query/isWindow.js","webpack:///./node_modules/core-js/modules/_create-property.js","webpack:///./node_modules/core-js/modules/es6.object.assign.js","webpack:///./.cache/react-lifecycles-compat.js","webpack:///./node_modules/core-js/modules/es6.map.js","webpack:///./node_modules/core-js/modules/es6.string.starts-with.js","webpack:///./node_modules/@reach/router/es/lib/history.js","webpack:///./node_modules/core-js/modules/_an-instance.js","webpack:///./node_modules/gatsby-plugin-manifest/get-manifest-pathname.js","webpack:///./node_modules/core-js/modules/_advance-string-index.js","webpack:///./node_modules/core-js/modules/_iter-define.js","webpack:///./node_modules/core-js/modules/_string-at.js","webpack:///./node_modules/dom-helpers/util/inDOM.js","webpack:///./node_modules/core-js/modules/es6.object.to-string.js","webpack:///./node_modules/core-js/modules/_flags.js","webpack:///./node_modules/core-js/modules/_array-methods.js","webpack:///./node_modules/core-js/modules/es6.array.reduce.js","webpack:///./node_modules/core-js/modules/_object-keys.js","webpack:///./node_modules/core-js/modules/es6.weak-map.js","webpack:///./node_modules/core-js/modules/_is-array.js","webpack:///./node_modules/core-js/modules/_object-gopd.js","webpack:///./node_modules/core-js/modules/_object-dps.js","webpack:///./node_modules/core-js/modules/_task.js","webpack:///./gatsby-browser.js","webpack:///./node_modules/core-js/modules/_iter-call.js","webpack:///./node_modules/core-js/modules/es6.object.define-property.js","webpack:///./node_modules/core-js/modules/es6.array.from.js","webpack:///./node_modules/core-js/modules/_classof.js","webpack:///./.cache/page-renderer.js","webpack:///./node_modules/core-js/modules/_fix-re-wks.js","webpack:///./node_modules/gatsby-react-router-scroll/ScrollContainer.js","webpack:///./node_modules/core-js/modules/_dom-create.js","webpack:///./node_modules/core-js/modules/core.get-iterator-method.js","webpack:///./node_modules/core-js/modules/_object-gops.js","webpack:///./node_modules/core-js/modules/_wks.js","webpack:///./node_modules/core-js/modules/es6.regexp.split.js","webpack:///./node_modules/core-js/modules/_redefine.js","webpack:///./node_modules/core-js/modules/_object-create.js","webpack:///./node_modules/core-js/modules/es6.string.includes.js","webpack:///./node_modules/scroll-behavior/lib/index.js","webpack:///./node_modules/core-js/modules/es6.array.is-array.js","webpack:///./node_modules/core-js/modules/_library.js","webpack:///./node_modules/@reach/router/es/lib/utils.js","webpack:///./node_modules/core-js/modules/_cof.js","webpack:///./.cache/api-runner-browser-plugins.js","webpack:///./node_modules/core-js/modules/_strict-method.js","webpack:///./node_modules/core-js/modules/_is-array-iter.js","webpack:///./node_modules/@mikaelkristiansson/domready/ready.js","webpack:///./node_modules/core-js/modules/_invoke.js","webpack:///./node_modules/object-assign/index.js","webpack:///./node_modules/@emotion/hash/dist/hash.browser.esm.js","webpack:///./node_modules/@emotion/unitless/dist/unitless.browser.esm.js","webpack:///./node_modules/@emotion/serialize/dist/serialize.browser.esm.js","webpack:///./node_modules/core-js/modules/_hide.js","webpack:///./node_modules/core-js/modules/_wks-ext.js","webpack:///./.cache/register-service-worker.js","webpack:///./node_modules/core-js/modules/es6.regexp.flags.js","webpack:///./node_modules/core-js/modules/es6.regexp.search.js","webpack:///./node_modules/core-js/modules/_object-gpo.js","webpack:///./node_modules/core-js/modules/_wks-define.js","webpack:///./node_modules/scroll-behavior/lib/utils.js","webpack:///./node_modules/core-js/modules/es6.regexp.constructor.js","webpack:///./node_modules/@babel/runtime/helpers/assertThisInitialized.js","webpack:///./node_modules/invariant/browser.js","webpack:///./node_modules/core-js/modules/_iter-create.js","webpack:///./node_modules/core-js/modules/es6.object.keys.js","webpack:///./node_modules/core-js/modules/_to-integer.js","webpack:///./node_modules/core-js/modules/_property-desc.js","webpack:///./node_modules/core-js/modules/_to-object.js","webpack:///./node_modules/@emotion/utils/dist/utils.browser.esm.js","webpack:///./node_modules/core-js/modules/es6.regexp.match.js","webpack:///./node_modules/core-js/modules/_for-of.js","webpack:///./node_modules/core-js/modules/es6.set.js","webpack:///./node_modules/@babel/runtime/helpers/interopRequireDefault.js","webpack:///./node_modules/core-js/modules/es6.string.trim.js","webpack:///./node_modules/core-js/modules/_fails-is-regexp.js","webpack:///./node_modules/core-js/modules/_regexp-exec.js","webpack:///./node_modules/core-js/modules/_object-pie.js","webpack:///./.cache/navigation.js","webpack:///./node_modules/shallow-compare/es/index.js","webpack:///./.cache/ensure-resources.js","webpack:///./.cache/production-app.js","webpack:///./node_modules/core-js/modules/es6.array.index-of.js","webpack:///./node_modules/core-js/modules/es6.promise.js","webpack:///./node_modules/core-js/modules/_shared.js","webpack:///./node_modules/@babel/runtime/helpers/inheritsLoose.js","webpack:///./node_modules/core-js/modules/es6.array.sort.js","webpack:///./node_modules/prop-types/lib/ReactPropTypesSecret.js","webpack:///./.cache/gatsby-browser-entry.js","webpack:///./node_modules/core-js/modules/_export.js","webpack:///./node_modules/core-js/modules/_iter-detect.js","webpack:///./node_modules/core-js/modules/_inherit-if-required.js","webpack:///./node_modules/core-js/modules/es6.string.iterator.js","webpack:///./node_modules/core-js/modules/_object-sap.js","webpack:///./node_modules/core-js/modules/_regexp-exec-abstract.js","webpack:///./node_modules/core-js/modules/_shared-key.js","webpack:///./node_modules/core-js/modules/_iobject.js","webpack:///./.cache/create-react-context.js","webpack:///./node_modules/@reach/router/es/index.js","webpack:///./node_modules/core-js/modules/es7.array.includes.js","webpack:///./node_modules/core-js/modules/_meta.js","webpack:///./node_modules/core-js/modules/_collection-weak.js","webpack:///./node_modules/dom-helpers/query/scrollTop.js","webpack:///./node_modules/core-js/modules/es6.regexp.to-string.js","webpack:///./node_modules/core-js/modules/_to-iobject.js","webpack:///./node_modules/core-js/modules/_has.js","webpack:///./node_modules/core-js/modules/_to-primitive.js","webpack:///./node_modules/core-js/modules/es6.array.map.js","webpack:///./node_modules/dom-helpers/events/off.js","webpack:///./.cache/strip-prefix.js","webpack:///./node_modules/gatsby-link/parse-path.js","webpack:///./node_modules/core-js/modules/_object-assign.js","webpack:///./node_modules/core-js/modules/_to-absolute-index.js","webpack:///./node_modules/core-js/modules/es6.array.find.js","webpack:///./node_modules/core-js/modules/es6.array.some.js","webpack:///./node_modules/core-js/modules/_global.js","webpack:///./node_modules/core-js/modules/_object-gopn-ext.js","webpack:///./node_modules/core-js/modules/es6.date.now.js","webpack:///./node_modules/core-js/modules/_fails.js","webpack:///./node_modules/core-js/modules/_set-species.js","webpack:///./.cache/prefetch.js","webpack:///./.cache/normalize-page-path.js","webpack:///./.cache/find-path.js","webpack:///./.cache/loader.js","webpack:///./node_modules/core-js/modules/_array-reduce.js","webpack:///./node_modules/core-js/modules/es6.function.name.js","webpack:///./node_modules/core-js/modules/_set-to-string-tag.js","webpack:///./node_modules/core-js/modules/_core.js","webpack:///./node_modules/core-js/modules/_same-value.js","webpack:///./node_modules/core-js/modules/_microtask.js","webpack:///./node_modules/core-js/modules/es6.date.to-string.js","webpack:///./node_modules/core-js/modules/es6.object.create.js","webpack:///./node_modules/core-js/modules/_iterators.js","webpack:///./node_modules/core-js/modules/_object-dp.js","webpack:///./node_modules/core-js/modules/_set-proto.js","webpack:///./node_modules/core-js/modules/es6.symbol.js","webpack:///./node_modules/core-js/modules/_object-gopn.js","webpack:///./node_modules/@babel/runtime/helpers/defineProperty.js","webpack:///./.cache/public-page-renderer.js","webpack:///./node_modules/core-js/modules/_ctx.js","webpack:///./node_modules/core-js/modules/_add-to-unscopables.js","webpack:///./node_modules/core-js/modules/_perform.js","webpack:///./node_modules/core-js/modules/_to-length.js","webpack:///./node_modules/core-js/modules/_descriptors.js","webpack:///./node_modules/gatsby-plugin-manifest/gatsby-browser.js","webpack:///./node_modules/core-js/modules/_user-agent.js","webpack:///./.cache/async-requires.js","webpack:///./node_modules/core-js/modules/es6.regexp.replace.js","webpack:///./node_modules/@babel/runtime/helpers/extends.js","webpack:///./node_modules/gatsby-plugin-google-analytics/gatsby-browser.js","webpack:///./node_modules/core-js/modules/_new-promise-capability.js","webpack:///./node_modules/dom-helpers/util/requestAnimationFrame.js","webpack:///./node_modules/@emotion/sheet/dist/sheet.browser.esm.js","webpack:///./node_modules/@emotion/stylis/dist/stylis.browser.esm.js","webpack:///./node_modules/@emotion/cache/dist/cache.browser.esm.js","webpack:///./node_modules/@emotion/core/dist/core.browser.esm.js","webpack:///./node_modules/core-js/modules/_string-trim.js","webpack:///./node_modules/core-js/modules/_is-regexp.js","webpack:///./node_modules/core-js/modules/es7.symbol.async-iterator.js","webpack:///./node_modules/core-js/modules/web.dom.iterable.js","webpack:///./node_modules/dom-helpers/events/on.js","webpack:///./node_modules/core-js/modules/es6.string.ends-with.js","webpack:///./.cache/public-page-renderer-prod.js","webpack:///./node_modules/core-js/modules/_validate-collection.js","webpack:///./node_modules/core-js/modules/es6.regexp.exec.js","webpack:///./node_modules/core-js/modules/_promise-resolve.js","webpack:///./node_modules/core-js/modules/_defined.js","webpack:///./node_modules/core-js/modules/_array-includes.js","webpack:///./node_modules/core-js/modules/es6.weak-set.js","webpack:///./node_modules/core-js/modules/_collection-strong.js","webpack:///./node_modules/core-js/modules/_ie8-dom-define.js","webpack:///./.cache/api-runner-browser.js","webpack:///./node_modules/core-js/modules/_an-object.js","webpack:///./node_modules/core-js/modules/_uid.js","webpack:///./node_modules/core-js/modules/es6.array.iterator.js","webpack:///./node_modules/core-js/modules/_array-species-create.js","webpack:///./node_modules/core-js/modules/_object-keys-internal.js"],"names":["_interopRequireDefault","exports","__esModule","withPrefix","withAssetPrefix","path","concat","replace","join","navigateTo","push","navigate","_objectWithoutPropertiesLoose2","_extends2","_assertThisInitialized2","_inheritsLoose2","_defineProperty2","_propTypes","_react","_router","_parsePath","normalizePath","parsePath","NavLinkPropTypes","activeClassName","string","activeStyle","object","partiallyActive","bool","GatsbyLink","_React$Component","props","_this","call","this","_ref","isPartiallyCurrent","isCurrent","className","filter","Boolean","style","IOSupported","window","IntersectionObserver","state","handleRef","bind","_proto","prototype","componentDidUpdate","prevProps","prevState","to","___loader","enqueue","pathname","componentDidMount","componentWillUnmount","io","_this$io","instance","el","unobserve","disconnect","ref","cb","_this2","innerRef","hasOwnProperty","current","entries","forEach","entry","target","isIntersecting","intersectionRatio","observe","render","_this3","_this$props","_this$props$getProps","getProps","defaultGetProps","_onClick","onClick","_onMouseEnter","onMouseEnter","rest","prefixedTo","createElement","Link","e","hovering","button","defaultPrevented","metaKey","altKey","ctrlKey","shiftKey","preventDefault","Component","propTypes","func","isRequired","showDeprecationWarning","functionName","altFunctionName","version","console","warn","_default","forwardRef","options","___navigate","___push","___replace","node","val","win","_isWindow","undefined","pageXOffset","document","documentElement","scrollLeft","scrollTo","pageYOffset","scrollTop","module","Function","toString","$export","S","setPrototypeOf","set","it","$filter","P","F","callbackfn","arguments","isRegExp","defined","that","searchString","NAME","TypeError","String","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","propName","componentName","location","propFullName","secret","err","Error","name","getShim","ReactPropTypes","array","number","symbol","any","arrayOf","element","elementType","instanceOf","objectOf","oneOf","oneOfType","shape","exact","checkPropTypes","PropTypes","getKeys","gOPS","pIE","result","getSymbols","f","key","symbols","isEnum","i","length","done","value","SessionStorage","read","stateKey","getStateKey","sessionStorage","getItem","JSON","parse","save","storedValue","stringify","setItem","stateKeyBase","is","redefine","src","safe","_scrollBehavior","_history","_StateStorage","shouldUpdateScroll","children","childContextTypes","scrollBehavior","ScrollContext","context","prevRouterProps","routerProps","registerElement","getRouterProps","unregisterElement","addTransitionHook","globalHistory","listen","stateStorage","getCurrentLocation","getChildContext","__navigatingToLink","action","updateScroll","history","stop","Children","only","global","redefineAll","meta","forOf","anInstance","isObject","fails","$iterDetect","setToStringTag","inheritIfRequired","wrapper","methods","common","IS_MAP","IS_WEAK","Base","C","ADDER","proto","O","fixMethod","KEY","fn","a","b","next","HASNT_CHAINING","THROWS_ON_PRIMITIVES","has","ACCEPT_ITERABLES","iter","BUGGY_ZERO","$instance","index","iterable","constructor","clear","getConstructor","NEED","G","W","setStrong","split","cache","arg","emitter","all","Object","create","on","type","handler","off","splice","indexOf","emit","evt","slice","map","mitt","anObject","aFunction","SPECIES","D","isArray","original","Array","_ScrollBehaviorContext","_ScrollContainer","ScrollContainer","$forEach","STRICT","invoke","arraySlice","factories","construct","len","args","n","partArgs","bound","source","excluded","sourceKeys","keys","nodeType","defaultView","parentWindow","$defineProperty","createDesc","assign","polyfill","strong","validate","get","getEntry","v","def","toLength","$startsWith","startsWith","Math","min","search","_extends","getLocation","createHistory","listeners","transitioning","resolveTransition","_onTransitionComplete","listener","popstateListener","addEventListener","removeEventListener","_ref$replace","Date","now","replaceState","pushState","transition","Promise","res","createMemorySource","initialPathname","stack","states","_","uri","_uri$split","_uri$split$","_uri$split2","_uri$split2$","canUseDOM","Constructor","forbiddenField","default","localizedManifests","localizedManifest","find","app","start_url","lang","at","unicode","LIBRARY","hide","Iterators","$iterCreate","getPrototypeOf","ITERATOR","BUGGY","returnThis","DEFAULT","IS_SET","FORCED","IteratorPrototype","getMethod","kind","TAG","DEF_VALUES","VALUES_BUG","$native","$default","$entries","$anyNative","values","toInteger","TO_STRING","pos","s","l","charCodeAt","charAt","classof","test","ignoreCase","multiline","sticky","ctx","IObject","toObject","asc","TYPE","$create","IS_FILTER","IS_SOME","IS_EVERY","IS_FIND_INDEX","NO_HOLES","$this","self","$reduce","reduce","$keys","enumBugKeys","InternalMap","each","weak","NATIVE_WEAK_MAP","IS_IE11","ActiveXObject","getWeak","isExtensible","uncaughtFrozenStore","ufstore","data","_i","$WeakMap","method","_f","cof","toIObject","toPrimitive","IE8_DOM_DEFINE","gOPD","getOwnPropertyDescriptor","dP","defineProperties","Properties","defer","channel","port","html","cel","process","setTask","setImmediate","clearTask","clearImmediate","MessageChannel","Dispatch","counter","queue","run","id","event","nextTick","port2","port1","onmessage","postMessage","importScripts","appendChild","removeChild","setTimeout","iterator","ret","defineProperty","isArrayIter","createProperty","getIterFn","from","arrayLike","step","aLen","mapfn","mapping","iterFn","ARG","T","B","tryGet","callee","PageRenderer","pathContext","pageContext","pageElement","apiRunner","loader","publicLoader","pageResources","component","page","pop","React","wks","regexpExec","REPLACE_SUPPORTS_NAMED_GROUPS","re","exec","groups","SPLIT_WORKS_WITH_OVERWRITTEN_EXEC","originalExec","apply","SYMBOL","DELEGATES_TO_SYMBOL","DELEGATES_TO_EXEC","execCalled","nativeRegExpMethod","fns","nativeMethod","regexp","str","arg2","forceStringMethod","strfn","rxfn","RegExp","_reactDom","_warning","scrollKey","contextTypes","findDOMNode","getIteratorMethod","getOwnPropertySymbols","store","uid","Symbol","USE_SYMBOL","speciesConstructor","advanceStringIndex","callRegExpExec","$min","$push","SUPPORTS_Y","SPLIT","$split","maybeCallNative","internalSplit","separator","limit","match","lastIndex","lastLength","output","flags","lastLastIndex","splitLimit","separatorCopy","splitter","rx","unicodeMatching","lim","p","q","A","z","SRC","$toString","TPL","inspectSource","isFunction","dPs","IE_PROTO","Empty","createDict","iframeDocument","iframe","display","contentWindow","open","write","lt","close","includes","_off","_on","_scrollLeft","_scrollTop","_requestAnimationFrame","_utils","obj","ScrollBehavior","_restoreScrollRestoration","_oldScrollRestoration","scrollRestoration","_onWindowScroll","_ignoreScrollEvents","_saveWindowPositionHandle","_saveWindowPosition","_windowScrollTarget","_this$_windowScrollTa","xTarget","yTarget","x","y","_cancelCheckWindowScroll","_savePosition","_checkWindowScrollPosition","_checkWindowScrollHandle","scrollToTarget","_numWindowScrollAttempts","resolve","_stateStorage","_getCurrentLocation","_shouldUpdateScroll","isMobileSafari","_scrollElements","_removeTransitionHook","cancel","scrollElement","savePositionHandle","_saveElementPosition","invariant","saveElementPosition","onScroll","_updateElementScroll","_this$_scrollElements","prevContext","_updateWindowScroll","then","startIgnoringScrollEvents","stopIgnoringScrollEvents","_getScrollTarget","_this$_scrollElements2","scrollTarget","_getDefaultScrollTarget","hash","_getSavedScrollTarget","targetElement","getElementById","getElementsByName","scrollIntoView","_target","left","top","substr","pick","routes","default_","uriPathname","uriSegments","segmentize","isRootUri","ranked","rankRoutes","missed","route","params","routeSegments","max","routeSegment","uriSegment","decodeURIComponent","dynamicMatch","paramRe","reservedNames","base","_to$split","toPathname","toQuery","basePathname","toSegments","baseSegments","addQuery","allSegments","segments","segment","insertParams","validateRedirect","isDynamic","sort","rankRoute","score","isRootSegment","isSplat","SEGMENT_POINTS","query","plugin","require","ArrayProto","ie10","navigator","appVersion","_listener","doc","hack","doScroll","loaded","readyState","shift","definition","un","propIsEnumerable","propertyIsEnumerable","test1","getOwnPropertyNames","test2","fromCharCode","test3","letter","shouldUseNative","k","h","animationIterationCount","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","msGridRow","msGridRowSpan","msGridColumn","msGridColumnSpan","fontWeight","lineHeight","opacity","order","orphans","tabSize","widows","zIndex","zoom","WebkitLineClamp","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","hyphenateRegex","animationRegex","isCustomProperty","property","isProcessableValue","processStyleName","styleName","toLowerCase","p1","p2","cursor","styles","handleInterpolation","mergedProps","registered","interpolation","couldBeSelectorInterpolation","__emotion_styles","anim","_key","interpolated","createStringFromObject","previousCursor","cached","labelPattern","stringMode","strings","raw","identifierName","protocol","hostname","error","serviceWorker","register","__BASE_PATH__","reg","installingWorker","installing","log","controller","___swUpdated","___failedResources","reload","catch","configurable","sameValue","regExpExec","SEARCH","$search","previousLastIndex","ObjectProto","core","wksExt","$Symbol","platform","userAgent","gOPN","$flags","$RegExp","re1","re2","CORRECT_NEW","tiRE","piRE","fiU","proxy","ReferenceError","condition","format","c","d","argIndex","framesToPop","descriptor","ceil","floor","isNaN","bitmap","enumerable","writable","getRegisteredStyles","registeredStyles","classNames","rawClassName","insertStyles","serialized","isStringTag","inserted","insert","sheet","MATCH","$match","fullUnicode","matchStr","BREAK","RETURN","add","$trim","regexpFlags","nativeExec","nativeReplace","patchedExec","UPDATES_LAST_INDEX_WRONG","NPCG_INCLUDED","reCopy","redirectMap","redirects","redirect","fromPath","maybeRedirect","toPath","onPreRouteUpdate","prevLocation","onRouteUpdate","timeoutId","loadPage","status","href","webpackCompilationHash","___webpackCompilationHash","gatsbyApi","reachNavigate","clearTimeout","results","getSavedScrollPosition","decodeURI","RouteAnnouncer","announcementRef","createRef","nextProps","requestAnimationFrame","pageName","title","pageHeadings","getElementsByTagName","textContent","newAnnouncement","innerText","position","width","height","padding","overflow","clip","whiteSpace","border","role","aria-live","aria-atomic","RouteUpdates","shouldFireRouteUpdate","getSnapshotBeforeUpdate","Fragment","shallowDiffers","EnsureResources","loadPageSync","getDerivedStateFromProps","loadResources","rawPath","setState","shouldComponentUpdate","nextState","json","matchPath","shallowCompare","ProdLoader","asyncRequires","matchPaths","setLoader","setApiRunner","___emitter","apiRunnerAsync","RouteHandler","Provider","baseuri","basepath","LocationHandler","stripPrefix","encodeURI","pagePath","browserLoc","findMatchPath","Root","locationContext","WrappedRoot","NewRoot","renderer","ReactDOM","hydrate","domReady","$indexOf","NEGATIVE_ZERO","searchElement","Internal","newGenericPromiseCapability","OwnPromiseCapability","Wrapper","task","microtask","newPromiseCapabilityModule","perform","promiseResolve","versions","v8","$Promise","isNode","empty","newPromiseCapability","USE_NATIVE","promise","FakePromise","PromiseRejectionEvent","isThenable","notify","isReject","_n","chain","_c","_v","ok","_s","reaction","exited","fail","reject","domain","_h","onHandleUnhandled","enter","exit","onUnhandled","unhandled","isUnhandled","onunhandledrejection","reason","_a","onrejectionhandled","$reject","_d","_w","$resolve","executor","onFulfilled","onRejected","r","capability","$$reject","remaining","$index","alreadyCalled","race","mode","copyright","subClass","superClass","__proto__","$sort","comparefn","prefetchPathname","StaticQueryContext","createContext","StaticQueryDataRenderer","staticQueryData","finalData","StaticQuery","Consumer","useStaticQuery","useContext","graphql","own","out","exp","IS_FORCED","IS_GLOBAL","IS_STATIC","IS_PROTO","IS_BIND","expProto","U","R","SAFE_CLOSING","riter","skipClosing","arr","$at","iterated","_t","point","builtinExec","shared","_objectWithoutProperties","_classCallCheck","_possibleConstructorReturn","_inherits","defaultValue","Ctx","displayName","LocationContext","LocationProvider","_temp","_len","getContext","refs","unlisten","_props$history","componentDidCatch","info","isRedirect","_navigate","unmounted","defaultProps","_ref2","url","BaseContext","baseContext","_React$PureComponent","RouterImpl","_props","_navigate2","primary","_props$component","domProps","clone","cloneElement","FocusWrapper","wrapperProps","PureComponent","FocusContext","_ref3","requestFocus","initialRender","focusHandlerCount","_React$Component2","FocusHandlerImpl","_temp2","_this4","_len2","_key2","shouldFocus","focus","myURIChanged","navigatedUpToMe","contains","activeElement","_this5","_props2","_props2$role","_props2$component","Comp","outline","tabIndex","_ref4","_ref5","_ref6","_props$getProps","anchorProps","shouldNavigate","RedirectRequest","o","redirectTo","_React$Component3","RedirectImpl","_props3","_props3$replace","noThrow","_props4","_ref7","_ref8","_ref9","resolvedPath","stripSlashes","elementPath","$includes","META","setDesc","FREEZE","preventExtensions","setMeta","w","fastKey","onFreeze","createArrayMethod","$has","arrayFind","arrayFindIndex","_l","UncaughtFrozenStore","findUncaughtFrozen","DESCRIPTORS","define","valueOf","$map","eventName","capture","attachEvent","detachEvent","prefix","hashIndex","searchIndex","$assign","K","j","$find","forced","$some","some","__g","windowNames","getWindowNames","getTime","supportedPrefetchStrategy","feature","fakeLink","relList","supports","support","link","setAttribute","onload","onerror","parentNode","req","XMLHttpRequest","send","preFetched","prefetch","pathCache","Map","trimPathname","rawPathname","trimmedPathname","cleanPath","normalizePagePath","findPath","foundPath","preferDefault","m","createPageDataUrl","__PATH_PREFIX__","endsWith","doFetch","onreadystatechange","loadPageDataJson","loadObj","retries","responseText","jsonPayload","payload","notFound","toPageResources","pageData","componentChunkName","BaseLoader","loadComponent","pageDb","inFlightDb","pageDataDb","prefetchTriggered","Set","prefetchCompleted","prefetchDisabled","inFlight","loadAppData","allData","finalResult","createdAt","response","delete","shouldPrefetch","connection","effectiveType","saveData","doesConnectionSupportPrefetch","realPath","doPrefetch","getResourceURLsForPathname","createComponentUrls","isPageNotFound","appData","___chunkMapping","chunk","chunkName","components","pageDataUrl","prefetchHelper","crossOrigin","as","componentUrls","_loader","getResourcesForPathname","getResourcesForPathnameSync","memo","isRight","FProto","nameRE","tag","stat","__e","macrotask","Observer","MutationObserver","WebKitMutationObserver","head","last","flush","parent","standalone","toggle","createTextNode","characterData","DateProto","NaN","Attributes","check","buggy","$fails","wksDefine","enumKeys","_create","gOPNExt","$GOPD","$GOPS","$DP","$JSON","_stringify","HIDDEN","TO_PRIMITIVE","SymbolRegistry","AllSymbols","OPSymbols","QObject","setter","findChild","setSymbolDesc","protoDesc","wrap","sym","_k","isSymbol","$defineProperties","$propertyIsEnumerable","E","$getOwnPropertyDescriptor","$getOwnPropertyNames","names","$getOwnPropertySymbols","IS_OP","$set","es6Symbols","wellKnownSymbols","keyFor","useSetter","useSimple","FAILS_ON_PRIMITIVES","replacer","$replacer","hiddenKeys","UNSCOPABLES","SUBSTITUTION_SYMBOLS","SUBSTITUTION_SYMBOLS_NO_NAMED","REPLACE","$replace","searchValue","replaceValue","functionalReplace","accumulatedResult","nextSourcePosition","matched","captures","namedCaptures","replacerArgs","replacement","getSubstitution","tailPos","ch","pluginOptions","ga","excludeGAPaths","delay","pageTransitionDelay","PromiseCapability","$$resolve","compatRaf","_inDOM","raf","curr","ms","prev","getKey","vendor","toUpperCase","rafKey","StyleSheet","isSpeedy","speedy","tags","ctr","nonce","container","before","rule","_tag","createStyleElement","nextSibling","insertBefore","styleSheets","ownerNode","sheetForTag","isImportRule","insertRule","cssRules","X","trim","ia","Z","substring","L","ja","ka","aa","ba","la","ma","na","ea","oa","H","g","M","u","I","t","J","N","ca","da","fa","Y","ha","Q","use","toSheet","block","Sheet","ruleSheet","content","selectors","parents","line","column","ns","depth","delimiter","stylisOptions","stylis","_insert","nodes","querySelectorAll","getAttribute","stylisPlugins","selector","shouldCache","EmotionCacheContext","HTMLElement","ThemeContext","typePropName","theme","cssProp","css","newProps","Emotion","argsLength","createElementArgArray","Global","InnerGlobal","updater","querySelector","nextElementSibling","classnames","cls","toAdd","merge","cx","ele","spaces","space","ltrim","rtrim","exporter","ALIAS","FORCE","$iterators","TO_STRING_TAG","ArrayValues","DOMIterables","CSSRuleList","CSSStyleDeclaration","CSSValueList","ClientRectList","DOMRectList","DOMStringList","DOMTokenList","DataTransferItemList","FileList","HTMLAllCollection","HTMLCollection","HTMLFormElement","HTMLSelectElement","MediaList","MimeTypeArray","NamedNodeMap","NodeList","PaintRequestList","Plugin","PluginArray","SVGLengthList","SVGNumberList","SVGPathSegList","SVGPointList","SVGStringList","SVGTransformList","SourceBufferList","StyleSheetList","TextTrackCueList","TextTrackList","TouchList","collections","explicit","Collection","srcElement","currentTarget","$endsWith","endPosition","end","ProdPageRenderer","InternalPageRenderer","promiseCapability","toAbsoluteIndex","IS_INCLUDES","fromIndex","$iterDefine","setSpecies","SIZE","plugins","api","defaultReturn","argTransform","previous","px","random","addToUnscopables","Arguments","arrayIndexOf"],"mappings":"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","file":"app-0b96427b0b370a80fa06.js","sourcesContent":["\"use strict\";\n\nrequire(\"core-js/modules/es6.function.bind\");\n\nrequire(\"core-js/modules/es6.array.filter\");\n\nrequire(\"core-js/modules/es6.array.for-each\");\n\nrequire(\"core-js/modules/es6.regexp.replace\");\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.withPrefix = withPrefix;\nexports.withAssetPrefix = withAssetPrefix;\nexports.navigateTo = exports.replace = exports.push = exports.navigate = exports[\"default\"] = void 0;\n\nvar _objectWithoutPropertiesLoose2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectWithoutPropertiesLoose\"));\n\nvar _extends2 = _interopRequireDefault(require(\"@babel/runtime/helpers/extends\"));\n\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\n\nvar _inheritsLoose2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inheritsLoose\"));\n\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _router = require(\"@reach/router\");\n\nvar _parsePath = require(\"./parse-path\");\n\nexports.parsePath = _parsePath.parsePath;\n\nfunction withPrefix(path) {\n  return normalizePath([typeof __BASE_PATH__ !== \"undefined\" ? __BASE_PATH__ : __PATH_PREFIX__, path].join(\"/\"));\n}\n\nfunction withAssetPrefix(path) {\n  return [__PATH_PREFIX__].concat([path.replace(/^\\//, \"\")]).join(\"/\");\n}\n\nfunction normalizePath(path) {\n  return path.replace(/\\/+/g, \"/\");\n}\n\nvar NavLinkPropTypes = {\n  activeClassName: _propTypes[\"default\"].string,\n  activeStyle: _propTypes[\"default\"].object,\n  partiallyActive: _propTypes[\"default\"].bool\n}; // Set up IntersectionObserver\n\nvar createIntersectionObserver = function createIntersectionObserver(el, cb) {\n  var io = new window.IntersectionObserver(function (entries) {\n    entries.forEach(function (entry) {\n      if (el === entry.target) {\n        // Check if element is within viewport, remove listener, destroy observer, and run link callback.\n        // MSEdge doesn't currently support isIntersecting, so also test for  an intersectionRatio > 0\n        if (entry.isIntersecting || entry.intersectionRatio > 0) {\n          io.unobserve(el);\n          io.disconnect();\n          cb();\n        }\n      }\n    });\n  }); // Add element to the observer\n\n  io.observe(el);\n  return {\n    instance: io,\n    el: el\n  };\n};\n\nvar GatsbyLink =\n/*#__PURE__*/\nfunction (_React$Component) {\n  (0, _inheritsLoose2[\"default\"])(GatsbyLink, _React$Component);\n\n  function GatsbyLink(props) {\n    var _this;\n\n    _this = _React$Component.call(this, props) || this; // Default to no support for IntersectionObserver\n\n    (0, _defineProperty2[\"default\"])((0, _assertThisInitialized2[\"default\"])(_this), \"defaultGetProps\", function (_ref) {\n      var isPartiallyCurrent = _ref.isPartiallyCurrent,\n          isCurrent = _ref.isCurrent;\n\n      if (_this.props.partiallyActive ? isPartiallyCurrent : isCurrent) {\n        return {\n          className: [_this.props.className, _this.props.activeClassName].filter(Boolean).join(\" \"),\n          style: (0, _extends2[\"default\"])({}, _this.props.style, {}, _this.props.activeStyle)\n        };\n      }\n\n      return null;\n    });\n    var IOSupported = false;\n\n    if (typeof window !== \"undefined\" && window.IntersectionObserver) {\n      IOSupported = true;\n    }\n\n    _this.state = {\n      IOSupported: IOSupported\n    };\n    _this.handleRef = _this.handleRef.bind((0, _assertThisInitialized2[\"default\"])(_this));\n    return _this;\n  }\n\n  var _proto = GatsbyLink.prototype;\n\n  _proto.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {\n    // Preserve non IO functionality if no support\n    if (this.props.to !== prevProps.to && !this.state.IOSupported) {\n      ___loader.enqueue((0, _parsePath.parsePath)(this.props.to).pathname);\n    }\n  };\n\n  _proto.componentDidMount = function componentDidMount() {\n    // Preserve non IO functionality if no support\n    if (!this.state.IOSupported) {\n      ___loader.enqueue((0, _parsePath.parsePath)(this.props.to).pathname);\n    }\n  };\n\n  _proto.componentWillUnmount = function componentWillUnmount() {\n    if (!this.io) {\n      return;\n    }\n\n    var _this$io = this.io,\n        instance = _this$io.instance,\n        el = _this$io.el;\n    instance.unobserve(el);\n    instance.disconnect();\n  };\n\n  _proto.handleRef = function handleRef(ref) {\n    var _this2 = this;\n\n    if (this.props.innerRef && this.props.innerRef.hasOwnProperty(\"current\")) {\n      this.props.innerRef.current = ref;\n    } else if (this.props.innerRef) {\n      this.props.innerRef(ref);\n    }\n\n    if (this.state.IOSupported && ref) {\n      // If IO supported and element reference found, setup Observer functionality\n      this.io = createIntersectionObserver(ref, function () {\n        ___loader.enqueue((0, _parsePath.parsePath)(_this2.props.to).pathname);\n      });\n    }\n  };\n\n  _proto.render = function render() {\n    var _this3 = this;\n\n    var _this$props = this.props,\n        to = _this$props.to,\n        _this$props$getProps = _this$props.getProps,\n        getProps = _this$props$getProps === void 0 ? this.defaultGetProps : _this$props$getProps,\n        _onClick = _this$props.onClick,\n        _onMouseEnter = _this$props.onMouseEnter,\n        $activeClassName = _this$props.activeClassName,\n        $activeStyle = _this$props.activeStyle,\n        $innerRef = _this$props.innerRef,\n        partiallyActive = _this$props.partiallyActive,\n        state = _this$props.state,\n        replace = _this$props.replace,\n        rest = (0, _objectWithoutPropertiesLoose2[\"default\"])(_this$props, [\"to\", \"getProps\", \"onClick\", \"onMouseEnter\", \"activeClassName\", \"activeStyle\", \"innerRef\", \"partiallyActive\", \"state\", \"replace\"]);\n    var LOCAL_URL = /^\\/(?!\\/)/;\n\n    if (process.env.NODE_ENV !== \"production\" && !LOCAL_URL.test(to)) {\n      console.warn(\"External link \" + to + \" was detected in a Link component. Use the Link component only for internal links. See: https://gatsby.dev/internal-links\");\n    }\n\n    var prefixedTo = withPrefix(to);\n    return _react[\"default\"].createElement(_router.Link, (0, _extends2[\"default\"])({\n      to: prefixedTo,\n      state: state,\n      getProps: getProps,\n      innerRef: this.handleRef,\n      onMouseEnter: function onMouseEnter(e) {\n        if (_onMouseEnter) {\n          _onMouseEnter(e);\n        }\n\n        ___loader.hovering((0, _parsePath.parsePath)(to).pathname);\n      },\n      onClick: function onClick(e) {\n        if (_onClick) {\n          _onClick(e);\n        }\n\n        if (e.button === 0 && // ignore right clicks\n        !_this3.props.target && // let browser handle \"target=_blank\"\n        !e.defaultPrevented && // onClick prevented default\n        !e.metaKey && // ignore clicks with modifier keys...\n        !e.altKey && !e.ctrlKey && !e.shiftKey) {\n          e.preventDefault(); // Make sure the necessary scripts and data are\n          // loaded before continuing.\n\n          navigate(to, {\n            state: state,\n            replace: replace\n          });\n        }\n\n        return true;\n      }\n    }, rest));\n  };\n\n  return GatsbyLink;\n}(_react[\"default\"].Component);\n\nGatsbyLink.propTypes = (0, _extends2[\"default\"])({}, NavLinkPropTypes, {\n  onClick: _propTypes[\"default\"].func,\n  to: _propTypes[\"default\"].string.isRequired,\n  replace: _propTypes[\"default\"].bool\n});\n\nvar showDeprecationWarning = function showDeprecationWarning(functionName, altFunctionName, version) {\n  return console.warn(\"The \\\"\" + functionName + \"\\\" method is now deprecated and will be removed in Gatsby v\" + version + \". Please use \\\"\" + altFunctionName + \"\\\" instead.\");\n};\n\nvar _default = _react[\"default\"].forwardRef(function (props, ref) {\n  return _react[\"default\"].createElement(GatsbyLink, (0, _extends2[\"default\"])({\n    innerRef: ref\n  }, props));\n});\n\nexports[\"default\"] = _default;\n\nvar navigate = function navigate(to, options) {\n  window.___navigate(withPrefix(to), options);\n};\n\nexports.navigate = navigate;\n\nvar push = function push(to) {\n  showDeprecationWarning(\"push\", \"navigate\", 3);\n\n  window.___push(withPrefix(to));\n};\n\nexports.push = push;\n\nvar replace = function replace(to) {\n  showDeprecationWarning(\"replace\", \"navigate\", 3);\n\n  window.___replace(withPrefix(to));\n}; // TODO: Remove navigateTo for Gatsby v3\n\n\nexports.replace = replace;\n\nvar navigateTo = function navigateTo(to) {\n  showDeprecationWarning(\"navigateTo\", \"navigate\", 3);\n  return push(to);\n};\n\nexports.navigateTo = navigateTo;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports[\"default\"] = scrollTop;\n\nvar _isWindow = _interopRequireDefault(require(\"./isWindow\"));\n\nfunction scrollTop(node, val) {\n  var win = (0, _isWindow[\"default\"])(node);\n  if (val === undefined) return win ? 'pageXOffset' in win ? win.pageXOffset : win.document.documentElement.scrollLeft : node.scrollLeft;\n  if (win) win.scrollTo(val, 'pageYOffset' in win ? win.pageYOffset : win.document.documentElement.scrollTop);else node.scrollLeft = val;\n}\n\nmodule.exports = exports[\"default\"];","module.exports = require('./_shared')('native-function-to-string', Function.toString);\n","var document = require('./_global').document;\nmodule.exports = document && document.documentElement;\n","// 19.1.3.19 Object.setPrototypeOf(O, proto)\nvar $export = require('./_export');\n$export($export.S, 'Object', { setPrototypeOf: require('./_set-proto').set });\n","module.exports = '\\x09\\x0A\\x0B\\x0C\\x0D\\x20\\xA0\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003' +\n  '\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n","module.exports = function (it) {\n  return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","'use strict';\nvar $export = require('./_export');\nvar $filter = require('./_array-methods')(2);\n\n$export($export.P + $export.F * !require('./_strict-method')([].filter, true), 'Array', {\n  // 22.1.3.7 / 15.4.4.20 Array.prototype.filter(callbackfn [, thisArg])\n  filter: function filter(callbackfn /* , thisArg */) {\n    return $filter(this, callbackfn, arguments[1]);\n  }\n});\n","// helper for String#{startsWith, endsWith, includes}\nvar isRegExp = require('./_is-regexp');\nvar defined = require('./_defined');\n\nmodule.exports = function (that, searchString, NAME) {\n  if (isRegExp(searchString)) throw TypeError('String#' + NAME + \" doesn't accept regex!\");\n  return String(defined(that));\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';\n\nrequire(\"core-js/modules/es6.function.name\");\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\n\nfunction emptyFunctionWithReset() {}\n\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function () {\n  function shim(props, propName, componentName, location, propFullName, secret) {\n    if (secret === ReactPropTypesSecret) {\n      // It is still safe when called from React.\n      return;\n    }\n\n    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');\n    err.name = 'Invariant Violation';\n    throw err;\n  }\n\n  ;\n  shim.isRequired = shim;\n\n  function getShim() {\n    return shim;\n  }\n\n  ; // Important!\n  // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n\n  var ReactPropTypes = {\n    array: shim,\n    bool: shim,\n    func: shim,\n    number: shim,\n    object: shim,\n    string: shim,\n    symbol: shim,\n    any: shim,\n    arrayOf: getShim,\n    element: shim,\n    elementType: shim,\n    instanceOf: getShim,\n    node: shim,\n    objectOf: getShim,\n    oneOf: getShim,\n    oneOfType: getShim,\n    shape: getShim,\n    exact: getShim,\n    checkPropTypes: emptyFunctionWithReset,\n    resetWarningCache: emptyFunction\n  };\n  ReactPropTypes.PropTypes = ReactPropTypes;\n  return ReactPropTypes;\n};","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nif (process.env.NODE_ENV !== 'production') {\n  var ReactIs = require('react-is'); // By explicitly using `prop-types` you are opting into new development behavior.\n  // http://fb.me/prop-types-in-prod\n\n\n  var throwOnDirectAccess = true;\n  module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n  // By explicitly using `prop-types` you are opting into new production behavior.\n  // http://fb.me/prop-types-in-prod\n  module.exports = require('./factoryWithThrowingShims')();\n}","// all enumerable object keys, includes symbols\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nmodule.exports = function (it) {\n  var result = getKeys(it);\n  var getSymbols = gOPS.f;\n  if (getSymbols) {\n    var symbols = getSymbols(it);\n    var isEnum = pIE.f;\n    var i = 0;\n    var key;\n    while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key);\n  } return result;\n};\n","module.exports = function (done, value) {\n  return { value: value, done: !!done };\n};\n","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\nvar STATE_KEY_PREFIX = \"@@scroll|\";\nvar GATSBY_ROUTER_SCROLL_STATE = \"___GATSBY_REACT_ROUTER_SCROLL\";\n\nvar SessionStorage =\n/*#__PURE__*/\nfunction () {\n  function SessionStorage() {}\n\n  var _proto = SessionStorage.prototype;\n\n  _proto.read = function read(location, key) {\n    var stateKey = this.getStateKey(location, key);\n\n    try {\n      var value = window.sessionStorage.getItem(stateKey);\n      return JSON.parse(value);\n    } catch (e) {\n      if (process.env.NODE_ENV !== \"production\") {\n        console.warn(\"[gatsby-react-router-scroll] Unable to access sessionStorage; sessionStorage is not available.\");\n      }\n\n      if (window && window[GATSBY_ROUTER_SCROLL_STATE] && window[GATSBY_ROUTER_SCROLL_STATE][stateKey]) {\n        return window[GATSBY_ROUTER_SCROLL_STATE][stateKey];\n      }\n\n      return {};\n    }\n  };\n\n  _proto.save = function save(location, key, value) {\n    var stateKey = this.getStateKey(location, key);\n    var storedValue = JSON.stringify(value);\n\n    try {\n      window.sessionStorage.setItem(stateKey, storedValue);\n    } catch (e) {\n      if (window && window[GATSBY_ROUTER_SCROLL_STATE]) {\n        window[GATSBY_ROUTER_SCROLL_STATE][stateKey] = JSON.parse(storedValue);\n      } else {\n        window[GATSBY_ROUTER_SCROLL_STATE] = {};\n        window[GATSBY_ROUTER_SCROLL_STATE][stateKey] = JSON.parse(storedValue);\n      }\n\n      if (process.env.NODE_ENV !== \"production\") {\n        console.warn(\"[gatsby-react-router-scroll] Unable to save state in sessionStorage; sessionStorage is not available.\");\n      }\n    }\n  };\n\n  _proto.getStateKey = function getStateKey(location, key) {\n    var locationKey = location.key || location.pathname;\n    var stateKeyBase = \"\" + STATE_KEY_PREFIX + locationKey;\n    return key === null || typeof key === \"undefined\" ? stateKeyBase : stateKeyBase + \"|\" + key;\n  };\n\n  return SessionStorage;\n}();\n\nexports[\"default\"] = SessionStorage;","// 19.1.3.10 Object.is(value1, value2)\nvar $export = require('./_export');\n$export($export.S, 'Object', { is: require('./_same-value') });\n","module.exports = function (it) {\n  if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n  return it;\n};\n","// 19.2.3.2 / 15.3.4.5 Function.prototype.bind(thisArg, args...)\nvar $export = require('./_export');\n\n$export($export.P, 'Function', { bind: require('./_bind') });\n","var redefine = require('./_redefine');\nmodule.exports = function (target, src, safe) {\n  for (var key in src) redefine(target, key, src[key], safe);\n  return target;\n};\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\n\nvar _inheritsLoose2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inheritsLoose\"));\n\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _scrollBehavior = _interopRequireDefault(require(\"scroll-behavior\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _history = require(\"@reach/router/lib/history\");\n\nvar _StateStorage = _interopRequireDefault(require(\"./StateStorage\"));\n\nvar propTypes = {\n  shouldUpdateScroll: _propTypes[\"default\"].func,\n  children: _propTypes[\"default\"].element.isRequired,\n  location: _propTypes[\"default\"].object.isRequired\n};\nvar childContextTypes = {\n  scrollBehavior: _propTypes[\"default\"].object.isRequired\n};\n\nvar ScrollContext =\n/*#__PURE__*/\nfunction (_React$Component) {\n  (0, _inheritsLoose2[\"default\"])(ScrollContext, _React$Component);\n\n  function ScrollContext(props, context) {\n    var _this;\n\n    _this = _React$Component.call(this, props, context) || this;\n    (0, _defineProperty2[\"default\"])((0, _assertThisInitialized2[\"default\"])(_this), \"shouldUpdateScroll\", function (prevRouterProps, routerProps) {\n      var shouldUpdateScroll = _this.props.shouldUpdateScroll;\n\n      if (!shouldUpdateScroll) {\n        return true;\n      } // Hack to allow accessing scrollBehavior._stateStorage.\n\n\n      return shouldUpdateScroll.call(_this.scrollBehavior, prevRouterProps, routerProps);\n    });\n    (0, _defineProperty2[\"default\"])((0, _assertThisInitialized2[\"default\"])(_this), \"registerElement\", function (key, element, shouldUpdateScroll) {\n      _this.scrollBehavior.registerElement(key, element, shouldUpdateScroll, _this.getRouterProps());\n    });\n    (0, _defineProperty2[\"default\"])((0, _assertThisInitialized2[\"default\"])(_this), \"unregisterElement\", function (key) {\n      _this.scrollBehavior.unregisterElement(key);\n    });\n    _this.scrollBehavior = new _scrollBehavior[\"default\"]({\n      addTransitionHook: _history.globalHistory.listen,\n      stateStorage: new _StateStorage[\"default\"](),\n      getCurrentLocation: function getCurrentLocation() {\n        return _this.props.location;\n      },\n      shouldUpdateScroll: _this.shouldUpdateScroll\n    });\n    return _this;\n  }\n\n  var _proto = ScrollContext.prototype;\n\n  _proto.getChildContext = function getChildContext() {\n    return {\n      scrollBehavior: this\n    };\n  };\n\n  _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n    var location = this.props.location;\n    var prevLocation = prevProps.location;\n\n    if (location === prevLocation) {\n      return;\n    }\n\n    var prevRouterProps = {\n      location: prevProps.location\n    }; // The \"scroll-behavior\" package expects the \"action\" to be on the location\n    // object so let's copy it over.\n    // Temp hack while awaiting https://github.com/reach/router/issues/119\n\n    if (window.__navigatingToLink) {\n      location.action = \"PUSH\";\n    } else {\n      location.action = \"POP\";\n    }\n\n    this.scrollBehavior.updateScroll(prevRouterProps, {\n      history: _history.globalHistory,\n      location: location\n    });\n  };\n\n  _proto.componentWillUnmount = function componentWillUnmount() {\n    this.scrollBehavior.stop();\n  };\n\n  _proto.getRouterProps = function getRouterProps() {\n    var location = this.props.location;\n    return {\n      location: location,\n      history: _history.globalHistory\n    };\n  };\n\n  _proto.render = function render() {\n    return _react[\"default\"].Children.only(this.props.children);\n  };\n\n  return ScrollContext;\n}(_react[\"default\"].Component);\n\nScrollContext.propTypes = propTypes;\nScrollContext.childContextTypes = childContextTypes;\nvar _default = ScrollContext;\nexports[\"default\"] = _default;","'use strict';\nvar global = require('./_global');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar redefineAll = require('./_redefine-all');\nvar meta = require('./_meta');\nvar forOf = require('./_for-of');\nvar anInstance = require('./_an-instance');\nvar isObject = require('./_is-object');\nvar fails = require('./_fails');\nvar $iterDetect = require('./_iter-detect');\nvar setToStringTag = require('./_set-to-string-tag');\nvar inheritIfRequired = require('./_inherit-if-required');\n\nmodule.exports = function (NAME, wrapper, methods, common, IS_MAP, IS_WEAK) {\n  var Base = global[NAME];\n  var C = Base;\n  var ADDER = IS_MAP ? 'set' : 'add';\n  var proto = C && C.prototype;\n  var O = {};\n  var fixMethod = function (KEY) {\n    var fn = proto[KEY];\n    redefine(proto, KEY,\n      KEY == 'delete' ? function (a) {\n        return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);\n      } : KEY == 'has' ? function has(a) {\n        return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);\n      } : KEY == 'get' ? function get(a) {\n        return IS_WEAK && !isObject(a) ? undefined : fn.call(this, a === 0 ? 0 : a);\n      } : KEY == 'add' ? function add(a) { fn.call(this, a === 0 ? 0 : a); return this; }\n        : function set(a, b) { fn.call(this, a === 0 ? 0 : a, b); return this; }\n    );\n  };\n  if (typeof C != 'function' || !(IS_WEAK || proto.forEach && !fails(function () {\n    new C().entries().next();\n  }))) {\n    // create collection constructor\n    C = common.getConstructor(wrapper, NAME, IS_MAP, ADDER);\n    redefineAll(C.prototype, methods);\n    meta.NEED = true;\n  } else {\n    var instance = new C();\n    // early implementations not supports chaining\n    var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance;\n    // V8 ~  Chromium 40- weak-collections throws on primitives, but should return false\n    var THROWS_ON_PRIMITIVES = fails(function () { instance.has(1); });\n    // most early implementations doesn't supports iterables, most modern - not close it correctly\n    var ACCEPT_ITERABLES = $iterDetect(function (iter) { new C(iter); }); // eslint-disable-line no-new\n    // for early implementations -0 and +0 not the same\n    var BUGGY_ZERO = !IS_WEAK && fails(function () {\n      // V8 ~ Chromium 42- fails only with 5+ elements\n      var $instance = new C();\n      var index = 5;\n      while (index--) $instance[ADDER](index, index);\n      return !$instance.has(-0);\n    });\n    if (!ACCEPT_ITERABLES) {\n      C = wrapper(function (target, iterable) {\n        anInstance(target, C, NAME);\n        var that = inheritIfRequired(new Base(), target, C);\n        if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n        return that;\n      });\n      C.prototype = proto;\n      proto.constructor = C;\n    }\n    if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) {\n      fixMethod('delete');\n      fixMethod('has');\n      IS_MAP && fixMethod('get');\n    }\n    if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER);\n    // weak collections should not contains .clear method\n    if (IS_WEAK && proto.clear) delete proto.clear;\n  }\n\n  setToStringTag(C, NAME);\n\n  O[NAME] = C;\n  $export($export.G + $export.W + $export.F * (C != Base), O);\n\n  if (!IS_WEAK) common.setStrong(C, NAME, IS_MAP);\n\n  return C;\n};\n","// IE 8- don't enum bug keys\nmodule.exports = (\n  'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n","function memoize(fn) {\n  var cache = {};\n  return function (arg) {\n    if (cache[arg] === undefined) cache[arg] = fn(arg);\n    return cache[arg];\n  };\n}\n\nexport default memoize;","import \"core-js/modules/es6.array.map\";\nimport \"core-js/modules/es6.array.index-of\";\nimport \"core-js/modules/es6.object.create\";\n\n//      \n// An event handler can take an optional event argument\n// and should not return a value\n// An array of all currently registered event handlers for a type\n// A map of event types and their corresponding event handlers.\n\n/** Mitt: Tiny (~200b) functional event emitter / pubsub.\n *  @name mitt\n *  @returns {Mitt}\n */\nfunction mitt(all) {\n  all = all || Object.create(null);\n  return {\n    /**\n     * Register an event handler for the given type.\n     *\n     * @param  {String} type\tType of event to listen for, or `\"*\"` for all events\n     * @param  {Function} handler Function to call in response to given event\n     * @memberOf mitt\n     */\n    on: function on(type, handler) {\n      (all[type] || (all[type] = [])).push(handler);\n    },\n\n    /**\n     * Remove an event handler for the given type.\n     *\n     * @param  {String} type\tType of event to unregister `handler` from, or `\"*\"`\n     * @param  {Function} handler Handler function to remove\n     * @memberOf mitt\n     */\n    off: function off(type, handler) {\n      if (all[type]) {\n        all[type].splice(all[type].indexOf(handler) >>> 0, 1);\n      }\n    },\n\n    /**\n     * Invoke all handlers for the given type.\n     * If present, `\"*\"` handlers are invoked after type-matched handlers.\n     *\n     * @param {String} type  The event type to invoke\n     * @param {Any} [evt]  Any value (object is recommended and powerful), passed to each handler\n     * @memberOf mitt\n     */\n    emit: function emit(type, evt) {\n      (all[type] || []).slice().map(function (handler) {\n        handler(evt);\n      });\n      (all['*'] || []).slice().map(function (handler) {\n        handler(type, evt);\n      });\n    }\n  };\n}\n\nexport default mitt;","import mitt from \"mitt\"\n\nconst emitter = mitt()\nexport default emitter\n","// 7.3.20 SpeciesConstructor(O, defaultConstructor)\nvar anObject = require('./_an-object');\nvar aFunction = require('./_a-function');\nvar SPECIES = require('./_wks')('species');\nmodule.exports = function (O, D) {\n  var C = anObject(O).constructor;\n  var S;\n  return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S);\n};\n","/**\n * Copyright 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n'use strict';\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nrequire(\"core-js/modules/es6.regexp.replace\");\n\nvar warning = function warning() {};\n\nif (process.env.NODE_ENV !== 'production') {\n  warning = function warning(condition, format, args) {\n    var len = arguments.length;\n    args = new Array(len > 2 ? len - 2 : 0);\n\n    for (var key = 2; key < len; key++) {\n      args[key - 2] = arguments[key];\n    }\n\n    if (format === undefined) {\n      throw new Error('`warning(condition, format, ...args)` requires a warning ' + 'message argument');\n    }\n\n    if (format.length < 10 || /^[s\\W]*$/.test(format)) {\n      throw new Error('The warning format should be able to uniquely identify this ' + 'warning. Please, use a more descriptive format than: ' + format);\n    }\n\n    if (!condition) {\n      var argIndex = 0;\n      var message = 'Warning: ' + format.replace(/%s/g, function () {\n        return args[argIndex++];\n      });\n\n      if (typeof console !== 'undefined') {\n        console.error(message);\n      }\n\n      try {\n        // This error was thrown as a convenience so that you can use this stack\n        // to find the callsite that caused this warning to fire.\n        throw new Error(message);\n      } catch (x) {}\n    }\n  };\n}\n\nmodule.exports = warning;","var isObject = require('./_is-object');\nvar isArray = require('./_is-array');\nvar SPECIES = require('./_wks')('species');\n\nmodule.exports = function (original) {\n  var C;\n  if (isArray(original)) {\n    C = original.constructor;\n    // cross-realm fallback\n    if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n    if (isObject(C)) {\n      C = C[SPECIES];\n      if (C === null) C = undefined;\n    }\n  } return C === undefined ? Array : C;\n};\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _ScrollBehaviorContext = _interopRequireDefault(require(\"./ScrollBehaviorContext\"));\n\nvar _ScrollContainer = _interopRequireDefault(require(\"./ScrollContainer\"));\n\nexports.ScrollContainer = _ScrollContainer[\"default\"];\nexports.ScrollContext = _ScrollBehaviorContext[\"default\"];","'use strict';\nvar $export = require('./_export');\nvar $forEach = require('./_array-methods')(0);\nvar STRICT = require('./_strict-method')([].forEach, true);\n\n$export($export.P + $export.F * !STRICT, 'Array', {\n  // 22.1.3.10 / 15.4.4.18 Array.prototype.forEach(callbackfn [, thisArg])\n  forEach: function forEach(callbackfn /* , thisArg */) {\n    return $forEach(this, callbackfn, arguments[1]);\n  }\n});\n","'use strict';\nvar aFunction = require('./_a-function');\nvar isObject = require('./_is-object');\nvar invoke = require('./_invoke');\nvar arraySlice = [].slice;\nvar factories = {};\n\nvar construct = function (F, len, args) {\n  if (!(len in factories)) {\n    for (var n = [], i = 0; i < len; i++) n[i] = 'a[' + i + ']';\n    // eslint-disable-next-line no-new-func\n    factories[len] = Function('F,a', 'return new F(' + n.join(',') + ')');\n  } return factories[len](F, args);\n};\n\nmodule.exports = Function.bind || function bind(that /* , ...args */) {\n  var fn = aFunction(this);\n  var partArgs = arraySlice.call(arguments, 1);\n  var bound = function (/* args... */) {\n    var args = partArgs.concat(arraySlice.call(arguments));\n    return this instanceof bound ? construct(fn, args.length, args) : invoke(fn, args, that);\n  };\n  if (isObject(fn.prototype)) bound.prototype = fn.prototype;\n  return bound;\n};\n","function _objectWithoutPropertiesLoose(source, excluded) {\n  if (source == null) return {};\n  var target = {};\n  var sourceKeys = Object.keys(source);\n  var key, i;\n\n  for (i = 0; i < sourceKeys.length; i++) {\n    key = sourceKeys[i];\n    if (excluded.indexOf(key) >= 0) continue;\n    target[key] = source[key];\n  }\n\n  return target;\n}\n\nmodule.exports = _objectWithoutPropertiesLoose;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = getWindow;\n\nfunction getWindow(node) {\n  return node === node.window ? node : node.nodeType === 9 ? node.defaultView || node.parentWindow : false;\n}\n\nmodule.exports = exports[\"default\"];","'use strict';\nvar $defineProperty = require('./_object-dp');\nvar createDesc = require('./_property-desc');\n\nmodule.exports = function (object, index, value) {\n  if (index in object) $defineProperty.f(object, index, createDesc(0, value));\n  else object[index] = value;\n};\n","// 19.1.3.1 Object.assign(target, source)\nvar $export = require('./_export');\n\n$export($export.S + $export.F, 'Object', { assign: require('./_object-assign') });\n","exports.polyfill = Component => Component\n","'use strict';\nvar strong = require('./_collection-strong');\nvar validate = require('./_validate-collection');\nvar MAP = 'Map';\n\n// 23.1 Map Objects\nmodule.exports = require('./_collection')(MAP, function (get) {\n  return function Map() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n}, {\n  // 23.1.3.6 Map.prototype.get(key)\n  get: function get(key) {\n    var entry = strong.getEntry(validate(this, MAP), key);\n    return entry && entry.v;\n  },\n  // 23.1.3.9 Map.prototype.set(key, value)\n  set: function set(key, value) {\n    return strong.def(validate(this, MAP), key === 0 ? 0 : key, value);\n  }\n}, strong, true);\n","// 21.1.3.18 String.prototype.startsWith(searchString [, position ])\n'use strict';\nvar $export = require('./_export');\nvar toLength = require('./_to-length');\nvar context = require('./_string-context');\nvar STARTS_WITH = 'startsWith';\nvar $startsWith = ''[STARTS_WITH];\n\n$export($export.P + $export.F * require('./_fails-is-regexp')(STARTS_WITH), 'String', {\n  startsWith: function startsWith(searchString /* , position = 0 */) {\n    var that = context(this, searchString, STARTS_WITH);\n    var index = toLength(Math.min(arguments.length > 1 ? arguments[1] : undefined, that.length));\n    var search = String(searchString);\n    return $startsWith\n      ? $startsWith.call(that, search, index)\n      : that.slice(index, index + search.length) === search;\n  }\n});\n","import \"core-js/modules/es6.regexp.split\";\nimport \"core-js/modules/es6.array.for-each\";\nimport \"core-js/modules/es6.promise\";\nimport \"core-js/modules/es6.object.to-string\";\nimport \"core-js/modules/es6.date.now\";\nimport \"core-js/modules/es6.regexp.replace\";\nimport \"core-js/modules/es6.array.filter\";\nimport \"core-js/modules/es6.object.assign\";\n\nvar _extends = Object.assign || function (target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments[i];\n\n    for (var key in source) {\n      if (Object.prototype.hasOwnProperty.call(source, key)) {\n        target[key] = source[key];\n      }\n    }\n  }\n\n  return target;\n};\n\nvar getLocation = function getLocation(source) {\n  return _extends({}, source.location, {\n    state: source.history.state,\n    key: source.history.state && source.history.state.key || \"initial\"\n  });\n};\n\nvar createHistory = function createHistory(source, options) {\n  var listeners = [];\n  var location = getLocation(source);\n  var transitioning = false;\n\n  var resolveTransition = function resolveTransition() {};\n\n  return {\n    get location() {\n      return location;\n    },\n\n    get transitioning() {\n      return transitioning;\n    },\n\n    _onTransitionComplete: function _onTransitionComplete() {\n      transitioning = false;\n      resolveTransition();\n    },\n    listen: function listen(listener) {\n      listeners.push(listener);\n\n      var popstateListener = function popstateListener() {\n        location = getLocation(source);\n        listener({\n          location: location,\n          action: \"POP\"\n        });\n      };\n\n      source.addEventListener(\"popstate\", popstateListener);\n      return function () {\n        source.removeEventListener(\"popstate\", popstateListener);\n        listeners = listeners.filter(function (fn) {\n          return fn !== listener;\n        });\n      };\n    },\n    navigate: function navigate(to) {\n      var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n          state = _ref.state,\n          _ref$replace = _ref.replace,\n          replace = _ref$replace === undefined ? false : _ref$replace;\n\n      state = _extends({}, state, {\n        key: Date.now() + \"\"\n      }); // try...catch iOS Safari limits to 100 pushState calls\n\n      try {\n        if (transitioning || replace) {\n          source.history.replaceState(state, null, to);\n        } else {\n          source.history.pushState(state, null, to);\n        }\n      } catch (e) {\n        source.location[replace ? \"replace\" : \"assign\"](to);\n      }\n\n      location = getLocation(source);\n      transitioning = true;\n      var transition = new Promise(function (res) {\n        return resolveTransition = res;\n      });\n      listeners.forEach(function (listener) {\n        return listener({\n          location: location,\n          action: \"PUSH\"\n        });\n      });\n      return transition;\n    }\n  };\n}; ////////////////////////////////////////////////////////////////////////////////\n// Stores history entries in memory for testing or other platforms like Native\n\n\nvar createMemorySource = function createMemorySource() {\n  var initialPathname = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : \"/\";\n  var index = 0;\n  var stack = [{\n    pathname: initialPathname,\n    search: \"\"\n  }];\n  var states = [];\n  return {\n    get location() {\n      return stack[index];\n    },\n\n    addEventListener: function addEventListener(name, fn) {},\n    removeEventListener: function removeEventListener(name, fn) {},\n    history: {\n      get entries() {\n        return stack;\n      },\n\n      get index() {\n        return index;\n      },\n\n      get state() {\n        return states[index];\n      },\n\n      pushState: function pushState(state, _, uri) {\n        var _uri$split = uri.split(\"?\"),\n            pathname = _uri$split[0],\n            _uri$split$ = _uri$split[1],\n            search = _uri$split$ === undefined ? \"\" : _uri$split$;\n\n        index++;\n        stack.push({\n          pathname: pathname,\n          search: search\n        });\n        states.push(state);\n      },\n      replaceState: function replaceState(state, _, uri) {\n        var _uri$split2 = uri.split(\"?\"),\n            pathname = _uri$split2[0],\n            _uri$split2$ = _uri$split2[1],\n            search = _uri$split2$ === undefined ? \"\" : _uri$split2$;\n\n        stack[index] = {\n          pathname: pathname,\n          search: search\n        };\n        states[index] = state;\n      }\n    }\n  };\n}; ////////////////////////////////////////////////////////////////////////////////\n// global history - uses window.history as the source if available, otherwise a\n// memory history\n\n\nvar canUseDOM = !!(typeof window !== \"undefined\" && window.document && window.document.createElement);\n\nvar getSource = function getSource() {\n  return canUseDOM ? window : createMemorySource();\n};\n\nvar globalHistory = createHistory(getSource());\nvar navigate = globalHistory.navigate; ////////////////////////////////////////////////////////////////////////////////\n\nexport { globalHistory, navigate, createHistory, createMemorySource };","module.exports = function (it, Constructor, name, forbiddenField) {\n  if (!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)) {\n    throw TypeError(name + ': incorrect invocation!');\n  } return it;\n};\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\n/**\n * Get a manifest filename depending on localized pathname\n *\n * @param {string} pathname\n * @param {Array<{start_url: string, lang: string}>} localizedManifests\n * @return string\n */\nvar _default = function _default(pathname, localizedManifests) {\n  var defaultFilename = \"manifest.webmanifest\";\n\n  if (!Array.isArray(localizedManifests)) {\n    return defaultFilename;\n  }\n\n  var localizedManifest = localizedManifests.find(function (app) {\n    return pathname.startsWith(app.start_url);\n  });\n\n  if (!localizedManifest) {\n    return defaultFilename;\n  }\n\n  return \"manifest_\" + localizedManifest.lang + \".webmanifest\";\n};\n\nexports.default = _default;","'use strict';\nvar at = require('./_string-at')(true);\n\n // `AdvanceStringIndex` abstract operation\n// https://tc39.github.io/ecma262/#sec-advancestringindex\nmodule.exports = function (S, index, unicode) {\n  return index + (unicode ? at(S, index).length : 1);\n};\n","'use strict';\nvar LIBRARY = require('./_library');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar $iterCreate = require('./_iter-create');\nvar setToStringTag = require('./_set-to-string-tag');\nvar getPrototypeOf = require('./_object-gpo');\nvar ITERATOR = require('./_wks')('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n  $iterCreate(Constructor, NAME, next);\n  var getMethod = function (kind) {\n    if (!BUGGY && kind in proto) return proto[kind];\n    switch (kind) {\n      case KEYS: return function keys() { return new Constructor(this, kind); };\n      case VALUES: return function values() { return new Constructor(this, kind); };\n    } return function entries() { return new Constructor(this, kind); };\n  };\n  var TAG = NAME + ' Iterator';\n  var DEF_VALUES = DEFAULT == VALUES;\n  var VALUES_BUG = false;\n  var proto = Base.prototype;\n  var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n  var $default = $native || getMethod(DEFAULT);\n  var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n  var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n  var methods, key, IteratorPrototype;\n  // Fix native\n  if ($anyNative) {\n    IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n    if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n      // Set @@toStringTag to native iterators\n      setToStringTag(IteratorPrototype, TAG, true);\n      // fix for some old engines\n      if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);\n    }\n  }\n  // fix Array#{values, @@iterator}.name in V8 / FF\n  if (DEF_VALUES && $native && $native.name !== VALUES) {\n    VALUES_BUG = true;\n    $default = function values() { return $native.call(this); };\n  }\n  // Define iterator\n  if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n    hide(proto, ITERATOR, $default);\n  }\n  // Plug for library\n  Iterators[NAME] = $default;\n  Iterators[TAG] = returnThis;\n  if (DEFAULT) {\n    methods = {\n      values: DEF_VALUES ? $default : getMethod(VALUES),\n      keys: IS_SET ? $default : getMethod(KEYS),\n      entries: $entries\n    };\n    if (FORCED) for (key in methods) {\n      if (!(key in proto)) redefine(proto, key, methods[key]);\n    } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n  }\n  return methods;\n};\n","var toInteger = require('./_to-integer');\nvar defined = require('./_defined');\n// true  -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n  return function (that, pos) {\n    var s = String(defined(that));\n    var i = toInteger(pos);\n    var l = s.length;\n    var a, b;\n    if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n    a = s.charCodeAt(i);\n    return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n      ? TO_STRING ? s.charAt(i) : a\n      : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n  };\n};\n","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _default = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n\nexports[\"default\"] = _default;\nmodule.exports = exports[\"default\"];","'use strict';\n// 19.1.3.6 Object.prototype.toString()\nvar classof = require('./_classof');\nvar test = {};\ntest[require('./_wks')('toStringTag')] = 'z';\nif (test + '' != '[object z]') {\n  require('./_redefine')(Object.prototype, 'toString', function toString() {\n    return '[object ' + classof(this) + ']';\n  }, true);\n}\n","'use strict';\n// 21.2.5.3 get RegExp.prototype.flags\nvar anObject = require('./_an-object');\nmodule.exports = function () {\n  var that = anObject(this);\n  var result = '';\n  if (that.global) result += 'g';\n  if (that.ignoreCase) result += 'i';\n  if (that.multiline) result += 'm';\n  if (that.unicode) result += 'u';\n  if (that.sticky) result += 'y';\n  return result;\n};\n","// 0 -> Array#forEach\n// 1 -> Array#map\n// 2 -> Array#filter\n// 3 -> Array#some\n// 4 -> Array#every\n// 5 -> Array#find\n// 6 -> Array#findIndex\nvar ctx = require('./_ctx');\nvar IObject = require('./_iobject');\nvar toObject = require('./_to-object');\nvar toLength = require('./_to-length');\nvar asc = require('./_array-species-create');\nmodule.exports = function (TYPE, $create) {\n  var IS_MAP = TYPE == 1;\n  var IS_FILTER = TYPE == 2;\n  var IS_SOME = TYPE == 3;\n  var IS_EVERY = TYPE == 4;\n  var IS_FIND_INDEX = TYPE == 6;\n  var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n  var create = $create || asc;\n  return function ($this, callbackfn, that) {\n    var O = toObject($this);\n    var self = IObject(O);\n    var f = ctx(callbackfn, that, 3);\n    var length = toLength(self.length);\n    var index = 0;\n    var result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;\n    var val, res;\n    for (;length > index; index++) if (NO_HOLES || index in self) {\n      val = self[index];\n      res = f(val, index, O);\n      if (TYPE) {\n        if (IS_MAP) result[index] = res;   // map\n        else if (res) switch (TYPE) {\n          case 3: return true;             // some\n          case 5: return val;              // find\n          case 6: return index;            // findIndex\n          case 2: result.push(val);        // filter\n        } else if (IS_EVERY) return false; // every\n      }\n    }\n    return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result;\n  };\n};\n","'use strict';\nvar $export = require('./_export');\nvar $reduce = require('./_array-reduce');\n\n$export($export.P + $export.F * !require('./_strict-method')([].reduce, true), 'Array', {\n  // 22.1.3.18 / 15.4.4.21 Array.prototype.reduce(callbackfn [, initialValue])\n  reduce: function reduce(callbackfn /* , initialValue */) {\n    return $reduce(this, callbackfn, arguments.length, arguments[1], false);\n  }\n});\n","// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = require('./_object-keys-internal');\nvar enumBugKeys = require('./_enum-bug-keys');\n\nmodule.exports = Object.keys || function keys(O) {\n  return $keys(O, enumBugKeys);\n};\n","'use strict';\nvar global = require('./_global');\nvar each = require('./_array-methods')(0);\nvar redefine = require('./_redefine');\nvar meta = require('./_meta');\nvar assign = require('./_object-assign');\nvar weak = require('./_collection-weak');\nvar isObject = require('./_is-object');\nvar validate = require('./_validate-collection');\nvar NATIVE_WEAK_MAP = require('./_validate-collection');\nvar IS_IE11 = !global.ActiveXObject && 'ActiveXObject' in global;\nvar WEAK_MAP = 'WeakMap';\nvar getWeak = meta.getWeak;\nvar isExtensible = Object.isExtensible;\nvar uncaughtFrozenStore = weak.ufstore;\nvar InternalMap;\n\nvar wrapper = function (get) {\n  return function WeakMap() {\n    return get(this, arguments.length > 0 ? arguments[0] : undefined);\n  };\n};\n\nvar methods = {\n  // 23.3.3.3 WeakMap.prototype.get(key)\n  get: function get(key) {\n    if (isObject(key)) {\n      var data = getWeak(key);\n      if (data === true) return uncaughtFrozenStore(validate(this, WEAK_MAP)).get(key);\n      return data ? data[this._i] : undefined;\n    }\n  },\n  // 23.3.3.5 WeakMap.prototype.set(key, value)\n  set: function set(key, value) {\n    return weak.def(validate(this, WEAK_MAP), key, value);\n  }\n};\n\n// 23.3 WeakMap Objects\nvar $WeakMap = module.exports = require('./_collection')(WEAK_MAP, wrapper, methods, weak, true, true);\n\n// IE11 WeakMap frozen keys fix\nif (NATIVE_WEAK_MAP && IS_IE11) {\n  InternalMap = weak.getConstructor(wrapper, WEAK_MAP);\n  assign(InternalMap.prototype, methods);\n  meta.NEED = true;\n  each(['delete', 'has', 'get', 'set'], function (key) {\n    var proto = $WeakMap.prototype;\n    var method = proto[key];\n    redefine(proto, key, function (a, b) {\n      // store frozen objects on internal weakmap shim\n      if (isObject(a) && !isExtensible(a)) {\n        if (!this._f) this._f = new InternalMap();\n        var result = this._f[key](a, b);\n        return key == 'set' ? this : result;\n      // store all the rest on native weakmap\n      } return method.call(this, a, b);\n    });\n  });\n}\n","// 7.2.2 IsArray(argument)\nvar cof = require('./_cof');\nmodule.exports = Array.isArray || function isArray(arg) {\n  return cof(arg) == 'Array';\n};\n","var pIE = require('./_object-pie');\nvar createDesc = require('./_property-desc');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar has = require('./_has');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nexports.f = require('./_descriptors') ? gOPD : function getOwnPropertyDescriptor(O, P) {\n  O = toIObject(O);\n  P = toPrimitive(P, true);\n  if (IE8_DOM_DEFINE) try {\n    return gOPD(O, P);\n  } catch (e) { /* empty */ }\n  if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);\n};\n","var dP = require('./_object-dp');\nvar anObject = require('./_an-object');\nvar getKeys = require('./_object-keys');\n\nmodule.exports = require('./_descriptors') ? Object.defineProperties : function defineProperties(O, Properties) {\n  anObject(O);\n  var keys = getKeys(Properties);\n  var length = keys.length;\n  var i = 0;\n  var P;\n  while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n  return O;\n};\n","var ctx = require('./_ctx');\nvar invoke = require('./_invoke');\nvar html = require('./_html');\nvar cel = require('./_dom-create');\nvar global = require('./_global');\nvar process = global.process;\nvar setTask = global.setImmediate;\nvar clearTask = global.clearImmediate;\nvar MessageChannel = global.MessageChannel;\nvar Dispatch = global.Dispatch;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar defer, channel, port;\nvar run = function () {\n  var id = +this;\n  // eslint-disable-next-line no-prototype-builtins\n  if (queue.hasOwnProperty(id)) {\n    var fn = queue[id];\n    delete queue[id];\n    fn();\n  }\n};\nvar listener = function (event) {\n  run.call(event.data);\n};\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!setTask || !clearTask) {\n  setTask = function setImmediate(fn) {\n    var args = [];\n    var i = 1;\n    while (arguments.length > i) args.push(arguments[i++]);\n    queue[++counter] = function () {\n      // eslint-disable-next-line no-new-func\n      invoke(typeof fn == 'function' ? fn : Function(fn), args);\n    };\n    defer(counter);\n    return counter;\n  };\n  clearTask = function clearImmediate(id) {\n    delete queue[id];\n  };\n  // Node.js 0.8-\n  if (require('./_cof')(process) == 'process') {\n    defer = function (id) {\n      process.nextTick(ctx(run, id, 1));\n    };\n  // Sphere (JS game engine) Dispatch API\n  } else if (Dispatch && Dispatch.now) {\n    defer = function (id) {\n      Dispatch.now(ctx(run, id, 1));\n    };\n  // Browsers with MessageChannel, includes WebWorkers\n  } else if (MessageChannel) {\n    channel = new MessageChannel();\n    port = channel.port2;\n    channel.port1.onmessage = listener;\n    defer = ctx(port.postMessage, port, 1);\n  // Browsers with postMessage, skip WebWorkers\n  // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n  } else if (global.addEventListener && typeof postMessage == 'function' && !global.importScripts) {\n    defer = function (id) {\n      global.postMessage(id + '', '*');\n    };\n    global.addEventListener('message', listener, false);\n  // IE8-\n  } else if (ONREADYSTATECHANGE in cel('script')) {\n    defer = function (id) {\n      html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function () {\n        html.removeChild(this);\n        run.call(id);\n      };\n    };\n  // Rest old browsers\n  } else {\n    defer = function (id) {\n      setTimeout(ctx(run, id, 1), 0);\n    };\n  }\n}\nmodule.exports = {\n  set: setTask,\n  clear: clearTask\n};\n","// Copyright (c) 2017, 2020 IBM Corp. and others\n\n// This program and the accompanying materials are made available under\n// the terms of the Eclipse Public License 2.0 which accompanies this\n// distribution and is available at https://www.eclipse.org/legal/epl-2.0/\n// or the Apache License, Version 2.0 which accompanies this distribution and\n// is available at https://www.apache.org/licenses/LICENSE-2.0.\n\n// This Source Code may also be made available under the following\n// Secondary Licenses when the conditions for such availability set\n// forth in the Eclipse Public License, v. 2.0 are satisfied: GNU\n// General Public License, version 2 with the GNU Classpath\n// Exception [1] and GNU General Public License, version 2 with the\n// OpenJDK Assembly Exception [2].\n\n// [1] https://www.gnu.org/software/classpath/license.html\n// [2] http://openjdk.java.net/legal/assembly-exception.html\n\n// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 OR LicenseRef-GPL-2.0 WITH Assembly-exception\n\n// The project website pages cannot be redistributed\n\nimport '@fortawesome/fontawesome-free/css/all.css'","// call something on iterator step with safe closing on error\nvar anObject = require('./_an-object');\nmodule.exports = function (iterator, fn, value, entries) {\n  try {\n    return entries ? fn(anObject(value)[0], value[1]) : fn(value);\n  // 7.4.6 IteratorClose(iterator, completion)\n  } catch (e) {\n    var ret = iterator['return'];\n    if (ret !== undefined) anObject(ret.call(iterator));\n    throw e;\n  }\n};\n","var $export = require('./_export');\n// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)\n$export($export.S + $export.F * !require('./_descriptors'), 'Object', { defineProperty: require('./_object-dp').f });\n","'use strict';\nvar ctx = require('./_ctx');\nvar $export = require('./_export');\nvar toObject = require('./_to-object');\nvar call = require('./_iter-call');\nvar isArrayIter = require('./_is-array-iter');\nvar toLength = require('./_to-length');\nvar createProperty = require('./_create-property');\nvar getIterFn = require('./core.get-iterator-method');\n\n$export($export.S + $export.F * !require('./_iter-detect')(function (iter) { Array.from(iter); }), 'Array', {\n  // 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined)\n  from: function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n    var O = toObject(arrayLike);\n    var C = typeof this == 'function' ? this : Array;\n    var aLen = arguments.length;\n    var mapfn = aLen > 1 ? arguments[1] : undefined;\n    var mapping = mapfn !== undefined;\n    var index = 0;\n    var iterFn = getIterFn(O);\n    var length, result, step, iterator;\n    if (mapping) mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2);\n    // if object isn't iterable or it's array with default iterator - use simple case\n    if (iterFn != undefined && !(C == Array && isArrayIter(iterFn))) {\n      for (iterator = iterFn.call(O), result = new C(); !(step = iterator.next()).done; index++) {\n        createProperty(result, index, mapping ? call(iterator, mapfn, [step.value, index], true) : step.value);\n      }\n    } else {\n      length = toLength(O.length);\n      for (result = new C(length); length > index; index++) {\n        createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]);\n      }\n    }\n    result.length = index;\n    return result;\n  }\n});\n","// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = require('./_cof');\nvar TAG = require('./_wks')('toStringTag');\n// ES3 wrong here\nvar ARG = cof(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n  try {\n    return it[key];\n  } catch (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n  var O, T, B;\n  return it === undefined ? 'Undefined' : it === null ? 'Null'\n    // @@toStringTag case\n    : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n    // builtinTag case\n    : ARG ? cof(O)\n    // ES3 arguments fallback\n    : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n","import React, { createElement } from \"react\"\nimport PropTypes from \"prop-types\"\nimport { publicLoader } from \"./loader\"\nimport { apiRunner } from \"./api-runner-browser\"\n\n// Renders page\nclass PageRenderer extends React.Component {\n  render() {\n    const props = {\n      ...this.props,\n      pathContext: this.props.pageContext,\n    }\n\n    const [replacementElement] = apiRunner(`replaceComponentRenderer`, {\n      props: this.props,\n      loader: publicLoader,\n    })\n\n    const pageElement =\n      replacementElement ||\n      createElement(this.props.pageResources.component, {\n        ...props,\n        key: this.props.path || this.props.pageResources.page.path,\n      })\n\n    const wrappedPage = apiRunner(\n      `wrapPageElement`,\n      { element: pageElement, props },\n      pageElement,\n      ({ result }) => {\n        return { element: result, props }\n      }\n    ).pop()\n\n    return wrappedPage\n  }\n}\n\nPageRenderer.propTypes = {\n  location: PropTypes.object.isRequired,\n  pageResources: PropTypes.object.isRequired,\n  data: PropTypes.object,\n  pageContext: PropTypes.object.isRequired,\n}\n\nexport default PageRenderer\n","'use strict';\nrequire('./es6.regexp.exec');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar fails = require('./_fails');\nvar defined = require('./_defined');\nvar wks = require('./_wks');\nvar regexpExec = require('./_regexp-exec');\n\nvar SPECIES = wks('species');\n\nvar REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {\n  // #replace needs built-in support for named groups.\n  // #match works fine because it just return the exec results, even if it has\n  // a \"grops\" property.\n  var re = /./;\n  re.exec = function () {\n    var result = [];\n    result.groups = { a: '7' };\n    return result;\n  };\n  return ''.replace(re, '$<a>') !== '7';\n});\n\nvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = (function () {\n  // Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\n  var re = /(?:)/;\n  var originalExec = re.exec;\n  re.exec = function () { return originalExec.apply(this, arguments); };\n  var result = 'ab'.split(re);\n  return result.length === 2 && result[0] === 'a' && result[1] === 'b';\n})();\n\nmodule.exports = function (KEY, length, exec) {\n  var SYMBOL = wks(KEY);\n\n  var DELEGATES_TO_SYMBOL = !fails(function () {\n    // String methods call symbol-named RegEp methods\n    var O = {};\n    O[SYMBOL] = function () { return 7; };\n    return ''[KEY](O) != 7;\n  });\n\n  var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL ? !fails(function () {\n    // Symbol-named RegExp methods call .exec\n    var execCalled = false;\n    var re = /a/;\n    re.exec = function () { execCalled = true; return null; };\n    if (KEY === 'split') {\n      // RegExp[@@split] doesn't call the regex's exec method, but first creates\n      // a new one. We need to return the patched regex when creating the new one.\n      re.constructor = {};\n      re.constructor[SPECIES] = function () { return re; };\n    }\n    re[SYMBOL]('');\n    return !execCalled;\n  }) : undefined;\n\n  if (\n    !DELEGATES_TO_SYMBOL ||\n    !DELEGATES_TO_EXEC ||\n    (KEY === 'replace' && !REPLACE_SUPPORTS_NAMED_GROUPS) ||\n    (KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC)\n  ) {\n    var nativeRegExpMethod = /./[SYMBOL];\n    var fns = exec(\n      defined,\n      SYMBOL,\n      ''[KEY],\n      function maybeCallNative(nativeMethod, regexp, str, arg2, forceStringMethod) {\n        if (regexp.exec === regexpExec) {\n          if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\n            // The native String method already delegates to @@method (this\n            // polyfilled function), leasing to infinite recursion.\n            // We avoid it by directly calling the native @@method method.\n            return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) };\n          }\n          return { done: true, value: nativeMethod.call(str, regexp, arg2) };\n        }\n        return { done: false };\n      }\n    );\n    var strfn = fns[0];\n    var rxfn = fns[1];\n\n    redefine(String.prototype, KEY, strfn);\n    hide(RegExp.prototype, SYMBOL, length == 2\n      // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)\n      // 21.2.5.11 RegExp.prototype[@@split](string, limit)\n      ? function (string, arg) { return rxfn.call(string, this, arg); }\n      // 21.2.5.6 RegExp.prototype[@@match](string)\n      // 21.2.5.9 RegExp.prototype[@@search](string)\n      : function (string) { return rxfn.call(string, this); }\n    );\n  }\n};\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\n\nvar _inheritsLoose2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inheritsLoose\"));\n\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _reactDom = _interopRequireDefault(require(\"react-dom\"));\n\nvar _warning = _interopRequireDefault(require(\"warning\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar propTypes = {\n  scrollKey: _propTypes[\"default\"].string.isRequired,\n  shouldUpdateScroll: _propTypes[\"default\"].func,\n  children: _propTypes[\"default\"].element.isRequired\n};\nvar contextTypes = {\n  // This is necessary when rendering on the client. However, when rendering on\n  // the server, this container will do nothing, and thus does not require the\n  // scroll behavior context.\n  scrollBehavior: _propTypes[\"default\"].object\n};\n\nvar ScrollContainer =\n/*#__PURE__*/\nfunction (_React$Component) {\n  (0, _inheritsLoose2[\"default\"])(ScrollContainer, _React$Component);\n\n  function ScrollContainer(props, context) {\n    var _this;\n\n    _this = _React$Component.call(this, props, context) || this; // We don't re-register if the scroll key changes, so make sure we\n    // unregister with the initial scroll key just in case the user changes it.\n\n    (0, _defineProperty2[\"default\"])((0, _assertThisInitialized2[\"default\"])(_this), \"shouldUpdateScroll\", function (prevRouterProps, routerProps) {\n      var shouldUpdateScroll = _this.props.shouldUpdateScroll;\n\n      if (!shouldUpdateScroll) {\n        return true;\n      } // Hack to allow accessing scrollBehavior._stateStorage.\n\n\n      return shouldUpdateScroll.call(_this.context.scrollBehavior.scrollBehavior, prevRouterProps, routerProps);\n    });\n    _this.scrollKey = props.scrollKey;\n    return _this;\n  }\n\n  var _proto = ScrollContainer.prototype;\n\n  _proto.componentDidMount = function componentDidMount() {\n    this.context.scrollBehavior.registerElement(this.props.scrollKey, _reactDom[\"default\"].findDOMNode(this), // eslint-disable-line react/no-find-dom-node\n    this.shouldUpdateScroll); // Only keep around the current DOM node in development, as this is only\n    // for emitting the appropriate warning.\n\n    if (process.env.NODE_ENV !== \"production\") {\n      this.domNode = _reactDom[\"default\"].findDOMNode(this); // eslint-disable-line react/no-find-dom-node\n    }\n  };\n\n  _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n    (0, _warning[\"default\"])(prevProps.scrollKey === this.props.scrollKey, \"<ScrollContainer> does not support changing scrollKey.\");\n\n    if (process.env.NODE_ENV !== \"production\") {\n      var prevDomNode = this.domNode;\n      this.domNode = _reactDom[\"default\"].findDOMNode(this); // eslint-disable-line react/no-find-dom-node\n\n      (0, _warning[\"default\"])(this.domNode === prevDomNode, \"<ScrollContainer> does not support changing DOM node.\");\n    }\n  };\n\n  _proto.componentWillUnmount = function componentWillUnmount() {\n    this.context.scrollBehavior.unregisterElement(this.scrollKey);\n  };\n\n  _proto.render = function render() {\n    return this.props.children;\n  };\n\n  return ScrollContainer;\n}(_react[\"default\"].Component);\n\nScrollContainer.propTypes = propTypes;\nScrollContainer.contextTypes = contextTypes;\nvar _default = ScrollContainer;\nexports[\"default\"] = _default;","var isObject = require('./_is-object');\nvar document = require('./_global').document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n  return is ? document.createElement(it) : {};\n};\n","var classof = require('./_classof');\nvar ITERATOR = require('./_wks')('iterator');\nvar Iterators = require('./_iterators');\nmodule.exports = require('./_core').getIteratorMethod = function (it) {\n  if (it != undefined) return it[ITERATOR]\n    || it['@@iterator']\n    || Iterators[classof(it)];\n};\n","exports.f = Object.getOwnPropertySymbols;\n","var store = require('./_shared')('wks');\nvar uid = require('./_uid');\nvar Symbol = require('./_global').Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n  return store[name] || (store[name] =\n    USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n","'use strict';\n\nvar isRegExp = require('./_is-regexp');\nvar anObject = require('./_an-object');\nvar speciesConstructor = require('./_species-constructor');\nvar advanceStringIndex = require('./_advance-string-index');\nvar toLength = require('./_to-length');\nvar callRegExpExec = require('./_regexp-exec-abstract');\nvar regexpExec = require('./_regexp-exec');\nvar fails = require('./_fails');\nvar $min = Math.min;\nvar $push = [].push;\nvar $SPLIT = 'split';\nvar LENGTH = 'length';\nvar LAST_INDEX = 'lastIndex';\nvar MAX_UINT32 = 0xffffffff;\n\n// babel-minify transpiles RegExp('x', 'y') -> /x/y and it causes SyntaxError\nvar SUPPORTS_Y = !fails(function () { RegExp(MAX_UINT32, 'y'); });\n\n// @@split logic\nrequire('./_fix-re-wks')('split', 2, function (defined, SPLIT, $split, maybeCallNative) {\n  var internalSplit;\n  if (\n    'abbc'[$SPLIT](/(b)*/)[1] == 'c' ||\n    'test'[$SPLIT](/(?:)/, -1)[LENGTH] != 4 ||\n    'ab'[$SPLIT](/(?:ab)*/)[LENGTH] != 2 ||\n    '.'[$SPLIT](/(.?)(.?)/)[LENGTH] != 4 ||\n    '.'[$SPLIT](/()()/)[LENGTH] > 1 ||\n    ''[$SPLIT](/.?/)[LENGTH]\n  ) {\n    // based on es5-shim implementation, need to rework it\n    internalSplit = function (separator, limit) {\n      var string = String(this);\n      if (separator === undefined && limit === 0) return [];\n      // If `separator` is not a regex, use native split\n      if (!isRegExp(separator)) return $split.call(string, separator, limit);\n      var output = [];\n      var flags = (separator.ignoreCase ? 'i' : '') +\n                  (separator.multiline ? 'm' : '') +\n                  (separator.unicode ? 'u' : '') +\n                  (separator.sticky ? 'y' : '');\n      var lastLastIndex = 0;\n      var splitLimit = limit === undefined ? MAX_UINT32 : limit >>> 0;\n      // Make `global` and avoid `lastIndex` issues by working with a copy\n      var separatorCopy = new RegExp(separator.source, flags + 'g');\n      var match, lastIndex, lastLength;\n      while (match = regexpExec.call(separatorCopy, string)) {\n        lastIndex = separatorCopy[LAST_INDEX];\n        if (lastIndex > lastLastIndex) {\n          output.push(string.slice(lastLastIndex, match.index));\n          if (match[LENGTH] > 1 && match.index < string[LENGTH]) $push.apply(output, match.slice(1));\n          lastLength = match[0][LENGTH];\n          lastLastIndex = lastIndex;\n          if (output[LENGTH] >= splitLimit) break;\n        }\n        if (separatorCopy[LAST_INDEX] === match.index) separatorCopy[LAST_INDEX]++; // Avoid an infinite loop\n      }\n      if (lastLastIndex === string[LENGTH]) {\n        if (lastLength || !separatorCopy.test('')) output.push('');\n      } else output.push(string.slice(lastLastIndex));\n      return output[LENGTH] > splitLimit ? output.slice(0, splitLimit) : output;\n    };\n  // Chakra, V8\n  } else if ('0'[$SPLIT](undefined, 0)[LENGTH]) {\n    internalSplit = function (separator, limit) {\n      return separator === undefined && limit === 0 ? [] : $split.call(this, separator, limit);\n    };\n  } else {\n    internalSplit = $split;\n  }\n\n  return [\n    // `String.prototype.split` method\n    // https://tc39.github.io/ecma262/#sec-string.prototype.split\n    function split(separator, limit) {\n      var O = defined(this);\n      var splitter = separator == undefined ? undefined : separator[SPLIT];\n      return splitter !== undefined\n        ? splitter.call(separator, O, limit)\n        : internalSplit.call(String(O), separator, limit);\n    },\n    // `RegExp.prototype[@@split]` method\n    // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@split\n    //\n    // NOTE: This cannot be properly polyfilled in engines that don't support\n    // the 'y' flag.\n    function (regexp, limit) {\n      var res = maybeCallNative(internalSplit, regexp, this, limit, internalSplit !== $split);\n      if (res.done) return res.value;\n\n      var rx = anObject(regexp);\n      var S = String(this);\n      var C = speciesConstructor(rx, RegExp);\n\n      var unicodeMatching = rx.unicode;\n      var flags = (rx.ignoreCase ? 'i' : '') +\n                  (rx.multiline ? 'm' : '') +\n                  (rx.unicode ? 'u' : '') +\n                  (SUPPORTS_Y ? 'y' : 'g');\n\n      // ^(? + rx + ) is needed, in combination with some S slicing, to\n      // simulate the 'y' flag.\n      var splitter = new C(SUPPORTS_Y ? rx : '^(?:' + rx.source + ')', flags);\n      var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n      if (lim === 0) return [];\n      if (S.length === 0) return callRegExpExec(splitter, S) === null ? [S] : [];\n      var p = 0;\n      var q = 0;\n      var A = [];\n      while (q < S.length) {\n        splitter.lastIndex = SUPPORTS_Y ? q : 0;\n        var z = callRegExpExec(splitter, SUPPORTS_Y ? S : S.slice(q));\n        var e;\n        if (\n          z === null ||\n          (e = $min(toLength(splitter.lastIndex + (SUPPORTS_Y ? 0 : q)), S.length)) === p\n        ) {\n          q = advanceStringIndex(S, q, unicodeMatching);\n        } else {\n          A.push(S.slice(p, q));\n          if (A.length === lim) return A;\n          for (var i = 1; i <= z.length - 1; i++) {\n            A.push(z[i]);\n            if (A.length === lim) return A;\n          }\n          q = p = e;\n        }\n      }\n      A.push(S.slice(p));\n      return A;\n    }\n  ];\n});\n","var global = require('./_global');\nvar hide = require('./_hide');\nvar has = require('./_has');\nvar SRC = require('./_uid')('src');\nvar $toString = require('./_function-to-string');\nvar TO_STRING = 'toString';\nvar TPL = ('' + $toString).split(TO_STRING);\n\nrequire('./_core').inspectSource = function (it) {\n  return $toString.call(it);\n};\n\n(module.exports = function (O, key, val, safe) {\n  var isFunction = typeof val == 'function';\n  if (isFunction) has(val, 'name') || hide(val, 'name', key);\n  if (O[key] === val) return;\n  if (isFunction) has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key)));\n  if (O === global) {\n    O[key] = val;\n  } else if (!safe) {\n    delete O[key];\n    hide(O, key, val);\n  } else if (O[key]) {\n    O[key] = val;\n  } else {\n    hide(O, key, val);\n  }\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, TO_STRING, function toString() {\n  return typeof this == 'function' && this[SRC] || $toString.call(this);\n});\n","// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = require('./_an-object');\nvar dPs = require('./_object-dps');\nvar enumBugKeys = require('./_enum-bug-keys');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n  // Thrash, waste and sodomy: IE GC bug\n  var iframe = require('./_dom-create')('iframe');\n  var i = enumBugKeys.length;\n  var lt = '<';\n  var gt = '>';\n  var iframeDocument;\n  iframe.style.display = 'none';\n  require('./_html').appendChild(iframe);\n  iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n  // createDict = iframe.contentWindow.Object;\n  // html.removeChild(iframe);\n  iframeDocument = iframe.contentWindow.document;\n  iframeDocument.open();\n  iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n  iframeDocument.close();\n  createDict = iframeDocument.F;\n  while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n  return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n  var result;\n  if (O !== null) {\n    Empty[PROTOTYPE] = anObject(O);\n    result = new Empty();\n    Empty[PROTOTYPE] = null;\n    // add \"__proto__\" for Object.getPrototypeOf polyfill\n    result[IE_PROTO] = O;\n  } else result = createDict();\n  return Properties === undefined ? result : dPs(result, Properties);\n};\n","// 21.1.3.7 String.prototype.includes(searchString, position = 0)\n'use strict';\nvar $export = require('./_export');\nvar context = require('./_string-context');\nvar INCLUDES = 'includes';\n\n$export($export.P + $export.F * require('./_fails-is-regexp')(INCLUDES), 'String', {\n  includes: function includes(searchString /* , position = 0 */) {\n    return !!~context(this, searchString, INCLUDES)\n      .indexOf(searchString, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n","\"use strict\";\n\nrequire(\"core-js/modules/es6.array.is-array\");\n\nrequire(\"core-js/modules/web.dom.iterable\");\n\nrequire(\"core-js/modules/es6.array.iterator\");\n\nrequire(\"core-js/modules/es6.object.keys\");\n\nrequire(\"core-js/modules/es6.array.for-each\");\n\nrequire(\"core-js/modules/es6.promise\");\n\nrequire(\"core-js/modules/es6.object.to-string\");\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _off = _interopRequireDefault(require(\"dom-helpers/events/off\"));\n\nvar _on = _interopRequireDefault(require(\"dom-helpers/events/on\"));\n\nvar _scrollLeft = _interopRequireDefault(require(\"dom-helpers/query/scrollLeft\"));\n\nvar _scrollTop = _interopRequireDefault(require(\"dom-helpers/query/scrollTop\"));\n\nvar _requestAnimationFrame = _interopRequireDefault(require(\"dom-helpers/util/requestAnimationFrame\"));\n\nvar _invariant = _interopRequireDefault(require(\"invariant\"));\n\nvar _utils = require(\"./utils\");\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    \"default\": obj\n  };\n}\n/* eslint-disable no-underscore-dangle */\n// Try at most this many times to scroll, to avoid getting stuck.\n\n\nvar MAX_SCROLL_ATTEMPTS = 2;\n\nvar ScrollBehavior =\n/*#__PURE__*/\nfunction () {\n  function ScrollBehavior(_ref) {\n    var _this = this;\n\n    var addTransitionHook = _ref.addTransitionHook,\n        stateStorage = _ref.stateStorage,\n        getCurrentLocation = _ref.getCurrentLocation,\n        shouldUpdateScroll = _ref.shouldUpdateScroll;\n\n    this._restoreScrollRestoration = function () {\n      /* istanbul ignore if: not supported by any browsers on Travis */\n      if (_this._oldScrollRestoration) {\n        try {\n          window.history.scrollRestoration = _this._oldScrollRestoration;\n        } catch (e) {\n          /* silence */\n        }\n      }\n    };\n\n    this._onWindowScroll = function () {\n      if (_this._ignoreScrollEvents) {\n        // Don't save the scroll position until the transition is complete\n        return;\n      } // It's possible that this scroll operation was triggered by what will be a\n      // `POP` transition. Instead of updating the saved location immediately, we\n      // have to enqueue the update, then potentially cancel it if we observe a\n      // location update.\n\n\n      if (!_this._saveWindowPositionHandle) {\n        _this._saveWindowPositionHandle = (0, _requestAnimationFrame[\"default\"])(_this._saveWindowPosition);\n      }\n\n      if (_this._windowScrollTarget) {\n        var _this$_windowScrollTa = _this._windowScrollTarget,\n            xTarget = _this$_windowScrollTa[0],\n            yTarget = _this$_windowScrollTa[1];\n        var x = (0, _scrollLeft[\"default\"])(window);\n        var y = (0, _scrollTop[\"default\"])(window);\n\n        if (x === xTarget && y === yTarget) {\n          _this._windowScrollTarget = null;\n\n          _this._cancelCheckWindowScroll();\n        }\n      }\n    };\n\n    this._saveWindowPosition = function () {\n      _this._saveWindowPositionHandle = null;\n\n      _this._savePosition(null, window);\n    };\n\n    this._checkWindowScrollPosition = function () {\n      _this._checkWindowScrollHandle = null; // We can only get here if scrollTarget is set. Every code path that unsets\n      // scroll target also cancels the handle to avoid calling this handler.\n      // Still, check anyway just in case.\n\n      /* istanbul ignore if: paranoid guard */\n\n      if (!_this._windowScrollTarget) {\n        return Promise.resolve();\n      }\n\n      _this.scrollToTarget(window, _this._windowScrollTarget);\n\n      ++_this._numWindowScrollAttempts;\n      /* istanbul ignore if: paranoid guard */\n\n      if (_this._numWindowScrollAttempts >= MAX_SCROLL_ATTEMPTS) {\n        // This might happen if the scroll position was already set to the target\n        _this._windowScrollTarget = null;\n        return Promise.resolve();\n      }\n\n      return new Promise(function (resolve) {\n        _this._checkWindowScrollHandle = (0, _requestAnimationFrame[\"default\"])(function () {\n          return resolve(_this._checkWindowScrollPosition());\n        });\n      });\n    };\n\n    this._stateStorage = stateStorage;\n    this._getCurrentLocation = getCurrentLocation;\n    this._shouldUpdateScroll = shouldUpdateScroll; // This helps avoid some jankiness in fighting against the browser's\n    // default scroll behavior on `POP` transitions.\n\n    /* istanbul ignore else: Travis browsers all support this */\n\n    if ('scrollRestoration' in window.history && // Unfortunately, Safari on iOS freezes for 2-6s after the user swipes to\n    // navigate through history with scrollRestoration being 'manual', so we\n    // need to detect this browser and exclude it from the following code\n    // until this bug is fixed by Apple.\n    !(0, _utils.isMobileSafari)()) {\n      this._oldScrollRestoration = window.history.scrollRestoration;\n\n      try {\n        window.history.scrollRestoration = 'manual'; // Scroll restoration persists across page reloads. We want to reset\n        // this to the original value, so that we can let the browser handle\n        // restoring the initial scroll position on server-rendered pages.\n\n        (0, _on[\"default\"])(window, 'beforeunload', this._restoreScrollRestoration);\n      } catch (e) {\n        this._oldScrollRestoration = null;\n      }\n    } else {\n      this._oldScrollRestoration = null;\n    }\n\n    this._saveWindowPositionHandle = null;\n    this._checkWindowScrollHandle = null;\n    this._windowScrollTarget = null;\n    this._numWindowScrollAttempts = 0;\n    this._ignoreScrollEvents = false;\n    this._scrollElements = {}; // We have to listen to each window scroll update rather than to just\n    // location updates, because some browsers will update scroll position\n    // before emitting the location change.\n\n    (0, _on[\"default\"])(window, 'scroll', this._onWindowScroll);\n    this._removeTransitionHook = addTransitionHook(function () {\n      _requestAnimationFrame[\"default\"].cancel(_this._saveWindowPositionHandle);\n\n      _this._saveWindowPositionHandle = null;\n      Object.keys(_this._scrollElements).forEach(function (key) {\n        var scrollElement = _this._scrollElements[key];\n\n        _requestAnimationFrame[\"default\"].cancel(scrollElement.savePositionHandle);\n\n        scrollElement.savePositionHandle = null; // It's fine to save element scroll positions here, though; the browser\n        // won't modify them.\n\n        if (!_this._ignoreScrollEvents) {\n          _this._saveElementPosition(key);\n        }\n      });\n    });\n  }\n\n  var _proto = ScrollBehavior.prototype;\n\n  _proto.registerElement = function registerElement(key, element, shouldUpdateScroll, context) {\n    var _this2 = this;\n\n    !!this._scrollElements[key] ? process.env.NODE_ENV !== \"production\" ? (0, _invariant[\"default\"])(false, 'ScrollBehavior: There is already an element registered for `%s`.', key) : invariant(false) : void 0;\n\n    var saveElementPosition = function saveElementPosition() {\n      _this2._saveElementPosition(key);\n    };\n\n    var scrollElement = {\n      element: element,\n      shouldUpdateScroll: shouldUpdateScroll,\n      savePositionHandle: null,\n      onScroll: function onScroll() {\n        if (!scrollElement.savePositionHandle && !_this2._ignoreScrollEvents) {\n          scrollElement.savePositionHandle = (0, _requestAnimationFrame[\"default\"])(saveElementPosition);\n        }\n      }\n    }; // In case no scrolling occurs, save the initial position\n\n    if (!scrollElement.savePositionHandle && !this._ignoreScrollEvents) {\n      scrollElement.savePositionHandle = (0, _requestAnimationFrame[\"default\"])(saveElementPosition);\n    }\n\n    this._scrollElements[key] = scrollElement;\n    (0, _on[\"default\"])(element, 'scroll', scrollElement.onScroll);\n\n    this._updateElementScroll(key, null, context);\n  };\n\n  _proto.unregisterElement = function unregisterElement(key) {\n    !this._scrollElements[key] ? process.env.NODE_ENV !== \"production\" ? (0, _invariant[\"default\"])(false, 'ScrollBehavior: There is no element registered for `%s`.', key) : invariant(false) : void 0;\n    var _this$_scrollElements = this._scrollElements[key],\n        element = _this$_scrollElements.element,\n        onScroll = _this$_scrollElements.onScroll,\n        savePositionHandle = _this$_scrollElements.savePositionHandle;\n    (0, _off[\"default\"])(element, 'scroll', onScroll);\n\n    _requestAnimationFrame[\"default\"].cancel(savePositionHandle);\n\n    delete this._scrollElements[key];\n  };\n\n  _proto.updateScroll = function updateScroll(prevContext, context) {\n    var _this3 = this;\n\n    this._updateWindowScroll(prevContext, context).then(function () {\n      // Save the position immediately after a transition so that if no\n      // scrolling occurs, there is still a saved position\n      if (!_this3._saveWindowPositionHandle) {\n        _this3._saveWindowPositionHandle = (0, _requestAnimationFrame[\"default\"])(_this3._saveWindowPosition);\n      }\n    });\n\n    Object.keys(this._scrollElements).forEach(function (key) {\n      _this3._updateElementScroll(key, prevContext, context);\n    });\n  };\n\n  _proto.stop = function stop() {\n    this._restoreScrollRestoration();\n\n    (0, _off[\"default\"])(window, 'scroll', this._onWindowScroll);\n\n    this._cancelCheckWindowScroll();\n\n    this._removeTransitionHook();\n  };\n\n  _proto.startIgnoringScrollEvents = function startIgnoringScrollEvents() {\n    this._ignoreScrollEvents = true;\n  };\n\n  _proto.stopIgnoringScrollEvents = function stopIgnoringScrollEvents() {\n    this._ignoreScrollEvents = false;\n  };\n\n  _proto._cancelCheckWindowScroll = function _cancelCheckWindowScroll() {\n    _requestAnimationFrame[\"default\"].cancel(this._checkWindowScrollHandle);\n\n    this._checkWindowScrollHandle = null;\n  };\n\n  _proto._saveElementPosition = function _saveElementPosition(key) {\n    var scrollElement = this._scrollElements[key];\n    scrollElement.savePositionHandle = null;\n\n    this._savePosition(key, scrollElement.element);\n  };\n\n  _proto._savePosition = function _savePosition(key, element) {\n    this._stateStorage.save(this._getCurrentLocation(), key, [(0, _scrollLeft[\"default\"])(element), (0, _scrollTop[\"default\"])(element)]);\n  };\n\n  _proto._updateWindowScroll = function _updateWindowScroll(prevContext, context) {\n    // Whatever we were doing before isn't relevant any more.\n    this._cancelCheckWindowScroll();\n\n    this._windowScrollTarget = this._getScrollTarget(null, this._shouldUpdateScroll, prevContext, context); // Updating the window scroll position is really flaky. Just trying to\n    // scroll it isn't enough. Instead, try to scroll a few times until it\n    // works.\n\n    this._numWindowScrollAttempts = 0;\n    return this._checkWindowScrollPosition();\n  };\n\n  _proto._updateElementScroll = function _updateElementScroll(key, prevContext, context) {\n    var _this$_scrollElements2 = this._scrollElements[key],\n        element = _this$_scrollElements2.element,\n        shouldUpdateScroll = _this$_scrollElements2.shouldUpdateScroll;\n\n    var scrollTarget = this._getScrollTarget(key, shouldUpdateScroll, prevContext, context);\n\n    if (!scrollTarget) {\n      return;\n    } // Unlike with the window, there shouldn't be any flakiness to deal with\n    // here.\n\n\n    this.scrollToTarget(element, scrollTarget);\n  };\n\n  _proto._getDefaultScrollTarget = function _getDefaultScrollTarget(location) {\n    var hash = location.hash;\n\n    if (hash && hash !== '#') {\n      return hash.charAt(0) === '#' ? hash.slice(1) : hash;\n    }\n\n    return [0, 0];\n  };\n\n  _proto._getScrollTarget = function _getScrollTarget(key, shouldUpdateScroll, prevContext, context) {\n    var scrollTarget = shouldUpdateScroll ? shouldUpdateScroll.call(this, prevContext, context) : true;\n\n    if (!scrollTarget || Array.isArray(scrollTarget) || typeof scrollTarget === 'string') {\n      return scrollTarget;\n    }\n\n    var location = this._getCurrentLocation();\n\n    return this._getSavedScrollTarget(key, location) || this._getDefaultScrollTarget(location);\n  };\n\n  _proto._getSavedScrollTarget = function _getSavedScrollTarget(key, location) {\n    if (location.action === 'PUSH') {\n      return null;\n    }\n\n    return this._stateStorage.read(location, key);\n  };\n\n  _proto.scrollToTarget = function scrollToTarget(element, target) {\n    if (typeof target === 'string') {\n      var targetElement = document.getElementById(target) || document.getElementsByName(target)[0];\n\n      if (targetElement) {\n        targetElement.scrollIntoView();\n        return;\n      } // Fallback to scrolling to top when target fragment doesn't exist.\n\n\n      target = [0, 0]; // eslint-disable-line no-param-reassign\n    }\n\n    var _target = target,\n        left = _target[0],\n        top = _target[1];\n    (0, _scrollLeft[\"default\"])(element, left);\n    (0, _scrollTop[\"default\"])(element, top);\n  };\n\n  return ScrollBehavior;\n}();\n\nexports[\"default\"] = ScrollBehavior;\nmodule.exports = exports[\"default\"];","// 22.1.2.2 / 15.4.3.2 Array.isArray(arg)\nvar $export = require('./_export');\n\n$export($export.S, 'Array', { isArray: require('./_is-array') });\n","module.exports = false;\n","import \"core-js/modules/es6.regexp.replace\";\nimport \"core-js/modules/es6.array.reduce\";\nimport \"core-js/modules/es6.array.filter\";\nimport \"core-js/modules/es6.array.sort\";\nimport \"core-js/modules/es6.array.index-of\";\nimport \"core-js/modules/es6.array.map\";\nimport \"core-js/modules/es6.regexp.split\";\nimport invariant from \"invariant\"; ////////////////////////////////////////////////////////////////////////////////\n// startsWith(string, search) - Check if `string` starts with `search`\n\nvar startsWith = function startsWith(string, search) {\n  return string.substr(0, search.length) === search;\n}; ////////////////////////////////////////////////////////////////////////////////\n// pick(routes, uri)\n//\n// Ranks and picks the best route to match. Each segment gets the highest\n// amount of points, then the type of segment gets an additional amount of\n// points where\n//\n//     static > dynamic > splat > root\n//\n// This way we don't have to worry about the order of our routes, let the\n// computers do it.\n//\n// A route looks like this\n//\n//     { path, default, value }\n//\n// And a returned match looks like:\n//\n//     { route, params, uri }\n//\n// I know, I should use TypeScript not comments for these types.\n\n\nvar pick = function pick(routes, uri) {\n  var match = void 0;\n  var default_ = void 0;\n\n  var _uri$split = uri.split(\"?\"),\n      uriPathname = _uri$split[0];\n\n  var uriSegments = segmentize(uriPathname);\n  var isRootUri = uriSegments[0] === \"\";\n  var ranked = rankRoutes(routes);\n\n  for (var i = 0, l = ranked.length; i < l; i++) {\n    var missed = false;\n    var route = ranked[i].route;\n\n    if (route[\"default\"]) {\n      default_ = {\n        route: route,\n        params: {},\n        uri: uri\n      };\n      continue;\n    }\n\n    var routeSegments = segmentize(route.path);\n    var params = {};\n    var max = Math.max(uriSegments.length, routeSegments.length);\n    var index = 0;\n\n    for (; index < max; index++) {\n      var routeSegment = routeSegments[index];\n      var uriSegment = uriSegments[index];\n\n      var _isSplat = routeSegment === \"*\";\n\n      if (_isSplat) {\n        // Hit a splat, just grab the rest, and return a match\n        // uri:   /files/documents/work\n        // route: /files/*\n        params[\"*\"] = uriSegments.slice(index).map(decodeURIComponent).join(\"/\");\n        break;\n      }\n\n      if (uriSegment === undefined) {\n        // URI is shorter than the route, no match\n        // uri:   /users\n        // route: /users/:userId\n        missed = true;\n        break;\n      }\n\n      var dynamicMatch = paramRe.exec(routeSegment);\n\n      if (dynamicMatch && !isRootUri) {\n        var matchIsNotReserved = reservedNames.indexOf(dynamicMatch[1]) === -1;\n        !matchIsNotReserved ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"<Router> dynamic segment \\\"\" + dynamicMatch[1] + \"\\\" is a reserved name. Please use a different name in path \\\"\" + route.path + \"\\\".\") : invariant(false) : void 0;\n        var value = decodeURIComponent(uriSegment);\n        params[dynamicMatch[1]] = value;\n      } else if (routeSegment !== uriSegment) {\n        // Current segments don't match, not dynamic, not splat, so no match\n        // uri:   /users/123/settings\n        // route: /users/:id/profile\n        missed = true;\n        break;\n      }\n    }\n\n    if (!missed) {\n      match = {\n        route: route,\n        params: params,\n        uri: \"/\" + uriSegments.slice(0, index).join(\"/\")\n      };\n      break;\n    }\n  }\n\n  return match || default_ || null;\n}; ////////////////////////////////////////////////////////////////////////////////\n// match(path, uri) - Matches just one path to a uri, also lol\n\n\nvar match = function match(path, uri) {\n  return pick([{\n    path: path\n  }], uri);\n}; ////////////////////////////////////////////////////////////////////////////////\n// resolve(to, basepath)\n//\n// Resolves URIs as though every path is a directory, no files.  Relative URIs\n// in the browser can feel awkward because not only can you be \"in a directory\"\n// you can be \"at a file\", too. For example\n//\n//     browserSpecResolve('foo', '/bar/') => /bar/foo\n//     browserSpecResolve('foo', '/bar') => /foo\n//\n// But on the command line of a file system, it's not as complicated, you can't\n// `cd` from a file, only directories.  This way, links have to know less about\n// their current path. To go deeper you can do this:\n//\n//     <Link to=\"deeper\"/>\n//     // instead of\n//     <Link to=`{${props.uri}/deeper}`/>\n//\n// Just like `cd`, if you want to go deeper from the command line, you do this:\n//\n//     cd deeper\n//     # not\n//     cd $(pwd)/deeper\n//\n// By treating every path as a directory, linking to relative paths should\n// require less contextual information and (fingers crossed) be more intuitive.\n\n\nvar resolve = function resolve(to, base) {\n  // /foo/bar, /baz/qux => /foo/bar\n  if (startsWith(to, \"/\")) {\n    return to;\n  }\n\n  var _to$split = to.split(\"?\"),\n      toPathname = _to$split[0],\n      toQuery = _to$split[1];\n\n  var _base$split = base.split(\"?\"),\n      basePathname = _base$split[0];\n\n  var toSegments = segmentize(toPathname);\n  var baseSegments = segmentize(basePathname); // ?a=b, /users?b=c => /users?a=b\n\n  if (toSegments[0] === \"\") {\n    return addQuery(basePathname, toQuery);\n  } // profile, /users/789 => /users/789/profile\n\n\n  if (!startsWith(toSegments[0], \".\")) {\n    var pathname = baseSegments.concat(toSegments).join(\"/\");\n    return addQuery((basePathname === \"/\" ? \"\" : \"/\") + pathname, toQuery);\n  } // ./         /users/123  =>  /users/123\n  // ../        /users/123  =>  /users\n  // ../..      /users/123  =>  /\n  // ../../one  /a/b/c/d    =>  /a/b/one\n  // .././one   /a/b/c/d    =>  /a/b/c/one\n\n\n  var allSegments = baseSegments.concat(toSegments);\n  var segments = [];\n\n  for (var i = 0, l = allSegments.length; i < l; i++) {\n    var segment = allSegments[i];\n    if (segment === \"..\") segments.pop();else if (segment !== \".\") segments.push(segment);\n  }\n\n  return addQuery(\"/\" + segments.join(\"/\"), toQuery);\n}; ////////////////////////////////////////////////////////////////////////////////\n// insertParams(path, params)\n\n\nvar insertParams = function insertParams(path, params) {\n  var segments = segmentize(path);\n  return \"/\" + segments.map(function (segment) {\n    var match = paramRe.exec(segment);\n    return match ? params[match[1]] : segment;\n  }).join(\"/\");\n};\n\nvar validateRedirect = function validateRedirect(from, to) {\n  var filter = function filter(segment) {\n    return isDynamic(segment);\n  };\n\n  var fromString = segmentize(from).filter(filter).sort().join(\"/\");\n  var toString = segmentize(to).filter(filter).sort().join(\"/\");\n  return fromString === toString;\n}; ////////////////////////////////////////////////////////////////////////////////\n// Junk\n\n\nvar paramRe = /^:(.+)/;\nvar SEGMENT_POINTS = 4;\nvar STATIC_POINTS = 3;\nvar DYNAMIC_POINTS = 2;\nvar SPLAT_PENALTY = 1;\nvar ROOT_POINTS = 1;\n\nvar isRootSegment = function isRootSegment(segment) {\n  return segment === \"\";\n};\n\nvar isDynamic = function isDynamic(segment) {\n  return paramRe.test(segment);\n};\n\nvar isSplat = function isSplat(segment) {\n  return segment === \"*\";\n};\n\nvar rankRoute = function rankRoute(route, index) {\n  var score = route[\"default\"] ? 0 : segmentize(route.path).reduce(function (score, segment) {\n    score += SEGMENT_POINTS;\n    if (isRootSegment(segment)) score += ROOT_POINTS;else if (isDynamic(segment)) score += DYNAMIC_POINTS;else if (isSplat(segment)) score -= SEGMENT_POINTS + SPLAT_PENALTY;else score += STATIC_POINTS;\n    return score;\n  }, 0);\n  return {\n    route: route,\n    score: score,\n    index: index\n  };\n};\n\nvar rankRoutes = function rankRoutes(routes) {\n  return routes.map(rankRoute).sort(function (a, b) {\n    return a.score < b.score ? 1 : a.score > b.score ? -1 : a.index - b.index;\n  });\n};\n\nvar segmentize = function segmentize(uri) {\n  return uri // strip starting/ending slashes\n  .replace(/(^\\/+|\\/+$)/g, \"\").split(\"/\");\n};\n\nvar addQuery = function addQuery(pathname, query) {\n  return pathname + (query ? \"?\" + query : \"\");\n};\n\nvar reservedNames = [\"uri\", \"path\"]; ////////////////////////////////////////////////////////////////////////////////\n\nexport { startsWith, pick, match, resolve, insertParams, validateRedirect };","var toString = {}.toString;\n\nmodule.exports = function (it) {\n  return toString.call(it).slice(8, -1);\n};\n","module.exports = [{\n      plugin: require('../node_modules/gatsby-plugin-manifest/gatsby-browser.js'),\n      options: {\"plugins\":[],\"icon\":\"static/openj9-logo.svg\",\"cache_busting_mode\":\"query\",\"include_favicon\":true,\"legacy\":true,\"theme_color_in_head\":true,\"cacheDigest\":\"0a19b941415d1d6d03226a8c85fc39c9\"},\n    },{\n      plugin: require('../node_modules/gatsby-plugin-google-analytics/gatsby-browser.js'),\n      options: {\"plugins\":[],\"trackingId\":\"UA-105616558-3\",\"head\":false,\"anonymize\":true},\n    },{\n      plugin: require('../gatsby-browser.js'),\n      options: {\"plugins\":[]},\n    }]\n","'use strict';\nvar fails = require('./_fails');\n\nmodule.exports = function (method, arg) {\n  return !!method && fails(function () {\n    // eslint-disable-next-line no-useless-call\n    arg ? method.call(null, function () { /* empty */ }, 1) : method.call(null);\n  });\n};\n","// check on default Array iterator\nvar Iterators = require('./_iterators');\nvar ITERATOR = require('./_wks')('iterator');\nvar ArrayProto = Array.prototype;\n\nmodule.exports = function (it) {\n  return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);\n};\n","require(\"core-js/modules/es6.array.index-of\");\n\n/*!\n * domready (c) Dustin Diaz 2014 - License MIT\n * ie10 fix - Mikael Kristiansson 2019\n */\n!function (name, definition) {\n  if (typeof module != \"undefined\") module.exports = definition();else if (typeof define == \"function\" && typeof define.amd == \"object\") define(definition);else this[name] = definition();\n}(\"domready\", function () {\n  var ie10 = false;\n\n  if (navigator.appVersion.indexOf(\"MSIE 10\") !== -1) {\n    ie10 = true;\n  }\n\n  var fns = [],\n      _listener,\n      doc = typeof document === \"object\" && document,\n      hack = ie10 ? doc.documentElement.doScroll(\"left\") : doc.documentElement.doScroll,\n      domContentLoaded = \"DOMContentLoaded\",\n      loaded = doc && (hack ? /^loaded|^c/ : /^loaded|^i|^c/).test(doc.readyState);\n\n  if (!loaded && doc) doc.addEventListener(domContentLoaded, _listener = function listener() {\n    doc.removeEventListener(domContentLoaded, _listener);\n    loaded = 1;\n\n    while (_listener = fns.shift()) {\n      _listener();\n    }\n  });\n  return function (fn) {\n    loaded ? setTimeout(fn, 0) : fns.push(fn);\n  };\n});","// fast apply, http://jsperf.lnkit.com/fast-apply/5\nmodule.exports = function (fn, args, that) {\n  var un = that === undefined;\n  switch (args.length) {\n    case 0: return un ? fn()\n                      : fn.call(that);\n    case 1: return un ? fn(args[0])\n                      : fn.call(that, args[0]);\n    case 2: return un ? fn(args[0], args[1])\n                      : fn.call(that, args[0], args[1]);\n    case 3: return un ? fn(args[0], args[1], args[2])\n                      : fn.call(that, args[0], args[1], args[2]);\n    case 4: return un ? fn(args[0], args[1], args[2], args[3])\n                      : fn.call(that, args[0], args[1], args[2], args[3]);\n  } return fn.apply(that, args);\n};\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n'use strict';\n/* eslint-disable no-unused-vars */\n\nrequire(\"core-js/modules/web.dom.iterable\");\n\nrequire(\"core-js/modules/es6.array.iterator\");\n\nrequire(\"core-js/modules/es6.object.to-string\");\n\nrequire(\"core-js/modules/es6.object.keys\");\n\nrequire(\"core-js/modules/es6.regexp.split\");\n\nrequire(\"core-js/modules/es6.array.for-each\");\n\nrequire(\"core-js/modules/es6.array.map\");\n\nrequire(\"core-js/modules/es6.object.assign\");\n\nrequire(\"core-js/modules/es6.symbol\");\n\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n  if (val === null || val === undefined) {\n    throw new TypeError('Object.assign cannot be called with null or undefined');\n  }\n\n  return Object(val);\n}\n\nfunction shouldUseNative() {\n  try {\n    if (!Object.assign) {\n      return false;\n    } // Detect buggy property enumeration order in older V8 versions.\n    // https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\n\n    var test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\n    test1[5] = 'de';\n\n    if (Object.getOwnPropertyNames(test1)[0] === '5') {\n      return false;\n    } // https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\n\n    var test2 = {};\n\n    for (var i = 0; i < 10; i++) {\n      test2['_' + String.fromCharCode(i)] = i;\n    }\n\n    var order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n      return test2[n];\n    });\n\n    if (order2.join('') !== '0123456789') {\n      return false;\n    } // https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\n\n    var test3 = {};\n    'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n      test3[letter] = letter;\n    });\n\n    if (Object.keys(Object.assign({}, test3)).join('') !== 'abcdefghijklmnopqrst') {\n      return false;\n    }\n\n    return true;\n  } catch (err) {\n    // We don't expect any of the above to throw, but better to be safe.\n    return false;\n  }\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n  var from;\n  var to = toObject(target);\n  var symbols;\n\n  for (var s = 1; s < arguments.length; s++) {\n    from = Object(arguments[s]);\n\n    for (var key in from) {\n      if (hasOwnProperty.call(from, key)) {\n        to[key] = from[key];\n      }\n    }\n\n    if (getOwnPropertySymbols) {\n      symbols = getOwnPropertySymbols(from);\n\n      for (var i = 0; i < symbols.length; i++) {\n        if (propIsEnumerable.call(from, symbols[i])) {\n          to[symbols[i]] = from[symbols[i]];\n        }\n      }\n    }\n  }\n\n  return to;\n};","import \"core-js/modules/es6.regexp.to-string\";\nimport \"core-js/modules/es6.date.to-string\";\nimport \"core-js/modules/es6.object.to-string\";\n\n/* eslint-disable */\n// murmurhash2 via https://github.com/garycourt/murmurhash-js/blob/master/murmurhash2_gc.js\nfunction murmurhash2_32_gc(str) {\n  var l = str.length,\n      h = l ^ l,\n      i = 0,\n      k;\n\n  while (l >= 4) {\n    k = str.charCodeAt(i) & 0xff | (str.charCodeAt(++i) & 0xff) << 8 | (str.charCodeAt(++i) & 0xff) << 16 | (str.charCodeAt(++i) & 0xff) << 24;\n    k = (k & 0xffff) * 0x5bd1e995 + (((k >>> 16) * 0x5bd1e995 & 0xffff) << 16);\n    k ^= k >>> 24;\n    k = (k & 0xffff) * 0x5bd1e995 + (((k >>> 16) * 0x5bd1e995 & 0xffff) << 16);\n    h = (h & 0xffff) * 0x5bd1e995 + (((h >>> 16) * 0x5bd1e995 & 0xffff) << 16) ^ k;\n    l -= 4;\n    ++i;\n  }\n\n  switch (l) {\n    case 3:\n      h ^= (str.charCodeAt(i + 2) & 0xff) << 16;\n\n    case 2:\n      h ^= (str.charCodeAt(i + 1) & 0xff) << 8;\n\n    case 1:\n      h ^= str.charCodeAt(i) & 0xff;\n      h = (h & 0xffff) * 0x5bd1e995 + (((h >>> 16) * 0x5bd1e995 & 0xffff) << 16);\n  }\n\n  h ^= h >>> 13;\n  h = (h & 0xffff) * 0x5bd1e995 + (((h >>> 16) * 0x5bd1e995 & 0xffff) << 16);\n  h ^= h >>> 15;\n  return (h >>> 0).toString(36);\n}\n\nexport default murmurhash2_32_gc;","var unitlessKeys = {\n  animationIterationCount: 1,\n  borderImageOutset: 1,\n  borderImageSlice: 1,\n  borderImageWidth: 1,\n  boxFlex: 1,\n  boxFlexGroup: 1,\n  boxOrdinalGroup: 1,\n  columnCount: 1,\n  columns: 1,\n  flex: 1,\n  flexGrow: 1,\n  flexPositive: 1,\n  flexShrink: 1,\n  flexNegative: 1,\n  flexOrder: 1,\n  gridRow: 1,\n  gridRowEnd: 1,\n  gridRowSpan: 1,\n  gridRowStart: 1,\n  gridColumn: 1,\n  gridColumnEnd: 1,\n  gridColumnSpan: 1,\n  gridColumnStart: 1,\n  msGridRow: 1,\n  msGridRowSpan: 1,\n  msGridColumn: 1,\n  msGridColumnSpan: 1,\n  fontWeight: 1,\n  lineHeight: 1,\n  opacity: 1,\n  order: 1,\n  orphans: 1,\n  tabSize: 1,\n  widows: 1,\n  zIndex: 1,\n  zoom: 1,\n  WebkitLineClamp: 1,\n  // SVG-related properties\n  fillOpacity: 1,\n  floodOpacity: 1,\n  stopOpacity: 1,\n  strokeDasharray: 1,\n  strokeDashoffset: 1,\n  strokeMiterlimit: 1,\n  strokeOpacity: 1,\n  strokeWidth: 1\n};\nexport default unitlessKeys;","import \"core-js/modules/es6.array.is-array\";\nimport \"core-js/modules/es6.array.map\";\nimport \"core-js/modules/es6.function.name\";\nimport \"core-js/modules/es6.regexp.to-string\";\nimport \"core-js/modules/es6.date.to-string\";\nimport \"core-js/modules/es6.object.to-string\";\nimport \"core-js/modules/es6.array.index-of\";\nimport \"core-js/modules/es6.regexp.replace\";\nimport hashString from '@emotion/hash';\nimport unitless from '@emotion/unitless';\nimport memoize from '@emotion/memoize';\nvar ILLEGAL_ESCAPE_SEQUENCE_ERROR = \"You have illegal escape sequence in your template literal, most likely inside content's property value.\\nBecause you write your CSS inside a JavaScript string you actually have to do double escaping, so for example \\\"content: '\\\\00d7';\\\" should become \\\"content: '\\\\\\\\00d7';\\\".\\nYou can read more about this here:\\nhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals#ES2018_revision_of_illegal_escape_sequences\";\nvar UNDEFINED_AS_OBJECT_KEY_ERROR = \"You have passed in falsy value as style object's key (can happen when in example you pass unexported component as computed key).\";\nvar hyphenateRegex = /[A-Z]|^ms/g;\nvar animationRegex = /_EMO_([^_]+?)_([^]*?)_EMO_/g;\n\nvar isCustomProperty = function isCustomProperty(property) {\n  return property.charCodeAt(1) === 45;\n};\n\nvar isProcessableValue = function isProcessableValue(value) {\n  return value != null && typeof value !== 'boolean';\n};\n\nvar processStyleName = memoize(function (styleName) {\n  return isCustomProperty(styleName) ? styleName : styleName.replace(hyphenateRegex, '-$&').toLowerCase();\n});\n\nvar processStyleValue = function processStyleValue(key, value) {\n  switch (key) {\n    case 'animation':\n    case 'animationName':\n      {\n        if (typeof value === 'string') {\n          return value.replace(animationRegex, function (match, p1, p2) {\n            cursor = {\n              name: p1,\n              styles: p2,\n              next: cursor\n            };\n            return p1;\n          });\n        }\n      }\n  }\n\n  if (unitless[key] !== 1 && !isCustomProperty(key) && typeof value === 'number' && value !== 0) {\n    return value + 'px';\n  }\n\n  return value;\n};\n\nif (process.env.NODE_ENV !== 'production') {\n  var contentValuePattern = /(attr|calc|counters?|url)\\(/;\n  var contentValues = ['normal', 'none', 'counter', 'open-quote', 'close-quote', 'no-open-quote', 'no-close-quote', 'initial', 'inherit', 'unset'];\n  var oldProcessStyleValue = processStyleValue;\n  var msPattern = /^-ms-/;\n  var hyphenPattern = /-(.)/g;\n  var hyphenatedCache = {};\n\n  processStyleValue = function processStyleValue(key, value) {\n    if (key === 'content') {\n      if (typeof value !== 'string' || contentValues.indexOf(value) === -1 && !contentValuePattern.test(value) && (value.charAt(0) !== value.charAt(value.length - 1) || value.charAt(0) !== '\"' && value.charAt(0) !== \"'\")) {\n        console.error(\"You seem to be using a value for 'content' without quotes, try replacing it with `content: '\\\"\" + value + \"\\\"'`\");\n      }\n    }\n\n    var processed = oldProcessStyleValue(key, value);\n\n    if (processed !== '' && !isCustomProperty(key) && key.indexOf('-') !== -1 && hyphenatedCache[key] === undefined) {\n      hyphenatedCache[key] = true;\n      console.error(\"Using kebab-case for css properties in objects is not supported. Did you mean \" + key.replace(msPattern, 'ms-').replace(hyphenPattern, function (str, _char) {\n        return _char.toUpperCase();\n      }) + \"?\");\n    }\n\n    return processed;\n  };\n}\n\nvar shouldWarnAboutInterpolatingClassNameFromCss = true;\n\nfunction handleInterpolation(mergedProps, registered, interpolation, couldBeSelectorInterpolation) {\n  if (interpolation == null) {\n    return '';\n  }\n\n  if (interpolation.__emotion_styles !== undefined) {\n    if (process.env.NODE_ENV !== 'production' && interpolation.toString() === 'NO_COMPONENT_SELECTOR') {\n      throw new Error('Component selectors can only be used in conjunction with babel-plugin-emotion.');\n    }\n\n    return interpolation;\n  }\n\n  switch (typeof interpolation) {\n    case 'boolean':\n      {\n        return '';\n      }\n\n    case 'object':\n      {\n        if (interpolation.anim === 1) {\n          cursor = {\n            name: interpolation.name,\n            styles: interpolation.styles,\n            next: cursor\n          };\n          return interpolation.name;\n        }\n\n        if (interpolation.styles !== undefined) {\n          var next = interpolation.next;\n\n          if (next !== undefined) {\n            // not the most efficient thing ever but this is a pretty rare case\n            // and there will be very few iterations of this generally\n            while (next !== undefined) {\n              cursor = {\n                name: next.name,\n                styles: next.styles,\n                next: cursor\n              };\n              next = next.next;\n            }\n          }\n\n          var styles = interpolation.styles + \";\";\n\n          if (process.env.NODE_ENV !== 'production' && interpolation.map !== undefined) {\n            styles += interpolation.map;\n          }\n\n          return styles;\n        }\n\n        return createStringFromObject(mergedProps, registered, interpolation);\n      }\n\n    case 'function':\n      {\n        if (mergedProps !== undefined) {\n          var previousCursor = cursor;\n          var result = interpolation(mergedProps);\n          cursor = previousCursor;\n          return handleInterpolation(mergedProps, registered, result, couldBeSelectorInterpolation);\n        } else if (process.env.NODE_ENV !== 'production') {\n          console.error('Functions that are interpolated in css calls will be stringified.\\n' + 'If you want to have a css call based on props, create a function that returns a css call like this\\n' + 'let dynamicStyle = (props) => css`color: ${props.color}`\\n' + 'It can be called directly with props or interpolated in a styled call like this\\n' + \"let SomeComponent = styled('div')`${dynamicStyle}`\");\n        }\n\n        break;\n      }\n\n    case 'string':\n      if (process.env.NODE_ENV !== 'production') {\n        var matched = [];\n        var replaced = interpolation.replace(animationRegex, function (match, p1, p2) {\n          var fakeVarName = \"animation\" + matched.length;\n          matched.push(\"const \" + fakeVarName + \" = keyframes`\" + p2.replace(/^@keyframes animation-\\w+/, '') + \"`\");\n          return \"${\" + fakeVarName + \"}\";\n        });\n\n        if (matched.length) {\n          console.error('`keyframes` output got interpolated into plain string, please wrap it with `css`.\\n\\n' + 'Instead of doing this:\\n\\n' + [].concat(matched, [\"`\" + replaced + \"`\"]).join('\\n') + '\\n\\nYou should wrap it with `css` like this:\\n\\n' + (\"css`\" + replaced + \"`\"));\n        }\n      }\n\n      break;\n  } // finalize string values (regular strings and functions interpolated into css calls)\n\n\n  if (registered == null) {\n    return interpolation;\n  }\n\n  var cached = registered[interpolation];\n\n  if (process.env.NODE_ENV !== 'production' && couldBeSelectorInterpolation && shouldWarnAboutInterpolatingClassNameFromCss && cached !== undefined) {\n    console.error('Interpolating a className from css`` is not recommended and will cause problems with composition.\\n' + 'Interpolating a className from css`` will be completely unsupported in a future major version of Emotion');\n    shouldWarnAboutInterpolatingClassNameFromCss = false;\n  }\n\n  return cached !== undefined && !couldBeSelectorInterpolation ? cached : interpolation;\n}\n\nfunction createStringFromObject(mergedProps, registered, obj) {\n  var string = '';\n\n  if (Array.isArray(obj)) {\n    for (var i = 0; i < obj.length; i++) {\n      string += handleInterpolation(mergedProps, registered, obj[i], false);\n    }\n  } else {\n    for (var _key in obj) {\n      var value = obj[_key];\n\n      if (typeof value !== 'object') {\n        if (registered != null && registered[value] !== undefined) {\n          string += _key + \"{\" + registered[value] + \"}\";\n        } else if (isProcessableValue(value)) {\n          string += processStyleName(_key) + \":\" + processStyleValue(_key, value) + \";\";\n        }\n      } else {\n        if (_key === 'NO_COMPONENT_SELECTOR' && process.env.NODE_ENV !== 'production') {\n          throw new Error('Component selectors can only be used in conjunction with babel-plugin-emotion.');\n        }\n\n        if (Array.isArray(value) && typeof value[0] === 'string' && (registered == null || registered[value[0]] === undefined)) {\n          for (var _i = 0; _i < value.length; _i++) {\n            if (isProcessableValue(value[_i])) {\n              string += processStyleName(_key) + \":\" + processStyleValue(_key, value[_i]) + \";\";\n            }\n          }\n        } else {\n          var interpolated = handleInterpolation(mergedProps, registered, value, false);\n\n          switch (_key) {\n            case 'animation':\n            case 'animationName':\n              {\n                string += processStyleName(_key) + \":\" + interpolated + \";\";\n                break;\n              }\n\n            default:\n              {\n                if (process.env.NODE_ENV !== 'production' && _key === 'undefined') {\n                  console.error(UNDEFINED_AS_OBJECT_KEY_ERROR);\n                }\n\n                string += _key + \"{\" + interpolated + \"}\";\n              }\n          }\n        }\n      }\n    }\n  }\n\n  return string;\n}\n\nvar labelPattern = /label:\\s*([^\\s;\\n{]+)\\s*;/g;\nvar sourceMapPattern;\n\nif (process.env.NODE_ENV !== 'production') {\n  sourceMapPattern = /\\/\\*#\\ssourceMappingURL=data:application\\/json;\\S+\\s+\\*\\//;\n} // this is the cursor for keyframes\n// keyframes are stored on the SerializedStyles object as a linked list\n\n\nvar cursor;\n\nvar serializeStyles = function serializeStyles(args, registered, mergedProps) {\n  if (args.length === 1 && typeof args[0] === 'object' && args[0] !== null && args[0].styles !== undefined) {\n    return args[0];\n  }\n\n  var stringMode = true;\n  var styles = '';\n  cursor = undefined;\n  var strings = args[0];\n\n  if (strings == null || strings.raw === undefined) {\n    stringMode = false;\n    styles += handleInterpolation(mergedProps, registered, strings, false);\n  } else {\n    if (process.env.NODE_ENV !== 'production' && strings[0] === undefined) {\n      console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n    }\n\n    styles += strings[0];\n  } // we start at 1 since we've already handled the first arg\n\n\n  for (var i = 1; i < args.length; i++) {\n    styles += handleInterpolation(mergedProps, registered, args[i], styles.charCodeAt(styles.length - 1) === 46);\n\n    if (stringMode) {\n      if (process.env.NODE_ENV !== 'production' && strings[i] === undefined) {\n        console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n      }\n\n      styles += strings[i];\n    }\n  }\n\n  var sourceMap;\n\n  if (process.env.NODE_ENV !== 'production') {\n    styles = styles.replace(sourceMapPattern, function (match) {\n      sourceMap = match;\n      return '';\n    });\n  } // using a global regex with .exec is stateful so lastIndex has to be reset each time\n\n\n  labelPattern.lastIndex = 0;\n  var identifierName = '';\n  var match; // https://esbench.com/bench/5b809c2cf2949800a0f61fb5\n\n  while ((match = labelPattern.exec(styles)) !== null) {\n    identifierName += '-' + // $FlowFixMe we know it's not null\n    match[1];\n  }\n\n  var name = hashString(styles) + identifierName;\n\n  if (process.env.NODE_ENV !== 'production') {\n    // $FlowFixMe SerializedStyles type doesn't have toString property (and we don't want to add it)\n    return {\n      name: name,\n      styles: styles,\n      map: sourceMap,\n      next: cursor,\n      toString: function toString() {\n        return \"You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop).\";\n      }\n    };\n  }\n\n  return {\n    name: name,\n    styles: styles,\n    next: cursor\n  };\n};\n\nexport { serializeStyles };","var dP = require('./_object-dp');\nvar createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function (object, key, value) {\n  return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n  object[key] = value;\n  return object;\n};\n","exports.f = require('./_wks');\n","import { apiRunner } from \"./api-runner-browser\"\n\nif (\n  window.location.protocol !== `https:` &&\n  window.location.hostname !== `localhost`\n) {\n  console.error(\n    `Service workers can only be used over HTTPS, or on localhost for development`\n  )\n} else if (`serviceWorker` in navigator) {\n  navigator.serviceWorker\n    .register(`${__BASE_PATH__}/sw.js`)\n    .then(function(reg) {\n      reg.addEventListener(`updatefound`, () => {\n        apiRunner(`onServiceWorkerUpdateFound`, { serviceWorker: reg })\n        // The updatefound event implies that reg.installing is set; see\n        // https://w3c.github.io/ServiceWorker/#service-worker-registration-updatefound-event\n        const installingWorker = reg.installing\n        console.log(`installingWorker`, installingWorker)\n        installingWorker.addEventListener(`statechange`, () => {\n          switch (installingWorker.state) {\n            case `installed`:\n              if (navigator.serviceWorker.controller) {\n                // At this point, the old content will have been purged and the fresh content will\n                // have been added to the cache.\n\n                // We set a flag so Gatsby Link knows to refresh the page on next navigation attempt\n                window.___swUpdated = true\n                // We call the onServiceWorkerUpdateReady API so users can show update prompts.\n                apiRunner(`onServiceWorkerUpdateReady`, { serviceWorker: reg })\n\n                // If resources failed for the current page, reload.\n                if (window.___failedResources) {\n                  console.log(`resources failed, SW updated - reloading`)\n                  window.location.reload()\n                }\n              } else {\n                // At this point, everything has been precached.\n                // It's the perfect time to display a \"Content is cached for offline use.\" message.\n                console.log(`Content is now available offline!`)\n\n                // Post to service worker that install is complete.\n                // Delay to allow time for the event listener to be added --\n                // otherwise fetch is called too soon and resources aren't cached.\n                apiRunner(`onServiceWorkerInstalled`, { serviceWorker: reg })\n              }\n              break\n\n            case `redundant`:\n              console.error(`The installing service worker became redundant.`)\n              apiRunner(`onServiceWorkerRedundant`, { serviceWorker: reg })\n              break\n\n            case `activated`:\n              apiRunner(`onServiceWorkerActive`, { serviceWorker: reg })\n              break\n          }\n        })\n      })\n    })\n    .catch(function(e) {\n      console.error(`Error during service worker registration:`, e)\n    })\n}\n","// 21.2.5.3 get RegExp.prototype.flags()\nif (require('./_descriptors') && /./g.flags != 'g') require('./_object-dp').f(RegExp.prototype, 'flags', {\n  configurable: true,\n  get: require('./_flags')\n});\n","'use strict';\n\nvar anObject = require('./_an-object');\nvar sameValue = require('./_same-value');\nvar regExpExec = require('./_regexp-exec-abstract');\n\n// @@search logic\nrequire('./_fix-re-wks')('search', 1, function (defined, SEARCH, $search, maybeCallNative) {\n  return [\n    // `String.prototype.search` method\n    // https://tc39.github.io/ecma262/#sec-string.prototype.search\n    function search(regexp) {\n      var O = defined(this);\n      var fn = regexp == undefined ? undefined : regexp[SEARCH];\n      return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[SEARCH](String(O));\n    },\n    // `RegExp.prototype[@@search]` method\n    // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@search\n    function (regexp) {\n      var res = maybeCallNative($search, regexp, this);\n      if (res.done) return res.value;\n      var rx = anObject(regexp);\n      var S = String(this);\n      var previousLastIndex = rx.lastIndex;\n      if (!sameValue(previousLastIndex, 0)) rx.lastIndex = 0;\n      var result = regExpExec(rx, S);\n      if (!sameValue(rx.lastIndex, previousLastIndex)) rx.lastIndex = previousLastIndex;\n      return result === null ? -1 : result.index;\n    }\n  ];\n});\n","// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = require('./_has');\nvar toObject = require('./_to-object');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n  O = toObject(O);\n  if (has(O, IE_PROTO)) return O[IE_PROTO];\n  if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n    return O.constructor.prototype;\n  } return O instanceof Object ? ObjectProto : null;\n};\n","var global = require('./_global');\nvar core = require('./_core');\nvar LIBRARY = require('./_library');\nvar wksExt = require('./_wks-ext');\nvar defineProperty = require('./_object-dp').f;\nmodule.exports = function (name) {\n  var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});\n  if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) });\n};\n","\"use strict\";\n\nexports.__esModule = true;\nexports.isMobileSafari = isMobileSafari;\n\nfunction isMobileSafari() {\n  return /iPad|iPhone|iPod/.test(window.navigator.platform) && /^((?!CriOS).)*Safari/.test(window.navigator.userAgent);\n}","var global = require('./_global');\nvar inheritIfRequired = require('./_inherit-if-required');\nvar dP = require('./_object-dp').f;\nvar gOPN = require('./_object-gopn').f;\nvar isRegExp = require('./_is-regexp');\nvar $flags = require('./_flags');\nvar $RegExp = global.RegExp;\nvar Base = $RegExp;\nvar proto = $RegExp.prototype;\nvar re1 = /a/g;\nvar re2 = /a/g;\n// \"new\" creates a new object, old webkit buggy here\nvar CORRECT_NEW = new $RegExp(re1) !== re1;\n\nif (require('./_descriptors') && (!CORRECT_NEW || require('./_fails')(function () {\n  re2[require('./_wks')('match')] = false;\n  // RegExp constructor can alter flags and IsRegExp works correct with @@match\n  return $RegExp(re1) != re1 || $RegExp(re2) == re2 || $RegExp(re1, 'i') != '/a/i';\n}))) {\n  $RegExp = function RegExp(p, f) {\n    var tiRE = this instanceof $RegExp;\n    var piRE = isRegExp(p);\n    var fiU = f === undefined;\n    return !tiRE && piRE && p.constructor === $RegExp && fiU ? p\n      : inheritIfRequired(CORRECT_NEW\n        ? new Base(piRE && !fiU ? p.source : p, f)\n        : Base((piRE = p instanceof $RegExp) ? p.source : p, piRE && fiU ? $flags.call(p) : f)\n      , tiRE ? this : proto, $RegExp);\n  };\n  var proxy = function (key) {\n    key in $RegExp || dP($RegExp, key, {\n      configurable: true,\n      get: function () { return Base[key]; },\n      set: function (it) { Base[key] = it; }\n    });\n  };\n  for (var keys = gOPN(Base), i = 0; keys.length > i;) proxy(keys[i++]);\n  proto.constructor = $RegExp;\n  $RegExp.prototype = proto;\n  require('./_redefine')(global, 'RegExp', $RegExp);\n}\n\nrequire('./_set-species')('RegExp');\n","function _assertThisInitialized(self) {\n  if (self === void 0) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n\n  return self;\n}\n\nmodule.exports = _assertThisInitialized;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nrequire(\"core-js/modules/es6.function.name\");\n\nrequire(\"core-js/modules/es6.regexp.replace\");\n\nvar invariant = function invariant(condition, format, a, b, c, d, e, f) {\n  if (process.env.NODE_ENV !== 'production') {\n    if (format === undefined) {\n      throw new Error('invariant requires an error message argument');\n    }\n  }\n\n  if (!condition) {\n    var error;\n\n    if (format === undefined) {\n      error = new Error('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');\n    } else {\n      var args = [a, b, c, d, e, f];\n      var argIndex = 0;\n      error = new Error(format.replace(/%s/g, function () {\n        return args[argIndex++];\n      }));\n      error.name = 'Invariant Violation';\n    }\n\n    error.framesToPop = 1; // we don't care about invariant's own frame\n\n    throw error;\n  }\n};\n\nmodule.exports = invariant;","'use strict';\nvar create = require('./_object-create');\nvar descriptor = require('./_property-desc');\nvar setToStringTag = require('./_set-to-string-tag');\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nrequire('./_hide')(IteratorPrototype, require('./_wks')('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n  Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n  setToStringTag(Constructor, NAME + ' Iterator');\n};\n","// 19.1.2.14 Object.keys(O)\nvar toObject = require('./_to-object');\nvar $keys = require('./_object-keys');\n\nrequire('./_object-sap')('keys', function () {\n  return function keys(it) {\n    return $keys(toObject(it));\n  };\n});\n","// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n  return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n","module.exports = function (bitmap, value) {\n  return {\n    enumerable: !(bitmap & 1),\n    configurable: !(bitmap & 2),\n    writable: !(bitmap & 4),\n    value: value\n  };\n};\n","// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n  return Object(defined(it));\n};\n","import \"core-js/modules/es6.function.name\";\nimport \"core-js/modules/es6.regexp.split\";\nimport \"core-js/modules/es6.array.for-each\";\nvar isBrowser = \"object\" !== 'undefined';\n\nfunction getRegisteredStyles(registered, registeredStyles, classNames) {\n  var rawClassName = '';\n  classNames.split(' ').forEach(function (className) {\n    if (registered[className] !== undefined) {\n      registeredStyles.push(registered[className]);\n    } else {\n      rawClassName += className + \" \";\n    }\n  });\n  return rawClassName;\n}\n\nvar insertStyles = function insertStyles(cache, serialized, isStringTag) {\n  var className = cache.key + \"-\" + serialized.name;\n\n  if ( // we only need to add the styles to the registered cache if the\n  // class name could be used further down\n  // the tree but if it's a string tag, we know it won't\n  // so we don't have to add it to registered cache.\n  // this improves memory usage since we can avoid storing the whole style string\n  (isStringTag === false || // we need to always store it if we're in compat mode and\n  // in node since emotion-server relies on whether a style is in\n  // the registered cache to know whether a style is global or not\n  // also, note that this check will be dead code eliminated in the browser\n  isBrowser === false && cache.compat !== undefined) && cache.registered[className] === undefined) {\n    cache.registered[className] = serialized.styles;\n  }\n\n  if (cache.inserted[serialized.name] === undefined) {\n    var current = serialized;\n\n    do {\n      var maybeStyles = cache.insert(\".\" + className, current, cache.sheet, true);\n      current = current.next;\n    } while (current !== undefined);\n  }\n};\n\nexport { getRegisteredStyles, insertStyles };","'use strict';\n\nvar anObject = require('./_an-object');\nvar toLength = require('./_to-length');\nvar advanceStringIndex = require('./_advance-string-index');\nvar regExpExec = require('./_regexp-exec-abstract');\n\n// @@match logic\nrequire('./_fix-re-wks')('match', 1, function (defined, MATCH, $match, maybeCallNative) {\n  return [\n    // `String.prototype.match` method\n    // https://tc39.github.io/ecma262/#sec-string.prototype.match\n    function match(regexp) {\n      var O = defined(this);\n      var fn = regexp == undefined ? undefined : regexp[MATCH];\n      return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[MATCH](String(O));\n    },\n    // `RegExp.prototype[@@match]` method\n    // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@match\n    function (regexp) {\n      var res = maybeCallNative($match, regexp, this);\n      if (res.done) return res.value;\n      var rx = anObject(regexp);\n      var S = String(this);\n      if (!rx.global) return regExpExec(rx, S);\n      var fullUnicode = rx.unicode;\n      rx.lastIndex = 0;\n      var A = [];\n      var n = 0;\n      var result;\n      while ((result = regExpExec(rx, S)) !== null) {\n        var matchStr = String(result[0]);\n        A[n] = matchStr;\n        if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n        n++;\n      }\n      return n === 0 ? null : A;\n    }\n  ];\n});\n","var ctx = require('./_ctx');\nvar call = require('./_iter-call');\nvar isArrayIter = require('./_is-array-iter');\nvar anObject = require('./_an-object');\nvar toLength = require('./_to-length');\nvar getIterFn = require('./core.get-iterator-method');\nvar BREAK = {};\nvar RETURN = {};\nvar exports = module.exports = function (iterable, entries, fn, that, ITERATOR) {\n  var iterFn = ITERATOR ? function () { return iterable; } : getIterFn(iterable);\n  var f = ctx(fn, that, entries ? 2 : 1);\n  var index = 0;\n  var length, step, iterator, result;\n  if (typeof iterFn != 'function') throw TypeError(iterable + ' is not iterable!');\n  // fast case for arrays with default iterator\n  if (isArrayIter(iterFn)) for (length = toLength(iterable.length); length > index; index++) {\n    result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);\n    if (result === BREAK || result === RETURN) return result;\n  } else for (iterator = iterFn.call(iterable); !(step = iterator.next()).done;) {\n    result = call(iterator, f, step.value, entries);\n    if (result === BREAK || result === RETURN) return result;\n  }\n};\nexports.BREAK = BREAK;\nexports.RETURN = RETURN;\n","'use strict';\nvar strong = require('./_collection-strong');\nvar validate = require('./_validate-collection');\nvar SET = 'Set';\n\n// 23.2 Set Objects\nmodule.exports = require('./_collection')(SET, function (get) {\n  return function Set() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n}, {\n  // 23.2.3.1 Set.prototype.add(value)\n  add: function add(value) {\n    return strong.def(validate(this, SET), value = value === 0 ? 0 : value, value);\n  }\n}, strong);\n","function _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    \"default\": obj\n  };\n}\n\nmodule.exports = _interopRequireDefault;","'use strict';\n// 21.1.3.25 String.prototype.trim()\nrequire('./_string-trim')('trim', function ($trim) {\n  return function trim() {\n    return $trim(this, 3);\n  };\n});\n","var MATCH = require('./_wks')('match');\nmodule.exports = function (KEY) {\n  var re = /./;\n  try {\n    '/./'[KEY](re);\n  } catch (e) {\n    try {\n      re[MATCH] = false;\n      return !'/./'[KEY](re);\n    } catch (f) { /* empty */ }\n  } return true;\n};\n","'use strict';\n\nvar regexpFlags = require('./_flags');\n\nvar nativeExec = RegExp.prototype.exec;\n// This always refers to the native implementation, because the\n// String#replace polyfill uses ./fix-regexp-well-known-symbol-logic.js,\n// which loads this file before patching the method.\nvar nativeReplace = String.prototype.replace;\n\nvar patchedExec = nativeExec;\n\nvar LAST_INDEX = 'lastIndex';\n\nvar UPDATES_LAST_INDEX_WRONG = (function () {\n  var re1 = /a/,\n      re2 = /b*/g;\n  nativeExec.call(re1, 'a');\n  nativeExec.call(re2, 'a');\n  return re1[LAST_INDEX] !== 0 || re2[LAST_INDEX] !== 0;\n})();\n\n// nonparticipating capturing group, copied from es5-shim's String#split patch.\nvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\n\nvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED;\n\nif (PATCH) {\n  patchedExec = function exec(str) {\n    var re = this;\n    var lastIndex, reCopy, match, i;\n\n    if (NPCG_INCLUDED) {\n      reCopy = new RegExp('^' + re.source + '$(?!\\\\s)', regexpFlags.call(re));\n    }\n    if (UPDATES_LAST_INDEX_WRONG) lastIndex = re[LAST_INDEX];\n\n    match = nativeExec.call(re, str);\n\n    if (UPDATES_LAST_INDEX_WRONG && match) {\n      re[LAST_INDEX] = re.global ? match.index + match[0].length : lastIndex;\n    }\n    if (NPCG_INCLUDED && match && match.length > 1) {\n      // Fix browsers whose `exec` methods don't consistently return `undefined`\n      // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/\n      // eslint-disable-next-line no-loop-func\n      nativeReplace.call(match[0], reCopy, function () {\n        for (i = 1; i < arguments.length - 2; i++) {\n          if (arguments[i] === undefined) match[i] = undefined;\n        }\n      });\n    }\n\n    return match;\n  };\n}\n\nmodule.exports = patchedExec;\n","exports.f = {}.propertyIsEnumerable;\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport loader from \"./loader\"\nimport redirects from \"./redirects.json\"\nimport { apiRunner } from \"./api-runner-browser\"\nimport emitter from \"./emitter\"\nimport { navigate as reachNavigate } from \"@reach/router\"\nimport { parsePath } from \"gatsby-link\"\n\n// Convert to a map for faster lookup in maybeRedirect()\nconst redirectMap = redirects.reduce((map, redirect) => {\n  map[redirect.fromPath] = redirect\n  return map\n}, {})\n\nfunction maybeRedirect(pathname) {\n  const redirect = redirectMap[pathname]\n\n  if (redirect != null) {\n    if (process.env.NODE_ENV !== `production`) {\n      const pageResources = loader.loadPageSync(pathname)\n\n      if (pageResources != null) {\n        console.error(\n          `The route \"${pathname}\" matches both a page and a redirect; this is probably not intentional.`\n        )\n      }\n    }\n\n    window.___replace(redirect.toPath)\n    return true\n  } else {\n    return false\n  }\n}\n\nconst onPreRouteUpdate = (location, prevLocation) => {\n  if (!maybeRedirect(location.pathname)) {\n    apiRunner(`onPreRouteUpdate`, { location, prevLocation })\n  }\n}\n\nconst onRouteUpdate = (location, prevLocation) => {\n  if (!maybeRedirect(location.pathname)) {\n    apiRunner(`onRouteUpdate`, { location, prevLocation })\n    // Temp hack while awaiting https://github.com/reach/router/issues/119\n    window.__navigatingToLink = false\n  }\n}\n\nconst navigate = (to, options = {}) => {\n  // Temp hack while awaiting https://github.com/reach/router/issues/119\n  if (!options.replace) {\n    window.__navigatingToLink = true\n  }\n\n  let { pathname } = parsePath(to)\n  const redirect = redirectMap[pathname]\n\n  // If we're redirecting, just replace the passed in pathname\n  // to the one we want to redirect to.\n  if (redirect) {\n    to = redirect.toPath\n    pathname = parsePath(to).pathname\n  }\n\n  // If we had a service worker update, no matter the path, reload window and\n  // reset the pathname whitelist\n  if (window.___swUpdated) {\n    window.location = pathname\n    return\n  }\n\n  // Start a timer to wait for a second before transitioning and showing a\n  // loader in case resources aren't around yet.\n  const timeoutId = setTimeout(() => {\n    emitter.emit(`onDelayedLoadPageResources`, { pathname })\n    apiRunner(`onRouteUpdateDelayed`, {\n      location: window.location,\n    })\n  }, 1000)\n\n  loader.loadPage(pathname).then(pageResources => {\n    // If no page resources, then refresh the page\n    // Do this, rather than simply `window.location.reload()`, so that\n    // pressing the back/forward buttons work - otherwise when pressing\n    // back, the browser will just change the URL and expect JS to handle\n    // the change, which won't always work since it might not be a Gatsby\n    // page.\n    if (!pageResources || pageResources.status === `error`) {\n      window.history.replaceState({}, ``, location.href)\n      window.location = pathname\n    }\n    // If the loaded page has a different compilation hash to the\n    // window, then a rebuild has occurred on the server. Reload.\n    if (process.env.NODE_ENV === `production` && pageResources) {\n      if (\n        pageResources.page.webpackCompilationHash !==\n        window.___webpackCompilationHash\n      ) {\n        // Purge plugin-offline cache\n        if (\n          `serviceWorker` in navigator &&\n          navigator.serviceWorker.controller !== null &&\n          navigator.serviceWorker.controller.state === `activated`\n        ) {\n          navigator.serviceWorker.controller.postMessage({\n            gatsbyApi: `clearPathResources`,\n          })\n        }\n\n        console.log(`Site has changed on server. Reloading browser`)\n        window.location = pathname\n      }\n    }\n    reachNavigate(to, options)\n    clearTimeout(timeoutId)\n  })\n}\n\nfunction shouldUpdateScroll(prevRouterProps, { location }) {\n  const { pathname, hash } = location\n  const results = apiRunner(`shouldUpdateScroll`, {\n    prevRouterProps,\n    // `pathname` for backwards compatibility\n    pathname,\n    routerProps: { location },\n    getSavedScrollPosition: args => this._stateStorage.read(args),\n  })\n  if (results.length > 0) {\n    // Use the latest registered shouldUpdateScroll result, this allows users to override plugin's configuration\n    // @see https://github.com/gatsbyjs/gatsby/issues/12038\n    return results[results.length - 1]\n  }\n\n  if (prevRouterProps) {\n    const {\n      location: { pathname: oldPathname },\n    } = prevRouterProps\n    if (oldPathname === pathname) {\n      // Scroll to element if it exists, if it doesn't, or no hash is provided,\n      // scroll to top.\n      return hash ? decodeURI(hash.slice(1)) : [0, 0]\n    }\n  }\n  return true\n}\n\nfunction init() {\n  // Temp hack while awaiting https://github.com/reach/router/issues/119\n  window.__navigatingToLink = false\n\n  window.___push = to => navigate(to, { replace: false })\n  window.___replace = to => navigate(to, { replace: true })\n  window.___navigate = (to, options) => navigate(to, options)\n\n  // Check for initial page-load redirect\n  maybeRedirect(window.location.pathname)\n}\n\nclass RouteAnnouncer extends React.Component {\n  constructor(props) {\n    super(props)\n    this.announcementRef = React.createRef()\n  }\n\n  componentDidUpdate(prevProps, nextProps) {\n    requestAnimationFrame(() => {\n      let pageName = `new page at ${this.props.location.pathname}`\n      if (document.title) {\n        pageName = document.title\n      }\n      const pageHeadings = document\n        .getElementById(`gatsby-focus-wrapper`)\n        .getElementsByTagName(`h1`)\n      if (pageHeadings && pageHeadings.length) {\n        pageName = pageHeadings[0].textContent\n      }\n      const newAnnouncement = `Navigated to ${pageName}`\n      const oldAnnouncement = this.announcementRef.current.innerText\n      if (oldAnnouncement !== newAnnouncement) {\n        this.announcementRef.current.innerText = newAnnouncement\n      }\n    })\n  }\n\n  render() {\n    return (\n      <div\n        id=\"gatsby-announcer\"\n        style={{\n          position: `absolute`,\n          top: 0,\n          width: 1,\n          height: 1,\n          padding: 0,\n          overflow: `hidden`,\n          clip: `rect(0, 0, 0, 0)`,\n          whiteSpace: `nowrap`,\n          border: 0,\n        }}\n        role=\"alert\"\n        aria-live=\"assertive\"\n        aria-atomic=\"true\"\n        ref={this.announcementRef}\n      ></div>\n    )\n  }\n}\n\n// Fire on(Pre)RouteUpdate APIs\nclass RouteUpdates extends React.Component {\n  constructor(props) {\n    super(props)\n    onPreRouteUpdate(props.location, null)\n  }\n\n  componentDidMount() {\n    onRouteUpdate(this.props.location, null)\n  }\n\n  componentDidUpdate(prevProps, prevState, shouldFireRouteUpdate) {\n    if (shouldFireRouteUpdate) {\n      onRouteUpdate(this.props.location, prevProps.location)\n    }\n  }\n\n  getSnapshotBeforeUpdate(prevProps) {\n    if (this.props.location.pathname !== prevProps.location.pathname) {\n      onPreRouteUpdate(this.props.location, prevProps.location)\n      return true\n    }\n\n    return false\n  }\n\n  render() {\n    return (\n      <React.Fragment>\n        {this.props.children}\n        <RouteAnnouncer location={location} />\n      </React.Fragment>\n    )\n  }\n}\n\nRouteUpdates.propTypes = {\n  location: PropTypes.object.isRequired,\n}\n\nexport { init, shouldUpdateScroll, RouteUpdates }\n","// Pulled from react-compat\n// https://github.com/developit/preact-compat/blob/7c5de00e7c85e2ffd011bf3af02899b63f699d3a/src/index.js#L349\nfunction shallowDiffers(a, b) {\n  for (var i in a) {\n    if (!(i in b)) return true;\n  }\n\n  for (var _i in b) {\n    if (a[_i] !== b[_i]) return true;\n  }\n\n  return false;\n}\n\nexport default (function (instance, nextProps, nextState) {\n  return shallowDiffers(instance.props, nextProps) || shallowDiffers(instance.state, nextState);\n});","import React from \"react\"\nimport loader from \"./loader\"\nimport shallowCompare from \"shallow-compare\"\n\nclass EnsureResources extends React.Component {\n  constructor(props) {\n    super()\n    const { location, pageResources } = props\n    this.state = {\n      location: { ...location },\n      pageResources: pageResources || loader.loadPageSync(location.pathname),\n    }\n  }\n\n  static getDerivedStateFromProps({ location }, prevState) {\n    if (prevState.location.href !== location.href) {\n      const pageResources = loader.loadPageSync(location.pathname)\n      return {\n        pageResources,\n        location: { ...location },\n      }\n    }\n\n    return {\n      location: { ...location },\n    }\n  }\n\n  loadResources(rawPath) {\n    loader.loadPage(rawPath).then(pageResources => {\n      if (pageResources && pageResources.status !== `error`) {\n        this.setState({\n          location: { ...window.location },\n          pageResources,\n        })\n      } else {\n        window.history.replaceState({}, ``, location.href)\n        window.location = rawPath\n      }\n    })\n  }\n\n  shouldComponentUpdate(nextProps, nextState) {\n    // Always return false if we're missing resources.\n    if (!nextState.pageResources) {\n      this.loadResources(nextProps.location.pathname)\n      return false\n    }\n\n    // Check if the component or json have changed.\n    if (this.state.pageResources !== nextState.pageResources) {\n      return true\n    }\n    if (\n      this.state.pageResources.component !== nextState.pageResources.component\n    ) {\n      return true\n    }\n\n    if (this.state.pageResources.json !== nextState.pageResources.json) {\n      return true\n    }\n    // Check if location has changed on a page using internal routing\n    // via matchPath configuration.\n    if (\n      this.state.location.key !== nextState.location.key &&\n      nextState.pageResources.page &&\n      (nextState.pageResources.page.matchPath ||\n        nextState.pageResources.page.path)\n    ) {\n      return true\n    }\n    return shallowCompare(this, nextProps, nextState)\n  }\n\n  render() {\n    return this.props.children(this.state)\n  }\n}\n\nexport default EnsureResources\n","import { apiRunner, apiRunnerAsync } from \"./api-runner-browser\"\nimport React from \"react\"\nimport ReactDOM from \"react-dom\"\nimport { Router, navigate, Location, BaseContext } from \"@reach/router\"\nimport { ScrollContext } from \"gatsby-react-router-scroll\"\nimport domReady from \"@mikaelkristiansson/domready\"\nimport {\n  shouldUpdateScroll,\n  init as navigationInit,\n  RouteUpdates,\n} from \"./navigation\"\nimport emitter from \"./emitter\"\nimport PageRenderer from \"./page-renderer\"\nimport asyncRequires from \"./async-requires\"\nimport { setLoader, ProdLoader, publicLoader } from \"./loader\"\nimport EnsureResources from \"./ensure-resources\"\nimport stripPrefix from \"./strip-prefix\"\n\n// Generated during bootstrap\nimport matchPaths from \"./match-paths.json\"\n\nconst loader = new ProdLoader(asyncRequires, matchPaths)\nsetLoader(loader)\nloader.setApiRunner(apiRunner)\n\nwindow.asyncRequires = asyncRequires\nwindow.___emitter = emitter\nwindow.___loader = publicLoader\n\nnavigationInit()\n\napiRunnerAsync(`onClientEntry`).then(() => {\n  // Let plugins register a service worker. The plugin just needs\n  // to return true.\n  if (apiRunner(`registerServiceWorker`).length > 0) {\n    require(`./register-service-worker`)\n  }\n\n  // In gatsby v2 if Router is used in page using matchPaths\n  // paths need to contain full path.\n  // For example:\n  //   - page have `/app/*` matchPath\n  //   - inside template user needs to use `/app/xyz` as path\n  // Resetting `basepath`/`baseuri` keeps current behaviour\n  // to not introduce breaking change.\n  // Remove this in v3\n  const RouteHandler = props => (\n    <BaseContext.Provider\n      value={{\n        baseuri: `/`,\n        basepath: `/`,\n      }}\n    >\n      <PageRenderer {...props} />\n    </BaseContext.Provider>\n  )\n\n  class LocationHandler extends React.Component {\n    render() {\n      const { location } = this.props\n      return (\n        <EnsureResources location={location}>\n          {({ pageResources, location }) => (\n            <RouteUpdates location={location}>\n              <ScrollContext\n                location={location}\n                shouldUpdateScroll={shouldUpdateScroll}\n              >\n                <Router\n                  basepath={__BASE_PATH__}\n                  location={location}\n                  id=\"gatsby-focus-wrapper\"\n                >\n                  <RouteHandler\n                    path={\n                      pageResources.page.path === `/404.html`\n                        ? stripPrefix(location.pathname, __BASE_PATH__)\n                        : encodeURI(\n                            pageResources.page.matchPath ||\n                              pageResources.page.path\n                          )\n                    }\n                    {...this.props}\n                    location={location}\n                    pageResources={pageResources}\n                    {...pageResources.json}\n                  />\n                </Router>\n              </ScrollContext>\n            </RouteUpdates>\n          )}\n        </EnsureResources>\n      )\n    }\n  }\n\n  const { pagePath, location: browserLoc } = window\n\n  // Explicitly call navigate if the canonical path (window.pagePath)\n  // is different to the browser path (window.location.pathname). But\n  // only if NONE of the following conditions hold:\n  //\n  // - The url matches a client side route (page.matchPath)\n  // - it's a 404 page\n  // - it's the offline plugin shell (/offline-plugin-app-shell-fallback/)\n  if (\n    pagePath &&\n    __BASE_PATH__ + pagePath !== browserLoc.pathname &&\n    !(\n      loader.findMatchPath(stripPrefix(browserLoc.pathname, __BASE_PATH__)) ||\n      pagePath === `/404.html` ||\n      pagePath.match(/^\\/404\\/?$/) ||\n      pagePath.match(/^\\/offline-plugin-app-shell-fallback\\/?$/)\n    )\n  ) {\n    navigate(__BASE_PATH__ + pagePath + browserLoc.search + browserLoc.hash, {\n      replace: true,\n    })\n  }\n\n  publicLoader.loadPage(browserLoc.pathname).then(page => {\n    if (!page || page.status === `error`) {\n      throw new Error(\n        `page resources for ${browserLoc.pathname} not found. Not rendering React`\n      )\n    }\n\n    window.___webpackCompilationHash = page.page.webpackCompilationHash\n\n    const Root = () => (\n      <Location>\n        {locationContext => <LocationHandler {...locationContext} />}\n      </Location>\n    )\n\n    const WrappedRoot = apiRunner(\n      `wrapRootElement`,\n      { element: <Root /> },\n      <Root />,\n      ({ result }) => {\n        return { element: result }\n      }\n    ).pop()\n\n    const NewRoot = () => WrappedRoot\n\n    const renderer = apiRunner(\n      `replaceHydrateFunction`,\n      undefined,\n      ReactDOM.hydrate\n    )[0]\n\n    domReady(() => {\n      renderer(\n        <NewRoot />,\n        typeof window !== `undefined`\n          ? document.getElementById(`___gatsby`)\n          : void 0,\n        () => {\n          apiRunner(`onInitialClientRender`)\n        }\n      )\n    })\n  })\n})\n","'use strict';\nvar $export = require('./_export');\nvar $indexOf = require('./_array-includes')(false);\nvar $native = [].indexOf;\nvar NEGATIVE_ZERO = !!$native && 1 / [1].indexOf(1, -0) < 0;\n\n$export($export.P + $export.F * (NEGATIVE_ZERO || !require('./_strict-method')($native)), 'Array', {\n  // 22.1.3.11 / 15.4.4.14 Array.prototype.indexOf(searchElement [, fromIndex])\n  indexOf: function indexOf(searchElement /* , fromIndex = 0 */) {\n    return NEGATIVE_ZERO\n      // convert -0 to +0\n      ? $native.apply(this, arguments) || 0\n      : $indexOf(this, searchElement, arguments[1]);\n  }\n});\n","'use strict';\nvar LIBRARY = require('./_library');\nvar global = require('./_global');\nvar ctx = require('./_ctx');\nvar classof = require('./_classof');\nvar $export = require('./_export');\nvar isObject = require('./_is-object');\nvar aFunction = require('./_a-function');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar speciesConstructor = require('./_species-constructor');\nvar task = require('./_task').set;\nvar microtask = require('./_microtask')();\nvar newPromiseCapabilityModule = require('./_new-promise-capability');\nvar perform = require('./_perform');\nvar userAgent = require('./_user-agent');\nvar promiseResolve = require('./_promise-resolve');\nvar PROMISE = 'Promise';\nvar TypeError = global.TypeError;\nvar process = global.process;\nvar versions = process && process.versions;\nvar v8 = versions && versions.v8 || '';\nvar $Promise = global[PROMISE];\nvar isNode = classof(process) == 'process';\nvar empty = function () { /* empty */ };\nvar Internal, newGenericPromiseCapability, OwnPromiseCapability, Wrapper;\nvar newPromiseCapability = newGenericPromiseCapability = newPromiseCapabilityModule.f;\n\nvar USE_NATIVE = !!function () {\n  try {\n    // correct subclassing with @@species support\n    var promise = $Promise.resolve(1);\n    var FakePromise = (promise.constructor = {})[require('./_wks')('species')] = function (exec) {\n      exec(empty, empty);\n    };\n    // unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n    return (isNode || typeof PromiseRejectionEvent == 'function')\n      && promise.then(empty) instanceof FakePromise\n      // v8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables\n      // https://bugs.chromium.org/p/chromium/issues/detail?id=830565\n      // we can't detect it synchronously, so just check versions\n      && v8.indexOf('6.6') !== 0\n      && userAgent.indexOf('Chrome/66') === -1;\n  } catch (e) { /* empty */ }\n}();\n\n// helpers\nvar isThenable = function (it) {\n  var then;\n  return isObject(it) && typeof (then = it.then) == 'function' ? then : false;\n};\nvar notify = function (promise, isReject) {\n  if (promise._n) return;\n  promise._n = true;\n  var chain = promise._c;\n  microtask(function () {\n    var value = promise._v;\n    var ok = promise._s == 1;\n    var i = 0;\n    var run = function (reaction) {\n      var handler = ok ? reaction.ok : reaction.fail;\n      var resolve = reaction.resolve;\n      var reject = reaction.reject;\n      var domain = reaction.domain;\n      var result, then, exited;\n      try {\n        if (handler) {\n          if (!ok) {\n            if (promise._h == 2) onHandleUnhandled(promise);\n            promise._h = 1;\n          }\n          if (handler === true) result = value;\n          else {\n            if (domain) domain.enter();\n            result = handler(value); // may throw\n            if (domain) {\n              domain.exit();\n              exited = true;\n            }\n          }\n          if (result === reaction.promise) {\n            reject(TypeError('Promise-chain cycle'));\n          } else if (then = isThenable(result)) {\n            then.call(result, resolve, reject);\n          } else resolve(result);\n        } else reject(value);\n      } catch (e) {\n        if (domain && !exited) domain.exit();\n        reject(e);\n      }\n    };\n    while (chain.length > i) run(chain[i++]); // variable length - can't use forEach\n    promise._c = [];\n    promise._n = false;\n    if (isReject && !promise._h) onUnhandled(promise);\n  });\n};\nvar onUnhandled = function (promise) {\n  task.call(global, function () {\n    var value = promise._v;\n    var unhandled = isUnhandled(promise);\n    var result, handler, console;\n    if (unhandled) {\n      result = perform(function () {\n        if (isNode) {\n          process.emit('unhandledRejection', value, promise);\n        } else if (handler = global.onunhandledrejection) {\n          handler({ promise: promise, reason: value });\n        } else if ((console = global.console) && console.error) {\n          console.error('Unhandled promise rejection', value);\n        }\n      });\n      // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n      promise._h = isNode || isUnhandled(promise) ? 2 : 1;\n    } promise._a = undefined;\n    if (unhandled && result.e) throw result.v;\n  });\n};\nvar isUnhandled = function (promise) {\n  return promise._h !== 1 && (promise._a || promise._c).length === 0;\n};\nvar onHandleUnhandled = function (promise) {\n  task.call(global, function () {\n    var handler;\n    if (isNode) {\n      process.emit('rejectionHandled', promise);\n    } else if (handler = global.onrejectionhandled) {\n      handler({ promise: promise, reason: promise._v });\n    }\n  });\n};\nvar $reject = function (value) {\n  var promise = this;\n  if (promise._d) return;\n  promise._d = true;\n  promise = promise._w || promise; // unwrap\n  promise._v = value;\n  promise._s = 2;\n  if (!promise._a) promise._a = promise._c.slice();\n  notify(promise, true);\n};\nvar $resolve = function (value) {\n  var promise = this;\n  var then;\n  if (promise._d) return;\n  promise._d = true;\n  promise = promise._w || promise; // unwrap\n  try {\n    if (promise === value) throw TypeError(\"Promise can't be resolved itself\");\n    if (then = isThenable(value)) {\n      microtask(function () {\n        var wrapper = { _w: promise, _d: false }; // wrap\n        try {\n          then.call(value, ctx($resolve, wrapper, 1), ctx($reject, wrapper, 1));\n        } catch (e) {\n          $reject.call(wrapper, e);\n        }\n      });\n    } else {\n      promise._v = value;\n      promise._s = 1;\n      notify(promise, false);\n    }\n  } catch (e) {\n    $reject.call({ _w: promise, _d: false }, e); // wrap\n  }\n};\n\n// constructor polyfill\nif (!USE_NATIVE) {\n  // 25.4.3.1 Promise(executor)\n  $Promise = function Promise(executor) {\n    anInstance(this, $Promise, PROMISE, '_h');\n    aFunction(executor);\n    Internal.call(this);\n    try {\n      executor(ctx($resolve, this, 1), ctx($reject, this, 1));\n    } catch (err) {\n      $reject.call(this, err);\n    }\n  };\n  // eslint-disable-next-line no-unused-vars\n  Internal = function Promise(executor) {\n    this._c = [];             // <- awaiting reactions\n    this._a = undefined;      // <- checked in isUnhandled reactions\n    this._s = 0;              // <- state\n    this._d = false;          // <- done\n    this._v = undefined;      // <- value\n    this._h = 0;              // <- rejection state, 0 - default, 1 - handled, 2 - unhandled\n    this._n = false;          // <- notify\n  };\n  Internal.prototype = require('./_redefine-all')($Promise.prototype, {\n    // 25.4.5.3 Promise.prototype.then(onFulfilled, onRejected)\n    then: function then(onFulfilled, onRejected) {\n      var reaction = newPromiseCapability(speciesConstructor(this, $Promise));\n      reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;\n      reaction.fail = typeof onRejected == 'function' && onRejected;\n      reaction.domain = isNode ? process.domain : undefined;\n      this._c.push(reaction);\n      if (this._a) this._a.push(reaction);\n      if (this._s) notify(this, false);\n      return reaction.promise;\n    },\n    // 25.4.5.1 Promise.prototype.catch(onRejected)\n    'catch': function (onRejected) {\n      return this.then(undefined, onRejected);\n    }\n  });\n  OwnPromiseCapability = function () {\n    var promise = new Internal();\n    this.promise = promise;\n    this.resolve = ctx($resolve, promise, 1);\n    this.reject = ctx($reject, promise, 1);\n  };\n  newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n    return C === $Promise || C === Wrapper\n      ? new OwnPromiseCapability(C)\n      : newGenericPromiseCapability(C);\n  };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Promise: $Promise });\nrequire('./_set-to-string-tag')($Promise, PROMISE);\nrequire('./_set-species')(PROMISE);\nWrapper = require('./_core')[PROMISE];\n\n// statics\n$export($export.S + $export.F * !USE_NATIVE, PROMISE, {\n  // 25.4.4.5 Promise.reject(r)\n  reject: function reject(r) {\n    var capability = newPromiseCapability(this);\n    var $$reject = capability.reject;\n    $$reject(r);\n    return capability.promise;\n  }\n});\n$export($export.S + $export.F * (LIBRARY || !USE_NATIVE), PROMISE, {\n  // 25.4.4.6 Promise.resolve(x)\n  resolve: function resolve(x) {\n    return promiseResolve(LIBRARY && this === Wrapper ? $Promise : this, x);\n  }\n});\n$export($export.S + $export.F * !(USE_NATIVE && require('./_iter-detect')(function (iter) {\n  $Promise.all(iter)['catch'](empty);\n})), PROMISE, {\n  // 25.4.4.1 Promise.all(iterable)\n  all: function all(iterable) {\n    var C = this;\n    var capability = newPromiseCapability(C);\n    var resolve = capability.resolve;\n    var reject = capability.reject;\n    var result = perform(function () {\n      var values = [];\n      var index = 0;\n      var remaining = 1;\n      forOf(iterable, false, function (promise) {\n        var $index = index++;\n        var alreadyCalled = false;\n        values.push(undefined);\n        remaining++;\n        C.resolve(promise).then(function (value) {\n          if (alreadyCalled) return;\n          alreadyCalled = true;\n          values[$index] = value;\n          --remaining || resolve(values);\n        }, reject);\n      });\n      --remaining || resolve(values);\n    });\n    if (result.e) reject(result.v);\n    return capability.promise;\n  },\n  // 25.4.4.4 Promise.race(iterable)\n  race: function race(iterable) {\n    var C = this;\n    var capability = newPromiseCapability(C);\n    var reject = capability.reject;\n    var result = perform(function () {\n      forOf(iterable, false, function (promise) {\n        C.resolve(promise).then(capability.resolve, reject);\n      });\n    });\n    if (result.e) reject(result.v);\n    return capability.promise;\n  }\n});\n","var core = require('./_core');\nvar global = require('./_global');\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n  return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n  version: core.version,\n  mode: require('./_library') ? 'pure' : 'global',\n  copyright: '© 2019 Denis Pushkarev (zloirock.ru)'\n});\n","function _inheritsLoose(subClass, superClass) {\n  subClass.prototype = Object.create(superClass.prototype);\n  subClass.prototype.constructor = subClass;\n  subClass.__proto__ = superClass;\n}\n\nmodule.exports = _inheritsLoose;","'use strict';\nvar $export = require('./_export');\nvar aFunction = require('./_a-function');\nvar toObject = require('./_to-object');\nvar fails = require('./_fails');\nvar $sort = [].sort;\nvar test = [1, 2, 3];\n\n$export($export.P + $export.F * (fails(function () {\n  // IE8-\n  test.sort(undefined);\n}) || !fails(function () {\n  // V8 bug\n  test.sort(null);\n  // Old WebKit\n}) || !require('./_strict-method')($sort)), 'Array', {\n  // 22.1.3.25 Array.prototype.sort(comparefn)\n  sort: function sort(comparefn) {\n    return comparefn === undefined\n      ? $sort.call(toObject(this))\n      : $sort.call(toObject(this), aFunction(comparefn));\n  }\n});\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\nmodule.exports = ReactPropTypesSecret;","import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport Link, {\n  withPrefix,\n  withAssetPrefix,\n  navigate,\n  push,\n  replace,\n  navigateTo,\n  parsePath,\n} from \"gatsby-link\"\nimport PageRenderer from \"./public-page-renderer\"\nimport loader from \"./loader\"\n\nconst prefetchPathname = loader.enqueue\n\nconst StaticQueryContext = React.createContext({})\n\nfunction StaticQueryDataRenderer({ staticQueryData, data, query, render }) {\n  const finalData = data\n    ? data.data\n    : staticQueryData[query] && staticQueryData[query].data\n\n  return (\n    <React.Fragment>\n      {finalData && render(finalData)}\n      {!finalData && <div>Loading (StaticQuery)</div>}\n    </React.Fragment>\n  )\n}\n\nconst StaticQuery = props => {\n  const { data, query, render, children } = props\n\n  return (\n    <StaticQueryContext.Consumer>\n      {staticQueryData => (\n        <StaticQueryDataRenderer\n          data={data}\n          query={query}\n          render={render || children}\n          staticQueryData={staticQueryData}\n        />\n      )}\n    </StaticQueryContext.Consumer>\n  )\n}\n\nconst useStaticQuery = query => {\n  if (\n    typeof React.useContext !== `function` &&\n    process.env.NODE_ENV === `development`\n  ) {\n    throw new Error(\n      `You're likely using a version of React that doesn't support Hooks\\n` +\n        `Please update React and ReactDOM to 16.8.0 or later to use the useStaticQuery hook.`\n    )\n  }\n  const context = React.useContext(StaticQueryContext)\n  if (context[query] && context[query].data) {\n    return context[query].data\n  } else {\n    throw new Error(\n      `The result of this StaticQuery could not be fetched.\\n\\n` +\n        `This is likely a bug in Gatsby and if refreshing the page does not fix it, ` +\n        `please open an issue in https://github.com/gatsbyjs/gatsby/issues`\n    )\n  }\n}\n\nStaticQuery.propTypes = {\n  data: PropTypes.object,\n  query: PropTypes.string.isRequired,\n  render: PropTypes.func,\n  children: PropTypes.func,\n}\n\nfunction graphql() {\n  throw new Error(\n    `It appears like Gatsby is misconfigured. Gatsby related \\`graphql\\` calls ` +\n      `are supposed to only be evaluated at compile time, and then compiled away. ` +\n      `Unfortunately, something went wrong and the query was left in the compiled code.\\n\\n` +\n      `Unless your site has a complex or custom babel/Gatsby configuration this is likely a bug in Gatsby.`\n  )\n}\n\nexport {\n  Link,\n  withAssetPrefix,\n  withPrefix,\n  graphql,\n  parsePath,\n  navigate,\n  push, // TODO replace for v3\n  replace, // TODO remove replace for v3\n  navigateTo, // TODO: remove navigateTo for v3\n  StaticQueryContext,\n  StaticQuery,\n  PageRenderer,\n  useStaticQuery,\n  prefetchPathname,\n}\n","var global = require('./_global');\nvar core = require('./_core');\nvar hide = require('./_hide');\nvar redefine = require('./_redefine');\nvar ctx = require('./_ctx');\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n  var IS_FORCED = type & $export.F;\n  var IS_GLOBAL = type & $export.G;\n  var IS_STATIC = type & $export.S;\n  var IS_PROTO = type & $export.P;\n  var IS_BIND = type & $export.B;\n  var target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE];\n  var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n  var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {});\n  var key, own, out, exp;\n  if (IS_GLOBAL) source = name;\n  for (key in source) {\n    // contains in native\n    own = !IS_FORCED && target && target[key] !== undefined;\n    // export native or passed\n    out = (own ? target : source)[key];\n    // bind timers to global for call from export context\n    exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n    // extend global\n    if (target) redefine(target, key, out, type & $export.U);\n    // export\n    if (exports[key] != out) hide(exports, key, exp);\n    if (IS_PROTO && expProto[key] != out) expProto[key] = out;\n  }\n};\nglobal.core = core;\n// type bitmap\n$export.F = 1;   // forced\n$export.G = 2;   // global\n$export.S = 4;   // static\n$export.P = 8;   // proto\n$export.B = 16;  // bind\n$export.W = 32;  // wrap\n$export.U = 64;  // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n","var ITERATOR = require('./_wks')('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n  var riter = [7][ITERATOR]();\n  riter['return'] = function () { SAFE_CLOSING = true; };\n  // eslint-disable-next-line no-throw-literal\n  Array.from(riter, function () { throw 2; });\n} catch (e) { /* empty */ }\n\nmodule.exports = function (exec, skipClosing) {\n  if (!skipClosing && !SAFE_CLOSING) return false;\n  var safe = false;\n  try {\n    var arr = [7];\n    var iter = arr[ITERATOR]();\n    iter.next = function () { return { done: safe = true }; };\n    arr[ITERATOR] = function () { return iter; };\n    exec(arr);\n  } catch (e) { /* empty */ }\n  return safe;\n};\n","var isObject = require('./_is-object');\nvar setPrototypeOf = require('./_set-proto').set;\nmodule.exports = function (that, target, C) {\n  var S = target.constructor;\n  var P;\n  if (S !== C && typeof S == 'function' && (P = S.prototype) !== C.prototype && isObject(P) && setPrototypeOf) {\n    setPrototypeOf(that, P);\n  } return that;\n};\n","'use strict';\nvar $at = require('./_string-at')(true);\n\n// 21.1.3.27 String.prototype[@@iterator]()\nrequire('./_iter-define')(String, 'String', function (iterated) {\n  this._t = String(iterated); // target\n  this._i = 0;                // next index\n// 21.1.5.2.1 %StringIteratorPrototype%.next()\n}, function () {\n  var O = this._t;\n  var index = this._i;\n  var point;\n  if (index >= O.length) return { value: undefined, done: true };\n  point = $at(O, index);\n  this._i += point.length;\n  return { value: point, done: false };\n});\n","// most Object methods by ES6 should accept primitives\nvar $export = require('./_export');\nvar core = require('./_core');\nvar fails = require('./_fails');\nmodule.exports = function (KEY, exec) {\n  var fn = (core.Object || {})[KEY] || Object[KEY];\n  var exp = {};\n  exp[KEY] = exec(fn);\n  $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);\n};\n","'use strict';\n\nvar classof = require('./_classof');\nvar builtinExec = RegExp.prototype.exec;\n\n // `RegExpExec` abstract operation\n// https://tc39.github.io/ecma262/#sec-regexpexec\nmodule.exports = function (R, S) {\n  var exec = R.exec;\n  if (typeof exec === 'function') {\n    var result = exec.call(R, S);\n    if (typeof result !== 'object') {\n      throw new TypeError('RegExp exec method returned something other than an Object or null');\n    }\n    return result;\n  }\n  if (classof(R) !== 'RegExp') {\n    throw new TypeError('RegExp#exec called on incompatible receiver');\n  }\n  return builtinExec.call(R, S);\n};\n","var shared = require('./_shared')('keys');\nvar uid = require('./_uid');\nmodule.exports = function (key) {\n  return shared[key] || (shared[key] = uid(key));\n};\n","// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = require('./_cof');\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n  return cof(it) == 'String' ? it.split('') : Object(it);\n};\n","import React from \"react\"\n\nexport default React.createContext\n","import \"core-js/modules/es6.regexp.replace\";\nimport \"core-js/modules/es6.array.map\";\nimport \"core-js/modules/es6.promise\";\nimport \"core-js/modules/es6.object.to-string\";\nimport \"core-js/modules/es6.object.set-prototype-of\";\nimport \"core-js/modules/es6.object.create\";\nimport \"core-js/modules/es6.array.index-of\";\nimport \"core-js/modules/es6.object.assign\";\n\nvar _extends = Object.assign || function (target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments[i];\n\n    for (var key in source) {\n      if (Object.prototype.hasOwnProperty.call(source, key)) {\n        target[key] = source[key];\n      }\n    }\n  }\n\n  return target;\n};\n\nfunction _objectWithoutProperties(obj, keys) {\n  var target = {};\n\n  for (var i in obj) {\n    if (keys.indexOf(i) >= 0) continue;\n    if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;\n    target[i] = obj[i];\n  }\n\n  return target;\n}\n\nfunction _classCallCheck(instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n}\n\nfunction _possibleConstructorReturn(self, call) {\n  if (!self) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n\n  return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n}\n\nfunction _inherits(subClass, superClass) {\n  if (typeof superClass !== \"function\" && superClass !== null) {\n    throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n  }\n\n  subClass.prototype = Object.create(superClass && superClass.prototype, {\n    constructor: {\n      value: subClass,\n      enumerable: false,\n      writable: true,\n      configurable: true\n    }\n  });\n  if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\n/* eslint-disable jsx-a11y/anchor-has-content */\n\n\nimport React from \"react\";\nimport warning from \"warning\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"invariant\";\nimport createContext from \"create-react-context\";\nimport { polyfill } from \"react-lifecycles-compat\";\nimport { startsWith, pick, resolve, match, insertParams, validateRedirect } from \"./lib/utils\";\nimport { globalHistory, navigate, createHistory, createMemorySource } from \"./lib/history\"; ////////////////////////////////////////////////////////////////////////////////\n\nvar createNamedContext = function createNamedContext(name, defaultValue) {\n  var Ctx = createContext(defaultValue);\n  Ctx.Consumer.displayName = name + \".Consumer\";\n  Ctx.Provider.displayName = name + \".Provider\";\n  return Ctx;\n}; ////////////////////////////////////////////////////////////////////////////////\n// Location Context/Provider\n\n\nvar LocationContext = createNamedContext(\"Location\"); // sets up a listener if there isn't one already so apps don't need to be\n// wrapped in some top level provider\n\nvar Location = function Location(_ref) {\n  var children = _ref.children;\n  return React.createElement(LocationContext.Consumer, null, function (context) {\n    return context ? children(context) : React.createElement(LocationProvider, null, children);\n  });\n};\n\nvar LocationProvider = function (_React$Component) {\n  _inherits(LocationProvider, _React$Component);\n\n  function LocationProvider() {\n    var _temp, _this, _ret;\n\n    _classCallCheck(this, LocationProvider);\n\n    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.state = {\n      context: _this.getContext(),\n      refs: {\n        unlisten: null\n      }\n    }, _temp), _possibleConstructorReturn(_this, _ret);\n  }\n\n  LocationProvider.prototype.getContext = function getContext() {\n    var _props$history = this.props.history,\n        navigate = _props$history.navigate,\n        location = _props$history.location;\n    return {\n      navigate: navigate,\n      location: location\n    };\n  };\n\n  LocationProvider.prototype.componentDidCatch = function componentDidCatch(error, info) {\n    if (isRedirect(error)) {\n      var _navigate = this.props.history.navigate;\n\n      _navigate(error.uri, {\n        replace: true\n      });\n    } else {\n      throw error;\n    }\n  };\n\n  LocationProvider.prototype.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {\n    if (prevState.context.location !== this.state.context.location) {\n      this.props.history._onTransitionComplete();\n    }\n  };\n\n  LocationProvider.prototype.componentDidMount = function componentDidMount() {\n    var _this2 = this;\n\n    var refs = this.state.refs,\n        history = this.props.history;\n    refs.unlisten = history.listen(function () {\n      Promise.resolve().then(function () {\n        // TODO: replace rAF with react deferred update API when it's ready https://github.com/facebook/react/issues/13306\n        requestAnimationFrame(function () {\n          if (!_this2.unmounted) {\n            _this2.setState(function () {\n              return {\n                context: _this2.getContext()\n              };\n            });\n          }\n        });\n      });\n    });\n  };\n\n  LocationProvider.prototype.componentWillUnmount = function componentWillUnmount() {\n    var refs = this.state.refs;\n    this.unmounted = true;\n    refs.unlisten();\n  };\n\n  LocationProvider.prototype.render = function render() {\n    var context = this.state.context,\n        children = this.props.children;\n    return React.createElement(LocationContext.Provider, {\n      value: context\n    }, typeof children === \"function\" ? children(context) : children || null);\n  };\n\n  return LocationProvider;\n}(React.Component); ////////////////////////////////////////////////////////////////////////////////\n\n\nLocationProvider.defaultProps = {\n  history: globalHistory\n};\nprocess.env.NODE_ENV !== \"production\" ? LocationProvider.propTypes = {\n  history: PropTypes.object.isRequired\n} : void 0;\n\nvar ServerLocation = function ServerLocation(_ref2) {\n  var url = _ref2.url,\n      children = _ref2.children;\n  return React.createElement(LocationContext.Provider, {\n    value: {\n      location: {\n        pathname: url,\n        search: \"\",\n        hash: \"\"\n      },\n      navigate: function navigate() {\n        throw new Error(\"You can't call navigate on the server.\");\n      }\n    }\n  }, children);\n}; ////////////////////////////////////////////////////////////////////////////////\n// Sets baseuri and basepath for nested routers and links\n\n\nvar BaseContext = createNamedContext(\"Base\", {\n  baseuri: \"/\",\n  basepath: \"/\"\n}); ////////////////////////////////////////////////////////////////////////////////\n// The main event, welcome to the show everybody.\n\nvar Router = function Router(props) {\n  return React.createElement(BaseContext.Consumer, null, function (baseContext) {\n    return React.createElement(Location, null, function (locationContext) {\n      return React.createElement(RouterImpl, _extends({}, baseContext, locationContext, props));\n    });\n  });\n};\n\nvar RouterImpl = function (_React$PureComponent) {\n  _inherits(RouterImpl, _React$PureComponent);\n\n  function RouterImpl() {\n    _classCallCheck(this, RouterImpl);\n\n    return _possibleConstructorReturn(this, _React$PureComponent.apply(this, arguments));\n  }\n\n  RouterImpl.prototype.render = function render() {\n    var _props = this.props,\n        location = _props.location,\n        _navigate2 = _props.navigate,\n        basepath = _props.basepath,\n        primary = _props.primary,\n        children = _props.children,\n        baseuri = _props.baseuri,\n        _props$component = _props.component,\n        component = _props$component === undefined ? \"div\" : _props$component,\n        domProps = _objectWithoutProperties(_props, [\"location\", \"navigate\", \"basepath\", \"primary\", \"children\", \"baseuri\", \"component\"]);\n\n    var routes = React.Children.map(children, createRoute(basepath));\n    var pathname = location.pathname;\n    var match = pick(routes, pathname);\n\n    if (match) {\n      var params = match.params,\n          uri = match.uri,\n          route = match.route,\n          element = match.route.value; // remove the /* from the end for child routes relative paths\n\n      basepath = route[\"default\"] ? basepath : route.path.replace(/\\*$/, \"\");\n\n      var props = _extends({}, params, {\n        uri: uri,\n        location: location,\n        navigate: function navigate(to, options) {\n          return _navigate2(resolve(to, uri), options);\n        }\n      });\n\n      var clone = React.cloneElement(element, props, element.props.children ? React.createElement(Router, {\n        primary: primary\n      }, element.props.children) : undefined); // using 'div' for < 16.3 support\n\n      var FocusWrapper = primary ? FocusHandler : component; // don't pass any props to 'div'\n\n      var wrapperProps = primary ? _extends({\n        uri: uri,\n        location: location,\n        component: component\n      }, domProps) : domProps;\n      return React.createElement(BaseContext.Provider, {\n        value: {\n          baseuri: uri,\n          basepath: basepath\n        }\n      }, React.createElement(FocusWrapper, wrapperProps, clone));\n    } else {\n      // Not sure if we want this, would require index routes at every level\n      // warning(\n      //   false,\n      //   `<Router basepath=\"${basepath}\">\\n\\nNothing matched:\\n\\t${\n      //     location.pathname\n      //   }\\n\\nPaths checked: \\n\\t${routes\n      //     .map(route => route.path)\n      //     .join(\n      //       \"\\n\\t\"\n      //     )}\\n\\nTo get rid of this warning, add a default NotFound component as child of Router:\n      //   \\n\\tlet NotFound = () => <div>Not Found!</div>\n      //   \\n\\t<Router>\\n\\t  <NotFound default/>\\n\\t  {/* ... */}\\n\\t</Router>`\n      // );\n      return null;\n    }\n  };\n\n  return RouterImpl;\n}(React.PureComponent);\n\nRouterImpl.defaultProps = {\n  primary: true\n};\nvar FocusContext = createNamedContext(\"Focus\");\n\nvar FocusHandler = function FocusHandler(_ref3) {\n  var uri = _ref3.uri,\n      location = _ref3.location,\n      component = _ref3.component,\n      domProps = _objectWithoutProperties(_ref3, [\"uri\", \"location\", \"component\"]);\n\n  return React.createElement(FocusContext.Consumer, null, function (requestFocus) {\n    return React.createElement(FocusHandlerImpl, _extends({}, domProps, {\n      component: component,\n      requestFocus: requestFocus,\n      uri: uri,\n      location: location\n    }));\n  });\n}; // don't focus on initial render\n\n\nvar initialRender = true;\nvar focusHandlerCount = 0;\n\nvar FocusHandlerImpl = function (_React$Component2) {\n  _inherits(FocusHandlerImpl, _React$Component2);\n\n  function FocusHandlerImpl() {\n    var _temp2, _this4, _ret2;\n\n    _classCallCheck(this, FocusHandlerImpl);\n\n    for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n      args[_key2] = arguments[_key2];\n    }\n\n    return _ret2 = (_temp2 = (_this4 = _possibleConstructorReturn(this, _React$Component2.call.apply(_React$Component2, [this].concat(args))), _this4), _this4.state = {}, _this4.requestFocus = function (node) {\n      if (!_this4.state.shouldFocus) {\n        node.focus();\n      }\n    }, _temp2), _possibleConstructorReturn(_this4, _ret2);\n  }\n\n  FocusHandlerImpl.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps, prevState) {\n    var initial = prevState.uri == null;\n\n    if (initial) {\n      return _extends({\n        shouldFocus: true\n      }, nextProps);\n    } else {\n      var myURIChanged = nextProps.uri !== prevState.uri;\n      var navigatedUpToMe = prevState.location.pathname !== nextProps.location.pathname && nextProps.location.pathname === nextProps.uri;\n      return _extends({\n        shouldFocus: myURIChanged || navigatedUpToMe\n      }, nextProps);\n    }\n  };\n\n  FocusHandlerImpl.prototype.componentDidMount = function componentDidMount() {\n    focusHandlerCount++;\n    this.focus();\n  };\n\n  FocusHandlerImpl.prototype.componentWillUnmount = function componentWillUnmount() {\n    focusHandlerCount--;\n\n    if (focusHandlerCount === 0) {\n      initialRender = true;\n    }\n  };\n\n  FocusHandlerImpl.prototype.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {\n    if (prevProps.location !== this.props.location && this.state.shouldFocus) {\n      this.focus();\n    }\n  };\n\n  FocusHandlerImpl.prototype.focus = function focus() {\n    if (process.env.NODE_ENV === \"test\") {\n      // getting cannot read property focus of null in the tests\n      // and that bit of global `initialRender` state causes problems\n      // should probably figure it out!\n      return;\n    }\n\n    var requestFocus = this.props.requestFocus;\n\n    if (requestFocus) {\n      requestFocus(this.node);\n    } else {\n      if (initialRender) {\n        initialRender = false;\n      } else {\n        // React polyfills [autofocus] and it fires earlier than cDM,\n        // so we were stealing focus away, this line prevents that.\n        if (!this.node.contains(document.activeElement)) {\n          this.node.focus();\n        }\n      }\n    }\n  };\n\n  FocusHandlerImpl.prototype.render = function render() {\n    var _this5 = this;\n\n    var _props2 = this.props,\n        children = _props2.children,\n        style = _props2.style,\n        requestFocus = _props2.requestFocus,\n        _props2$role = _props2.role,\n        role = _props2$role === undefined ? \"group\" : _props2$role,\n        _props2$component = _props2.component,\n        Comp = _props2$component === undefined ? \"div\" : _props2$component,\n        uri = _props2.uri,\n        location = _props2.location,\n        domProps = _objectWithoutProperties(_props2, [\"children\", \"style\", \"requestFocus\", \"role\", \"component\", \"uri\", \"location\"]);\n\n    return React.createElement(Comp, _extends({\n      style: _extends({\n        outline: \"none\"\n      }, style),\n      tabIndex: \"-1\",\n      role: role,\n      ref: function ref(n) {\n        return _this5.node = n;\n      }\n    }, domProps), React.createElement(FocusContext.Provider, {\n      value: this.requestFocus\n    }, this.props.children));\n  };\n\n  return FocusHandlerImpl;\n}(React.Component);\n\npolyfill(FocusHandlerImpl);\n\nvar k = function k() {}; ////////////////////////////////////////////////////////////////////////////////\n\n\nvar forwardRef = React.forwardRef;\n\nif (typeof forwardRef === \"undefined\") {\n  forwardRef = function forwardRef(C) {\n    return C;\n  };\n}\n\nvar Link = forwardRef(function (_ref4, ref) {\n  var innerRef = _ref4.innerRef,\n      props = _objectWithoutProperties(_ref4, [\"innerRef\"]);\n\n  return React.createElement(BaseContext.Consumer, null, function (_ref5) {\n    var basepath = _ref5.basepath,\n        baseuri = _ref5.baseuri;\n    return React.createElement(Location, null, function (_ref6) {\n      var location = _ref6.location,\n          navigate = _ref6.navigate;\n\n      var to = props.to,\n          state = props.state,\n          replace = props.replace,\n          _props$getProps = props.getProps,\n          getProps = _props$getProps === undefined ? k : _props$getProps,\n          anchorProps = _objectWithoutProperties(props, [\"to\", \"state\", \"replace\", \"getProps\"]);\n\n      var href = resolve(to, baseuri);\n      var isCurrent = location.pathname === href;\n      var isPartiallyCurrent = startsWith(location.pathname, href);\n      return React.createElement(\"a\", _extends({\n        ref: ref || innerRef,\n        \"aria-current\": isCurrent ? \"page\" : undefined\n      }, anchorProps, getProps({\n        isCurrent: isCurrent,\n        isPartiallyCurrent: isPartiallyCurrent,\n        href: href,\n        location: location\n      }), {\n        href: href,\n        onClick: function onClick(event) {\n          if (anchorProps.onClick) anchorProps.onClick(event);\n\n          if (shouldNavigate(event)) {\n            event.preventDefault();\n            navigate(href, {\n              state: state,\n              replace: replace\n            });\n          }\n        }\n      }));\n    });\n  });\n}); ////////////////////////////////////////////////////////////////////////////////\n\nfunction RedirectRequest(uri) {\n  this.uri = uri;\n}\n\nvar isRedirect = function isRedirect(o) {\n  return o instanceof RedirectRequest;\n};\n\nvar redirectTo = function redirectTo(to) {\n  throw new RedirectRequest(to);\n};\n\nvar RedirectImpl = function (_React$Component3) {\n  _inherits(RedirectImpl, _React$Component3);\n\n  function RedirectImpl() {\n    _classCallCheck(this, RedirectImpl);\n\n    return _possibleConstructorReturn(this, _React$Component3.apply(this, arguments));\n  } // Support React < 16 with this hook\n\n\n  RedirectImpl.prototype.componentDidMount = function componentDidMount() {\n    var _props3 = this.props,\n        navigate = _props3.navigate,\n        to = _props3.to,\n        from = _props3.from,\n        _props3$replace = _props3.replace,\n        replace = _props3$replace === undefined ? true : _props3$replace,\n        state = _props3.state,\n        noThrow = _props3.noThrow,\n        props = _objectWithoutProperties(_props3, [\"navigate\", \"to\", \"from\", \"replace\", \"state\", \"noThrow\"]);\n\n    Promise.resolve().then(function () {\n      navigate(insertParams(to, props), {\n        replace: replace,\n        state: state\n      });\n    });\n  };\n\n  RedirectImpl.prototype.render = function render() {\n    var _props4 = this.props,\n        navigate = _props4.navigate,\n        to = _props4.to,\n        from = _props4.from,\n        replace = _props4.replace,\n        state = _props4.state,\n        noThrow = _props4.noThrow,\n        props = _objectWithoutProperties(_props4, [\"navigate\", \"to\", \"from\", \"replace\", \"state\", \"noThrow\"]);\n\n    if (!noThrow) redirectTo(insertParams(to, props));\n    return null;\n  };\n\n  return RedirectImpl;\n}(React.Component);\n\nvar Redirect = function Redirect(props) {\n  return React.createElement(Location, null, function (locationContext) {\n    return React.createElement(RedirectImpl, _extends({}, locationContext, props));\n  });\n};\n\nprocess.env.NODE_ENV !== \"production\" ? Redirect.propTypes = {\n  from: PropTypes.string,\n  to: PropTypes.string.isRequired\n} : void 0; ////////////////////////////////////////////////////////////////////////////////\n\nvar Match = function Match(_ref7) {\n  var path = _ref7.path,\n      children = _ref7.children;\n  return React.createElement(BaseContext.Consumer, null, function (_ref8) {\n    var baseuri = _ref8.baseuri;\n    return React.createElement(Location, null, function (_ref9) {\n      var navigate = _ref9.navigate,\n          location = _ref9.location;\n      var resolvedPath = resolve(path, baseuri);\n      var result = match(resolvedPath, location.pathname);\n      return children({\n        navigate: navigate,\n        location: location,\n        match: result ? _extends({}, result.params, {\n          uri: result.uri,\n          path: path\n        }) : null\n      });\n    });\n  });\n}; ////////////////////////////////////////////////////////////////////////////////\n// Junk\n\n\nvar stripSlashes = function stripSlashes(str) {\n  return str.replace(/(^\\/+|\\/+$)/g, \"\");\n};\n\nvar createRoute = function createRoute(basepath) {\n  return function (element) {\n    if (!element) {\n      return null;\n    }\n\n    !(element.props.path || element.props[\"default\"] || element.type === Redirect) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"<Router>: Children of <Router> must have a `path` or `default` prop, or be a `<Redirect>`. None found on element type `\" + element.type + \"`\") : invariant(false) : void 0;\n    !!(element.type === Redirect && (!element.props.from || !element.props.to)) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"<Redirect from=\\\"\" + element.props.from + \" to=\\\"\" + element.props.to + \"\\\"/> requires both \\\"from\\\" and \\\"to\\\" props when inside a <Router>.\") : invariant(false) : void 0;\n    !!(element.type === Redirect && !validateRedirect(element.props.from, element.props.to)) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"<Redirect from=\\\"\" + element.props.from + \" to=\\\"\" + element.props.to + \"\\\"/> has mismatched dynamic segments, ensure both paths have the exact same dynamic segments.\") : invariant(false) : void 0;\n\n    if (element.props[\"default\"]) {\n      return {\n        value: element,\n        \"default\": true\n      };\n    }\n\n    var elementPath = element.type === Redirect ? element.props.from : element.props.path;\n    var path = elementPath === \"/\" ? basepath : stripSlashes(basepath) + \"/\" + stripSlashes(elementPath);\n    return {\n      value: element,\n      \"default\": element.props[\"default\"],\n      path: element.props.children ? stripSlashes(path) + \"/*\" : path\n    };\n  };\n};\n\nvar shouldNavigate = function shouldNavigate(event) {\n  return !event.defaultPrevented && event.button === 0 && !(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}; ////////////////////////////////////////////////////////////////////////\n\n\nexport {  Link, Location, LocationProvider, Match, Redirect, Router, ServerLocation, createHistory, createMemorySource, isRedirect, navigate, redirectTo, globalHistory , BaseContext };","'use strict';\n// https://github.com/tc39/Array.prototype.includes\nvar $export = require('./_export');\nvar $includes = require('./_array-includes')(true);\n\n$export($export.P, 'Array', {\n  includes: function includes(el /* , fromIndex = 0 */) {\n    return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n\nrequire('./_add-to-unscopables')('includes');\n","var META = require('./_uid')('meta');\nvar isObject = require('./_is-object');\nvar has = require('./_has');\nvar setDesc = require('./_object-dp').f;\nvar id = 0;\nvar isExtensible = Object.isExtensible || function () {\n  return true;\n};\nvar FREEZE = !require('./_fails')(function () {\n  return isExtensible(Object.preventExtensions({}));\n});\nvar setMeta = function (it) {\n  setDesc(it, META, { value: {\n    i: 'O' + ++id, // object ID\n    w: {}          // weak collections IDs\n  } });\n};\nvar fastKey = function (it, create) {\n  // return primitive with prefix\n  if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n  if (!has(it, META)) {\n    // can't set metadata to uncaught frozen object\n    if (!isExtensible(it)) return 'F';\n    // not necessary to add metadata\n    if (!create) return 'E';\n    // add missing metadata\n    setMeta(it);\n  // return object ID\n  } return it[META].i;\n};\nvar getWeak = function (it, create) {\n  if (!has(it, META)) {\n    // can't set metadata to uncaught frozen object\n    if (!isExtensible(it)) return true;\n    // not necessary to add metadata\n    if (!create) return false;\n    // add missing metadata\n    setMeta(it);\n  // return hash weak collections IDs\n  } return it[META].w;\n};\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n  if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);\n  return it;\n};\nvar meta = module.exports = {\n  KEY: META,\n  NEED: false,\n  fastKey: fastKey,\n  getWeak: getWeak,\n  onFreeze: onFreeze\n};\n","'use strict';\nvar redefineAll = require('./_redefine-all');\nvar getWeak = require('./_meta').getWeak;\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar createArrayMethod = require('./_array-methods');\nvar $has = require('./_has');\nvar validate = require('./_validate-collection');\nvar arrayFind = createArrayMethod(5);\nvar arrayFindIndex = createArrayMethod(6);\nvar id = 0;\n\n// fallback for uncaught frozen keys\nvar uncaughtFrozenStore = function (that) {\n  return that._l || (that._l = new UncaughtFrozenStore());\n};\nvar UncaughtFrozenStore = function () {\n  this.a = [];\n};\nvar findUncaughtFrozen = function (store, key) {\n  return arrayFind(store.a, function (it) {\n    return it[0] === key;\n  });\n};\nUncaughtFrozenStore.prototype = {\n  get: function (key) {\n    var entry = findUncaughtFrozen(this, key);\n    if (entry) return entry[1];\n  },\n  has: function (key) {\n    return !!findUncaughtFrozen(this, key);\n  },\n  set: function (key, value) {\n    var entry = findUncaughtFrozen(this, key);\n    if (entry) entry[1] = value;\n    else this.a.push([key, value]);\n  },\n  'delete': function (key) {\n    var index = arrayFindIndex(this.a, function (it) {\n      return it[0] === key;\n    });\n    if (~index) this.a.splice(index, 1);\n    return !!~index;\n  }\n};\n\nmodule.exports = {\n  getConstructor: function (wrapper, NAME, IS_MAP, ADDER) {\n    var C = wrapper(function (that, iterable) {\n      anInstance(that, C, NAME, '_i');\n      that._t = NAME;      // collection type\n      that._i = id++;      // collection id\n      that._l = undefined; // leak store for uncaught frozen objects\n      if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n    });\n    redefineAll(C.prototype, {\n      // 23.3.3.2 WeakMap.prototype.delete(key)\n      // 23.4.3.3 WeakSet.prototype.delete(value)\n      'delete': function (key) {\n        if (!isObject(key)) return false;\n        var data = getWeak(key);\n        if (data === true) return uncaughtFrozenStore(validate(this, NAME))['delete'](key);\n        return data && $has(data, this._i) && delete data[this._i];\n      },\n      // 23.3.3.4 WeakMap.prototype.has(key)\n      // 23.4.3.4 WeakSet.prototype.has(value)\n      has: function has(key) {\n        if (!isObject(key)) return false;\n        var data = getWeak(key);\n        if (data === true) return uncaughtFrozenStore(validate(this, NAME)).has(key);\n        return data && $has(data, this._i);\n      }\n    });\n    return C;\n  },\n  def: function (that, key, value) {\n    var data = getWeak(anObject(key), true);\n    if (data === true) uncaughtFrozenStore(that).set(key, value);\n    else data[that._i] = value;\n    return that;\n  },\n  ufstore: uncaughtFrozenStore\n};\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports[\"default\"] = scrollTop;\n\nvar _isWindow = _interopRequireDefault(require(\"./isWindow\"));\n\nfunction scrollTop(node, val) {\n  var win = (0, _isWindow[\"default\"])(node);\n  if (val === undefined) return win ? 'pageYOffset' in win ? win.pageYOffset : win.document.documentElement.scrollTop : node.scrollTop;\n  if (win) win.scrollTo('pageXOffset' in win ? win.pageXOffset : win.document.documentElement.scrollLeft, val);else node.scrollTop = val;\n}\n\nmodule.exports = exports[\"default\"];","'use strict';\nrequire('./es6.regexp.flags');\nvar anObject = require('./_an-object');\nvar $flags = require('./_flags');\nvar DESCRIPTORS = require('./_descriptors');\nvar TO_STRING = 'toString';\nvar $toString = /./[TO_STRING];\n\nvar define = function (fn) {\n  require('./_redefine')(RegExp.prototype, TO_STRING, fn, true);\n};\n\n// 21.2.5.14 RegExp.prototype.toString()\nif (require('./_fails')(function () { return $toString.call({ source: 'a', flags: 'b' }) != '/a/b'; })) {\n  define(function toString() {\n    var R = anObject(this);\n    return '/'.concat(R.source, '/',\n      'flags' in R ? R.flags : !DESCRIPTORS && R instanceof RegExp ? $flags.call(R) : undefined);\n  });\n// FF44- RegExp#toString has a wrong name\n} else if ($toString.name != TO_STRING) {\n  define(function toString() {\n    return $toString.call(this);\n  });\n}\n","// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = require('./_iobject');\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n  return IObject(defined(it));\n};\n","var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n  return hasOwnProperty.call(it, key);\n};\n","// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n  if (!isObject(it)) return it;\n  var fn, val;\n  if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n  if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n  if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n  throw TypeError(\"Can't convert object to primitive value\");\n};\n","'use strict';\nvar $export = require('./_export');\nvar $map = require('./_array-methods')(1);\n\n$export($export.P + $export.F * !require('./_strict-method')([].map, true), 'Array', {\n  // 22.1.3.15 / 15.4.4.19 Array.prototype.map(callbackfn [, thisArg])\n  map: function map(callbackfn /* , thisArg */) {\n    return $map(this, callbackfn, arguments[1]);\n  }\n});\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _inDOM = _interopRequireDefault(require(\"../util/inDOM\"));\n\nvar off = function off() {};\n\nif (_inDOM[\"default\"]) {\n  off = function () {\n    if (document.addEventListener) return function (node, eventName, handler, capture) {\n      return node.removeEventListener(eventName, handler, capture || false);\n    };else if (document.attachEvent) return function (node, eventName, handler) {\n      return node.detachEvent('on' + eventName, handler);\n    };\n  }();\n}\n\nvar _default = off;\nexports[\"default\"] = _default;\nmodule.exports = exports[\"default\"];","/**\n * Remove a prefix from a string. Return the input string if the given prefix\n * isn't found.\n */\n\nexport default (str, prefix = ``) => {\n  if (!prefix) {\n    return str\n  }\n\n  prefix += `/`\n\n  if (str.substr(0, prefix.length) === prefix) {\n    return str.slice(prefix.length - 1)\n  }\n\n  return str\n}\n","\"use strict\";\n\nrequire(\"core-js/modules/es6.array.index-of\");\n\nexports.__esModule = true;\nexports.parsePath = parsePath;\n\nfunction parsePath(path) {\n  var pathname = path || \"/\";\n  var search = \"\";\n  var hash = \"\";\n  var hashIndex = pathname.indexOf(\"#\");\n\n  if (hashIndex !== -1) {\n    hash = pathname.substr(hashIndex);\n    pathname = pathname.substr(0, hashIndex);\n  }\n\n  var searchIndex = pathname.indexOf(\"?\");\n\n  if (searchIndex !== -1) {\n    search = pathname.substr(searchIndex);\n    pathname = pathname.substr(0, searchIndex);\n  }\n\n  return {\n    pathname: pathname,\n    search: search === \"?\" ? \"\" : search,\n    hash: hash === \"#\" ? \"\" : hash\n  };\n}","'use strict';\n// 19.1.2.1 Object.assign(target, source, ...)\nvar DESCRIPTORS = require('./_descriptors');\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nvar toObject = require('./_to-object');\nvar IObject = require('./_iobject');\nvar $assign = Object.assign;\n\n// should work with symbols and should have deterministic property order (V8 bug)\nmodule.exports = !$assign || require('./_fails')(function () {\n  var A = {};\n  var B = {};\n  // eslint-disable-next-line no-undef\n  var S = Symbol();\n  var K = 'abcdefghijklmnopqrst';\n  A[S] = 7;\n  K.split('').forEach(function (k) { B[k] = k; });\n  return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n  var T = toObject(target);\n  var aLen = arguments.length;\n  var index = 1;\n  var getSymbols = gOPS.f;\n  var isEnum = pIE.f;\n  while (aLen > index) {\n    var S = IObject(arguments[index++]);\n    var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);\n    var length = keys.length;\n    var j = 0;\n    var key;\n    while (length > j) {\n      key = keys[j++];\n      if (!DESCRIPTORS || isEnum.call(S, key)) T[key] = S[key];\n    }\n  } return T;\n} : $assign;\n","var toInteger = require('./_to-integer');\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n  index = toInteger(index);\n  return index < 0 ? max(index + length, 0) : min(index, length);\n};\n","'use strict';\n// 22.1.3.8 Array.prototype.find(predicate, thisArg = undefined)\nvar $export = require('./_export');\nvar $find = require('./_array-methods')(5);\nvar KEY = 'find';\nvar forced = true;\n// Shouldn't skip holes\nif (KEY in []) Array(1)[KEY](function () { forced = false; });\n$export($export.P + $export.F * forced, 'Array', {\n  find: function find(callbackfn /* , that = undefined */) {\n    return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\nrequire('./_add-to-unscopables')(KEY);\n","'use strict';\nvar $export = require('./_export');\nvar $some = require('./_array-methods')(3);\n\n$export($export.P + $export.F * !require('./_strict-method')([].some, true), 'Array', {\n  // 22.1.3.23 / 15.4.4.17 Array.prototype.some(callbackfn [, thisArg])\n  some: function some(callbackfn /* , thisArg */) {\n    return $some(this, callbackfn, arguments[1]);\n  }\n});\n","// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n  ? window : typeof self != 'undefined' && self.Math == Math ? self\n  // eslint-disable-next-line no-new-func\n  : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n","// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nvar toIObject = require('./_to-iobject');\nvar gOPN = require('./_object-gopn').f;\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n  ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n  try {\n    return gOPN(it);\n  } catch (e) {\n    return windowNames.slice();\n  }\n};\n\nmodule.exports.f = function getOwnPropertyNames(it) {\n  return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));\n};\n","// 20.3.3.1 / 15.9.4.4 Date.now()\nvar $export = require('./_export');\n\n$export($export.S, 'Date', { now: function () { return new Date().getTime(); } });\n","module.exports = function (exec) {\n  try {\n    return !!exec();\n  } catch (e) {\n    return true;\n  }\n};\n","'use strict';\nvar global = require('./_global');\nvar dP = require('./_object-dp');\nvar DESCRIPTORS = require('./_descriptors');\nvar SPECIES = require('./_wks')('species');\n\nmodule.exports = function (KEY) {\n  var C = global[KEY];\n  if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, {\n    configurable: true,\n    get: function () { return this; }\n  });\n};\n","const support = function(feature) {\n  if (typeof document === `undefined`) {\n    return false\n  }\n  const fakeLink = document.createElement(`link`)\n  try {\n    if (fakeLink.relList && typeof fakeLink.relList.supports === `function`) {\n      return fakeLink.relList.supports(feature)\n    }\n  } catch (err) {\n    return false\n  }\n  return false\n}\n\nconst linkPrefetchStrategy = function(url, options) {\n  return new Promise((resolve, reject) => {\n    if (typeof document === `undefined`) {\n      reject()\n      return\n    }\n\n    const link = document.createElement(`link`)\n    link.setAttribute(`rel`, `prefetch`)\n    link.setAttribute(`href`, url)\n\n    Object.keys(options).forEach(key => {\n      link.setAttribute(key, options[key])\n    })\n\n    link.onload = resolve\n    link.onerror = reject\n\n    const parentElement =\n      document.getElementsByTagName(`head`)[0] ||\n      document.getElementsByName(`script`)[0].parentNode\n    parentElement.appendChild(link)\n  })\n}\n\nconst xhrPrefetchStrategy = function(url) {\n  return new Promise((resolve, reject) => {\n    const req = new XMLHttpRequest()\n    req.open(`GET`, url, true)\n\n    req.onload = () => {\n      if (req.status === 200) {\n        resolve()\n      } else {\n        reject()\n      }\n    }\n\n    req.send(null)\n  })\n}\n\nconst supportedPrefetchStrategy = support(`prefetch`)\n  ? linkPrefetchStrategy\n  : xhrPrefetchStrategy\n\nconst preFetched = {}\n\nconst prefetch = function(url, options) {\n  return new Promise(resolve => {\n    if (preFetched[url]) {\n      resolve()\n      return\n    }\n\n    supportedPrefetchStrategy(url, options)\n      .then(() => {\n        resolve()\n        preFetched[url] = true\n      })\n      .catch(() => {}) // 404s are logged to the console anyway\n  })\n}\n\nexport default prefetch\n","export default path => {\n  if (path === undefined) {\n    return path\n  }\n  if (path === `/`) {\n    return `/`\n  }\n  if (path.charAt(path.length - 1) === `/`) {\n    return path.slice(0, -1)\n  }\n  return path\n}\n","import { match } from \"@reach/router/lib/utils\"\nimport stripPrefix from \"./strip-prefix\"\nimport normalizePagePath from \"./normalize-page-path\"\n\nconst pathCache = new Map()\nlet matchPaths = []\n\nconst trimPathname = rawPathname => {\n  const pathname = decodeURIComponent(rawPathname)\n  // Remove the pathPrefix from the pathname.\n  const trimmedPathname = stripPrefix(pathname, __BASE_PATH__)\n    // Remove any hashfragment\n    .split(`#`)[0]\n    // Remove search query\n    .split(`?`)[0]\n\n  return trimmedPathname\n}\n\n/**\n * Set list of matchPaths\n *\n * @param {Array<{path: string, matchPath: string}>} value collection of matchPaths\n */\nexport const setMatchPaths = value => {\n  matchPaths = value\n}\n\n/**\n * Return a matchpath url\n * if `match-paths.json` contains `{ \"/foo*\": \"/page1\", ...}`, then\n * `/foo?bar=far` => `/page1`\n *\n * @param {string} rawPathname A raw pathname\n * @return {string|null}\n */\nexport const findMatchPath = rawPathname => {\n  const trimmedPathname = cleanPath(rawPathname)\n\n  for (const { matchPath, path } of matchPaths) {\n    if (match(matchPath, trimmedPathname)) {\n      return normalizePagePath(path)\n    }\n  }\n\n  return null\n}\n\n// Given a raw URL path, returns the cleaned version of it (trim off\n// `#` and query params), or if it matches an entry in\n// `match-paths.json`, its matched path is returned\n//\n// E.g. `/foo?bar=far` => `/foo`\n//\n// Or if `match-paths.json` contains `{ \"/foo*\": \"/page1\", ...}`, then\n// `/foo?bar=far` => `/page1`\nexport const findPath = rawPathname => {\n  const trimmedPathname = trimPathname(rawPathname)\n\n  if (pathCache.has(trimmedPathname)) {\n    return pathCache.get(trimmedPathname)\n  }\n\n  let foundPath = findMatchPath(trimmedPathname)\n\n  if (!foundPath) {\n    foundPath = cleanPath(rawPathname)\n  }\n\n  pathCache.set(trimmedPathname, foundPath)\n\n  return foundPath\n}\n\n/**\n * Clean a url and converts /index.html => /\n * E.g. `/foo?bar=far` => `/foo`\n *\n * @param {string} rawPathname A raw pathname\n * @return {string}\n */\nexport const cleanPath = rawPathname => {\n  const trimmedPathname = trimPathname(rawPathname)\n\n  let foundPath = trimmedPathname\n  if (foundPath === `/index.html`) {\n    foundPath = `/`\n  }\n\n  foundPath = normalizePagePath(foundPath)\n\n  return foundPath\n}\n","import prefetchHelper from \"./prefetch\"\nimport emitter from \"./emitter\"\nimport { setMatchPaths, findPath, findMatchPath } from \"./find-path\"\n\nconst preferDefault = m => (m && m.default) || m\n\nconst stripSurroundingSlashes = s => {\n  s = s[0] === `/` ? s.slice(1) : s\n  s = s.endsWith(`/`) ? s.slice(0, -1) : s\n  return s\n}\n\nconst createPageDataUrl = path => {\n  const fixedPath = path === `/` ? `index` : stripSurroundingSlashes(path)\n  return `${__PATH_PREFIX__}/page-data/${fixedPath}/page-data.json`\n}\n\nconst doFetch = (url, method = `GET`) =>\n  new Promise((resolve, reject) => {\n    const req = new XMLHttpRequest()\n    req.open(method, url, true)\n    req.onreadystatechange = () => {\n      if (req.readyState == 4) {\n        resolve(req)\n      }\n    }\n    req.send(null)\n  })\n\nconst loadPageDataJson = loadObj => {\n  const { pagePath, retries = 0 } = loadObj\n  const url = createPageDataUrl(pagePath)\n  return doFetch(url).then(req => {\n    const { status, responseText } = req\n\n    // Handle 200\n    if (status === 200) {\n      try {\n        const jsonPayload = JSON.parse(responseText)\n        if (jsonPayload.path === undefined) {\n          throw new Error(`not a valid pageData response`)\n        }\n\n        return Object.assign(loadObj, {\n          status: `success`,\n          payload: jsonPayload,\n        })\n      } catch (err) {\n        // continue regardless of error\n      }\n    }\n\n    // Handle 404\n    if (status === 404 || status === 200) {\n      // If the request was for a 404 page and it doesn't exist, we're done\n      if (pagePath === `/404.html`) {\n        return Object.assign(loadObj, {\n          status: `failure`,\n        })\n      }\n\n      // Need some code here to cache the 404 request. In case\n      // multiple loadPageDataJsons result in 404s\n      return loadPageDataJson(\n        Object.assign(loadObj, { pagePath: `/404.html`, notFound: true })\n      )\n    }\n\n    // handle 500 response (Unrecoverable)\n    if (status === 500) {\n      return Object.assign(loadObj, {\n        status: `error`,\n      })\n    }\n\n    // Handle everything else, including status === 0, and 503s. Should retry\n    if (retries < 3) {\n      return loadPageDataJson(Object.assign(loadObj, { retries: retries + 1 }))\n    }\n\n    // Retried 3 times already, result is a failure.\n    return Object.assign(loadObj, {\n      status: `error`,\n    })\n  })\n}\n\nconst doesConnectionSupportPrefetch = () => {\n  if (\n    `connection` in navigator &&\n    typeof navigator.connection !== `undefined`\n  ) {\n    if ((navigator.connection.effectiveType || ``).includes(`2g`)) {\n      return false\n    }\n    if (navigator.connection.saveData) {\n      return false\n    }\n  }\n  return true\n}\n\nconst toPageResources = (pageData, component = null) => {\n  const page = {\n    componentChunkName: pageData.componentChunkName,\n    path: pageData.path,\n    webpackCompilationHash: pageData.webpackCompilationHash,\n    matchPath: pageData.matchPath,\n  }\n\n  return {\n    component,\n    json: pageData.result,\n    page,\n  }\n}\n\nexport class BaseLoader {\n  constructor(loadComponent, matchPaths) {\n    // Map of pagePath -> Page. Where Page is an object with: {\n    //   status: `success` || `error`,\n    //   payload: PageResources, // undefined if `error`\n    // }\n    // PageResources is {\n    //   component,\n    //   json: pageData.result,\n    //   page: {\n    //     componentChunkName,\n    //     path,\n    //     webpackCompilationHash,\n    //   }\n    // }\n    this.pageDb = new Map()\n    this.inFlightDb = new Map()\n    this.pageDataDb = new Map()\n    this.prefetchTriggered = new Set()\n    this.prefetchCompleted = new Set()\n    this.loadComponent = loadComponent\n    setMatchPaths(matchPaths)\n  }\n\n  setApiRunner(apiRunner) {\n    this.apiRunner = apiRunner\n    this.prefetchDisabled = apiRunner(`disableCorePrefetching`).some(a => a)\n  }\n\n  loadPageDataJson(rawPath) {\n    const pagePath = findPath(rawPath)\n    if (this.pageDataDb.has(pagePath)) {\n      return Promise.resolve(this.pageDataDb.get(pagePath))\n    }\n\n    return loadPageDataJson({ pagePath }).then(pageData => {\n      this.pageDataDb.set(pagePath, pageData)\n\n      return pageData\n    })\n  }\n\n  findMatchPath(rawPath) {\n    return findMatchPath(rawPath)\n  }\n\n  // TODO check all uses of this and whether they use undefined for page resources not exist\n  loadPage(rawPath) {\n    const pagePath = findPath(rawPath)\n    if (this.pageDb.has(pagePath)) {\n      const page = this.pageDb.get(pagePath)\n      return Promise.resolve(page.payload)\n    }\n    if (this.inFlightDb.has(pagePath)) {\n      return this.inFlightDb.get(pagePath)\n    }\n\n    const inFlight = Promise.all([\n      this.loadAppData(),\n      this.loadPageDataJson(pagePath),\n    ])\n      .then(allData => {\n        const result = allData[1]\n        if (result.status === `error`) {\n          return {\n            status: `error`,\n          }\n        }\n        if (result.status === `failure`) {\n          // throw an error so error trackers can pick this up\n          throw new Error(\n            `404 page could not be found. Checkout https://www.gatsbyjs.org/docs/add-404-page/`\n          )\n        }\n\n        let pageData = result.payload\n        const { componentChunkName } = pageData\n        return this.loadComponent(componentChunkName).then(component => {\n          const finalResult = { createdAt: new Date() }\n          let pageResources\n          if (!component) {\n            finalResult.status = `error`\n          } else {\n            finalResult.status = `success`\n            if (result.notFound === true) {\n              finalResult.notFound = true\n            }\n            pageData = Object.assign(pageData, {\n              webpackCompilationHash: allData[0]\n                ? allData[0].webpackCompilationHash\n                : ``,\n            })\n            pageResources = toPageResources(pageData, component)\n            finalResult.payload = pageResources\n            emitter.emit(`onPostLoadPageResources`, {\n              page: pageResources,\n              pageResources,\n            })\n          }\n          this.pageDb.set(pagePath, finalResult)\n          // undefined if final result is an error\n          return pageResources\n        })\n      })\n      // prefer duplication with then + catch over .finally to prevent problems in ie11 + firefox\n      .then(response => {\n        this.inFlightDb.delete(pagePath)\n        return response\n      })\n      .catch(err => {\n        this.inFlightDb.delete(pagePath)\n        throw err\n      })\n\n    this.inFlightDb.set(pagePath, inFlight)\n    return inFlight\n  }\n\n  // returns undefined if loading page ran into errors\n  loadPageSync(rawPath) {\n    const pagePath = findPath(rawPath)\n    if (this.pageDb.has(pagePath)) {\n      return this.pageDb.get(pagePath).payload\n    }\n    return undefined\n  }\n\n  shouldPrefetch(pagePath) {\n    // Skip prefetching if we know user is on slow or constrained connection\n    if (!doesConnectionSupportPrefetch()) {\n      return false\n    }\n\n    // Check if the page exists.\n    if (this.pageDb.has(pagePath)) {\n      return false\n    }\n\n    return true\n  }\n\n  prefetch(pagePath) {\n    if (!this.shouldPrefetch(pagePath)) {\n      return false\n    }\n\n    // Tell plugins with custom prefetching logic that they should start\n    // prefetching this path.\n    if (!this.prefetchTriggered.has(pagePath)) {\n      this.apiRunner(`onPrefetchPathname`, { pathname: pagePath })\n      this.prefetchTriggered.add(pagePath)\n    }\n\n    // If a plugin has disabled core prefetching, stop now.\n    if (this.prefetchDisabled) {\n      return false\n    }\n\n    const realPath = findPath(pagePath)\n    // Todo make doPrefetch logic cacheable\n    // eslint-disable-next-line consistent-return\n    this.doPrefetch(realPath).then(() => {\n      if (!this.prefetchCompleted.has(pagePath)) {\n        this.apiRunner(`onPostPrefetchPathname`, { pathname: pagePath })\n        this.prefetchCompleted.add(pagePath)\n      }\n    })\n\n    return true\n  }\n\n  doPrefetch(pagePath) {\n    throw new Error(`doPrefetch not implemented`)\n  }\n\n  hovering(rawPath) {\n    this.loadPage(rawPath)\n  }\n\n  getResourceURLsForPathname(rawPath) {\n    const pagePath = findPath(rawPath)\n    const page = this.pageDataDb.get(pagePath)\n    if (page) {\n      const pageResources = toPageResources(page.payload)\n\n      return [\n        ...createComponentUrls(pageResources.page.componentChunkName),\n        createPageDataUrl(pagePath),\n      ]\n    } else {\n      return null\n    }\n  }\n\n  isPageNotFound(rawPath) {\n    const pagePath = findPath(rawPath)\n    const page = this.pageDb.get(pagePath)\n    return page && page.notFound === true\n  }\n\n  loadAppData(retries = 0) {\n    return doFetch(`${__PATH_PREFIX__}/page-data/app-data.json`).then(req => {\n      const { status, responseText } = req\n\n      let appData\n\n      if (status !== 200 && retries < 3) {\n        // Retry 3 times incase of failures\n        return this.loadAppData(retries + 1)\n      }\n\n      // Handle 200\n      if (status === 200) {\n        try {\n          const jsonPayload = JSON.parse(responseText)\n          if (jsonPayload.webpackCompilationHash === undefined) {\n            throw new Error(`not a valid app-data response`)\n          }\n\n          appData = jsonPayload\n        } catch (err) {\n          // continue regardless of error\n        }\n      }\n\n      return appData\n    })\n  }\n}\n\nconst createComponentUrls = componentChunkName =>\n  window.___chunkMapping[componentChunkName].map(\n    chunk => __PATH_PREFIX__ + chunk\n  )\n\nexport class ProdLoader extends BaseLoader {\n  constructor(asyncRequires, matchPaths) {\n    const loadComponent = chunkName =>\n      asyncRequires.components[chunkName]().then(preferDefault)\n\n    super(loadComponent, matchPaths)\n  }\n\n  doPrefetch(pagePath) {\n    const pageDataUrl = createPageDataUrl(pagePath)\n    return prefetchHelper(pageDataUrl, {\n      crossOrigin: `anonymous`,\n      as: `fetch`,\n    })\n      .then(() =>\n        // This was just prefetched, so will return a response from\n        // the cache instead of making another request to the server\n        this.loadPageDataJson(pagePath)\n      )\n      .then(result => {\n        if (result.status !== `success`) {\n          return Promise.resolve()\n        }\n        const pageData = result.payload\n        const chunkName = pageData.componentChunkName\n        const componentUrls = createComponentUrls(chunkName)\n        return Promise.all(componentUrls.map(prefetchHelper)).then(\n          () => pageData\n        )\n      })\n  }\n}\n\nlet instance\n\nexport const setLoader = _loader => {\n  instance = _loader\n}\n\nexport const publicLoader = {\n  // Deprecated methods. As far as we're aware, these are only used by\n  // core gatsby and the offline plugin, however there's a very small\n  // chance they're called by others.\n  getResourcesForPathname: rawPath => {\n    console.warn(\n      `Warning: getResourcesForPathname is deprecated. Use loadPage instead`\n    )\n    return instance.i.loadPage(rawPath)\n  },\n  getResourcesForPathnameSync: rawPath => {\n    console.warn(\n      `Warning: getResourcesForPathnameSync is deprecated. Use loadPageSync instead`\n    )\n    return instance.i.loadPageSync(rawPath)\n  },\n  enqueue: rawPath => instance.prefetch(rawPath),\n\n  // Real methods\n  getResourceURLsForPathname: rawPath =>\n    instance.getResourceURLsForPathname(rawPath),\n  loadPage: rawPath => instance.loadPage(rawPath),\n  loadPageSync: rawPath => instance.loadPageSync(rawPath),\n  prefetch: rawPath => instance.prefetch(rawPath),\n  isPageNotFound: rawPath => instance.isPageNotFound(rawPath),\n  hovering: rawPath => instance.hovering(rawPath),\n  loadAppData: () => instance.loadAppData(),\n}\n\nexport default publicLoader\n","var aFunction = require('./_a-function');\nvar toObject = require('./_to-object');\nvar IObject = require('./_iobject');\nvar toLength = require('./_to-length');\n\nmodule.exports = function (that, callbackfn, aLen, memo, isRight) {\n  aFunction(callbackfn);\n  var O = toObject(that);\n  var self = IObject(O);\n  var length = toLength(O.length);\n  var index = isRight ? length - 1 : 0;\n  var i = isRight ? -1 : 1;\n  if (aLen < 2) for (;;) {\n    if (index in self) {\n      memo = self[index];\n      index += i;\n      break;\n    }\n    index += i;\n    if (isRight ? index < 0 : length <= index) {\n      throw TypeError('Reduce of empty array with no initial value');\n    }\n  }\n  for (;isRight ? index >= 0 : length > index; index += i) if (index in self) {\n    memo = callbackfn(memo, self[index], index, O);\n  }\n  return memo;\n};\n","var dP = require('./_object-dp').f;\nvar FProto = Function.prototype;\nvar nameRE = /^\\s*function ([^ (]*)/;\nvar NAME = 'name';\n\n// 19.2.4.2 name\nNAME in FProto || require('./_descriptors') && dP(FProto, NAME, {\n  configurable: true,\n  get: function () {\n    try {\n      return ('' + this).match(nameRE)[1];\n    } catch (e) {\n      return '';\n    }\n  }\n});\n","var def = require('./_object-dp').f;\nvar has = require('./_has');\nvar TAG = require('./_wks')('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n  if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n","var core = module.exports = { version: '2.6.11' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n","// 7.2.9 SameValue(x, y)\nmodule.exports = Object.is || function is(x, y) {\n  // eslint-disable-next-line no-self-compare\n  return x === y ? x !== 0 || 1 / x === 1 / y : x != x && y != y;\n};\n","var global = require('./_global');\nvar macrotask = require('./_task').set;\nvar Observer = global.MutationObserver || global.WebKitMutationObserver;\nvar process = global.process;\nvar Promise = global.Promise;\nvar isNode = require('./_cof')(process) == 'process';\n\nmodule.exports = function () {\n  var head, last, notify;\n\n  var flush = function () {\n    var parent, fn;\n    if (isNode && (parent = process.domain)) parent.exit();\n    while (head) {\n      fn = head.fn;\n      head = head.next;\n      try {\n        fn();\n      } catch (e) {\n        if (head) notify();\n        else last = undefined;\n        throw e;\n      }\n    } last = undefined;\n    if (parent) parent.enter();\n  };\n\n  // Node.js\n  if (isNode) {\n    notify = function () {\n      process.nextTick(flush);\n    };\n  // browsers with MutationObserver, except iOS Safari - https://github.com/zloirock/core-js/issues/339\n  } else if (Observer && !(global.navigator && global.navigator.standalone)) {\n    var toggle = true;\n    var node = document.createTextNode('');\n    new Observer(flush).observe(node, { characterData: true }); // eslint-disable-line no-new\n    notify = function () {\n      node.data = toggle = !toggle;\n    };\n  // environments with maybe non-completely correct, but existent Promise\n  } else if (Promise && Promise.resolve) {\n    // Promise.resolve without an argument throws an error in LG WebOS 2\n    var promise = Promise.resolve(undefined);\n    notify = function () {\n      promise.then(flush);\n    };\n  // for other environments - macrotask based on:\n  // - setImmediate\n  // - MessageChannel\n  // - window.postMessag\n  // - onreadystatechange\n  // - setTimeout\n  } else {\n    notify = function () {\n      // strange IE + webpack dev server bug - use .call(global)\n      macrotask.call(global, flush);\n    };\n  }\n\n  return function (fn) {\n    var task = { fn: fn, next: undefined };\n    if (last) last.next = task;\n    if (!head) {\n      head = task;\n      notify();\n    } last = task;\n  };\n};\n","var DateProto = Date.prototype;\nvar INVALID_DATE = 'Invalid Date';\nvar TO_STRING = 'toString';\nvar $toString = DateProto[TO_STRING];\nvar getTime = DateProto.getTime;\nif (new Date(NaN) + '' != INVALID_DATE) {\n  require('./_redefine')(DateProto, TO_STRING, function toString() {\n    var value = getTime.call(this);\n    // eslint-disable-next-line no-self-compare\n    return value === value ? $toString.call(this) : INVALID_DATE;\n  });\n}\n","var $export = require('./_export');\n// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\n$export($export.S, 'Object', { create: require('./_object-create') });\n","module.exports = {};\n","var anObject = require('./_an-object');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar toPrimitive = require('./_to-primitive');\nvar dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n  anObject(O);\n  P = toPrimitive(P, true);\n  anObject(Attributes);\n  if (IE8_DOM_DEFINE) try {\n    return dP(O, P, Attributes);\n  } catch (e) { /* empty */ }\n  if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n  if ('value' in Attributes) O[P] = Attributes.value;\n  return O;\n};\n","// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nvar isObject = require('./_is-object');\nvar anObject = require('./_an-object');\nvar check = function (O, proto) {\n  anObject(O);\n  if (!isObject(proto) && proto !== null) throw TypeError(proto + \": can't set as prototype!\");\n};\nmodule.exports = {\n  set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line\n    function (test, buggy, set) {\n      try {\n        set = require('./_ctx')(Function.call, require('./_object-gopd').f(Object.prototype, '__proto__').set, 2);\n        set(test, []);\n        buggy = !(test instanceof Array);\n      } catch (e) { buggy = true; }\n      return function setPrototypeOf(O, proto) {\n        check(O, proto);\n        if (buggy) O.__proto__ = proto;\n        else set(O, proto);\n        return O;\n      };\n    }({}, false) : undefined),\n  check: check\n};\n","'use strict';\n// ECMAScript 6 symbols shim\nvar global = require('./_global');\nvar has = require('./_has');\nvar DESCRIPTORS = require('./_descriptors');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar META = require('./_meta').KEY;\nvar $fails = require('./_fails');\nvar shared = require('./_shared');\nvar setToStringTag = require('./_set-to-string-tag');\nvar uid = require('./_uid');\nvar wks = require('./_wks');\nvar wksExt = require('./_wks-ext');\nvar wksDefine = require('./_wks-define');\nvar enumKeys = require('./_enum-keys');\nvar isArray = require('./_is-array');\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar toObject = require('./_to-object');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar createDesc = require('./_property-desc');\nvar _create = require('./_object-create');\nvar gOPNExt = require('./_object-gopn-ext');\nvar $GOPD = require('./_object-gopd');\nvar $GOPS = require('./_object-gops');\nvar $DP = require('./_object-dp');\nvar $keys = require('./_object-keys');\nvar gOPD = $GOPD.f;\nvar dP = $DP.f;\nvar gOPN = gOPNExt.f;\nvar $Symbol = global.Symbol;\nvar $JSON = global.JSON;\nvar _stringify = $JSON && $JSON.stringify;\nvar PROTOTYPE = 'prototype';\nvar HIDDEN = wks('_hidden');\nvar TO_PRIMITIVE = wks('toPrimitive');\nvar isEnum = {}.propertyIsEnumerable;\nvar SymbolRegistry = shared('symbol-registry');\nvar AllSymbols = shared('symbols');\nvar OPSymbols = shared('op-symbols');\nvar ObjectProto = Object[PROTOTYPE];\nvar USE_NATIVE = typeof $Symbol == 'function' && !!$GOPS.f;\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDesc = DESCRIPTORS && $fails(function () {\n  return _create(dP({}, 'a', {\n    get: function () { return dP(this, 'a', { value: 7 }).a; }\n  })).a != 7;\n}) ? function (it, key, D) {\n  var protoDesc = gOPD(ObjectProto, key);\n  if (protoDesc) delete ObjectProto[key];\n  dP(it, key, D);\n  if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc);\n} : dP;\n\nvar wrap = function (tag) {\n  var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);\n  sym._k = tag;\n  return sym;\n};\n\nvar isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) {\n  return typeof it == 'symbol';\n} : function (it) {\n  return it instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(it, key, D) {\n  if (it === ObjectProto) $defineProperty(OPSymbols, key, D);\n  anObject(it);\n  key = toPrimitive(key, true);\n  anObject(D);\n  if (has(AllSymbols, key)) {\n    if (!D.enumerable) {\n      if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {}));\n      it[HIDDEN][key] = true;\n    } else {\n      if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;\n      D = _create(D, { enumerable: createDesc(0, false) });\n    } return setSymbolDesc(it, key, D);\n  } return dP(it, key, D);\n};\nvar $defineProperties = function defineProperties(it, P) {\n  anObject(it);\n  var keys = enumKeys(P = toIObject(P));\n  var i = 0;\n  var l = keys.length;\n  var key;\n  while (l > i) $defineProperty(it, key = keys[i++], P[key]);\n  return it;\n};\nvar $create = function create(it, P) {\n  return P === undefined ? _create(it) : $defineProperties(_create(it), P);\n};\nvar $propertyIsEnumerable = function propertyIsEnumerable(key) {\n  var E = isEnum.call(this, key = toPrimitive(key, true));\n  if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false;\n  return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;\n};\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {\n  it = toIObject(it);\n  key = toPrimitive(key, true);\n  if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return;\n  var D = gOPD(it, key);\n  if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;\n  return D;\n};\nvar $getOwnPropertyNames = function getOwnPropertyNames(it) {\n  var names = gOPN(toIObject(it));\n  var result = [];\n  var i = 0;\n  var key;\n  while (names.length > i) {\n    if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key);\n  } return result;\n};\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(it) {\n  var IS_OP = it === ObjectProto;\n  var names = gOPN(IS_OP ? OPSymbols : toIObject(it));\n  var result = [];\n  var i = 0;\n  var key;\n  while (names.length > i) {\n    if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]);\n  } return result;\n};\n\n// 19.4.1.1 Symbol([description])\nif (!USE_NATIVE) {\n  $Symbol = function Symbol() {\n    if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!');\n    var tag = uid(arguments.length > 0 ? arguments[0] : undefined);\n    var $set = function (value) {\n      if (this === ObjectProto) $set.call(OPSymbols, value);\n      if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n      setSymbolDesc(this, tag, createDesc(1, value));\n    };\n    if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set });\n    return wrap(tag);\n  };\n  redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n    return this._k;\n  });\n\n  $GOPD.f = $getOwnPropertyDescriptor;\n  $DP.f = $defineProperty;\n  require('./_object-gopn').f = gOPNExt.f = $getOwnPropertyNames;\n  require('./_object-pie').f = $propertyIsEnumerable;\n  $GOPS.f = $getOwnPropertySymbols;\n\n  if (DESCRIPTORS && !require('./_library')) {\n    redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);\n  }\n\n  wksExt.f = function (name) {\n    return wrap(wks(name));\n  };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol });\n\nfor (var es6Symbols = (\n  // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14\n  'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'\n).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]);\n\nfor (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]);\n\n$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {\n  // 19.4.2.1 Symbol.for(key)\n  'for': function (key) {\n    return has(SymbolRegistry, key += '')\n      ? SymbolRegistry[key]\n      : SymbolRegistry[key] = $Symbol(key);\n  },\n  // 19.4.2.5 Symbol.keyFor(sym)\n  keyFor: function keyFor(sym) {\n    if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!');\n    for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key;\n  },\n  useSetter: function () { setter = true; },\n  useSimple: function () { setter = false; }\n});\n\n$export($export.S + $export.F * !USE_NATIVE, 'Object', {\n  // 19.1.2.2 Object.create(O [, Properties])\n  create: $create,\n  // 19.1.2.4 Object.defineProperty(O, P, Attributes)\n  defineProperty: $defineProperty,\n  // 19.1.2.3 Object.defineProperties(O, Properties)\n  defineProperties: $defineProperties,\n  // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\n  getOwnPropertyDescriptor: $getOwnPropertyDescriptor,\n  // 19.1.2.7 Object.getOwnPropertyNames(O)\n  getOwnPropertyNames: $getOwnPropertyNames,\n  // 19.1.2.8 Object.getOwnPropertySymbols(O)\n  getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives\n// https://bugs.chromium.org/p/v8/issues/detail?id=3443\nvar FAILS_ON_PRIMITIVES = $fails(function () { $GOPS.f(1); });\n\n$export($export.S + $export.F * FAILS_ON_PRIMITIVES, 'Object', {\n  getOwnPropertySymbols: function getOwnPropertySymbols(it) {\n    return $GOPS.f(toObject(it));\n  }\n});\n\n// 24.3.2 JSON.stringify(value [, replacer [, space]])\n$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () {\n  var S = $Symbol();\n  // MS Edge converts symbol values to JSON as {}\n  // WebKit converts symbol values to JSON as null\n  // V8 throws on boxed symbols\n  return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}';\n})), 'JSON', {\n  stringify: function stringify(it) {\n    var args = [it];\n    var i = 1;\n    var replacer, $replacer;\n    while (arguments.length > i) args.push(arguments[i++]);\n    $replacer = replacer = args[1];\n    if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n    if (!isArray(replacer)) replacer = function (key, value) {\n      if (typeof $replacer == 'function') value = $replacer.call(this, key, value);\n      if (!isSymbol(value)) return value;\n    };\n    args[1] = replacer;\n    return _stringify.apply($JSON, args);\n  }\n});\n\n// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)\n$Symbol[PROTOTYPE][TO_PRIMITIVE] || require('./_hide')($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n// 19.4.3.5 Symbol.prototype[@@toStringTag]\nsetToStringTag($Symbol, 'Symbol');\n// 20.2.1.9 Math[@@toStringTag]\nsetToStringTag(Math, 'Math', true);\n// 24.3.3 JSON[@@toStringTag]\nsetToStringTag(global.JSON, 'JSON', true);\n","// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)\nvar $keys = require('./_object-keys-internal');\nvar hiddenKeys = require('./_enum-bug-keys').concat('length', 'prototype');\n\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n  return $keys(O, hiddenKeys);\n};\n","function _defineProperty(obj, key, value) {\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n\n  return obj;\n}\n\nmodule.exports = _defineProperty;","const preferDefault = m => (m && m.default) || m\n\nif (process.env.BUILD_STAGE === `develop`) {\n  module.exports = preferDefault(require(`./public-page-renderer-dev`))\n} else if (process.env.BUILD_STAGE === `build-javascript`) {\n  module.exports = preferDefault(require(`./public-page-renderer-prod`))\n} else {\n  module.exports = () => null\n}\n","// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function (fn, that, length) {\n  aFunction(fn);\n  if (that === undefined) return fn;\n  switch (length) {\n    case 1: return function (a) {\n      return fn.call(that, a);\n    };\n    case 2: return function (a, b) {\n      return fn.call(that, a, b);\n    };\n    case 3: return function (a, b, c) {\n      return fn.call(that, a, b, c);\n    };\n  }\n  return function (/* ...args */) {\n    return fn.apply(that, arguments);\n  };\n};\n","// 22.1.3.31 Array.prototype[@@unscopables]\nvar UNSCOPABLES = require('./_wks')('unscopables');\nvar ArrayProto = Array.prototype;\nif (ArrayProto[UNSCOPABLES] == undefined) require('./_hide')(ArrayProto, UNSCOPABLES, {});\nmodule.exports = function (key) {\n  ArrayProto[UNSCOPABLES][key] = true;\n};\n","module.exports = function (exec) {\n  try {\n    return { e: false, v: exec() };\n  } catch (e) {\n    return { e: true, v: e };\n  }\n};\n","// 7.1.15 ToLength\nvar toInteger = require('./_to-integer');\nvar min = Math.min;\nmodule.exports = function (it) {\n  return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n","// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function () {\n  return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _gatsby = require(\"gatsby\");\n\nvar _getManifestPathname = _interopRequireDefault(require(\"./get-manifest-pathname\"));\n\n/* global __MANIFEST_PLUGIN_HAS_LOCALISATION__ */\n// when we don't have localisation in our manifest, we tree shake everything away\nif (__MANIFEST_PLUGIN_HAS_LOCALISATION__) {\n  var withPrefix = _gatsby.withAssetPrefix || _gatsby.withPrefix;\n\n  exports.onRouteUpdate = function (_ref, pluginOptions) {\n    var location = _ref.location;\n    var localize = pluginOptions.localize;\n    var manifestFilename = (0, _getManifestPathname.default)(location.pathname, localize);\n    var manifestEl = document.head.querySelector(\"link[rel=\\\"manifest\\\"]\");\n\n    if (manifestEl) {\n      manifestEl.setAttribute(\"href\", withPrefix(manifestFilename));\n    }\n  };\n}","var global = require('./_global');\nvar navigator = global.navigator;\n\nmodule.exports = navigator && navigator.userAgent || '';\n","// prefer default export if available\nconst preferDefault = m => m && m.default || m\n\nexports.components = {\n  \"component---src-pages-about-js\": () => import(\"./../src/pages/about.js\" /* webpackChunkName: \"component---src-pages-about-js\" */),\n  \"component---src-pages-index-js\": () => import(\"./../src/pages/index.js\" /* webpackChunkName: \"component---src-pages-index-js\" */),\n  \"component---src-pages-news-js\": () => import(\"./../src/pages/news.js\" /* webpackChunkName: \"component---src-pages-news-js\" */),\n  \"component---src-pages-performance-js\": () => import(\"./../src/pages/performance.js\" /* webpackChunkName: \"component---src-pages-performance-js\" */)\n}\n\n","'use strict';\n\nvar anObject = require('./_an-object');\nvar toObject = require('./_to-object');\nvar toLength = require('./_to-length');\nvar toInteger = require('./_to-integer');\nvar advanceStringIndex = require('./_advance-string-index');\nvar regExpExec = require('./_regexp-exec-abstract');\nvar max = Math.max;\nvar min = Math.min;\nvar floor = Math.floor;\nvar SUBSTITUTION_SYMBOLS = /\\$([$&`']|\\d\\d?|<[^>]*>)/g;\nvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&`']|\\d\\d?)/g;\n\nvar maybeToString = function (it) {\n  return it === undefined ? it : String(it);\n};\n\n// @@replace logic\nrequire('./_fix-re-wks')('replace', 2, function (defined, REPLACE, $replace, maybeCallNative) {\n  return [\n    // `String.prototype.replace` method\n    // https://tc39.github.io/ecma262/#sec-string.prototype.replace\n    function replace(searchValue, replaceValue) {\n      var O = defined(this);\n      var fn = searchValue == undefined ? undefined : searchValue[REPLACE];\n      return fn !== undefined\n        ? fn.call(searchValue, O, replaceValue)\n        : $replace.call(String(O), searchValue, replaceValue);\n    },\n    // `RegExp.prototype[@@replace]` method\n    // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@replace\n    function (regexp, replaceValue) {\n      var res = maybeCallNative($replace, regexp, this, replaceValue);\n      if (res.done) return res.value;\n\n      var rx = anObject(regexp);\n      var S = String(this);\n      var functionalReplace = typeof replaceValue === 'function';\n      if (!functionalReplace) replaceValue = String(replaceValue);\n      var global = rx.global;\n      if (global) {\n        var fullUnicode = rx.unicode;\n        rx.lastIndex = 0;\n      }\n      var results = [];\n      while (true) {\n        var result = regExpExec(rx, S);\n        if (result === null) break;\n        results.push(result);\n        if (!global) break;\n        var matchStr = String(result[0]);\n        if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n      }\n      var accumulatedResult = '';\n      var nextSourcePosition = 0;\n      for (var i = 0; i < results.length; i++) {\n        result = results[i];\n        var matched = String(result[0]);\n        var position = max(min(toInteger(result.index), S.length), 0);\n        var captures = [];\n        // NOTE: This is equivalent to\n        //   captures = result.slice(1).map(maybeToString)\n        // but for some reason `nativeSlice.call(result, 1, result.length)` (called in\n        // the slice polyfill when slicing native arrays) \"doesn't work\" in safari 9 and\n        // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.\n        for (var j = 1; j < result.length; j++) captures.push(maybeToString(result[j]));\n        var namedCaptures = result.groups;\n        if (functionalReplace) {\n          var replacerArgs = [matched].concat(captures, position, S);\n          if (namedCaptures !== undefined) replacerArgs.push(namedCaptures);\n          var replacement = String(replaceValue.apply(undefined, replacerArgs));\n        } else {\n          replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);\n        }\n        if (position >= nextSourcePosition) {\n          accumulatedResult += S.slice(nextSourcePosition, position) + replacement;\n          nextSourcePosition = position + matched.length;\n        }\n      }\n      return accumulatedResult + S.slice(nextSourcePosition);\n    }\n  ];\n\n    // https://tc39.github.io/ecma262/#sec-getsubstitution\n  function getSubstitution(matched, str, position, captures, namedCaptures, replacement) {\n    var tailPos = position + matched.length;\n    var m = captures.length;\n    var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;\n    if (namedCaptures !== undefined) {\n      namedCaptures = toObject(namedCaptures);\n      symbols = SUBSTITUTION_SYMBOLS;\n    }\n    return $replace.call(replacement, symbols, function (match, ch) {\n      var capture;\n      switch (ch.charAt(0)) {\n        case '$': return '$';\n        case '&': return matched;\n        case '`': return str.slice(0, position);\n        case \"'\": return str.slice(tailPos);\n        case '<':\n          capture = namedCaptures[ch.slice(1, -1)];\n          break;\n        default: // \\d\\d?\n          var n = +ch;\n          if (n === 0) return match;\n          if (n > m) {\n            var f = floor(n / 10);\n            if (f === 0) return match;\n            if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1);\n            return match;\n          }\n          capture = captures[n - 1];\n      }\n      return capture === undefined ? '' : capture;\n    });\n  }\n});\n","function _extends() {\n  module.exports = _extends = Object.assign || function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n\n    return target;\n  };\n\n  return _extends.apply(this, arguments);\n}\n\nmodule.exports = _extends;","\"use strict\";\n\nexports.__esModule = true;\nexports.onRouteUpdate = void 0;\n\nvar onRouteUpdate = function onRouteUpdate(_ref, pluginOptions) {\n  var location = _ref.location;\n\n  if (pluginOptions === void 0) {\n    pluginOptions = {};\n  }\n\n  if (process.env.NODE_ENV !== \"production\" || typeof ga !== \"function\") {\n    return null;\n  }\n\n  var pathIsExcluded = location && typeof window.excludeGAPaths !== \"undefined\" && window.excludeGAPaths.some(function (rx) {\n    return rx.test(location.pathname);\n  });\n  if (pathIsExcluded) return null; // wrap inside a timeout to make sure react-helmet is done with it's changes (https://github.com/gatsbyjs/gatsby/issues/9139)\n  // reactHelmet is using requestAnimationFrame: https://github.com/nfl/react-helmet/blob/5.2.0/src/HelmetUtils.js#L296-L299\n\n  var sendPageView = function sendPageView() {\n    var pagePath = location ? location.pathname + location.search + location.hash : undefined;\n    window.ga(\"set\", \"page\", pagePath);\n    window.ga(\"send\", \"pageview\");\n  }; // Minimum delay for reactHelmet's requestAnimationFrame\n\n\n  var delay = Math.max(32, pluginOptions.pageTransitionDelay || 0);\n  setTimeout(sendPageView, delay);\n  return null;\n};\n\nexports.onRouteUpdate = onRouteUpdate;","'use strict';\n// 25.4.1.5 NewPromiseCapability(C)\nvar aFunction = require('./_a-function');\n\nfunction PromiseCapability(C) {\n  var resolve, reject;\n  this.promise = new C(function ($$resolve, $$reject) {\n    if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');\n    resolve = $$resolve;\n    reject = $$reject;\n  });\n  this.resolve = aFunction(resolve);\n  this.reject = aFunction(reject);\n}\n\nmodule.exports.f = function (C) {\n  return new PromiseCapability(C);\n};\n","\"use strict\";\n\nrequire(\"core-js/modules/es6.array.some\");\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _inDOM = _interopRequireDefault(require(\"./inDOM\"));\n\nvar vendors = ['', 'webkit', 'moz', 'o', 'ms'];\nvar cancel = 'clearTimeout';\nvar raf = fallback;\nvar compatRaf;\n\nvar getKey = function getKey(vendor, k) {\n  return vendor + (!vendor ? k : k[0].toUpperCase() + k.substr(1)) + 'AnimationFrame';\n};\n\nif (_inDOM[\"default\"]) {\n  vendors.some(function (vendor) {\n    var rafKey = getKey(vendor, 'request');\n\n    if (rafKey in window) {\n      cancel = getKey(vendor, 'cancel');\n      return raf = function raf(cb) {\n        return window[rafKey](cb);\n      };\n    }\n  });\n}\n/* https://github.com/component/raf */\n\n\nvar prev = new Date().getTime();\n\nfunction fallback(fn) {\n  var curr = new Date().getTime(),\n      ms = Math.max(0, 16 - (curr - prev)),\n      req = setTimeout(fn, ms);\n  prev = curr;\n  return req;\n}\n\ncompatRaf = function compatRaf(cb) {\n  return raf(cb);\n};\n\ncompatRaf.cancel = function (id) {\n  window[cancel] && typeof window[cancel] === 'function' && window[cancel](id);\n};\n\nvar _default = compatRaf;\nexports[\"default\"] = _default;\nmodule.exports = exports[\"default\"];","import \"core-js/modules/es6.array.for-each\";\n\n/*\n\nBased off glamor's StyleSheet, thanks Sunil ❤️\n\nhigh performance StyleSheet for css-in-js systems\n\n- uses multiple style tags behind the scenes for millions of rules\n- uses `insertRule` for appending in production for *much* faster performance\n\n// usage\n\nimport { StyleSheet } from '@emotion/sheet'\n\nlet styleSheet = new StyleSheet({ key: '', container: document.head })\n\nstyleSheet.insert('#box { border: 1px solid red; }')\n- appends a css rule into the stylesheet\n\nstyleSheet.flush()\n- empties the stylesheet of all its contents\n\n*/\n// $FlowFixMe\nfunction sheetForTag(tag) {\n  if (tag.sheet) {\n    // $FlowFixMe\n    return tag.sheet;\n  } // this weirdness brought to you by firefox\n\n  /* istanbul ignore next */\n\n\n  for (var i = 0; i < document.styleSheets.length; i++) {\n    if (document.styleSheets[i].ownerNode === tag) {\n      // $FlowFixMe\n      return document.styleSheets[i];\n    }\n  }\n}\n\nfunction createStyleElement(options) {\n  var tag = document.createElement('style');\n  tag.setAttribute('data-emotion', options.key);\n\n  if (options.nonce !== undefined) {\n    tag.setAttribute('nonce', options.nonce);\n  }\n\n  tag.appendChild(document.createTextNode(''));\n  return tag;\n}\n\nvar StyleSheet =\n/*#__PURE__*/\nfunction () {\n  function StyleSheet(options) {\n    this.isSpeedy = options.speedy === undefined ? process.env.NODE_ENV === 'production' : options.speedy;\n    this.tags = [];\n    this.ctr = 0;\n    this.nonce = options.nonce; // key is the value of the data-emotion attribute, it's used to identify different sheets\n\n    this.key = options.key;\n    this.container = options.container;\n    this.before = null;\n  }\n\n  var _proto = StyleSheet.prototype;\n\n  _proto.insert = function insert(rule) {\n    // the max length is how many rules we have per style tag, it's 65000 in speedy mode\n    // it's 1 in dev because we insert source maps that map a single rule to a location\n    // and you can only have one source map per style tag\n    if (this.ctr % (this.isSpeedy ? 65000 : 1) === 0) {\n      var _tag = createStyleElement(this);\n\n      var before;\n\n      if (this.tags.length === 0) {\n        before = this.before;\n      } else {\n        before = this.tags[this.tags.length - 1].nextSibling;\n      }\n\n      this.container.insertBefore(_tag, before);\n      this.tags.push(_tag);\n    }\n\n    var tag = this.tags[this.tags.length - 1];\n\n    if (this.isSpeedy) {\n      var sheet = sheetForTag(tag);\n\n      try {\n        // this is a really hot path\n        // we check the second character first because having \"i\"\n        // as the second character will happen less often than\n        // having \"@\" as the first character\n        var isImportRule = rule.charCodeAt(1) === 105 && rule.charCodeAt(0) === 64; // this is the ultrafast version, works across browsers\n        // the big drawback is that the css won't be editable in devtools\n\n        sheet.insertRule(rule, // we need to insert @import rules before anything else\n        // otherwise there will be an error\n        // technically this means that the @import rules will\n        // _usually_(not always since there could be multiple style tags)\n        // be the first ones in prod and generally later in dev\n        // this shouldn't really matter in the real world though\n        // @import is generally only used for font faces from google fonts and etc.\n        // so while this could be technically correct then it would be slower and larger\n        // for a tiny bit of correctness that won't matter in the real world\n        isImportRule ? 0 : sheet.cssRules.length);\n      } catch (e) {\n        if (process.env.NODE_ENV !== 'production') {\n          console.warn(\"There was a problem inserting the following rule: \\\"\" + rule + \"\\\"\", e);\n        }\n      }\n    } else {\n      tag.appendChild(document.createTextNode(rule));\n    }\n\n    this.ctr++;\n  };\n\n  _proto.flush = function flush() {\n    // $FlowFixMe\n    this.tags.forEach(function (tag) {\n      return tag.parentNode.removeChild(tag);\n    });\n    this.tags = [];\n    this.ctr = 0;\n  };\n\n  return StyleSheet;\n}();\n\nexport { StyleSheet };","import \"core-js/modules/es6.array.index-of\";\nimport \"core-js/modules/es6.regexp.split\";\nimport \"core-js/modules/es6.string.trim\";\nimport \"core-js/modules/es6.regexp.replace\";\n\nfunction stylis_min(W) {\n  function M(d, c, e, h, a) {\n    for (var m = 0, b = 0, v = 0, n = 0, q, g, x = 0, K = 0, k, u = k = q = 0, l = 0, r = 0, I = 0, t = 0, B = e.length, J = B - 1, y, f = '', p = '', F = '', G = '', C; l < B;) {\n      g = e.charCodeAt(l);\n      l === J && 0 !== b + n + v + m && (0 !== b && (g = 47 === b ? 10 : 47), n = v = m = 0, B++, J++);\n\n      if (0 === b + n + v + m) {\n        if (l === J && (0 < r && (f = f.replace(N, '')), 0 < f.trim().length)) {\n          switch (g) {\n            case 32:\n            case 9:\n            case 59:\n            case 13:\n            case 10:\n              break;\n\n            default:\n              f += e.charAt(l);\n          }\n\n          g = 59;\n        }\n\n        switch (g) {\n          case 123:\n            f = f.trim();\n            q = f.charCodeAt(0);\n            k = 1;\n\n            for (t = ++l; l < B;) {\n              switch (g = e.charCodeAt(l)) {\n                case 123:\n                  k++;\n                  break;\n\n                case 125:\n                  k--;\n                  break;\n\n                case 47:\n                  switch (g = e.charCodeAt(l + 1)) {\n                    case 42:\n                    case 47:\n                      a: {\n                        for (u = l + 1; u < J; ++u) {\n                          switch (e.charCodeAt(u)) {\n                            case 47:\n                              if (42 === g && 42 === e.charCodeAt(u - 1) && l + 2 !== u) {\n                                l = u + 1;\n                                break a;\n                              }\n\n                              break;\n\n                            case 10:\n                              if (47 === g) {\n                                l = u + 1;\n                                break a;\n                              }\n\n                          }\n                        }\n\n                        l = u;\n                      }\n\n                  }\n\n                  break;\n\n                case 91:\n                  g++;\n\n                case 40:\n                  g++;\n\n                case 34:\n                case 39:\n                  for (; l++ < J && e.charCodeAt(l) !== g;) {}\n\n              }\n\n              if (0 === k) break;\n              l++;\n            }\n\n            k = e.substring(t, l);\n            0 === q && (q = (f = f.replace(ca, '').trim()).charCodeAt(0));\n\n            switch (q) {\n              case 64:\n                0 < r && (f = f.replace(N, ''));\n                g = f.charCodeAt(1);\n\n                switch (g) {\n                  case 100:\n                  case 109:\n                  case 115:\n                  case 45:\n                    r = c;\n                    break;\n\n                  default:\n                    r = O;\n                }\n\n                k = M(c, r, k, g, a + 1);\n                t = k.length;\n                0 < A && (r = X(O, f, I), C = H(3, k, r, c, D, z, t, g, a, h), f = r.join(''), void 0 !== C && 0 === (t = (k = C.trim()).length) && (g = 0, k = ''));\n                if (0 < t) switch (g) {\n                  case 115:\n                    f = f.replace(da, ea);\n\n                  case 100:\n                  case 109:\n                  case 45:\n                    k = f + '{' + k + '}';\n                    break;\n\n                  case 107:\n                    f = f.replace(fa, '$1 $2');\n                    k = f + '{' + k + '}';\n                    k = 1 === w || 2 === w && L('@' + k, 3) ? '@-webkit-' + k + '@' + k : '@' + k;\n                    break;\n\n                  default:\n                    k = f + k, 112 === h && (k = (p += k, ''));\n                } else k = '';\n                break;\n\n              default:\n                k = M(c, X(c, f, I), k, h, a + 1);\n            }\n\n            F += k;\n            k = I = r = u = q = 0;\n            f = '';\n            g = e.charCodeAt(++l);\n            break;\n\n          case 125:\n          case 59:\n            f = (0 < r ? f.replace(N, '') : f).trim();\n            if (1 < (t = f.length)) switch (0 === u && (q = f.charCodeAt(0), 45 === q || 96 < q && 123 > q) && (t = (f = f.replace(' ', ':')).length), 0 < A && void 0 !== (C = H(1, f, c, d, D, z, p.length, h, a, h)) && 0 === (t = (f = C.trim()).length) && (f = '\\x00\\x00'), q = f.charCodeAt(0), g = f.charCodeAt(1), q) {\n              case 0:\n                break;\n\n              case 64:\n                if (105 === g || 99 === g) {\n                  G += f + e.charAt(l);\n                  break;\n                }\n\n              default:\n                58 !== f.charCodeAt(t - 1) && (p += P(f, q, g, f.charCodeAt(2)));\n            }\n            I = r = u = q = 0;\n            f = '';\n            g = e.charCodeAt(++l);\n        }\n      }\n\n      switch (g) {\n        case 13:\n        case 10:\n          47 === b ? b = 0 : 0 === 1 + q && 107 !== h && 0 < f.length && (r = 1, f += '\\x00');\n          0 < A * Y && H(0, f, c, d, D, z, p.length, h, a, h);\n          z = 1;\n          D++;\n          break;\n\n        case 59:\n        case 125:\n          if (0 === b + n + v + m) {\n            z++;\n            break;\n          }\n\n        default:\n          z++;\n          y = e.charAt(l);\n\n          switch (g) {\n            case 9:\n            case 32:\n              if (0 === n + m + b) switch (x) {\n                case 44:\n                case 58:\n                case 9:\n                case 32:\n                  y = '';\n                  break;\n\n                default:\n                  32 !== g && (y = ' ');\n              }\n              break;\n\n            case 0:\n              y = '\\\\0';\n              break;\n\n            case 12:\n              y = '\\\\f';\n              break;\n\n            case 11:\n              y = '\\\\v';\n              break;\n\n            case 38:\n              0 === n + b + m && (r = I = 1, y = '\\f' + y);\n              break;\n\n            case 108:\n              if (0 === n + b + m + E && 0 < u) switch (l - u) {\n                case 2:\n                  112 === x && 58 === e.charCodeAt(l - 3) && (E = x);\n\n                case 8:\n                  111 === K && (E = K);\n              }\n              break;\n\n            case 58:\n              0 === n + b + m && (u = l);\n              break;\n\n            case 44:\n              0 === b + v + n + m && (r = 1, y += '\\r');\n              break;\n\n            case 34:\n            case 39:\n              0 === b && (n = n === g ? 0 : 0 === n ? g : n);\n              break;\n\n            case 91:\n              0 === n + b + v && m++;\n              break;\n\n            case 93:\n              0 === n + b + v && m--;\n              break;\n\n            case 41:\n              0 === n + b + m && v--;\n              break;\n\n            case 40:\n              if (0 === n + b + m) {\n                if (0 === q) switch (2 * x + 3 * K) {\n                  case 533:\n                    break;\n\n                  default:\n                    q = 1;\n                }\n                v++;\n              }\n\n              break;\n\n            case 64:\n              0 === b + v + n + m + u + k && (k = 1);\n              break;\n\n            case 42:\n            case 47:\n              if (!(0 < n + m + v)) switch (b) {\n                case 0:\n                  switch (2 * g + 3 * e.charCodeAt(l + 1)) {\n                    case 235:\n                      b = 47;\n                      break;\n\n                    case 220:\n                      t = l, b = 42;\n                  }\n\n                  break;\n\n                case 42:\n                  47 === g && 42 === x && t + 2 !== l && (33 === e.charCodeAt(t + 2) && (p += e.substring(t, l + 1)), y = '', b = 0);\n              }\n          }\n\n          0 === b && (f += y);\n      }\n\n      K = x;\n      x = g;\n      l++;\n    }\n\n    t = p.length;\n\n    if (0 < t) {\n      r = c;\n      if (0 < A && (C = H(2, p, r, d, D, z, t, h, a, h), void 0 !== C && 0 === (p = C).length)) return G + p + F;\n      p = r.join(',') + '{' + p + '}';\n\n      if (0 !== w * E) {\n        2 !== w || L(p, 2) || (E = 0);\n\n        switch (E) {\n          case 111:\n            p = p.replace(ha, ':-moz-$1') + p;\n            break;\n\n          case 112:\n            p = p.replace(Q, '::-webkit-input-$1') + p.replace(Q, '::-moz-$1') + p.replace(Q, ':-ms-input-$1') + p;\n        }\n\n        E = 0;\n      }\n    }\n\n    return G + p + F;\n  }\n\n  function X(d, c, e) {\n    var h = c.trim().split(ia);\n    c = h;\n    var a = h.length,\n        m = d.length;\n\n    switch (m) {\n      case 0:\n      case 1:\n        var b = 0;\n\n        for (d = 0 === m ? '' : d[0] + ' '; b < a; ++b) {\n          c[b] = Z(d, c[b], e).trim();\n        }\n\n        break;\n\n      default:\n        var v = b = 0;\n\n        for (c = []; b < a; ++b) {\n          for (var n = 0; n < m; ++n) {\n            c[v++] = Z(d[n] + ' ', h[b], e).trim();\n          }\n        }\n\n    }\n\n    return c;\n  }\n\n  function Z(d, c, e) {\n    var h = c.charCodeAt(0);\n    33 > h && (h = (c = c.trim()).charCodeAt(0));\n\n    switch (h) {\n      case 38:\n        return c.replace(F, '$1' + d.trim());\n\n      case 58:\n        return d.trim() + c.replace(F, '$1' + d.trim());\n\n      default:\n        if (0 < 1 * e && 0 < c.indexOf('\\f')) return c.replace(F, (58 === d.charCodeAt(0) ? '' : '$1') + d.trim());\n    }\n\n    return d + c;\n  }\n\n  function P(d, c, e, h) {\n    var a = d + ';',\n        m = 2 * c + 3 * e + 4 * h;\n\n    if (944 === m) {\n      d = a.indexOf(':', 9) + 1;\n      var b = a.substring(d, a.length - 1).trim();\n      b = a.substring(0, d).trim() + b + ';';\n      return 1 === w || 2 === w && L(b, 1) ? '-webkit-' + b + b : b;\n    }\n\n    if (0 === w || 2 === w && !L(a, 1)) return a;\n\n    switch (m) {\n      case 1015:\n        return 97 === a.charCodeAt(10) ? '-webkit-' + a + a : a;\n\n      case 951:\n        return 116 === a.charCodeAt(3) ? '-webkit-' + a + a : a;\n\n      case 963:\n        return 110 === a.charCodeAt(5) ? '-webkit-' + a + a : a;\n\n      case 1009:\n        if (100 !== a.charCodeAt(4)) break;\n\n      case 969:\n      case 942:\n        return '-webkit-' + a + a;\n\n      case 978:\n        return '-webkit-' + a + '-moz-' + a + a;\n\n      case 1019:\n      case 983:\n        return '-webkit-' + a + '-moz-' + a + '-ms-' + a + a;\n\n      case 883:\n        if (45 === a.charCodeAt(8)) return '-webkit-' + a + a;\n        if (0 < a.indexOf('image-set(', 11)) return a.replace(ja, '$1-webkit-$2') + a;\n        break;\n\n      case 932:\n        if (45 === a.charCodeAt(4)) switch (a.charCodeAt(5)) {\n          case 103:\n            return '-webkit-box-' + a.replace('-grow', '') + '-webkit-' + a + '-ms-' + a.replace('grow', 'positive') + a;\n\n          case 115:\n            return '-webkit-' + a + '-ms-' + a.replace('shrink', 'negative') + a;\n\n          case 98:\n            return '-webkit-' + a + '-ms-' + a.replace('basis', 'preferred-size') + a;\n        }\n        return '-webkit-' + a + '-ms-' + a + a;\n\n      case 964:\n        return '-webkit-' + a + '-ms-flex-' + a + a;\n\n      case 1023:\n        if (99 !== a.charCodeAt(8)) break;\n        b = a.substring(a.indexOf(':', 15)).replace('flex-', '').replace('space-between', 'justify');\n        return '-webkit-box-pack' + b + '-webkit-' + a + '-ms-flex-pack' + b + a;\n\n      case 1005:\n        return ka.test(a) ? a.replace(aa, ':-webkit-') + a.replace(aa, ':-moz-') + a : a;\n\n      case 1e3:\n        b = a.substring(13).trim();\n        c = b.indexOf('-') + 1;\n\n        switch (b.charCodeAt(0) + b.charCodeAt(c)) {\n          case 226:\n            b = a.replace(G, 'tb');\n            break;\n\n          case 232:\n            b = a.replace(G, 'tb-rl');\n            break;\n\n          case 220:\n            b = a.replace(G, 'lr');\n            break;\n\n          default:\n            return a;\n        }\n\n        return '-webkit-' + a + '-ms-' + b + a;\n\n      case 1017:\n        if (-1 === a.indexOf('sticky', 9)) break;\n\n      case 975:\n        c = (a = d).length - 10;\n        b = (33 === a.charCodeAt(c) ? a.substring(0, c) : a).substring(d.indexOf(':', 7) + 1).trim();\n\n        switch (m = b.charCodeAt(0) + (b.charCodeAt(7) | 0)) {\n          case 203:\n            if (111 > b.charCodeAt(8)) break;\n\n          case 115:\n            a = a.replace(b, '-webkit-' + b) + ';' + a;\n            break;\n\n          case 207:\n          case 102:\n            a = a.replace(b, '-webkit-' + (102 < m ? 'inline-' : '') + 'box') + ';' + a.replace(b, '-webkit-' + b) + ';' + a.replace(b, '-ms-' + b + 'box') + ';' + a;\n        }\n\n        return a + ';';\n\n      case 938:\n        if (45 === a.charCodeAt(5)) switch (a.charCodeAt(6)) {\n          case 105:\n            return b = a.replace('-items', ''), '-webkit-' + a + '-webkit-box-' + b + '-ms-flex-' + b + a;\n\n          case 115:\n            return '-webkit-' + a + '-ms-flex-item-' + a.replace(ba, '') + a;\n\n          default:\n            return '-webkit-' + a + '-ms-flex-line-pack' + a.replace('align-content', '').replace(ba, '') + a;\n        }\n        break;\n\n      case 973:\n      case 989:\n        if (45 !== a.charCodeAt(3) || 122 === a.charCodeAt(4)) break;\n\n      case 931:\n      case 953:\n        if (!0 === la.test(d)) return 115 === (b = d.substring(d.indexOf(':') + 1)).charCodeAt(0) ? P(d.replace('stretch', 'fill-available'), c, e, h).replace(':fill-available', ':stretch') : a.replace(b, '-webkit-' + b) + a.replace(b, '-moz-' + b.replace('fill-', '')) + a;\n        break;\n\n      case 962:\n        if (a = '-webkit-' + a + (102 === a.charCodeAt(5) ? '-ms-' + a : '') + a, 211 === e + h && 105 === a.charCodeAt(13) && 0 < a.indexOf('transform', 10)) return a.substring(0, a.indexOf(';', 27) + 1).replace(ma, '$1-webkit-$2') + a;\n    }\n\n    return a;\n  }\n\n  function L(d, c) {\n    var e = d.indexOf(1 === c ? ':' : '{'),\n        h = d.substring(0, 3 !== c ? e : 10);\n    e = d.substring(e + 1, d.length - 1);\n    return R(2 !== c ? h : h.replace(na, '$1'), e, c);\n  }\n\n  function ea(d, c) {\n    var e = P(c, c.charCodeAt(0), c.charCodeAt(1), c.charCodeAt(2));\n    return e !== c + ';' ? e.replace(oa, ' or ($1)').substring(4) : '(' + c + ')';\n  }\n\n  function H(d, c, e, h, a, m, b, v, n, q) {\n    for (var g = 0, x = c, w; g < A; ++g) {\n      switch (w = S[g].call(B, d, x, e, h, a, m, b, v, n, q)) {\n        case void 0:\n        case !1:\n        case !0:\n        case null:\n          break;\n\n        default:\n          x = w;\n      }\n    }\n\n    if (x !== c) return x;\n  }\n\n  function T(d) {\n    switch (d) {\n      case void 0:\n      case null:\n        A = S.length = 0;\n        break;\n\n      default:\n        if ('function' === typeof d) S[A++] = d;else if ('object' === typeof d) for (var c = 0, e = d.length; c < e; ++c) {\n          T(d[c]);\n        } else Y = !!d | 0;\n    }\n\n    return T;\n  }\n\n  function U(d) {\n    d = d.prefix;\n    void 0 !== d && (R = null, d ? 'function' !== typeof d ? w = 1 : (w = 2, R = d) : w = 0);\n    return U;\n  }\n\n  function B(d, c) {\n    var e = d;\n    33 > e.charCodeAt(0) && (e = e.trim());\n    V = e;\n    e = [V];\n\n    if (0 < A) {\n      var h = H(-1, c, e, e, D, z, 0, 0, 0, 0);\n      void 0 !== h && 'string' === typeof h && (c = h);\n    }\n\n    var a = M(O, e, c, 0, 0);\n    0 < A && (h = H(-2, a, e, e, D, z, a.length, 0, 0, 0), void 0 !== h && (a = h));\n    V = '';\n    E = 0;\n    z = D = 1;\n    return a;\n  }\n\n  var ca = /^\\0+/g,\n      N = /[\\0\\r\\f]/g,\n      aa = /: */g,\n      ka = /zoo|gra/,\n      ma = /([,: ])(transform)/g,\n      ia = /,\\r+?/g,\n      F = /([\\t\\r\\n ])*\\f?&/g,\n      fa = /@(k\\w+)\\s*(\\S*)\\s*/,\n      Q = /::(place)/g,\n      ha = /:(read-only)/g,\n      G = /[svh]\\w+-[tblr]{2}/,\n      da = /\\(\\s*(.*)\\s*\\)/g,\n      oa = /([\\s\\S]*?);/g,\n      ba = /-self|flex-/g,\n      na = /[^]*?(:[rp][el]a[\\w-]+)[^]*/,\n      la = /stretch|:\\s*\\w+\\-(?:conte|avail)/,\n      ja = /([^-])(image-set\\()/,\n      z = 1,\n      D = 1,\n      E = 0,\n      w = 1,\n      O = [],\n      S = [],\n      A = 0,\n      R = null,\n      Y = 0,\n      V = '';\n  B.use = T;\n  B.set = U;\n  void 0 !== W && U(W);\n  return B;\n}\n\nexport default stylis_min;","import \"core-js/modules/es6.regexp.constructor\";\nimport \"core-js/modules/es6.regexp.match\";\nimport \"core-js/modules/es6.array.map\";\nimport \"core-js/modules/es6.function.name\";\nimport \"core-js/modules/es6.regexp.split\";\nimport \"core-js/modules/es6.array.for-each\";\nimport { StyleSheet } from '@emotion/sheet';\nimport Stylis from '@emotion/stylis';\nimport '@emotion/weak-memoize'; // https://github.com/thysultan/stylis.js/tree/master/plugins/rule-sheet\n// inlined to avoid umd wrapper and peerDep warnings/installing stylis\n// since we use stylis after closure compiler\n\nvar delimiter = '/*|*/';\nvar needle = delimiter + '}';\n\nfunction toSheet(block) {\n  if (block) {\n    Sheet.current.insert(block + '}');\n  }\n}\n\nvar Sheet = {\n  current: null\n};\n\nvar ruleSheet = function ruleSheet(context, content, selectors, parents, line, column, length, ns, depth, at) {\n  switch (context) {\n    // property\n    case 1:\n      {\n        switch (content.charCodeAt(0)) {\n          case 64:\n            {\n              // @import\n              Sheet.current.insert(content + ';');\n              return '';\n            }\n          // charcode for l\n\n          case 108:\n            {\n              // charcode for b\n              // this ignores label\n              if (content.charCodeAt(2) === 98) {\n                return '';\n              }\n            }\n        }\n\n        break;\n      }\n    // selector\n\n    case 2:\n      {\n        if (ns === 0) return content + delimiter;\n        break;\n      }\n    // at-rule\n\n    case 3:\n      {\n        switch (ns) {\n          // @font-face, @page\n          case 102:\n          case 112:\n            {\n              Sheet.current.insert(selectors[0] + content);\n              return '';\n            }\n\n          default:\n            {\n              return content + (at === 0 ? delimiter : '');\n            }\n        }\n      }\n\n    case -2:\n      {\n        content.split(needle).forEach(toSheet);\n      }\n  }\n};\n\nvar createCache = function createCache(options) {\n  if (options === undefined) options = {};\n  var key = options.key || 'css';\n  var stylisOptions;\n\n  if (options.prefix !== undefined) {\n    stylisOptions = {\n      prefix: options.prefix\n    };\n  }\n\n  var stylis = new Stylis(stylisOptions);\n\n  if (process.env.NODE_ENV !== 'production') {\n    // $FlowFixMe\n    if (/[^a-z-]/.test(key)) {\n      throw new Error(\"Emotion key must only contain lower case alphabetical characters and - but \\\"\" + key + \"\\\" was passed\");\n    }\n  }\n\n  var inserted = {}; // $FlowFixMe\n\n  var container;\n  {\n    container = options.container || document.head;\n    var nodes = document.querySelectorAll(\"style[data-emotion-\" + key + \"]\");\n    Array.prototype.forEach.call(nodes, function (node) {\n      var attrib = node.getAttribute(\"data-emotion-\" + key); // $FlowFixMe\n\n      attrib.split(' ').forEach(function (id) {\n        inserted[id] = true;\n      });\n\n      if (node.parentNode !== container) {\n        container.appendChild(node);\n      }\n    });\n  }\n\n  var _insert;\n\n  {\n    stylis.use(options.stylisPlugins)(ruleSheet);\n\n    _insert = function insert(selector, serialized, sheet, shouldCache) {\n      var name = serialized.name;\n      Sheet.current = sheet;\n\n      if (process.env.NODE_ENV !== 'production' && serialized.map !== undefined) {\n        var map = serialized.map;\n        Sheet.current = {\n          insert: function insert(rule) {\n            sheet.insert(rule + map);\n          }\n        };\n      }\n\n      stylis(selector, serialized.styles);\n\n      if (shouldCache) {\n        cache.inserted[name] = true;\n      }\n    };\n  }\n\n  if (process.env.NODE_ENV !== 'production') {\n    // https://esbench.com/bench/5bf7371a4cd7e6009ef61d0a\n    var commentStart = /\\/\\*/g;\n    var commentEnd = /\\*\\//g;\n    stylis.use(function (context, content) {\n      switch (context) {\n        case -1:\n          {\n            while (commentStart.test(content)) {\n              commentEnd.lastIndex = commentStart.lastIndex;\n\n              if (commentEnd.test(content)) {\n                commentStart.lastIndex = commentEnd.lastIndex;\n                continue;\n              }\n\n              throw new Error('Your styles have an unterminated comment (\"/*\" without corresponding \"*/\").');\n            }\n\n            commentStart.lastIndex = 0;\n            break;\n          }\n      }\n    });\n    stylis.use(function (context, content, selectors) {\n      switch (context) {\n        case -1:\n          {\n            var flag = 'emotion-disable-server-rendering-unsafe-selector-warning-please-do-not-use-this-the-warning-exists-for-a-reason';\n            var unsafePseudoClasses = content.match(/(:first|:nth|:nth-last)-child/g);\n\n            if (unsafePseudoClasses && cache.compat !== true) {\n              unsafePseudoClasses.forEach(function (unsafePseudoClass) {\n                var ignoreRegExp = new RegExp(unsafePseudoClass + \".*\\\\/\\\\* \" + flag + \" \\\\*\\\\/\");\n                var ignore = ignoreRegExp.test(content);\n\n                if (unsafePseudoClass && !ignore) {\n                  console.error(\"The pseudo class \\\"\" + unsafePseudoClass + \"\\\" is potentially unsafe when doing server-side rendering. Try changing it to \\\"\" + unsafePseudoClass.split('-child')[0] + \"-of-type\\\".\");\n                }\n              });\n            }\n\n            break;\n          }\n      }\n    });\n  }\n\n  var cache = {\n    key: key,\n    sheet: new StyleSheet({\n      key: key,\n      container: container,\n      nonce: options.nonce,\n      speedy: options.speedy\n    }),\n    nonce: options.nonce,\n    inserted: inserted,\n    registered: {},\n    insert: _insert\n  };\n  return cache;\n};\n\nexport default createCache;","import \"core-js/modules/es6.array.is-array\";\nimport \"core-js/modules/es6.regexp.match\";\nimport \"core-js/modules/es6.function.name\";\nimport \"core-js/modules/es6.array.index-of\";\nimport \"core-js/modules/es6.regexp.replace\";\nimport _inheritsLoose from '@babel/runtime/helpers/inheritsLoose';\nimport { createContext, forwardRef, createElement, Component } from 'react';\nimport createCache from '@emotion/cache';\nimport { getRegisteredStyles, insertStyles } from '@emotion/utils';\nimport { serializeStyles } from '@emotion/serialize';\nimport { StyleSheet } from '@emotion/sheet';\nimport css from '@emotion/css';\nexport { default as css } from '@emotion/css';\nvar EmotionCacheContext = createContext( // we're doing this to avoid preconstruct's dead code elimination in this one case\n// because this module is primarily intended for the browser and node\n// but it's also required in react native and similar environments sometimes\n// and we could have a special build just for that\n// but this is much easier and the native packages\n// might use a different theme context in the future anyway\ntypeof HTMLElement !== 'undefined' ? createCache() : null);\nvar ThemeContext = createContext({});\nvar CacheProvider = EmotionCacheContext.Provider;\n\nvar withEmotionCache = function withEmotionCache(func) {\n  var render = function render(props, ref) {\n    return createElement(EmotionCacheContext.Consumer, null, function (cache) {\n      return func(props, cache, ref);\n    });\n  }; // $FlowFixMe\n\n\n  return forwardRef(render);\n}; // thus we only need to replace what is a valid character for JS, but not for CSS\n\n\nvar sanitizeIdentifier = function sanitizeIdentifier(identifier) {\n  return identifier.replace(/\\$/g, '-');\n};\n\nvar typePropName = '__EMOTION_TYPE_PLEASE_DO_NOT_USE__';\nvar labelPropName = '__EMOTION_LABEL_PLEASE_DO_NOT_USE__';\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar render = function render(cache, props, theme, ref) {\n  var cssProp = theme === null ? props.css : props.css(theme); // so that using `css` from `emotion` and passing the result to the css prop works\n  // not passing the registered cache to serializeStyles because it would\n  // make certain babel optimisations not possible\n\n  if (typeof cssProp === 'string' && cache.registered[cssProp] !== undefined) {\n    cssProp = cache.registered[cssProp];\n  }\n\n  var type = props[typePropName];\n  var registeredStyles = [cssProp];\n  var className = '';\n\n  if (typeof props.className === 'string') {\n    className = getRegisteredStyles(cache.registered, registeredStyles, props.className);\n  } else if (props.className != null) {\n    className = props.className + \" \";\n  }\n\n  var serialized = serializeStyles(registeredStyles);\n\n  if (process.env.NODE_ENV !== 'production' && serialized.name.indexOf('-') === -1) {\n    var labelFromStack = props[labelPropName];\n\n    if (labelFromStack) {\n      serialized = serializeStyles([serialized, 'label:' + labelFromStack + ';']);\n    }\n  }\n\n  var rules = insertStyles(cache, serialized, typeof type === 'string');\n  className += cache.key + \"-\" + serialized.name;\n  var newProps = {};\n\n  for (var key in props) {\n    if (hasOwnProperty.call(props, key) && key !== 'css' && key !== typePropName && (process.env.NODE_ENV === 'production' || key !== labelPropName)) {\n      newProps[key] = props[key];\n    }\n  }\n\n  newProps.ref = ref;\n  newProps.className = className;\n  var ele = createElement(type, newProps);\n  return ele;\n};\n\nvar Emotion =\n/* #__PURE__ */\nwithEmotionCache(function (props, cache, ref) {\n  // use Context.read for the theme when it's stable\n  if (typeof props.css === 'function') {\n    return createElement(ThemeContext.Consumer, null, function (theme) {\n      return render(cache, props, theme, ref);\n    });\n  }\n\n  return render(cache, props, null, ref);\n});\n\nif (process.env.NODE_ENV !== 'production') {\n  Emotion.displayName = 'EmotionCssPropInternal';\n} // $FlowFixMe\n\n\nvar jsx = function jsx(type, props) {\n  var args = arguments;\n\n  if (props == null || !hasOwnProperty.call(props, 'css')) {\n    // $FlowFixMe\n    return createElement.apply(undefined, args);\n  }\n\n  if (process.env.NODE_ENV !== 'production' && typeof props.css === 'string' && // check if there is a css declaration\n  props.css.indexOf(':') !== -1) {\n    throw new Error(\"Strings are not allowed as css prop values, please wrap it in a css template literal from '@emotion/css' like this: css`\" + props.css + \"`\");\n  }\n\n  var argsLength = args.length;\n  var createElementArgArray = new Array(argsLength);\n  createElementArgArray[0] = Emotion;\n  var newProps = {};\n\n  for (var key in props) {\n    if (hasOwnProperty.call(props, key)) {\n      newProps[key] = props[key];\n    }\n  }\n\n  newProps[typePropName] = type;\n\n  if (process.env.NODE_ENV !== 'production') {\n    var error = new Error();\n\n    if (error.stack) {\n      // chrome\n      var match = error.stack.match(/at (?:Object\\.|)jsx.*\\n\\s+at ([A-Z][A-Za-z$]+) /);\n\n      if (!match) {\n        // safari and firefox\n        match = error.stack.match(/^.*\\n([A-Z][A-Za-z$]+)@/);\n      }\n\n      if (match) {\n        newProps[labelPropName] = sanitizeIdentifier(match[1]);\n      }\n    }\n  }\n\n  createElementArgArray[1] = newProps;\n\n  for (var i = 2; i < argsLength; i++) {\n    createElementArgArray[i] = args[i];\n  } // $FlowFixMe\n\n\n  return createElement.apply(null, createElementArgArray);\n};\n\nvar warnedAboutCssPropForGlobal = false;\nvar Global =\n/* #__PURE__ */\nwithEmotionCache(function (props, cache) {\n  if (process.env.NODE_ENV !== 'production' && !warnedAboutCssPropForGlobal && ( // check for className as well since the user is\n  // probably using the custom createElement which\n  // means it will be turned into a className prop\n  // $FlowFixMe I don't really want to add it to the type since it shouldn't be used\n  props.className || props.css)) {\n    console.error(\"It looks like you're using the css prop on Global, did you mean to use the styles prop instead?\");\n    warnedAboutCssPropForGlobal = true;\n  }\n\n  var styles = props.styles;\n\n  if (typeof styles === 'function') {\n    return createElement(ThemeContext.Consumer, null, function (theme) {\n      var serialized = serializeStyles([styles(theme)]);\n      return createElement(InnerGlobal, {\n        serialized: serialized,\n        cache: cache\n      });\n    });\n  }\n\n  var serialized = serializeStyles([styles]);\n  return createElement(InnerGlobal, {\n    serialized: serialized,\n    cache: cache\n  });\n}); // maintain place over rerenders.\n// initial render from browser, insertBefore context.sheet.tags[0] or if a style hasn't been inserted there yet, appendChild\n// initial client-side render from SSR, use place of hydrating tag\n\nvar InnerGlobal =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(InnerGlobal, _React$Component);\n\n  function InnerGlobal(props, context, updater) {\n    return _React$Component.call(this, props, context, updater) || this;\n  }\n\n  var _proto = InnerGlobal.prototype;\n\n  _proto.componentDidMount = function componentDidMount() {\n    this.sheet = new StyleSheet({\n      key: this.props.cache.key + \"-global\",\n      nonce: this.props.cache.sheet.nonce,\n      container: this.props.cache.sheet.container\n    }); // $FlowFixMe\n\n    var node = document.querySelector(\"style[data-emotion-\" + this.props.cache.key + \"=\\\"\" + this.props.serialized.name + \"\\\"]\");\n\n    if (node !== null) {\n      this.sheet.tags.push(node);\n    }\n\n    if (this.props.cache.sheet.tags.length) {\n      this.sheet.before = this.props.cache.sheet.tags[0];\n    }\n\n    this.insertStyles();\n  };\n\n  _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n    if (prevProps.serialized.name !== this.props.serialized.name) {\n      this.insertStyles();\n    }\n  };\n\n  _proto.insertStyles = function insertStyles$1() {\n    if (this.props.serialized.next !== undefined) {\n      // insert keyframes\n      insertStyles(this.props.cache, this.props.serialized.next, true);\n    }\n\n    if (this.sheet.tags.length) {\n      // if this doesn't exist then it will be null so the style element will be appended\n      var element = this.sheet.tags[this.sheet.tags.length - 1].nextElementSibling;\n      this.sheet.before = element;\n      this.sheet.flush();\n    }\n\n    this.props.cache.insert(\"\", this.props.serialized, this.sheet, false);\n  };\n\n  _proto.componentWillUnmount = function componentWillUnmount() {\n    this.sheet.flush();\n  };\n\n  _proto.render = function render() {\n    return null;\n  };\n\n  return InnerGlobal;\n}(Component);\n\nvar keyframes = function keyframes() {\n  var insertable = css.apply(void 0, arguments);\n  var name = \"animation-\" + insertable.name; // $FlowFixMe\n\n  return {\n    name: name,\n    styles: \"@keyframes \" + name + \"{\" + insertable.styles + \"}\",\n    anim: 1,\n    toString: function toString() {\n      return \"_EMO_\" + this.name + \"_\" + this.styles + \"_EMO_\";\n    }\n  };\n};\n\nvar classnames = function classnames(args) {\n  var len = args.length;\n  var i = 0;\n  var cls = '';\n\n  for (; i < len; i++) {\n    var arg = args[i];\n    if (arg == null) continue;\n    var toAdd = void 0;\n\n    switch (typeof arg) {\n      case 'boolean':\n        break;\n\n      case 'object':\n        {\n          if (Array.isArray(arg)) {\n            toAdd = classnames(arg);\n          } else {\n            toAdd = '';\n\n            for (var k in arg) {\n              if (arg[k] && k) {\n                toAdd && (toAdd += ' ');\n                toAdd += k;\n              }\n            }\n          }\n\n          break;\n        }\n\n      default:\n        {\n          toAdd = arg;\n        }\n    }\n\n    if (toAdd) {\n      cls && (cls += ' ');\n      cls += toAdd;\n    }\n  }\n\n  return cls;\n};\n\nfunction merge(registered, css, className) {\n  var registeredStyles = [];\n  var rawClassName = getRegisteredStyles(registered, registeredStyles, className);\n\n  if (registeredStyles.length < 2) {\n    return className;\n  }\n\n  return rawClassName + css(registeredStyles);\n}\n\nvar ClassNames = withEmotionCache(function (props, context) {\n  return createElement(ThemeContext.Consumer, null, function (theme) {\n    var hasRendered = false;\n\n    var css = function css() {\n      if (hasRendered && process.env.NODE_ENV !== 'production') {\n        throw new Error('css can only be used during render');\n      }\n\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n\n      var serialized = serializeStyles(args, context.registered);\n      {\n        insertStyles(context, serialized, false);\n      }\n      return context.key + \"-\" + serialized.name;\n    };\n\n    var cx = function cx() {\n      if (hasRendered && process.env.NODE_ENV !== 'production') {\n        throw new Error('cx can only be used during render');\n      }\n\n      for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n        args[_key2] = arguments[_key2];\n      }\n\n      return merge(context.registered, css, classnames(args));\n    };\n\n    var content = {\n      css: css,\n      cx: cx,\n      theme: theme\n    };\n    var ele = props.children(content);\n    hasRendered = true;\n    return ele;\n  });\n});\nexport { CacheProvider, ClassNames, Global, ThemeContext, jsx, keyframes, withEmotionCache };","var $export = require('./_export');\nvar defined = require('./_defined');\nvar fails = require('./_fails');\nvar spaces = require('./_string-ws');\nvar space = '[' + spaces + ']';\nvar non = '\\u200b\\u0085';\nvar ltrim = RegExp('^' + space + space + '*');\nvar rtrim = RegExp(space + space + '*$');\n\nvar exporter = function (KEY, exec, ALIAS) {\n  var exp = {};\n  var FORCE = fails(function () {\n    return !!spaces[KEY]() || non[KEY]() != non;\n  });\n  var fn = exp[KEY] = FORCE ? exec(trim) : spaces[KEY];\n  if (ALIAS) exp[ALIAS] = fn;\n  $export($export.P + $export.F * FORCE, 'String', exp);\n};\n\n// 1 -> String#trimLeft\n// 2 -> String#trimRight\n// 3 -> String#trim\nvar trim = exporter.trim = function (string, TYPE) {\n  string = String(defined(string));\n  if (TYPE & 1) string = string.replace(ltrim, '');\n  if (TYPE & 2) string = string.replace(rtrim, '');\n  return string;\n};\n\nmodule.exports = exporter;\n","// 7.2.8 IsRegExp(argument)\nvar isObject = require('./_is-object');\nvar cof = require('./_cof');\nvar MATCH = require('./_wks')('match');\nmodule.exports = function (it) {\n  var isRegExp;\n  return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : cof(it) == 'RegExp');\n};\n","require('./_wks-define')('asyncIterator');\n","var $iterators = require('./es6.array.iterator');\nvar getKeys = require('./_object-keys');\nvar redefine = require('./_redefine');\nvar global = require('./_global');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar wks = require('./_wks');\nvar ITERATOR = wks('iterator');\nvar TO_STRING_TAG = wks('toStringTag');\nvar ArrayValues = Iterators.Array;\n\nvar DOMIterables = {\n  CSSRuleList: true, // TODO: Not spec compliant, should be false.\n  CSSStyleDeclaration: false,\n  CSSValueList: false,\n  ClientRectList: false,\n  DOMRectList: false,\n  DOMStringList: false,\n  DOMTokenList: true,\n  DataTransferItemList: false,\n  FileList: false,\n  HTMLAllCollection: false,\n  HTMLCollection: false,\n  HTMLFormElement: false,\n  HTMLSelectElement: false,\n  MediaList: true, // TODO: Not spec compliant, should be false.\n  MimeTypeArray: false,\n  NamedNodeMap: false,\n  NodeList: true,\n  PaintRequestList: false,\n  Plugin: false,\n  PluginArray: false,\n  SVGLengthList: false,\n  SVGNumberList: false,\n  SVGPathSegList: false,\n  SVGPointList: false,\n  SVGStringList: false,\n  SVGTransformList: false,\n  SourceBufferList: false,\n  StyleSheetList: true, // TODO: Not spec compliant, should be false.\n  TextTrackCueList: false,\n  TextTrackList: false,\n  TouchList: false\n};\n\nfor (var collections = getKeys(DOMIterables), i = 0; i < collections.length; i++) {\n  var NAME = collections[i];\n  var explicit = DOMIterables[NAME];\n  var Collection = global[NAME];\n  var proto = Collection && Collection.prototype;\n  var key;\n  if (proto) {\n    if (!proto[ITERATOR]) hide(proto, ITERATOR, ArrayValues);\n    if (!proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n    Iterators[NAME] = ArrayValues;\n    if (explicit) for (key in $iterators) if (!proto[key]) redefine(proto, key, $iterators[key], true);\n  }\n}\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _inDOM = _interopRequireDefault(require(\"../util/inDOM\"));\n\nvar on = function on() {};\n\nif (_inDOM[\"default\"]) {\n  on = function () {\n    if (document.addEventListener) return function (node, eventName, handler, capture) {\n      return node.addEventListener(eventName, handler, capture || false);\n    };else if (document.attachEvent) return function (node, eventName, handler) {\n      return node.attachEvent('on' + eventName, function (e) {\n        e = e || window.event;\n        e.target = e.target || e.srcElement;\n        e.currentTarget = node;\n        handler.call(node, e);\n      });\n    };\n  }();\n}\n\nvar _default = on;\nexports[\"default\"] = _default;\nmodule.exports = exports[\"default\"];","// 21.1.3.6 String.prototype.endsWith(searchString [, endPosition])\n'use strict';\nvar $export = require('./_export');\nvar toLength = require('./_to-length');\nvar context = require('./_string-context');\nvar ENDS_WITH = 'endsWith';\nvar $endsWith = ''[ENDS_WITH];\n\n$export($export.P + $export.F * require('./_fails-is-regexp')(ENDS_WITH), 'String', {\n  endsWith: function endsWith(searchString /* , endPosition = @length */) {\n    var that = context(this, searchString, ENDS_WITH);\n    var endPosition = arguments.length > 1 ? arguments[1] : undefined;\n    var len = toLength(that.length);\n    var end = endPosition === undefined ? len : Math.min(toLength(endPosition), len);\n    var search = String(searchString);\n    return $endsWith\n      ? $endsWith.call(that, search, end)\n      : that.slice(end - search.length, end) === search;\n  }\n});\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\n\nimport InternalPageRenderer from \"./page-renderer\"\n\nconst ProdPageRenderer = ({ location, pageResources }) => {\n  if (!pageResources) {\n    return null\n  }\n  return React.createElement(InternalPageRenderer, {\n    location,\n    pageResources,\n    ...pageResources.json,\n  })\n}\n\nProdPageRenderer.propTypes = {\n  location: PropTypes.shape({\n    pathname: PropTypes.string.isRequired,\n  }).isRequired,\n}\n\nexport default ProdPageRenderer\n","var isObject = require('./_is-object');\nmodule.exports = function (it, TYPE) {\n  if (!isObject(it) || it._t !== TYPE) throw TypeError('Incompatible receiver, ' + TYPE + ' required!');\n  return it;\n};\n","'use strict';\nvar regexpExec = require('./_regexp-exec');\nrequire('./_export')({\n  target: 'RegExp',\n  proto: true,\n  forced: regexpExec !== /./.exec\n}, {\n  exec: regexpExec\n});\n","var anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar newPromiseCapability = require('./_new-promise-capability');\n\nmodule.exports = function (C, x) {\n  anObject(C);\n  if (isObject(x) && x.constructor === C) return x;\n  var promiseCapability = newPromiseCapability.f(C);\n  var resolve = promiseCapability.resolve;\n  resolve(x);\n  return promiseCapability.promise;\n};\n","// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n  if (it == undefined) throw TypeError(\"Can't call method on  \" + it);\n  return it;\n};\n","// false -> Array#indexOf\n// true  -> Array#includes\nvar toIObject = require('./_to-iobject');\nvar toLength = require('./_to-length');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nmodule.exports = function (IS_INCLUDES) {\n  return function ($this, el, fromIndex) {\n    var O = toIObject($this);\n    var length = toLength(O.length);\n    var index = toAbsoluteIndex(fromIndex, length);\n    var value;\n    // Array#includes uses SameValueZero equality algorithm\n    // eslint-disable-next-line no-self-compare\n    if (IS_INCLUDES && el != el) while (length > index) {\n      value = O[index++];\n      // eslint-disable-next-line no-self-compare\n      if (value != value) return true;\n    // Array#indexOf ignores holes, Array#includes - not\n    } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n      if (O[index] === el) return IS_INCLUDES || index || 0;\n    } return !IS_INCLUDES && -1;\n  };\n};\n","'use strict';\nvar weak = require('./_collection-weak');\nvar validate = require('./_validate-collection');\nvar WEAK_SET = 'WeakSet';\n\n// 23.4 WeakSet Objects\nrequire('./_collection')(WEAK_SET, function (get) {\n  return function WeakSet() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n}, {\n  // 23.4.3.1 WeakSet.prototype.add(value)\n  add: function add(value) {\n    return weak.def(validate(this, WEAK_SET), value, true);\n  }\n}, weak, false, true);\n","'use strict';\nvar dP = require('./_object-dp').f;\nvar create = require('./_object-create');\nvar redefineAll = require('./_redefine-all');\nvar ctx = require('./_ctx');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar $iterDefine = require('./_iter-define');\nvar step = require('./_iter-step');\nvar setSpecies = require('./_set-species');\nvar DESCRIPTORS = require('./_descriptors');\nvar fastKey = require('./_meta').fastKey;\nvar validate = require('./_validate-collection');\nvar SIZE = DESCRIPTORS ? '_s' : 'size';\n\nvar getEntry = function (that, key) {\n  // fast case\n  var index = fastKey(key);\n  var entry;\n  if (index !== 'F') return that._i[index];\n  // frozen object case\n  for (entry = that._f; entry; entry = entry.n) {\n    if (entry.k == key) return entry;\n  }\n};\n\nmodule.exports = {\n  getConstructor: function (wrapper, NAME, IS_MAP, ADDER) {\n    var C = wrapper(function (that, iterable) {\n      anInstance(that, C, NAME, '_i');\n      that._t = NAME;         // collection type\n      that._i = create(null); // index\n      that._f = undefined;    // first entry\n      that._l = undefined;    // last entry\n      that[SIZE] = 0;         // size\n      if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n    });\n    redefineAll(C.prototype, {\n      // 23.1.3.1 Map.prototype.clear()\n      // 23.2.3.2 Set.prototype.clear()\n      clear: function clear() {\n        for (var that = validate(this, NAME), data = that._i, entry = that._f; entry; entry = entry.n) {\n          entry.r = true;\n          if (entry.p) entry.p = entry.p.n = undefined;\n          delete data[entry.i];\n        }\n        that._f = that._l = undefined;\n        that[SIZE] = 0;\n      },\n      // 23.1.3.3 Map.prototype.delete(key)\n      // 23.2.3.4 Set.prototype.delete(value)\n      'delete': function (key) {\n        var that = validate(this, NAME);\n        var entry = getEntry(that, key);\n        if (entry) {\n          var next = entry.n;\n          var prev = entry.p;\n          delete that._i[entry.i];\n          entry.r = true;\n          if (prev) prev.n = next;\n          if (next) next.p = prev;\n          if (that._f == entry) that._f = next;\n          if (that._l == entry) that._l = prev;\n          that[SIZE]--;\n        } return !!entry;\n      },\n      // 23.2.3.6 Set.prototype.forEach(callbackfn, thisArg = undefined)\n      // 23.1.3.5 Map.prototype.forEach(callbackfn, thisArg = undefined)\n      forEach: function forEach(callbackfn /* , that = undefined */) {\n        validate(this, NAME);\n        var f = ctx(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);\n        var entry;\n        while (entry = entry ? entry.n : this._f) {\n          f(entry.v, entry.k, this);\n          // revert to the last existing entry\n          while (entry && entry.r) entry = entry.p;\n        }\n      },\n      // 23.1.3.7 Map.prototype.has(key)\n      // 23.2.3.7 Set.prototype.has(value)\n      has: function has(key) {\n        return !!getEntry(validate(this, NAME), key);\n      }\n    });\n    if (DESCRIPTORS) dP(C.prototype, 'size', {\n      get: function () {\n        return validate(this, NAME)[SIZE];\n      }\n    });\n    return C;\n  },\n  def: function (that, key, value) {\n    var entry = getEntry(that, key);\n    var prev, index;\n    // change existing entry\n    if (entry) {\n      entry.v = value;\n    // create new entry\n    } else {\n      that._l = entry = {\n        i: index = fastKey(key, true), // <- index\n        k: key,                        // <- key\n        v: value,                      // <- value\n        p: prev = that._l,             // <- previous entry\n        n: undefined,                  // <- next entry\n        r: false                       // <- removed\n      };\n      if (!that._f) that._f = entry;\n      if (prev) prev.n = entry;\n      that[SIZE]++;\n      // add to index\n      if (index !== 'F') that._i[index] = entry;\n    } return that;\n  },\n  getEntry: getEntry,\n  setStrong: function (C, NAME, IS_MAP) {\n    // add .keys, .values, .entries, [@@iterator]\n    // 23.1.3.4, 23.1.3.8, 23.1.3.11, 23.1.3.12, 23.2.3.5, 23.2.3.8, 23.2.3.10, 23.2.3.11\n    $iterDefine(C, NAME, function (iterated, kind) {\n      this._t = validate(iterated, NAME); // target\n      this._k = kind;                     // kind\n      this._l = undefined;                // previous\n    }, function () {\n      var that = this;\n      var kind = that._k;\n      var entry = that._l;\n      // revert to the last existing entry\n      while (entry && entry.r) entry = entry.p;\n      // get next entry\n      if (!that._t || !(that._l = entry = entry ? entry.n : that._t._f)) {\n        // or finish the iteration\n        that._t = undefined;\n        return step(1);\n      }\n      // return step by kind\n      if (kind == 'keys') return step(0, entry.k);\n      if (kind == 'values') return step(0, entry.v);\n      return step(0, [entry.k, entry.v]);\n    }, IS_MAP ? 'entries' : 'values', !IS_MAP, true);\n\n    // add [@@species], 23.1.2.2, 23.2.2.2\n    setSpecies(NAME);\n  }\n};\n","module.exports = !require('./_descriptors') && !require('./_fails')(function () {\n  return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n","const plugins = require(`./api-runner-browser-plugins`)\nconst {\n  getResourcesForPathname,\n  getResourcesForPathnameSync,\n  getResourceURLsForPathname,\n  loadPage,\n  loadPageSync,\n} = require(`./loader`).publicLoader\n\nexports.apiRunner = (api, args = {}, defaultReturn, argTransform) => {\n  // Hooks for gatsby-cypress's API handler\n  if (process.env.CYPRESS_SUPPORT) {\n    if (window.___apiHandler) {\n      window.___apiHandler(api)\n    } else if (window.___resolvedAPIs) {\n      window.___resolvedAPIs.push(api)\n    } else {\n      window.___resolvedAPIs = [api]\n    }\n  }\n\n  let results = plugins.map(plugin => {\n    if (!plugin.plugin[api]) {\n      return undefined\n    }\n\n    // Deprecated April 2019. Use `loadPageSync` instead\n    args.getResourcesForPathnameSync = getResourcesForPathnameSync\n    // Deprecated April 2019. Use `loadPage` instead\n    args.getResourcesForPathname = getResourcesForPathname\n    args.getResourceURLsForPathname = getResourceURLsForPathname\n    args.loadPage = loadPage\n    args.loadPageSync = loadPageSync\n\n    const result = plugin.plugin[api](args, plugin.options)\n    if (result && argTransform) {\n      args = argTransform({ args, result, plugin })\n    }\n    return result\n  })\n\n  // Filter out undefined results.\n  results = results.filter(result => typeof result !== `undefined`)\n\n  if (results.length > 0) {\n    return results\n  } else if (defaultReturn) {\n    return [defaultReturn]\n  } else {\n    return []\n  }\n}\n\nexports.apiRunnerAsync = (api, args, defaultReturn) =>\n  plugins.reduce(\n    (previous, next) =>\n      next.plugin[api]\n        ? previous.then(() => next.plugin[api](args, next.options))\n        : previous,\n    Promise.resolve()\n  )\n","var isObject = require('./_is-object');\nmodule.exports = function (it) {\n  if (!isObject(it)) throw TypeError(it + ' is not an object!');\n  return it;\n};\n","var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n  return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n","'use strict';\nvar addToUnscopables = require('./_add-to-unscopables');\nvar step = require('./_iter-step');\nvar Iterators = require('./_iterators');\nvar toIObject = require('./_to-iobject');\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = require('./_iter-define')(Array, 'Array', function (iterated, kind) {\n  this._t = toIObject(iterated); // target\n  this._i = 0;                   // next index\n  this._k = kind;                // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n  var O = this._t;\n  var kind = this._k;\n  var index = this._i++;\n  if (!O || index >= O.length) {\n    this._t = undefined;\n    return step(1);\n  }\n  if (kind == 'keys') return step(0, index);\n  if (kind == 'values') return step(0, O[index]);\n  return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n","// 9.4.2.3 ArraySpeciesCreate(originalArray, length)\nvar speciesConstructor = require('./_array-species-constructor');\n\nmodule.exports = function (original, length) {\n  return new (speciesConstructor(original))(length);\n};\n","var has = require('./_has');\nvar toIObject = require('./_to-iobject');\nvar arrayIndexOf = require('./_array-includes')(false);\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\n\nmodule.exports = function (object, names) {\n  var O = toIObject(object);\n  var i = 0;\n  var result = [];\n  var key;\n  for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n  // Don't enum bug & hidden keys\n  while (names.length > i) if (has(O, key = names[i++])) {\n    ~arrayIndexOf(result, key) || result.push(key);\n  }\n  return result;\n};\n"],"sourceRoot":""}
\ No newline at end of file
+{"version":3,"sources":["webpack:///./node_modules/gatsby-link/index.js","webpack:///./node_modules/dom-helpers/query/scrollLeft.js","webpack:///./node_modules/core-js/modules/_function-to-string.js","webpack:///./node_modules/core-js/modules/_html.js","webpack:///./node_modules/core-js/modules/es6.object.set-prototype-of.js","webpack:///./node_modules/core-js/modules/_string-ws.js","webpack:///./node_modules/core-js/modules/_is-object.js","webpack:///./node_modules/core-js/modules/es6.array.filter.js","webpack:///./node_modules/core-js/modules/_string-context.js","webpack:///./node_modules/prop-types/factoryWithThrowingShims.js","webpack:///./node_modules/prop-types/index.js","webpack:///./node_modules/core-js/modules/_enum-keys.js","webpack:///./node_modules/core-js/modules/_iter-step.js","webpack:///./node_modules/gatsby-react-router-scroll/StateStorage.js","webpack:///./node_modules/core-js/modules/es6.object.is.js","webpack:///./node_modules/core-js/modules/_a-function.js","webpack:///./node_modules/core-js/modules/es6.function.bind.js","webpack:///./node_modules/core-js/modules/_redefine-all.js","webpack:///./node_modules/gatsby-react-router-scroll/ScrollBehaviorContext.js","webpack:///./node_modules/core-js/modules/_collection.js","webpack:///./node_modules/core-js/modules/_enum-bug-keys.js","webpack:///./node_modules/@emotion/memoize/dist/memoize.browser.esm.js","webpack:///./node_modules/mitt/dist/mitt.es.js","webpack:///./.cache/emitter.js","webpack:///./node_modules/core-js/modules/_species-constructor.js","webpack:///./node_modules/warning/browser.js","webpack:///./node_modules/core-js/modules/_array-species-constructor.js","webpack:///./node_modules/gatsby-react-router-scroll/index.js","webpack:///./node_modules/core-js/modules/es6.array.for-each.js","webpack:///./node_modules/core-js/modules/_bind.js","webpack:///./node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js","webpack:///./node_modules/dom-helpers/query/isWindow.js","webpack:///./node_modules/core-js/modules/_create-property.js","webpack:///./node_modules/core-js/modules/es6.object.assign.js","webpack:///./.cache/react-lifecycles-compat.js","webpack:///./node_modules/core-js/modules/es6.map.js","webpack:///./node_modules/core-js/modules/es6.string.starts-with.js","webpack:///./node_modules/@reach/router/es/lib/history.js","webpack:///./node_modules/core-js/modules/_an-instance.js","webpack:///./node_modules/gatsby-plugin-manifest/get-manifest-pathname.js","webpack:///./node_modules/core-js/modules/_advance-string-index.js","webpack:///./node_modules/core-js/modules/_iter-define.js","webpack:///./node_modules/core-js/modules/_string-at.js","webpack:///./node_modules/dom-helpers/util/inDOM.js","webpack:///./node_modules/core-js/modules/es6.object.to-string.js","webpack:///./node_modules/core-js/modules/_flags.js","webpack:///./node_modules/core-js/modules/_array-methods.js","webpack:///./node_modules/core-js/modules/es6.array.reduce.js","webpack:///./node_modules/core-js/modules/_object-keys.js","webpack:///./node_modules/core-js/modules/es6.weak-map.js","webpack:///./node_modules/core-js/modules/_is-array.js","webpack:///./node_modules/core-js/modules/_object-gopd.js","webpack:///./node_modules/core-js/modules/_object-dps.js","webpack:///./node_modules/core-js/modules/_task.js","webpack:///./gatsby-browser.js","webpack:///./node_modules/core-js/modules/_iter-call.js","webpack:///./node_modules/core-js/modules/es6.object.define-property.js","webpack:///./node_modules/core-js/modules/es6.array.from.js","webpack:///./node_modules/core-js/modules/_classof.js","webpack:///./.cache/page-renderer.js","webpack:///./node_modules/core-js/modules/_fix-re-wks.js","webpack:///./node_modules/gatsby-react-router-scroll/ScrollContainer.js","webpack:///./node_modules/core-js/modules/_dom-create.js","webpack:///./node_modules/core-js/modules/core.get-iterator-method.js","webpack:///./node_modules/core-js/modules/_object-gops.js","webpack:///./node_modules/core-js/modules/_wks.js","webpack:///./node_modules/core-js/modules/es6.regexp.split.js","webpack:///./node_modules/core-js/modules/_redefine.js","webpack:///./node_modules/core-js/modules/_object-create.js","webpack:///./node_modules/core-js/modules/es6.string.includes.js","webpack:///./node_modules/scroll-behavior/lib/index.js","webpack:///./node_modules/core-js/modules/es6.array.is-array.js","webpack:///./node_modules/core-js/modules/_library.js","webpack:///./node_modules/@reach/router/es/lib/utils.js","webpack:///./node_modules/core-js/modules/_cof.js","webpack:///./.cache/api-runner-browser-plugins.js","webpack:///./node_modules/core-js/modules/_strict-method.js","webpack:///./node_modules/core-js/modules/_is-array-iter.js","webpack:///./node_modules/@mikaelkristiansson/domready/ready.js","webpack:///./node_modules/core-js/modules/_invoke.js","webpack:///./node_modules/object-assign/index.js","webpack:///./node_modules/@emotion/hash/dist/hash.browser.esm.js","webpack:///./node_modules/@emotion/unitless/dist/unitless.browser.esm.js","webpack:///./node_modules/@emotion/serialize/dist/serialize.browser.esm.js","webpack:///./node_modules/core-js/modules/_hide.js","webpack:///./node_modules/core-js/modules/_wks-ext.js","webpack:///./.cache/register-service-worker.js","webpack:///./node_modules/core-js/modules/es6.regexp.flags.js","webpack:///./node_modules/core-js/modules/es6.regexp.search.js","webpack:///./node_modules/core-js/modules/_object-gpo.js","webpack:///./node_modules/core-js/modules/_wks-define.js","webpack:///./node_modules/scroll-behavior/lib/utils.js","webpack:///./node_modules/core-js/modules/es6.regexp.constructor.js","webpack:///./node_modules/@babel/runtime/helpers/assertThisInitialized.js","webpack:///./node_modules/invariant/browser.js","webpack:///./node_modules/core-js/modules/_iter-create.js","webpack:///./node_modules/core-js/modules/es6.object.keys.js","webpack:///./node_modules/core-js/modules/_to-integer.js","webpack:///./node_modules/core-js/modules/_property-desc.js","webpack:///./node_modules/core-js/modules/_to-object.js","webpack:///./node_modules/@emotion/utils/dist/utils.browser.esm.js","webpack:///./node_modules/core-js/modules/es6.regexp.match.js","webpack:///./node_modules/core-js/modules/_for-of.js","webpack:///./node_modules/core-js/modules/es6.set.js","webpack:///./node_modules/@babel/runtime/helpers/interopRequireDefault.js","webpack:///./node_modules/core-js/modules/es6.string.trim.js","webpack:///./node_modules/core-js/modules/_fails-is-regexp.js","webpack:///./node_modules/core-js/modules/_regexp-exec.js","webpack:///./node_modules/core-js/modules/_object-pie.js","webpack:///./.cache/navigation.js","webpack:///./node_modules/shallow-compare/es/index.js","webpack:///./.cache/ensure-resources.js","webpack:///./.cache/production-app.js","webpack:///./node_modules/core-js/modules/es6.array.index-of.js","webpack:///./node_modules/core-js/modules/es6.promise.js","webpack:///./node_modules/core-js/modules/_shared.js","webpack:///./node_modules/@babel/runtime/helpers/inheritsLoose.js","webpack:///./node_modules/core-js/modules/es6.array.sort.js","webpack:///./node_modules/prop-types/lib/ReactPropTypesSecret.js","webpack:///./.cache/gatsby-browser-entry.js","webpack:///./node_modules/core-js/modules/_export.js","webpack:///./node_modules/core-js/modules/_iter-detect.js","webpack:///./node_modules/core-js/modules/_inherit-if-required.js","webpack:///./node_modules/core-js/modules/es6.string.iterator.js","webpack:///./node_modules/core-js/modules/_object-sap.js","webpack:///./node_modules/core-js/modules/_regexp-exec-abstract.js","webpack:///./node_modules/core-js/modules/_shared-key.js","webpack:///./node_modules/core-js/modules/_iobject.js","webpack:///./.cache/create-react-context.js","webpack:///./node_modules/@reach/router/es/index.js","webpack:///./node_modules/core-js/modules/es7.array.includes.js","webpack:///./node_modules/core-js/modules/_meta.js","webpack:///./node_modules/core-js/modules/_collection-weak.js","webpack:///./node_modules/dom-helpers/query/scrollTop.js","webpack:///./node_modules/core-js/modules/es6.regexp.to-string.js","webpack:///./node_modules/core-js/modules/_to-iobject.js","webpack:///./node_modules/core-js/modules/_has.js","webpack:///./node_modules/core-js/modules/_to-primitive.js","webpack:///./node_modules/core-js/modules/es6.array.map.js","webpack:///./node_modules/dom-helpers/events/off.js","webpack:///./.cache/strip-prefix.js","webpack:///./node_modules/gatsby-link/parse-path.js","webpack:///./node_modules/core-js/modules/_object-assign.js","webpack:///./node_modules/core-js/modules/_to-absolute-index.js","webpack:///./node_modules/core-js/modules/es6.array.find.js","webpack:///./node_modules/core-js/modules/es6.array.some.js","webpack:///./node_modules/core-js/modules/_global.js","webpack:///./node_modules/core-js/modules/_object-gopn-ext.js","webpack:///./node_modules/core-js/modules/es6.date.now.js","webpack:///./node_modules/core-js/modules/_fails.js","webpack:///./node_modules/core-js/modules/_set-species.js","webpack:///./.cache/prefetch.js","webpack:///./.cache/normalize-page-path.js","webpack:///./.cache/find-path.js","webpack:///./.cache/loader.js","webpack:///./node_modules/core-js/modules/_array-reduce.js","webpack:///./node_modules/core-js/modules/es6.function.name.js","webpack:///./node_modules/core-js/modules/_set-to-string-tag.js","webpack:///./node_modules/core-js/modules/_core.js","webpack:///./node_modules/core-js/modules/_same-value.js","webpack:///./node_modules/core-js/modules/_microtask.js","webpack:///./node_modules/core-js/modules/es6.date.to-string.js","webpack:///./node_modules/core-js/modules/es6.object.create.js","webpack:///./node_modules/core-js/modules/_iterators.js","webpack:///./node_modules/core-js/modules/_object-dp.js","webpack:///./node_modules/core-js/modules/_set-proto.js","webpack:///./node_modules/core-js/modules/es6.symbol.js","webpack:///./node_modules/core-js/modules/_object-gopn.js","webpack:///./node_modules/@babel/runtime/helpers/defineProperty.js","webpack:///./.cache/public-page-renderer.js","webpack:///./node_modules/core-js/modules/_ctx.js","webpack:///./node_modules/core-js/modules/_add-to-unscopables.js","webpack:///./node_modules/core-js/modules/_perform.js","webpack:///./node_modules/core-js/modules/_to-length.js","webpack:///./node_modules/core-js/modules/_descriptors.js","webpack:///./node_modules/gatsby-plugin-manifest/gatsby-browser.js","webpack:///./node_modules/core-js/modules/_user-agent.js","webpack:///./.cache/async-requires.js","webpack:///./node_modules/core-js/modules/es6.regexp.replace.js","webpack:///./node_modules/@babel/runtime/helpers/extends.js","webpack:///./node_modules/gatsby-plugin-google-analytics/gatsby-browser.js","webpack:///./node_modules/core-js/modules/_new-promise-capability.js","webpack:///./node_modules/dom-helpers/util/requestAnimationFrame.js","webpack:///./node_modules/@emotion/sheet/dist/sheet.browser.esm.js","webpack:///./node_modules/@emotion/stylis/dist/stylis.browser.esm.js","webpack:///./node_modules/@emotion/cache/dist/cache.browser.esm.js","webpack:///./node_modules/@emotion/core/dist/core.browser.esm.js","webpack:///./node_modules/core-js/modules/_string-trim.js","webpack:///./node_modules/core-js/modules/_is-regexp.js","webpack:///./node_modules/core-js/modules/es7.symbol.async-iterator.js","webpack:///./node_modules/core-js/modules/web.dom.iterable.js","webpack:///./node_modules/dom-helpers/events/on.js","webpack:///./node_modules/core-js/modules/es6.string.ends-with.js","webpack:///./.cache/public-page-renderer-prod.js","webpack:///./node_modules/core-js/modules/_validate-collection.js","webpack:///./node_modules/core-js/modules/es6.regexp.exec.js","webpack:///./node_modules/core-js/modules/_promise-resolve.js","webpack:///./node_modules/core-js/modules/_defined.js","webpack:///./node_modules/core-js/modules/_array-includes.js","webpack:///./node_modules/core-js/modules/es6.weak-set.js","webpack:///./node_modules/core-js/modules/_collection-strong.js","webpack:///./node_modules/core-js/modules/_ie8-dom-define.js","webpack:///./.cache/api-runner-browser.js","webpack:///./node_modules/core-js/modules/_an-object.js","webpack:///./node_modules/core-js/modules/_uid.js","webpack:///./node_modules/core-js/modules/es6.array.iterator.js","webpack:///./node_modules/core-js/modules/_array-species-create.js","webpack:///./node_modules/core-js/modules/_object-keys-internal.js"],"names":["_interopRequireDefault","exports","__esModule","withPrefix","withAssetPrefix","path","concat","replace","join","navigateTo","push","navigate","_objectWithoutPropertiesLoose2","_extends2","_assertThisInitialized2","_inheritsLoose2","_defineProperty2","_propTypes","_react","_router","_parsePath","normalizePath","parsePath","NavLinkPropTypes","activeClassName","string","activeStyle","object","partiallyActive","bool","GatsbyLink","_React$Component","props","_this","call","this","_ref","isPartiallyCurrent","isCurrent","className","filter","Boolean","style","IOSupported","window","IntersectionObserver","state","handleRef","bind","_proto","prototype","componentDidUpdate","prevProps","prevState","to","___loader","enqueue","pathname","componentDidMount","componentWillUnmount","io","_this$io","instance","el","unobserve","disconnect","ref","cb","_this2","innerRef","hasOwnProperty","current","entries","forEach","entry","target","isIntersecting","intersectionRatio","observe","render","_this3","_this$props","_this$props$getProps","getProps","defaultGetProps","_onClick","onClick","_onMouseEnter","onMouseEnter","rest","prefixedTo","createElement","Link","e","hovering","button","defaultPrevented","metaKey","altKey","ctrlKey","shiftKey","preventDefault","Component","propTypes","func","isRequired","showDeprecationWarning","functionName","altFunctionName","version","console","warn","_default","forwardRef","options","___navigate","___push","___replace","node","val","win","_isWindow","undefined","pageXOffset","document","documentElement","scrollLeft","scrollTo","pageYOffset","scrollTop","module","Function","toString","$export","S","setPrototypeOf","set","it","$filter","P","F","callbackfn","arguments","isRegExp","defined","that","searchString","NAME","TypeError","String","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","propName","componentName","location","propFullName","secret","err","Error","name","getShim","ReactPropTypes","array","number","symbol","any","arrayOf","element","elementType","instanceOf","objectOf","oneOf","oneOfType","shape","exact","checkPropTypes","PropTypes","getKeys","gOPS","pIE","result","getSymbols","f","key","symbols","isEnum","i","length","done","value","SessionStorage","read","stateKey","getStateKey","sessionStorage","getItem","JSON","parse","save","storedValue","stringify","setItem","stateKeyBase","is","redefine","src","safe","_scrollBehavior","_history","_StateStorage","shouldUpdateScroll","children","childContextTypes","scrollBehavior","ScrollContext","context","prevRouterProps","routerProps","registerElement","getRouterProps","unregisterElement","addTransitionHook","globalHistory","listen","stateStorage","getCurrentLocation","getChildContext","__navigatingToLink","action","updateScroll","history","stop","Children","only","global","redefineAll","meta","forOf","anInstance","isObject","fails","$iterDetect","setToStringTag","inheritIfRequired","wrapper","methods","common","IS_MAP","IS_WEAK","Base","C","ADDER","proto","O","fixMethod","KEY","fn","a","b","next","HASNT_CHAINING","THROWS_ON_PRIMITIVES","has","ACCEPT_ITERABLES","iter","BUGGY_ZERO","$instance","index","iterable","constructor","clear","getConstructor","NEED","G","W","setStrong","split","cache","arg","emitter","all","Object","create","on","type","handler","off","splice","indexOf","emit","evt","slice","map","mitt","anObject","aFunction","SPECIES","D","isArray","original","Array","_ScrollBehaviorContext","_ScrollContainer","ScrollContainer","$forEach","STRICT","invoke","arraySlice","factories","construct","len","args","n","partArgs","bound","source","excluded","sourceKeys","keys","nodeType","defaultView","parentWindow","$defineProperty","createDesc","assign","polyfill","strong","validate","get","getEntry","v","def","toLength","$startsWith","startsWith","Math","min","search","_extends","getLocation","createHistory","listeners","transitioning","resolveTransition","_onTransitionComplete","listener","popstateListener","addEventListener","removeEventListener","_ref$replace","Date","now","replaceState","pushState","transition","Promise","res","createMemorySource","initialPathname","stack","states","_","uri","_uri$split","_uri$split$","_uri$split2","_uri$split2$","canUseDOM","Constructor","forbiddenField","default","localizedManifests","localizedManifest","find","app","start_url","lang","at","unicode","LIBRARY","hide","Iterators","$iterCreate","getPrototypeOf","ITERATOR","BUGGY","returnThis","DEFAULT","IS_SET","FORCED","IteratorPrototype","getMethod","kind","TAG","DEF_VALUES","VALUES_BUG","$native","$default","$entries","$anyNative","values","toInteger","TO_STRING","pos","s","l","charCodeAt","charAt","classof","test","ignoreCase","multiline","sticky","ctx","IObject","toObject","asc","TYPE","$create","IS_FILTER","IS_SOME","IS_EVERY","IS_FIND_INDEX","NO_HOLES","$this","self","$reduce","reduce","$keys","enumBugKeys","InternalMap","each","weak","NATIVE_WEAK_MAP","IS_IE11","ActiveXObject","getWeak","isExtensible","uncaughtFrozenStore","ufstore","data","_i","$WeakMap","method","_f","cof","toIObject","toPrimitive","IE8_DOM_DEFINE","gOPD","getOwnPropertyDescriptor","dP","defineProperties","Properties","defer","channel","port","html","cel","process","setTask","setImmediate","clearTask","clearImmediate","MessageChannel","Dispatch","counter","queue","run","id","event","nextTick","port2","port1","onmessage","postMessage","importScripts","appendChild","removeChild","setTimeout","iterator","ret","defineProperty","isArrayIter","createProperty","getIterFn","from","arrayLike","step","aLen","mapfn","mapping","iterFn","ARG","T","B","tryGet","callee","PageRenderer","pathContext","pageContext","pageElement","apiRunner","loader","publicLoader","pageResources","component","page","pop","React","wks","regexpExec","REPLACE_SUPPORTS_NAMED_GROUPS","re","exec","groups","SPLIT_WORKS_WITH_OVERWRITTEN_EXEC","originalExec","apply","SYMBOL","DELEGATES_TO_SYMBOL","DELEGATES_TO_EXEC","execCalled","nativeRegExpMethod","fns","nativeMethod","regexp","str","arg2","forceStringMethod","strfn","rxfn","RegExp","_reactDom","_warning","scrollKey","contextTypes","findDOMNode","getIteratorMethod","getOwnPropertySymbols","store","uid","Symbol","USE_SYMBOL","speciesConstructor","advanceStringIndex","callRegExpExec","$min","$push","SUPPORTS_Y","SPLIT","$split","maybeCallNative","internalSplit","separator","limit","match","lastIndex","lastLength","output","flags","lastLastIndex","splitLimit","separatorCopy","splitter","rx","unicodeMatching","lim","p","q","A","z","SRC","$toString","TPL","inspectSource","isFunction","dPs","IE_PROTO","Empty","createDict","iframeDocument","iframe","display","contentWindow","open","write","lt","close","includes","_off","_on","_scrollLeft","_scrollTop","_requestAnimationFrame","_utils","obj","ScrollBehavior","_restoreScrollRestoration","_oldScrollRestoration","scrollRestoration","_onWindowScroll","_ignoreScrollEvents","_saveWindowPositionHandle","_saveWindowPosition","_windowScrollTarget","_this$_windowScrollTa","xTarget","yTarget","x","y","_cancelCheckWindowScroll","_savePosition","_checkWindowScrollPosition","_checkWindowScrollHandle","scrollToTarget","_numWindowScrollAttempts","resolve","_stateStorage","_getCurrentLocation","_shouldUpdateScroll","isMobileSafari","_scrollElements","_removeTransitionHook","cancel","scrollElement","savePositionHandle","_saveElementPosition","invariant","saveElementPosition","onScroll","_updateElementScroll","_this$_scrollElements","prevContext","_updateWindowScroll","then","startIgnoringScrollEvents","stopIgnoringScrollEvents","_getScrollTarget","_this$_scrollElements2","scrollTarget","_getDefaultScrollTarget","hash","_getSavedScrollTarget","targetElement","getElementById","getElementsByName","scrollIntoView","_target","left","top","substr","pick","routes","default_","uriPathname","uriSegments","segmentize","isRootUri","ranked","rankRoutes","missed","route","params","routeSegments","max","routeSegment","uriSegment","decodeURIComponent","dynamicMatch","paramRe","reservedNames","base","_to$split","toPathname","toQuery","basePathname","toSegments","baseSegments","addQuery","allSegments","segments","segment","insertParams","validateRedirect","isDynamic","sort","rankRoute","score","isRootSegment","isSplat","SEGMENT_POINTS","query","plugin","require","ArrayProto","ie10","navigator","appVersion","_listener","doc","hack","doScroll","loaded","readyState","shift","definition","un","propIsEnumerable","propertyIsEnumerable","test1","getOwnPropertyNames","test2","fromCharCode","test3","letter","shouldUseNative","k","h","animationIterationCount","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","msGridRow","msGridRowSpan","msGridColumn","msGridColumnSpan","fontWeight","lineHeight","opacity","order","orphans","tabSize","widows","zIndex","zoom","WebkitLineClamp","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","hyphenateRegex","animationRegex","isCustomProperty","property","isProcessableValue","processStyleName","styleName","toLowerCase","p1","p2","cursor","styles","handleInterpolation","mergedProps","registered","interpolation","couldBeSelectorInterpolation","__emotion_styles","anim","_key","interpolated","createStringFromObject","previousCursor","cached","labelPattern","stringMode","strings","raw","identifierName","protocol","hostname","error","serviceWorker","register","__BASE_PATH__","reg","installingWorker","installing","log","controller","___swUpdated","___failedResources","reload","catch","configurable","sameValue","regExpExec","SEARCH","$search","previousLastIndex","ObjectProto","core","wksExt","$Symbol","platform","userAgent","gOPN","$flags","$RegExp","re1","re2","CORRECT_NEW","tiRE","piRE","fiU","proxy","ReferenceError","condition","format","c","d","argIndex","framesToPop","descriptor","ceil","floor","isNaN","bitmap","enumerable","writable","getRegisteredStyles","registeredStyles","classNames","rawClassName","insertStyles","serialized","isStringTag","inserted","insert","sheet","MATCH","$match","fullUnicode","matchStr","BREAK","RETURN","add","$trim","regexpFlags","nativeExec","nativeReplace","patchedExec","UPDATES_LAST_INDEX_WRONG","NPCG_INCLUDED","reCopy","redirectMap","redirects","redirect","fromPath","maybeRedirect","toPath","onPreRouteUpdate","prevLocation","onRouteUpdate","timeoutId","loadPage","status","href","webpackCompilationHash","___webpackCompilationHash","gatsbyApi","reachNavigate","clearTimeout","results","getSavedScrollPosition","decodeURI","RouteAnnouncer","announcementRef","createRef","nextProps","requestAnimationFrame","pageName","title","pageHeadings","getElementsByTagName","textContent","newAnnouncement","innerText","position","width","height","padding","overflow","clip","whiteSpace","border","role","aria-live","aria-atomic","RouteUpdates","shouldFireRouteUpdate","getSnapshotBeforeUpdate","Fragment","shallowDiffers","EnsureResources","loadPageSync","getDerivedStateFromProps","loadResources","rawPath","setState","shouldComponentUpdate","nextState","json","matchPath","shallowCompare","ProdLoader","asyncRequires","matchPaths","setLoader","setApiRunner","___emitter","apiRunnerAsync","RouteHandler","Provider","baseuri","basepath","LocationHandler","stripPrefix","encodeURI","pagePath","browserLoc","findMatchPath","Root","locationContext","WrappedRoot","NewRoot","renderer","ReactDOM","hydrate","domReady","$indexOf","NEGATIVE_ZERO","searchElement","Internal","newGenericPromiseCapability","OwnPromiseCapability","Wrapper","task","microtask","newPromiseCapabilityModule","perform","promiseResolve","versions","v8","$Promise","isNode","empty","newPromiseCapability","USE_NATIVE","promise","FakePromise","PromiseRejectionEvent","isThenable","notify","isReject","_n","chain","_c","_v","ok","_s","reaction","exited","fail","reject","domain","_h","onHandleUnhandled","enter","exit","onUnhandled","unhandled","isUnhandled","onunhandledrejection","reason","_a","onrejectionhandled","$reject","_d","_w","$resolve","executor","onFulfilled","onRejected","r","capability","$$reject","remaining","$index","alreadyCalled","race","mode","copyright","subClass","superClass","__proto__","$sort","comparefn","prefetchPathname","StaticQueryContext","createContext","StaticQueryDataRenderer","staticQueryData","finalData","StaticQuery","Consumer","useStaticQuery","useContext","graphql","own","out","exp","IS_FORCED","IS_GLOBAL","IS_STATIC","IS_PROTO","IS_BIND","expProto","U","R","SAFE_CLOSING","riter","skipClosing","arr","$at","iterated","_t","point","builtinExec","shared","_objectWithoutProperties","_classCallCheck","_possibleConstructorReturn","_inherits","defaultValue","Ctx","displayName","LocationContext","LocationProvider","_temp","_len","getContext","refs","unlisten","_props$history","componentDidCatch","info","isRedirect","_navigate","unmounted","defaultProps","_ref2","url","BaseContext","baseContext","_React$PureComponent","RouterImpl","_props","_navigate2","primary","_props$component","domProps","clone","cloneElement","FocusWrapper","wrapperProps","PureComponent","FocusContext","_ref3","requestFocus","initialRender","focusHandlerCount","_React$Component2","FocusHandlerImpl","_temp2","_this4","_len2","_key2","shouldFocus","focus","myURIChanged","navigatedUpToMe","contains","activeElement","_this5","_props2","_props2$role","_props2$component","Comp","outline","tabIndex","_ref4","_ref5","_ref6","_props$getProps","anchorProps","shouldNavigate","RedirectRequest","o","redirectTo","_React$Component3","RedirectImpl","_props3","_props3$replace","noThrow","_props4","_ref7","_ref8","_ref9","resolvedPath","stripSlashes","elementPath","$includes","META","setDesc","FREEZE","preventExtensions","setMeta","w","fastKey","onFreeze","createArrayMethod","$has","arrayFind","arrayFindIndex","_l","UncaughtFrozenStore","findUncaughtFrozen","DESCRIPTORS","define","valueOf","$map","eventName","capture","attachEvent","detachEvent","prefix","hashIndex","searchIndex","$assign","K","j","$find","forced","$some","some","__g","windowNames","getWindowNames","getTime","supportedPrefetchStrategy","feature","fakeLink","relList","supports","support","link","setAttribute","onload","onerror","parentNode","req","XMLHttpRequest","send","preFetched","prefetch","pathCache","Map","trimPathname","rawPathname","trimmedPathname","cleanPath","normalizePagePath","findPath","foundPath","preferDefault","m","createPageDataUrl","__PATH_PREFIX__","endsWith","doFetch","onreadystatechange","loadPageDataJson","loadObj","retries","responseText","jsonPayload","payload","notFound","toPageResources","pageData","componentChunkName","BaseLoader","loadComponent","pageDb","inFlightDb","pageDataDb","prefetchTriggered","Set","prefetchCompleted","prefetchDisabled","inFlight","loadAppData","allData","finalResult","createdAt","response","delete","shouldPrefetch","connection","effectiveType","saveData","doesConnectionSupportPrefetch","realPath","doPrefetch","getResourceURLsForPathname","createComponentUrls","isPageNotFound","appData","___chunkMapping","chunk","chunkName","components","pageDataUrl","prefetchHelper","crossOrigin","as","componentUrls","_loader","getResourcesForPathname","getResourcesForPathnameSync","memo","isRight","FProto","nameRE","tag","stat","__e","macrotask","Observer","MutationObserver","WebKitMutationObserver","head","last","flush","parent","standalone","toggle","createTextNode","characterData","DateProto","NaN","Attributes","check","buggy","$fails","wksDefine","enumKeys","_create","gOPNExt","$GOPD","$GOPS","$DP","$JSON","_stringify","HIDDEN","TO_PRIMITIVE","SymbolRegistry","AllSymbols","OPSymbols","QObject","setter","findChild","setSymbolDesc","protoDesc","wrap","sym","_k","isSymbol","$defineProperties","$propertyIsEnumerable","E","$getOwnPropertyDescriptor","$getOwnPropertyNames","names","$getOwnPropertySymbols","IS_OP","$set","es6Symbols","wellKnownSymbols","keyFor","useSetter","useSimple","FAILS_ON_PRIMITIVES","replacer","$replacer","hiddenKeys","UNSCOPABLES","SUBSTITUTION_SYMBOLS","SUBSTITUTION_SYMBOLS_NO_NAMED","REPLACE","$replace","searchValue","replaceValue","functionalReplace","accumulatedResult","nextSourcePosition","matched","captures","namedCaptures","replacerArgs","replacement","getSubstitution","tailPos","ch","pluginOptions","ga","excludeGAPaths","delay","pageTransitionDelay","PromiseCapability","$$resolve","compatRaf","_inDOM","raf","curr","ms","prev","getKey","vendor","toUpperCase","rafKey","StyleSheet","isSpeedy","speedy","tags","ctr","nonce","container","before","rule","_tag","createStyleElement","nextSibling","insertBefore","styleSheets","ownerNode","sheetForTag","isImportRule","insertRule","cssRules","X","trim","ia","Z","substring","L","ja","ka","aa","ba","la","ma","na","ea","oa","H","g","M","u","I","t","J","N","ca","da","fa","Y","ha","Q","use","toSheet","block","Sheet","ruleSheet","content","selectors","parents","line","column","ns","depth","delimiter","stylisOptions","stylis","_insert","nodes","querySelectorAll","getAttribute","stylisPlugins","selector","shouldCache","EmotionCacheContext","HTMLElement","ThemeContext","typePropName","theme","cssProp","css","newProps","Emotion","argsLength","createElementArgArray","Global","InnerGlobal","updater","querySelector","nextElementSibling","classnames","cls","toAdd","merge","cx","ele","spaces","space","ltrim","rtrim","exporter","ALIAS","FORCE","$iterators","TO_STRING_TAG","ArrayValues","DOMIterables","CSSRuleList","CSSStyleDeclaration","CSSValueList","ClientRectList","DOMRectList","DOMStringList","DOMTokenList","DataTransferItemList","FileList","HTMLAllCollection","HTMLCollection","HTMLFormElement","HTMLSelectElement","MediaList","MimeTypeArray","NamedNodeMap","NodeList","PaintRequestList","Plugin","PluginArray","SVGLengthList","SVGNumberList","SVGPathSegList","SVGPointList","SVGStringList","SVGTransformList","SourceBufferList","StyleSheetList","TextTrackCueList","TextTrackList","TouchList","collections","explicit","Collection","srcElement","currentTarget","$endsWith","endPosition","end","ProdPageRenderer","InternalPageRenderer","promiseCapability","toAbsoluteIndex","IS_INCLUDES","fromIndex","$iterDefine","setSpecies","SIZE","plugins","api","defaultReturn","argTransform","previous","px","random","addToUnscopables","Arguments","arrayIndexOf"],"mappings":"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","file":"app-2da2270a07d62743bcd4.js","sourcesContent":["\"use strict\";\n\nrequire(\"core-js/modules/es6.function.bind\");\n\nrequire(\"core-js/modules/es6.array.filter\");\n\nrequire(\"core-js/modules/es6.array.for-each\");\n\nrequire(\"core-js/modules/es6.regexp.replace\");\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.withPrefix = withPrefix;\nexports.withAssetPrefix = withAssetPrefix;\nexports.navigateTo = exports.replace = exports.push = exports.navigate = exports[\"default\"] = void 0;\n\nvar _objectWithoutPropertiesLoose2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectWithoutPropertiesLoose\"));\n\nvar _extends2 = _interopRequireDefault(require(\"@babel/runtime/helpers/extends\"));\n\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\n\nvar _inheritsLoose2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inheritsLoose\"));\n\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _router = require(\"@reach/router\");\n\nvar _parsePath = require(\"./parse-path\");\n\nexports.parsePath = _parsePath.parsePath;\n\nfunction withPrefix(path) {\n  return normalizePath([typeof __BASE_PATH__ !== \"undefined\" ? __BASE_PATH__ : __PATH_PREFIX__, path].join(\"/\"));\n}\n\nfunction withAssetPrefix(path) {\n  return [__PATH_PREFIX__].concat([path.replace(/^\\//, \"\")]).join(\"/\");\n}\n\nfunction normalizePath(path) {\n  return path.replace(/\\/+/g, \"/\");\n}\n\nvar NavLinkPropTypes = {\n  activeClassName: _propTypes[\"default\"].string,\n  activeStyle: _propTypes[\"default\"].object,\n  partiallyActive: _propTypes[\"default\"].bool\n}; // Set up IntersectionObserver\n\nvar createIntersectionObserver = function createIntersectionObserver(el, cb) {\n  var io = new window.IntersectionObserver(function (entries) {\n    entries.forEach(function (entry) {\n      if (el === entry.target) {\n        // Check if element is within viewport, remove listener, destroy observer, and run link callback.\n        // MSEdge doesn't currently support isIntersecting, so also test for  an intersectionRatio > 0\n        if (entry.isIntersecting || entry.intersectionRatio > 0) {\n          io.unobserve(el);\n          io.disconnect();\n          cb();\n        }\n      }\n    });\n  }); // Add element to the observer\n\n  io.observe(el);\n  return {\n    instance: io,\n    el: el\n  };\n};\n\nvar GatsbyLink =\n/*#__PURE__*/\nfunction (_React$Component) {\n  (0, _inheritsLoose2[\"default\"])(GatsbyLink, _React$Component);\n\n  function GatsbyLink(props) {\n    var _this;\n\n    _this = _React$Component.call(this, props) || this; // Default to no support for IntersectionObserver\n\n    (0, _defineProperty2[\"default\"])((0, _assertThisInitialized2[\"default\"])(_this), \"defaultGetProps\", function (_ref) {\n      var isPartiallyCurrent = _ref.isPartiallyCurrent,\n          isCurrent = _ref.isCurrent;\n\n      if (_this.props.partiallyActive ? isPartiallyCurrent : isCurrent) {\n        return {\n          className: [_this.props.className, _this.props.activeClassName].filter(Boolean).join(\" \"),\n          style: (0, _extends2[\"default\"])({}, _this.props.style, {}, _this.props.activeStyle)\n        };\n      }\n\n      return null;\n    });\n    var IOSupported = false;\n\n    if (typeof window !== \"undefined\" && window.IntersectionObserver) {\n      IOSupported = true;\n    }\n\n    _this.state = {\n      IOSupported: IOSupported\n    };\n    _this.handleRef = _this.handleRef.bind((0, _assertThisInitialized2[\"default\"])(_this));\n    return _this;\n  }\n\n  var _proto = GatsbyLink.prototype;\n\n  _proto.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {\n    // Preserve non IO functionality if no support\n    if (this.props.to !== prevProps.to && !this.state.IOSupported) {\n      ___loader.enqueue((0, _parsePath.parsePath)(this.props.to).pathname);\n    }\n  };\n\n  _proto.componentDidMount = function componentDidMount() {\n    // Preserve non IO functionality if no support\n    if (!this.state.IOSupported) {\n      ___loader.enqueue((0, _parsePath.parsePath)(this.props.to).pathname);\n    }\n  };\n\n  _proto.componentWillUnmount = function componentWillUnmount() {\n    if (!this.io) {\n      return;\n    }\n\n    var _this$io = this.io,\n        instance = _this$io.instance,\n        el = _this$io.el;\n    instance.unobserve(el);\n    instance.disconnect();\n  };\n\n  _proto.handleRef = function handleRef(ref) {\n    var _this2 = this;\n\n    if (this.props.innerRef && this.props.innerRef.hasOwnProperty(\"current\")) {\n      this.props.innerRef.current = ref;\n    } else if (this.props.innerRef) {\n      this.props.innerRef(ref);\n    }\n\n    if (this.state.IOSupported && ref) {\n      // If IO supported and element reference found, setup Observer functionality\n      this.io = createIntersectionObserver(ref, function () {\n        ___loader.enqueue((0, _parsePath.parsePath)(_this2.props.to).pathname);\n      });\n    }\n  };\n\n  _proto.render = function render() {\n    var _this3 = this;\n\n    var _this$props = this.props,\n        to = _this$props.to,\n        _this$props$getProps = _this$props.getProps,\n        getProps = _this$props$getProps === void 0 ? this.defaultGetProps : _this$props$getProps,\n        _onClick = _this$props.onClick,\n        _onMouseEnter = _this$props.onMouseEnter,\n        $activeClassName = _this$props.activeClassName,\n        $activeStyle = _this$props.activeStyle,\n        $innerRef = _this$props.innerRef,\n        partiallyActive = _this$props.partiallyActive,\n        state = _this$props.state,\n        replace = _this$props.replace,\n        rest = (0, _objectWithoutPropertiesLoose2[\"default\"])(_this$props, [\"to\", \"getProps\", \"onClick\", \"onMouseEnter\", \"activeClassName\", \"activeStyle\", \"innerRef\", \"partiallyActive\", \"state\", \"replace\"]);\n    var LOCAL_URL = /^\\/(?!\\/)/;\n\n    if (process.env.NODE_ENV !== \"production\" && !LOCAL_URL.test(to)) {\n      console.warn(\"External link \" + to + \" was detected in a Link component. Use the Link component only for internal links. See: https://gatsby.dev/internal-links\");\n    }\n\n    var prefixedTo = withPrefix(to);\n    return _react[\"default\"].createElement(_router.Link, (0, _extends2[\"default\"])({\n      to: prefixedTo,\n      state: state,\n      getProps: getProps,\n      innerRef: this.handleRef,\n      onMouseEnter: function onMouseEnter(e) {\n        if (_onMouseEnter) {\n          _onMouseEnter(e);\n        }\n\n        ___loader.hovering((0, _parsePath.parsePath)(to).pathname);\n      },\n      onClick: function onClick(e) {\n        if (_onClick) {\n          _onClick(e);\n        }\n\n        if (e.button === 0 && // ignore right clicks\n        !_this3.props.target && // let browser handle \"target=_blank\"\n        !e.defaultPrevented && // onClick prevented default\n        !e.metaKey && // ignore clicks with modifier keys...\n        !e.altKey && !e.ctrlKey && !e.shiftKey) {\n          e.preventDefault(); // Make sure the necessary scripts and data are\n          // loaded before continuing.\n\n          navigate(to, {\n            state: state,\n            replace: replace\n          });\n        }\n\n        return true;\n      }\n    }, rest));\n  };\n\n  return GatsbyLink;\n}(_react[\"default\"].Component);\n\nGatsbyLink.propTypes = (0, _extends2[\"default\"])({}, NavLinkPropTypes, {\n  onClick: _propTypes[\"default\"].func,\n  to: _propTypes[\"default\"].string.isRequired,\n  replace: _propTypes[\"default\"].bool\n});\n\nvar showDeprecationWarning = function showDeprecationWarning(functionName, altFunctionName, version) {\n  return console.warn(\"The \\\"\" + functionName + \"\\\" method is now deprecated and will be removed in Gatsby v\" + version + \". Please use \\\"\" + altFunctionName + \"\\\" instead.\");\n};\n\nvar _default = _react[\"default\"].forwardRef(function (props, ref) {\n  return _react[\"default\"].createElement(GatsbyLink, (0, _extends2[\"default\"])({\n    innerRef: ref\n  }, props));\n});\n\nexports[\"default\"] = _default;\n\nvar navigate = function navigate(to, options) {\n  window.___navigate(withPrefix(to), options);\n};\n\nexports.navigate = navigate;\n\nvar push = function push(to) {\n  showDeprecationWarning(\"push\", \"navigate\", 3);\n\n  window.___push(withPrefix(to));\n};\n\nexports.push = push;\n\nvar replace = function replace(to) {\n  showDeprecationWarning(\"replace\", \"navigate\", 3);\n\n  window.___replace(withPrefix(to));\n}; // TODO: Remove navigateTo for Gatsby v3\n\n\nexports.replace = replace;\n\nvar navigateTo = function navigateTo(to) {\n  showDeprecationWarning(\"navigateTo\", \"navigate\", 3);\n  return push(to);\n};\n\nexports.navigateTo = navigateTo;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports[\"default\"] = scrollTop;\n\nvar _isWindow = _interopRequireDefault(require(\"./isWindow\"));\n\nfunction scrollTop(node, val) {\n  var win = (0, _isWindow[\"default\"])(node);\n  if (val === undefined) return win ? 'pageXOffset' in win ? win.pageXOffset : win.document.documentElement.scrollLeft : node.scrollLeft;\n  if (win) win.scrollTo(val, 'pageYOffset' in win ? win.pageYOffset : win.document.documentElement.scrollTop);else node.scrollLeft = val;\n}\n\nmodule.exports = exports[\"default\"];","module.exports = require('./_shared')('native-function-to-string', Function.toString);\n","var document = require('./_global').document;\nmodule.exports = document && document.documentElement;\n","// 19.1.3.19 Object.setPrototypeOf(O, proto)\nvar $export = require('./_export');\n$export($export.S, 'Object', { setPrototypeOf: require('./_set-proto').set });\n","module.exports = '\\x09\\x0A\\x0B\\x0C\\x0D\\x20\\xA0\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003' +\n  '\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n","module.exports = function (it) {\n  return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","'use strict';\nvar $export = require('./_export');\nvar $filter = require('./_array-methods')(2);\n\n$export($export.P + $export.F * !require('./_strict-method')([].filter, true), 'Array', {\n  // 22.1.3.7 / 15.4.4.20 Array.prototype.filter(callbackfn [, thisArg])\n  filter: function filter(callbackfn /* , thisArg */) {\n    return $filter(this, callbackfn, arguments[1]);\n  }\n});\n","// helper for String#{startsWith, endsWith, includes}\nvar isRegExp = require('./_is-regexp');\nvar defined = require('./_defined');\n\nmodule.exports = function (that, searchString, NAME) {\n  if (isRegExp(searchString)) throw TypeError('String#' + NAME + \" doesn't accept regex!\");\n  return String(defined(that));\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';\n\nrequire(\"core-js/modules/es6.function.name\");\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\n\nfunction emptyFunctionWithReset() {}\n\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function () {\n  function shim(props, propName, componentName, location, propFullName, secret) {\n    if (secret === ReactPropTypesSecret) {\n      // It is still safe when called from React.\n      return;\n    }\n\n    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');\n    err.name = 'Invariant Violation';\n    throw err;\n  }\n\n  ;\n  shim.isRequired = shim;\n\n  function getShim() {\n    return shim;\n  }\n\n  ; // Important!\n  // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n\n  var ReactPropTypes = {\n    array: shim,\n    bool: shim,\n    func: shim,\n    number: shim,\n    object: shim,\n    string: shim,\n    symbol: shim,\n    any: shim,\n    arrayOf: getShim,\n    element: shim,\n    elementType: shim,\n    instanceOf: getShim,\n    node: shim,\n    objectOf: getShim,\n    oneOf: getShim,\n    oneOfType: getShim,\n    shape: getShim,\n    exact: getShim,\n    checkPropTypes: emptyFunctionWithReset,\n    resetWarningCache: emptyFunction\n  };\n  ReactPropTypes.PropTypes = ReactPropTypes;\n  return ReactPropTypes;\n};","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nif (process.env.NODE_ENV !== 'production') {\n  var ReactIs = require('react-is'); // By explicitly using `prop-types` you are opting into new development behavior.\n  // http://fb.me/prop-types-in-prod\n\n\n  var throwOnDirectAccess = true;\n  module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n  // By explicitly using `prop-types` you are opting into new production behavior.\n  // http://fb.me/prop-types-in-prod\n  module.exports = require('./factoryWithThrowingShims')();\n}","// all enumerable object keys, includes symbols\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nmodule.exports = function (it) {\n  var result = getKeys(it);\n  var getSymbols = gOPS.f;\n  if (getSymbols) {\n    var symbols = getSymbols(it);\n    var isEnum = pIE.f;\n    var i = 0;\n    var key;\n    while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key);\n  } return result;\n};\n","module.exports = function (done, value) {\n  return { value: value, done: !!done };\n};\n","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\nvar STATE_KEY_PREFIX = \"@@scroll|\";\nvar GATSBY_ROUTER_SCROLL_STATE = \"___GATSBY_REACT_ROUTER_SCROLL\";\n\nvar SessionStorage =\n/*#__PURE__*/\nfunction () {\n  function SessionStorage() {}\n\n  var _proto = SessionStorage.prototype;\n\n  _proto.read = function read(location, key) {\n    var stateKey = this.getStateKey(location, key);\n\n    try {\n      var value = window.sessionStorage.getItem(stateKey);\n      return JSON.parse(value);\n    } catch (e) {\n      if (process.env.NODE_ENV !== \"production\") {\n        console.warn(\"[gatsby-react-router-scroll] Unable to access sessionStorage; sessionStorage is not available.\");\n      }\n\n      if (window && window[GATSBY_ROUTER_SCROLL_STATE] && window[GATSBY_ROUTER_SCROLL_STATE][stateKey]) {\n        return window[GATSBY_ROUTER_SCROLL_STATE][stateKey];\n      }\n\n      return {};\n    }\n  };\n\n  _proto.save = function save(location, key, value) {\n    var stateKey = this.getStateKey(location, key);\n    var storedValue = JSON.stringify(value);\n\n    try {\n      window.sessionStorage.setItem(stateKey, storedValue);\n    } catch (e) {\n      if (window && window[GATSBY_ROUTER_SCROLL_STATE]) {\n        window[GATSBY_ROUTER_SCROLL_STATE][stateKey] = JSON.parse(storedValue);\n      } else {\n        window[GATSBY_ROUTER_SCROLL_STATE] = {};\n        window[GATSBY_ROUTER_SCROLL_STATE][stateKey] = JSON.parse(storedValue);\n      }\n\n      if (process.env.NODE_ENV !== \"production\") {\n        console.warn(\"[gatsby-react-router-scroll] Unable to save state in sessionStorage; sessionStorage is not available.\");\n      }\n    }\n  };\n\n  _proto.getStateKey = function getStateKey(location, key) {\n    var locationKey = location.key || location.pathname;\n    var stateKeyBase = \"\" + STATE_KEY_PREFIX + locationKey;\n    return key === null || typeof key === \"undefined\" ? stateKeyBase : stateKeyBase + \"|\" + key;\n  };\n\n  return SessionStorage;\n}();\n\nexports[\"default\"] = SessionStorage;","// 19.1.3.10 Object.is(value1, value2)\nvar $export = require('./_export');\n$export($export.S, 'Object', { is: require('./_same-value') });\n","module.exports = function (it) {\n  if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n  return it;\n};\n","// 19.2.3.2 / 15.3.4.5 Function.prototype.bind(thisArg, args...)\nvar $export = require('./_export');\n\n$export($export.P, 'Function', { bind: require('./_bind') });\n","var redefine = require('./_redefine');\nmodule.exports = function (target, src, safe) {\n  for (var key in src) redefine(target, key, src[key], safe);\n  return target;\n};\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\n\nvar _inheritsLoose2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inheritsLoose\"));\n\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _scrollBehavior = _interopRequireDefault(require(\"scroll-behavior\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _history = require(\"@reach/router/lib/history\");\n\nvar _StateStorage = _interopRequireDefault(require(\"./StateStorage\"));\n\nvar propTypes = {\n  shouldUpdateScroll: _propTypes[\"default\"].func,\n  children: _propTypes[\"default\"].element.isRequired,\n  location: _propTypes[\"default\"].object.isRequired\n};\nvar childContextTypes = {\n  scrollBehavior: _propTypes[\"default\"].object.isRequired\n};\n\nvar ScrollContext =\n/*#__PURE__*/\nfunction (_React$Component) {\n  (0, _inheritsLoose2[\"default\"])(ScrollContext, _React$Component);\n\n  function ScrollContext(props, context) {\n    var _this;\n\n    _this = _React$Component.call(this, props, context) || this;\n    (0, _defineProperty2[\"default\"])((0, _assertThisInitialized2[\"default\"])(_this), \"shouldUpdateScroll\", function (prevRouterProps, routerProps) {\n      var shouldUpdateScroll = _this.props.shouldUpdateScroll;\n\n      if (!shouldUpdateScroll) {\n        return true;\n      } // Hack to allow accessing scrollBehavior._stateStorage.\n\n\n      return shouldUpdateScroll.call(_this.scrollBehavior, prevRouterProps, routerProps);\n    });\n    (0, _defineProperty2[\"default\"])((0, _assertThisInitialized2[\"default\"])(_this), \"registerElement\", function (key, element, shouldUpdateScroll) {\n      _this.scrollBehavior.registerElement(key, element, shouldUpdateScroll, _this.getRouterProps());\n    });\n    (0, _defineProperty2[\"default\"])((0, _assertThisInitialized2[\"default\"])(_this), \"unregisterElement\", function (key) {\n      _this.scrollBehavior.unregisterElement(key);\n    });\n    _this.scrollBehavior = new _scrollBehavior[\"default\"]({\n      addTransitionHook: _history.globalHistory.listen,\n      stateStorage: new _StateStorage[\"default\"](),\n      getCurrentLocation: function getCurrentLocation() {\n        return _this.props.location;\n      },\n      shouldUpdateScroll: _this.shouldUpdateScroll\n    });\n    return _this;\n  }\n\n  var _proto = ScrollContext.prototype;\n\n  _proto.getChildContext = function getChildContext() {\n    return {\n      scrollBehavior: this\n    };\n  };\n\n  _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n    var location = this.props.location;\n    var prevLocation = prevProps.location;\n\n    if (location === prevLocation) {\n      return;\n    }\n\n    var prevRouterProps = {\n      location: prevProps.location\n    }; // The \"scroll-behavior\" package expects the \"action\" to be on the location\n    // object so let's copy it over.\n    // Temp hack while awaiting https://github.com/reach/router/issues/119\n\n    if (window.__navigatingToLink) {\n      location.action = \"PUSH\";\n    } else {\n      location.action = \"POP\";\n    }\n\n    this.scrollBehavior.updateScroll(prevRouterProps, {\n      history: _history.globalHistory,\n      location: location\n    });\n  };\n\n  _proto.componentWillUnmount = function componentWillUnmount() {\n    this.scrollBehavior.stop();\n  };\n\n  _proto.getRouterProps = function getRouterProps() {\n    var location = this.props.location;\n    return {\n      location: location,\n      history: _history.globalHistory\n    };\n  };\n\n  _proto.render = function render() {\n    return _react[\"default\"].Children.only(this.props.children);\n  };\n\n  return ScrollContext;\n}(_react[\"default\"].Component);\n\nScrollContext.propTypes = propTypes;\nScrollContext.childContextTypes = childContextTypes;\nvar _default = ScrollContext;\nexports[\"default\"] = _default;","'use strict';\nvar global = require('./_global');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar redefineAll = require('./_redefine-all');\nvar meta = require('./_meta');\nvar forOf = require('./_for-of');\nvar anInstance = require('./_an-instance');\nvar isObject = require('./_is-object');\nvar fails = require('./_fails');\nvar $iterDetect = require('./_iter-detect');\nvar setToStringTag = require('./_set-to-string-tag');\nvar inheritIfRequired = require('./_inherit-if-required');\n\nmodule.exports = function (NAME, wrapper, methods, common, IS_MAP, IS_WEAK) {\n  var Base = global[NAME];\n  var C = Base;\n  var ADDER = IS_MAP ? 'set' : 'add';\n  var proto = C && C.prototype;\n  var O = {};\n  var fixMethod = function (KEY) {\n    var fn = proto[KEY];\n    redefine(proto, KEY,\n      KEY == 'delete' ? function (a) {\n        return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);\n      } : KEY == 'has' ? function has(a) {\n        return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);\n      } : KEY == 'get' ? function get(a) {\n        return IS_WEAK && !isObject(a) ? undefined : fn.call(this, a === 0 ? 0 : a);\n      } : KEY == 'add' ? function add(a) { fn.call(this, a === 0 ? 0 : a); return this; }\n        : function set(a, b) { fn.call(this, a === 0 ? 0 : a, b); return this; }\n    );\n  };\n  if (typeof C != 'function' || !(IS_WEAK || proto.forEach && !fails(function () {\n    new C().entries().next();\n  }))) {\n    // create collection constructor\n    C = common.getConstructor(wrapper, NAME, IS_MAP, ADDER);\n    redefineAll(C.prototype, methods);\n    meta.NEED = true;\n  } else {\n    var instance = new C();\n    // early implementations not supports chaining\n    var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance;\n    // V8 ~  Chromium 40- weak-collections throws on primitives, but should return false\n    var THROWS_ON_PRIMITIVES = fails(function () { instance.has(1); });\n    // most early implementations doesn't supports iterables, most modern - not close it correctly\n    var ACCEPT_ITERABLES = $iterDetect(function (iter) { new C(iter); }); // eslint-disable-line no-new\n    // for early implementations -0 and +0 not the same\n    var BUGGY_ZERO = !IS_WEAK && fails(function () {\n      // V8 ~ Chromium 42- fails only with 5+ elements\n      var $instance = new C();\n      var index = 5;\n      while (index--) $instance[ADDER](index, index);\n      return !$instance.has(-0);\n    });\n    if (!ACCEPT_ITERABLES) {\n      C = wrapper(function (target, iterable) {\n        anInstance(target, C, NAME);\n        var that = inheritIfRequired(new Base(), target, C);\n        if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n        return that;\n      });\n      C.prototype = proto;\n      proto.constructor = C;\n    }\n    if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) {\n      fixMethod('delete');\n      fixMethod('has');\n      IS_MAP && fixMethod('get');\n    }\n    if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER);\n    // weak collections should not contains .clear method\n    if (IS_WEAK && proto.clear) delete proto.clear;\n  }\n\n  setToStringTag(C, NAME);\n\n  O[NAME] = C;\n  $export($export.G + $export.W + $export.F * (C != Base), O);\n\n  if (!IS_WEAK) common.setStrong(C, NAME, IS_MAP);\n\n  return C;\n};\n","// IE 8- don't enum bug keys\nmodule.exports = (\n  'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n","function memoize(fn) {\n  var cache = {};\n  return function (arg) {\n    if (cache[arg] === undefined) cache[arg] = fn(arg);\n    return cache[arg];\n  };\n}\n\nexport default memoize;","import \"core-js/modules/es6.array.map\";\nimport \"core-js/modules/es6.array.index-of\";\nimport \"core-js/modules/es6.object.create\";\n\n//      \n// An event handler can take an optional event argument\n// and should not return a value\n// An array of all currently registered event handlers for a type\n// A map of event types and their corresponding event handlers.\n\n/** Mitt: Tiny (~200b) functional event emitter / pubsub.\n *  @name mitt\n *  @returns {Mitt}\n */\nfunction mitt(all) {\n  all = all || Object.create(null);\n  return {\n    /**\n     * Register an event handler for the given type.\n     *\n     * @param  {String} type\tType of event to listen for, or `\"*\"` for all events\n     * @param  {Function} handler Function to call in response to given event\n     * @memberOf mitt\n     */\n    on: function on(type, handler) {\n      (all[type] || (all[type] = [])).push(handler);\n    },\n\n    /**\n     * Remove an event handler for the given type.\n     *\n     * @param  {String} type\tType of event to unregister `handler` from, or `\"*\"`\n     * @param  {Function} handler Handler function to remove\n     * @memberOf mitt\n     */\n    off: function off(type, handler) {\n      if (all[type]) {\n        all[type].splice(all[type].indexOf(handler) >>> 0, 1);\n      }\n    },\n\n    /**\n     * Invoke all handlers for the given type.\n     * If present, `\"*\"` handlers are invoked after type-matched handlers.\n     *\n     * @param {String} type  The event type to invoke\n     * @param {Any} [evt]  Any value (object is recommended and powerful), passed to each handler\n     * @memberOf mitt\n     */\n    emit: function emit(type, evt) {\n      (all[type] || []).slice().map(function (handler) {\n        handler(evt);\n      });\n      (all['*'] || []).slice().map(function (handler) {\n        handler(type, evt);\n      });\n    }\n  };\n}\n\nexport default mitt;","import mitt from \"mitt\"\n\nconst emitter = mitt()\nexport default emitter\n","// 7.3.20 SpeciesConstructor(O, defaultConstructor)\nvar anObject = require('./_an-object');\nvar aFunction = require('./_a-function');\nvar SPECIES = require('./_wks')('species');\nmodule.exports = function (O, D) {\n  var C = anObject(O).constructor;\n  var S;\n  return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S);\n};\n","/**\n * Copyright 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n'use strict';\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nrequire(\"core-js/modules/es6.regexp.replace\");\n\nvar warning = function warning() {};\n\nif (process.env.NODE_ENV !== 'production') {\n  warning = function warning(condition, format, args) {\n    var len = arguments.length;\n    args = new Array(len > 2 ? len - 2 : 0);\n\n    for (var key = 2; key < len; key++) {\n      args[key - 2] = arguments[key];\n    }\n\n    if (format === undefined) {\n      throw new Error('`warning(condition, format, ...args)` requires a warning ' + 'message argument');\n    }\n\n    if (format.length < 10 || /^[s\\W]*$/.test(format)) {\n      throw new Error('The warning format should be able to uniquely identify this ' + 'warning. Please, use a more descriptive format than: ' + format);\n    }\n\n    if (!condition) {\n      var argIndex = 0;\n      var message = 'Warning: ' + format.replace(/%s/g, function () {\n        return args[argIndex++];\n      });\n\n      if (typeof console !== 'undefined') {\n        console.error(message);\n      }\n\n      try {\n        // This error was thrown as a convenience so that you can use this stack\n        // to find the callsite that caused this warning to fire.\n        throw new Error(message);\n      } catch (x) {}\n    }\n  };\n}\n\nmodule.exports = warning;","var isObject = require('./_is-object');\nvar isArray = require('./_is-array');\nvar SPECIES = require('./_wks')('species');\n\nmodule.exports = function (original) {\n  var C;\n  if (isArray(original)) {\n    C = original.constructor;\n    // cross-realm fallback\n    if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n    if (isObject(C)) {\n      C = C[SPECIES];\n      if (C === null) C = undefined;\n    }\n  } return C === undefined ? Array : C;\n};\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _ScrollBehaviorContext = _interopRequireDefault(require(\"./ScrollBehaviorContext\"));\n\nvar _ScrollContainer = _interopRequireDefault(require(\"./ScrollContainer\"));\n\nexports.ScrollContainer = _ScrollContainer[\"default\"];\nexports.ScrollContext = _ScrollBehaviorContext[\"default\"];","'use strict';\nvar $export = require('./_export');\nvar $forEach = require('./_array-methods')(0);\nvar STRICT = require('./_strict-method')([].forEach, true);\n\n$export($export.P + $export.F * !STRICT, 'Array', {\n  // 22.1.3.10 / 15.4.4.18 Array.prototype.forEach(callbackfn [, thisArg])\n  forEach: function forEach(callbackfn /* , thisArg */) {\n    return $forEach(this, callbackfn, arguments[1]);\n  }\n});\n","'use strict';\nvar aFunction = require('./_a-function');\nvar isObject = require('./_is-object');\nvar invoke = require('./_invoke');\nvar arraySlice = [].slice;\nvar factories = {};\n\nvar construct = function (F, len, args) {\n  if (!(len in factories)) {\n    for (var n = [], i = 0; i < len; i++) n[i] = 'a[' + i + ']';\n    // eslint-disable-next-line no-new-func\n    factories[len] = Function('F,a', 'return new F(' + n.join(',') + ')');\n  } return factories[len](F, args);\n};\n\nmodule.exports = Function.bind || function bind(that /* , ...args */) {\n  var fn = aFunction(this);\n  var partArgs = arraySlice.call(arguments, 1);\n  var bound = function (/* args... */) {\n    var args = partArgs.concat(arraySlice.call(arguments));\n    return this instanceof bound ? construct(fn, args.length, args) : invoke(fn, args, that);\n  };\n  if (isObject(fn.prototype)) bound.prototype = fn.prototype;\n  return bound;\n};\n","function _objectWithoutPropertiesLoose(source, excluded) {\n  if (source == null) return {};\n  var target = {};\n  var sourceKeys = Object.keys(source);\n  var key, i;\n\n  for (i = 0; i < sourceKeys.length; i++) {\n    key = sourceKeys[i];\n    if (excluded.indexOf(key) >= 0) continue;\n    target[key] = source[key];\n  }\n\n  return target;\n}\n\nmodule.exports = _objectWithoutPropertiesLoose;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = getWindow;\n\nfunction getWindow(node) {\n  return node === node.window ? node : node.nodeType === 9 ? node.defaultView || node.parentWindow : false;\n}\n\nmodule.exports = exports[\"default\"];","'use strict';\nvar $defineProperty = require('./_object-dp');\nvar createDesc = require('./_property-desc');\n\nmodule.exports = function (object, index, value) {\n  if (index in object) $defineProperty.f(object, index, createDesc(0, value));\n  else object[index] = value;\n};\n","// 19.1.3.1 Object.assign(target, source)\nvar $export = require('./_export');\n\n$export($export.S + $export.F, 'Object', { assign: require('./_object-assign') });\n","exports.polyfill = Component => Component\n","'use strict';\nvar strong = require('./_collection-strong');\nvar validate = require('./_validate-collection');\nvar MAP = 'Map';\n\n// 23.1 Map Objects\nmodule.exports = require('./_collection')(MAP, function (get) {\n  return function Map() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n}, {\n  // 23.1.3.6 Map.prototype.get(key)\n  get: function get(key) {\n    var entry = strong.getEntry(validate(this, MAP), key);\n    return entry && entry.v;\n  },\n  // 23.1.3.9 Map.prototype.set(key, value)\n  set: function set(key, value) {\n    return strong.def(validate(this, MAP), key === 0 ? 0 : key, value);\n  }\n}, strong, true);\n","// 21.1.3.18 String.prototype.startsWith(searchString [, position ])\n'use strict';\nvar $export = require('./_export');\nvar toLength = require('./_to-length');\nvar context = require('./_string-context');\nvar STARTS_WITH = 'startsWith';\nvar $startsWith = ''[STARTS_WITH];\n\n$export($export.P + $export.F * require('./_fails-is-regexp')(STARTS_WITH), 'String', {\n  startsWith: function startsWith(searchString /* , position = 0 */) {\n    var that = context(this, searchString, STARTS_WITH);\n    var index = toLength(Math.min(arguments.length > 1 ? arguments[1] : undefined, that.length));\n    var search = String(searchString);\n    return $startsWith\n      ? $startsWith.call(that, search, index)\n      : that.slice(index, index + search.length) === search;\n  }\n});\n","import \"core-js/modules/es6.regexp.split\";\nimport \"core-js/modules/es6.array.for-each\";\nimport \"core-js/modules/es6.promise\";\nimport \"core-js/modules/es6.object.to-string\";\nimport \"core-js/modules/es6.date.now\";\nimport \"core-js/modules/es6.regexp.replace\";\nimport \"core-js/modules/es6.array.filter\";\nimport \"core-js/modules/es6.object.assign\";\n\nvar _extends = Object.assign || function (target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments[i];\n\n    for (var key in source) {\n      if (Object.prototype.hasOwnProperty.call(source, key)) {\n        target[key] = source[key];\n      }\n    }\n  }\n\n  return target;\n};\n\nvar getLocation = function getLocation(source) {\n  return _extends({}, source.location, {\n    state: source.history.state,\n    key: source.history.state && source.history.state.key || \"initial\"\n  });\n};\n\nvar createHistory = function createHistory(source, options) {\n  var listeners = [];\n  var location = getLocation(source);\n  var transitioning = false;\n\n  var resolveTransition = function resolveTransition() {};\n\n  return {\n    get location() {\n      return location;\n    },\n\n    get transitioning() {\n      return transitioning;\n    },\n\n    _onTransitionComplete: function _onTransitionComplete() {\n      transitioning = false;\n      resolveTransition();\n    },\n    listen: function listen(listener) {\n      listeners.push(listener);\n\n      var popstateListener = function popstateListener() {\n        location = getLocation(source);\n        listener({\n          location: location,\n          action: \"POP\"\n        });\n      };\n\n      source.addEventListener(\"popstate\", popstateListener);\n      return function () {\n        source.removeEventListener(\"popstate\", popstateListener);\n        listeners = listeners.filter(function (fn) {\n          return fn !== listener;\n        });\n      };\n    },\n    navigate: function navigate(to) {\n      var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n          state = _ref.state,\n          _ref$replace = _ref.replace,\n          replace = _ref$replace === undefined ? false : _ref$replace;\n\n      state = _extends({}, state, {\n        key: Date.now() + \"\"\n      }); // try...catch iOS Safari limits to 100 pushState calls\n\n      try {\n        if (transitioning || replace) {\n          source.history.replaceState(state, null, to);\n        } else {\n          source.history.pushState(state, null, to);\n        }\n      } catch (e) {\n        source.location[replace ? \"replace\" : \"assign\"](to);\n      }\n\n      location = getLocation(source);\n      transitioning = true;\n      var transition = new Promise(function (res) {\n        return resolveTransition = res;\n      });\n      listeners.forEach(function (listener) {\n        return listener({\n          location: location,\n          action: \"PUSH\"\n        });\n      });\n      return transition;\n    }\n  };\n}; ////////////////////////////////////////////////////////////////////////////////\n// Stores history entries in memory for testing or other platforms like Native\n\n\nvar createMemorySource = function createMemorySource() {\n  var initialPathname = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : \"/\";\n  var index = 0;\n  var stack = [{\n    pathname: initialPathname,\n    search: \"\"\n  }];\n  var states = [];\n  return {\n    get location() {\n      return stack[index];\n    },\n\n    addEventListener: function addEventListener(name, fn) {},\n    removeEventListener: function removeEventListener(name, fn) {},\n    history: {\n      get entries() {\n        return stack;\n      },\n\n      get index() {\n        return index;\n      },\n\n      get state() {\n        return states[index];\n      },\n\n      pushState: function pushState(state, _, uri) {\n        var _uri$split = uri.split(\"?\"),\n            pathname = _uri$split[0],\n            _uri$split$ = _uri$split[1],\n            search = _uri$split$ === undefined ? \"\" : _uri$split$;\n\n        index++;\n        stack.push({\n          pathname: pathname,\n          search: search\n        });\n        states.push(state);\n      },\n      replaceState: function replaceState(state, _, uri) {\n        var _uri$split2 = uri.split(\"?\"),\n            pathname = _uri$split2[0],\n            _uri$split2$ = _uri$split2[1],\n            search = _uri$split2$ === undefined ? \"\" : _uri$split2$;\n\n        stack[index] = {\n          pathname: pathname,\n          search: search\n        };\n        states[index] = state;\n      }\n    }\n  };\n}; ////////////////////////////////////////////////////////////////////////////////\n// global history - uses window.history as the source if available, otherwise a\n// memory history\n\n\nvar canUseDOM = !!(typeof window !== \"undefined\" && window.document && window.document.createElement);\n\nvar getSource = function getSource() {\n  return canUseDOM ? window : createMemorySource();\n};\n\nvar globalHistory = createHistory(getSource());\nvar navigate = globalHistory.navigate; ////////////////////////////////////////////////////////////////////////////////\n\nexport { globalHistory, navigate, createHistory, createMemorySource };","module.exports = function (it, Constructor, name, forbiddenField) {\n  if (!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)) {\n    throw TypeError(name + ': incorrect invocation!');\n  } return it;\n};\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\n/**\n * Get a manifest filename depending on localized pathname\n *\n * @param {string} pathname\n * @param {Array<{start_url: string, lang: string}>} localizedManifests\n * @return string\n */\nvar _default = function _default(pathname, localizedManifests) {\n  var defaultFilename = \"manifest.webmanifest\";\n\n  if (!Array.isArray(localizedManifests)) {\n    return defaultFilename;\n  }\n\n  var localizedManifest = localizedManifests.find(function (app) {\n    return pathname.startsWith(app.start_url);\n  });\n\n  if (!localizedManifest) {\n    return defaultFilename;\n  }\n\n  return \"manifest_\" + localizedManifest.lang + \".webmanifest\";\n};\n\nexports.default = _default;","'use strict';\nvar at = require('./_string-at')(true);\n\n // `AdvanceStringIndex` abstract operation\n// https://tc39.github.io/ecma262/#sec-advancestringindex\nmodule.exports = function (S, index, unicode) {\n  return index + (unicode ? at(S, index).length : 1);\n};\n","'use strict';\nvar LIBRARY = require('./_library');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar $iterCreate = require('./_iter-create');\nvar setToStringTag = require('./_set-to-string-tag');\nvar getPrototypeOf = require('./_object-gpo');\nvar ITERATOR = require('./_wks')('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n  $iterCreate(Constructor, NAME, next);\n  var getMethod = function (kind) {\n    if (!BUGGY && kind in proto) return proto[kind];\n    switch (kind) {\n      case KEYS: return function keys() { return new Constructor(this, kind); };\n      case VALUES: return function values() { return new Constructor(this, kind); };\n    } return function entries() { return new Constructor(this, kind); };\n  };\n  var TAG = NAME + ' Iterator';\n  var DEF_VALUES = DEFAULT == VALUES;\n  var VALUES_BUG = false;\n  var proto = Base.prototype;\n  var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n  var $default = $native || getMethod(DEFAULT);\n  var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n  var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n  var methods, key, IteratorPrototype;\n  // Fix native\n  if ($anyNative) {\n    IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n    if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n      // Set @@toStringTag to native iterators\n      setToStringTag(IteratorPrototype, TAG, true);\n      // fix for some old engines\n      if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);\n    }\n  }\n  // fix Array#{values, @@iterator}.name in V8 / FF\n  if (DEF_VALUES && $native && $native.name !== VALUES) {\n    VALUES_BUG = true;\n    $default = function values() { return $native.call(this); };\n  }\n  // Define iterator\n  if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n    hide(proto, ITERATOR, $default);\n  }\n  // Plug for library\n  Iterators[NAME] = $default;\n  Iterators[TAG] = returnThis;\n  if (DEFAULT) {\n    methods = {\n      values: DEF_VALUES ? $default : getMethod(VALUES),\n      keys: IS_SET ? $default : getMethod(KEYS),\n      entries: $entries\n    };\n    if (FORCED) for (key in methods) {\n      if (!(key in proto)) redefine(proto, key, methods[key]);\n    } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n  }\n  return methods;\n};\n","var toInteger = require('./_to-integer');\nvar defined = require('./_defined');\n// true  -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n  return function (that, pos) {\n    var s = String(defined(that));\n    var i = toInteger(pos);\n    var l = s.length;\n    var a, b;\n    if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n    a = s.charCodeAt(i);\n    return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n      ? TO_STRING ? s.charAt(i) : a\n      : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n  };\n};\n","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _default = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n\nexports[\"default\"] = _default;\nmodule.exports = exports[\"default\"];","'use strict';\n// 19.1.3.6 Object.prototype.toString()\nvar classof = require('./_classof');\nvar test = {};\ntest[require('./_wks')('toStringTag')] = 'z';\nif (test + '' != '[object z]') {\n  require('./_redefine')(Object.prototype, 'toString', function toString() {\n    return '[object ' + classof(this) + ']';\n  }, true);\n}\n","'use strict';\n// 21.2.5.3 get RegExp.prototype.flags\nvar anObject = require('./_an-object');\nmodule.exports = function () {\n  var that = anObject(this);\n  var result = '';\n  if (that.global) result += 'g';\n  if (that.ignoreCase) result += 'i';\n  if (that.multiline) result += 'm';\n  if (that.unicode) result += 'u';\n  if (that.sticky) result += 'y';\n  return result;\n};\n","// 0 -> Array#forEach\n// 1 -> Array#map\n// 2 -> Array#filter\n// 3 -> Array#some\n// 4 -> Array#every\n// 5 -> Array#find\n// 6 -> Array#findIndex\nvar ctx = require('./_ctx');\nvar IObject = require('./_iobject');\nvar toObject = require('./_to-object');\nvar toLength = require('./_to-length');\nvar asc = require('./_array-species-create');\nmodule.exports = function (TYPE, $create) {\n  var IS_MAP = TYPE == 1;\n  var IS_FILTER = TYPE == 2;\n  var IS_SOME = TYPE == 3;\n  var IS_EVERY = TYPE == 4;\n  var IS_FIND_INDEX = TYPE == 6;\n  var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n  var create = $create || asc;\n  return function ($this, callbackfn, that) {\n    var O = toObject($this);\n    var self = IObject(O);\n    var f = ctx(callbackfn, that, 3);\n    var length = toLength(self.length);\n    var index = 0;\n    var result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;\n    var val, res;\n    for (;length > index; index++) if (NO_HOLES || index in self) {\n      val = self[index];\n      res = f(val, index, O);\n      if (TYPE) {\n        if (IS_MAP) result[index] = res;   // map\n        else if (res) switch (TYPE) {\n          case 3: return true;             // some\n          case 5: return val;              // find\n          case 6: return index;            // findIndex\n          case 2: result.push(val);        // filter\n        } else if (IS_EVERY) return false; // every\n      }\n    }\n    return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result;\n  };\n};\n","'use strict';\nvar $export = require('./_export');\nvar $reduce = require('./_array-reduce');\n\n$export($export.P + $export.F * !require('./_strict-method')([].reduce, true), 'Array', {\n  // 22.1.3.18 / 15.4.4.21 Array.prototype.reduce(callbackfn [, initialValue])\n  reduce: function reduce(callbackfn /* , initialValue */) {\n    return $reduce(this, callbackfn, arguments.length, arguments[1], false);\n  }\n});\n","// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = require('./_object-keys-internal');\nvar enumBugKeys = require('./_enum-bug-keys');\n\nmodule.exports = Object.keys || function keys(O) {\n  return $keys(O, enumBugKeys);\n};\n","'use strict';\nvar global = require('./_global');\nvar each = require('./_array-methods')(0);\nvar redefine = require('./_redefine');\nvar meta = require('./_meta');\nvar assign = require('./_object-assign');\nvar weak = require('./_collection-weak');\nvar isObject = require('./_is-object');\nvar validate = require('./_validate-collection');\nvar NATIVE_WEAK_MAP = require('./_validate-collection');\nvar IS_IE11 = !global.ActiveXObject && 'ActiveXObject' in global;\nvar WEAK_MAP = 'WeakMap';\nvar getWeak = meta.getWeak;\nvar isExtensible = Object.isExtensible;\nvar uncaughtFrozenStore = weak.ufstore;\nvar InternalMap;\n\nvar wrapper = function (get) {\n  return function WeakMap() {\n    return get(this, arguments.length > 0 ? arguments[0] : undefined);\n  };\n};\n\nvar methods = {\n  // 23.3.3.3 WeakMap.prototype.get(key)\n  get: function get(key) {\n    if (isObject(key)) {\n      var data = getWeak(key);\n      if (data === true) return uncaughtFrozenStore(validate(this, WEAK_MAP)).get(key);\n      return data ? data[this._i] : undefined;\n    }\n  },\n  // 23.3.3.5 WeakMap.prototype.set(key, value)\n  set: function set(key, value) {\n    return weak.def(validate(this, WEAK_MAP), key, value);\n  }\n};\n\n// 23.3 WeakMap Objects\nvar $WeakMap = module.exports = require('./_collection')(WEAK_MAP, wrapper, methods, weak, true, true);\n\n// IE11 WeakMap frozen keys fix\nif (NATIVE_WEAK_MAP && IS_IE11) {\n  InternalMap = weak.getConstructor(wrapper, WEAK_MAP);\n  assign(InternalMap.prototype, methods);\n  meta.NEED = true;\n  each(['delete', 'has', 'get', 'set'], function (key) {\n    var proto = $WeakMap.prototype;\n    var method = proto[key];\n    redefine(proto, key, function (a, b) {\n      // store frozen objects on internal weakmap shim\n      if (isObject(a) && !isExtensible(a)) {\n        if (!this._f) this._f = new InternalMap();\n        var result = this._f[key](a, b);\n        return key == 'set' ? this : result;\n      // store all the rest on native weakmap\n      } return method.call(this, a, b);\n    });\n  });\n}\n","// 7.2.2 IsArray(argument)\nvar cof = require('./_cof');\nmodule.exports = Array.isArray || function isArray(arg) {\n  return cof(arg) == 'Array';\n};\n","var pIE = require('./_object-pie');\nvar createDesc = require('./_property-desc');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar has = require('./_has');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nexports.f = require('./_descriptors') ? gOPD : function getOwnPropertyDescriptor(O, P) {\n  O = toIObject(O);\n  P = toPrimitive(P, true);\n  if (IE8_DOM_DEFINE) try {\n    return gOPD(O, P);\n  } catch (e) { /* empty */ }\n  if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);\n};\n","var dP = require('./_object-dp');\nvar anObject = require('./_an-object');\nvar getKeys = require('./_object-keys');\n\nmodule.exports = require('./_descriptors') ? Object.defineProperties : function defineProperties(O, Properties) {\n  anObject(O);\n  var keys = getKeys(Properties);\n  var length = keys.length;\n  var i = 0;\n  var P;\n  while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n  return O;\n};\n","var ctx = require('./_ctx');\nvar invoke = require('./_invoke');\nvar html = require('./_html');\nvar cel = require('./_dom-create');\nvar global = require('./_global');\nvar process = global.process;\nvar setTask = global.setImmediate;\nvar clearTask = global.clearImmediate;\nvar MessageChannel = global.MessageChannel;\nvar Dispatch = global.Dispatch;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar defer, channel, port;\nvar run = function () {\n  var id = +this;\n  // eslint-disable-next-line no-prototype-builtins\n  if (queue.hasOwnProperty(id)) {\n    var fn = queue[id];\n    delete queue[id];\n    fn();\n  }\n};\nvar listener = function (event) {\n  run.call(event.data);\n};\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!setTask || !clearTask) {\n  setTask = function setImmediate(fn) {\n    var args = [];\n    var i = 1;\n    while (arguments.length > i) args.push(arguments[i++]);\n    queue[++counter] = function () {\n      // eslint-disable-next-line no-new-func\n      invoke(typeof fn == 'function' ? fn : Function(fn), args);\n    };\n    defer(counter);\n    return counter;\n  };\n  clearTask = function clearImmediate(id) {\n    delete queue[id];\n  };\n  // Node.js 0.8-\n  if (require('./_cof')(process) == 'process') {\n    defer = function (id) {\n      process.nextTick(ctx(run, id, 1));\n    };\n  // Sphere (JS game engine) Dispatch API\n  } else if (Dispatch && Dispatch.now) {\n    defer = function (id) {\n      Dispatch.now(ctx(run, id, 1));\n    };\n  // Browsers with MessageChannel, includes WebWorkers\n  } else if (MessageChannel) {\n    channel = new MessageChannel();\n    port = channel.port2;\n    channel.port1.onmessage = listener;\n    defer = ctx(port.postMessage, port, 1);\n  // Browsers with postMessage, skip WebWorkers\n  // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n  } else if (global.addEventListener && typeof postMessage == 'function' && !global.importScripts) {\n    defer = function (id) {\n      global.postMessage(id + '', '*');\n    };\n    global.addEventListener('message', listener, false);\n  // IE8-\n  } else if (ONREADYSTATECHANGE in cel('script')) {\n    defer = function (id) {\n      html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function () {\n        html.removeChild(this);\n        run.call(id);\n      };\n    };\n  // Rest old browsers\n  } else {\n    defer = function (id) {\n      setTimeout(ctx(run, id, 1), 0);\n    };\n  }\n}\nmodule.exports = {\n  set: setTask,\n  clear: clearTask\n};\n","// Copyright (c) 2017, 2020 IBM Corp. and others\n\n// This program and the accompanying materials are made available under\n// the terms of the Eclipse Public License 2.0 which accompanies this\n// distribution and is available at https://www.eclipse.org/legal/epl-2.0/\n// or the Apache License, Version 2.0 which accompanies this distribution and\n// is available at https://www.apache.org/licenses/LICENSE-2.0.\n\n// This Source Code may also be made available under the following\n// Secondary Licenses when the conditions for such availability set\n// forth in the Eclipse Public License, v. 2.0 are satisfied: GNU\n// General Public License, version 2 with the GNU Classpath\n// Exception [1] and GNU General Public License, version 2 with the\n// OpenJDK Assembly Exception [2].\n\n// [1] https://www.gnu.org/software/classpath/license.html\n// [2] http://openjdk.java.net/legal/assembly-exception.html\n\n// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 OR LicenseRef-GPL-2.0 WITH Assembly-exception\n\n// The project website pages cannot be redistributed\n\nimport '@fortawesome/fontawesome-free/css/all.css'","// call something on iterator step with safe closing on error\nvar anObject = require('./_an-object');\nmodule.exports = function (iterator, fn, value, entries) {\n  try {\n    return entries ? fn(anObject(value)[0], value[1]) : fn(value);\n  // 7.4.6 IteratorClose(iterator, completion)\n  } catch (e) {\n    var ret = iterator['return'];\n    if (ret !== undefined) anObject(ret.call(iterator));\n    throw e;\n  }\n};\n","var $export = require('./_export');\n// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)\n$export($export.S + $export.F * !require('./_descriptors'), 'Object', { defineProperty: require('./_object-dp').f });\n","'use strict';\nvar ctx = require('./_ctx');\nvar $export = require('./_export');\nvar toObject = require('./_to-object');\nvar call = require('./_iter-call');\nvar isArrayIter = require('./_is-array-iter');\nvar toLength = require('./_to-length');\nvar createProperty = require('./_create-property');\nvar getIterFn = require('./core.get-iterator-method');\n\n$export($export.S + $export.F * !require('./_iter-detect')(function (iter) { Array.from(iter); }), 'Array', {\n  // 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined)\n  from: function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n    var O = toObject(arrayLike);\n    var C = typeof this == 'function' ? this : Array;\n    var aLen = arguments.length;\n    var mapfn = aLen > 1 ? arguments[1] : undefined;\n    var mapping = mapfn !== undefined;\n    var index = 0;\n    var iterFn = getIterFn(O);\n    var length, result, step, iterator;\n    if (mapping) mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2);\n    // if object isn't iterable or it's array with default iterator - use simple case\n    if (iterFn != undefined && !(C == Array && isArrayIter(iterFn))) {\n      for (iterator = iterFn.call(O), result = new C(); !(step = iterator.next()).done; index++) {\n        createProperty(result, index, mapping ? call(iterator, mapfn, [step.value, index], true) : step.value);\n      }\n    } else {\n      length = toLength(O.length);\n      for (result = new C(length); length > index; index++) {\n        createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]);\n      }\n    }\n    result.length = index;\n    return result;\n  }\n});\n","// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = require('./_cof');\nvar TAG = require('./_wks')('toStringTag');\n// ES3 wrong here\nvar ARG = cof(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n  try {\n    return it[key];\n  } catch (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n  var O, T, B;\n  return it === undefined ? 'Undefined' : it === null ? 'Null'\n    // @@toStringTag case\n    : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n    // builtinTag case\n    : ARG ? cof(O)\n    // ES3 arguments fallback\n    : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n","import React, { createElement } from \"react\"\nimport PropTypes from \"prop-types\"\nimport { publicLoader } from \"./loader\"\nimport { apiRunner } from \"./api-runner-browser\"\n\n// Renders page\nclass PageRenderer extends React.Component {\n  render() {\n    const props = {\n      ...this.props,\n      pathContext: this.props.pageContext,\n    }\n\n    const [replacementElement] = apiRunner(`replaceComponentRenderer`, {\n      props: this.props,\n      loader: publicLoader,\n    })\n\n    const pageElement =\n      replacementElement ||\n      createElement(this.props.pageResources.component, {\n        ...props,\n        key: this.props.path || this.props.pageResources.page.path,\n      })\n\n    const wrappedPage = apiRunner(\n      `wrapPageElement`,\n      { element: pageElement, props },\n      pageElement,\n      ({ result }) => {\n        return { element: result, props }\n      }\n    ).pop()\n\n    return wrappedPage\n  }\n}\n\nPageRenderer.propTypes = {\n  location: PropTypes.object.isRequired,\n  pageResources: PropTypes.object.isRequired,\n  data: PropTypes.object,\n  pageContext: PropTypes.object.isRequired,\n}\n\nexport default PageRenderer\n","'use strict';\nrequire('./es6.regexp.exec');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar fails = require('./_fails');\nvar defined = require('./_defined');\nvar wks = require('./_wks');\nvar regexpExec = require('./_regexp-exec');\n\nvar SPECIES = wks('species');\n\nvar REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {\n  // #replace needs built-in support for named groups.\n  // #match works fine because it just return the exec results, even if it has\n  // a \"grops\" property.\n  var re = /./;\n  re.exec = function () {\n    var result = [];\n    result.groups = { a: '7' };\n    return result;\n  };\n  return ''.replace(re, '$<a>') !== '7';\n});\n\nvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = (function () {\n  // Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\n  var re = /(?:)/;\n  var originalExec = re.exec;\n  re.exec = function () { return originalExec.apply(this, arguments); };\n  var result = 'ab'.split(re);\n  return result.length === 2 && result[0] === 'a' && result[1] === 'b';\n})();\n\nmodule.exports = function (KEY, length, exec) {\n  var SYMBOL = wks(KEY);\n\n  var DELEGATES_TO_SYMBOL = !fails(function () {\n    // String methods call symbol-named RegEp methods\n    var O = {};\n    O[SYMBOL] = function () { return 7; };\n    return ''[KEY](O) != 7;\n  });\n\n  var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL ? !fails(function () {\n    // Symbol-named RegExp methods call .exec\n    var execCalled = false;\n    var re = /a/;\n    re.exec = function () { execCalled = true; return null; };\n    if (KEY === 'split') {\n      // RegExp[@@split] doesn't call the regex's exec method, but first creates\n      // a new one. We need to return the patched regex when creating the new one.\n      re.constructor = {};\n      re.constructor[SPECIES] = function () { return re; };\n    }\n    re[SYMBOL]('');\n    return !execCalled;\n  }) : undefined;\n\n  if (\n    !DELEGATES_TO_SYMBOL ||\n    !DELEGATES_TO_EXEC ||\n    (KEY === 'replace' && !REPLACE_SUPPORTS_NAMED_GROUPS) ||\n    (KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC)\n  ) {\n    var nativeRegExpMethod = /./[SYMBOL];\n    var fns = exec(\n      defined,\n      SYMBOL,\n      ''[KEY],\n      function maybeCallNative(nativeMethod, regexp, str, arg2, forceStringMethod) {\n        if (regexp.exec === regexpExec) {\n          if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\n            // The native String method already delegates to @@method (this\n            // polyfilled function), leasing to infinite recursion.\n            // We avoid it by directly calling the native @@method method.\n            return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) };\n          }\n          return { done: true, value: nativeMethod.call(str, regexp, arg2) };\n        }\n        return { done: false };\n      }\n    );\n    var strfn = fns[0];\n    var rxfn = fns[1];\n\n    redefine(String.prototype, KEY, strfn);\n    hide(RegExp.prototype, SYMBOL, length == 2\n      // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)\n      // 21.2.5.11 RegExp.prototype[@@split](string, limit)\n      ? function (string, arg) { return rxfn.call(string, this, arg); }\n      // 21.2.5.6 RegExp.prototype[@@match](string)\n      // 21.2.5.9 RegExp.prototype[@@search](string)\n      : function (string) { return rxfn.call(string, this); }\n    );\n  }\n};\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\n\nvar _inheritsLoose2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inheritsLoose\"));\n\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _reactDom = _interopRequireDefault(require(\"react-dom\"));\n\nvar _warning = _interopRequireDefault(require(\"warning\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar propTypes = {\n  scrollKey: _propTypes[\"default\"].string.isRequired,\n  shouldUpdateScroll: _propTypes[\"default\"].func,\n  children: _propTypes[\"default\"].element.isRequired\n};\nvar contextTypes = {\n  // This is necessary when rendering on the client. However, when rendering on\n  // the server, this container will do nothing, and thus does not require the\n  // scroll behavior context.\n  scrollBehavior: _propTypes[\"default\"].object\n};\n\nvar ScrollContainer =\n/*#__PURE__*/\nfunction (_React$Component) {\n  (0, _inheritsLoose2[\"default\"])(ScrollContainer, _React$Component);\n\n  function ScrollContainer(props, context) {\n    var _this;\n\n    _this = _React$Component.call(this, props, context) || this; // We don't re-register if the scroll key changes, so make sure we\n    // unregister with the initial scroll key just in case the user changes it.\n\n    (0, _defineProperty2[\"default\"])((0, _assertThisInitialized2[\"default\"])(_this), \"shouldUpdateScroll\", function (prevRouterProps, routerProps) {\n      var shouldUpdateScroll = _this.props.shouldUpdateScroll;\n\n      if (!shouldUpdateScroll) {\n        return true;\n      } // Hack to allow accessing scrollBehavior._stateStorage.\n\n\n      return shouldUpdateScroll.call(_this.context.scrollBehavior.scrollBehavior, prevRouterProps, routerProps);\n    });\n    _this.scrollKey = props.scrollKey;\n    return _this;\n  }\n\n  var _proto = ScrollContainer.prototype;\n\n  _proto.componentDidMount = function componentDidMount() {\n    this.context.scrollBehavior.registerElement(this.props.scrollKey, _reactDom[\"default\"].findDOMNode(this), // eslint-disable-line react/no-find-dom-node\n    this.shouldUpdateScroll); // Only keep around the current DOM node in development, as this is only\n    // for emitting the appropriate warning.\n\n    if (process.env.NODE_ENV !== \"production\") {\n      this.domNode = _reactDom[\"default\"].findDOMNode(this); // eslint-disable-line react/no-find-dom-node\n    }\n  };\n\n  _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n    (0, _warning[\"default\"])(prevProps.scrollKey === this.props.scrollKey, \"<ScrollContainer> does not support changing scrollKey.\");\n\n    if (process.env.NODE_ENV !== \"production\") {\n      var prevDomNode = this.domNode;\n      this.domNode = _reactDom[\"default\"].findDOMNode(this); // eslint-disable-line react/no-find-dom-node\n\n      (0, _warning[\"default\"])(this.domNode === prevDomNode, \"<ScrollContainer> does not support changing DOM node.\");\n    }\n  };\n\n  _proto.componentWillUnmount = function componentWillUnmount() {\n    this.context.scrollBehavior.unregisterElement(this.scrollKey);\n  };\n\n  _proto.render = function render() {\n    return this.props.children;\n  };\n\n  return ScrollContainer;\n}(_react[\"default\"].Component);\n\nScrollContainer.propTypes = propTypes;\nScrollContainer.contextTypes = contextTypes;\nvar _default = ScrollContainer;\nexports[\"default\"] = _default;","var isObject = require('./_is-object');\nvar document = require('./_global').document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n  return is ? document.createElement(it) : {};\n};\n","var classof = require('./_classof');\nvar ITERATOR = require('./_wks')('iterator');\nvar Iterators = require('./_iterators');\nmodule.exports = require('./_core').getIteratorMethod = function (it) {\n  if (it != undefined) return it[ITERATOR]\n    || it['@@iterator']\n    || Iterators[classof(it)];\n};\n","exports.f = Object.getOwnPropertySymbols;\n","var store = require('./_shared')('wks');\nvar uid = require('./_uid');\nvar Symbol = require('./_global').Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n  return store[name] || (store[name] =\n    USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n","'use strict';\n\nvar isRegExp = require('./_is-regexp');\nvar anObject = require('./_an-object');\nvar speciesConstructor = require('./_species-constructor');\nvar advanceStringIndex = require('./_advance-string-index');\nvar toLength = require('./_to-length');\nvar callRegExpExec = require('./_regexp-exec-abstract');\nvar regexpExec = require('./_regexp-exec');\nvar fails = require('./_fails');\nvar $min = Math.min;\nvar $push = [].push;\nvar $SPLIT = 'split';\nvar LENGTH = 'length';\nvar LAST_INDEX = 'lastIndex';\nvar MAX_UINT32 = 0xffffffff;\n\n// babel-minify transpiles RegExp('x', 'y') -> /x/y and it causes SyntaxError\nvar SUPPORTS_Y = !fails(function () { RegExp(MAX_UINT32, 'y'); });\n\n// @@split logic\nrequire('./_fix-re-wks')('split', 2, function (defined, SPLIT, $split, maybeCallNative) {\n  var internalSplit;\n  if (\n    'abbc'[$SPLIT](/(b)*/)[1] == 'c' ||\n    'test'[$SPLIT](/(?:)/, -1)[LENGTH] != 4 ||\n    'ab'[$SPLIT](/(?:ab)*/)[LENGTH] != 2 ||\n    '.'[$SPLIT](/(.?)(.?)/)[LENGTH] != 4 ||\n    '.'[$SPLIT](/()()/)[LENGTH] > 1 ||\n    ''[$SPLIT](/.?/)[LENGTH]\n  ) {\n    // based on es5-shim implementation, need to rework it\n    internalSplit = function (separator, limit) {\n      var string = String(this);\n      if (separator === undefined && limit === 0) return [];\n      // If `separator` is not a regex, use native split\n      if (!isRegExp(separator)) return $split.call(string, separator, limit);\n      var output = [];\n      var flags = (separator.ignoreCase ? 'i' : '') +\n                  (separator.multiline ? 'm' : '') +\n                  (separator.unicode ? 'u' : '') +\n                  (separator.sticky ? 'y' : '');\n      var lastLastIndex = 0;\n      var splitLimit = limit === undefined ? MAX_UINT32 : limit >>> 0;\n      // Make `global` and avoid `lastIndex` issues by working with a copy\n      var separatorCopy = new RegExp(separator.source, flags + 'g');\n      var match, lastIndex, lastLength;\n      while (match = regexpExec.call(separatorCopy, string)) {\n        lastIndex = separatorCopy[LAST_INDEX];\n        if (lastIndex > lastLastIndex) {\n          output.push(string.slice(lastLastIndex, match.index));\n          if (match[LENGTH] > 1 && match.index < string[LENGTH]) $push.apply(output, match.slice(1));\n          lastLength = match[0][LENGTH];\n          lastLastIndex = lastIndex;\n          if (output[LENGTH] >= splitLimit) break;\n        }\n        if (separatorCopy[LAST_INDEX] === match.index) separatorCopy[LAST_INDEX]++; // Avoid an infinite loop\n      }\n      if (lastLastIndex === string[LENGTH]) {\n        if (lastLength || !separatorCopy.test('')) output.push('');\n      } else output.push(string.slice(lastLastIndex));\n      return output[LENGTH] > splitLimit ? output.slice(0, splitLimit) : output;\n    };\n  // Chakra, V8\n  } else if ('0'[$SPLIT](undefined, 0)[LENGTH]) {\n    internalSplit = function (separator, limit) {\n      return separator === undefined && limit === 0 ? [] : $split.call(this, separator, limit);\n    };\n  } else {\n    internalSplit = $split;\n  }\n\n  return [\n    // `String.prototype.split` method\n    // https://tc39.github.io/ecma262/#sec-string.prototype.split\n    function split(separator, limit) {\n      var O = defined(this);\n      var splitter = separator == undefined ? undefined : separator[SPLIT];\n      return splitter !== undefined\n        ? splitter.call(separator, O, limit)\n        : internalSplit.call(String(O), separator, limit);\n    },\n    // `RegExp.prototype[@@split]` method\n    // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@split\n    //\n    // NOTE: This cannot be properly polyfilled in engines that don't support\n    // the 'y' flag.\n    function (regexp, limit) {\n      var res = maybeCallNative(internalSplit, regexp, this, limit, internalSplit !== $split);\n      if (res.done) return res.value;\n\n      var rx = anObject(regexp);\n      var S = String(this);\n      var C = speciesConstructor(rx, RegExp);\n\n      var unicodeMatching = rx.unicode;\n      var flags = (rx.ignoreCase ? 'i' : '') +\n                  (rx.multiline ? 'm' : '') +\n                  (rx.unicode ? 'u' : '') +\n                  (SUPPORTS_Y ? 'y' : 'g');\n\n      // ^(? + rx + ) is needed, in combination with some S slicing, to\n      // simulate the 'y' flag.\n      var splitter = new C(SUPPORTS_Y ? rx : '^(?:' + rx.source + ')', flags);\n      var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n      if (lim === 0) return [];\n      if (S.length === 0) return callRegExpExec(splitter, S) === null ? [S] : [];\n      var p = 0;\n      var q = 0;\n      var A = [];\n      while (q < S.length) {\n        splitter.lastIndex = SUPPORTS_Y ? q : 0;\n        var z = callRegExpExec(splitter, SUPPORTS_Y ? S : S.slice(q));\n        var e;\n        if (\n          z === null ||\n          (e = $min(toLength(splitter.lastIndex + (SUPPORTS_Y ? 0 : q)), S.length)) === p\n        ) {\n          q = advanceStringIndex(S, q, unicodeMatching);\n        } else {\n          A.push(S.slice(p, q));\n          if (A.length === lim) return A;\n          for (var i = 1; i <= z.length - 1; i++) {\n            A.push(z[i]);\n            if (A.length === lim) return A;\n          }\n          q = p = e;\n        }\n      }\n      A.push(S.slice(p));\n      return A;\n    }\n  ];\n});\n","var global = require('./_global');\nvar hide = require('./_hide');\nvar has = require('./_has');\nvar SRC = require('./_uid')('src');\nvar $toString = require('./_function-to-string');\nvar TO_STRING = 'toString';\nvar TPL = ('' + $toString).split(TO_STRING);\n\nrequire('./_core').inspectSource = function (it) {\n  return $toString.call(it);\n};\n\n(module.exports = function (O, key, val, safe) {\n  var isFunction = typeof val == 'function';\n  if (isFunction) has(val, 'name') || hide(val, 'name', key);\n  if (O[key] === val) return;\n  if (isFunction) has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key)));\n  if (O === global) {\n    O[key] = val;\n  } else if (!safe) {\n    delete O[key];\n    hide(O, key, val);\n  } else if (O[key]) {\n    O[key] = val;\n  } else {\n    hide(O, key, val);\n  }\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, TO_STRING, function toString() {\n  return typeof this == 'function' && this[SRC] || $toString.call(this);\n});\n","// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = require('./_an-object');\nvar dPs = require('./_object-dps');\nvar enumBugKeys = require('./_enum-bug-keys');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n  // Thrash, waste and sodomy: IE GC bug\n  var iframe = require('./_dom-create')('iframe');\n  var i = enumBugKeys.length;\n  var lt = '<';\n  var gt = '>';\n  var iframeDocument;\n  iframe.style.display = 'none';\n  require('./_html').appendChild(iframe);\n  iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n  // createDict = iframe.contentWindow.Object;\n  // html.removeChild(iframe);\n  iframeDocument = iframe.contentWindow.document;\n  iframeDocument.open();\n  iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n  iframeDocument.close();\n  createDict = iframeDocument.F;\n  while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n  return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n  var result;\n  if (O !== null) {\n    Empty[PROTOTYPE] = anObject(O);\n    result = new Empty();\n    Empty[PROTOTYPE] = null;\n    // add \"__proto__\" for Object.getPrototypeOf polyfill\n    result[IE_PROTO] = O;\n  } else result = createDict();\n  return Properties === undefined ? result : dPs(result, Properties);\n};\n","// 21.1.3.7 String.prototype.includes(searchString, position = 0)\n'use strict';\nvar $export = require('./_export');\nvar context = require('./_string-context');\nvar INCLUDES = 'includes';\n\n$export($export.P + $export.F * require('./_fails-is-regexp')(INCLUDES), 'String', {\n  includes: function includes(searchString /* , position = 0 */) {\n    return !!~context(this, searchString, INCLUDES)\n      .indexOf(searchString, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n","\"use strict\";\n\nrequire(\"core-js/modules/es6.array.is-array\");\n\nrequire(\"core-js/modules/web.dom.iterable\");\n\nrequire(\"core-js/modules/es6.array.iterator\");\n\nrequire(\"core-js/modules/es6.object.keys\");\n\nrequire(\"core-js/modules/es6.array.for-each\");\n\nrequire(\"core-js/modules/es6.promise\");\n\nrequire(\"core-js/modules/es6.object.to-string\");\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _off = _interopRequireDefault(require(\"dom-helpers/events/off\"));\n\nvar _on = _interopRequireDefault(require(\"dom-helpers/events/on\"));\n\nvar _scrollLeft = _interopRequireDefault(require(\"dom-helpers/query/scrollLeft\"));\n\nvar _scrollTop = _interopRequireDefault(require(\"dom-helpers/query/scrollTop\"));\n\nvar _requestAnimationFrame = _interopRequireDefault(require(\"dom-helpers/util/requestAnimationFrame\"));\n\nvar _invariant = _interopRequireDefault(require(\"invariant\"));\n\nvar _utils = require(\"./utils\");\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    \"default\": obj\n  };\n}\n/* eslint-disable no-underscore-dangle */\n// Try at most this many times to scroll, to avoid getting stuck.\n\n\nvar MAX_SCROLL_ATTEMPTS = 2;\n\nvar ScrollBehavior =\n/*#__PURE__*/\nfunction () {\n  function ScrollBehavior(_ref) {\n    var _this = this;\n\n    var addTransitionHook = _ref.addTransitionHook,\n        stateStorage = _ref.stateStorage,\n        getCurrentLocation = _ref.getCurrentLocation,\n        shouldUpdateScroll = _ref.shouldUpdateScroll;\n\n    this._restoreScrollRestoration = function () {\n      /* istanbul ignore if: not supported by any browsers on Travis */\n      if (_this._oldScrollRestoration) {\n        try {\n          window.history.scrollRestoration = _this._oldScrollRestoration;\n        } catch (e) {\n          /* silence */\n        }\n      }\n    };\n\n    this._onWindowScroll = function () {\n      if (_this._ignoreScrollEvents) {\n        // Don't save the scroll position until the transition is complete\n        return;\n      } // It's possible that this scroll operation was triggered by what will be a\n      // `POP` transition. Instead of updating the saved location immediately, we\n      // have to enqueue the update, then potentially cancel it if we observe a\n      // location update.\n\n\n      if (!_this._saveWindowPositionHandle) {\n        _this._saveWindowPositionHandle = (0, _requestAnimationFrame[\"default\"])(_this._saveWindowPosition);\n      }\n\n      if (_this._windowScrollTarget) {\n        var _this$_windowScrollTa = _this._windowScrollTarget,\n            xTarget = _this$_windowScrollTa[0],\n            yTarget = _this$_windowScrollTa[1];\n        var x = (0, _scrollLeft[\"default\"])(window);\n        var y = (0, _scrollTop[\"default\"])(window);\n\n        if (x === xTarget && y === yTarget) {\n          _this._windowScrollTarget = null;\n\n          _this._cancelCheckWindowScroll();\n        }\n      }\n    };\n\n    this._saveWindowPosition = function () {\n      _this._saveWindowPositionHandle = null;\n\n      _this._savePosition(null, window);\n    };\n\n    this._checkWindowScrollPosition = function () {\n      _this._checkWindowScrollHandle = null; // We can only get here if scrollTarget is set. Every code path that unsets\n      // scroll target also cancels the handle to avoid calling this handler.\n      // Still, check anyway just in case.\n\n      /* istanbul ignore if: paranoid guard */\n\n      if (!_this._windowScrollTarget) {\n        return Promise.resolve();\n      }\n\n      _this.scrollToTarget(window, _this._windowScrollTarget);\n\n      ++_this._numWindowScrollAttempts;\n      /* istanbul ignore if: paranoid guard */\n\n      if (_this._numWindowScrollAttempts >= MAX_SCROLL_ATTEMPTS) {\n        // This might happen if the scroll position was already set to the target\n        _this._windowScrollTarget = null;\n        return Promise.resolve();\n      }\n\n      return new Promise(function (resolve) {\n        _this._checkWindowScrollHandle = (0, _requestAnimationFrame[\"default\"])(function () {\n          return resolve(_this._checkWindowScrollPosition());\n        });\n      });\n    };\n\n    this._stateStorage = stateStorage;\n    this._getCurrentLocation = getCurrentLocation;\n    this._shouldUpdateScroll = shouldUpdateScroll; // This helps avoid some jankiness in fighting against the browser's\n    // default scroll behavior on `POP` transitions.\n\n    /* istanbul ignore else: Travis browsers all support this */\n\n    if ('scrollRestoration' in window.history && // Unfortunately, Safari on iOS freezes for 2-6s after the user swipes to\n    // navigate through history with scrollRestoration being 'manual', so we\n    // need to detect this browser and exclude it from the following code\n    // until this bug is fixed by Apple.\n    !(0, _utils.isMobileSafari)()) {\n      this._oldScrollRestoration = window.history.scrollRestoration;\n\n      try {\n        window.history.scrollRestoration = 'manual'; // Scroll restoration persists across page reloads. We want to reset\n        // this to the original value, so that we can let the browser handle\n        // restoring the initial scroll position on server-rendered pages.\n\n        (0, _on[\"default\"])(window, 'beforeunload', this._restoreScrollRestoration);\n      } catch (e) {\n        this._oldScrollRestoration = null;\n      }\n    } else {\n      this._oldScrollRestoration = null;\n    }\n\n    this._saveWindowPositionHandle = null;\n    this._checkWindowScrollHandle = null;\n    this._windowScrollTarget = null;\n    this._numWindowScrollAttempts = 0;\n    this._ignoreScrollEvents = false;\n    this._scrollElements = {}; // We have to listen to each window scroll update rather than to just\n    // location updates, because some browsers will update scroll position\n    // before emitting the location change.\n\n    (0, _on[\"default\"])(window, 'scroll', this._onWindowScroll);\n    this._removeTransitionHook = addTransitionHook(function () {\n      _requestAnimationFrame[\"default\"].cancel(_this._saveWindowPositionHandle);\n\n      _this._saveWindowPositionHandle = null;\n      Object.keys(_this._scrollElements).forEach(function (key) {\n        var scrollElement = _this._scrollElements[key];\n\n        _requestAnimationFrame[\"default\"].cancel(scrollElement.savePositionHandle);\n\n        scrollElement.savePositionHandle = null; // It's fine to save element scroll positions here, though; the browser\n        // won't modify them.\n\n        if (!_this._ignoreScrollEvents) {\n          _this._saveElementPosition(key);\n        }\n      });\n    });\n  }\n\n  var _proto = ScrollBehavior.prototype;\n\n  _proto.registerElement = function registerElement(key, element, shouldUpdateScroll, context) {\n    var _this2 = this;\n\n    !!this._scrollElements[key] ? process.env.NODE_ENV !== \"production\" ? (0, _invariant[\"default\"])(false, 'ScrollBehavior: There is already an element registered for `%s`.', key) : invariant(false) : void 0;\n\n    var saveElementPosition = function saveElementPosition() {\n      _this2._saveElementPosition(key);\n    };\n\n    var scrollElement = {\n      element: element,\n      shouldUpdateScroll: shouldUpdateScroll,\n      savePositionHandle: null,\n      onScroll: function onScroll() {\n        if (!scrollElement.savePositionHandle && !_this2._ignoreScrollEvents) {\n          scrollElement.savePositionHandle = (0, _requestAnimationFrame[\"default\"])(saveElementPosition);\n        }\n      }\n    }; // In case no scrolling occurs, save the initial position\n\n    if (!scrollElement.savePositionHandle && !this._ignoreScrollEvents) {\n      scrollElement.savePositionHandle = (0, _requestAnimationFrame[\"default\"])(saveElementPosition);\n    }\n\n    this._scrollElements[key] = scrollElement;\n    (0, _on[\"default\"])(element, 'scroll', scrollElement.onScroll);\n\n    this._updateElementScroll(key, null, context);\n  };\n\n  _proto.unregisterElement = function unregisterElement(key) {\n    !this._scrollElements[key] ? process.env.NODE_ENV !== \"production\" ? (0, _invariant[\"default\"])(false, 'ScrollBehavior: There is no element registered for `%s`.', key) : invariant(false) : void 0;\n    var _this$_scrollElements = this._scrollElements[key],\n        element = _this$_scrollElements.element,\n        onScroll = _this$_scrollElements.onScroll,\n        savePositionHandle = _this$_scrollElements.savePositionHandle;\n    (0, _off[\"default\"])(element, 'scroll', onScroll);\n\n    _requestAnimationFrame[\"default\"].cancel(savePositionHandle);\n\n    delete this._scrollElements[key];\n  };\n\n  _proto.updateScroll = function updateScroll(prevContext, context) {\n    var _this3 = this;\n\n    this._updateWindowScroll(prevContext, context).then(function () {\n      // Save the position immediately after a transition so that if no\n      // scrolling occurs, there is still a saved position\n      if (!_this3._saveWindowPositionHandle) {\n        _this3._saveWindowPositionHandle = (0, _requestAnimationFrame[\"default\"])(_this3._saveWindowPosition);\n      }\n    });\n\n    Object.keys(this._scrollElements).forEach(function (key) {\n      _this3._updateElementScroll(key, prevContext, context);\n    });\n  };\n\n  _proto.stop = function stop() {\n    this._restoreScrollRestoration();\n\n    (0, _off[\"default\"])(window, 'scroll', this._onWindowScroll);\n\n    this._cancelCheckWindowScroll();\n\n    this._removeTransitionHook();\n  };\n\n  _proto.startIgnoringScrollEvents = function startIgnoringScrollEvents() {\n    this._ignoreScrollEvents = true;\n  };\n\n  _proto.stopIgnoringScrollEvents = function stopIgnoringScrollEvents() {\n    this._ignoreScrollEvents = false;\n  };\n\n  _proto._cancelCheckWindowScroll = function _cancelCheckWindowScroll() {\n    _requestAnimationFrame[\"default\"].cancel(this._checkWindowScrollHandle);\n\n    this._checkWindowScrollHandle = null;\n  };\n\n  _proto._saveElementPosition = function _saveElementPosition(key) {\n    var scrollElement = this._scrollElements[key];\n    scrollElement.savePositionHandle = null;\n\n    this._savePosition(key, scrollElement.element);\n  };\n\n  _proto._savePosition = function _savePosition(key, element) {\n    this._stateStorage.save(this._getCurrentLocation(), key, [(0, _scrollLeft[\"default\"])(element), (0, _scrollTop[\"default\"])(element)]);\n  };\n\n  _proto._updateWindowScroll = function _updateWindowScroll(prevContext, context) {\n    // Whatever we were doing before isn't relevant any more.\n    this._cancelCheckWindowScroll();\n\n    this._windowScrollTarget = this._getScrollTarget(null, this._shouldUpdateScroll, prevContext, context); // Updating the window scroll position is really flaky. Just trying to\n    // scroll it isn't enough. Instead, try to scroll a few times until it\n    // works.\n\n    this._numWindowScrollAttempts = 0;\n    return this._checkWindowScrollPosition();\n  };\n\n  _proto._updateElementScroll = function _updateElementScroll(key, prevContext, context) {\n    var _this$_scrollElements2 = this._scrollElements[key],\n        element = _this$_scrollElements2.element,\n        shouldUpdateScroll = _this$_scrollElements2.shouldUpdateScroll;\n\n    var scrollTarget = this._getScrollTarget(key, shouldUpdateScroll, prevContext, context);\n\n    if (!scrollTarget) {\n      return;\n    } // Unlike with the window, there shouldn't be any flakiness to deal with\n    // here.\n\n\n    this.scrollToTarget(element, scrollTarget);\n  };\n\n  _proto._getDefaultScrollTarget = function _getDefaultScrollTarget(location) {\n    var hash = location.hash;\n\n    if (hash && hash !== '#') {\n      return hash.charAt(0) === '#' ? hash.slice(1) : hash;\n    }\n\n    return [0, 0];\n  };\n\n  _proto._getScrollTarget = function _getScrollTarget(key, shouldUpdateScroll, prevContext, context) {\n    var scrollTarget = shouldUpdateScroll ? shouldUpdateScroll.call(this, prevContext, context) : true;\n\n    if (!scrollTarget || Array.isArray(scrollTarget) || typeof scrollTarget === 'string') {\n      return scrollTarget;\n    }\n\n    var location = this._getCurrentLocation();\n\n    return this._getSavedScrollTarget(key, location) || this._getDefaultScrollTarget(location);\n  };\n\n  _proto._getSavedScrollTarget = function _getSavedScrollTarget(key, location) {\n    if (location.action === 'PUSH') {\n      return null;\n    }\n\n    return this._stateStorage.read(location, key);\n  };\n\n  _proto.scrollToTarget = function scrollToTarget(element, target) {\n    if (typeof target === 'string') {\n      var targetElement = document.getElementById(target) || document.getElementsByName(target)[0];\n\n      if (targetElement) {\n        targetElement.scrollIntoView();\n        return;\n      } // Fallback to scrolling to top when target fragment doesn't exist.\n\n\n      target = [0, 0]; // eslint-disable-line no-param-reassign\n    }\n\n    var _target = target,\n        left = _target[0],\n        top = _target[1];\n    (0, _scrollLeft[\"default\"])(element, left);\n    (0, _scrollTop[\"default\"])(element, top);\n  };\n\n  return ScrollBehavior;\n}();\n\nexports[\"default\"] = ScrollBehavior;\nmodule.exports = exports[\"default\"];","// 22.1.2.2 / 15.4.3.2 Array.isArray(arg)\nvar $export = require('./_export');\n\n$export($export.S, 'Array', { isArray: require('./_is-array') });\n","module.exports = false;\n","import \"core-js/modules/es6.regexp.replace\";\nimport \"core-js/modules/es6.array.reduce\";\nimport \"core-js/modules/es6.array.filter\";\nimport \"core-js/modules/es6.array.sort\";\nimport \"core-js/modules/es6.array.index-of\";\nimport \"core-js/modules/es6.array.map\";\nimport \"core-js/modules/es6.regexp.split\";\nimport invariant from \"invariant\"; ////////////////////////////////////////////////////////////////////////////////\n// startsWith(string, search) - Check if `string` starts with `search`\n\nvar startsWith = function startsWith(string, search) {\n  return string.substr(0, search.length) === search;\n}; ////////////////////////////////////////////////////////////////////////////////\n// pick(routes, uri)\n//\n// Ranks and picks the best route to match. Each segment gets the highest\n// amount of points, then the type of segment gets an additional amount of\n// points where\n//\n//     static > dynamic > splat > root\n//\n// This way we don't have to worry about the order of our routes, let the\n// computers do it.\n//\n// A route looks like this\n//\n//     { path, default, value }\n//\n// And a returned match looks like:\n//\n//     { route, params, uri }\n//\n// I know, I should use TypeScript not comments for these types.\n\n\nvar pick = function pick(routes, uri) {\n  var match = void 0;\n  var default_ = void 0;\n\n  var _uri$split = uri.split(\"?\"),\n      uriPathname = _uri$split[0];\n\n  var uriSegments = segmentize(uriPathname);\n  var isRootUri = uriSegments[0] === \"\";\n  var ranked = rankRoutes(routes);\n\n  for (var i = 0, l = ranked.length; i < l; i++) {\n    var missed = false;\n    var route = ranked[i].route;\n\n    if (route[\"default\"]) {\n      default_ = {\n        route: route,\n        params: {},\n        uri: uri\n      };\n      continue;\n    }\n\n    var routeSegments = segmentize(route.path);\n    var params = {};\n    var max = Math.max(uriSegments.length, routeSegments.length);\n    var index = 0;\n\n    for (; index < max; index++) {\n      var routeSegment = routeSegments[index];\n      var uriSegment = uriSegments[index];\n\n      var _isSplat = routeSegment === \"*\";\n\n      if (_isSplat) {\n        // Hit a splat, just grab the rest, and return a match\n        // uri:   /files/documents/work\n        // route: /files/*\n        params[\"*\"] = uriSegments.slice(index).map(decodeURIComponent).join(\"/\");\n        break;\n      }\n\n      if (uriSegment === undefined) {\n        // URI is shorter than the route, no match\n        // uri:   /users\n        // route: /users/:userId\n        missed = true;\n        break;\n      }\n\n      var dynamicMatch = paramRe.exec(routeSegment);\n\n      if (dynamicMatch && !isRootUri) {\n        var matchIsNotReserved = reservedNames.indexOf(dynamicMatch[1]) === -1;\n        !matchIsNotReserved ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"<Router> dynamic segment \\\"\" + dynamicMatch[1] + \"\\\" is a reserved name. Please use a different name in path \\\"\" + route.path + \"\\\".\") : invariant(false) : void 0;\n        var value = decodeURIComponent(uriSegment);\n        params[dynamicMatch[1]] = value;\n      } else if (routeSegment !== uriSegment) {\n        // Current segments don't match, not dynamic, not splat, so no match\n        // uri:   /users/123/settings\n        // route: /users/:id/profile\n        missed = true;\n        break;\n      }\n    }\n\n    if (!missed) {\n      match = {\n        route: route,\n        params: params,\n        uri: \"/\" + uriSegments.slice(0, index).join(\"/\")\n      };\n      break;\n    }\n  }\n\n  return match || default_ || null;\n}; ////////////////////////////////////////////////////////////////////////////////\n// match(path, uri) - Matches just one path to a uri, also lol\n\n\nvar match = function match(path, uri) {\n  return pick([{\n    path: path\n  }], uri);\n}; ////////////////////////////////////////////////////////////////////////////////\n// resolve(to, basepath)\n//\n// Resolves URIs as though every path is a directory, no files.  Relative URIs\n// in the browser can feel awkward because not only can you be \"in a directory\"\n// you can be \"at a file\", too. For example\n//\n//     browserSpecResolve('foo', '/bar/') => /bar/foo\n//     browserSpecResolve('foo', '/bar') => /foo\n//\n// But on the command line of a file system, it's not as complicated, you can't\n// `cd` from a file, only directories.  This way, links have to know less about\n// their current path. To go deeper you can do this:\n//\n//     <Link to=\"deeper\"/>\n//     // instead of\n//     <Link to=`{${props.uri}/deeper}`/>\n//\n// Just like `cd`, if you want to go deeper from the command line, you do this:\n//\n//     cd deeper\n//     # not\n//     cd $(pwd)/deeper\n//\n// By treating every path as a directory, linking to relative paths should\n// require less contextual information and (fingers crossed) be more intuitive.\n\n\nvar resolve = function resolve(to, base) {\n  // /foo/bar, /baz/qux => /foo/bar\n  if (startsWith(to, \"/\")) {\n    return to;\n  }\n\n  var _to$split = to.split(\"?\"),\n      toPathname = _to$split[0],\n      toQuery = _to$split[1];\n\n  var _base$split = base.split(\"?\"),\n      basePathname = _base$split[0];\n\n  var toSegments = segmentize(toPathname);\n  var baseSegments = segmentize(basePathname); // ?a=b, /users?b=c => /users?a=b\n\n  if (toSegments[0] === \"\") {\n    return addQuery(basePathname, toQuery);\n  } // profile, /users/789 => /users/789/profile\n\n\n  if (!startsWith(toSegments[0], \".\")) {\n    var pathname = baseSegments.concat(toSegments).join(\"/\");\n    return addQuery((basePathname === \"/\" ? \"\" : \"/\") + pathname, toQuery);\n  } // ./         /users/123  =>  /users/123\n  // ../        /users/123  =>  /users\n  // ../..      /users/123  =>  /\n  // ../../one  /a/b/c/d    =>  /a/b/one\n  // .././one   /a/b/c/d    =>  /a/b/c/one\n\n\n  var allSegments = baseSegments.concat(toSegments);\n  var segments = [];\n\n  for (var i = 0, l = allSegments.length; i < l; i++) {\n    var segment = allSegments[i];\n    if (segment === \"..\") segments.pop();else if (segment !== \".\") segments.push(segment);\n  }\n\n  return addQuery(\"/\" + segments.join(\"/\"), toQuery);\n}; ////////////////////////////////////////////////////////////////////////////////\n// insertParams(path, params)\n\n\nvar insertParams = function insertParams(path, params) {\n  var segments = segmentize(path);\n  return \"/\" + segments.map(function (segment) {\n    var match = paramRe.exec(segment);\n    return match ? params[match[1]] : segment;\n  }).join(\"/\");\n};\n\nvar validateRedirect = function validateRedirect(from, to) {\n  var filter = function filter(segment) {\n    return isDynamic(segment);\n  };\n\n  var fromString = segmentize(from).filter(filter).sort().join(\"/\");\n  var toString = segmentize(to).filter(filter).sort().join(\"/\");\n  return fromString === toString;\n}; ////////////////////////////////////////////////////////////////////////////////\n// Junk\n\n\nvar paramRe = /^:(.+)/;\nvar SEGMENT_POINTS = 4;\nvar STATIC_POINTS = 3;\nvar DYNAMIC_POINTS = 2;\nvar SPLAT_PENALTY = 1;\nvar ROOT_POINTS = 1;\n\nvar isRootSegment = function isRootSegment(segment) {\n  return segment === \"\";\n};\n\nvar isDynamic = function isDynamic(segment) {\n  return paramRe.test(segment);\n};\n\nvar isSplat = function isSplat(segment) {\n  return segment === \"*\";\n};\n\nvar rankRoute = function rankRoute(route, index) {\n  var score = route[\"default\"] ? 0 : segmentize(route.path).reduce(function (score, segment) {\n    score += SEGMENT_POINTS;\n    if (isRootSegment(segment)) score += ROOT_POINTS;else if (isDynamic(segment)) score += DYNAMIC_POINTS;else if (isSplat(segment)) score -= SEGMENT_POINTS + SPLAT_PENALTY;else score += STATIC_POINTS;\n    return score;\n  }, 0);\n  return {\n    route: route,\n    score: score,\n    index: index\n  };\n};\n\nvar rankRoutes = function rankRoutes(routes) {\n  return routes.map(rankRoute).sort(function (a, b) {\n    return a.score < b.score ? 1 : a.score > b.score ? -1 : a.index - b.index;\n  });\n};\n\nvar segmentize = function segmentize(uri) {\n  return uri // strip starting/ending slashes\n  .replace(/(^\\/+|\\/+$)/g, \"\").split(\"/\");\n};\n\nvar addQuery = function addQuery(pathname, query) {\n  return pathname + (query ? \"?\" + query : \"\");\n};\n\nvar reservedNames = [\"uri\", \"path\"]; ////////////////////////////////////////////////////////////////////////////////\n\nexport { startsWith, pick, match, resolve, insertParams, validateRedirect };","var toString = {}.toString;\n\nmodule.exports = function (it) {\n  return toString.call(it).slice(8, -1);\n};\n","module.exports = [{\n      plugin: require('../node_modules/gatsby-plugin-manifest/gatsby-browser.js'),\n      options: {\"plugins\":[],\"icon\":\"static/openj9-logo.svg\",\"cache_busting_mode\":\"query\",\"include_favicon\":true,\"legacy\":true,\"theme_color_in_head\":true,\"cacheDigest\":\"521b6ab03638f6a52fffc5f7bf4c617e\"},\n    },{\n      plugin: require('../node_modules/gatsby-plugin-google-analytics/gatsby-browser.js'),\n      options: {\"plugins\":[],\"trackingId\":\"UA-105616558-3\",\"head\":false,\"anonymize\":true},\n    },{\n      plugin: require('../gatsby-browser.js'),\n      options: {\"plugins\":[]},\n    }]\n","'use strict';\nvar fails = require('./_fails');\n\nmodule.exports = function (method, arg) {\n  return !!method && fails(function () {\n    // eslint-disable-next-line no-useless-call\n    arg ? method.call(null, function () { /* empty */ }, 1) : method.call(null);\n  });\n};\n","// check on default Array iterator\nvar Iterators = require('./_iterators');\nvar ITERATOR = require('./_wks')('iterator');\nvar ArrayProto = Array.prototype;\n\nmodule.exports = function (it) {\n  return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);\n};\n","require(\"core-js/modules/es6.array.index-of\");\n\n/*!\n * domready (c) Dustin Diaz 2014 - License MIT\n * ie10 fix - Mikael Kristiansson 2019\n */\n!function (name, definition) {\n  if (typeof module != \"undefined\") module.exports = definition();else if (typeof define == \"function\" && typeof define.amd == \"object\") define(definition);else this[name] = definition();\n}(\"domready\", function () {\n  var ie10 = false;\n\n  if (navigator.appVersion.indexOf(\"MSIE 10\") !== -1) {\n    ie10 = true;\n  }\n\n  var fns = [],\n      _listener,\n      doc = typeof document === \"object\" && document,\n      hack = ie10 ? doc.documentElement.doScroll(\"left\") : doc.documentElement.doScroll,\n      domContentLoaded = \"DOMContentLoaded\",\n      loaded = doc && (hack ? /^loaded|^c/ : /^loaded|^i|^c/).test(doc.readyState);\n\n  if (!loaded && doc) doc.addEventListener(domContentLoaded, _listener = function listener() {\n    doc.removeEventListener(domContentLoaded, _listener);\n    loaded = 1;\n\n    while (_listener = fns.shift()) {\n      _listener();\n    }\n  });\n  return function (fn) {\n    loaded ? setTimeout(fn, 0) : fns.push(fn);\n  };\n});","// fast apply, http://jsperf.lnkit.com/fast-apply/5\nmodule.exports = function (fn, args, that) {\n  var un = that === undefined;\n  switch (args.length) {\n    case 0: return un ? fn()\n                      : fn.call(that);\n    case 1: return un ? fn(args[0])\n                      : fn.call(that, args[0]);\n    case 2: return un ? fn(args[0], args[1])\n                      : fn.call(that, args[0], args[1]);\n    case 3: return un ? fn(args[0], args[1], args[2])\n                      : fn.call(that, args[0], args[1], args[2]);\n    case 4: return un ? fn(args[0], args[1], args[2], args[3])\n                      : fn.call(that, args[0], args[1], args[2], args[3]);\n  } return fn.apply(that, args);\n};\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n'use strict';\n/* eslint-disable no-unused-vars */\n\nrequire(\"core-js/modules/web.dom.iterable\");\n\nrequire(\"core-js/modules/es6.array.iterator\");\n\nrequire(\"core-js/modules/es6.object.to-string\");\n\nrequire(\"core-js/modules/es6.object.keys\");\n\nrequire(\"core-js/modules/es6.regexp.split\");\n\nrequire(\"core-js/modules/es6.array.for-each\");\n\nrequire(\"core-js/modules/es6.array.map\");\n\nrequire(\"core-js/modules/es6.object.assign\");\n\nrequire(\"core-js/modules/es6.symbol\");\n\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n  if (val === null || val === undefined) {\n    throw new TypeError('Object.assign cannot be called with null or undefined');\n  }\n\n  return Object(val);\n}\n\nfunction shouldUseNative() {\n  try {\n    if (!Object.assign) {\n      return false;\n    } // Detect buggy property enumeration order in older V8 versions.\n    // https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\n\n    var test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\n    test1[5] = 'de';\n\n    if (Object.getOwnPropertyNames(test1)[0] === '5') {\n      return false;\n    } // https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\n\n    var test2 = {};\n\n    for (var i = 0; i < 10; i++) {\n      test2['_' + String.fromCharCode(i)] = i;\n    }\n\n    var order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n      return test2[n];\n    });\n\n    if (order2.join('') !== '0123456789') {\n      return false;\n    } // https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\n\n    var test3 = {};\n    'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n      test3[letter] = letter;\n    });\n\n    if (Object.keys(Object.assign({}, test3)).join('') !== 'abcdefghijklmnopqrst') {\n      return false;\n    }\n\n    return true;\n  } catch (err) {\n    // We don't expect any of the above to throw, but better to be safe.\n    return false;\n  }\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n  var from;\n  var to = toObject(target);\n  var symbols;\n\n  for (var s = 1; s < arguments.length; s++) {\n    from = Object(arguments[s]);\n\n    for (var key in from) {\n      if (hasOwnProperty.call(from, key)) {\n        to[key] = from[key];\n      }\n    }\n\n    if (getOwnPropertySymbols) {\n      symbols = getOwnPropertySymbols(from);\n\n      for (var i = 0; i < symbols.length; i++) {\n        if (propIsEnumerable.call(from, symbols[i])) {\n          to[symbols[i]] = from[symbols[i]];\n        }\n      }\n    }\n  }\n\n  return to;\n};","import \"core-js/modules/es6.regexp.to-string\";\nimport \"core-js/modules/es6.date.to-string\";\nimport \"core-js/modules/es6.object.to-string\";\n\n/* eslint-disable */\n// murmurhash2 via https://github.com/garycourt/murmurhash-js/blob/master/murmurhash2_gc.js\nfunction murmurhash2_32_gc(str) {\n  var l = str.length,\n      h = l ^ l,\n      i = 0,\n      k;\n\n  while (l >= 4) {\n    k = str.charCodeAt(i) & 0xff | (str.charCodeAt(++i) & 0xff) << 8 | (str.charCodeAt(++i) & 0xff) << 16 | (str.charCodeAt(++i) & 0xff) << 24;\n    k = (k & 0xffff) * 0x5bd1e995 + (((k >>> 16) * 0x5bd1e995 & 0xffff) << 16);\n    k ^= k >>> 24;\n    k = (k & 0xffff) * 0x5bd1e995 + (((k >>> 16) * 0x5bd1e995 & 0xffff) << 16);\n    h = (h & 0xffff) * 0x5bd1e995 + (((h >>> 16) * 0x5bd1e995 & 0xffff) << 16) ^ k;\n    l -= 4;\n    ++i;\n  }\n\n  switch (l) {\n    case 3:\n      h ^= (str.charCodeAt(i + 2) & 0xff) << 16;\n\n    case 2:\n      h ^= (str.charCodeAt(i + 1) & 0xff) << 8;\n\n    case 1:\n      h ^= str.charCodeAt(i) & 0xff;\n      h = (h & 0xffff) * 0x5bd1e995 + (((h >>> 16) * 0x5bd1e995 & 0xffff) << 16);\n  }\n\n  h ^= h >>> 13;\n  h = (h & 0xffff) * 0x5bd1e995 + (((h >>> 16) * 0x5bd1e995 & 0xffff) << 16);\n  h ^= h >>> 15;\n  return (h >>> 0).toString(36);\n}\n\nexport default murmurhash2_32_gc;","var unitlessKeys = {\n  animationIterationCount: 1,\n  borderImageOutset: 1,\n  borderImageSlice: 1,\n  borderImageWidth: 1,\n  boxFlex: 1,\n  boxFlexGroup: 1,\n  boxOrdinalGroup: 1,\n  columnCount: 1,\n  columns: 1,\n  flex: 1,\n  flexGrow: 1,\n  flexPositive: 1,\n  flexShrink: 1,\n  flexNegative: 1,\n  flexOrder: 1,\n  gridRow: 1,\n  gridRowEnd: 1,\n  gridRowSpan: 1,\n  gridRowStart: 1,\n  gridColumn: 1,\n  gridColumnEnd: 1,\n  gridColumnSpan: 1,\n  gridColumnStart: 1,\n  msGridRow: 1,\n  msGridRowSpan: 1,\n  msGridColumn: 1,\n  msGridColumnSpan: 1,\n  fontWeight: 1,\n  lineHeight: 1,\n  opacity: 1,\n  order: 1,\n  orphans: 1,\n  tabSize: 1,\n  widows: 1,\n  zIndex: 1,\n  zoom: 1,\n  WebkitLineClamp: 1,\n  // SVG-related properties\n  fillOpacity: 1,\n  floodOpacity: 1,\n  stopOpacity: 1,\n  strokeDasharray: 1,\n  strokeDashoffset: 1,\n  strokeMiterlimit: 1,\n  strokeOpacity: 1,\n  strokeWidth: 1\n};\nexport default unitlessKeys;","import \"core-js/modules/es6.array.is-array\";\nimport \"core-js/modules/es6.array.map\";\nimport \"core-js/modules/es6.function.name\";\nimport \"core-js/modules/es6.regexp.to-string\";\nimport \"core-js/modules/es6.date.to-string\";\nimport \"core-js/modules/es6.object.to-string\";\nimport \"core-js/modules/es6.array.index-of\";\nimport \"core-js/modules/es6.regexp.replace\";\nimport hashString from '@emotion/hash';\nimport unitless from '@emotion/unitless';\nimport memoize from '@emotion/memoize';\nvar ILLEGAL_ESCAPE_SEQUENCE_ERROR = \"You have illegal escape sequence in your template literal, most likely inside content's property value.\\nBecause you write your CSS inside a JavaScript string you actually have to do double escaping, so for example \\\"content: '\\\\00d7';\\\" should become \\\"content: '\\\\\\\\00d7';\\\".\\nYou can read more about this here:\\nhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals#ES2018_revision_of_illegal_escape_sequences\";\nvar UNDEFINED_AS_OBJECT_KEY_ERROR = \"You have passed in falsy value as style object's key (can happen when in example you pass unexported component as computed key).\";\nvar hyphenateRegex = /[A-Z]|^ms/g;\nvar animationRegex = /_EMO_([^_]+?)_([^]*?)_EMO_/g;\n\nvar isCustomProperty = function isCustomProperty(property) {\n  return property.charCodeAt(1) === 45;\n};\n\nvar isProcessableValue = function isProcessableValue(value) {\n  return value != null && typeof value !== 'boolean';\n};\n\nvar processStyleName = memoize(function (styleName) {\n  return isCustomProperty(styleName) ? styleName : styleName.replace(hyphenateRegex, '-$&').toLowerCase();\n});\n\nvar processStyleValue = function processStyleValue(key, value) {\n  switch (key) {\n    case 'animation':\n    case 'animationName':\n      {\n        if (typeof value === 'string') {\n          return value.replace(animationRegex, function (match, p1, p2) {\n            cursor = {\n              name: p1,\n              styles: p2,\n              next: cursor\n            };\n            return p1;\n          });\n        }\n      }\n  }\n\n  if (unitless[key] !== 1 && !isCustomProperty(key) && typeof value === 'number' && value !== 0) {\n    return value + 'px';\n  }\n\n  return value;\n};\n\nif (process.env.NODE_ENV !== 'production') {\n  var contentValuePattern = /(attr|calc|counters?|url)\\(/;\n  var contentValues = ['normal', 'none', 'counter', 'open-quote', 'close-quote', 'no-open-quote', 'no-close-quote', 'initial', 'inherit', 'unset'];\n  var oldProcessStyleValue = processStyleValue;\n  var msPattern = /^-ms-/;\n  var hyphenPattern = /-(.)/g;\n  var hyphenatedCache = {};\n\n  processStyleValue = function processStyleValue(key, value) {\n    if (key === 'content') {\n      if (typeof value !== 'string' || contentValues.indexOf(value) === -1 && !contentValuePattern.test(value) && (value.charAt(0) !== value.charAt(value.length - 1) || value.charAt(0) !== '\"' && value.charAt(0) !== \"'\")) {\n        console.error(\"You seem to be using a value for 'content' without quotes, try replacing it with `content: '\\\"\" + value + \"\\\"'`\");\n      }\n    }\n\n    var processed = oldProcessStyleValue(key, value);\n\n    if (processed !== '' && !isCustomProperty(key) && key.indexOf('-') !== -1 && hyphenatedCache[key] === undefined) {\n      hyphenatedCache[key] = true;\n      console.error(\"Using kebab-case for css properties in objects is not supported. Did you mean \" + key.replace(msPattern, 'ms-').replace(hyphenPattern, function (str, _char) {\n        return _char.toUpperCase();\n      }) + \"?\");\n    }\n\n    return processed;\n  };\n}\n\nvar shouldWarnAboutInterpolatingClassNameFromCss = true;\n\nfunction handleInterpolation(mergedProps, registered, interpolation, couldBeSelectorInterpolation) {\n  if (interpolation == null) {\n    return '';\n  }\n\n  if (interpolation.__emotion_styles !== undefined) {\n    if (process.env.NODE_ENV !== 'production' && interpolation.toString() === 'NO_COMPONENT_SELECTOR') {\n      throw new Error('Component selectors can only be used in conjunction with babel-plugin-emotion.');\n    }\n\n    return interpolation;\n  }\n\n  switch (typeof interpolation) {\n    case 'boolean':\n      {\n        return '';\n      }\n\n    case 'object':\n      {\n        if (interpolation.anim === 1) {\n          cursor = {\n            name: interpolation.name,\n            styles: interpolation.styles,\n            next: cursor\n          };\n          return interpolation.name;\n        }\n\n        if (interpolation.styles !== undefined) {\n          var next = interpolation.next;\n\n          if (next !== undefined) {\n            // not the most efficient thing ever but this is a pretty rare case\n            // and there will be very few iterations of this generally\n            while (next !== undefined) {\n              cursor = {\n                name: next.name,\n                styles: next.styles,\n                next: cursor\n              };\n              next = next.next;\n            }\n          }\n\n          var styles = interpolation.styles + \";\";\n\n          if (process.env.NODE_ENV !== 'production' && interpolation.map !== undefined) {\n            styles += interpolation.map;\n          }\n\n          return styles;\n        }\n\n        return createStringFromObject(mergedProps, registered, interpolation);\n      }\n\n    case 'function':\n      {\n        if (mergedProps !== undefined) {\n          var previousCursor = cursor;\n          var result = interpolation(mergedProps);\n          cursor = previousCursor;\n          return handleInterpolation(mergedProps, registered, result, couldBeSelectorInterpolation);\n        } else if (process.env.NODE_ENV !== 'production') {\n          console.error('Functions that are interpolated in css calls will be stringified.\\n' + 'If you want to have a css call based on props, create a function that returns a css call like this\\n' + 'let dynamicStyle = (props) => css`color: ${props.color}`\\n' + 'It can be called directly with props or interpolated in a styled call like this\\n' + \"let SomeComponent = styled('div')`${dynamicStyle}`\");\n        }\n\n        break;\n      }\n\n    case 'string':\n      if (process.env.NODE_ENV !== 'production') {\n        var matched = [];\n        var replaced = interpolation.replace(animationRegex, function (match, p1, p2) {\n          var fakeVarName = \"animation\" + matched.length;\n          matched.push(\"const \" + fakeVarName + \" = keyframes`\" + p2.replace(/^@keyframes animation-\\w+/, '') + \"`\");\n          return \"${\" + fakeVarName + \"}\";\n        });\n\n        if (matched.length) {\n          console.error('`keyframes` output got interpolated into plain string, please wrap it with `css`.\\n\\n' + 'Instead of doing this:\\n\\n' + [].concat(matched, [\"`\" + replaced + \"`\"]).join('\\n') + '\\n\\nYou should wrap it with `css` like this:\\n\\n' + (\"css`\" + replaced + \"`\"));\n        }\n      }\n\n      break;\n  } // finalize string values (regular strings and functions interpolated into css calls)\n\n\n  if (registered == null) {\n    return interpolation;\n  }\n\n  var cached = registered[interpolation];\n\n  if (process.env.NODE_ENV !== 'production' && couldBeSelectorInterpolation && shouldWarnAboutInterpolatingClassNameFromCss && cached !== undefined) {\n    console.error('Interpolating a className from css`` is not recommended and will cause problems with composition.\\n' + 'Interpolating a className from css`` will be completely unsupported in a future major version of Emotion');\n    shouldWarnAboutInterpolatingClassNameFromCss = false;\n  }\n\n  return cached !== undefined && !couldBeSelectorInterpolation ? cached : interpolation;\n}\n\nfunction createStringFromObject(mergedProps, registered, obj) {\n  var string = '';\n\n  if (Array.isArray(obj)) {\n    for (var i = 0; i < obj.length; i++) {\n      string += handleInterpolation(mergedProps, registered, obj[i], false);\n    }\n  } else {\n    for (var _key in obj) {\n      var value = obj[_key];\n\n      if (typeof value !== 'object') {\n        if (registered != null && registered[value] !== undefined) {\n          string += _key + \"{\" + registered[value] + \"}\";\n        } else if (isProcessableValue(value)) {\n          string += processStyleName(_key) + \":\" + processStyleValue(_key, value) + \";\";\n        }\n      } else {\n        if (_key === 'NO_COMPONENT_SELECTOR' && process.env.NODE_ENV !== 'production') {\n          throw new Error('Component selectors can only be used in conjunction with babel-plugin-emotion.');\n        }\n\n        if (Array.isArray(value) && typeof value[0] === 'string' && (registered == null || registered[value[0]] === undefined)) {\n          for (var _i = 0; _i < value.length; _i++) {\n            if (isProcessableValue(value[_i])) {\n              string += processStyleName(_key) + \":\" + processStyleValue(_key, value[_i]) + \";\";\n            }\n          }\n        } else {\n          var interpolated = handleInterpolation(mergedProps, registered, value, false);\n\n          switch (_key) {\n            case 'animation':\n            case 'animationName':\n              {\n                string += processStyleName(_key) + \":\" + interpolated + \";\";\n                break;\n              }\n\n            default:\n              {\n                if (process.env.NODE_ENV !== 'production' && _key === 'undefined') {\n                  console.error(UNDEFINED_AS_OBJECT_KEY_ERROR);\n                }\n\n                string += _key + \"{\" + interpolated + \"}\";\n              }\n          }\n        }\n      }\n    }\n  }\n\n  return string;\n}\n\nvar labelPattern = /label:\\s*([^\\s;\\n{]+)\\s*;/g;\nvar sourceMapPattern;\n\nif (process.env.NODE_ENV !== 'production') {\n  sourceMapPattern = /\\/\\*#\\ssourceMappingURL=data:application\\/json;\\S+\\s+\\*\\//;\n} // this is the cursor for keyframes\n// keyframes are stored on the SerializedStyles object as a linked list\n\n\nvar cursor;\n\nvar serializeStyles = function serializeStyles(args, registered, mergedProps) {\n  if (args.length === 1 && typeof args[0] === 'object' && args[0] !== null && args[0].styles !== undefined) {\n    return args[0];\n  }\n\n  var stringMode = true;\n  var styles = '';\n  cursor = undefined;\n  var strings = args[0];\n\n  if (strings == null || strings.raw === undefined) {\n    stringMode = false;\n    styles += handleInterpolation(mergedProps, registered, strings, false);\n  } else {\n    if (process.env.NODE_ENV !== 'production' && strings[0] === undefined) {\n      console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n    }\n\n    styles += strings[0];\n  } // we start at 1 since we've already handled the first arg\n\n\n  for (var i = 1; i < args.length; i++) {\n    styles += handleInterpolation(mergedProps, registered, args[i], styles.charCodeAt(styles.length - 1) === 46);\n\n    if (stringMode) {\n      if (process.env.NODE_ENV !== 'production' && strings[i] === undefined) {\n        console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n      }\n\n      styles += strings[i];\n    }\n  }\n\n  var sourceMap;\n\n  if (process.env.NODE_ENV !== 'production') {\n    styles = styles.replace(sourceMapPattern, function (match) {\n      sourceMap = match;\n      return '';\n    });\n  } // using a global regex with .exec is stateful so lastIndex has to be reset each time\n\n\n  labelPattern.lastIndex = 0;\n  var identifierName = '';\n  var match; // https://esbench.com/bench/5b809c2cf2949800a0f61fb5\n\n  while ((match = labelPattern.exec(styles)) !== null) {\n    identifierName += '-' + // $FlowFixMe we know it's not null\n    match[1];\n  }\n\n  var name = hashString(styles) + identifierName;\n\n  if (process.env.NODE_ENV !== 'production') {\n    // $FlowFixMe SerializedStyles type doesn't have toString property (and we don't want to add it)\n    return {\n      name: name,\n      styles: styles,\n      map: sourceMap,\n      next: cursor,\n      toString: function toString() {\n        return \"You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop).\";\n      }\n    };\n  }\n\n  return {\n    name: name,\n    styles: styles,\n    next: cursor\n  };\n};\n\nexport { serializeStyles };","var dP = require('./_object-dp');\nvar createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function (object, key, value) {\n  return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n  object[key] = value;\n  return object;\n};\n","exports.f = require('./_wks');\n","import { apiRunner } from \"./api-runner-browser\"\n\nif (\n  window.location.protocol !== `https:` &&\n  window.location.hostname !== `localhost`\n) {\n  console.error(\n    `Service workers can only be used over HTTPS, or on localhost for development`\n  )\n} else if (`serviceWorker` in navigator) {\n  navigator.serviceWorker\n    .register(`${__BASE_PATH__}/sw.js`)\n    .then(function(reg) {\n      reg.addEventListener(`updatefound`, () => {\n        apiRunner(`onServiceWorkerUpdateFound`, { serviceWorker: reg })\n        // The updatefound event implies that reg.installing is set; see\n        // https://w3c.github.io/ServiceWorker/#service-worker-registration-updatefound-event\n        const installingWorker = reg.installing\n        console.log(`installingWorker`, installingWorker)\n        installingWorker.addEventListener(`statechange`, () => {\n          switch (installingWorker.state) {\n            case `installed`:\n              if (navigator.serviceWorker.controller) {\n                // At this point, the old content will have been purged and the fresh content will\n                // have been added to the cache.\n\n                // We set a flag so Gatsby Link knows to refresh the page on next navigation attempt\n                window.___swUpdated = true\n                // We call the onServiceWorkerUpdateReady API so users can show update prompts.\n                apiRunner(`onServiceWorkerUpdateReady`, { serviceWorker: reg })\n\n                // If resources failed for the current page, reload.\n                if (window.___failedResources) {\n                  console.log(`resources failed, SW updated - reloading`)\n                  window.location.reload()\n                }\n              } else {\n                // At this point, everything has been precached.\n                // It's the perfect time to display a \"Content is cached for offline use.\" message.\n                console.log(`Content is now available offline!`)\n\n                // Post to service worker that install is complete.\n                // Delay to allow time for the event listener to be added --\n                // otherwise fetch is called too soon and resources aren't cached.\n                apiRunner(`onServiceWorkerInstalled`, { serviceWorker: reg })\n              }\n              break\n\n            case `redundant`:\n              console.error(`The installing service worker became redundant.`)\n              apiRunner(`onServiceWorkerRedundant`, { serviceWorker: reg })\n              break\n\n            case `activated`:\n              apiRunner(`onServiceWorkerActive`, { serviceWorker: reg })\n              break\n          }\n        })\n      })\n    })\n    .catch(function(e) {\n      console.error(`Error during service worker registration:`, e)\n    })\n}\n","// 21.2.5.3 get RegExp.prototype.flags()\nif (require('./_descriptors') && /./g.flags != 'g') require('./_object-dp').f(RegExp.prototype, 'flags', {\n  configurable: true,\n  get: require('./_flags')\n});\n","'use strict';\n\nvar anObject = require('./_an-object');\nvar sameValue = require('./_same-value');\nvar regExpExec = require('./_regexp-exec-abstract');\n\n// @@search logic\nrequire('./_fix-re-wks')('search', 1, function (defined, SEARCH, $search, maybeCallNative) {\n  return [\n    // `String.prototype.search` method\n    // https://tc39.github.io/ecma262/#sec-string.prototype.search\n    function search(regexp) {\n      var O = defined(this);\n      var fn = regexp == undefined ? undefined : regexp[SEARCH];\n      return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[SEARCH](String(O));\n    },\n    // `RegExp.prototype[@@search]` method\n    // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@search\n    function (regexp) {\n      var res = maybeCallNative($search, regexp, this);\n      if (res.done) return res.value;\n      var rx = anObject(regexp);\n      var S = String(this);\n      var previousLastIndex = rx.lastIndex;\n      if (!sameValue(previousLastIndex, 0)) rx.lastIndex = 0;\n      var result = regExpExec(rx, S);\n      if (!sameValue(rx.lastIndex, previousLastIndex)) rx.lastIndex = previousLastIndex;\n      return result === null ? -1 : result.index;\n    }\n  ];\n});\n","// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = require('./_has');\nvar toObject = require('./_to-object');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n  O = toObject(O);\n  if (has(O, IE_PROTO)) return O[IE_PROTO];\n  if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n    return O.constructor.prototype;\n  } return O instanceof Object ? ObjectProto : null;\n};\n","var global = require('./_global');\nvar core = require('./_core');\nvar LIBRARY = require('./_library');\nvar wksExt = require('./_wks-ext');\nvar defineProperty = require('./_object-dp').f;\nmodule.exports = function (name) {\n  var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});\n  if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) });\n};\n","\"use strict\";\n\nexports.__esModule = true;\nexports.isMobileSafari = isMobileSafari;\n\nfunction isMobileSafari() {\n  return /iPad|iPhone|iPod/.test(window.navigator.platform) && /^((?!CriOS).)*Safari/.test(window.navigator.userAgent);\n}","var global = require('./_global');\nvar inheritIfRequired = require('./_inherit-if-required');\nvar dP = require('./_object-dp').f;\nvar gOPN = require('./_object-gopn').f;\nvar isRegExp = require('./_is-regexp');\nvar $flags = require('./_flags');\nvar $RegExp = global.RegExp;\nvar Base = $RegExp;\nvar proto = $RegExp.prototype;\nvar re1 = /a/g;\nvar re2 = /a/g;\n// \"new\" creates a new object, old webkit buggy here\nvar CORRECT_NEW = new $RegExp(re1) !== re1;\n\nif (require('./_descriptors') && (!CORRECT_NEW || require('./_fails')(function () {\n  re2[require('./_wks')('match')] = false;\n  // RegExp constructor can alter flags and IsRegExp works correct with @@match\n  return $RegExp(re1) != re1 || $RegExp(re2) == re2 || $RegExp(re1, 'i') != '/a/i';\n}))) {\n  $RegExp = function RegExp(p, f) {\n    var tiRE = this instanceof $RegExp;\n    var piRE = isRegExp(p);\n    var fiU = f === undefined;\n    return !tiRE && piRE && p.constructor === $RegExp && fiU ? p\n      : inheritIfRequired(CORRECT_NEW\n        ? new Base(piRE && !fiU ? p.source : p, f)\n        : Base((piRE = p instanceof $RegExp) ? p.source : p, piRE && fiU ? $flags.call(p) : f)\n      , tiRE ? this : proto, $RegExp);\n  };\n  var proxy = function (key) {\n    key in $RegExp || dP($RegExp, key, {\n      configurable: true,\n      get: function () { return Base[key]; },\n      set: function (it) { Base[key] = it; }\n    });\n  };\n  for (var keys = gOPN(Base), i = 0; keys.length > i;) proxy(keys[i++]);\n  proto.constructor = $RegExp;\n  $RegExp.prototype = proto;\n  require('./_redefine')(global, 'RegExp', $RegExp);\n}\n\nrequire('./_set-species')('RegExp');\n","function _assertThisInitialized(self) {\n  if (self === void 0) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n\n  return self;\n}\n\nmodule.exports = _assertThisInitialized;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nrequire(\"core-js/modules/es6.function.name\");\n\nrequire(\"core-js/modules/es6.regexp.replace\");\n\nvar invariant = function invariant(condition, format, a, b, c, d, e, f) {\n  if (process.env.NODE_ENV !== 'production') {\n    if (format === undefined) {\n      throw new Error('invariant requires an error message argument');\n    }\n  }\n\n  if (!condition) {\n    var error;\n\n    if (format === undefined) {\n      error = new Error('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');\n    } else {\n      var args = [a, b, c, d, e, f];\n      var argIndex = 0;\n      error = new Error(format.replace(/%s/g, function () {\n        return args[argIndex++];\n      }));\n      error.name = 'Invariant Violation';\n    }\n\n    error.framesToPop = 1; // we don't care about invariant's own frame\n\n    throw error;\n  }\n};\n\nmodule.exports = invariant;","'use strict';\nvar create = require('./_object-create');\nvar descriptor = require('./_property-desc');\nvar setToStringTag = require('./_set-to-string-tag');\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nrequire('./_hide')(IteratorPrototype, require('./_wks')('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n  Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n  setToStringTag(Constructor, NAME + ' Iterator');\n};\n","// 19.1.2.14 Object.keys(O)\nvar toObject = require('./_to-object');\nvar $keys = require('./_object-keys');\n\nrequire('./_object-sap')('keys', function () {\n  return function keys(it) {\n    return $keys(toObject(it));\n  };\n});\n","// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n  return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n","module.exports = function (bitmap, value) {\n  return {\n    enumerable: !(bitmap & 1),\n    configurable: !(bitmap & 2),\n    writable: !(bitmap & 4),\n    value: value\n  };\n};\n","// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n  return Object(defined(it));\n};\n","import \"core-js/modules/es6.function.name\";\nimport \"core-js/modules/es6.regexp.split\";\nimport \"core-js/modules/es6.array.for-each\";\nvar isBrowser = \"object\" !== 'undefined';\n\nfunction getRegisteredStyles(registered, registeredStyles, classNames) {\n  var rawClassName = '';\n  classNames.split(' ').forEach(function (className) {\n    if (registered[className] !== undefined) {\n      registeredStyles.push(registered[className]);\n    } else {\n      rawClassName += className + \" \";\n    }\n  });\n  return rawClassName;\n}\n\nvar insertStyles = function insertStyles(cache, serialized, isStringTag) {\n  var className = cache.key + \"-\" + serialized.name;\n\n  if ( // we only need to add the styles to the registered cache if the\n  // class name could be used further down\n  // the tree but if it's a string tag, we know it won't\n  // so we don't have to add it to registered cache.\n  // this improves memory usage since we can avoid storing the whole style string\n  (isStringTag === false || // we need to always store it if we're in compat mode and\n  // in node since emotion-server relies on whether a style is in\n  // the registered cache to know whether a style is global or not\n  // also, note that this check will be dead code eliminated in the browser\n  isBrowser === false && cache.compat !== undefined) && cache.registered[className] === undefined) {\n    cache.registered[className] = serialized.styles;\n  }\n\n  if (cache.inserted[serialized.name] === undefined) {\n    var current = serialized;\n\n    do {\n      var maybeStyles = cache.insert(\".\" + className, current, cache.sheet, true);\n      current = current.next;\n    } while (current !== undefined);\n  }\n};\n\nexport { getRegisteredStyles, insertStyles };","'use strict';\n\nvar anObject = require('./_an-object');\nvar toLength = require('./_to-length');\nvar advanceStringIndex = require('./_advance-string-index');\nvar regExpExec = require('./_regexp-exec-abstract');\n\n// @@match logic\nrequire('./_fix-re-wks')('match', 1, function (defined, MATCH, $match, maybeCallNative) {\n  return [\n    // `String.prototype.match` method\n    // https://tc39.github.io/ecma262/#sec-string.prototype.match\n    function match(regexp) {\n      var O = defined(this);\n      var fn = regexp == undefined ? undefined : regexp[MATCH];\n      return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[MATCH](String(O));\n    },\n    // `RegExp.prototype[@@match]` method\n    // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@match\n    function (regexp) {\n      var res = maybeCallNative($match, regexp, this);\n      if (res.done) return res.value;\n      var rx = anObject(regexp);\n      var S = String(this);\n      if (!rx.global) return regExpExec(rx, S);\n      var fullUnicode = rx.unicode;\n      rx.lastIndex = 0;\n      var A = [];\n      var n = 0;\n      var result;\n      while ((result = regExpExec(rx, S)) !== null) {\n        var matchStr = String(result[0]);\n        A[n] = matchStr;\n        if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n        n++;\n      }\n      return n === 0 ? null : A;\n    }\n  ];\n});\n","var ctx = require('./_ctx');\nvar call = require('./_iter-call');\nvar isArrayIter = require('./_is-array-iter');\nvar anObject = require('./_an-object');\nvar toLength = require('./_to-length');\nvar getIterFn = require('./core.get-iterator-method');\nvar BREAK = {};\nvar RETURN = {};\nvar exports = module.exports = function (iterable, entries, fn, that, ITERATOR) {\n  var iterFn = ITERATOR ? function () { return iterable; } : getIterFn(iterable);\n  var f = ctx(fn, that, entries ? 2 : 1);\n  var index = 0;\n  var length, step, iterator, result;\n  if (typeof iterFn != 'function') throw TypeError(iterable + ' is not iterable!');\n  // fast case for arrays with default iterator\n  if (isArrayIter(iterFn)) for (length = toLength(iterable.length); length > index; index++) {\n    result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);\n    if (result === BREAK || result === RETURN) return result;\n  } else for (iterator = iterFn.call(iterable); !(step = iterator.next()).done;) {\n    result = call(iterator, f, step.value, entries);\n    if (result === BREAK || result === RETURN) return result;\n  }\n};\nexports.BREAK = BREAK;\nexports.RETURN = RETURN;\n","'use strict';\nvar strong = require('./_collection-strong');\nvar validate = require('./_validate-collection');\nvar SET = 'Set';\n\n// 23.2 Set Objects\nmodule.exports = require('./_collection')(SET, function (get) {\n  return function Set() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n}, {\n  // 23.2.3.1 Set.prototype.add(value)\n  add: function add(value) {\n    return strong.def(validate(this, SET), value = value === 0 ? 0 : value, value);\n  }\n}, strong);\n","function _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    \"default\": obj\n  };\n}\n\nmodule.exports = _interopRequireDefault;","'use strict';\n// 21.1.3.25 String.prototype.trim()\nrequire('./_string-trim')('trim', function ($trim) {\n  return function trim() {\n    return $trim(this, 3);\n  };\n});\n","var MATCH = require('./_wks')('match');\nmodule.exports = function (KEY) {\n  var re = /./;\n  try {\n    '/./'[KEY](re);\n  } catch (e) {\n    try {\n      re[MATCH] = false;\n      return !'/./'[KEY](re);\n    } catch (f) { /* empty */ }\n  } return true;\n};\n","'use strict';\n\nvar regexpFlags = require('./_flags');\n\nvar nativeExec = RegExp.prototype.exec;\n// This always refers to the native implementation, because the\n// String#replace polyfill uses ./fix-regexp-well-known-symbol-logic.js,\n// which loads this file before patching the method.\nvar nativeReplace = String.prototype.replace;\n\nvar patchedExec = nativeExec;\n\nvar LAST_INDEX = 'lastIndex';\n\nvar UPDATES_LAST_INDEX_WRONG = (function () {\n  var re1 = /a/,\n      re2 = /b*/g;\n  nativeExec.call(re1, 'a');\n  nativeExec.call(re2, 'a');\n  return re1[LAST_INDEX] !== 0 || re2[LAST_INDEX] !== 0;\n})();\n\n// nonparticipating capturing group, copied from es5-shim's String#split patch.\nvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\n\nvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED;\n\nif (PATCH) {\n  patchedExec = function exec(str) {\n    var re = this;\n    var lastIndex, reCopy, match, i;\n\n    if (NPCG_INCLUDED) {\n      reCopy = new RegExp('^' + re.source + '$(?!\\\\s)', regexpFlags.call(re));\n    }\n    if (UPDATES_LAST_INDEX_WRONG) lastIndex = re[LAST_INDEX];\n\n    match = nativeExec.call(re, str);\n\n    if (UPDATES_LAST_INDEX_WRONG && match) {\n      re[LAST_INDEX] = re.global ? match.index + match[0].length : lastIndex;\n    }\n    if (NPCG_INCLUDED && match && match.length > 1) {\n      // Fix browsers whose `exec` methods don't consistently return `undefined`\n      // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/\n      // eslint-disable-next-line no-loop-func\n      nativeReplace.call(match[0], reCopy, function () {\n        for (i = 1; i < arguments.length - 2; i++) {\n          if (arguments[i] === undefined) match[i] = undefined;\n        }\n      });\n    }\n\n    return match;\n  };\n}\n\nmodule.exports = patchedExec;\n","exports.f = {}.propertyIsEnumerable;\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport loader from \"./loader\"\nimport redirects from \"./redirects.json\"\nimport { apiRunner } from \"./api-runner-browser\"\nimport emitter from \"./emitter\"\nimport { navigate as reachNavigate } from \"@reach/router\"\nimport { parsePath } from \"gatsby-link\"\n\n// Convert to a map for faster lookup in maybeRedirect()\nconst redirectMap = redirects.reduce((map, redirect) => {\n  map[redirect.fromPath] = redirect\n  return map\n}, {})\n\nfunction maybeRedirect(pathname) {\n  const redirect = redirectMap[pathname]\n\n  if (redirect != null) {\n    if (process.env.NODE_ENV !== `production`) {\n      const pageResources = loader.loadPageSync(pathname)\n\n      if (pageResources != null) {\n        console.error(\n          `The route \"${pathname}\" matches both a page and a redirect; this is probably not intentional.`\n        )\n      }\n    }\n\n    window.___replace(redirect.toPath)\n    return true\n  } else {\n    return false\n  }\n}\n\nconst onPreRouteUpdate = (location, prevLocation) => {\n  if (!maybeRedirect(location.pathname)) {\n    apiRunner(`onPreRouteUpdate`, { location, prevLocation })\n  }\n}\n\nconst onRouteUpdate = (location, prevLocation) => {\n  if (!maybeRedirect(location.pathname)) {\n    apiRunner(`onRouteUpdate`, { location, prevLocation })\n    // Temp hack while awaiting https://github.com/reach/router/issues/119\n    window.__navigatingToLink = false\n  }\n}\n\nconst navigate = (to, options = {}) => {\n  // Temp hack while awaiting https://github.com/reach/router/issues/119\n  if (!options.replace) {\n    window.__navigatingToLink = true\n  }\n\n  let { pathname } = parsePath(to)\n  const redirect = redirectMap[pathname]\n\n  // If we're redirecting, just replace the passed in pathname\n  // to the one we want to redirect to.\n  if (redirect) {\n    to = redirect.toPath\n    pathname = parsePath(to).pathname\n  }\n\n  // If we had a service worker update, no matter the path, reload window and\n  // reset the pathname whitelist\n  if (window.___swUpdated) {\n    window.location = pathname\n    return\n  }\n\n  // Start a timer to wait for a second before transitioning and showing a\n  // loader in case resources aren't around yet.\n  const timeoutId = setTimeout(() => {\n    emitter.emit(`onDelayedLoadPageResources`, { pathname })\n    apiRunner(`onRouteUpdateDelayed`, {\n      location: window.location,\n    })\n  }, 1000)\n\n  loader.loadPage(pathname).then(pageResources => {\n    // If no page resources, then refresh the page\n    // Do this, rather than simply `window.location.reload()`, so that\n    // pressing the back/forward buttons work - otherwise when pressing\n    // back, the browser will just change the URL and expect JS to handle\n    // the change, which won't always work since it might not be a Gatsby\n    // page.\n    if (!pageResources || pageResources.status === `error`) {\n      window.history.replaceState({}, ``, location.href)\n      window.location = pathname\n    }\n    // If the loaded page has a different compilation hash to the\n    // window, then a rebuild has occurred on the server. Reload.\n    if (process.env.NODE_ENV === `production` && pageResources) {\n      if (\n        pageResources.page.webpackCompilationHash !==\n        window.___webpackCompilationHash\n      ) {\n        // Purge plugin-offline cache\n        if (\n          `serviceWorker` in navigator &&\n          navigator.serviceWorker.controller !== null &&\n          navigator.serviceWorker.controller.state === `activated`\n        ) {\n          navigator.serviceWorker.controller.postMessage({\n            gatsbyApi: `clearPathResources`,\n          })\n        }\n\n        console.log(`Site has changed on server. Reloading browser`)\n        window.location = pathname\n      }\n    }\n    reachNavigate(to, options)\n    clearTimeout(timeoutId)\n  })\n}\n\nfunction shouldUpdateScroll(prevRouterProps, { location }) {\n  const { pathname, hash } = location\n  const results = apiRunner(`shouldUpdateScroll`, {\n    prevRouterProps,\n    // `pathname` for backwards compatibility\n    pathname,\n    routerProps: { location },\n    getSavedScrollPosition: args => this._stateStorage.read(args),\n  })\n  if (results.length > 0) {\n    // Use the latest registered shouldUpdateScroll result, this allows users to override plugin's configuration\n    // @see https://github.com/gatsbyjs/gatsby/issues/12038\n    return results[results.length - 1]\n  }\n\n  if (prevRouterProps) {\n    const {\n      location: { pathname: oldPathname },\n    } = prevRouterProps\n    if (oldPathname === pathname) {\n      // Scroll to element if it exists, if it doesn't, or no hash is provided,\n      // scroll to top.\n      return hash ? decodeURI(hash.slice(1)) : [0, 0]\n    }\n  }\n  return true\n}\n\nfunction init() {\n  // Temp hack while awaiting https://github.com/reach/router/issues/119\n  window.__navigatingToLink = false\n\n  window.___push = to => navigate(to, { replace: false })\n  window.___replace = to => navigate(to, { replace: true })\n  window.___navigate = (to, options) => navigate(to, options)\n\n  // Check for initial page-load redirect\n  maybeRedirect(window.location.pathname)\n}\n\nclass RouteAnnouncer extends React.Component {\n  constructor(props) {\n    super(props)\n    this.announcementRef = React.createRef()\n  }\n\n  componentDidUpdate(prevProps, nextProps) {\n    requestAnimationFrame(() => {\n      let pageName = `new page at ${this.props.location.pathname}`\n      if (document.title) {\n        pageName = document.title\n      }\n      const pageHeadings = document\n        .getElementById(`gatsby-focus-wrapper`)\n        .getElementsByTagName(`h1`)\n      if (pageHeadings && pageHeadings.length) {\n        pageName = pageHeadings[0].textContent\n      }\n      const newAnnouncement = `Navigated to ${pageName}`\n      const oldAnnouncement = this.announcementRef.current.innerText\n      if (oldAnnouncement !== newAnnouncement) {\n        this.announcementRef.current.innerText = newAnnouncement\n      }\n    })\n  }\n\n  render() {\n    return (\n      <div\n        id=\"gatsby-announcer\"\n        style={{\n          position: `absolute`,\n          top: 0,\n          width: 1,\n          height: 1,\n          padding: 0,\n          overflow: `hidden`,\n          clip: `rect(0, 0, 0, 0)`,\n          whiteSpace: `nowrap`,\n          border: 0,\n        }}\n        role=\"alert\"\n        aria-live=\"assertive\"\n        aria-atomic=\"true\"\n        ref={this.announcementRef}\n      ></div>\n    )\n  }\n}\n\n// Fire on(Pre)RouteUpdate APIs\nclass RouteUpdates extends React.Component {\n  constructor(props) {\n    super(props)\n    onPreRouteUpdate(props.location, null)\n  }\n\n  componentDidMount() {\n    onRouteUpdate(this.props.location, null)\n  }\n\n  componentDidUpdate(prevProps, prevState, shouldFireRouteUpdate) {\n    if (shouldFireRouteUpdate) {\n      onRouteUpdate(this.props.location, prevProps.location)\n    }\n  }\n\n  getSnapshotBeforeUpdate(prevProps) {\n    if (this.props.location.pathname !== prevProps.location.pathname) {\n      onPreRouteUpdate(this.props.location, prevProps.location)\n      return true\n    }\n\n    return false\n  }\n\n  render() {\n    return (\n      <React.Fragment>\n        {this.props.children}\n        <RouteAnnouncer location={location} />\n      </React.Fragment>\n    )\n  }\n}\n\nRouteUpdates.propTypes = {\n  location: PropTypes.object.isRequired,\n}\n\nexport { init, shouldUpdateScroll, RouteUpdates }\n","// Pulled from react-compat\n// https://github.com/developit/preact-compat/blob/7c5de00e7c85e2ffd011bf3af02899b63f699d3a/src/index.js#L349\nfunction shallowDiffers(a, b) {\n  for (var i in a) {\n    if (!(i in b)) return true;\n  }\n\n  for (var _i in b) {\n    if (a[_i] !== b[_i]) return true;\n  }\n\n  return false;\n}\n\nexport default (function (instance, nextProps, nextState) {\n  return shallowDiffers(instance.props, nextProps) || shallowDiffers(instance.state, nextState);\n});","import React from \"react\"\nimport loader from \"./loader\"\nimport shallowCompare from \"shallow-compare\"\n\nclass EnsureResources extends React.Component {\n  constructor(props) {\n    super()\n    const { location, pageResources } = props\n    this.state = {\n      location: { ...location },\n      pageResources: pageResources || loader.loadPageSync(location.pathname),\n    }\n  }\n\n  static getDerivedStateFromProps({ location }, prevState) {\n    if (prevState.location.href !== location.href) {\n      const pageResources = loader.loadPageSync(location.pathname)\n      return {\n        pageResources,\n        location: { ...location },\n      }\n    }\n\n    return {\n      location: { ...location },\n    }\n  }\n\n  loadResources(rawPath) {\n    loader.loadPage(rawPath).then(pageResources => {\n      if (pageResources && pageResources.status !== `error`) {\n        this.setState({\n          location: { ...window.location },\n          pageResources,\n        })\n      } else {\n        window.history.replaceState({}, ``, location.href)\n        window.location = rawPath\n      }\n    })\n  }\n\n  shouldComponentUpdate(nextProps, nextState) {\n    // Always return false if we're missing resources.\n    if (!nextState.pageResources) {\n      this.loadResources(nextProps.location.pathname)\n      return false\n    }\n\n    // Check if the component or json have changed.\n    if (this.state.pageResources !== nextState.pageResources) {\n      return true\n    }\n    if (\n      this.state.pageResources.component !== nextState.pageResources.component\n    ) {\n      return true\n    }\n\n    if (this.state.pageResources.json !== nextState.pageResources.json) {\n      return true\n    }\n    // Check if location has changed on a page using internal routing\n    // via matchPath configuration.\n    if (\n      this.state.location.key !== nextState.location.key &&\n      nextState.pageResources.page &&\n      (nextState.pageResources.page.matchPath ||\n        nextState.pageResources.page.path)\n    ) {\n      return true\n    }\n    return shallowCompare(this, nextProps, nextState)\n  }\n\n  render() {\n    return this.props.children(this.state)\n  }\n}\n\nexport default EnsureResources\n","import { apiRunner, apiRunnerAsync } from \"./api-runner-browser\"\nimport React from \"react\"\nimport ReactDOM from \"react-dom\"\nimport { Router, navigate, Location, BaseContext } from \"@reach/router\"\nimport { ScrollContext } from \"gatsby-react-router-scroll\"\nimport domReady from \"@mikaelkristiansson/domready\"\nimport {\n  shouldUpdateScroll,\n  init as navigationInit,\n  RouteUpdates,\n} from \"./navigation\"\nimport emitter from \"./emitter\"\nimport PageRenderer from \"./page-renderer\"\nimport asyncRequires from \"./async-requires\"\nimport { setLoader, ProdLoader, publicLoader } from \"./loader\"\nimport EnsureResources from \"./ensure-resources\"\nimport stripPrefix from \"./strip-prefix\"\n\n// Generated during bootstrap\nimport matchPaths from \"./match-paths.json\"\n\nconst loader = new ProdLoader(asyncRequires, matchPaths)\nsetLoader(loader)\nloader.setApiRunner(apiRunner)\n\nwindow.asyncRequires = asyncRequires\nwindow.___emitter = emitter\nwindow.___loader = publicLoader\n\nnavigationInit()\n\napiRunnerAsync(`onClientEntry`).then(() => {\n  // Let plugins register a service worker. The plugin just needs\n  // to return true.\n  if (apiRunner(`registerServiceWorker`).length > 0) {\n    require(`./register-service-worker`)\n  }\n\n  // In gatsby v2 if Router is used in page using matchPaths\n  // paths need to contain full path.\n  // For example:\n  //   - page have `/app/*` matchPath\n  //   - inside template user needs to use `/app/xyz` as path\n  // Resetting `basepath`/`baseuri` keeps current behaviour\n  // to not introduce breaking change.\n  // Remove this in v3\n  const RouteHandler = props => (\n    <BaseContext.Provider\n      value={{\n        baseuri: `/`,\n        basepath: `/`,\n      }}\n    >\n      <PageRenderer {...props} />\n    </BaseContext.Provider>\n  )\n\n  class LocationHandler extends React.Component {\n    render() {\n      const { location } = this.props\n      return (\n        <EnsureResources location={location}>\n          {({ pageResources, location }) => (\n            <RouteUpdates location={location}>\n              <ScrollContext\n                location={location}\n                shouldUpdateScroll={shouldUpdateScroll}\n              >\n                <Router\n                  basepath={__BASE_PATH__}\n                  location={location}\n                  id=\"gatsby-focus-wrapper\"\n                >\n                  <RouteHandler\n                    path={\n                      pageResources.page.path === `/404.html`\n                        ? stripPrefix(location.pathname, __BASE_PATH__)\n                        : encodeURI(\n                            pageResources.page.matchPath ||\n                              pageResources.page.path\n                          )\n                    }\n                    {...this.props}\n                    location={location}\n                    pageResources={pageResources}\n                    {...pageResources.json}\n                  />\n                </Router>\n              </ScrollContext>\n            </RouteUpdates>\n          )}\n        </EnsureResources>\n      )\n    }\n  }\n\n  const { pagePath, location: browserLoc } = window\n\n  // Explicitly call navigate if the canonical path (window.pagePath)\n  // is different to the browser path (window.location.pathname). But\n  // only if NONE of the following conditions hold:\n  //\n  // - The url matches a client side route (page.matchPath)\n  // - it's a 404 page\n  // - it's the offline plugin shell (/offline-plugin-app-shell-fallback/)\n  if (\n    pagePath &&\n    __BASE_PATH__ + pagePath !== browserLoc.pathname &&\n    !(\n      loader.findMatchPath(stripPrefix(browserLoc.pathname, __BASE_PATH__)) ||\n      pagePath === `/404.html` ||\n      pagePath.match(/^\\/404\\/?$/) ||\n      pagePath.match(/^\\/offline-plugin-app-shell-fallback\\/?$/)\n    )\n  ) {\n    navigate(__BASE_PATH__ + pagePath + browserLoc.search + browserLoc.hash, {\n      replace: true,\n    })\n  }\n\n  publicLoader.loadPage(browserLoc.pathname).then(page => {\n    if (!page || page.status === `error`) {\n      throw new Error(\n        `page resources for ${browserLoc.pathname} not found. Not rendering React`\n      )\n    }\n\n    window.___webpackCompilationHash = page.page.webpackCompilationHash\n\n    const Root = () => (\n      <Location>\n        {locationContext => <LocationHandler {...locationContext} />}\n      </Location>\n    )\n\n    const WrappedRoot = apiRunner(\n      `wrapRootElement`,\n      { element: <Root /> },\n      <Root />,\n      ({ result }) => {\n        return { element: result }\n      }\n    ).pop()\n\n    const NewRoot = () => WrappedRoot\n\n    const renderer = apiRunner(\n      `replaceHydrateFunction`,\n      undefined,\n      ReactDOM.hydrate\n    )[0]\n\n    domReady(() => {\n      renderer(\n        <NewRoot />,\n        typeof window !== `undefined`\n          ? document.getElementById(`___gatsby`)\n          : void 0,\n        () => {\n          apiRunner(`onInitialClientRender`)\n        }\n      )\n    })\n  })\n})\n","'use strict';\nvar $export = require('./_export');\nvar $indexOf = require('./_array-includes')(false);\nvar $native = [].indexOf;\nvar NEGATIVE_ZERO = !!$native && 1 / [1].indexOf(1, -0) < 0;\n\n$export($export.P + $export.F * (NEGATIVE_ZERO || !require('./_strict-method')($native)), 'Array', {\n  // 22.1.3.11 / 15.4.4.14 Array.prototype.indexOf(searchElement [, fromIndex])\n  indexOf: function indexOf(searchElement /* , fromIndex = 0 */) {\n    return NEGATIVE_ZERO\n      // convert -0 to +0\n      ? $native.apply(this, arguments) || 0\n      : $indexOf(this, searchElement, arguments[1]);\n  }\n});\n","'use strict';\nvar LIBRARY = require('./_library');\nvar global = require('./_global');\nvar ctx = require('./_ctx');\nvar classof = require('./_classof');\nvar $export = require('./_export');\nvar isObject = require('./_is-object');\nvar aFunction = require('./_a-function');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar speciesConstructor = require('./_species-constructor');\nvar task = require('./_task').set;\nvar microtask = require('./_microtask')();\nvar newPromiseCapabilityModule = require('./_new-promise-capability');\nvar perform = require('./_perform');\nvar userAgent = require('./_user-agent');\nvar promiseResolve = require('./_promise-resolve');\nvar PROMISE = 'Promise';\nvar TypeError = global.TypeError;\nvar process = global.process;\nvar versions = process && process.versions;\nvar v8 = versions && versions.v8 || '';\nvar $Promise = global[PROMISE];\nvar isNode = classof(process) == 'process';\nvar empty = function () { /* empty */ };\nvar Internal, newGenericPromiseCapability, OwnPromiseCapability, Wrapper;\nvar newPromiseCapability = newGenericPromiseCapability = newPromiseCapabilityModule.f;\n\nvar USE_NATIVE = !!function () {\n  try {\n    // correct subclassing with @@species support\n    var promise = $Promise.resolve(1);\n    var FakePromise = (promise.constructor = {})[require('./_wks')('species')] = function (exec) {\n      exec(empty, empty);\n    };\n    // unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n    return (isNode || typeof PromiseRejectionEvent == 'function')\n      && promise.then(empty) instanceof FakePromise\n      // v8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables\n      // https://bugs.chromium.org/p/chromium/issues/detail?id=830565\n      // we can't detect it synchronously, so just check versions\n      && v8.indexOf('6.6') !== 0\n      && userAgent.indexOf('Chrome/66') === -1;\n  } catch (e) { /* empty */ }\n}();\n\n// helpers\nvar isThenable = function (it) {\n  var then;\n  return isObject(it) && typeof (then = it.then) == 'function' ? then : false;\n};\nvar notify = function (promise, isReject) {\n  if (promise._n) return;\n  promise._n = true;\n  var chain = promise._c;\n  microtask(function () {\n    var value = promise._v;\n    var ok = promise._s == 1;\n    var i = 0;\n    var run = function (reaction) {\n      var handler = ok ? reaction.ok : reaction.fail;\n      var resolve = reaction.resolve;\n      var reject = reaction.reject;\n      var domain = reaction.domain;\n      var result, then, exited;\n      try {\n        if (handler) {\n          if (!ok) {\n            if (promise._h == 2) onHandleUnhandled(promise);\n            promise._h = 1;\n          }\n          if (handler === true) result = value;\n          else {\n            if (domain) domain.enter();\n            result = handler(value); // may throw\n            if (domain) {\n              domain.exit();\n              exited = true;\n            }\n          }\n          if (result === reaction.promise) {\n            reject(TypeError('Promise-chain cycle'));\n          } else if (then = isThenable(result)) {\n            then.call(result, resolve, reject);\n          } else resolve(result);\n        } else reject(value);\n      } catch (e) {\n        if (domain && !exited) domain.exit();\n        reject(e);\n      }\n    };\n    while (chain.length > i) run(chain[i++]); // variable length - can't use forEach\n    promise._c = [];\n    promise._n = false;\n    if (isReject && !promise._h) onUnhandled(promise);\n  });\n};\nvar onUnhandled = function (promise) {\n  task.call(global, function () {\n    var value = promise._v;\n    var unhandled = isUnhandled(promise);\n    var result, handler, console;\n    if (unhandled) {\n      result = perform(function () {\n        if (isNode) {\n          process.emit('unhandledRejection', value, promise);\n        } else if (handler = global.onunhandledrejection) {\n          handler({ promise: promise, reason: value });\n        } else if ((console = global.console) && console.error) {\n          console.error('Unhandled promise rejection', value);\n        }\n      });\n      // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n      promise._h = isNode || isUnhandled(promise) ? 2 : 1;\n    } promise._a = undefined;\n    if (unhandled && result.e) throw result.v;\n  });\n};\nvar isUnhandled = function (promise) {\n  return promise._h !== 1 && (promise._a || promise._c).length === 0;\n};\nvar onHandleUnhandled = function (promise) {\n  task.call(global, function () {\n    var handler;\n    if (isNode) {\n      process.emit('rejectionHandled', promise);\n    } else if (handler = global.onrejectionhandled) {\n      handler({ promise: promise, reason: promise._v });\n    }\n  });\n};\nvar $reject = function (value) {\n  var promise = this;\n  if (promise._d) return;\n  promise._d = true;\n  promise = promise._w || promise; // unwrap\n  promise._v = value;\n  promise._s = 2;\n  if (!promise._a) promise._a = promise._c.slice();\n  notify(promise, true);\n};\nvar $resolve = function (value) {\n  var promise = this;\n  var then;\n  if (promise._d) return;\n  promise._d = true;\n  promise = promise._w || promise; // unwrap\n  try {\n    if (promise === value) throw TypeError(\"Promise can't be resolved itself\");\n    if (then = isThenable(value)) {\n      microtask(function () {\n        var wrapper = { _w: promise, _d: false }; // wrap\n        try {\n          then.call(value, ctx($resolve, wrapper, 1), ctx($reject, wrapper, 1));\n        } catch (e) {\n          $reject.call(wrapper, e);\n        }\n      });\n    } else {\n      promise._v = value;\n      promise._s = 1;\n      notify(promise, false);\n    }\n  } catch (e) {\n    $reject.call({ _w: promise, _d: false }, e); // wrap\n  }\n};\n\n// constructor polyfill\nif (!USE_NATIVE) {\n  // 25.4.3.1 Promise(executor)\n  $Promise = function Promise(executor) {\n    anInstance(this, $Promise, PROMISE, '_h');\n    aFunction(executor);\n    Internal.call(this);\n    try {\n      executor(ctx($resolve, this, 1), ctx($reject, this, 1));\n    } catch (err) {\n      $reject.call(this, err);\n    }\n  };\n  // eslint-disable-next-line no-unused-vars\n  Internal = function Promise(executor) {\n    this._c = [];             // <- awaiting reactions\n    this._a = undefined;      // <- checked in isUnhandled reactions\n    this._s = 0;              // <- state\n    this._d = false;          // <- done\n    this._v = undefined;      // <- value\n    this._h = 0;              // <- rejection state, 0 - default, 1 - handled, 2 - unhandled\n    this._n = false;          // <- notify\n  };\n  Internal.prototype = require('./_redefine-all')($Promise.prototype, {\n    // 25.4.5.3 Promise.prototype.then(onFulfilled, onRejected)\n    then: function then(onFulfilled, onRejected) {\n      var reaction = newPromiseCapability(speciesConstructor(this, $Promise));\n      reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;\n      reaction.fail = typeof onRejected == 'function' && onRejected;\n      reaction.domain = isNode ? process.domain : undefined;\n      this._c.push(reaction);\n      if (this._a) this._a.push(reaction);\n      if (this._s) notify(this, false);\n      return reaction.promise;\n    },\n    // 25.4.5.1 Promise.prototype.catch(onRejected)\n    'catch': function (onRejected) {\n      return this.then(undefined, onRejected);\n    }\n  });\n  OwnPromiseCapability = function () {\n    var promise = new Internal();\n    this.promise = promise;\n    this.resolve = ctx($resolve, promise, 1);\n    this.reject = ctx($reject, promise, 1);\n  };\n  newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n    return C === $Promise || C === Wrapper\n      ? new OwnPromiseCapability(C)\n      : newGenericPromiseCapability(C);\n  };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Promise: $Promise });\nrequire('./_set-to-string-tag')($Promise, PROMISE);\nrequire('./_set-species')(PROMISE);\nWrapper = require('./_core')[PROMISE];\n\n// statics\n$export($export.S + $export.F * !USE_NATIVE, PROMISE, {\n  // 25.4.4.5 Promise.reject(r)\n  reject: function reject(r) {\n    var capability = newPromiseCapability(this);\n    var $$reject = capability.reject;\n    $$reject(r);\n    return capability.promise;\n  }\n});\n$export($export.S + $export.F * (LIBRARY || !USE_NATIVE), PROMISE, {\n  // 25.4.4.6 Promise.resolve(x)\n  resolve: function resolve(x) {\n    return promiseResolve(LIBRARY && this === Wrapper ? $Promise : this, x);\n  }\n});\n$export($export.S + $export.F * !(USE_NATIVE && require('./_iter-detect')(function (iter) {\n  $Promise.all(iter)['catch'](empty);\n})), PROMISE, {\n  // 25.4.4.1 Promise.all(iterable)\n  all: function all(iterable) {\n    var C = this;\n    var capability = newPromiseCapability(C);\n    var resolve = capability.resolve;\n    var reject = capability.reject;\n    var result = perform(function () {\n      var values = [];\n      var index = 0;\n      var remaining = 1;\n      forOf(iterable, false, function (promise) {\n        var $index = index++;\n        var alreadyCalled = false;\n        values.push(undefined);\n        remaining++;\n        C.resolve(promise).then(function (value) {\n          if (alreadyCalled) return;\n          alreadyCalled = true;\n          values[$index] = value;\n          --remaining || resolve(values);\n        }, reject);\n      });\n      --remaining || resolve(values);\n    });\n    if (result.e) reject(result.v);\n    return capability.promise;\n  },\n  // 25.4.4.4 Promise.race(iterable)\n  race: function race(iterable) {\n    var C = this;\n    var capability = newPromiseCapability(C);\n    var reject = capability.reject;\n    var result = perform(function () {\n      forOf(iterable, false, function (promise) {\n        C.resolve(promise).then(capability.resolve, reject);\n      });\n    });\n    if (result.e) reject(result.v);\n    return capability.promise;\n  }\n});\n","var core = require('./_core');\nvar global = require('./_global');\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n  return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n  version: core.version,\n  mode: require('./_library') ? 'pure' : 'global',\n  copyright: '© 2019 Denis Pushkarev (zloirock.ru)'\n});\n","function _inheritsLoose(subClass, superClass) {\n  subClass.prototype = Object.create(superClass.prototype);\n  subClass.prototype.constructor = subClass;\n  subClass.__proto__ = superClass;\n}\n\nmodule.exports = _inheritsLoose;","'use strict';\nvar $export = require('./_export');\nvar aFunction = require('./_a-function');\nvar toObject = require('./_to-object');\nvar fails = require('./_fails');\nvar $sort = [].sort;\nvar test = [1, 2, 3];\n\n$export($export.P + $export.F * (fails(function () {\n  // IE8-\n  test.sort(undefined);\n}) || !fails(function () {\n  // V8 bug\n  test.sort(null);\n  // Old WebKit\n}) || !require('./_strict-method')($sort)), 'Array', {\n  // 22.1.3.25 Array.prototype.sort(comparefn)\n  sort: function sort(comparefn) {\n    return comparefn === undefined\n      ? $sort.call(toObject(this))\n      : $sort.call(toObject(this), aFunction(comparefn));\n  }\n});\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\nmodule.exports = ReactPropTypesSecret;","import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport Link, {\n  withPrefix,\n  withAssetPrefix,\n  navigate,\n  push,\n  replace,\n  navigateTo,\n  parsePath,\n} from \"gatsby-link\"\nimport PageRenderer from \"./public-page-renderer\"\nimport loader from \"./loader\"\n\nconst prefetchPathname = loader.enqueue\n\nconst StaticQueryContext = React.createContext({})\n\nfunction StaticQueryDataRenderer({ staticQueryData, data, query, render }) {\n  const finalData = data\n    ? data.data\n    : staticQueryData[query] && staticQueryData[query].data\n\n  return (\n    <React.Fragment>\n      {finalData && render(finalData)}\n      {!finalData && <div>Loading (StaticQuery)</div>}\n    </React.Fragment>\n  )\n}\n\nconst StaticQuery = props => {\n  const { data, query, render, children } = props\n\n  return (\n    <StaticQueryContext.Consumer>\n      {staticQueryData => (\n        <StaticQueryDataRenderer\n          data={data}\n          query={query}\n          render={render || children}\n          staticQueryData={staticQueryData}\n        />\n      )}\n    </StaticQueryContext.Consumer>\n  )\n}\n\nconst useStaticQuery = query => {\n  if (\n    typeof React.useContext !== `function` &&\n    process.env.NODE_ENV === `development`\n  ) {\n    throw new Error(\n      `You're likely using a version of React that doesn't support Hooks\\n` +\n        `Please update React and ReactDOM to 16.8.0 or later to use the useStaticQuery hook.`\n    )\n  }\n  const context = React.useContext(StaticQueryContext)\n  if (context[query] && context[query].data) {\n    return context[query].data\n  } else {\n    throw new Error(\n      `The result of this StaticQuery could not be fetched.\\n\\n` +\n        `This is likely a bug in Gatsby and if refreshing the page does not fix it, ` +\n        `please open an issue in https://github.com/gatsbyjs/gatsby/issues`\n    )\n  }\n}\n\nStaticQuery.propTypes = {\n  data: PropTypes.object,\n  query: PropTypes.string.isRequired,\n  render: PropTypes.func,\n  children: PropTypes.func,\n}\n\nfunction graphql() {\n  throw new Error(\n    `It appears like Gatsby is misconfigured. Gatsby related \\`graphql\\` calls ` +\n      `are supposed to only be evaluated at compile time, and then compiled away. ` +\n      `Unfortunately, something went wrong and the query was left in the compiled code.\\n\\n` +\n      `Unless your site has a complex or custom babel/Gatsby configuration this is likely a bug in Gatsby.`\n  )\n}\n\nexport {\n  Link,\n  withAssetPrefix,\n  withPrefix,\n  graphql,\n  parsePath,\n  navigate,\n  push, // TODO replace for v3\n  replace, // TODO remove replace for v3\n  navigateTo, // TODO: remove navigateTo for v3\n  StaticQueryContext,\n  StaticQuery,\n  PageRenderer,\n  useStaticQuery,\n  prefetchPathname,\n}\n","var global = require('./_global');\nvar core = require('./_core');\nvar hide = require('./_hide');\nvar redefine = require('./_redefine');\nvar ctx = require('./_ctx');\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n  var IS_FORCED = type & $export.F;\n  var IS_GLOBAL = type & $export.G;\n  var IS_STATIC = type & $export.S;\n  var IS_PROTO = type & $export.P;\n  var IS_BIND = type & $export.B;\n  var target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE];\n  var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n  var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {});\n  var key, own, out, exp;\n  if (IS_GLOBAL) source = name;\n  for (key in source) {\n    // contains in native\n    own = !IS_FORCED && target && target[key] !== undefined;\n    // export native or passed\n    out = (own ? target : source)[key];\n    // bind timers to global for call from export context\n    exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n    // extend global\n    if (target) redefine(target, key, out, type & $export.U);\n    // export\n    if (exports[key] != out) hide(exports, key, exp);\n    if (IS_PROTO && expProto[key] != out) expProto[key] = out;\n  }\n};\nglobal.core = core;\n// type bitmap\n$export.F = 1;   // forced\n$export.G = 2;   // global\n$export.S = 4;   // static\n$export.P = 8;   // proto\n$export.B = 16;  // bind\n$export.W = 32;  // wrap\n$export.U = 64;  // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n","var ITERATOR = require('./_wks')('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n  var riter = [7][ITERATOR]();\n  riter['return'] = function () { SAFE_CLOSING = true; };\n  // eslint-disable-next-line no-throw-literal\n  Array.from(riter, function () { throw 2; });\n} catch (e) { /* empty */ }\n\nmodule.exports = function (exec, skipClosing) {\n  if (!skipClosing && !SAFE_CLOSING) return false;\n  var safe = false;\n  try {\n    var arr = [7];\n    var iter = arr[ITERATOR]();\n    iter.next = function () { return { done: safe = true }; };\n    arr[ITERATOR] = function () { return iter; };\n    exec(arr);\n  } catch (e) { /* empty */ }\n  return safe;\n};\n","var isObject = require('./_is-object');\nvar setPrototypeOf = require('./_set-proto').set;\nmodule.exports = function (that, target, C) {\n  var S = target.constructor;\n  var P;\n  if (S !== C && typeof S == 'function' && (P = S.prototype) !== C.prototype && isObject(P) && setPrototypeOf) {\n    setPrototypeOf(that, P);\n  } return that;\n};\n","'use strict';\nvar $at = require('./_string-at')(true);\n\n// 21.1.3.27 String.prototype[@@iterator]()\nrequire('./_iter-define')(String, 'String', function (iterated) {\n  this._t = String(iterated); // target\n  this._i = 0;                // next index\n// 21.1.5.2.1 %StringIteratorPrototype%.next()\n}, function () {\n  var O = this._t;\n  var index = this._i;\n  var point;\n  if (index >= O.length) return { value: undefined, done: true };\n  point = $at(O, index);\n  this._i += point.length;\n  return { value: point, done: false };\n});\n","// most Object methods by ES6 should accept primitives\nvar $export = require('./_export');\nvar core = require('./_core');\nvar fails = require('./_fails');\nmodule.exports = function (KEY, exec) {\n  var fn = (core.Object || {})[KEY] || Object[KEY];\n  var exp = {};\n  exp[KEY] = exec(fn);\n  $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);\n};\n","'use strict';\n\nvar classof = require('./_classof');\nvar builtinExec = RegExp.prototype.exec;\n\n // `RegExpExec` abstract operation\n// https://tc39.github.io/ecma262/#sec-regexpexec\nmodule.exports = function (R, S) {\n  var exec = R.exec;\n  if (typeof exec === 'function') {\n    var result = exec.call(R, S);\n    if (typeof result !== 'object') {\n      throw new TypeError('RegExp exec method returned something other than an Object or null');\n    }\n    return result;\n  }\n  if (classof(R) !== 'RegExp') {\n    throw new TypeError('RegExp#exec called on incompatible receiver');\n  }\n  return builtinExec.call(R, S);\n};\n","var shared = require('./_shared')('keys');\nvar uid = require('./_uid');\nmodule.exports = function (key) {\n  return shared[key] || (shared[key] = uid(key));\n};\n","// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = require('./_cof');\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n  return cof(it) == 'String' ? it.split('') : Object(it);\n};\n","import React from \"react\"\n\nexport default React.createContext\n","import \"core-js/modules/es6.regexp.replace\";\nimport \"core-js/modules/es6.array.map\";\nimport \"core-js/modules/es6.promise\";\nimport \"core-js/modules/es6.object.to-string\";\nimport \"core-js/modules/es6.object.set-prototype-of\";\nimport \"core-js/modules/es6.object.create\";\nimport \"core-js/modules/es6.array.index-of\";\nimport \"core-js/modules/es6.object.assign\";\n\nvar _extends = Object.assign || function (target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments[i];\n\n    for (var key in source) {\n      if (Object.prototype.hasOwnProperty.call(source, key)) {\n        target[key] = source[key];\n      }\n    }\n  }\n\n  return target;\n};\n\nfunction _objectWithoutProperties(obj, keys) {\n  var target = {};\n\n  for (var i in obj) {\n    if (keys.indexOf(i) >= 0) continue;\n    if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;\n    target[i] = obj[i];\n  }\n\n  return target;\n}\n\nfunction _classCallCheck(instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n}\n\nfunction _possibleConstructorReturn(self, call) {\n  if (!self) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n\n  return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n}\n\nfunction _inherits(subClass, superClass) {\n  if (typeof superClass !== \"function\" && superClass !== null) {\n    throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n  }\n\n  subClass.prototype = Object.create(superClass && superClass.prototype, {\n    constructor: {\n      value: subClass,\n      enumerable: false,\n      writable: true,\n      configurable: true\n    }\n  });\n  if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\n/* eslint-disable jsx-a11y/anchor-has-content */\n\n\nimport React from \"react\";\nimport warning from \"warning\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"invariant\";\nimport createContext from \"create-react-context\";\nimport { polyfill } from \"react-lifecycles-compat\";\nimport { startsWith, pick, resolve, match, insertParams, validateRedirect } from \"./lib/utils\";\nimport { globalHistory, navigate, createHistory, createMemorySource } from \"./lib/history\"; ////////////////////////////////////////////////////////////////////////////////\n\nvar createNamedContext = function createNamedContext(name, defaultValue) {\n  var Ctx = createContext(defaultValue);\n  Ctx.Consumer.displayName = name + \".Consumer\";\n  Ctx.Provider.displayName = name + \".Provider\";\n  return Ctx;\n}; ////////////////////////////////////////////////////////////////////////////////\n// Location Context/Provider\n\n\nvar LocationContext = createNamedContext(\"Location\"); // sets up a listener if there isn't one already so apps don't need to be\n// wrapped in some top level provider\n\nvar Location = function Location(_ref) {\n  var children = _ref.children;\n  return React.createElement(LocationContext.Consumer, null, function (context) {\n    return context ? children(context) : React.createElement(LocationProvider, null, children);\n  });\n};\n\nvar LocationProvider = function (_React$Component) {\n  _inherits(LocationProvider, _React$Component);\n\n  function LocationProvider() {\n    var _temp, _this, _ret;\n\n    _classCallCheck(this, LocationProvider);\n\n    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.state = {\n      context: _this.getContext(),\n      refs: {\n        unlisten: null\n      }\n    }, _temp), _possibleConstructorReturn(_this, _ret);\n  }\n\n  LocationProvider.prototype.getContext = function getContext() {\n    var _props$history = this.props.history,\n        navigate = _props$history.navigate,\n        location = _props$history.location;\n    return {\n      navigate: navigate,\n      location: location\n    };\n  };\n\n  LocationProvider.prototype.componentDidCatch = function componentDidCatch(error, info) {\n    if (isRedirect(error)) {\n      var _navigate = this.props.history.navigate;\n\n      _navigate(error.uri, {\n        replace: true\n      });\n    } else {\n      throw error;\n    }\n  };\n\n  LocationProvider.prototype.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {\n    if (prevState.context.location !== this.state.context.location) {\n      this.props.history._onTransitionComplete();\n    }\n  };\n\n  LocationProvider.prototype.componentDidMount = function componentDidMount() {\n    var _this2 = this;\n\n    var refs = this.state.refs,\n        history = this.props.history;\n    refs.unlisten = history.listen(function () {\n      Promise.resolve().then(function () {\n        // TODO: replace rAF with react deferred update API when it's ready https://github.com/facebook/react/issues/13306\n        requestAnimationFrame(function () {\n          if (!_this2.unmounted) {\n            _this2.setState(function () {\n              return {\n                context: _this2.getContext()\n              };\n            });\n          }\n        });\n      });\n    });\n  };\n\n  LocationProvider.prototype.componentWillUnmount = function componentWillUnmount() {\n    var refs = this.state.refs;\n    this.unmounted = true;\n    refs.unlisten();\n  };\n\n  LocationProvider.prototype.render = function render() {\n    var context = this.state.context,\n        children = this.props.children;\n    return React.createElement(LocationContext.Provider, {\n      value: context\n    }, typeof children === \"function\" ? children(context) : children || null);\n  };\n\n  return LocationProvider;\n}(React.Component); ////////////////////////////////////////////////////////////////////////////////\n\n\nLocationProvider.defaultProps = {\n  history: globalHistory\n};\nprocess.env.NODE_ENV !== \"production\" ? LocationProvider.propTypes = {\n  history: PropTypes.object.isRequired\n} : void 0;\n\nvar ServerLocation = function ServerLocation(_ref2) {\n  var url = _ref2.url,\n      children = _ref2.children;\n  return React.createElement(LocationContext.Provider, {\n    value: {\n      location: {\n        pathname: url,\n        search: \"\",\n        hash: \"\"\n      },\n      navigate: function navigate() {\n        throw new Error(\"You can't call navigate on the server.\");\n      }\n    }\n  }, children);\n}; ////////////////////////////////////////////////////////////////////////////////\n// Sets baseuri and basepath for nested routers and links\n\n\nvar BaseContext = createNamedContext(\"Base\", {\n  baseuri: \"/\",\n  basepath: \"/\"\n}); ////////////////////////////////////////////////////////////////////////////////\n// The main event, welcome to the show everybody.\n\nvar Router = function Router(props) {\n  return React.createElement(BaseContext.Consumer, null, function (baseContext) {\n    return React.createElement(Location, null, function (locationContext) {\n      return React.createElement(RouterImpl, _extends({}, baseContext, locationContext, props));\n    });\n  });\n};\n\nvar RouterImpl = function (_React$PureComponent) {\n  _inherits(RouterImpl, _React$PureComponent);\n\n  function RouterImpl() {\n    _classCallCheck(this, RouterImpl);\n\n    return _possibleConstructorReturn(this, _React$PureComponent.apply(this, arguments));\n  }\n\n  RouterImpl.prototype.render = function render() {\n    var _props = this.props,\n        location = _props.location,\n        _navigate2 = _props.navigate,\n        basepath = _props.basepath,\n        primary = _props.primary,\n        children = _props.children,\n        baseuri = _props.baseuri,\n        _props$component = _props.component,\n        component = _props$component === undefined ? \"div\" : _props$component,\n        domProps = _objectWithoutProperties(_props, [\"location\", \"navigate\", \"basepath\", \"primary\", \"children\", \"baseuri\", \"component\"]);\n\n    var routes = React.Children.map(children, createRoute(basepath));\n    var pathname = location.pathname;\n    var match = pick(routes, pathname);\n\n    if (match) {\n      var params = match.params,\n          uri = match.uri,\n          route = match.route,\n          element = match.route.value; // remove the /* from the end for child routes relative paths\n\n      basepath = route[\"default\"] ? basepath : route.path.replace(/\\*$/, \"\");\n\n      var props = _extends({}, params, {\n        uri: uri,\n        location: location,\n        navigate: function navigate(to, options) {\n          return _navigate2(resolve(to, uri), options);\n        }\n      });\n\n      var clone = React.cloneElement(element, props, element.props.children ? React.createElement(Router, {\n        primary: primary\n      }, element.props.children) : undefined); // using 'div' for < 16.3 support\n\n      var FocusWrapper = primary ? FocusHandler : component; // don't pass any props to 'div'\n\n      var wrapperProps = primary ? _extends({\n        uri: uri,\n        location: location,\n        component: component\n      }, domProps) : domProps;\n      return React.createElement(BaseContext.Provider, {\n        value: {\n          baseuri: uri,\n          basepath: basepath\n        }\n      }, React.createElement(FocusWrapper, wrapperProps, clone));\n    } else {\n      // Not sure if we want this, would require index routes at every level\n      // warning(\n      //   false,\n      //   `<Router basepath=\"${basepath}\">\\n\\nNothing matched:\\n\\t${\n      //     location.pathname\n      //   }\\n\\nPaths checked: \\n\\t${routes\n      //     .map(route => route.path)\n      //     .join(\n      //       \"\\n\\t\"\n      //     )}\\n\\nTo get rid of this warning, add a default NotFound component as child of Router:\n      //   \\n\\tlet NotFound = () => <div>Not Found!</div>\n      //   \\n\\t<Router>\\n\\t  <NotFound default/>\\n\\t  {/* ... */}\\n\\t</Router>`\n      // );\n      return null;\n    }\n  };\n\n  return RouterImpl;\n}(React.PureComponent);\n\nRouterImpl.defaultProps = {\n  primary: true\n};\nvar FocusContext = createNamedContext(\"Focus\");\n\nvar FocusHandler = function FocusHandler(_ref3) {\n  var uri = _ref3.uri,\n      location = _ref3.location,\n      component = _ref3.component,\n      domProps = _objectWithoutProperties(_ref3, [\"uri\", \"location\", \"component\"]);\n\n  return React.createElement(FocusContext.Consumer, null, function (requestFocus) {\n    return React.createElement(FocusHandlerImpl, _extends({}, domProps, {\n      component: component,\n      requestFocus: requestFocus,\n      uri: uri,\n      location: location\n    }));\n  });\n}; // don't focus on initial render\n\n\nvar initialRender = true;\nvar focusHandlerCount = 0;\n\nvar FocusHandlerImpl = function (_React$Component2) {\n  _inherits(FocusHandlerImpl, _React$Component2);\n\n  function FocusHandlerImpl() {\n    var _temp2, _this4, _ret2;\n\n    _classCallCheck(this, FocusHandlerImpl);\n\n    for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n      args[_key2] = arguments[_key2];\n    }\n\n    return _ret2 = (_temp2 = (_this4 = _possibleConstructorReturn(this, _React$Component2.call.apply(_React$Component2, [this].concat(args))), _this4), _this4.state = {}, _this4.requestFocus = function (node) {\n      if (!_this4.state.shouldFocus) {\n        node.focus();\n      }\n    }, _temp2), _possibleConstructorReturn(_this4, _ret2);\n  }\n\n  FocusHandlerImpl.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps, prevState) {\n    var initial = prevState.uri == null;\n\n    if (initial) {\n      return _extends({\n        shouldFocus: true\n      }, nextProps);\n    } else {\n      var myURIChanged = nextProps.uri !== prevState.uri;\n      var navigatedUpToMe = prevState.location.pathname !== nextProps.location.pathname && nextProps.location.pathname === nextProps.uri;\n      return _extends({\n        shouldFocus: myURIChanged || navigatedUpToMe\n      }, nextProps);\n    }\n  };\n\n  FocusHandlerImpl.prototype.componentDidMount = function componentDidMount() {\n    focusHandlerCount++;\n    this.focus();\n  };\n\n  FocusHandlerImpl.prototype.componentWillUnmount = function componentWillUnmount() {\n    focusHandlerCount--;\n\n    if (focusHandlerCount === 0) {\n      initialRender = true;\n    }\n  };\n\n  FocusHandlerImpl.prototype.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {\n    if (prevProps.location !== this.props.location && this.state.shouldFocus) {\n      this.focus();\n    }\n  };\n\n  FocusHandlerImpl.prototype.focus = function focus() {\n    if (process.env.NODE_ENV === \"test\") {\n      // getting cannot read property focus of null in the tests\n      // and that bit of global `initialRender` state causes problems\n      // should probably figure it out!\n      return;\n    }\n\n    var requestFocus = this.props.requestFocus;\n\n    if (requestFocus) {\n      requestFocus(this.node);\n    } else {\n      if (initialRender) {\n        initialRender = false;\n      } else {\n        // React polyfills [autofocus] and it fires earlier than cDM,\n        // so we were stealing focus away, this line prevents that.\n        if (!this.node.contains(document.activeElement)) {\n          this.node.focus();\n        }\n      }\n    }\n  };\n\n  FocusHandlerImpl.prototype.render = function render() {\n    var _this5 = this;\n\n    var _props2 = this.props,\n        children = _props2.children,\n        style = _props2.style,\n        requestFocus = _props2.requestFocus,\n        _props2$role = _props2.role,\n        role = _props2$role === undefined ? \"group\" : _props2$role,\n        _props2$component = _props2.component,\n        Comp = _props2$component === undefined ? \"div\" : _props2$component,\n        uri = _props2.uri,\n        location = _props2.location,\n        domProps = _objectWithoutProperties(_props2, [\"children\", \"style\", \"requestFocus\", \"role\", \"component\", \"uri\", \"location\"]);\n\n    return React.createElement(Comp, _extends({\n      style: _extends({\n        outline: \"none\"\n      }, style),\n      tabIndex: \"-1\",\n      role: role,\n      ref: function ref(n) {\n        return _this5.node = n;\n      }\n    }, domProps), React.createElement(FocusContext.Provider, {\n      value: this.requestFocus\n    }, this.props.children));\n  };\n\n  return FocusHandlerImpl;\n}(React.Component);\n\npolyfill(FocusHandlerImpl);\n\nvar k = function k() {}; ////////////////////////////////////////////////////////////////////////////////\n\n\nvar forwardRef = React.forwardRef;\n\nif (typeof forwardRef === \"undefined\") {\n  forwardRef = function forwardRef(C) {\n    return C;\n  };\n}\n\nvar Link = forwardRef(function (_ref4, ref) {\n  var innerRef = _ref4.innerRef,\n      props = _objectWithoutProperties(_ref4, [\"innerRef\"]);\n\n  return React.createElement(BaseContext.Consumer, null, function (_ref5) {\n    var basepath = _ref5.basepath,\n        baseuri = _ref5.baseuri;\n    return React.createElement(Location, null, function (_ref6) {\n      var location = _ref6.location,\n          navigate = _ref6.navigate;\n\n      var to = props.to,\n          state = props.state,\n          replace = props.replace,\n          _props$getProps = props.getProps,\n          getProps = _props$getProps === undefined ? k : _props$getProps,\n          anchorProps = _objectWithoutProperties(props, [\"to\", \"state\", \"replace\", \"getProps\"]);\n\n      var href = resolve(to, baseuri);\n      var isCurrent = location.pathname === href;\n      var isPartiallyCurrent = startsWith(location.pathname, href);\n      return React.createElement(\"a\", _extends({\n        ref: ref || innerRef,\n        \"aria-current\": isCurrent ? \"page\" : undefined\n      }, anchorProps, getProps({\n        isCurrent: isCurrent,\n        isPartiallyCurrent: isPartiallyCurrent,\n        href: href,\n        location: location\n      }), {\n        href: href,\n        onClick: function onClick(event) {\n          if (anchorProps.onClick) anchorProps.onClick(event);\n\n          if (shouldNavigate(event)) {\n            event.preventDefault();\n            navigate(href, {\n              state: state,\n              replace: replace\n            });\n          }\n        }\n      }));\n    });\n  });\n}); ////////////////////////////////////////////////////////////////////////////////\n\nfunction RedirectRequest(uri) {\n  this.uri = uri;\n}\n\nvar isRedirect = function isRedirect(o) {\n  return o instanceof RedirectRequest;\n};\n\nvar redirectTo = function redirectTo(to) {\n  throw new RedirectRequest(to);\n};\n\nvar RedirectImpl = function (_React$Component3) {\n  _inherits(RedirectImpl, _React$Component3);\n\n  function RedirectImpl() {\n    _classCallCheck(this, RedirectImpl);\n\n    return _possibleConstructorReturn(this, _React$Component3.apply(this, arguments));\n  } // Support React < 16 with this hook\n\n\n  RedirectImpl.prototype.componentDidMount = function componentDidMount() {\n    var _props3 = this.props,\n        navigate = _props3.navigate,\n        to = _props3.to,\n        from = _props3.from,\n        _props3$replace = _props3.replace,\n        replace = _props3$replace === undefined ? true : _props3$replace,\n        state = _props3.state,\n        noThrow = _props3.noThrow,\n        props = _objectWithoutProperties(_props3, [\"navigate\", \"to\", \"from\", \"replace\", \"state\", \"noThrow\"]);\n\n    Promise.resolve().then(function () {\n      navigate(insertParams(to, props), {\n        replace: replace,\n        state: state\n      });\n    });\n  };\n\n  RedirectImpl.prototype.render = function render() {\n    var _props4 = this.props,\n        navigate = _props4.navigate,\n        to = _props4.to,\n        from = _props4.from,\n        replace = _props4.replace,\n        state = _props4.state,\n        noThrow = _props4.noThrow,\n        props = _objectWithoutProperties(_props4, [\"navigate\", \"to\", \"from\", \"replace\", \"state\", \"noThrow\"]);\n\n    if (!noThrow) redirectTo(insertParams(to, props));\n    return null;\n  };\n\n  return RedirectImpl;\n}(React.Component);\n\nvar Redirect = function Redirect(props) {\n  return React.createElement(Location, null, function (locationContext) {\n    return React.createElement(RedirectImpl, _extends({}, locationContext, props));\n  });\n};\n\nprocess.env.NODE_ENV !== \"production\" ? Redirect.propTypes = {\n  from: PropTypes.string,\n  to: PropTypes.string.isRequired\n} : void 0; ////////////////////////////////////////////////////////////////////////////////\n\nvar Match = function Match(_ref7) {\n  var path = _ref7.path,\n      children = _ref7.children;\n  return React.createElement(BaseContext.Consumer, null, function (_ref8) {\n    var baseuri = _ref8.baseuri;\n    return React.createElement(Location, null, function (_ref9) {\n      var navigate = _ref9.navigate,\n          location = _ref9.location;\n      var resolvedPath = resolve(path, baseuri);\n      var result = match(resolvedPath, location.pathname);\n      return children({\n        navigate: navigate,\n        location: location,\n        match: result ? _extends({}, result.params, {\n          uri: result.uri,\n          path: path\n        }) : null\n      });\n    });\n  });\n}; ////////////////////////////////////////////////////////////////////////////////\n// Junk\n\n\nvar stripSlashes = function stripSlashes(str) {\n  return str.replace(/(^\\/+|\\/+$)/g, \"\");\n};\n\nvar createRoute = function createRoute(basepath) {\n  return function (element) {\n    if (!element) {\n      return null;\n    }\n\n    !(element.props.path || element.props[\"default\"] || element.type === Redirect) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"<Router>: Children of <Router> must have a `path` or `default` prop, or be a `<Redirect>`. None found on element type `\" + element.type + \"`\") : invariant(false) : void 0;\n    !!(element.type === Redirect && (!element.props.from || !element.props.to)) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"<Redirect from=\\\"\" + element.props.from + \" to=\\\"\" + element.props.to + \"\\\"/> requires both \\\"from\\\" and \\\"to\\\" props when inside a <Router>.\") : invariant(false) : void 0;\n    !!(element.type === Redirect && !validateRedirect(element.props.from, element.props.to)) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"<Redirect from=\\\"\" + element.props.from + \" to=\\\"\" + element.props.to + \"\\\"/> has mismatched dynamic segments, ensure both paths have the exact same dynamic segments.\") : invariant(false) : void 0;\n\n    if (element.props[\"default\"]) {\n      return {\n        value: element,\n        \"default\": true\n      };\n    }\n\n    var elementPath = element.type === Redirect ? element.props.from : element.props.path;\n    var path = elementPath === \"/\" ? basepath : stripSlashes(basepath) + \"/\" + stripSlashes(elementPath);\n    return {\n      value: element,\n      \"default\": element.props[\"default\"],\n      path: element.props.children ? stripSlashes(path) + \"/*\" : path\n    };\n  };\n};\n\nvar shouldNavigate = function shouldNavigate(event) {\n  return !event.defaultPrevented && event.button === 0 && !(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}; ////////////////////////////////////////////////////////////////////////\n\n\nexport {  Link, Location, LocationProvider, Match, Redirect, Router, ServerLocation, createHistory, createMemorySource, isRedirect, navigate, redirectTo, globalHistory , BaseContext };","'use strict';\n// https://github.com/tc39/Array.prototype.includes\nvar $export = require('./_export');\nvar $includes = require('./_array-includes')(true);\n\n$export($export.P, 'Array', {\n  includes: function includes(el /* , fromIndex = 0 */) {\n    return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n\nrequire('./_add-to-unscopables')('includes');\n","var META = require('./_uid')('meta');\nvar isObject = require('./_is-object');\nvar has = require('./_has');\nvar setDesc = require('./_object-dp').f;\nvar id = 0;\nvar isExtensible = Object.isExtensible || function () {\n  return true;\n};\nvar FREEZE = !require('./_fails')(function () {\n  return isExtensible(Object.preventExtensions({}));\n});\nvar setMeta = function (it) {\n  setDesc(it, META, { value: {\n    i: 'O' + ++id, // object ID\n    w: {}          // weak collections IDs\n  } });\n};\nvar fastKey = function (it, create) {\n  // return primitive with prefix\n  if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n  if (!has(it, META)) {\n    // can't set metadata to uncaught frozen object\n    if (!isExtensible(it)) return 'F';\n    // not necessary to add metadata\n    if (!create) return 'E';\n    // add missing metadata\n    setMeta(it);\n  // return object ID\n  } return it[META].i;\n};\nvar getWeak = function (it, create) {\n  if (!has(it, META)) {\n    // can't set metadata to uncaught frozen object\n    if (!isExtensible(it)) return true;\n    // not necessary to add metadata\n    if (!create) return false;\n    // add missing metadata\n    setMeta(it);\n  // return hash weak collections IDs\n  } return it[META].w;\n};\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n  if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);\n  return it;\n};\nvar meta = module.exports = {\n  KEY: META,\n  NEED: false,\n  fastKey: fastKey,\n  getWeak: getWeak,\n  onFreeze: onFreeze\n};\n","'use strict';\nvar redefineAll = require('./_redefine-all');\nvar getWeak = require('./_meta').getWeak;\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar createArrayMethod = require('./_array-methods');\nvar $has = require('./_has');\nvar validate = require('./_validate-collection');\nvar arrayFind = createArrayMethod(5);\nvar arrayFindIndex = createArrayMethod(6);\nvar id = 0;\n\n// fallback for uncaught frozen keys\nvar uncaughtFrozenStore = function (that) {\n  return that._l || (that._l = new UncaughtFrozenStore());\n};\nvar UncaughtFrozenStore = function () {\n  this.a = [];\n};\nvar findUncaughtFrozen = function (store, key) {\n  return arrayFind(store.a, function (it) {\n    return it[0] === key;\n  });\n};\nUncaughtFrozenStore.prototype = {\n  get: function (key) {\n    var entry = findUncaughtFrozen(this, key);\n    if (entry) return entry[1];\n  },\n  has: function (key) {\n    return !!findUncaughtFrozen(this, key);\n  },\n  set: function (key, value) {\n    var entry = findUncaughtFrozen(this, key);\n    if (entry) entry[1] = value;\n    else this.a.push([key, value]);\n  },\n  'delete': function (key) {\n    var index = arrayFindIndex(this.a, function (it) {\n      return it[0] === key;\n    });\n    if (~index) this.a.splice(index, 1);\n    return !!~index;\n  }\n};\n\nmodule.exports = {\n  getConstructor: function (wrapper, NAME, IS_MAP, ADDER) {\n    var C = wrapper(function (that, iterable) {\n      anInstance(that, C, NAME, '_i');\n      that._t = NAME;      // collection type\n      that._i = id++;      // collection id\n      that._l = undefined; // leak store for uncaught frozen objects\n      if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n    });\n    redefineAll(C.prototype, {\n      // 23.3.3.2 WeakMap.prototype.delete(key)\n      // 23.4.3.3 WeakSet.prototype.delete(value)\n      'delete': function (key) {\n        if (!isObject(key)) return false;\n        var data = getWeak(key);\n        if (data === true) return uncaughtFrozenStore(validate(this, NAME))['delete'](key);\n        return data && $has(data, this._i) && delete data[this._i];\n      },\n      // 23.3.3.4 WeakMap.prototype.has(key)\n      // 23.4.3.4 WeakSet.prototype.has(value)\n      has: function has(key) {\n        if (!isObject(key)) return false;\n        var data = getWeak(key);\n        if (data === true) return uncaughtFrozenStore(validate(this, NAME)).has(key);\n        return data && $has(data, this._i);\n      }\n    });\n    return C;\n  },\n  def: function (that, key, value) {\n    var data = getWeak(anObject(key), true);\n    if (data === true) uncaughtFrozenStore(that).set(key, value);\n    else data[that._i] = value;\n    return that;\n  },\n  ufstore: uncaughtFrozenStore\n};\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports[\"default\"] = scrollTop;\n\nvar _isWindow = _interopRequireDefault(require(\"./isWindow\"));\n\nfunction scrollTop(node, val) {\n  var win = (0, _isWindow[\"default\"])(node);\n  if (val === undefined) return win ? 'pageYOffset' in win ? win.pageYOffset : win.document.documentElement.scrollTop : node.scrollTop;\n  if (win) win.scrollTo('pageXOffset' in win ? win.pageXOffset : win.document.documentElement.scrollLeft, val);else node.scrollTop = val;\n}\n\nmodule.exports = exports[\"default\"];","'use strict';\nrequire('./es6.regexp.flags');\nvar anObject = require('./_an-object');\nvar $flags = require('./_flags');\nvar DESCRIPTORS = require('./_descriptors');\nvar TO_STRING = 'toString';\nvar $toString = /./[TO_STRING];\n\nvar define = function (fn) {\n  require('./_redefine')(RegExp.prototype, TO_STRING, fn, true);\n};\n\n// 21.2.5.14 RegExp.prototype.toString()\nif (require('./_fails')(function () { return $toString.call({ source: 'a', flags: 'b' }) != '/a/b'; })) {\n  define(function toString() {\n    var R = anObject(this);\n    return '/'.concat(R.source, '/',\n      'flags' in R ? R.flags : !DESCRIPTORS && R instanceof RegExp ? $flags.call(R) : undefined);\n  });\n// FF44- RegExp#toString has a wrong name\n} else if ($toString.name != TO_STRING) {\n  define(function toString() {\n    return $toString.call(this);\n  });\n}\n","// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = require('./_iobject');\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n  return IObject(defined(it));\n};\n","var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n  return hasOwnProperty.call(it, key);\n};\n","// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n  if (!isObject(it)) return it;\n  var fn, val;\n  if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n  if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n  if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n  throw TypeError(\"Can't convert object to primitive value\");\n};\n","'use strict';\nvar $export = require('./_export');\nvar $map = require('./_array-methods')(1);\n\n$export($export.P + $export.F * !require('./_strict-method')([].map, true), 'Array', {\n  // 22.1.3.15 / 15.4.4.19 Array.prototype.map(callbackfn [, thisArg])\n  map: function map(callbackfn /* , thisArg */) {\n    return $map(this, callbackfn, arguments[1]);\n  }\n});\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _inDOM = _interopRequireDefault(require(\"../util/inDOM\"));\n\nvar off = function off() {};\n\nif (_inDOM[\"default\"]) {\n  off = function () {\n    if (document.addEventListener) return function (node, eventName, handler, capture) {\n      return node.removeEventListener(eventName, handler, capture || false);\n    };else if (document.attachEvent) return function (node, eventName, handler) {\n      return node.detachEvent('on' + eventName, handler);\n    };\n  }();\n}\n\nvar _default = off;\nexports[\"default\"] = _default;\nmodule.exports = exports[\"default\"];","/**\n * Remove a prefix from a string. Return the input string if the given prefix\n * isn't found.\n */\n\nexport default (str, prefix = ``) => {\n  if (!prefix) {\n    return str\n  }\n\n  prefix += `/`\n\n  if (str.substr(0, prefix.length) === prefix) {\n    return str.slice(prefix.length - 1)\n  }\n\n  return str\n}\n","\"use strict\";\n\nrequire(\"core-js/modules/es6.array.index-of\");\n\nexports.__esModule = true;\nexports.parsePath = parsePath;\n\nfunction parsePath(path) {\n  var pathname = path || \"/\";\n  var search = \"\";\n  var hash = \"\";\n  var hashIndex = pathname.indexOf(\"#\");\n\n  if (hashIndex !== -1) {\n    hash = pathname.substr(hashIndex);\n    pathname = pathname.substr(0, hashIndex);\n  }\n\n  var searchIndex = pathname.indexOf(\"?\");\n\n  if (searchIndex !== -1) {\n    search = pathname.substr(searchIndex);\n    pathname = pathname.substr(0, searchIndex);\n  }\n\n  return {\n    pathname: pathname,\n    search: search === \"?\" ? \"\" : search,\n    hash: hash === \"#\" ? \"\" : hash\n  };\n}","'use strict';\n// 19.1.2.1 Object.assign(target, source, ...)\nvar DESCRIPTORS = require('./_descriptors');\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nvar toObject = require('./_to-object');\nvar IObject = require('./_iobject');\nvar $assign = Object.assign;\n\n// should work with symbols and should have deterministic property order (V8 bug)\nmodule.exports = !$assign || require('./_fails')(function () {\n  var A = {};\n  var B = {};\n  // eslint-disable-next-line no-undef\n  var S = Symbol();\n  var K = 'abcdefghijklmnopqrst';\n  A[S] = 7;\n  K.split('').forEach(function (k) { B[k] = k; });\n  return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n  var T = toObject(target);\n  var aLen = arguments.length;\n  var index = 1;\n  var getSymbols = gOPS.f;\n  var isEnum = pIE.f;\n  while (aLen > index) {\n    var S = IObject(arguments[index++]);\n    var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);\n    var length = keys.length;\n    var j = 0;\n    var key;\n    while (length > j) {\n      key = keys[j++];\n      if (!DESCRIPTORS || isEnum.call(S, key)) T[key] = S[key];\n    }\n  } return T;\n} : $assign;\n","var toInteger = require('./_to-integer');\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n  index = toInteger(index);\n  return index < 0 ? max(index + length, 0) : min(index, length);\n};\n","'use strict';\n// 22.1.3.8 Array.prototype.find(predicate, thisArg = undefined)\nvar $export = require('./_export');\nvar $find = require('./_array-methods')(5);\nvar KEY = 'find';\nvar forced = true;\n// Shouldn't skip holes\nif (KEY in []) Array(1)[KEY](function () { forced = false; });\n$export($export.P + $export.F * forced, 'Array', {\n  find: function find(callbackfn /* , that = undefined */) {\n    return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\nrequire('./_add-to-unscopables')(KEY);\n","'use strict';\nvar $export = require('./_export');\nvar $some = require('./_array-methods')(3);\n\n$export($export.P + $export.F * !require('./_strict-method')([].some, true), 'Array', {\n  // 22.1.3.23 / 15.4.4.17 Array.prototype.some(callbackfn [, thisArg])\n  some: function some(callbackfn /* , thisArg */) {\n    return $some(this, callbackfn, arguments[1]);\n  }\n});\n","// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n  ? window : typeof self != 'undefined' && self.Math == Math ? self\n  // eslint-disable-next-line no-new-func\n  : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n","// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nvar toIObject = require('./_to-iobject');\nvar gOPN = require('./_object-gopn').f;\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n  ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n  try {\n    return gOPN(it);\n  } catch (e) {\n    return windowNames.slice();\n  }\n};\n\nmodule.exports.f = function getOwnPropertyNames(it) {\n  return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));\n};\n","// 20.3.3.1 / 15.9.4.4 Date.now()\nvar $export = require('./_export');\n\n$export($export.S, 'Date', { now: function () { return new Date().getTime(); } });\n","module.exports = function (exec) {\n  try {\n    return !!exec();\n  } catch (e) {\n    return true;\n  }\n};\n","'use strict';\nvar global = require('./_global');\nvar dP = require('./_object-dp');\nvar DESCRIPTORS = require('./_descriptors');\nvar SPECIES = require('./_wks')('species');\n\nmodule.exports = function (KEY) {\n  var C = global[KEY];\n  if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, {\n    configurable: true,\n    get: function () { return this; }\n  });\n};\n","const support = function(feature) {\n  if (typeof document === `undefined`) {\n    return false\n  }\n  const fakeLink = document.createElement(`link`)\n  try {\n    if (fakeLink.relList && typeof fakeLink.relList.supports === `function`) {\n      return fakeLink.relList.supports(feature)\n    }\n  } catch (err) {\n    return false\n  }\n  return false\n}\n\nconst linkPrefetchStrategy = function(url, options) {\n  return new Promise((resolve, reject) => {\n    if (typeof document === `undefined`) {\n      reject()\n      return\n    }\n\n    const link = document.createElement(`link`)\n    link.setAttribute(`rel`, `prefetch`)\n    link.setAttribute(`href`, url)\n\n    Object.keys(options).forEach(key => {\n      link.setAttribute(key, options[key])\n    })\n\n    link.onload = resolve\n    link.onerror = reject\n\n    const parentElement =\n      document.getElementsByTagName(`head`)[0] ||\n      document.getElementsByName(`script`)[0].parentNode\n    parentElement.appendChild(link)\n  })\n}\n\nconst xhrPrefetchStrategy = function(url) {\n  return new Promise((resolve, reject) => {\n    const req = new XMLHttpRequest()\n    req.open(`GET`, url, true)\n\n    req.onload = () => {\n      if (req.status === 200) {\n        resolve()\n      } else {\n        reject()\n      }\n    }\n\n    req.send(null)\n  })\n}\n\nconst supportedPrefetchStrategy = support(`prefetch`)\n  ? linkPrefetchStrategy\n  : xhrPrefetchStrategy\n\nconst preFetched = {}\n\nconst prefetch = function(url, options) {\n  return new Promise(resolve => {\n    if (preFetched[url]) {\n      resolve()\n      return\n    }\n\n    supportedPrefetchStrategy(url, options)\n      .then(() => {\n        resolve()\n        preFetched[url] = true\n      })\n      .catch(() => {}) // 404s are logged to the console anyway\n  })\n}\n\nexport default prefetch\n","export default path => {\n  if (path === undefined) {\n    return path\n  }\n  if (path === `/`) {\n    return `/`\n  }\n  if (path.charAt(path.length - 1) === `/`) {\n    return path.slice(0, -1)\n  }\n  return path\n}\n","import { match } from \"@reach/router/lib/utils\"\nimport stripPrefix from \"./strip-prefix\"\nimport normalizePagePath from \"./normalize-page-path\"\n\nconst pathCache = new Map()\nlet matchPaths = []\n\nconst trimPathname = rawPathname => {\n  const pathname = decodeURIComponent(rawPathname)\n  // Remove the pathPrefix from the pathname.\n  const trimmedPathname = stripPrefix(pathname, __BASE_PATH__)\n    // Remove any hashfragment\n    .split(`#`)[0]\n    // Remove search query\n    .split(`?`)[0]\n\n  return trimmedPathname\n}\n\n/**\n * Set list of matchPaths\n *\n * @param {Array<{path: string, matchPath: string}>} value collection of matchPaths\n */\nexport const setMatchPaths = value => {\n  matchPaths = value\n}\n\n/**\n * Return a matchpath url\n * if `match-paths.json` contains `{ \"/foo*\": \"/page1\", ...}`, then\n * `/foo?bar=far` => `/page1`\n *\n * @param {string} rawPathname A raw pathname\n * @return {string|null}\n */\nexport const findMatchPath = rawPathname => {\n  const trimmedPathname = cleanPath(rawPathname)\n\n  for (const { matchPath, path } of matchPaths) {\n    if (match(matchPath, trimmedPathname)) {\n      return normalizePagePath(path)\n    }\n  }\n\n  return null\n}\n\n// Given a raw URL path, returns the cleaned version of it (trim off\n// `#` and query params), or if it matches an entry in\n// `match-paths.json`, its matched path is returned\n//\n// E.g. `/foo?bar=far` => `/foo`\n//\n// Or if `match-paths.json` contains `{ \"/foo*\": \"/page1\", ...}`, then\n// `/foo?bar=far` => `/page1`\nexport const findPath = rawPathname => {\n  const trimmedPathname = trimPathname(rawPathname)\n\n  if (pathCache.has(trimmedPathname)) {\n    return pathCache.get(trimmedPathname)\n  }\n\n  let foundPath = findMatchPath(trimmedPathname)\n\n  if (!foundPath) {\n    foundPath = cleanPath(rawPathname)\n  }\n\n  pathCache.set(trimmedPathname, foundPath)\n\n  return foundPath\n}\n\n/**\n * Clean a url and converts /index.html => /\n * E.g. `/foo?bar=far` => `/foo`\n *\n * @param {string} rawPathname A raw pathname\n * @return {string}\n */\nexport const cleanPath = rawPathname => {\n  const trimmedPathname = trimPathname(rawPathname)\n\n  let foundPath = trimmedPathname\n  if (foundPath === `/index.html`) {\n    foundPath = `/`\n  }\n\n  foundPath = normalizePagePath(foundPath)\n\n  return foundPath\n}\n","import prefetchHelper from \"./prefetch\"\nimport emitter from \"./emitter\"\nimport { setMatchPaths, findPath, findMatchPath } from \"./find-path\"\n\nconst preferDefault = m => (m && m.default) || m\n\nconst stripSurroundingSlashes = s => {\n  s = s[0] === `/` ? s.slice(1) : s\n  s = s.endsWith(`/`) ? s.slice(0, -1) : s\n  return s\n}\n\nconst createPageDataUrl = path => {\n  const fixedPath = path === `/` ? `index` : stripSurroundingSlashes(path)\n  return `${__PATH_PREFIX__}/page-data/${fixedPath}/page-data.json`\n}\n\nconst doFetch = (url, method = `GET`) =>\n  new Promise((resolve, reject) => {\n    const req = new XMLHttpRequest()\n    req.open(method, url, true)\n    req.onreadystatechange = () => {\n      if (req.readyState == 4) {\n        resolve(req)\n      }\n    }\n    req.send(null)\n  })\n\nconst loadPageDataJson = loadObj => {\n  const { pagePath, retries = 0 } = loadObj\n  const url = createPageDataUrl(pagePath)\n  return doFetch(url).then(req => {\n    const { status, responseText } = req\n\n    // Handle 200\n    if (status === 200) {\n      try {\n        const jsonPayload = JSON.parse(responseText)\n        if (jsonPayload.path === undefined) {\n          throw new Error(`not a valid pageData response`)\n        }\n\n        return Object.assign(loadObj, {\n          status: `success`,\n          payload: jsonPayload,\n        })\n      } catch (err) {\n        // continue regardless of error\n      }\n    }\n\n    // Handle 404\n    if (status === 404 || status === 200) {\n      // If the request was for a 404 page and it doesn't exist, we're done\n      if (pagePath === `/404.html`) {\n        return Object.assign(loadObj, {\n          status: `failure`,\n        })\n      }\n\n      // Need some code here to cache the 404 request. In case\n      // multiple loadPageDataJsons result in 404s\n      return loadPageDataJson(\n        Object.assign(loadObj, { pagePath: `/404.html`, notFound: true })\n      )\n    }\n\n    // handle 500 response (Unrecoverable)\n    if (status === 500) {\n      return Object.assign(loadObj, {\n        status: `error`,\n      })\n    }\n\n    // Handle everything else, including status === 0, and 503s. Should retry\n    if (retries < 3) {\n      return loadPageDataJson(Object.assign(loadObj, { retries: retries + 1 }))\n    }\n\n    // Retried 3 times already, result is a failure.\n    return Object.assign(loadObj, {\n      status: `error`,\n    })\n  })\n}\n\nconst doesConnectionSupportPrefetch = () => {\n  if (\n    `connection` in navigator &&\n    typeof navigator.connection !== `undefined`\n  ) {\n    if ((navigator.connection.effectiveType || ``).includes(`2g`)) {\n      return false\n    }\n    if (navigator.connection.saveData) {\n      return false\n    }\n  }\n  return true\n}\n\nconst toPageResources = (pageData, component = null) => {\n  const page = {\n    componentChunkName: pageData.componentChunkName,\n    path: pageData.path,\n    webpackCompilationHash: pageData.webpackCompilationHash,\n    matchPath: pageData.matchPath,\n  }\n\n  return {\n    component,\n    json: pageData.result,\n    page,\n  }\n}\n\nexport class BaseLoader {\n  constructor(loadComponent, matchPaths) {\n    // Map of pagePath -> Page. Where Page is an object with: {\n    //   status: `success` || `error`,\n    //   payload: PageResources, // undefined if `error`\n    // }\n    // PageResources is {\n    //   component,\n    //   json: pageData.result,\n    //   page: {\n    //     componentChunkName,\n    //     path,\n    //     webpackCompilationHash,\n    //   }\n    // }\n    this.pageDb = new Map()\n    this.inFlightDb = new Map()\n    this.pageDataDb = new Map()\n    this.prefetchTriggered = new Set()\n    this.prefetchCompleted = new Set()\n    this.loadComponent = loadComponent\n    setMatchPaths(matchPaths)\n  }\n\n  setApiRunner(apiRunner) {\n    this.apiRunner = apiRunner\n    this.prefetchDisabled = apiRunner(`disableCorePrefetching`).some(a => a)\n  }\n\n  loadPageDataJson(rawPath) {\n    const pagePath = findPath(rawPath)\n    if (this.pageDataDb.has(pagePath)) {\n      return Promise.resolve(this.pageDataDb.get(pagePath))\n    }\n\n    return loadPageDataJson({ pagePath }).then(pageData => {\n      this.pageDataDb.set(pagePath, pageData)\n\n      return pageData\n    })\n  }\n\n  findMatchPath(rawPath) {\n    return findMatchPath(rawPath)\n  }\n\n  // TODO check all uses of this and whether they use undefined for page resources not exist\n  loadPage(rawPath) {\n    const pagePath = findPath(rawPath)\n    if (this.pageDb.has(pagePath)) {\n      const page = this.pageDb.get(pagePath)\n      return Promise.resolve(page.payload)\n    }\n    if (this.inFlightDb.has(pagePath)) {\n      return this.inFlightDb.get(pagePath)\n    }\n\n    const inFlight = Promise.all([\n      this.loadAppData(),\n      this.loadPageDataJson(pagePath),\n    ])\n      .then(allData => {\n        const result = allData[1]\n        if (result.status === `error`) {\n          return {\n            status: `error`,\n          }\n        }\n        if (result.status === `failure`) {\n          // throw an error so error trackers can pick this up\n          throw new Error(\n            `404 page could not be found. Checkout https://www.gatsbyjs.org/docs/add-404-page/`\n          )\n        }\n\n        let pageData = result.payload\n        const { componentChunkName } = pageData\n        return this.loadComponent(componentChunkName).then(component => {\n          const finalResult = { createdAt: new Date() }\n          let pageResources\n          if (!component) {\n            finalResult.status = `error`\n          } else {\n            finalResult.status = `success`\n            if (result.notFound === true) {\n              finalResult.notFound = true\n            }\n            pageData = Object.assign(pageData, {\n              webpackCompilationHash: allData[0]\n                ? allData[0].webpackCompilationHash\n                : ``,\n            })\n            pageResources = toPageResources(pageData, component)\n            finalResult.payload = pageResources\n            emitter.emit(`onPostLoadPageResources`, {\n              page: pageResources,\n              pageResources,\n            })\n          }\n          this.pageDb.set(pagePath, finalResult)\n          // undefined if final result is an error\n          return pageResources\n        })\n      })\n      // prefer duplication with then + catch over .finally to prevent problems in ie11 + firefox\n      .then(response => {\n        this.inFlightDb.delete(pagePath)\n        return response\n      })\n      .catch(err => {\n        this.inFlightDb.delete(pagePath)\n        throw err\n      })\n\n    this.inFlightDb.set(pagePath, inFlight)\n    return inFlight\n  }\n\n  // returns undefined if loading page ran into errors\n  loadPageSync(rawPath) {\n    const pagePath = findPath(rawPath)\n    if (this.pageDb.has(pagePath)) {\n      return this.pageDb.get(pagePath).payload\n    }\n    return undefined\n  }\n\n  shouldPrefetch(pagePath) {\n    // Skip prefetching if we know user is on slow or constrained connection\n    if (!doesConnectionSupportPrefetch()) {\n      return false\n    }\n\n    // Check if the page exists.\n    if (this.pageDb.has(pagePath)) {\n      return false\n    }\n\n    return true\n  }\n\n  prefetch(pagePath) {\n    if (!this.shouldPrefetch(pagePath)) {\n      return false\n    }\n\n    // Tell plugins with custom prefetching logic that they should start\n    // prefetching this path.\n    if (!this.prefetchTriggered.has(pagePath)) {\n      this.apiRunner(`onPrefetchPathname`, { pathname: pagePath })\n      this.prefetchTriggered.add(pagePath)\n    }\n\n    // If a plugin has disabled core prefetching, stop now.\n    if (this.prefetchDisabled) {\n      return false\n    }\n\n    const realPath = findPath(pagePath)\n    // Todo make doPrefetch logic cacheable\n    // eslint-disable-next-line consistent-return\n    this.doPrefetch(realPath).then(() => {\n      if (!this.prefetchCompleted.has(pagePath)) {\n        this.apiRunner(`onPostPrefetchPathname`, { pathname: pagePath })\n        this.prefetchCompleted.add(pagePath)\n      }\n    })\n\n    return true\n  }\n\n  doPrefetch(pagePath) {\n    throw new Error(`doPrefetch not implemented`)\n  }\n\n  hovering(rawPath) {\n    this.loadPage(rawPath)\n  }\n\n  getResourceURLsForPathname(rawPath) {\n    const pagePath = findPath(rawPath)\n    const page = this.pageDataDb.get(pagePath)\n    if (page) {\n      const pageResources = toPageResources(page.payload)\n\n      return [\n        ...createComponentUrls(pageResources.page.componentChunkName),\n        createPageDataUrl(pagePath),\n      ]\n    } else {\n      return null\n    }\n  }\n\n  isPageNotFound(rawPath) {\n    const pagePath = findPath(rawPath)\n    const page = this.pageDb.get(pagePath)\n    return page && page.notFound === true\n  }\n\n  loadAppData(retries = 0) {\n    return doFetch(`${__PATH_PREFIX__}/page-data/app-data.json`).then(req => {\n      const { status, responseText } = req\n\n      let appData\n\n      if (status !== 200 && retries < 3) {\n        // Retry 3 times incase of failures\n        return this.loadAppData(retries + 1)\n      }\n\n      // Handle 200\n      if (status === 200) {\n        try {\n          const jsonPayload = JSON.parse(responseText)\n          if (jsonPayload.webpackCompilationHash === undefined) {\n            throw new Error(`not a valid app-data response`)\n          }\n\n          appData = jsonPayload\n        } catch (err) {\n          // continue regardless of error\n        }\n      }\n\n      return appData\n    })\n  }\n}\n\nconst createComponentUrls = componentChunkName =>\n  window.___chunkMapping[componentChunkName].map(\n    chunk => __PATH_PREFIX__ + chunk\n  )\n\nexport class ProdLoader extends BaseLoader {\n  constructor(asyncRequires, matchPaths) {\n    const loadComponent = chunkName =>\n      asyncRequires.components[chunkName]().then(preferDefault)\n\n    super(loadComponent, matchPaths)\n  }\n\n  doPrefetch(pagePath) {\n    const pageDataUrl = createPageDataUrl(pagePath)\n    return prefetchHelper(pageDataUrl, {\n      crossOrigin: `anonymous`,\n      as: `fetch`,\n    })\n      .then(() =>\n        // This was just prefetched, so will return a response from\n        // the cache instead of making another request to the server\n        this.loadPageDataJson(pagePath)\n      )\n      .then(result => {\n        if (result.status !== `success`) {\n          return Promise.resolve()\n        }\n        const pageData = result.payload\n        const chunkName = pageData.componentChunkName\n        const componentUrls = createComponentUrls(chunkName)\n        return Promise.all(componentUrls.map(prefetchHelper)).then(\n          () => pageData\n        )\n      })\n  }\n}\n\nlet instance\n\nexport const setLoader = _loader => {\n  instance = _loader\n}\n\nexport const publicLoader = {\n  // Deprecated methods. As far as we're aware, these are only used by\n  // core gatsby and the offline plugin, however there's a very small\n  // chance they're called by others.\n  getResourcesForPathname: rawPath => {\n    console.warn(\n      `Warning: getResourcesForPathname is deprecated. Use loadPage instead`\n    )\n    return instance.i.loadPage(rawPath)\n  },\n  getResourcesForPathnameSync: rawPath => {\n    console.warn(\n      `Warning: getResourcesForPathnameSync is deprecated. Use loadPageSync instead`\n    )\n    return instance.i.loadPageSync(rawPath)\n  },\n  enqueue: rawPath => instance.prefetch(rawPath),\n\n  // Real methods\n  getResourceURLsForPathname: rawPath =>\n    instance.getResourceURLsForPathname(rawPath),\n  loadPage: rawPath => instance.loadPage(rawPath),\n  loadPageSync: rawPath => instance.loadPageSync(rawPath),\n  prefetch: rawPath => instance.prefetch(rawPath),\n  isPageNotFound: rawPath => instance.isPageNotFound(rawPath),\n  hovering: rawPath => instance.hovering(rawPath),\n  loadAppData: () => instance.loadAppData(),\n}\n\nexport default publicLoader\n","var aFunction = require('./_a-function');\nvar toObject = require('./_to-object');\nvar IObject = require('./_iobject');\nvar toLength = require('./_to-length');\n\nmodule.exports = function (that, callbackfn, aLen, memo, isRight) {\n  aFunction(callbackfn);\n  var O = toObject(that);\n  var self = IObject(O);\n  var length = toLength(O.length);\n  var index = isRight ? length - 1 : 0;\n  var i = isRight ? -1 : 1;\n  if (aLen < 2) for (;;) {\n    if (index in self) {\n      memo = self[index];\n      index += i;\n      break;\n    }\n    index += i;\n    if (isRight ? index < 0 : length <= index) {\n      throw TypeError('Reduce of empty array with no initial value');\n    }\n  }\n  for (;isRight ? index >= 0 : length > index; index += i) if (index in self) {\n    memo = callbackfn(memo, self[index], index, O);\n  }\n  return memo;\n};\n","var dP = require('./_object-dp').f;\nvar FProto = Function.prototype;\nvar nameRE = /^\\s*function ([^ (]*)/;\nvar NAME = 'name';\n\n// 19.2.4.2 name\nNAME in FProto || require('./_descriptors') && dP(FProto, NAME, {\n  configurable: true,\n  get: function () {\n    try {\n      return ('' + this).match(nameRE)[1];\n    } catch (e) {\n      return '';\n    }\n  }\n});\n","var def = require('./_object-dp').f;\nvar has = require('./_has');\nvar TAG = require('./_wks')('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n  if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n","var core = module.exports = { version: '2.6.11' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n","// 7.2.9 SameValue(x, y)\nmodule.exports = Object.is || function is(x, y) {\n  // eslint-disable-next-line no-self-compare\n  return x === y ? x !== 0 || 1 / x === 1 / y : x != x && y != y;\n};\n","var global = require('./_global');\nvar macrotask = require('./_task').set;\nvar Observer = global.MutationObserver || global.WebKitMutationObserver;\nvar process = global.process;\nvar Promise = global.Promise;\nvar isNode = require('./_cof')(process) == 'process';\n\nmodule.exports = function () {\n  var head, last, notify;\n\n  var flush = function () {\n    var parent, fn;\n    if (isNode && (parent = process.domain)) parent.exit();\n    while (head) {\n      fn = head.fn;\n      head = head.next;\n      try {\n        fn();\n      } catch (e) {\n        if (head) notify();\n        else last = undefined;\n        throw e;\n      }\n    } last = undefined;\n    if (parent) parent.enter();\n  };\n\n  // Node.js\n  if (isNode) {\n    notify = function () {\n      process.nextTick(flush);\n    };\n  // browsers with MutationObserver, except iOS Safari - https://github.com/zloirock/core-js/issues/339\n  } else if (Observer && !(global.navigator && global.navigator.standalone)) {\n    var toggle = true;\n    var node = document.createTextNode('');\n    new Observer(flush).observe(node, { characterData: true }); // eslint-disable-line no-new\n    notify = function () {\n      node.data = toggle = !toggle;\n    };\n  // environments with maybe non-completely correct, but existent Promise\n  } else if (Promise && Promise.resolve) {\n    // Promise.resolve without an argument throws an error in LG WebOS 2\n    var promise = Promise.resolve(undefined);\n    notify = function () {\n      promise.then(flush);\n    };\n  // for other environments - macrotask based on:\n  // - setImmediate\n  // - MessageChannel\n  // - window.postMessag\n  // - onreadystatechange\n  // - setTimeout\n  } else {\n    notify = function () {\n      // strange IE + webpack dev server bug - use .call(global)\n      macrotask.call(global, flush);\n    };\n  }\n\n  return function (fn) {\n    var task = { fn: fn, next: undefined };\n    if (last) last.next = task;\n    if (!head) {\n      head = task;\n      notify();\n    } last = task;\n  };\n};\n","var DateProto = Date.prototype;\nvar INVALID_DATE = 'Invalid Date';\nvar TO_STRING = 'toString';\nvar $toString = DateProto[TO_STRING];\nvar getTime = DateProto.getTime;\nif (new Date(NaN) + '' != INVALID_DATE) {\n  require('./_redefine')(DateProto, TO_STRING, function toString() {\n    var value = getTime.call(this);\n    // eslint-disable-next-line no-self-compare\n    return value === value ? $toString.call(this) : INVALID_DATE;\n  });\n}\n","var $export = require('./_export');\n// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\n$export($export.S, 'Object', { create: require('./_object-create') });\n","module.exports = {};\n","var anObject = require('./_an-object');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar toPrimitive = require('./_to-primitive');\nvar dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n  anObject(O);\n  P = toPrimitive(P, true);\n  anObject(Attributes);\n  if (IE8_DOM_DEFINE) try {\n    return dP(O, P, Attributes);\n  } catch (e) { /* empty */ }\n  if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n  if ('value' in Attributes) O[P] = Attributes.value;\n  return O;\n};\n","// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nvar isObject = require('./_is-object');\nvar anObject = require('./_an-object');\nvar check = function (O, proto) {\n  anObject(O);\n  if (!isObject(proto) && proto !== null) throw TypeError(proto + \": can't set as prototype!\");\n};\nmodule.exports = {\n  set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line\n    function (test, buggy, set) {\n      try {\n        set = require('./_ctx')(Function.call, require('./_object-gopd').f(Object.prototype, '__proto__').set, 2);\n        set(test, []);\n        buggy = !(test instanceof Array);\n      } catch (e) { buggy = true; }\n      return function setPrototypeOf(O, proto) {\n        check(O, proto);\n        if (buggy) O.__proto__ = proto;\n        else set(O, proto);\n        return O;\n      };\n    }({}, false) : undefined),\n  check: check\n};\n","'use strict';\n// ECMAScript 6 symbols shim\nvar global = require('./_global');\nvar has = require('./_has');\nvar DESCRIPTORS = require('./_descriptors');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar META = require('./_meta').KEY;\nvar $fails = require('./_fails');\nvar shared = require('./_shared');\nvar setToStringTag = require('./_set-to-string-tag');\nvar uid = require('./_uid');\nvar wks = require('./_wks');\nvar wksExt = require('./_wks-ext');\nvar wksDefine = require('./_wks-define');\nvar enumKeys = require('./_enum-keys');\nvar isArray = require('./_is-array');\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar toObject = require('./_to-object');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar createDesc = require('./_property-desc');\nvar _create = require('./_object-create');\nvar gOPNExt = require('./_object-gopn-ext');\nvar $GOPD = require('./_object-gopd');\nvar $GOPS = require('./_object-gops');\nvar $DP = require('./_object-dp');\nvar $keys = require('./_object-keys');\nvar gOPD = $GOPD.f;\nvar dP = $DP.f;\nvar gOPN = gOPNExt.f;\nvar $Symbol = global.Symbol;\nvar $JSON = global.JSON;\nvar _stringify = $JSON && $JSON.stringify;\nvar PROTOTYPE = 'prototype';\nvar HIDDEN = wks('_hidden');\nvar TO_PRIMITIVE = wks('toPrimitive');\nvar isEnum = {}.propertyIsEnumerable;\nvar SymbolRegistry = shared('symbol-registry');\nvar AllSymbols = shared('symbols');\nvar OPSymbols = shared('op-symbols');\nvar ObjectProto = Object[PROTOTYPE];\nvar USE_NATIVE = typeof $Symbol == 'function' && !!$GOPS.f;\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDesc = DESCRIPTORS && $fails(function () {\n  return _create(dP({}, 'a', {\n    get: function () { return dP(this, 'a', { value: 7 }).a; }\n  })).a != 7;\n}) ? function (it, key, D) {\n  var protoDesc = gOPD(ObjectProto, key);\n  if (protoDesc) delete ObjectProto[key];\n  dP(it, key, D);\n  if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc);\n} : dP;\n\nvar wrap = function (tag) {\n  var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);\n  sym._k = tag;\n  return sym;\n};\n\nvar isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) {\n  return typeof it == 'symbol';\n} : function (it) {\n  return it instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(it, key, D) {\n  if (it === ObjectProto) $defineProperty(OPSymbols, key, D);\n  anObject(it);\n  key = toPrimitive(key, true);\n  anObject(D);\n  if (has(AllSymbols, key)) {\n    if (!D.enumerable) {\n      if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {}));\n      it[HIDDEN][key] = true;\n    } else {\n      if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;\n      D = _create(D, { enumerable: createDesc(0, false) });\n    } return setSymbolDesc(it, key, D);\n  } return dP(it, key, D);\n};\nvar $defineProperties = function defineProperties(it, P) {\n  anObject(it);\n  var keys = enumKeys(P = toIObject(P));\n  var i = 0;\n  var l = keys.length;\n  var key;\n  while (l > i) $defineProperty(it, key = keys[i++], P[key]);\n  return it;\n};\nvar $create = function create(it, P) {\n  return P === undefined ? _create(it) : $defineProperties(_create(it), P);\n};\nvar $propertyIsEnumerable = function propertyIsEnumerable(key) {\n  var E = isEnum.call(this, key = toPrimitive(key, true));\n  if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false;\n  return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;\n};\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {\n  it = toIObject(it);\n  key = toPrimitive(key, true);\n  if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return;\n  var D = gOPD(it, key);\n  if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;\n  return D;\n};\nvar $getOwnPropertyNames = function getOwnPropertyNames(it) {\n  var names = gOPN(toIObject(it));\n  var result = [];\n  var i = 0;\n  var key;\n  while (names.length > i) {\n    if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key);\n  } return result;\n};\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(it) {\n  var IS_OP = it === ObjectProto;\n  var names = gOPN(IS_OP ? OPSymbols : toIObject(it));\n  var result = [];\n  var i = 0;\n  var key;\n  while (names.length > i) {\n    if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]);\n  } return result;\n};\n\n// 19.4.1.1 Symbol([description])\nif (!USE_NATIVE) {\n  $Symbol = function Symbol() {\n    if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!');\n    var tag = uid(arguments.length > 0 ? arguments[0] : undefined);\n    var $set = function (value) {\n      if (this === ObjectProto) $set.call(OPSymbols, value);\n      if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n      setSymbolDesc(this, tag, createDesc(1, value));\n    };\n    if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set });\n    return wrap(tag);\n  };\n  redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n    return this._k;\n  });\n\n  $GOPD.f = $getOwnPropertyDescriptor;\n  $DP.f = $defineProperty;\n  require('./_object-gopn').f = gOPNExt.f = $getOwnPropertyNames;\n  require('./_object-pie').f = $propertyIsEnumerable;\n  $GOPS.f = $getOwnPropertySymbols;\n\n  if (DESCRIPTORS && !require('./_library')) {\n    redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);\n  }\n\n  wksExt.f = function (name) {\n    return wrap(wks(name));\n  };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol });\n\nfor (var es6Symbols = (\n  // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14\n  'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'\n).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]);\n\nfor (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]);\n\n$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {\n  // 19.4.2.1 Symbol.for(key)\n  'for': function (key) {\n    return has(SymbolRegistry, key += '')\n      ? SymbolRegistry[key]\n      : SymbolRegistry[key] = $Symbol(key);\n  },\n  // 19.4.2.5 Symbol.keyFor(sym)\n  keyFor: function keyFor(sym) {\n    if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!');\n    for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key;\n  },\n  useSetter: function () { setter = true; },\n  useSimple: function () { setter = false; }\n});\n\n$export($export.S + $export.F * !USE_NATIVE, 'Object', {\n  // 19.1.2.2 Object.create(O [, Properties])\n  create: $create,\n  // 19.1.2.4 Object.defineProperty(O, P, Attributes)\n  defineProperty: $defineProperty,\n  // 19.1.2.3 Object.defineProperties(O, Properties)\n  defineProperties: $defineProperties,\n  // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\n  getOwnPropertyDescriptor: $getOwnPropertyDescriptor,\n  // 19.1.2.7 Object.getOwnPropertyNames(O)\n  getOwnPropertyNames: $getOwnPropertyNames,\n  // 19.1.2.8 Object.getOwnPropertySymbols(O)\n  getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives\n// https://bugs.chromium.org/p/v8/issues/detail?id=3443\nvar FAILS_ON_PRIMITIVES = $fails(function () { $GOPS.f(1); });\n\n$export($export.S + $export.F * FAILS_ON_PRIMITIVES, 'Object', {\n  getOwnPropertySymbols: function getOwnPropertySymbols(it) {\n    return $GOPS.f(toObject(it));\n  }\n});\n\n// 24.3.2 JSON.stringify(value [, replacer [, space]])\n$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () {\n  var S = $Symbol();\n  // MS Edge converts symbol values to JSON as {}\n  // WebKit converts symbol values to JSON as null\n  // V8 throws on boxed symbols\n  return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}';\n})), 'JSON', {\n  stringify: function stringify(it) {\n    var args = [it];\n    var i = 1;\n    var replacer, $replacer;\n    while (arguments.length > i) args.push(arguments[i++]);\n    $replacer = replacer = args[1];\n    if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n    if (!isArray(replacer)) replacer = function (key, value) {\n      if (typeof $replacer == 'function') value = $replacer.call(this, key, value);\n      if (!isSymbol(value)) return value;\n    };\n    args[1] = replacer;\n    return _stringify.apply($JSON, args);\n  }\n});\n\n// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)\n$Symbol[PROTOTYPE][TO_PRIMITIVE] || require('./_hide')($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n// 19.4.3.5 Symbol.prototype[@@toStringTag]\nsetToStringTag($Symbol, 'Symbol');\n// 20.2.1.9 Math[@@toStringTag]\nsetToStringTag(Math, 'Math', true);\n// 24.3.3 JSON[@@toStringTag]\nsetToStringTag(global.JSON, 'JSON', true);\n","// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)\nvar $keys = require('./_object-keys-internal');\nvar hiddenKeys = require('./_enum-bug-keys').concat('length', 'prototype');\n\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n  return $keys(O, hiddenKeys);\n};\n","function _defineProperty(obj, key, value) {\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n\n  return obj;\n}\n\nmodule.exports = _defineProperty;","const preferDefault = m => (m && m.default) || m\n\nif (process.env.BUILD_STAGE === `develop`) {\n  module.exports = preferDefault(require(`./public-page-renderer-dev`))\n} else if (process.env.BUILD_STAGE === `build-javascript`) {\n  module.exports = preferDefault(require(`./public-page-renderer-prod`))\n} else {\n  module.exports = () => null\n}\n","// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function (fn, that, length) {\n  aFunction(fn);\n  if (that === undefined) return fn;\n  switch (length) {\n    case 1: return function (a) {\n      return fn.call(that, a);\n    };\n    case 2: return function (a, b) {\n      return fn.call(that, a, b);\n    };\n    case 3: return function (a, b, c) {\n      return fn.call(that, a, b, c);\n    };\n  }\n  return function (/* ...args */) {\n    return fn.apply(that, arguments);\n  };\n};\n","// 22.1.3.31 Array.prototype[@@unscopables]\nvar UNSCOPABLES = require('./_wks')('unscopables');\nvar ArrayProto = Array.prototype;\nif (ArrayProto[UNSCOPABLES] == undefined) require('./_hide')(ArrayProto, UNSCOPABLES, {});\nmodule.exports = function (key) {\n  ArrayProto[UNSCOPABLES][key] = true;\n};\n","module.exports = function (exec) {\n  try {\n    return { e: false, v: exec() };\n  } catch (e) {\n    return { e: true, v: e };\n  }\n};\n","// 7.1.15 ToLength\nvar toInteger = require('./_to-integer');\nvar min = Math.min;\nmodule.exports = function (it) {\n  return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n","// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function () {\n  return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _gatsby = require(\"gatsby\");\n\nvar _getManifestPathname = _interopRequireDefault(require(\"./get-manifest-pathname\"));\n\n/* global __MANIFEST_PLUGIN_HAS_LOCALISATION__ */\n// when we don't have localisation in our manifest, we tree shake everything away\nif (__MANIFEST_PLUGIN_HAS_LOCALISATION__) {\n  var withPrefix = _gatsby.withAssetPrefix || _gatsby.withPrefix;\n\n  exports.onRouteUpdate = function (_ref, pluginOptions) {\n    var location = _ref.location;\n    var localize = pluginOptions.localize;\n    var manifestFilename = (0, _getManifestPathname.default)(location.pathname, localize);\n    var manifestEl = document.head.querySelector(\"link[rel=\\\"manifest\\\"]\");\n\n    if (manifestEl) {\n      manifestEl.setAttribute(\"href\", withPrefix(manifestFilename));\n    }\n  };\n}","var global = require('./_global');\nvar navigator = global.navigator;\n\nmodule.exports = navigator && navigator.userAgent || '';\n","// prefer default export if available\nconst preferDefault = m => m && m.default || m\n\nexports.components = {\n  \"component---src-pages-about-js\": () => import(\"./../src/pages/about.js\" /* webpackChunkName: \"component---src-pages-about-js\" */),\n  \"component---src-pages-index-js\": () => import(\"./../src/pages/index.js\" /* webpackChunkName: \"component---src-pages-index-js\" */),\n  \"component---src-pages-news-js\": () => import(\"./../src/pages/news.js\" /* webpackChunkName: \"component---src-pages-news-js\" */),\n  \"component---src-pages-performance-js\": () => import(\"./../src/pages/performance.js\" /* webpackChunkName: \"component---src-pages-performance-js\" */)\n}\n\n","'use strict';\n\nvar anObject = require('./_an-object');\nvar toObject = require('./_to-object');\nvar toLength = require('./_to-length');\nvar toInteger = require('./_to-integer');\nvar advanceStringIndex = require('./_advance-string-index');\nvar regExpExec = require('./_regexp-exec-abstract');\nvar max = Math.max;\nvar min = Math.min;\nvar floor = Math.floor;\nvar SUBSTITUTION_SYMBOLS = /\\$([$&`']|\\d\\d?|<[^>]*>)/g;\nvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&`']|\\d\\d?)/g;\n\nvar maybeToString = function (it) {\n  return it === undefined ? it : String(it);\n};\n\n// @@replace logic\nrequire('./_fix-re-wks')('replace', 2, function (defined, REPLACE, $replace, maybeCallNative) {\n  return [\n    // `String.prototype.replace` method\n    // https://tc39.github.io/ecma262/#sec-string.prototype.replace\n    function replace(searchValue, replaceValue) {\n      var O = defined(this);\n      var fn = searchValue == undefined ? undefined : searchValue[REPLACE];\n      return fn !== undefined\n        ? fn.call(searchValue, O, replaceValue)\n        : $replace.call(String(O), searchValue, replaceValue);\n    },\n    // `RegExp.prototype[@@replace]` method\n    // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@replace\n    function (regexp, replaceValue) {\n      var res = maybeCallNative($replace, regexp, this, replaceValue);\n      if (res.done) return res.value;\n\n      var rx = anObject(regexp);\n      var S = String(this);\n      var functionalReplace = typeof replaceValue === 'function';\n      if (!functionalReplace) replaceValue = String(replaceValue);\n      var global = rx.global;\n      if (global) {\n        var fullUnicode = rx.unicode;\n        rx.lastIndex = 0;\n      }\n      var results = [];\n      while (true) {\n        var result = regExpExec(rx, S);\n        if (result === null) break;\n        results.push(result);\n        if (!global) break;\n        var matchStr = String(result[0]);\n        if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n      }\n      var accumulatedResult = '';\n      var nextSourcePosition = 0;\n      for (var i = 0; i < results.length; i++) {\n        result = results[i];\n        var matched = String(result[0]);\n        var position = max(min(toInteger(result.index), S.length), 0);\n        var captures = [];\n        // NOTE: This is equivalent to\n        //   captures = result.slice(1).map(maybeToString)\n        // but for some reason `nativeSlice.call(result, 1, result.length)` (called in\n        // the slice polyfill when slicing native arrays) \"doesn't work\" in safari 9 and\n        // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.\n        for (var j = 1; j < result.length; j++) captures.push(maybeToString(result[j]));\n        var namedCaptures = result.groups;\n        if (functionalReplace) {\n          var replacerArgs = [matched].concat(captures, position, S);\n          if (namedCaptures !== undefined) replacerArgs.push(namedCaptures);\n          var replacement = String(replaceValue.apply(undefined, replacerArgs));\n        } else {\n          replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);\n        }\n        if (position >= nextSourcePosition) {\n          accumulatedResult += S.slice(nextSourcePosition, position) + replacement;\n          nextSourcePosition = position + matched.length;\n        }\n      }\n      return accumulatedResult + S.slice(nextSourcePosition);\n    }\n  ];\n\n    // https://tc39.github.io/ecma262/#sec-getsubstitution\n  function getSubstitution(matched, str, position, captures, namedCaptures, replacement) {\n    var tailPos = position + matched.length;\n    var m = captures.length;\n    var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;\n    if (namedCaptures !== undefined) {\n      namedCaptures = toObject(namedCaptures);\n      symbols = SUBSTITUTION_SYMBOLS;\n    }\n    return $replace.call(replacement, symbols, function (match, ch) {\n      var capture;\n      switch (ch.charAt(0)) {\n        case '$': return '$';\n        case '&': return matched;\n        case '`': return str.slice(0, position);\n        case \"'\": return str.slice(tailPos);\n        case '<':\n          capture = namedCaptures[ch.slice(1, -1)];\n          break;\n        default: // \\d\\d?\n          var n = +ch;\n          if (n === 0) return match;\n          if (n > m) {\n            var f = floor(n / 10);\n            if (f === 0) return match;\n            if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1);\n            return match;\n          }\n          capture = captures[n - 1];\n      }\n      return capture === undefined ? '' : capture;\n    });\n  }\n});\n","function _extends() {\n  module.exports = _extends = Object.assign || function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n\n    return target;\n  };\n\n  return _extends.apply(this, arguments);\n}\n\nmodule.exports = _extends;","\"use strict\";\n\nexports.__esModule = true;\nexports.onRouteUpdate = void 0;\n\nvar onRouteUpdate = function onRouteUpdate(_ref, pluginOptions) {\n  var location = _ref.location;\n\n  if (pluginOptions === void 0) {\n    pluginOptions = {};\n  }\n\n  if (process.env.NODE_ENV !== \"production\" || typeof ga !== \"function\") {\n    return null;\n  }\n\n  var pathIsExcluded = location && typeof window.excludeGAPaths !== \"undefined\" && window.excludeGAPaths.some(function (rx) {\n    return rx.test(location.pathname);\n  });\n  if (pathIsExcluded) return null; // wrap inside a timeout to make sure react-helmet is done with it's changes (https://github.com/gatsbyjs/gatsby/issues/9139)\n  // reactHelmet is using requestAnimationFrame: https://github.com/nfl/react-helmet/blob/5.2.0/src/HelmetUtils.js#L296-L299\n\n  var sendPageView = function sendPageView() {\n    var pagePath = location ? location.pathname + location.search + location.hash : undefined;\n    window.ga(\"set\", \"page\", pagePath);\n    window.ga(\"send\", \"pageview\");\n  }; // Minimum delay for reactHelmet's requestAnimationFrame\n\n\n  var delay = Math.max(32, pluginOptions.pageTransitionDelay || 0);\n  setTimeout(sendPageView, delay);\n  return null;\n};\n\nexports.onRouteUpdate = onRouteUpdate;","'use strict';\n// 25.4.1.5 NewPromiseCapability(C)\nvar aFunction = require('./_a-function');\n\nfunction PromiseCapability(C) {\n  var resolve, reject;\n  this.promise = new C(function ($$resolve, $$reject) {\n    if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');\n    resolve = $$resolve;\n    reject = $$reject;\n  });\n  this.resolve = aFunction(resolve);\n  this.reject = aFunction(reject);\n}\n\nmodule.exports.f = function (C) {\n  return new PromiseCapability(C);\n};\n","\"use strict\";\n\nrequire(\"core-js/modules/es6.array.some\");\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _inDOM = _interopRequireDefault(require(\"./inDOM\"));\n\nvar vendors = ['', 'webkit', 'moz', 'o', 'ms'];\nvar cancel = 'clearTimeout';\nvar raf = fallback;\nvar compatRaf;\n\nvar getKey = function getKey(vendor, k) {\n  return vendor + (!vendor ? k : k[0].toUpperCase() + k.substr(1)) + 'AnimationFrame';\n};\n\nif (_inDOM[\"default\"]) {\n  vendors.some(function (vendor) {\n    var rafKey = getKey(vendor, 'request');\n\n    if (rafKey in window) {\n      cancel = getKey(vendor, 'cancel');\n      return raf = function raf(cb) {\n        return window[rafKey](cb);\n      };\n    }\n  });\n}\n/* https://github.com/component/raf */\n\n\nvar prev = new Date().getTime();\n\nfunction fallback(fn) {\n  var curr = new Date().getTime(),\n      ms = Math.max(0, 16 - (curr - prev)),\n      req = setTimeout(fn, ms);\n  prev = curr;\n  return req;\n}\n\ncompatRaf = function compatRaf(cb) {\n  return raf(cb);\n};\n\ncompatRaf.cancel = function (id) {\n  window[cancel] && typeof window[cancel] === 'function' && window[cancel](id);\n};\n\nvar _default = compatRaf;\nexports[\"default\"] = _default;\nmodule.exports = exports[\"default\"];","import \"core-js/modules/es6.array.for-each\";\n\n/*\n\nBased off glamor's StyleSheet, thanks Sunil ❤️\n\nhigh performance StyleSheet for css-in-js systems\n\n- uses multiple style tags behind the scenes for millions of rules\n- uses `insertRule` for appending in production for *much* faster performance\n\n// usage\n\nimport { StyleSheet } from '@emotion/sheet'\n\nlet styleSheet = new StyleSheet({ key: '', container: document.head })\n\nstyleSheet.insert('#box { border: 1px solid red; }')\n- appends a css rule into the stylesheet\n\nstyleSheet.flush()\n- empties the stylesheet of all its contents\n\n*/\n// $FlowFixMe\nfunction sheetForTag(tag) {\n  if (tag.sheet) {\n    // $FlowFixMe\n    return tag.sheet;\n  } // this weirdness brought to you by firefox\n\n  /* istanbul ignore next */\n\n\n  for (var i = 0; i < document.styleSheets.length; i++) {\n    if (document.styleSheets[i].ownerNode === tag) {\n      // $FlowFixMe\n      return document.styleSheets[i];\n    }\n  }\n}\n\nfunction createStyleElement(options) {\n  var tag = document.createElement('style');\n  tag.setAttribute('data-emotion', options.key);\n\n  if (options.nonce !== undefined) {\n    tag.setAttribute('nonce', options.nonce);\n  }\n\n  tag.appendChild(document.createTextNode(''));\n  return tag;\n}\n\nvar StyleSheet =\n/*#__PURE__*/\nfunction () {\n  function StyleSheet(options) {\n    this.isSpeedy = options.speedy === undefined ? process.env.NODE_ENV === 'production' : options.speedy;\n    this.tags = [];\n    this.ctr = 0;\n    this.nonce = options.nonce; // key is the value of the data-emotion attribute, it's used to identify different sheets\n\n    this.key = options.key;\n    this.container = options.container;\n    this.before = null;\n  }\n\n  var _proto = StyleSheet.prototype;\n\n  _proto.insert = function insert(rule) {\n    // the max length is how many rules we have per style tag, it's 65000 in speedy mode\n    // it's 1 in dev because we insert source maps that map a single rule to a location\n    // and you can only have one source map per style tag\n    if (this.ctr % (this.isSpeedy ? 65000 : 1) === 0) {\n      var _tag = createStyleElement(this);\n\n      var before;\n\n      if (this.tags.length === 0) {\n        before = this.before;\n      } else {\n        before = this.tags[this.tags.length - 1].nextSibling;\n      }\n\n      this.container.insertBefore(_tag, before);\n      this.tags.push(_tag);\n    }\n\n    var tag = this.tags[this.tags.length - 1];\n\n    if (this.isSpeedy) {\n      var sheet = sheetForTag(tag);\n\n      try {\n        // this is a really hot path\n        // we check the second character first because having \"i\"\n        // as the second character will happen less often than\n        // having \"@\" as the first character\n        var isImportRule = rule.charCodeAt(1) === 105 && rule.charCodeAt(0) === 64; // this is the ultrafast version, works across browsers\n        // the big drawback is that the css won't be editable in devtools\n\n        sheet.insertRule(rule, // we need to insert @import rules before anything else\n        // otherwise there will be an error\n        // technically this means that the @import rules will\n        // _usually_(not always since there could be multiple style tags)\n        // be the first ones in prod and generally later in dev\n        // this shouldn't really matter in the real world though\n        // @import is generally only used for font faces from google fonts and etc.\n        // so while this could be technically correct then it would be slower and larger\n        // for a tiny bit of correctness that won't matter in the real world\n        isImportRule ? 0 : sheet.cssRules.length);\n      } catch (e) {\n        if (process.env.NODE_ENV !== 'production') {\n          console.warn(\"There was a problem inserting the following rule: \\\"\" + rule + \"\\\"\", e);\n        }\n      }\n    } else {\n      tag.appendChild(document.createTextNode(rule));\n    }\n\n    this.ctr++;\n  };\n\n  _proto.flush = function flush() {\n    // $FlowFixMe\n    this.tags.forEach(function (tag) {\n      return tag.parentNode.removeChild(tag);\n    });\n    this.tags = [];\n    this.ctr = 0;\n  };\n\n  return StyleSheet;\n}();\n\nexport { StyleSheet };","import \"core-js/modules/es6.array.index-of\";\nimport \"core-js/modules/es6.regexp.split\";\nimport \"core-js/modules/es6.string.trim\";\nimport \"core-js/modules/es6.regexp.replace\";\n\nfunction stylis_min(W) {\n  function M(d, c, e, h, a) {\n    for (var m = 0, b = 0, v = 0, n = 0, q, g, x = 0, K = 0, k, u = k = q = 0, l = 0, r = 0, I = 0, t = 0, B = e.length, J = B - 1, y, f = '', p = '', F = '', G = '', C; l < B;) {\n      g = e.charCodeAt(l);\n      l === J && 0 !== b + n + v + m && (0 !== b && (g = 47 === b ? 10 : 47), n = v = m = 0, B++, J++);\n\n      if (0 === b + n + v + m) {\n        if (l === J && (0 < r && (f = f.replace(N, '')), 0 < f.trim().length)) {\n          switch (g) {\n            case 32:\n            case 9:\n            case 59:\n            case 13:\n            case 10:\n              break;\n\n            default:\n              f += e.charAt(l);\n          }\n\n          g = 59;\n        }\n\n        switch (g) {\n          case 123:\n            f = f.trim();\n            q = f.charCodeAt(0);\n            k = 1;\n\n            for (t = ++l; l < B;) {\n              switch (g = e.charCodeAt(l)) {\n                case 123:\n                  k++;\n                  break;\n\n                case 125:\n                  k--;\n                  break;\n\n                case 47:\n                  switch (g = e.charCodeAt(l + 1)) {\n                    case 42:\n                    case 47:\n                      a: {\n                        for (u = l + 1; u < J; ++u) {\n                          switch (e.charCodeAt(u)) {\n                            case 47:\n                              if (42 === g && 42 === e.charCodeAt(u - 1) && l + 2 !== u) {\n                                l = u + 1;\n                                break a;\n                              }\n\n                              break;\n\n                            case 10:\n                              if (47 === g) {\n                                l = u + 1;\n                                break a;\n                              }\n\n                          }\n                        }\n\n                        l = u;\n                      }\n\n                  }\n\n                  break;\n\n                case 91:\n                  g++;\n\n                case 40:\n                  g++;\n\n                case 34:\n                case 39:\n                  for (; l++ < J && e.charCodeAt(l) !== g;) {}\n\n              }\n\n              if (0 === k) break;\n              l++;\n            }\n\n            k = e.substring(t, l);\n            0 === q && (q = (f = f.replace(ca, '').trim()).charCodeAt(0));\n\n            switch (q) {\n              case 64:\n                0 < r && (f = f.replace(N, ''));\n                g = f.charCodeAt(1);\n\n                switch (g) {\n                  case 100:\n                  case 109:\n                  case 115:\n                  case 45:\n                    r = c;\n                    break;\n\n                  default:\n                    r = O;\n                }\n\n                k = M(c, r, k, g, a + 1);\n                t = k.length;\n                0 < A && (r = X(O, f, I), C = H(3, k, r, c, D, z, t, g, a, h), f = r.join(''), void 0 !== C && 0 === (t = (k = C.trim()).length) && (g = 0, k = ''));\n                if (0 < t) switch (g) {\n                  case 115:\n                    f = f.replace(da, ea);\n\n                  case 100:\n                  case 109:\n                  case 45:\n                    k = f + '{' + k + '}';\n                    break;\n\n                  case 107:\n                    f = f.replace(fa, '$1 $2');\n                    k = f + '{' + k + '}';\n                    k = 1 === w || 2 === w && L('@' + k, 3) ? '@-webkit-' + k + '@' + k : '@' + k;\n                    break;\n\n                  default:\n                    k = f + k, 112 === h && (k = (p += k, ''));\n                } else k = '';\n                break;\n\n              default:\n                k = M(c, X(c, f, I), k, h, a + 1);\n            }\n\n            F += k;\n            k = I = r = u = q = 0;\n            f = '';\n            g = e.charCodeAt(++l);\n            break;\n\n          case 125:\n          case 59:\n            f = (0 < r ? f.replace(N, '') : f).trim();\n            if (1 < (t = f.length)) switch (0 === u && (q = f.charCodeAt(0), 45 === q || 96 < q && 123 > q) && (t = (f = f.replace(' ', ':')).length), 0 < A && void 0 !== (C = H(1, f, c, d, D, z, p.length, h, a, h)) && 0 === (t = (f = C.trim()).length) && (f = '\\x00\\x00'), q = f.charCodeAt(0), g = f.charCodeAt(1), q) {\n              case 0:\n                break;\n\n              case 64:\n                if (105 === g || 99 === g) {\n                  G += f + e.charAt(l);\n                  break;\n                }\n\n              default:\n                58 !== f.charCodeAt(t - 1) && (p += P(f, q, g, f.charCodeAt(2)));\n            }\n            I = r = u = q = 0;\n            f = '';\n            g = e.charCodeAt(++l);\n        }\n      }\n\n      switch (g) {\n        case 13:\n        case 10:\n          47 === b ? b = 0 : 0 === 1 + q && 107 !== h && 0 < f.length && (r = 1, f += '\\x00');\n          0 < A * Y && H(0, f, c, d, D, z, p.length, h, a, h);\n          z = 1;\n          D++;\n          break;\n\n        case 59:\n        case 125:\n          if (0 === b + n + v + m) {\n            z++;\n            break;\n          }\n\n        default:\n          z++;\n          y = e.charAt(l);\n\n          switch (g) {\n            case 9:\n            case 32:\n              if (0 === n + m + b) switch (x) {\n                case 44:\n                case 58:\n                case 9:\n                case 32:\n                  y = '';\n                  break;\n\n                default:\n                  32 !== g && (y = ' ');\n              }\n              break;\n\n            case 0:\n              y = '\\\\0';\n              break;\n\n            case 12:\n              y = '\\\\f';\n              break;\n\n            case 11:\n              y = '\\\\v';\n              break;\n\n            case 38:\n              0 === n + b + m && (r = I = 1, y = '\\f' + y);\n              break;\n\n            case 108:\n              if (0 === n + b + m + E && 0 < u) switch (l - u) {\n                case 2:\n                  112 === x && 58 === e.charCodeAt(l - 3) && (E = x);\n\n                case 8:\n                  111 === K && (E = K);\n              }\n              break;\n\n            case 58:\n              0 === n + b + m && (u = l);\n              break;\n\n            case 44:\n              0 === b + v + n + m && (r = 1, y += '\\r');\n              break;\n\n            case 34:\n            case 39:\n              0 === b && (n = n === g ? 0 : 0 === n ? g : n);\n              break;\n\n            case 91:\n              0 === n + b + v && m++;\n              break;\n\n            case 93:\n              0 === n + b + v && m--;\n              break;\n\n            case 41:\n              0 === n + b + m && v--;\n              break;\n\n            case 40:\n              if (0 === n + b + m) {\n                if (0 === q) switch (2 * x + 3 * K) {\n                  case 533:\n                    break;\n\n                  default:\n                    q = 1;\n                }\n                v++;\n              }\n\n              break;\n\n            case 64:\n              0 === b + v + n + m + u + k && (k = 1);\n              break;\n\n            case 42:\n            case 47:\n              if (!(0 < n + m + v)) switch (b) {\n                case 0:\n                  switch (2 * g + 3 * e.charCodeAt(l + 1)) {\n                    case 235:\n                      b = 47;\n                      break;\n\n                    case 220:\n                      t = l, b = 42;\n                  }\n\n                  break;\n\n                case 42:\n                  47 === g && 42 === x && t + 2 !== l && (33 === e.charCodeAt(t + 2) && (p += e.substring(t, l + 1)), y = '', b = 0);\n              }\n          }\n\n          0 === b && (f += y);\n      }\n\n      K = x;\n      x = g;\n      l++;\n    }\n\n    t = p.length;\n\n    if (0 < t) {\n      r = c;\n      if (0 < A && (C = H(2, p, r, d, D, z, t, h, a, h), void 0 !== C && 0 === (p = C).length)) return G + p + F;\n      p = r.join(',') + '{' + p + '}';\n\n      if (0 !== w * E) {\n        2 !== w || L(p, 2) || (E = 0);\n\n        switch (E) {\n          case 111:\n            p = p.replace(ha, ':-moz-$1') + p;\n            break;\n\n          case 112:\n            p = p.replace(Q, '::-webkit-input-$1') + p.replace(Q, '::-moz-$1') + p.replace(Q, ':-ms-input-$1') + p;\n        }\n\n        E = 0;\n      }\n    }\n\n    return G + p + F;\n  }\n\n  function X(d, c, e) {\n    var h = c.trim().split(ia);\n    c = h;\n    var a = h.length,\n        m = d.length;\n\n    switch (m) {\n      case 0:\n      case 1:\n        var b = 0;\n\n        for (d = 0 === m ? '' : d[0] + ' '; b < a; ++b) {\n          c[b] = Z(d, c[b], e).trim();\n        }\n\n        break;\n\n      default:\n        var v = b = 0;\n\n        for (c = []; b < a; ++b) {\n          for (var n = 0; n < m; ++n) {\n            c[v++] = Z(d[n] + ' ', h[b], e).trim();\n          }\n        }\n\n    }\n\n    return c;\n  }\n\n  function Z(d, c, e) {\n    var h = c.charCodeAt(0);\n    33 > h && (h = (c = c.trim()).charCodeAt(0));\n\n    switch (h) {\n      case 38:\n        return c.replace(F, '$1' + d.trim());\n\n      case 58:\n        return d.trim() + c.replace(F, '$1' + d.trim());\n\n      default:\n        if (0 < 1 * e && 0 < c.indexOf('\\f')) return c.replace(F, (58 === d.charCodeAt(0) ? '' : '$1') + d.trim());\n    }\n\n    return d + c;\n  }\n\n  function P(d, c, e, h) {\n    var a = d + ';',\n        m = 2 * c + 3 * e + 4 * h;\n\n    if (944 === m) {\n      d = a.indexOf(':', 9) + 1;\n      var b = a.substring(d, a.length - 1).trim();\n      b = a.substring(0, d).trim() + b + ';';\n      return 1 === w || 2 === w && L(b, 1) ? '-webkit-' + b + b : b;\n    }\n\n    if (0 === w || 2 === w && !L(a, 1)) return a;\n\n    switch (m) {\n      case 1015:\n        return 97 === a.charCodeAt(10) ? '-webkit-' + a + a : a;\n\n      case 951:\n        return 116 === a.charCodeAt(3) ? '-webkit-' + a + a : a;\n\n      case 963:\n        return 110 === a.charCodeAt(5) ? '-webkit-' + a + a : a;\n\n      case 1009:\n        if (100 !== a.charCodeAt(4)) break;\n\n      case 969:\n      case 942:\n        return '-webkit-' + a + a;\n\n      case 978:\n        return '-webkit-' + a + '-moz-' + a + a;\n\n      case 1019:\n      case 983:\n        return '-webkit-' + a + '-moz-' + a + '-ms-' + a + a;\n\n      case 883:\n        if (45 === a.charCodeAt(8)) return '-webkit-' + a + a;\n        if (0 < a.indexOf('image-set(', 11)) return a.replace(ja, '$1-webkit-$2') + a;\n        break;\n\n      case 932:\n        if (45 === a.charCodeAt(4)) switch (a.charCodeAt(5)) {\n          case 103:\n            return '-webkit-box-' + a.replace('-grow', '') + '-webkit-' + a + '-ms-' + a.replace('grow', 'positive') + a;\n\n          case 115:\n            return '-webkit-' + a + '-ms-' + a.replace('shrink', 'negative') + a;\n\n          case 98:\n            return '-webkit-' + a + '-ms-' + a.replace('basis', 'preferred-size') + a;\n        }\n        return '-webkit-' + a + '-ms-' + a + a;\n\n      case 964:\n        return '-webkit-' + a + '-ms-flex-' + a + a;\n\n      case 1023:\n        if (99 !== a.charCodeAt(8)) break;\n        b = a.substring(a.indexOf(':', 15)).replace('flex-', '').replace('space-between', 'justify');\n        return '-webkit-box-pack' + b + '-webkit-' + a + '-ms-flex-pack' + b + a;\n\n      case 1005:\n        return ka.test(a) ? a.replace(aa, ':-webkit-') + a.replace(aa, ':-moz-') + a : a;\n\n      case 1e3:\n        b = a.substring(13).trim();\n        c = b.indexOf('-') + 1;\n\n        switch (b.charCodeAt(0) + b.charCodeAt(c)) {\n          case 226:\n            b = a.replace(G, 'tb');\n            break;\n\n          case 232:\n            b = a.replace(G, 'tb-rl');\n            break;\n\n          case 220:\n            b = a.replace(G, 'lr');\n            break;\n\n          default:\n            return a;\n        }\n\n        return '-webkit-' + a + '-ms-' + b + a;\n\n      case 1017:\n        if (-1 === a.indexOf('sticky', 9)) break;\n\n      case 975:\n        c = (a = d).length - 10;\n        b = (33 === a.charCodeAt(c) ? a.substring(0, c) : a).substring(d.indexOf(':', 7) + 1).trim();\n\n        switch (m = b.charCodeAt(0) + (b.charCodeAt(7) | 0)) {\n          case 203:\n            if (111 > b.charCodeAt(8)) break;\n\n          case 115:\n            a = a.replace(b, '-webkit-' + b) + ';' + a;\n            break;\n\n          case 207:\n          case 102:\n            a = a.replace(b, '-webkit-' + (102 < m ? 'inline-' : '') + 'box') + ';' + a.replace(b, '-webkit-' + b) + ';' + a.replace(b, '-ms-' + b + 'box') + ';' + a;\n        }\n\n        return a + ';';\n\n      case 938:\n        if (45 === a.charCodeAt(5)) switch (a.charCodeAt(6)) {\n          case 105:\n            return b = a.replace('-items', ''), '-webkit-' + a + '-webkit-box-' + b + '-ms-flex-' + b + a;\n\n          case 115:\n            return '-webkit-' + a + '-ms-flex-item-' + a.replace(ba, '') + a;\n\n          default:\n            return '-webkit-' + a + '-ms-flex-line-pack' + a.replace('align-content', '').replace(ba, '') + a;\n        }\n        break;\n\n      case 973:\n      case 989:\n        if (45 !== a.charCodeAt(3) || 122 === a.charCodeAt(4)) break;\n\n      case 931:\n      case 953:\n        if (!0 === la.test(d)) return 115 === (b = d.substring(d.indexOf(':') + 1)).charCodeAt(0) ? P(d.replace('stretch', 'fill-available'), c, e, h).replace(':fill-available', ':stretch') : a.replace(b, '-webkit-' + b) + a.replace(b, '-moz-' + b.replace('fill-', '')) + a;\n        break;\n\n      case 962:\n        if (a = '-webkit-' + a + (102 === a.charCodeAt(5) ? '-ms-' + a : '') + a, 211 === e + h && 105 === a.charCodeAt(13) && 0 < a.indexOf('transform', 10)) return a.substring(0, a.indexOf(';', 27) + 1).replace(ma, '$1-webkit-$2') + a;\n    }\n\n    return a;\n  }\n\n  function L(d, c) {\n    var e = d.indexOf(1 === c ? ':' : '{'),\n        h = d.substring(0, 3 !== c ? e : 10);\n    e = d.substring(e + 1, d.length - 1);\n    return R(2 !== c ? h : h.replace(na, '$1'), e, c);\n  }\n\n  function ea(d, c) {\n    var e = P(c, c.charCodeAt(0), c.charCodeAt(1), c.charCodeAt(2));\n    return e !== c + ';' ? e.replace(oa, ' or ($1)').substring(4) : '(' + c + ')';\n  }\n\n  function H(d, c, e, h, a, m, b, v, n, q) {\n    for (var g = 0, x = c, w; g < A; ++g) {\n      switch (w = S[g].call(B, d, x, e, h, a, m, b, v, n, q)) {\n        case void 0:\n        case !1:\n        case !0:\n        case null:\n          break;\n\n        default:\n          x = w;\n      }\n    }\n\n    if (x !== c) return x;\n  }\n\n  function T(d) {\n    switch (d) {\n      case void 0:\n      case null:\n        A = S.length = 0;\n        break;\n\n      default:\n        if ('function' === typeof d) S[A++] = d;else if ('object' === typeof d) for (var c = 0, e = d.length; c < e; ++c) {\n          T(d[c]);\n        } else Y = !!d | 0;\n    }\n\n    return T;\n  }\n\n  function U(d) {\n    d = d.prefix;\n    void 0 !== d && (R = null, d ? 'function' !== typeof d ? w = 1 : (w = 2, R = d) : w = 0);\n    return U;\n  }\n\n  function B(d, c) {\n    var e = d;\n    33 > e.charCodeAt(0) && (e = e.trim());\n    V = e;\n    e = [V];\n\n    if (0 < A) {\n      var h = H(-1, c, e, e, D, z, 0, 0, 0, 0);\n      void 0 !== h && 'string' === typeof h && (c = h);\n    }\n\n    var a = M(O, e, c, 0, 0);\n    0 < A && (h = H(-2, a, e, e, D, z, a.length, 0, 0, 0), void 0 !== h && (a = h));\n    V = '';\n    E = 0;\n    z = D = 1;\n    return a;\n  }\n\n  var ca = /^\\0+/g,\n      N = /[\\0\\r\\f]/g,\n      aa = /: */g,\n      ka = /zoo|gra/,\n      ma = /([,: ])(transform)/g,\n      ia = /,\\r+?/g,\n      F = /([\\t\\r\\n ])*\\f?&/g,\n      fa = /@(k\\w+)\\s*(\\S*)\\s*/,\n      Q = /::(place)/g,\n      ha = /:(read-only)/g,\n      G = /[svh]\\w+-[tblr]{2}/,\n      da = /\\(\\s*(.*)\\s*\\)/g,\n      oa = /([\\s\\S]*?);/g,\n      ba = /-self|flex-/g,\n      na = /[^]*?(:[rp][el]a[\\w-]+)[^]*/,\n      la = /stretch|:\\s*\\w+\\-(?:conte|avail)/,\n      ja = /([^-])(image-set\\()/,\n      z = 1,\n      D = 1,\n      E = 0,\n      w = 1,\n      O = [],\n      S = [],\n      A = 0,\n      R = null,\n      Y = 0,\n      V = '';\n  B.use = T;\n  B.set = U;\n  void 0 !== W && U(W);\n  return B;\n}\n\nexport default stylis_min;","import \"core-js/modules/es6.regexp.constructor\";\nimport \"core-js/modules/es6.regexp.match\";\nimport \"core-js/modules/es6.array.map\";\nimport \"core-js/modules/es6.function.name\";\nimport \"core-js/modules/es6.regexp.split\";\nimport \"core-js/modules/es6.array.for-each\";\nimport { StyleSheet } from '@emotion/sheet';\nimport Stylis from '@emotion/stylis';\nimport '@emotion/weak-memoize'; // https://github.com/thysultan/stylis.js/tree/master/plugins/rule-sheet\n// inlined to avoid umd wrapper and peerDep warnings/installing stylis\n// since we use stylis after closure compiler\n\nvar delimiter = '/*|*/';\nvar needle = delimiter + '}';\n\nfunction toSheet(block) {\n  if (block) {\n    Sheet.current.insert(block + '}');\n  }\n}\n\nvar Sheet = {\n  current: null\n};\n\nvar ruleSheet = function ruleSheet(context, content, selectors, parents, line, column, length, ns, depth, at) {\n  switch (context) {\n    // property\n    case 1:\n      {\n        switch (content.charCodeAt(0)) {\n          case 64:\n            {\n              // @import\n              Sheet.current.insert(content + ';');\n              return '';\n            }\n          // charcode for l\n\n          case 108:\n            {\n              // charcode for b\n              // this ignores label\n              if (content.charCodeAt(2) === 98) {\n                return '';\n              }\n            }\n        }\n\n        break;\n      }\n    // selector\n\n    case 2:\n      {\n        if (ns === 0) return content + delimiter;\n        break;\n      }\n    // at-rule\n\n    case 3:\n      {\n        switch (ns) {\n          // @font-face, @page\n          case 102:\n          case 112:\n            {\n              Sheet.current.insert(selectors[0] + content);\n              return '';\n            }\n\n          default:\n            {\n              return content + (at === 0 ? delimiter : '');\n            }\n        }\n      }\n\n    case -2:\n      {\n        content.split(needle).forEach(toSheet);\n      }\n  }\n};\n\nvar createCache = function createCache(options) {\n  if (options === undefined) options = {};\n  var key = options.key || 'css';\n  var stylisOptions;\n\n  if (options.prefix !== undefined) {\n    stylisOptions = {\n      prefix: options.prefix\n    };\n  }\n\n  var stylis = new Stylis(stylisOptions);\n\n  if (process.env.NODE_ENV !== 'production') {\n    // $FlowFixMe\n    if (/[^a-z-]/.test(key)) {\n      throw new Error(\"Emotion key must only contain lower case alphabetical characters and - but \\\"\" + key + \"\\\" was passed\");\n    }\n  }\n\n  var inserted = {}; // $FlowFixMe\n\n  var container;\n  {\n    container = options.container || document.head;\n    var nodes = document.querySelectorAll(\"style[data-emotion-\" + key + \"]\");\n    Array.prototype.forEach.call(nodes, function (node) {\n      var attrib = node.getAttribute(\"data-emotion-\" + key); // $FlowFixMe\n\n      attrib.split(' ').forEach(function (id) {\n        inserted[id] = true;\n      });\n\n      if (node.parentNode !== container) {\n        container.appendChild(node);\n      }\n    });\n  }\n\n  var _insert;\n\n  {\n    stylis.use(options.stylisPlugins)(ruleSheet);\n\n    _insert = function insert(selector, serialized, sheet, shouldCache) {\n      var name = serialized.name;\n      Sheet.current = sheet;\n\n      if (process.env.NODE_ENV !== 'production' && serialized.map !== undefined) {\n        var map = serialized.map;\n        Sheet.current = {\n          insert: function insert(rule) {\n            sheet.insert(rule + map);\n          }\n        };\n      }\n\n      stylis(selector, serialized.styles);\n\n      if (shouldCache) {\n        cache.inserted[name] = true;\n      }\n    };\n  }\n\n  if (process.env.NODE_ENV !== 'production') {\n    // https://esbench.com/bench/5bf7371a4cd7e6009ef61d0a\n    var commentStart = /\\/\\*/g;\n    var commentEnd = /\\*\\//g;\n    stylis.use(function (context, content) {\n      switch (context) {\n        case -1:\n          {\n            while (commentStart.test(content)) {\n              commentEnd.lastIndex = commentStart.lastIndex;\n\n              if (commentEnd.test(content)) {\n                commentStart.lastIndex = commentEnd.lastIndex;\n                continue;\n              }\n\n              throw new Error('Your styles have an unterminated comment (\"/*\" without corresponding \"*/\").');\n            }\n\n            commentStart.lastIndex = 0;\n            break;\n          }\n      }\n    });\n    stylis.use(function (context, content, selectors) {\n      switch (context) {\n        case -1:\n          {\n            var flag = 'emotion-disable-server-rendering-unsafe-selector-warning-please-do-not-use-this-the-warning-exists-for-a-reason';\n            var unsafePseudoClasses = content.match(/(:first|:nth|:nth-last)-child/g);\n\n            if (unsafePseudoClasses && cache.compat !== true) {\n              unsafePseudoClasses.forEach(function (unsafePseudoClass) {\n                var ignoreRegExp = new RegExp(unsafePseudoClass + \".*\\\\/\\\\* \" + flag + \" \\\\*\\\\/\");\n                var ignore = ignoreRegExp.test(content);\n\n                if (unsafePseudoClass && !ignore) {\n                  console.error(\"The pseudo class \\\"\" + unsafePseudoClass + \"\\\" is potentially unsafe when doing server-side rendering. Try changing it to \\\"\" + unsafePseudoClass.split('-child')[0] + \"-of-type\\\".\");\n                }\n              });\n            }\n\n            break;\n          }\n      }\n    });\n  }\n\n  var cache = {\n    key: key,\n    sheet: new StyleSheet({\n      key: key,\n      container: container,\n      nonce: options.nonce,\n      speedy: options.speedy\n    }),\n    nonce: options.nonce,\n    inserted: inserted,\n    registered: {},\n    insert: _insert\n  };\n  return cache;\n};\n\nexport default createCache;","import \"core-js/modules/es6.array.is-array\";\nimport \"core-js/modules/es6.regexp.match\";\nimport \"core-js/modules/es6.function.name\";\nimport \"core-js/modules/es6.array.index-of\";\nimport \"core-js/modules/es6.regexp.replace\";\nimport _inheritsLoose from '@babel/runtime/helpers/inheritsLoose';\nimport { createContext, forwardRef, createElement, Component } from 'react';\nimport createCache from '@emotion/cache';\nimport { getRegisteredStyles, insertStyles } from '@emotion/utils';\nimport { serializeStyles } from '@emotion/serialize';\nimport { StyleSheet } from '@emotion/sheet';\nimport css from '@emotion/css';\nexport { default as css } from '@emotion/css';\nvar EmotionCacheContext = createContext( // we're doing this to avoid preconstruct's dead code elimination in this one case\n// because this module is primarily intended for the browser and node\n// but it's also required in react native and similar environments sometimes\n// and we could have a special build just for that\n// but this is much easier and the native packages\n// might use a different theme context in the future anyway\ntypeof HTMLElement !== 'undefined' ? createCache() : null);\nvar ThemeContext = createContext({});\nvar CacheProvider = EmotionCacheContext.Provider;\n\nvar withEmotionCache = function withEmotionCache(func) {\n  var render = function render(props, ref) {\n    return createElement(EmotionCacheContext.Consumer, null, function (cache) {\n      return func(props, cache, ref);\n    });\n  }; // $FlowFixMe\n\n\n  return forwardRef(render);\n}; // thus we only need to replace what is a valid character for JS, but not for CSS\n\n\nvar sanitizeIdentifier = function sanitizeIdentifier(identifier) {\n  return identifier.replace(/\\$/g, '-');\n};\n\nvar typePropName = '__EMOTION_TYPE_PLEASE_DO_NOT_USE__';\nvar labelPropName = '__EMOTION_LABEL_PLEASE_DO_NOT_USE__';\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar render = function render(cache, props, theme, ref) {\n  var cssProp = theme === null ? props.css : props.css(theme); // so that using `css` from `emotion` and passing the result to the css prop works\n  // not passing the registered cache to serializeStyles because it would\n  // make certain babel optimisations not possible\n\n  if (typeof cssProp === 'string' && cache.registered[cssProp] !== undefined) {\n    cssProp = cache.registered[cssProp];\n  }\n\n  var type = props[typePropName];\n  var registeredStyles = [cssProp];\n  var className = '';\n\n  if (typeof props.className === 'string') {\n    className = getRegisteredStyles(cache.registered, registeredStyles, props.className);\n  } else if (props.className != null) {\n    className = props.className + \" \";\n  }\n\n  var serialized = serializeStyles(registeredStyles);\n\n  if (process.env.NODE_ENV !== 'production' && serialized.name.indexOf('-') === -1) {\n    var labelFromStack = props[labelPropName];\n\n    if (labelFromStack) {\n      serialized = serializeStyles([serialized, 'label:' + labelFromStack + ';']);\n    }\n  }\n\n  var rules = insertStyles(cache, serialized, typeof type === 'string');\n  className += cache.key + \"-\" + serialized.name;\n  var newProps = {};\n\n  for (var key in props) {\n    if (hasOwnProperty.call(props, key) && key !== 'css' && key !== typePropName && (process.env.NODE_ENV === 'production' || key !== labelPropName)) {\n      newProps[key] = props[key];\n    }\n  }\n\n  newProps.ref = ref;\n  newProps.className = className;\n  var ele = createElement(type, newProps);\n  return ele;\n};\n\nvar Emotion =\n/* #__PURE__ */\nwithEmotionCache(function (props, cache, ref) {\n  // use Context.read for the theme when it's stable\n  if (typeof props.css === 'function') {\n    return createElement(ThemeContext.Consumer, null, function (theme) {\n      return render(cache, props, theme, ref);\n    });\n  }\n\n  return render(cache, props, null, ref);\n});\n\nif (process.env.NODE_ENV !== 'production') {\n  Emotion.displayName = 'EmotionCssPropInternal';\n} // $FlowFixMe\n\n\nvar jsx = function jsx(type, props) {\n  var args = arguments;\n\n  if (props == null || !hasOwnProperty.call(props, 'css')) {\n    // $FlowFixMe\n    return createElement.apply(undefined, args);\n  }\n\n  if (process.env.NODE_ENV !== 'production' && typeof props.css === 'string' && // check if there is a css declaration\n  props.css.indexOf(':') !== -1) {\n    throw new Error(\"Strings are not allowed as css prop values, please wrap it in a css template literal from '@emotion/css' like this: css`\" + props.css + \"`\");\n  }\n\n  var argsLength = args.length;\n  var createElementArgArray = new Array(argsLength);\n  createElementArgArray[0] = Emotion;\n  var newProps = {};\n\n  for (var key in props) {\n    if (hasOwnProperty.call(props, key)) {\n      newProps[key] = props[key];\n    }\n  }\n\n  newProps[typePropName] = type;\n\n  if (process.env.NODE_ENV !== 'production') {\n    var error = new Error();\n\n    if (error.stack) {\n      // chrome\n      var match = error.stack.match(/at (?:Object\\.|)jsx.*\\n\\s+at ([A-Z][A-Za-z$]+) /);\n\n      if (!match) {\n        // safari and firefox\n        match = error.stack.match(/^.*\\n([A-Z][A-Za-z$]+)@/);\n      }\n\n      if (match) {\n        newProps[labelPropName] = sanitizeIdentifier(match[1]);\n      }\n    }\n  }\n\n  createElementArgArray[1] = newProps;\n\n  for (var i = 2; i < argsLength; i++) {\n    createElementArgArray[i] = args[i];\n  } // $FlowFixMe\n\n\n  return createElement.apply(null, createElementArgArray);\n};\n\nvar warnedAboutCssPropForGlobal = false;\nvar Global =\n/* #__PURE__ */\nwithEmotionCache(function (props, cache) {\n  if (process.env.NODE_ENV !== 'production' && !warnedAboutCssPropForGlobal && ( // check for className as well since the user is\n  // probably using the custom createElement which\n  // means it will be turned into a className prop\n  // $FlowFixMe I don't really want to add it to the type since it shouldn't be used\n  props.className || props.css)) {\n    console.error(\"It looks like you're using the css prop on Global, did you mean to use the styles prop instead?\");\n    warnedAboutCssPropForGlobal = true;\n  }\n\n  var styles = props.styles;\n\n  if (typeof styles === 'function') {\n    return createElement(ThemeContext.Consumer, null, function (theme) {\n      var serialized = serializeStyles([styles(theme)]);\n      return createElement(InnerGlobal, {\n        serialized: serialized,\n        cache: cache\n      });\n    });\n  }\n\n  var serialized = serializeStyles([styles]);\n  return createElement(InnerGlobal, {\n    serialized: serialized,\n    cache: cache\n  });\n}); // maintain place over rerenders.\n// initial render from browser, insertBefore context.sheet.tags[0] or if a style hasn't been inserted there yet, appendChild\n// initial client-side render from SSR, use place of hydrating tag\n\nvar InnerGlobal =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(InnerGlobal, _React$Component);\n\n  function InnerGlobal(props, context, updater) {\n    return _React$Component.call(this, props, context, updater) || this;\n  }\n\n  var _proto = InnerGlobal.prototype;\n\n  _proto.componentDidMount = function componentDidMount() {\n    this.sheet = new StyleSheet({\n      key: this.props.cache.key + \"-global\",\n      nonce: this.props.cache.sheet.nonce,\n      container: this.props.cache.sheet.container\n    }); // $FlowFixMe\n\n    var node = document.querySelector(\"style[data-emotion-\" + this.props.cache.key + \"=\\\"\" + this.props.serialized.name + \"\\\"]\");\n\n    if (node !== null) {\n      this.sheet.tags.push(node);\n    }\n\n    if (this.props.cache.sheet.tags.length) {\n      this.sheet.before = this.props.cache.sheet.tags[0];\n    }\n\n    this.insertStyles();\n  };\n\n  _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n    if (prevProps.serialized.name !== this.props.serialized.name) {\n      this.insertStyles();\n    }\n  };\n\n  _proto.insertStyles = function insertStyles$1() {\n    if (this.props.serialized.next !== undefined) {\n      // insert keyframes\n      insertStyles(this.props.cache, this.props.serialized.next, true);\n    }\n\n    if (this.sheet.tags.length) {\n      // if this doesn't exist then it will be null so the style element will be appended\n      var element = this.sheet.tags[this.sheet.tags.length - 1].nextElementSibling;\n      this.sheet.before = element;\n      this.sheet.flush();\n    }\n\n    this.props.cache.insert(\"\", this.props.serialized, this.sheet, false);\n  };\n\n  _proto.componentWillUnmount = function componentWillUnmount() {\n    this.sheet.flush();\n  };\n\n  _proto.render = function render() {\n    return null;\n  };\n\n  return InnerGlobal;\n}(Component);\n\nvar keyframes = function keyframes() {\n  var insertable = css.apply(void 0, arguments);\n  var name = \"animation-\" + insertable.name; // $FlowFixMe\n\n  return {\n    name: name,\n    styles: \"@keyframes \" + name + \"{\" + insertable.styles + \"}\",\n    anim: 1,\n    toString: function toString() {\n      return \"_EMO_\" + this.name + \"_\" + this.styles + \"_EMO_\";\n    }\n  };\n};\n\nvar classnames = function classnames(args) {\n  var len = args.length;\n  var i = 0;\n  var cls = '';\n\n  for (; i < len; i++) {\n    var arg = args[i];\n    if (arg == null) continue;\n    var toAdd = void 0;\n\n    switch (typeof arg) {\n      case 'boolean':\n        break;\n\n      case 'object':\n        {\n          if (Array.isArray(arg)) {\n            toAdd = classnames(arg);\n          } else {\n            toAdd = '';\n\n            for (var k in arg) {\n              if (arg[k] && k) {\n                toAdd && (toAdd += ' ');\n                toAdd += k;\n              }\n            }\n          }\n\n          break;\n        }\n\n      default:\n        {\n          toAdd = arg;\n        }\n    }\n\n    if (toAdd) {\n      cls && (cls += ' ');\n      cls += toAdd;\n    }\n  }\n\n  return cls;\n};\n\nfunction merge(registered, css, className) {\n  var registeredStyles = [];\n  var rawClassName = getRegisteredStyles(registered, registeredStyles, className);\n\n  if (registeredStyles.length < 2) {\n    return className;\n  }\n\n  return rawClassName + css(registeredStyles);\n}\n\nvar ClassNames = withEmotionCache(function (props, context) {\n  return createElement(ThemeContext.Consumer, null, function (theme) {\n    var hasRendered = false;\n\n    var css = function css() {\n      if (hasRendered && process.env.NODE_ENV !== 'production') {\n        throw new Error('css can only be used during render');\n      }\n\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n\n      var serialized = serializeStyles(args, context.registered);\n      {\n        insertStyles(context, serialized, false);\n      }\n      return context.key + \"-\" + serialized.name;\n    };\n\n    var cx = function cx() {\n      if (hasRendered && process.env.NODE_ENV !== 'production') {\n        throw new Error('cx can only be used during render');\n      }\n\n      for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n        args[_key2] = arguments[_key2];\n      }\n\n      return merge(context.registered, css, classnames(args));\n    };\n\n    var content = {\n      css: css,\n      cx: cx,\n      theme: theme\n    };\n    var ele = props.children(content);\n    hasRendered = true;\n    return ele;\n  });\n});\nexport { CacheProvider, ClassNames, Global, ThemeContext, jsx, keyframes, withEmotionCache };","var $export = require('./_export');\nvar defined = require('./_defined');\nvar fails = require('./_fails');\nvar spaces = require('./_string-ws');\nvar space = '[' + spaces + ']';\nvar non = '\\u200b\\u0085';\nvar ltrim = RegExp('^' + space + space + '*');\nvar rtrim = RegExp(space + space + '*$');\n\nvar exporter = function (KEY, exec, ALIAS) {\n  var exp = {};\n  var FORCE = fails(function () {\n    return !!spaces[KEY]() || non[KEY]() != non;\n  });\n  var fn = exp[KEY] = FORCE ? exec(trim) : spaces[KEY];\n  if (ALIAS) exp[ALIAS] = fn;\n  $export($export.P + $export.F * FORCE, 'String', exp);\n};\n\n// 1 -> String#trimLeft\n// 2 -> String#trimRight\n// 3 -> String#trim\nvar trim = exporter.trim = function (string, TYPE) {\n  string = String(defined(string));\n  if (TYPE & 1) string = string.replace(ltrim, '');\n  if (TYPE & 2) string = string.replace(rtrim, '');\n  return string;\n};\n\nmodule.exports = exporter;\n","// 7.2.8 IsRegExp(argument)\nvar isObject = require('./_is-object');\nvar cof = require('./_cof');\nvar MATCH = require('./_wks')('match');\nmodule.exports = function (it) {\n  var isRegExp;\n  return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : cof(it) == 'RegExp');\n};\n","require('./_wks-define')('asyncIterator');\n","var $iterators = require('./es6.array.iterator');\nvar getKeys = require('./_object-keys');\nvar redefine = require('./_redefine');\nvar global = require('./_global');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar wks = require('./_wks');\nvar ITERATOR = wks('iterator');\nvar TO_STRING_TAG = wks('toStringTag');\nvar ArrayValues = Iterators.Array;\n\nvar DOMIterables = {\n  CSSRuleList: true, // TODO: Not spec compliant, should be false.\n  CSSStyleDeclaration: false,\n  CSSValueList: false,\n  ClientRectList: false,\n  DOMRectList: false,\n  DOMStringList: false,\n  DOMTokenList: true,\n  DataTransferItemList: false,\n  FileList: false,\n  HTMLAllCollection: false,\n  HTMLCollection: false,\n  HTMLFormElement: false,\n  HTMLSelectElement: false,\n  MediaList: true, // TODO: Not spec compliant, should be false.\n  MimeTypeArray: false,\n  NamedNodeMap: false,\n  NodeList: true,\n  PaintRequestList: false,\n  Plugin: false,\n  PluginArray: false,\n  SVGLengthList: false,\n  SVGNumberList: false,\n  SVGPathSegList: false,\n  SVGPointList: false,\n  SVGStringList: false,\n  SVGTransformList: false,\n  SourceBufferList: false,\n  StyleSheetList: true, // TODO: Not spec compliant, should be false.\n  TextTrackCueList: false,\n  TextTrackList: false,\n  TouchList: false\n};\n\nfor (var collections = getKeys(DOMIterables), i = 0; i < collections.length; i++) {\n  var NAME = collections[i];\n  var explicit = DOMIterables[NAME];\n  var Collection = global[NAME];\n  var proto = Collection && Collection.prototype;\n  var key;\n  if (proto) {\n    if (!proto[ITERATOR]) hide(proto, ITERATOR, ArrayValues);\n    if (!proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n    Iterators[NAME] = ArrayValues;\n    if (explicit) for (key in $iterators) if (!proto[key]) redefine(proto, key, $iterators[key], true);\n  }\n}\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _inDOM = _interopRequireDefault(require(\"../util/inDOM\"));\n\nvar on = function on() {};\n\nif (_inDOM[\"default\"]) {\n  on = function () {\n    if (document.addEventListener) return function (node, eventName, handler, capture) {\n      return node.addEventListener(eventName, handler, capture || false);\n    };else if (document.attachEvent) return function (node, eventName, handler) {\n      return node.attachEvent('on' + eventName, function (e) {\n        e = e || window.event;\n        e.target = e.target || e.srcElement;\n        e.currentTarget = node;\n        handler.call(node, e);\n      });\n    };\n  }();\n}\n\nvar _default = on;\nexports[\"default\"] = _default;\nmodule.exports = exports[\"default\"];","// 21.1.3.6 String.prototype.endsWith(searchString [, endPosition])\n'use strict';\nvar $export = require('./_export');\nvar toLength = require('./_to-length');\nvar context = require('./_string-context');\nvar ENDS_WITH = 'endsWith';\nvar $endsWith = ''[ENDS_WITH];\n\n$export($export.P + $export.F * require('./_fails-is-regexp')(ENDS_WITH), 'String', {\n  endsWith: function endsWith(searchString /* , endPosition = @length */) {\n    var that = context(this, searchString, ENDS_WITH);\n    var endPosition = arguments.length > 1 ? arguments[1] : undefined;\n    var len = toLength(that.length);\n    var end = endPosition === undefined ? len : Math.min(toLength(endPosition), len);\n    var search = String(searchString);\n    return $endsWith\n      ? $endsWith.call(that, search, end)\n      : that.slice(end - search.length, end) === search;\n  }\n});\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\n\nimport InternalPageRenderer from \"./page-renderer\"\n\nconst ProdPageRenderer = ({ location, pageResources }) => {\n  if (!pageResources) {\n    return null\n  }\n  return React.createElement(InternalPageRenderer, {\n    location,\n    pageResources,\n    ...pageResources.json,\n  })\n}\n\nProdPageRenderer.propTypes = {\n  location: PropTypes.shape({\n    pathname: PropTypes.string.isRequired,\n  }).isRequired,\n}\n\nexport default ProdPageRenderer\n","var isObject = require('./_is-object');\nmodule.exports = function (it, TYPE) {\n  if (!isObject(it) || it._t !== TYPE) throw TypeError('Incompatible receiver, ' + TYPE + ' required!');\n  return it;\n};\n","'use strict';\nvar regexpExec = require('./_regexp-exec');\nrequire('./_export')({\n  target: 'RegExp',\n  proto: true,\n  forced: regexpExec !== /./.exec\n}, {\n  exec: regexpExec\n});\n","var anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar newPromiseCapability = require('./_new-promise-capability');\n\nmodule.exports = function (C, x) {\n  anObject(C);\n  if (isObject(x) && x.constructor === C) return x;\n  var promiseCapability = newPromiseCapability.f(C);\n  var resolve = promiseCapability.resolve;\n  resolve(x);\n  return promiseCapability.promise;\n};\n","// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n  if (it == undefined) throw TypeError(\"Can't call method on  \" + it);\n  return it;\n};\n","// false -> Array#indexOf\n// true  -> Array#includes\nvar toIObject = require('./_to-iobject');\nvar toLength = require('./_to-length');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nmodule.exports = function (IS_INCLUDES) {\n  return function ($this, el, fromIndex) {\n    var O = toIObject($this);\n    var length = toLength(O.length);\n    var index = toAbsoluteIndex(fromIndex, length);\n    var value;\n    // Array#includes uses SameValueZero equality algorithm\n    // eslint-disable-next-line no-self-compare\n    if (IS_INCLUDES && el != el) while (length > index) {\n      value = O[index++];\n      // eslint-disable-next-line no-self-compare\n      if (value != value) return true;\n    // Array#indexOf ignores holes, Array#includes - not\n    } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n      if (O[index] === el) return IS_INCLUDES || index || 0;\n    } return !IS_INCLUDES && -1;\n  };\n};\n","'use strict';\nvar weak = require('./_collection-weak');\nvar validate = require('./_validate-collection');\nvar WEAK_SET = 'WeakSet';\n\n// 23.4 WeakSet Objects\nrequire('./_collection')(WEAK_SET, function (get) {\n  return function WeakSet() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n}, {\n  // 23.4.3.1 WeakSet.prototype.add(value)\n  add: function add(value) {\n    return weak.def(validate(this, WEAK_SET), value, true);\n  }\n}, weak, false, true);\n","'use strict';\nvar dP = require('./_object-dp').f;\nvar create = require('./_object-create');\nvar redefineAll = require('./_redefine-all');\nvar ctx = require('./_ctx');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar $iterDefine = require('./_iter-define');\nvar step = require('./_iter-step');\nvar setSpecies = require('./_set-species');\nvar DESCRIPTORS = require('./_descriptors');\nvar fastKey = require('./_meta').fastKey;\nvar validate = require('./_validate-collection');\nvar SIZE = DESCRIPTORS ? '_s' : 'size';\n\nvar getEntry = function (that, key) {\n  // fast case\n  var index = fastKey(key);\n  var entry;\n  if (index !== 'F') return that._i[index];\n  // frozen object case\n  for (entry = that._f; entry; entry = entry.n) {\n    if (entry.k == key) return entry;\n  }\n};\n\nmodule.exports = {\n  getConstructor: function (wrapper, NAME, IS_MAP, ADDER) {\n    var C = wrapper(function (that, iterable) {\n      anInstance(that, C, NAME, '_i');\n      that._t = NAME;         // collection type\n      that._i = create(null); // index\n      that._f = undefined;    // first entry\n      that._l = undefined;    // last entry\n      that[SIZE] = 0;         // size\n      if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n    });\n    redefineAll(C.prototype, {\n      // 23.1.3.1 Map.prototype.clear()\n      // 23.2.3.2 Set.prototype.clear()\n      clear: function clear() {\n        for (var that = validate(this, NAME), data = that._i, entry = that._f; entry; entry = entry.n) {\n          entry.r = true;\n          if (entry.p) entry.p = entry.p.n = undefined;\n          delete data[entry.i];\n        }\n        that._f = that._l = undefined;\n        that[SIZE] = 0;\n      },\n      // 23.1.3.3 Map.prototype.delete(key)\n      // 23.2.3.4 Set.prototype.delete(value)\n      'delete': function (key) {\n        var that = validate(this, NAME);\n        var entry = getEntry(that, key);\n        if (entry) {\n          var next = entry.n;\n          var prev = entry.p;\n          delete that._i[entry.i];\n          entry.r = true;\n          if (prev) prev.n = next;\n          if (next) next.p = prev;\n          if (that._f == entry) that._f = next;\n          if (that._l == entry) that._l = prev;\n          that[SIZE]--;\n        } return !!entry;\n      },\n      // 23.2.3.6 Set.prototype.forEach(callbackfn, thisArg = undefined)\n      // 23.1.3.5 Map.prototype.forEach(callbackfn, thisArg = undefined)\n      forEach: function forEach(callbackfn /* , that = undefined */) {\n        validate(this, NAME);\n        var f = ctx(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);\n        var entry;\n        while (entry = entry ? entry.n : this._f) {\n          f(entry.v, entry.k, this);\n          // revert to the last existing entry\n          while (entry && entry.r) entry = entry.p;\n        }\n      },\n      // 23.1.3.7 Map.prototype.has(key)\n      // 23.2.3.7 Set.prototype.has(value)\n      has: function has(key) {\n        return !!getEntry(validate(this, NAME), key);\n      }\n    });\n    if (DESCRIPTORS) dP(C.prototype, 'size', {\n      get: function () {\n        return validate(this, NAME)[SIZE];\n      }\n    });\n    return C;\n  },\n  def: function (that, key, value) {\n    var entry = getEntry(that, key);\n    var prev, index;\n    // change existing entry\n    if (entry) {\n      entry.v = value;\n    // create new entry\n    } else {\n      that._l = entry = {\n        i: index = fastKey(key, true), // <- index\n        k: key,                        // <- key\n        v: value,                      // <- value\n        p: prev = that._l,             // <- previous entry\n        n: undefined,                  // <- next entry\n        r: false                       // <- removed\n      };\n      if (!that._f) that._f = entry;\n      if (prev) prev.n = entry;\n      that[SIZE]++;\n      // add to index\n      if (index !== 'F') that._i[index] = entry;\n    } return that;\n  },\n  getEntry: getEntry,\n  setStrong: function (C, NAME, IS_MAP) {\n    // add .keys, .values, .entries, [@@iterator]\n    // 23.1.3.4, 23.1.3.8, 23.1.3.11, 23.1.3.12, 23.2.3.5, 23.2.3.8, 23.2.3.10, 23.2.3.11\n    $iterDefine(C, NAME, function (iterated, kind) {\n      this._t = validate(iterated, NAME); // target\n      this._k = kind;                     // kind\n      this._l = undefined;                // previous\n    }, function () {\n      var that = this;\n      var kind = that._k;\n      var entry = that._l;\n      // revert to the last existing entry\n      while (entry && entry.r) entry = entry.p;\n      // get next entry\n      if (!that._t || !(that._l = entry = entry ? entry.n : that._t._f)) {\n        // or finish the iteration\n        that._t = undefined;\n        return step(1);\n      }\n      // return step by kind\n      if (kind == 'keys') return step(0, entry.k);\n      if (kind == 'values') return step(0, entry.v);\n      return step(0, [entry.k, entry.v]);\n    }, IS_MAP ? 'entries' : 'values', !IS_MAP, true);\n\n    // add [@@species], 23.1.2.2, 23.2.2.2\n    setSpecies(NAME);\n  }\n};\n","module.exports = !require('./_descriptors') && !require('./_fails')(function () {\n  return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n","const plugins = require(`./api-runner-browser-plugins`)\nconst {\n  getResourcesForPathname,\n  getResourcesForPathnameSync,\n  getResourceURLsForPathname,\n  loadPage,\n  loadPageSync,\n} = require(`./loader`).publicLoader\n\nexports.apiRunner = (api, args = {}, defaultReturn, argTransform) => {\n  // Hooks for gatsby-cypress's API handler\n  if (process.env.CYPRESS_SUPPORT) {\n    if (window.___apiHandler) {\n      window.___apiHandler(api)\n    } else if (window.___resolvedAPIs) {\n      window.___resolvedAPIs.push(api)\n    } else {\n      window.___resolvedAPIs = [api]\n    }\n  }\n\n  let results = plugins.map(plugin => {\n    if (!plugin.plugin[api]) {\n      return undefined\n    }\n\n    // Deprecated April 2019. Use `loadPageSync` instead\n    args.getResourcesForPathnameSync = getResourcesForPathnameSync\n    // Deprecated April 2019. Use `loadPage` instead\n    args.getResourcesForPathname = getResourcesForPathname\n    args.getResourceURLsForPathname = getResourceURLsForPathname\n    args.loadPage = loadPage\n    args.loadPageSync = loadPageSync\n\n    const result = plugin.plugin[api](args, plugin.options)\n    if (result && argTransform) {\n      args = argTransform({ args, result, plugin })\n    }\n    return result\n  })\n\n  // Filter out undefined results.\n  results = results.filter(result => typeof result !== `undefined`)\n\n  if (results.length > 0) {\n    return results\n  } else if (defaultReturn) {\n    return [defaultReturn]\n  } else {\n    return []\n  }\n}\n\nexports.apiRunnerAsync = (api, args, defaultReturn) =>\n  plugins.reduce(\n    (previous, next) =>\n      next.plugin[api]\n        ? previous.then(() => next.plugin[api](args, next.options))\n        : previous,\n    Promise.resolve()\n  )\n","var isObject = require('./_is-object');\nmodule.exports = function (it) {\n  if (!isObject(it)) throw TypeError(it + ' is not an object!');\n  return it;\n};\n","var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n  return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n","'use strict';\nvar addToUnscopables = require('./_add-to-unscopables');\nvar step = require('./_iter-step');\nvar Iterators = require('./_iterators');\nvar toIObject = require('./_to-iobject');\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = require('./_iter-define')(Array, 'Array', function (iterated, kind) {\n  this._t = toIObject(iterated); // target\n  this._i = 0;                   // next index\n  this._k = kind;                // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n  var O = this._t;\n  var kind = this._k;\n  var index = this._i++;\n  if (!O || index >= O.length) {\n    this._t = undefined;\n    return step(1);\n  }\n  if (kind == 'keys') return step(0, index);\n  if (kind == 'values') return step(0, O[index]);\n  return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n","// 9.4.2.3 ArraySpeciesCreate(originalArray, length)\nvar speciesConstructor = require('./_array-species-constructor');\n\nmodule.exports = function (original, length) {\n  return new (speciesConstructor(original))(length);\n};\n","var has = require('./_has');\nvar toIObject = require('./_to-iobject');\nvar arrayIndexOf = require('./_array-includes')(false);\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\n\nmodule.exports = function (object, names) {\n  var O = toIObject(object);\n  var i = 0;\n  var result = [];\n  var key;\n  for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n  // Don't enum bug & hidden keys\n  while (names.length > i) if (has(O, key = names[i++])) {\n    ~arrayIndexOf(result, key) || result.push(key);\n  }\n  return result;\n};\n"],"sourceRoot":""}
\ No newline at end of file
diff --git a/chunk-map.json b/chunk-map.json
index 81466ae..91097e6 100644
--- a/chunk-map.json
+++ b/chunk-map.json
@@ -1 +1 @@
-{"app":["/app-0b96427b0b370a80fa06.js"],"component---src-pages-about-js":["/component---src-pages-about-js-0c1171ebe659e1cec428.js"],"component---src-pages-index-js":["/component---src-pages-index-js-743bf9596a9631508e4e.js"],"component---src-pages-news-js":["/component---src-pages-news-js-771033deb1dca3596266.js"],"component---src-pages-performance-js":["/component---src-pages-performance-js-31be57d58d932a4860aa.js"]}
\ No newline at end of file
+{"app":["/app-2da2270a07d62743bcd4.js"],"component---src-pages-about-js":["/component---src-pages-about-js-f3472e79e3f9cd8dc280.js"],"component---src-pages-index-js":["/component---src-pages-index-js-4f88f89ee8348cf9654f.js"],"component---src-pages-news-js":["/component---src-pages-news-js-63e528f45eabc859ccac.js"],"component---src-pages-performance-js":["/component---src-pages-performance-js-985e1e9d446123113ec2.js"]}
\ No newline at end of file
diff --git a/commons-42a47b90457bdd243664.js b/commons-42a47b90457bdd243664.js
deleted file mode 100644
index 5b1fb5e..0000000
--- a/commons-42a47b90457bdd243664.js
+++ /dev/null
@@ -1,2 +0,0 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[0],{"+wdc":function(e,t,n){"use strict";var r,i,o,a,l;if(n("eM6i"),n("HAE/"),Object.defineProperty(t,"__esModule",{value:!0}),"undefined"==typeof window||"function"!=typeof MessageChannel){var u=null,c=null,s=function e(){if(null!==u)try{var n=t.unstable_now();u(!0,n),u=null}catch(r){throw setTimeout(e,0),r}},f=Date.now();t.unstable_now=function(){return Date.now()-f},r=function(e){null!==u?setTimeout(r,0,e):(u=e,setTimeout(s,0))},i=function(e,t){c=setTimeout(e,t)},o=function(){clearTimeout(c)},a=function(){return!1},l=t.unstable_forceFrameRate=function(){}}else{var d=window.performance,M=window.Date,p=window.setTimeout,g=window.clearTimeout;if("undefined"!=typeof console){var y=window.cancelAnimationFrame;"function"!=typeof window.requestAnimationFrame&&console.error("This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills"),"function"!=typeof y&&console.error("This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills")}if("object"==typeof d&&"function"==typeof d.now)t.unstable_now=function(){return d.now()};else{var N=M.now();t.unstable_now=function(){return M.now()-N}}var T=!1,D=null,j=-1,m=5,I=0;a=function(){return t.unstable_now()>=I},l=function(){},t.unstable_forceFrameRate=function(e){0>e||125<e?console.error("forceFrameRate takes a positive int between 0 and 125, forcing framerates higher than 125 fps is not unsupported"):m=0<e?Math.floor(1e3/e):5};var h=new MessageChannel,w=h.port2;h.port1.onmessage=function(){if(null!==D){var e=t.unstable_now();I=e+m;try{D(!0,e)?w.postMessage(null):(T=!1,D=null)}catch(n){throw w.postMessage(null),n}}else T=!1},r=function(e){D=e,T||(T=!0,w.postMessage(null))},i=function(e,n){j=p((function(){e(t.unstable_now())}),n)},o=function(){g(j),j=-1}}function E(e,t){var n=e.length;e.push(t);e:for(;;){var r=Math.floor((n-1)/2),i=e[r];if(!(void 0!==i&&0<x(i,t)))break e;e[r]=t,e[n]=i,n=r}}function b(e){return void 0===(e=e[0])?null:e}function L(e){var t=e[0];if(void 0!==t){var n=e.pop();if(n!==t){e[0]=n;e:for(var r=0,i=e.length;r<i;){var o=2*(r+1)-1,a=e[o],l=o+1,u=e[l];if(void 0!==a&&0>x(a,n))void 0!==u&&0>x(u,a)?(e[r]=u,e[l]=n,r=l):(e[r]=a,e[o]=n,r=o);else{if(!(void 0!==u&&0>x(u,n)))break e;e[r]=u,e[l]=n,r=l}}}return t}return null}function x(e,t){var n=e.sortIndex-t.sortIndex;return 0!==n?n:e.id-t.id}var z=[],O=[],v=1,A=null,C=3,S=!1,k=!1,U=!1;function P(e){for(var t=b(O);null!==t;){if(null===t.callback)L(O);else{if(!(t.startTime<=e))break;L(O),t.sortIndex=t.expirationTime,E(z,t)}t=b(O)}}function Q(e){if(U=!1,P(e),!k)if(null!==b(z))k=!0,r(Y);else{var t=b(O);null!==t&&i(Q,t.startTime-e)}}function Y(e,n){k=!1,U&&(U=!1,o()),S=!0;var r=C;try{for(P(n),A=b(z);null!==A&&(!(A.expirationTime>n)||e&&!a());){var l=A.callback;if(null!==l){A.callback=null,C=A.priorityLevel;var u=l(A.expirationTime<=n);n=t.unstable_now(),"function"==typeof u?A.callback=u:A===b(z)&&L(z),P(n)}else L(z);A=b(z)}if(null!==A)var c=!0;else{var s=b(O);null!==s&&i(Q,s.startTime-n),c=!1}return c}finally{A=null,C=r,S=!1}}function _(e){switch(e){case 1:return-1;case 2:return 250;case 5:return 1073741823;case 4:return 1e4;default:return 5e3}}var R=l;t.unstable_ImmediatePriority=1,t.unstable_UserBlockingPriority=2,t.unstable_NormalPriority=3,t.unstable_IdlePriority=5,t.unstable_LowPriority=4,t.unstable_runWithPriority=function(e,t){switch(e){case 1:case 2:case 3:case 4:case 5:break;default:e=3}var n=C;C=e;try{return t()}finally{C=n}},t.unstable_next=function(e){switch(C){case 1:case 2:case 3:var t=3;break;default:t=C}var n=C;C=t;try{return e()}finally{C=n}},t.unstable_scheduleCallback=function(e,n,a){var l=t.unstable_now();if("object"==typeof a&&null!==a){var u=a.delay;u="number"==typeof u&&0<u?l+u:l,a="number"==typeof a.timeout?a.timeout:_(e)}else a=_(e),u=l;return e={id:v++,callback:n,priorityLevel:e,startTime:u,expirationTime:a=u+a,sortIndex:-1},u>l?(e.sortIndex=u,E(O,e),null===b(z)&&e===b(O)&&(U?o():U=!0,i(Q,u-l))):(e.sortIndex=a,E(z,e),k||S||(k=!0,r(Y))),e},t.unstable_cancelCallback=function(e){e.callback=null},t.unstable_wrapCallback=function(e){var t=C;return function(){var n=C;C=t;try{return e.apply(this,arguments)}finally{C=n}}},t.unstable_getCurrentPriorityLevel=function(){return C},t.unstable_shouldYield=function(){var e=t.unstable_now();P(e);var n=b(z);return n!==A&&null!==A&&null!==n&&null!==n.callback&&n.startTime<=e&&n.expirationTime<A.expirationTime||a()},t.unstable_requestPaint=R,t.unstable_continueExecution=function(){k||S||(k=!0,r(Y))},t.unstable_pauseExecution=function(){},t.unstable_getFirstCallbackNode=function(){return b(z)},t.unstable_Profiling=null},"2A+t":function(e,t,n){"use strict";n.d(t,"c",(function(){return f})),n.d(t,"a",(function(){return d})),n.d(t,"e",(function(){return M})),n.d(t,"d",(function(){return D})),n.d(t,"b",(function(){return m}));n("91GP"),n("rE2o"),n("ioFf");var r=n("qKvR"),i=n("ZdEh"),o=n("q1tI"),a=n.n(o),l=n("PE4B"),u=n.n(l),c=n("ITVs"),s=function(e){if(!e)return null;var t={};for(var n in e)"sx"!==n&&(t[n]=e[n]);var r=function(e){if(e.sx||e.css)return function(t){return[Object(i.a)(e.sx)(t),"function"==typeof e.css?e.css(t):e.css]}}(e);return r&&(t.css=r),t},f=function(e,t){for(var n=[],i=arguments.length-2;i-- >0;)n[i]=arguments[i+2];return r.c.apply(void 0,[e,s(t)].concat(n))},d=a.a.createContext({__EMOTION_VERSION__:c.a,theme:null}),M=function(){return a.a.useContext(d)},p="function"==typeof Symbol&&Symbol.for,g=p?Symbol.for("react.element"):60103,y=p?Symbol.for("react.forward_ref"):60103,N=function(e){return!!e&&"object"==typeof e&&e.$$typeof!==g&&e.$$typeof!==y},T=function(e,t,n){return t},D=function(e,t){return u()(e,t,{isMergeableObject:N,arrayMerge:T})};D.all=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];return u.a.all(e,{isMergeableObject:N,arrayMerge:T})};var j=function(e){var t=e.context,n=e.children;return f(r.b.Provider,{value:t.theme},f(d.Provider,{value:t,children:n}))},m=function(e){var t=e.theme,n=e.children,r=M();var i="function"==typeof t?Object.assign({},r,{theme:t(r.theme)}):D.all({},r,{theme:t});return f(j,{context:i,children:n})}},"8+s/":function(e,t,n){"use strict";function r(e){return e&&"object"==typeof e&&"default"in e?e.default:e}n("V+eJ"),n("bWfx"),n("f3/d"),n("hHhE"),n("HAE/");var i=n("q1tI"),o=r(i),a=r(n("Gytx"));function l(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var u=!("undefined"==typeof window||!window.document||!window.document.createElement);e.exports=function(e,t,n){if("function"!=typeof e)throw new Error("Expected reducePropsToState to be a function.");if("function"!=typeof t)throw new Error("Expected handleStateChangeOnClient to be a function.");if(void 0!==n&&"function"!=typeof n)throw new Error("Expected mapStateOnServer to either be undefined or a function.");return function(r){if("function"!=typeof r)throw new Error("Expected WrappedComponent to be a React component.");var c,s=[];function f(){c=e(s.map((function(e){return e.props}))),d.canUseDOM?t(c):n&&(c=n(c))}var d=function(e){var t,n;function i(){return e.apply(this,arguments)||this}n=e,(t=i).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n,i.peek=function(){return c},i.rewind=function(){if(i.canUseDOM)throw new Error("You may only call rewind() on the server. Call peek() to read the current state.");var e=c;return c=void 0,s=[],e};var l=i.prototype;return l.shouldComponentUpdate=function(e){return!a(e,this.props)},l.componentWillMount=function(){s.push(this),f()},l.componentDidUpdate=function(){f()},l.componentWillUnmount=function(){var e=s.indexOf(this);s.splice(e,1),f()},l.render=function(){return o.createElement(r,this.props)},i}(i.Component);return l(d,"displayName","SideEffect("+function(e){return e.displayName||e.name||"Component"}(r)+")"),l(d,"canUseDOM",u),d}}},"9uj6":function(e,t,n){"use strict";var r=n("4qRI"),i=/^((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|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|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)-.*))$/,o=Object(r.a)((function(e){return i.test(e)||111===e.charCodeAt(0)&&110===e.charCodeAt(1)&&e.charCodeAt(2)<91}));t.a=o},Bl7J:function(e,t,n){"use strict";var r=n("q1tI"),i=n.n(r),o=(n("LK8F"),n("91GP"),n("DNiP"),n("bWfx"),n("KKXr"),n("2A+t")),a=(n("V+eJ"),n("rGqo"),n("yt8O"),n("Btvt"),n("RW0V"),n("8+KV"),n("0l/t"),n("qKvR")),l=n("ZdEh"),u=function(e){return"--theme-ui-"+e},c=function(e,t){return"var("+u(e)+", "+t+")"},s=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];return e.filter(Boolean).join("-")},f={fontWeights:!0,lineHeights:!0},d={useCustomProperties:!0,initialColorModeName:!0,initialColorMode:!0},M=function(e,t){return"number"!=typeof t?t:f[e]?t:t+"px"},p=function e(t,n){var r={};for(var i in n)if("modes"!==i){var o=s(t,i),a=n[i];a&&"object"==typeof a?r=Object.assign({},r,e(o,a)):r[u(o)]=a}return r},g=function(e){try{return window.localStorage.getItem("theme-ui-color-mode")||e}catch(t){console.warn("localStorage is disabled and color mode might not work as expected.","Please check your Site Settings.",t)}},y=function(e){try{window.localStorage.setItem("theme-ui-color-mode",e)}catch(t){console.warn("localStorage is disabled and color mode might not work as expected.","Please check your Site Settings.",t)}},N=function(e){void 0===e&&(e={});var t=i.a.useState(e.initialColorModeName||"default"),n=t[0],r=t[1];return i.a.useEffect((function(){var t=g();if(document.body.classList.remove("theme-ui-"+t),t||!e.useColorSchemeMediaQuery){var i,o,a;t&&t!==n&&r(t)}else{var l=(i="(prefers-color-scheme: dark)",o=window.matchMedia?window.matchMedia(i):{},a=window.matchMedia?window.matchMedia("(prefers-color-scheme: light)"):{},o.media===i&&o.matches?"dark":"(prefers-color-scheme: light)"===a.media&&a.matches?"light":"default");r(l)}}),[]),i.a.useEffect((function(){n&&y(n)}),[n]),[n,r]},T=function(){return Object(o.c)(a.a,{styles:function(e){return function(e){if(void 0===e&&(e={}),!e.colors||!1===e.useBodyStyles)return{};if(!1===e.useCustomProperties||!e.colors.modes)return Object(l.a)({body:{color:"text",bg:"background"}})(e);var t=e.rawColors||e.colors,n=t.modes,r=p("colors",t);return Object.keys(n).forEach((function(e){r["&.theme-ui-"+e]=p("colors",n[e])})),Object(l.a)({body:Object.assign({},r,{color:"text",bg:"background"})})(e)}(e)}})},D=function(e){var t=e.children,n=Object(o.e)(),r=N(n.theme),i=r[0],u=r[1],f=function(e,t){if(!t)return e;var n=Object(l.b)(e,"colors.modes",{});return o.d.all({},e,{colors:Object(l.b)(n,t,{})})}(n.theme||{},i),p=Object.assign({},f);!1!==f.useCustomProperties&&(p.colors=function e(t,n,r){var i=Array.isArray(t)?[]:{};for(var o in t){var a=t[o],l=s(n,o);if(a&&"object"==typeof a)i[o]=e(a,l,o);else if(d[o])i[o]=a;else{var u=M(r||o,a);i[o]=c(l,u)}}return i}(p.colors,"colors"));var g=Object.assign({},n,{theme:f,colorMode:i,setColorMode:u});return Object(o.c)(a.b.Provider,{value:p},Object(o.c)(o.a.Provider,{value:g},Object(o.c)(T,{key:"color-mode"}),t))},j=n("MXbp"),m=function(e,t,n,r,i){for(t=t&&t.split?t.split("."):[t],r=0;r<t.length;r++)e=e?e[t[r]]:i;return e===i?n:e},I=[40,52,64].map((function(e){return e+"em"})),h={space:[0,4,8,16,32,64,128,256,512],fontSizes:[12,14,16,20,24,32,48,64,72]},w={bg:"backgroundColor",m:"margin",mt:"marginTop",mr:"marginRight",mb:"marginBottom",ml:"marginLeft",mx:"marginX",my:"marginY",p:"padding",pt:"paddingTop",pr:"paddingRight",pb:"paddingBottom",pl:"paddingLeft",px:"paddingX",py:"paddingY"},E={marginX:["marginLeft","marginRight"],marginY:["marginTop","marginBottom"],paddingX:["paddingLeft","paddingRight"],paddingY:["paddingTop","paddingBottom"],size:["width","height"]},b={color:"colors",backgroundColor:"colors",borderColor:"colors",margin:"space",marginTop:"space",marginRight:"space",marginBottom:"space",marginLeft:"space",marginX:"space",marginY:"space",padding:"space",paddingTop:"space",paddingRight:"space",paddingBottom:"space",paddingLeft:"space",paddingX:"space",paddingY:"space",top:"space",right:"space",bottom:"space",left:"space",gridGap:"space",gridColumnGap:"space",gridRowGap:"space",gap:"space",columnGap:"space",rowGap:"space",fontFamily:"fonts",fontSize:"fontSizes",fontWeight:"fontWeights",lineHeight:"lineHeights",letterSpacing:"letterSpacings",border:"borders",borderTop:"borders",borderRight:"borders",borderBottom:"borders",borderLeft:"borders",borderWidth:"borderWidths",borderStyle:"borderStyles",borderRadius:"radii",borderTopRightRadius:"radii",borderTopLeftRadius:"radii",borderBottomRightRadius:"radii",borderBottomLeftRadius:"radii",borderTopWidth:"borderWidths",borderTopColor:"colors",borderTopStyle:"borderStyles",borderBottomWidth:"borderWidths",borderBottomColor:"colors",borderBottomStyle:"borderStyles",borderLeftWidth:"borderWidths",borderLeftColor:"colors",borderLeftStyle:"borderStyles",borderRightWidth:"borderWidths",borderRightColor:"colors",borderRightStyle:"borderStyles",outlineColor:"colors",boxShadow:"shadows",textShadow:"shadows",zIndex:"zIndices",width:"sizes",minWidth:"sizes",maxWidth:"sizes",height:"sizes",minHeight:"sizes",maxHeight:"sizes",flexBasis:"sizes",size:"sizes",fill:"colors",stroke:"colors"},L=function(e,t){if("number"!=typeof t||t>=0)return m(e,t,t);var n=Math.abs(t),r=m(e,n,n);return"string"==typeof r?"-"+r:-1*r},x=["margin","marginTop","marginRight","marginBottom","marginLeft","marginX","marginY","top","bottom","left","right"].reduce((function(e,t){var n;return Object.assign({},e,((n={})[t]=L,n))}),{}),z=function e(t){return function(n){void 0===n&&(n={});var r=Object.assign({},h,n.theme||n),i={},o=function(e){return function(t){var n={},r=m(t,"breakpoints",I),i=[null].concat(r.map((function(e){return"@media screen and (min-width: "+e+")"})));for(var o in e){var a="function"==typeof e[o]?e[o](t):e[o];if(null!=a)if(Array.isArray(a))for(var l=0;l<a.slice(0,i.length).length;l++){var u=i[l];u?(n[u]=n[u]||{},null!=a[l]&&(n[u][o]=a[l])):n[o]=a[l]}else n[o]=a}return n}}("function"==typeof t?t(r):t)(r);for(var a in o){var l=o[a],u="function"==typeof l?l(r):l;if("variant"!==a)if(u&&"object"==typeof u)i[a]=e(u)(r);else{var c=m(w,a,a),s=m(b,c),f=m(r,s,m(r,c,{})),d=m(x,c,m)(f,u,u);if(E[c])for(var M=E[c],p=0;p<M.length;p++)i[M[p]]=d;else i[c]=d}else{var g=e(m(r,u))(r);i=Object.assign({},i,g)}}return i}},O=function(){return Object(o.c)(a.a,{styles:function(e){if(!1===e.useBodyStyles||e.styles&&!e.styles.root)return!1;var t=!1===e.useBorderBox?null:"border-box";return z({"*":{boxSizing:t},body:{margin:0,variant:"styles.root"}})(e)}})},v=function(e){var t=e.theme,n=e.components,r=e.children;return"function"==typeof Object(o.e)().setColorMode?Object(o.c)(o.b,{theme:t},Object(o.c)(j.a,{components:n,children:r})):Object(o.c)(o.b,{theme:t},Object(o.c)(D,null,Object(o.c)(O),Object(o.c)(j.a,{components:n,children:r})))},A={fonts:{heading:"'Helvetica Neue', Helvetica, Arial, 'Lucida Grande'",body:"'Helvetica Neue', Helvetica, Arial, 'Lucida Grande'"},colors:{darkText:"#4d4f50",lightText:"#d8d8d8",links:"#5DA7A3",primary:"#434343",secondary:"#5DA7A3",secondaryDark:"#5d9da3",accent:"#F8D000",background:"#FFFFFF",lightGrey:"#F1F1F1"},radii:{button:"35px",card:"10px"},breakpoints:["560px","1000px","1366px","1920px"],fontSizes:[16,18,20,24,28,36],space:[0,8,16,24,32,40],fontWeights:{body:400,heading:700},lineHeights:{body:1.5,heading:1.125},buttons:{primary:{backgroundColor:"secondary",color:"white",borderRadius:"button",height:"35px",width:"150px",border:"none",fontFamily:"body",fontSize:0,"&:hover":{cursor:"pointer",backgroundColor:"secondaryDark",borderColor:"secondaryDark",textDecoration:"none",color:"white"}},secondary:{variant:"buttons.primary",width:"190px"}},text:{heading:{fontFamily:"heading",lineHeight:"heading",fontWeight:"heading",marginY:2}},styles:{root:{fontFamily:"body",lineHeight:"body",fontWeight:"body"},h1:{variant:"text.heading",fontSize:5},h2:{variant:"text.heading",fontSize:4},h3:{variant:"text.heading",fontSize:3},h4:{variant:"text.heading",fontSize:2},h5:{variant:"text.heading",fontSize:1},h6:{variant:"text.heading",fontSize:0},p:{marginBottom:5,fontSize:1}},lists:{navRow:{display:"flex",listStyle:"none",justifyContent:"flex-end",li:{padding:1,marginX:1,a:{color:"white",textDecoration:"none","&:hover":{color:"links"}}},"li:first-of-type":{marginLeft:0},"li:last-child":{marginRight:0,paddingRight:0}},navCol:{variant:"lists.navRow",flexDirection:"column",li:{padding:1,paddingLeft:0}}},borders:{cardBorder:"#5DA7A3 10px solid"},shadows:{cardShadow:"#DADADA 0 0 20px"}},C=n("Wbzz"),S=n("TwYP"),k=n.n(S),U=n("taE0"),P=n.n(U),Q=n("Q4rR"),Y=n.n(Q),_=n("JAXw"),R=n.n(_),B=n("Fy0m"),G=n.n(B),F=function(e){var t=e.isHome;return Object(o.c)("header",{sx:{display:["none","none","flex","flex"],backgroundColor:t?"#00000000":"primary",position:t?"absolute":null,width:"100%",color:"lightText",paddingX:5,paddingY:4,alignItems:"center"}},Object(o.c)("div",{sx:{flex:1,opacity:t?0:1,pointerEvents:t?"none":"all"}},Object(o.c)(C.Link,{to:"/"},Object(o.c)("img",{src:k.a,alt:"OpenJ9 Logo"}))),Object(o.c)("nav",{sx:{flex:2}},Object(o.c)("ul",{sx:{variant:"lists.navRow"}},Object(o.c)("li",null,Object(o.c)(C.Link,{to:"/"},"Home")),Object(o.c)("li",null,Object(o.c)(C.Link,{to:"/about"},"About")),Object(o.c)("li",null,Object(o.c)("a",{href:"https://www.eclipse.org/openj9/docs/",rel:"noopener noreferrer",target:"_blank"},"Docs")),Object(o.c)("li",null,Object(o.c)(C.Link,{to:"/performance"},"Performance")),Object(o.c)("li",null,Object(o.c)(C.Link,{to:"/news"},"News")))),Object(o.c)("nav",{sx:{flex:1}},Object(o.c)("ul",{sx:{variant:"lists.navRow"}},Object(o.c)("li",null,Object(o.c)("a",{href:"https://twitter.com/openj9/",rel:"noopener noreferrer",target:"_blank"}," ",Object(o.c)("img",{src:R.a,alt:"Twitter Logo"}))),Object(o.c)("li",null,Object(o.c)("a",{href:"https://github.com/eclipse/openj9",rel:"noopener noreferrer",target:"_blank"}," ",Object(o.c)("img",{src:Y.a,alt:"GitHub Logo"}))),Object(o.c)("li",null,Object(o.c)("a",{href:"https://openj9.slack.com/",rel:"noopener noreferrer",target:"_blank"},Object(o.c)("img",{src:P.a,alt:"Slack logo"}))),Object(o.c)("li",null,Object(o.c)("a",{href:"https://stackoverflow.com/search?q=%23OpenJ9",rel:"noopener noreferrer",target:"_blank"},Object(o.c)("img",{src:G.a,alt:"Stack Overflow logo"}))))))},W=n("fuUq"),H=n.n(W),Z=function(){return Object(o.c)("footer",{sx:{display:"flex",backgroundColor:"primary",color:"white",flexWrap:"wrap",padding:"1rem",paddingBottom:["3rem","3rem","0","0"],flexDirection:"reverse-column"}},Object(o.c)("section",{sx:{flex:"50%",display:["flex","none","none","none"],alignItems:["center","center","flex-end","flex-end"],flexDirection:"column"}},Object(o.c)("a",{href:"https://wiki.eclipse.org/Development_Resources/Process_Guidelines/What_is_Incubation",rel:"noopener noreferrer",target:"_blank"},Object(o.c)("img",{src:H.a,alt:"Eclipse Incubator Logo"})),Object(o.c)(j.b.h6,{sx:{fontSize:"0.9rem"}},"OpenJ9 is an Eclipse Incubator Project")),Object(o.c)("nav",{sx:{display:["flex","flex","flex","flex"],flex:["100%","50%","50%","50%"],flexDirection:["column","row","row","row"],justifyContent:"center",a:{color:"white",textDecoration:"none","&:hover":{color:"links"}}}},Object(o.c)("section",{sx:{flex:1,paddingLeft:["2rem","0.8rem","0.8rem","0.8rem"],marginRight:"1.1rem",padding:["1rem",0],fontSize:["1rem","0.9rem","1rem","1rem"]}},Object(o.c)(j.b.h4,{sx:{marginBottom:"0.2rem"}},"Docs"),Object(o.c)("ul",{sx:{variant:"lists.navCol",li:{padding:0}}},Object(o.c)("li",null,Object(o.c)("a",{sx:{textDecoration:"none",color:"white"},href:"https://www.eclipse.org/openj9/docs/openj9_newuser/",rel:"noopener noreferrer",target:"_blank"},"New to OpenJ9?")),Object(o.c)("li",null,Object(o.c)("a",{sx:{textDecoration:"none",color:"white"},href:"https://www.eclipse.org/openj9/docs/introduction/",rel:"noopener noreferrer",target:"_blank"},"Getting started")),Object(o.c)("li",null,Object(o.c)("a",{sx:{textDecoration:"none",color:"white"},href:"https://www.eclipse.org/openj9/docs/cmdline_specifying/",rel:"noopener noreferrer",target:"_blank"},"Command-line options")))),Object(o.c)("section",{sx:{flex:1,paddingLeft:["2rem","0.8rem",0,0],padding:["1rem",0],fontSize:["1rem","0.9rem","1rem","1rem"]}},Object(o.c)(j.b.h4,{sx:{marginBottom:"0.2rem"}},"Resources"),Object(o.c)("ul",{sx:{variant:"lists.navCol",li:{padding:0}}},Object(o.c)("li",null,Object(o.c)(C.Link,{sx:{textDecoration:"none",color:"white"},to:"/about"},"About")),Object(o.c)("li",null,Object(o.c)(C.Link,{sx:{textDecoration:"none",color:"white"},to:"/performance"},"Performance")))),Object(o.c)("section",{sx:{flex:1,paddingLeft:["2rem",0,0,0],padding:["1rem",0],fontSize:["1rem","0.9rem","1rem","1rem"],marginLeft:[0,"1rem"]}},Object(o.c)(j.b.h4,{sx:{marginBottom:"0.2rem"}},"Community"),Object(o.c)("ul",{sx:{variant:"lists.navCol",li:{padding:0}}},Object(o.c)("li",null,Object(o.c)(C.Link,{sx:{textDecoration:"none",color:"white"},to:"/news"},"News")),Object(o.c)("li",null,Object(o.c)("a",{sx:{textDecoration:"none",color:"white"},href:"https://blog.openj9.org/",rel:"noopener noreferrer",target:"_blank"},"Blogs"))))),Object(o.c)("section",{sx:{flex:"25%",display:["none","flex","flex","flex"],alignItems:["center","flex-end","flex-end","flex-end"],flexDirection:"column"}},Object(o.c)(j.b.h6,{sx:{fontSize:"0.9rem",marginTop:"1.3rem",marginLeft:"0.6rem"}},"OpenJ9 is an Eclipse Incubator Project"),Object(o.c)("a",{href:"https://wiki.eclipse.org/Development_Resources/Process_Guidelines/What_is_Incubation",rel:"noopener noreferrer",target:"_blank"},Object(o.c)("img",{src:H.a,alt:"Eclipse Incubator Logo"}))),Object(o.c)("div",{sx:{height:"2px",backgroundColor:"secondary",width:"100%",marginY:2}}),Object(o.c)("nav",{sx:{width:"70%"}},Object(o.c)("ul",{sx:{display:"flex",flexDirection:["column","row","row","row"],li:{padding:"0.4rem",fontSize:["0.9rem","0.7rem","1rem","1rem"],listStyleType:"none",paddingLeft:"1rem",color:"white"},a:{color:"white",textDecoration:"none","&:hover":{color:"links"}}}},Object(o.c)("li",{sx:{paddingLeft:["1rem","0rem !important","0.5rem !important","0.5 !important"]}},Object(o.c)("a",{sx:{textDecoration:"none",color:"white"},href:"https://www.eclipse.org/",rel:"noopener noreferrer",target:"_blank"},"Eclipse Foundation Website ")),Object(o.c)("li",null,Object(o.c)("a",{sx:{textDecoration:"none",color:"white"},href:"https://www.eclipse.org/legal/privacy.php",rel:"noopener noreferrer",target:"_blank"},"Privacy Policy")),Object(o.c)("li",null,Object(o.c)("a",{sx:{textDecoration:"none",color:"white"},href:"https://www.eclipse.org/legal/termsofuse.php",rel:"noopener noreferrer",target:"_blank"},"Terms of Use")),Object(o.c)("li",null,Object(o.c)("a",{sx:{textDecoration:"none",color:"white"},href:"https://www.eclipse.org/legal/copyright.php",rel:"noopener noreferrer",target:"_blank"},"Copyright Agent")),Object(o.c)("li",null,Object(o.c)("a",{sx:{textDecoration:"none",color:"white"},href:"https://www.eclipse.org/legal/",rel:"noopener noreferrer",target:"_blank"},"Legal")))),Object(o.c)("nav",{sx:{display:["inline","inline","block","block"],flex:"30%"}},Object(o.c)("ul",{sx:{variant:"lists.navRow",justifyContent:["center","flex-end","flex-end","flex-end"]}},Object(o.c)("li",null,Object(o.c)("a",{href:"https://twitter.com/openj9/",rel:"noopener noreferrer",target:"_blank"}," ",Object(o.c)("img",{src:R.a,alt:"Twitter Logo"}))),Object(o.c)("li",null,Object(o.c)("a",{href:"https://github.com/eclipse/openj9",rel:"noopener noreferrer",target:"_blank"}," ",Object(o.c)("img",{src:Y.a,alt:"GitHub Logo"}))),Object(o.c)("li",null,Object(o.c)("a",{href:"https://openj9.slack.com/",rel:"noopener noreferrer",target:"_blank"},Object(o.c)("img",{src:P.a,alt:"Slack logo"}))),Object(o.c)("li",null,Object(o.c)("a",{href:"https://stackoverflow.com/search?q=%23OpenJ9",rel:"noopener noreferrer",target:"_blank"},Object(o.c)("img",{src:G.a,alt:"Stack Overflow logo"}))))))},V=n("cLBj"),X=n("TJpk"),K=function(e){var t=e.title,n=e.description,r=V.data.site.siteMetadata,i=r.defaultTitle,o=r.titleTemplate,l=r.defaultDescription,u=r.siteUrl,c=r.twitterUsername,s={title:t||i,description:n||l,image:r.defaultImage,url:""+u};return Object(a.c)(X.Helmet,{title:s.title,titleTemplate:o},Object(a.c)("meta",{name:"description",content:s.description}),Object(a.c)("meta",{name:"image",content:s.image}),s.url&&Object(a.c)("meta",{property:"og:url",content:s.url}),s.title&&Object(a.c)("meta",{property:"og:title",content:s.title}),s.description&&Object(a.c)("meta",{property:"og:description",content:s.description}),s.image&&Object(a.c)("meta",{property:"og:image",content:s.image}),Object(a.c)("meta",{name:"twitter:card",content:"summary_large_image"}),c&&Object(a.c)("meta",{name:"twitter:creator",content:c}),s.title&&Object(a.c)("meta",{name:"twitter:title",content:s.title}),s.description&&Object(a.c)("meta",{name:"twitter:description",content:s.description}),Object(a.c)("link",{rel:"stylesheet",type:"text/css",href:"//www.eclipse.org/eclipse.org-common/themes/solstice/public/stylesheets/vendor/cookieconsent/cookieconsent.min.css"}),Object(a.c)("script",{src:"//www.eclipse.org/eclipse.org-common/themes/solstice/public/javascript/vendor/cookieconsent/default.min.js"}))},J=K;K.defaultProps={title:null,description:null};var q=function(e){return Object(a.c)(J,{title:e.title,description:e.description})},$=function(){return Object(o.c)("nav",{sx:{display:["flex","flex","none","none"],justifyContent:"center",alignItems:"center",position:"fixed",width:"100%",bottom:"0",backgroundColor:"white",height:"3rem",boxShadow:"0 10px 30px grey",zIndex:"9999"}},Object(o.c)("ul",{sx:{variant:"lists.navRow",li:{a:{color:"black",textDecoration:"none"}},justifyContent:"space-evenly",width:"100%"}},Object(o.c)("li",null,Object(o.c)(C.Link,{to:"/"},"Home")),Object(o.c)("li",null,Object(o.c)(C.Link,{to:"/about"},"About")," "),Object(o.c)("li",null,Object(o.c)("a",{href:"https://www.eclipse.org/openj9/docs/",rel:"noopener noreferrer",target:"_blank"},"Docs")," "),Object(o.c)("li",null,Object(o.c)(C.Link,{to:"/performance"},"Performance")," "),Object(o.c)("li",null,Object(o.c)(C.Link,{to:"/news"},"News")," ")))};t.a=function(e){var t=e.children,n=e.isHome,r=e.title,i=e.description;return Object(a.c)(v,{theme:A},Object(a.c)(a.a,{styles:function(e){return{"*":{padding:0,margin:0}}}}),Object(a.c)(q,{title:r,description:i}),Object(a.c)(F,{isHome:n}),Object(a.c)($,null),t,Object(a.c)(Z,null))}},Fy0m:function(e,t){e.exports="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjRweCIgaGVpZ2h0PSIyNHB4IiB2aWV3Qm94PSIwIDAgNjUgNzAiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5zdGFja292ZXJmbG93LWxvZ288L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0iI0ZGRkZGRiIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0ic3RhY2tvdmVyZmxvdy1sb2dvIiBmaWxsLXJ1bGU9Im5vbnplcm8iPgogICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgZmlsbD0iI0ZGRkZGRiIgcG9pbnRzPSI1NC4yNDE3MjY2IDYzLjc3MDIyNjUgNTQuMjQxNzI2NiA0NSA2MSA0NSA2MSA3MCAwIDcwIDAgNDUgNi43NTgyNzMzOCA0NSA2Ljc1ODI3MzM4IDYzLjc3MDIyNjUiPjwvcG9seWdvbj4KICAgICAgICAgICAgPHBhdGggZD0iTTE0LjcwNzEwNTcsNDMuNjQyNzU2NyBMNDguMTE3ODUxLDUwLjA4NzIwMTEgTDQ5LjUzMjA2MjQsNDMuODg3NDgyNCBMMTYuMTIxMzE3MiwzNy40NDMwMzggTDE0LjcwNzEwNTcsNDMuNjQyNzU2NyBMMTQuNzA3MTA1Nyw0My42NDI3NTY3IFogTTE5LjEyNjUxNjUsMjguOTU5MjEyNCBMNTAuMDYyMzkxNyw0Mi4yNTU5Nzc1IEw1Mi44OTA4MTQ2LDM2LjU0NTcxMDMgTDIxLjk1NDkzOTMsMjMuMTY3MzY5OSBMMTkuMTI2NTE2NSwyOC45NTkyMTI0IFogTTI3LjcwMDE3MzMsMTQuOTI4MjcgTDUzLjk1MTQ3MzEsMzUuMDc3MzU1OCBMNTguMjgyNDk1NywzMC4yNjQ0MTYzIEwzMi4wMzExOTU4LDEwLjExNTMzMDUgTDI3LjcwMDE3MzMsMTQuOTI4MjcgTDI3LjcwMDE3MzMsMTQuOTI4MjcgWiBNNDQuNjcwNzEwNiwwIEwzOS4xOTA2NDEyLDMuNzUyNDYxMzIgTDU5LjUxOTkzMDcsMjkuMDQwNzg3NiBMNjUsMjUuMjg4MzI2MyBMNDQuNjcwNzEwNiwwIFogTTE0LDU4IEw0OC4xMTc4NTEsNTggTDQ4LjExNzg1MSw1MS43MTg3MDYgTDE0LDUxLjcxODcwNiBMMTQsNTggWiIgaWQ9IlNoYXBlIiBmaWxsPSIjRkZGRkZGIj48L3BhdGg+CiAgICAgICAgPC9nPgogICAgPC9nPgo8L3N2Zz4KCgo="},Gytx:function(e,t,n){n("2Spj"),n("rGqo"),n("yt8O"),n("Btvt"),n("RW0V"),e.exports=function(e,t,n,r){var i=n?n.call(r,e,t):void 0;if(void 0!==i)return!!i;if(e===t)return!0;if("object"!=typeof e||!e||"object"!=typeof t||!t)return!1;var o=Object.keys(e),a=Object.keys(t);if(o.length!==a.length)return!1;for(var l=Object.prototype.hasOwnProperty.bind(t),u=0;u<o.length;u++){var c=o[u];if(!l(c))return!1;var s=e[c],f=t[c];if(!1===(i=n?n.call(r,s,f,c):void 0)||void 0===i&&s!==f)return!1}return!0}},ITVs:function(e){e.exports=JSON.parse('{"a":"10.0.27"}')},JAXw:function(e,t){e.exports="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIyNXB4IiB2aWV3Qm94PSIwIDAgMjUgMjUiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5Ud2l0dGVyPC90aXRsZT4KICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPgogICAgPGcgaWQ9IlBhZ2UtMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9IlR3aXR0ZXIiIGZpbGwtcnVsZT0ibm9uemVybyI+CiAgICAgICAgICAgIDxnIGlkPSJ0d2l0dGVyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjAwMDAwMCwgMC4yOTg4NzkpIj4KICAgICAgICAgICAgICAgIDxlbGxpcHNlIGlkPSJPdmFsLXBhdGgiIGZpbGw9IiM0MzQzNDMiIGN4PSIxMi41MDAyMjEyIiBjeT0iMTIuMjcyNzI3MyIgcng9IjEyLjUiIHJ5PSIxMi4yNzI3MjczIj48L2VsbGlwc2U+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTIuNTAwMjIxMiwwIEMxOS40MDM3ODA2LDAgMjUuMDAwMjIxMiw1LjQ5NDY4NzE2IDI1LjAwMDIyMTIsMTIuMjcyNzI3MyBDMjUuMDAwMjIxMiwxOS4wNTA3Njc0IDE5LjQwMzc4MDYsMjQuNTQ1NDU0NSAxMi41MDAyMjEyLDI0LjU0NTQ1NDUgQzUuNTk2NjYxODcsMjQuNTQ1NDU0NSAwLjAwMDIyMTIzODkzOCwxOS4wNTA3Njc0IDAuMDAwMjIxMjM4OTM4LDEyLjI3MjcyNzMgQzAuMDAwMjIxMjM4OTM4LDUuNDk0Njg3MTYgNS41OTY2NjE4NywwIDEyLjUwMDIyMTIsMCBaIE0xNS4xMDM0MzMzLDYuODE4MTgxODIgQzEzLjQ2NTM4MDIsNi44MTgxODE4MiAxMi4xMzY4NDA0LDguMDkyMTI0MTEgMTIuMTM2ODQwNCw5LjY2Mjg1OTk2IEMxMi4xMzY4NDA0LDkuODg1ODI2MzggMTIuMTYzMTY3OCwxMC4xMDI4NTI3IDEyLjIxNDA1MjgsMTAuMzExMTgxIEM5Ljc0ODU2NjA0LDEwLjE5MjU5MDggNy41NjI1MDQxLDkuMDYwMTUwNTQgNi4wOTkyMjk3Niw3LjMzODU3ODIzIEM1Ljg0MzkyMDAzLDcuNzU4NjI5MTUgNS42OTc0NTk4NSw4LjI0NzYyNzgxIDUuNjk3NDU5ODUsOC43Njg4NzI4MSBDNS42OTc0NTk4NSw5Ljc1NTU2ODE3IDYuMjIxNTc0ODksMTAuNjI2NjQzNCA3LjAxNzE1MDExLDExLjEzNjY0NDcgQzYuNTMxMDg4MTcsMTEuMTIyMDA2NSA2LjA3MzM0NDgsMTAuOTk0MDgxOSA1LjY3MzU2NjA0LDEwLjc4MDQ1IEw1LjY3MzM0NDgsMTAuODE2NTE0OSBMNS42NzMzNDQ4LDEwLjgxNjUxNDkgQzUuNjczMzQ0OCwxMi4xOTQ4MzM1IDYuNjk2MzUzNjUsMTMuMzQ0NDU3NyA4LjA1MzIxMjA2LDEzLjYwNTYxMDYgQzcuODA0NTM5NSwxMy42NzA5NTE5IDcuNTQxOTI4ODgsMTMuNzA1NTMxOCA3LjI3MTc5NjEzLDEzLjcwNTUzMTggQzcuMDgwMjAzMjEsMTMuNzA1NTMxOCA2Ljg5NDU4Mzc0LDEzLjY4NzkyMzYgNi43MTM2MTAyOSwxMy42NTQ4Mjg3IEM3LjA5MTA0MzkyLDE0Ljc4NDcyMzIgOC4xODYzOTc5LDE1LjYwNzIxNjkgOS40ODQ4NDkyMywxNS42MzAzNDA5IEM4LjQ2OTM2MjUsMTYuMzkzNDMzNCA3LjE5MDM4MDIsMTYuODQ4MDY0MiA1LjgwMDExNDcyLDE2Ljg0ODA2NDIgQzUuNTYxMTc2NjYsMTYuODQ4MDY0MiA1LjMyNDQ1MSwxNi44MzQ2OTkgNS4wOTI4MTM4MywxNi44MDgxODA2IEM2LjQwNDk4MTk3LDE3LjYxNTYxMTggNy45NjQ3MTY0OSwxOC4wODYzNjU4IDkuNjM5OTM3NzMsMTguMDg2MzY1OCBDMTUuMDk2NTc0OSwxOC4wODYzNjU4IDE4LjA4MDY0NTcsMTMuNzUxNzc5OCAxOC4wODA2NDU3LDkuOTkyMzI0MTQgQzE4LjA4MDY0NTcsOS44NjkwNjY3NyAxOC4wNzc3Njk2LDkuNzQ2MjMzNyAxOC4wNzIwMTc0LDkuNjI0NDYxMzcgQzE4LjY1MjEwNTksOS4yMjM1MDM2OCAxOS4xNTQ5ODIsOC43MjI2MjQ3OCAxOS41NTI1NDgzLDguMTUyMTYxNjkgQzE5LjAyMDY4OTksOC4zNzgzMTAzMiAxOC40NDg1NjYsOC41MzEyNjgyNSAxNy44NDg1NjYsOC41OTk1Nzk1NiBDMTguNDYxMTc2Nyw4LjI0NzYyNzgxIDE4LjkzMTMwOTQsNy42OTA3NDIxMyAxOS4xNTMyMTIxLDcuMDI2MDg1ODEgQzE4LjU3OTk4Miw3LjM1MjE1NTYzIDE3Ljk0NDgwNSw3LjU4ODY5OTQ2IDE3LjI2OTM2MjUsNy43MTYxOTk3NiBDMTYuNzI4MjEyMSw3LjE2MzU1NzAyIDE1Ljk1NzE5NDQsNi44MTgxODE4MiAxNS4xMDM0MzMzLDYuODE4MTgxODIgWiIgaWQ9IkNvbWJpbmVkLVNoYXBlIiBmaWxsPSIjRkZGRkZGIj48L3BhdGg+CiAgICAgICAgICAgIDwvZz4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg=="},JMMV:function(e,t,n){"use strict";var r=n("2A+t");n("qKvR");t.a=function(e){var t=e.children,n=e.primary,i=e.width;return Object(r.c)("article",{sx:{minHeight:"200px",boxShadow:n?"cardShadow":null,borderRadius:"card",backgroundColor:"white",color:"darkText",marginY:5,marginX:2,width:i,display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"center"}},t)}},MXbp:function(e,t,n){"use strict";n("rGqo"),n("yt8O"),n("Btvt"),n("RW0V"),n("91GP"),n("8+KV");var r=n("2A+t"),i=n("ZdEh"),o=n("q1tI"),a=n.n(o),l=n("qKvR"),u=(n("2Spj"),n("f3/d"),n("HAE/"),n("WLL4"),n("jm62"),n("0l/t"),n("ioFf"),n("lSNA")),c=n.n(u),s=n("9uj6"),f=n("SIPS"),d=n("MiSq"),M=s.a,p=function(e){return"theme"!==e&&"innerRef"!==e},g=function(e){return"string"==typeof e&&e.charCodeAt(0)>96?M:p};function y(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function N(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?y(n,!0).forEach((function(t){c()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):y(n).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var T=function e(t,n){var r,i,a;void 0!==n&&(r=n.label,a=n.target,i=t.__emotion_forwardProp&&n.shouldForwardProp?function(e){return t.__emotion_forwardProp(e)&&n.shouldForwardProp(e)}:n.shouldForwardProp);var u=t.__emotion_real===t,c=u&&t.__emotion_base||t;"function"!=typeof i&&u&&(i=t.__emotion_forwardProp);var s=i||g(c),M=!s("as");return function(){var p=arguments,y=u&&void 0!==t.__emotion_styles?t.__emotion_styles.slice(0):[];if(void 0!==r&&y.push("label:"+r+";"),null==p[0]||void 0===p[0].raw)y.push.apply(y,p);else{0,y.push(p[0][0]);for(var T=p.length,D=1;D<T;D++)y.push(p[D],p[0][D])}var j=Object(l.d)((function(e,t,n){return Object(o.createElement)(l.b.Consumer,null,(function(r){var l=M&&e.as||c,u="",p=[],N=e;if(null==e.theme){for(var T in N={},e)N[T]=e[T];N.theme=r}"string"==typeof e.className?u=Object(f.a)(t.registered,p,e.className):null!=e.className&&(u=e.className+" ");var D=Object(d.a)(y.concat(p),t.registered,N);Object(f.b)(t,D,"string"==typeof l);u+=t.key+"-"+D.name,void 0!==a&&(u+=" "+a);var j=M&&void 0===i?g(l):s,m={};for(var I in e)M&&"as"===I||j(I)&&(m[I]=e[I]);return m.className=u,m.ref=n||e.innerRef,Object(o.createElement)(l,m)}))}));return j.displayName=void 0!==r?r:"Styled("+("string"==typeof c?c:c.displayName||c.name||"Component")+")",j.defaultProps=t.defaultProps,j.__emotion_real=j,j.__emotion_base=c,j.__emotion_styles=y,j.__emotion_forwardProp=i,Object.defineProperty(j,"toString",{value:function(){return"."+a}}),j.withComponent=function(t,r){return e(t,void 0!==r?N({},n||{},{},r):n).apply(void 0,y)},j}}.bind();["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","circle","clipPath","defs","ellipse","foreignObject","g","image","line","linearGradient","mask","path","pattern","polygon","polyline","radialGradient","rect","stop","svg","text","tspan"].forEach((function(e){T[e]=T(e)}));var D=T;n("V+eJ");function j(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function m(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function I(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?m(Object(n),!0).forEach((function(t){j(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):m(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function h(e,t){if(null==e)return{};var n,r,i=function(e,t){if(null==e)return{};var n,r,i={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var w=a.a.createContext({}),E=function(e){var t=a.a.useContext(w),n=t;return e&&(n="function"==typeof e?e(t):I({},t,{},e)),n},b=function(e){var t=E(e.components);return a.a.createElement(w.Provider,{value:t},e.children)},L={inlineCode:"code",wrapper:function(e){var t=e.children;return a.a.createElement(a.a.Fragment,{},t)}},x=Object(o.forwardRef)((function(e,t){var n=e.components,r=e.mdxType,i=e.originalType,o=e.parentName,l=h(e,["components","mdxType","originalType","parentName"]),u=E(n),c=r,s=u["".concat(o,".").concat(c)]||u[c]||L[c]||i;return n?a.a.createElement(s,I({ref:t},l,{components:n})):a.a.createElement(s,I({ref:t},l))}));x.displayName="MDXCreateElement",n.d(t,"b",(function(){return v})),n.d(t,"a",(function(){return C}));var z={inlineCode:"code",thematicBreak:"hr",root:"div"},O=function(e){return function(t){return Object(i.a)(Object(i.b)(t.theme,"styles."+e))(t.theme)}},v=D("div")(O("div")),A={};["p","b","i","a","h1","h2","h3","h4","h5","h6","img","pre","code","ol","ul","li","blockquote","hr","em","table","tr","th","td","em","strong","del","inlineCode","thematicBreak","div","root"].forEach((function(e){var t;A[e]=D(z[t=e]||t)(O(e)),v[e]=A[e]}));var C=function(e){var t,n,i=e.components,o=e.children,a=E();return Object(r.c)(b,{components:(t=Object.assign({},a,i),n=Object.assign({},A),Object.keys(t).forEach((function(e){n[e]=D(t[e])(O(e))})),n),children:o})}},OGtf:function(e,t,n){var r=n("XKFU"),i=n("eeVq"),o=n("vhPU"),a=/"/g,l=function(e,t,n,r){var i=String(o(e)),l="<"+t;return""!==n&&(l+=" "+n+'="'+String(r).replace(a,"&quot;")+'"'),l+">"+i+"</"+t+">"};e.exports=function(e,t){var n={};n[e]=t(l),r(r.P+r.F*i((function(){var t=""[e]('"');return t!==t.toLowerCase()||t.split('"').length>3})),"String",n)}},PE4B:function(e,t,n){"use strict";n("DNiP"),n("8+KV"),n("rGqo"),n("yt8O"),n("RW0V"),n("0l/t"),n("bWfx"),n("LK8F"),n("rE2o"),n("ioFf"),n("a1Th"),n("h7Nl"),n("Btvt");var r=function(e){return function(e){return!!e&&"object"==typeof e}(e)&&!function(e){var t=Object.prototype.toString.call(e);return"[object RegExp]"===t||"[object Date]"===t||function(e){return e.$$typeof===i}(e)}(e)};var i="function"==typeof Symbol&&Symbol.for?Symbol.for("react.element"):60103;function o(e,t){return!1!==t.clone&&t.isMergeableObject(e)?s((n=e,Array.isArray(n)?[]:{}),e,t):e;var n}function a(e,t,n){return e.concat(t).map((function(e){return o(e,n)}))}function l(e){return Object.keys(e).concat(function(e){return Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(e).filter((function(t){return e.propertyIsEnumerable(t)})):[]}(e))}function u(e,t){try{return t in e}catch(n){return!1}}function c(e,t,n){var r={};return n.isMergeableObject(e)&&l(e).forEach((function(t){r[t]=o(e[t],n)})),l(t).forEach((function(i){(function(e,t){return u(e,t)&&!(Object.hasOwnProperty.call(e,t)&&Object.propertyIsEnumerable.call(e,t))})(e,i)||(u(e,i)&&n.isMergeableObject(t[i])?r[i]=function(e,t){if(!t.customMerge)return s;var n=t.customMerge(e);return"function"==typeof n?n:s}(i,n)(e[i],t[i],n):r[i]=o(t[i],n))})),r}function s(e,t,n){(n=n||{}).arrayMerge=n.arrayMerge||a,n.isMergeableObject=n.isMergeableObject||r,n.cloneUnlessOtherwiseSpecified=o;var i=Array.isArray(t);return i===Array.isArray(e)?i?n.arrayMerge(e,t,n):c(e,t,n):o(t,n)}s.all=function(e,t){if(!Array.isArray(e))throw new Error("first argument should be an array");return e.reduce((function(e,n){return s(e,n,t)}),{})};var f=s;e.exports=f},Q4rR:function(e,t){e.exports="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIyNXB4IiB2aWV3Qm94PSIwIDAgMjUgMjUiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5HaXRIdWI8L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0iR2l0SHViIiBmaWxsPSIjRkZGRkZGIiBmaWxsLXJ1bGU9Im5vbnplcm8iPgogICAgICAgICAgICA8ZyBpZD0iZ2l0aHViLWxvZ28iPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTIzLjMyMzIwOSw2LjM1NjM4NTg4IEMyMi4yMDU0MjQzLDQuNDI4ODY0OTMgMjAuNjg5MjIwNywyLjkwMjg0MzkxIDE4Ljc3NDE5OTMsMS43Nzc5Nzg1OCBDMTYuODU4ODkyOCwwLjY1MzA1NTg3MyAxNC43Njc5NDkxLDAuMDkwNzM3OTUzMyAxMi40OTk4ODYsMC4wOTA3Mzc5NTMzIEMxMC4yMzIxMDc5LDAuMDkwNzM3OTUzMyA4LjE0MDQ4MDEzLDAuNjUzMjI3OTkzIDYuMjI1NTcyNjksMS43Nzc5Nzg1OCBDNC4zMTAzODAyMSwyLjkwMjc4NjU0IDIuNzk0MjMzNjcsNC40Mjg4NjQ5MyAxLjY3NjQ0ODk5LDYuMzU2Mzg1ODggQzAuNTU4ODM1MzMzLDguMjgzODQ5NDUgMCwxMC4zODg2NTQ2IDAsMTIuNjcwNzQzOSBDMCwxNS40MTIwNTEgMC43OTQ2NzE0ODMsMTcuODc3MTA0NSAyLjM4NDQxMzQ5LDIwLjA2NjUzNTUgQzMuOTczOTg0NDksMjIuMjU2MTM4OCA2LjAyNzQ3NDg4LDIzLjc3MTI1ODggOC41NDQ3MTM2NywyNC42MTIwNjc4IEM4LjgzNzcyNzQsMjQuNjY2ODAyMiA5LjA1NDYzNzM3LDI0LjYyODMwNDUgOS4xOTU2NzE2MSwyNC40OTc1NTAzIEM5LjMzNjc2Mjg1LDI0LjM2NjYyMzkgOS40MDcyMjI5NiwyNC4yMDI2NTAzIDkuNDA3MjIyOTYsMjQuMDA2MzE4MSBDOS40MDcyMjI5NiwyMy45NzM1NTc5IDkuNDA0NDI5NjQsMjMuNjc4ODMwMSA5LjM5OTAxNDAxLDIzLjEyMTc5MDUgQzkuMzkzNDI3MzcsMjIuNTY0NzUxIDkuMzkwODA1MDcsMjIuMDc4Nzk3MiA5LjM5MDgwNTA3LDIxLjY2NDE1ODcgTDkuMDE2NDQyOTcsMjEuNzI5MzM1MSBDOC43Nzc3NTY1LDIxLjc3MzM0MDUgOC40NzY2NDc4MywyMS43OTE5ODY5IDguMTEzMTE2OTgsMjEuNzg2NzA4NiBDNy43NDk3NTcxNSwyMS43ODE2MDIzIDcuMzcyNTQ0NzMsMjEuNzQzMjc2OCA2Ljk4MTk5Mjc3LDIxLjY3MjAxODkgQzYuNTkxMjY5NzksMjEuNjAxMzkyMSA2LjIyNzg1Mjk1LDIxLjQzNzU5MDcgNS44OTE0NTcyMiwyMS4xODA5NTg5IEM1LjU1NTIzMjUyLDIwLjkyNDMyNzEgNS4zMTY1NDYwNCwyMC41ODg0MDUxIDUuMTc1NDU0OCwyMC4xNzM3MDkzIEw1LjAxMjcwMTA2LDE5Ljc5Njc2NTIgQzQuOTA0MjE3NTcsMTkuNTQ1ODEzNCA0LjczMzQyNTkxLDE5LjI2NzAzNTUgNC41MDAwOTgwNSwxOC45NjE0NjQxIEM0LjI2Njc3MDE5LDE4LjY1NTYwNTggNC4wMzA4MjAwMywxOC40NDgyNTc5IDMuNzkyMTMzNTUsMTguMzM5MDc2MSBMMy42NzgxNzc0MywxOC4yNTY5NzQ2IEMzLjYwMjI0NDY5LDE4LjIwMjQxMjMgMy41MzE3ODQ1OCwxOC4xMzY2MDQ5IDMuNDY2NjI2MDgsMTguMDYwMjQwOCBDMy40MDE1MjQ1OCwxNy45ODM4NzY2IDMuMzUyNzgzOTcsMTcuOTA3NDU1MSAzLjMyMDIzMzIzLDE3LjgzMDkxODggQzMuMjg3NjI1NDcsMTcuNzU0MzI1MSAzLjMxNDY0NjU4LDE3LjY5MTUwMTEgMy40MDE1ODE1OSwxNy42NDIyMTcyIEMzLjQ4ODUxNjYsMTcuNTkyOTMzNCAzLjY0NTYyNjY4LDE3LjU2OTAwODYgMy44NzM1OTU5MywxNy41NjkwMDg2IEw0LjE5ODk4OTM5LDE3LjYxNzk0ODIgQzQuNDE2MDEzMzcsMTcuNjYxNzI0MiA0LjY4NDQ1NzI3LDE3Ljc5MjQ3ODUgNS4wMDQ2NjMxNCwxOC4wMTEwMTQzIEM1LjMyNDY5Nzk4LDE4LjIyOTM3NzkgNS41ODc3ODMyNywxOC41MTMyNjIxIDUuNzkzOTc2LDE4Ljg2MjU1MjEgQzYuMDQzNjY0NzUsMTkuMzEwNDA5OSA2LjM0NDQ4ODM4LDE5LjY1MTY2NzYgNi42OTczMDE5OSwxOS44ODY0OTc0IEM3LjA0OTgzMDU4LDIwLjEyMTMyNzMgNy40MDUyNjY0OSwyMC4yMzg1NDE0IDcuNzYzMjY3NzEsMjAuMjM4NTQxNCBDOC4xMjEyNjg5MiwyMC4yMzg1NDE0IDguNDMwNDcyNTIsMjAuMjExMjMxNiA4LjY5MDk5MjUxLDIwLjE1Njg5ODkgQzguOTUxMjI3NDcsMjAuMTAyMjc5MyA5LjE5NTM4NjU3LDIwLjAyMDE3NzcgOS40MjMzNTU4MiwxOS45MTEwNTMzIEM5LjUyMTAwODA2LDE5LjE3OTA4MTkgOS43ODY4ODY2NywxOC42MTY3NjM5IDEwLjIyMDc2MzYsMTguMjIzNjk3OSBDOS42MDIzNTY0MiwxOC4xNTgyOTIxIDkuMDQ2MzcxNDIsMTguMDU5NzgxOCA4LjU1MjUyMzU3LDE3LjkyODc5OCBDOC4wNTg5NjA3NSwxNy43OTc2NDIxIDcuNTQ4OTIzMDMsMTcuNTg0Nzg2MyA3LjAyMjc1MjQ2LDE3LjI4OTY1NjkgQzYuNDk2Mjk2ODUsMTYuOTk0OTI5MSA2LjA1OTU2OTU4LDE2LjYyODk0MzQgNS43MTI0NTY2MiwxNi4xOTIzMzA5IEM1LjM2NTI4NjY1LDE1Ljc1NTQ4ODkgNS4wODAzNjc4NSwxNS4xODE5ODMxIDQuODU4MDk5MjYsMTQuNDcyMzMgQzQuNjM1NzE2NjYsMTMuNzYyMzkgNC41MjQ0OTY4NiwxMi45NDM0NDAzIDQuNTI0NDk2ODYsMTIuMDE1MjUxNCBDNC41MjQ0OTY4NiwxMC42OTM2NTIzIDQuOTUzMTg2MjEsOS41NjkwMTY0MiA1LjgxMDM5Mzg5LDguNjQwNzEyNzggQzUuNDA4ODM5NjcsNy42NDcxMTgwNyA1LjQ0Njc0OTAzLDYuNTMzMjY4NDYgNS45MjQyMzYsNS4yOTkyNzg2OCBDNi4yMzg5MTIyMiw1LjIwMDg4MzA4IDYuNzA1NTY3OTQsNS4yNzQ3MjI4MSA3LjMyMzk3NTE0LDUuNTIwMzM4ODcgQzcuOTQyNDk2MzQsNS43NjYwNjk2OCA4LjM5NTM1NjQ3LDUuOTc2NTczMTQgOC42ODMwMTE1OSw2LjE1MTEwMzQxIEM4Ljk3MDY2NjcsNi4zMjU1NzYzIDkuMjAxMTQ0MjQsNi40NzM0Mjc4NyA5LjM3NDc4NjIzLDYuNTkzMzM4NTQgQzEwLjM4NDA4NzQsNi4zMDk1MTE3MSAxMS40MjU2NTQzLDYuMTY3NTY5NjEgMTIuNDk5NzcyLDYuMTY3NTY5NjEgQzEzLjU3Mzg4OTYsNi4xNjc1Njk2MSAxNC42MTU2ODQ2LDYuMzA5NTExNzEgMTUuNjI1MDQyOCw2LjU5MzMzODU0IEwxNi4yNDM1MDcsNi4yMDAzODcyNiBDMTYuNjY2NDM4Niw1LjkzODE5MDI1IDE3LjE2NTg3MzEsNS42OTc5MDk5MyAxNy43NDA2MTMzLDUuNDc5NDg4OTIgQzE4LjMxNTY5NTUsNS4yNjExODI2NiAxOC43NTU0NDQxLDUuMjAxMDU1MiAxOS4wNTk0MDMxLDUuMjk5NDUwOCBDMTkuNTQ3NDkzMyw2LjUzMzQ5Nzk1IDE5LjU5MDk4OTMsNy42NDcyOTAxOSAxOS4xODkzMjExLDguNjQwODg0OSBDMjAuMDQ2NDcxNyw5LjU2OTE4ODU0IDIwLjQ3NTMzMjEsMTAuNjk0MTExMiAyMC40NzUzMzIxLDEyLjAxNTQyMzUgQzIwLjQ3NTMzMjEsMTIuOTQzNjEyNCAyMC4zNjM3MTMzLDEzLjc2NTE0MzkgMjAuMTQxNjcyNywxNC40ODA1MzQ0IEMxOS45MTkzNDcxLDE1LjE5NjAzOTYgMTkuNjMxOTc3LDE1Ljc2ODk3MTcgMTkuMjc5NDQ4NSwxNi4yMDA1MzUzIEMxOC45MjY1MjA4LDE2LjYzMjA0MTYgMTguNDg3MDAwMiwxNi45OTUxNTg2IDE3Ljk2MDgyOTcsMTcuMjg5ODI5MSBDMTcuNDM0NTQ1MSwxNy41ODQ3MjkgMTYuOTI0MzM2MywxNy43OTc1ODQ4IDE2LjQzMDc3MzUsMTcuOTI4NzQwNiBDMTUuOTM2OTgyNywxOC4wNTk4OTY1IDE1LjM4MDk5NzcsMTguMTU4NDY0MiAxNC43NjI1OTA1LDE4LjIyMzk4NDggQzE1LjMyNjYxMzQsMTguNzE1MjE2OSAxNS42MDg2ODE5LDE5LjQ5MDYyMDEgMTUuNjA4NjgxOSwyMC41NDk4NTAxIEwxNS42MDg2ODE5LDI0LjAwNTg1OTIgQzE1LjYwODY4MTksMjQuMjAyMTkxNCAxNS42NzY1MTk3LDI0LjM2NjEwNzUgMTUuODEyMzA5MywyNC40OTcwOTEzIEMxNS45NDc5Mjc5LDI0LjYyNzg0NTUgMTYuMTYyMTAxNiwyNC42NjYzNDMyIDE2LjQ1NTExNTMsMjQuNjExNTUxNSBDMTguOTcyNjk2MSwyMy43NzA4NTcyIDIxLjAyNjE4NjUsMjIuMjU1Njc5OCAyMi42MTU3MDA1LDIwLjA2NjA3NjYgQzI0LjIwNTA0MzUsMTcuODc2NjQ1NSAyNSwxNS40MTE1OTIgMjUsMTIuNjcwMjg0OSBDMjQuOTk5NDI5OSwxMC4zODg0ODI1IDI0LjQ0MDMwOTYsOC4yODM4NDk0NSAyMy4zMjMyMDksNi4zNTYzODU4OCBaIiBpZD0iU2hhcGUiPjwvcGF0aD4KICAgICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+"},QCnb:function(e,t,n){"use strict";e.exports=n("+wdc")},TJpk:function(e,t,n){n("LK8F"),n("dZ+Y"),n("rGqo"),n("yt8O"),n("Btvt"),n("RW0V"),n("8+KV"),n("/SS/"),n("hHhE"),n("V+eJ"),n("HAE/"),n("91GP"),t.__esModule=!0,t.Helmet=void 0;var r=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),o=f(n("q1tI")),a=f(n("17x9")),l=f(n("8+s/")),u=f(n("bmMU")),c=n("v1p5"),s=n("hFT/");function f(e){return e&&e.__esModule?e:{default:e}}function d(e,t){var n={};for(var r in e)t.indexOf(r)>=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}function M(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function p(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}var g,y,N,T=(0,l.default)(c.reducePropsToState,c.handleClientStateChange,c.mapStateOnServer)((function(){return null})),D=(g=T,N=y=function(e){function t(){return M(this,t),p(this,e.apply(this,arguments))}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),t.prototype.shouldComponentUpdate=function(e){return!(0,u.default)(this.props,e)},t.prototype.mapNestedChildrenToProps=function(e,t){if(!t)return null;switch(e.type){case s.TAG_NAMES.SCRIPT:case s.TAG_NAMES.NOSCRIPT:return{innerHTML:t};case s.TAG_NAMES.STYLE:return{cssText:t}}throw new Error("<"+e.type+" /> elements are self-closing and can not contain children. Refer to our API for more information.")},t.prototype.flattenArrayTypeChildren=function(e){var t,n=e.child,i=e.arrayTypeChildren,o=e.newChildProps,a=e.nestedChildren;return r({},i,((t={})[n.type]=[].concat(i[n.type]||[],[r({},o,this.mapNestedChildrenToProps(n,a))]),t))},t.prototype.mapObjectTypeChildren=function(e){var t,n,i=e.child,o=e.newProps,a=e.newChildProps,l=e.nestedChildren;switch(i.type){case s.TAG_NAMES.TITLE:return r({},o,((t={})[i.type]=l,t.titleAttributes=r({},a),t));case s.TAG_NAMES.BODY:return r({},o,{bodyAttributes:r({},a)});case s.TAG_NAMES.HTML:return r({},o,{htmlAttributes:r({},a)})}return r({},o,((n={})[i.type]=r({},a),n))},t.prototype.mapArrayTypeChildrenToProps=function(e,t){var n=r({},t);return Object.keys(e).forEach((function(t){var i;n=r({},n,((i={})[t]=e[t],i))})),n},t.prototype.warnOnInvalidChildren=function(e,t){return!0},t.prototype.mapChildrenToProps=function(e,t){var n=this,r={};return o.default.Children.forEach(e,(function(e){if(e&&e.props){var i=e.props,o=i.children,a=d(i,["children"]),l=(0,c.convertReactPropstoHtmlAttributes)(a);switch(n.warnOnInvalidChildren(e,o),e.type){case s.TAG_NAMES.LINK:case s.TAG_NAMES.META:case s.TAG_NAMES.NOSCRIPT:case s.TAG_NAMES.SCRIPT:case s.TAG_NAMES.STYLE:r=n.flattenArrayTypeChildren({child:e,arrayTypeChildren:r,newChildProps:l,nestedChildren:o});break;default:t=n.mapObjectTypeChildren({child:e,newProps:t,newChildProps:l,nestedChildren:o})}}})),t=this.mapArrayTypeChildrenToProps(r,t)},t.prototype.render=function(){var e=this.props,t=e.children,n=d(e,["children"]),i=r({},n);return t&&(i=this.mapChildrenToProps(t,i)),o.default.createElement(g,i)},i(t,null,[{key:"canUseDOM",set:function(e){g.canUseDOM=e}}]),t}(o.default.Component),y.propTypes={base:a.default.object,bodyAttributes:a.default.object,children:a.default.oneOfType([a.default.arrayOf(a.default.node),a.default.node]),defaultTitle:a.default.string,defer:a.default.bool,encodeSpecialCharacters:a.default.bool,htmlAttributes:a.default.object,link:a.default.arrayOf(a.default.object),meta:a.default.arrayOf(a.default.object),noscript:a.default.arrayOf(a.default.object),onChangeClientState:a.default.func,script:a.default.arrayOf(a.default.object),style:a.default.arrayOf(a.default.object),title:a.default.string,titleAttributes:a.default.object,titleTemplate:a.default.string},y.defaultProps={defer:!0,encodeSpecialCharacters:!0},y.peek=g.peek,y.rewind=function(){var e=g.rewind();return e||(e=(0,c.mapStateOnServer)({baseTag:[],bodyAttributes:{},encodeSpecialCharacters:!0,htmlAttributes:{},linkTags:[],metaTags:[],noscriptTags:[],scriptTags:[],styleTags:[],title:"",titleAttributes:{}})),e},N);D.renderStatic=D.rewind,t.Helmet=D,t.default=D},TwYP:function(e,t){e.exports="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNzlweCIgaGVpZ2h0PSIzM3B4IiB2aWV3Qm94PSIwIDAgNzkgMzMiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5Mb2dvPC90aXRsZT4KICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPgogICAgPGcgaWQ9IlBhZ2UtMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9IkxvZ28iIGZpbGwtcnVsZT0ibm9uemVybyI+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMC4wNDUyMzE4LDE5LjQ2MTIzMzcgQzkuMjQwNjc1MjUsMjAuNjk4NDMyOCA4LjEyNjE5NTA0LDIxLjMxNjY4NzggNi43MDA3Nzc4OSwyMS4zMTY2ODc4IEM1LjMxNTQ1ODI5LDIxLjMxNjY4NzggNC4yMDg2NTAxNywyMC43MTkxMTAzIDMuMzgwMjA4NzgsMTkuNTIzODE3NCBDMi41NTIyMDE2NiwxOC4zMjgyNDg5IDIuMTM4MDUzMzUsMTYuNzc4NDA3MSAyLjEzODA1MzM1LDE0Ljg3MzMyNzMgQzIuMTM4MDUzMzUsMTIuOTIyNzU3MSAyLjU0ODE0ODQ4LDExLjM0Mzk2NyAzLjM2ODMzODc1LDEwLjEzNzIzMjYgQzQuMTg4NjczNzgsOC45MzA2MzYxMiA1LjI5NTE5MjM4LDguMzI2OTkzMjQgNi42ODg3NjMxLDguMzI2OTkzMjQgQzguMDY2NTU1MzcsOC4zMjY5OTMyNCA5LjE3MTE5MjE0LDguODg1MjgzNjUgMTAuMDAzMzk3MiwxMC4wMDA0ODYgQzEwLjgzNTYwMjMsMTEuMTE2Mzc3NSAxMS4yNTE3NzcyLDEyLjY3NjI4MjIgMTEuMjUxNzc3MiwxNC42Nzk2NDg4IEMxMS4yNTE3NzcyLDE2LjYzMDM1NjggMTAuODQ5NDk4OSwxOC4yMjQxNzI1IDEwLjA0NTIzMTgsMTkuNDYxMjMzNyBNNi43MTI3OTI2OCw2LjczNDY5Mzg4IEM0LjY5MDExMDI1LDYuNzM0NjkzODggMy4wNjU2NTI5Myw3LjUwMTQxMjcgMS44MzkyNzU5NSw5LjAzNDAyMzI0IEMwLjYxMzE4ODQ4OSwxMC41NjY3NzE2IDAsMTIuNTA5NDg0NCAwLDE0Ljg2MTg4NTggQzAsMTcuMTE1NzI0OCAwLjU4NTM5NTI0MywxOS4wMTg1OTkxIDEuNzU2MDQwOTcsMjAuNTcwMDk1IEMyLjkyNjU0MTk1LDIyLjEyMjAwNDQgNC41NTg4MTYxMiwyMi44OTc5NTkyIDYuNjUzMDA4MjUsMjIuODk3OTU5MiBDOC43NzkxOTE1NywyMi44OTc5NTkyIDEwLjQzMzQ2ODcsMjIuMDgwMDk4MiAxMS42MTYyNzQsMjAuNDQ1MDY1NSBDMTIuNzk4NTAwMiwxOC44MDk3NTcxIDEzLjM4OTgzMDUsMTYuODkxNDQzNyAxMy4zODk4MzA1LDE0LjY5MTIyODEgQzEzLjM4OTgzMDUsMTIuMzk5NjE4MyAxMi43ODA1NTA0LDEwLjUwMDQ2NiAxMS41NjIyNzk4LDguOTkzOTA5MDQgQzEwLjM0Mzg2NDUsNy40ODgwNDEzIDguNzI3MzY4NzQsNi43MzQ2OTM4OCA2LjcxMjc5MjY4LDYuNzM0NjkzODgiIGlkPSJTaGFwZSIgZmlsbD0iIzVEQTdBMyI+PC9wYXRoPgogICAgICAgICAgICA8cGF0aCBkPSJNMjIuOTc0MzgxNywyMS4zNjc1NDcyIEMyMi4zMTQxOTk5LDIyLjA3MDg5MDkgMjEuNTU1MzY4NiwyMi40MjMxMzExIDIwLjY5OTU0OTUsMjIuNDIzMTMxMSBDMTkuOTYwMDU1MywyMi40MjMxMzExIDE5LjI1MDkyNjQsMjIuMTMwOTk0OCAxOC41Njk3NDU3LDIxLjU0NjU4MDEgQzE3Ljg4ODI2MjksMjAuOTYzMDE3OSAxNy41MTMzMDM4LDIwLjIyMzAxNTEgMTcuMzYyMjMyNSwxOS4zMjc5OTI0IEwxNy4zNjIyMzI1LDE1Ljk4NjA0NCBDMTcuNjY0Mzc1MiwxNS4xNzMxNDkxIDE3Ljk2OTM4ODIsMTQuNDgxNDU2OCAxOC41ODg0Nzg2LDEzLjkxMDk2NjggQzE5LjIwNzU2ODksMTMuMzQwNDc2OSAxOS45MDY3MjcxLDEzLjA1NTE2MDkgMjAuNjg3OTE3LDEzLjA1NTE2MDkgQzIxLjY3NjgzLDEzLjA1NTE2MDkgMjIuNDcwNDA3NywxMy40NTk2OTAxIDIzLjA2ODgwMTMsMTQuMjY4NjA2NSBDMjMuNjY2ODkyNywxNS4wNzc1MjI4IDIzLjk2NjAxNCwxNi4yMjg0NDg5IDIzLjk2NjAxNCwxNy43MjE1MjY5IEMyMy45NjYwMTQsMTkuNDQ4OTEwNyAyMy42MzUxNjc3LDIwLjY2NDYyOTcgMjIuOTc0MzgxNywyMS4zNjc1NDcyIE0yMS4xNjI3MzQyLDExLjQ0ODk3OTYgQzE5LjQwMzM1NzQsMTEuNDQ4OTc5NiAxOC4xMTc1ODkyLDEyLjMyNDUzNiAxNy4yMTExNjEyLDE0LjA3NDc5NjIgTDE3LjIxMTE2MTIsMTEuNjk4MjA0OCBMMTUuMzk4MzA1MSwxMS42OTgyMDQ4IEwxNS4zOTgzMDUxLDI3LjYxMjI0NDkgTDE3LjM2MjIzMjUsMjcuNjEyMjQ0OSBMMTcuMzYyMjMyNSwyMS44MjQ5MzM3IEMxOC4yNjg2NjA1LDIzLjIzOTQzNjEgMTkuNTA4OTU2MiwyMy45NDcwNDI1IDIxLjA4NzY1MTcsMjMuOTQ3MDQyNSBDMjIuNTU4OTM1NSwyMy45NDcwNDI1IDIzLjc2MjgyMywyMy4zNzk2Nzg2IDI0LjcwMjAzMzUsMjIuMjQ1NTE5MSBDMjUuNjQwNzkwOCwyMS4xMTA3OTEyIDI2LjExMDE2OTUsMTkuNTc3NTAxOCAyNi4xMTAxNjk1LDE3LjY0NTM2NjkgQzI2LjExMDE2OTUsMTUuODUzNDc0NCAyNS42NjI5OTgzLDE0LjM3MjkwMDMgMjQuNzUwNTI3NCwxMy4yMDMzNjA0IEMyMy44Mzc2MDMzLDEyLjAzMzY3ODUgMjIuNjQ4MDY3NiwxMS40NDg5Nzk2IDIxLjE2MjczNDIsMTEuNDQ4OTc5NiIgaWQ9IlNoYXBlIiBmaWxsPSIjNURBN0EzIj48L3BhdGg+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMC4yNjM1ODc2LDE2LjM2MzMzNjcgQzMwLjM0MTcwNzYsMTUuMjU4OTg2OCAzMC43MDEzMTY2LDE0LjQwODM2MTMgMzEuMzQxNzAwNiwxMy43NzA0NjExIEMzMS45ODE2NTYxLDEzLjEzMjQyMyAzMi43NjE0Mjc5LDEyLjgwNDAxNjkgMzMuNjgwNzMwMiwxMi44MDQwMTY5IEMzNC4zNjQxMDE2LDEyLjgwNDAxNjkgMzQuOTQ5MDczMiwxMi45NzU3NDMzIDM1LjQzNjUwMiwxMy4zMjkxMzUzIEMzNS45MjM1MDIzLDEzLjY4MTk3NTEgMzYuMjY5NDAxLDE0LjEyNTc4NTcgMzYuNDczNDg0MSwxNC42MjcwMjI1IEMzNi42NzgxMzg1LDE1LjEyODEyMTMgMzYuNzg3NTM1MSwxNS42NzMxMTggMzYuODAzMzg3NiwxNi4zNjMzMzY3IEwzMC4yNjM1ODc2LDE2LjM2MzMzNjcgWiBNMzcuMzc1MjIwMiwxMy4wMzA2ODQ4IEMzNi40MjgzNTQ1LDExLjk5MDI0OTEgMzUuMTc3NDM1LDExLjQ0ODk3OTYgMzMuNjIxNzQ3NSwxMS40NDg5Nzk2IEMzMi4wNDI5MjM5LDExLjQ0ODk3OTYgMzAuNzMwNTkzOCwxMi4wMDI1MzUgMjkuNjg2MDQyNCwxMy4xMzE0NTY3IEMyOC42NDEyMDU0LDE0LjI1OTgyNjIgMjguMTE4NjQ0MSwxNS43MzQ5NjE2IDI4LjExODY0NDEsMTcuNTY2OTQwMSBDMjguMTE4NjQ0MSwxOS4zNjA4MTg0IDI4LjYyMTA2ODQsMjAuODA3Mzc4OCAyOS42MjY5MTY4LDIxLjkxMzM4NTIgQzMwLjYzMjQ3OTYsMjMuMDE5OTQzOCAzMS45NDg1MjMsMjMuNTcxNDI4NiAzMy41NzQ5MDQsMjMuNTcxNDI4NiBDMzQuODA4MjU3MywyMy41NzE0Mjg2IDM1Ljg4MDIyOTIsMjMuMjQ4OTU4NCAzNi43OTE1MzM5LDIyLjYwNDcwODMgQzM3LjcwMzEyNDIsMjEuOTYwNzM0MiAzOC4zMTU4MDIsMjEuMTQ3MzgwNSAzOC42MzAxMzg2LDIwLjE2NDA5NSBMMzYuOTA5OTI3OCwxOS44MjI3MTI4IEMzNi4yODg5NjY3LDIxLjMzMzQ2MzUgMzUuMjIwNTY1MiwyMi4wODkyNTI5IDMzLjcwNDI5NDcsMjIuMDg5MjUyOSBDMzIuODYzNjgzNywyMi4wODkyNTI5IDMyLjA2NjM0NTYsMjEuODI4MDc0MiAzMS4zMTIyODA3LDIxLjIyMDY4MTcgQzMwLjU1ODA3MjksMjAuNjEzMDEzMiAzMC4xODA3NTQ3LDE5LjQwMDI5OSAzMC4xODA3NTQ3LDE3Ljc0Mzc3NDEgTDM4LjgzMDUwODUsMTcuNzQzNzc0MSBDMzguODA2OTQzOSwxNS41MzUwNzQzIDM4LjMyMTgwMDIsMTQuMDcwODQ0MyAzNy4zNzUyMjAyLDEzLjAzMDY4NDggTDM3LjM3NTIyMDIsMTMuMDMwNjg0OCBaIiBpZD0iU2hhcGUiIGZpbGw9IiM1REE3QTMiPjwvcGF0aD4KICAgICAgICAgICAgPHBhdGggZD0iTTQ4LjQzNjA2MzksMTIuMTMxMzMxIEM0Ny43NjA0NDM5LDExLjY3NjU3MTQgNDYuOTE5MzU2NiwxMS40NDg5Nzk2IDQ1Ljk1ODg0MjIsMTEuNDQ4OTc5NiBDNDQuMjkzMDQ0MywxMS40NDg5Nzk2IDQyLjk1MDQ1NjMsMTIuMjgxMTc0IDQxLjg2ODk3LDEzLjk0NTEzODggTDQxLjg2ODk3LDExLjY5NzA2ODggTDQwLjE2OTQ5MTUsMTEuNjk3MDY4OCBMNDAuMTY5NDkxNSwyMy41NzE0Mjg2IEw0Mi4wMjM0NjgxLDIzLjU3MTQyODYgTDQyLjAyMzQ2ODEsMTcuMDk0Mzg3NSBDNDIuMDIzNDY4MSwxNS44NzQwMTQ3IDQyLjM4NTkyMDUsMTQuODg5OTk4MiA0My4wNzg1MzUyLDE0LjE0MzE4NiBDNDMuNzcwNjg2NCwxMy4zOTY3OTggNDQuNjM1NDEyLDEzLjAyMzYwNCA0NS42NTUwOTkxLDEzLjAyMzYwNCBDNDYuMzk0NjgxMiwxMy4wMjM2MDQgNDcuMDQyODAwNSwxMy4yNDUyNTg2IDQ3LjU2MTE0MTUsMTMuNjg4NTY3OSBDNDguMDc5NjM2OSwxNC4xMzE1OTQ0IDQ4LjM1Nzg4NzksMTQuODk3NjMxNyA0OC4zNTc4ODc5LDE1Ljk4NjUzODQgTDQ4LjM1Nzg4NzksMjMuNTcxNDI4NiBMNTAuMjExODY0NCwyMy41NzE0Mjg2IEw1MC4yMTE4NjQ0LDE2Ljc0NDUxODEgQzUwLjIxMTg2NDQsMTUuMjU5Mzc1NSA1MC4wODE0NjgxLDE0LjIzMzA5MTkgNDkuODMwNDA4NywxMy42NjUyNDMyIEM0OS41Nzk2NTg0LDEzLjA5NzM5NDYgNDkuMTExODM4MywxMi41ODYwOTA1IDQ4LjQzNjA2MzksMTIuMTMxMzMxIFoiIGlkPSJTaGFwZSIgZmlsbD0iIzVEQTdBMyI+PC9wYXRoPgogICAgICAgICAgICA8cGF0aCBkPSJNNTcuNzMyOTYwNywxOS4zMjIyNzI0IEM1Ny43MzI5NjA3LDIwLjIxNjkxMjkgNTcuNjY0MDE3MywyMC44NjM1NjU5IDU3LjUyOTgzNDEsMjEuMjYzMjQ2NCBDNTcuMzk1MjIzNiwyMS42NjI0OTE5IDU3LjEzMTQxNTQsMjEuOTg3NjMxMSA1Ni43Mzk0MDY4LDIyLjIzOTM4OTIgQzU2LjM0NzY4MywyMi40OTA4NTczIDU1LjY5NjI4MiwyMi42MTYxNTYzIDU0Ljg2OTM4ODcsMjIuNjE2MTU2MyBDNTQuMjg4MDcwNywyMi42MTYxNTYzIDUzLjc0NDUwMDUsMjIuNTM4NTY5NSA1Mi44ODk4MzA1LDIyLjM4MzI1MSBMNTIuODg5ODMwNSwyMy45MzQ2OTYgQzUzLjc0NDUwMDUsMjQuMTQxMjA3MyA1NC4zNzg4MDgyLDI0LjI0NDg5OCA1NS4wOTc0NDMyLDI0LjI0NDg5OCBDNTYuNDM5NTYsMjQuMjQ0ODk4IDU3LjUzNTEwNDYsMjMuODgyNDg4MSA1OC4zNDc4OTU4LDIzLjE1ODM5MzQgQzU5LjE2MDQwMjEsMjIuNDMzODYzNyA1OS41ODQ3NDU4LDIxLjE1NDkxNSA1OS41ODQ3NDU4LDE5LjMyMTExMjMgTDU5LjU4NDc0NTgsOC43NTUxMDIwNCBMNTcuNzMyOTYwNyw4Ljc1NTEwMjA0IEw1Ny43MzI5NjA3LDE5LjMyMjI3MjQgWiIgaWQ9IlNoYXBlIiBmaWxsPSIjRkZGRkZGIj48L3BhdGg+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik02OS4yNDA4MTE5LDE2LjIyNTg5MDQgQzY4LjU2Njc1NzgsMTYuOTQyNzI2NiA2Ny43MzIxNTUyLDE3LjMwMTIxNiA2Ni43Mzc0MTk4LDE3LjMwMTIxNiBDNjUuODMzODMyNiwxNy4zMDEyMTYgNjUuMDQyMDMzNywxNi45OTE5NDIyIDY0LjM2MTA1MzQsMTYuMzczNTM3MyBDNjMuNjgwMjExNiwxNS43NTQ3MDQzIDYzLjMzOTcyMTUsMTQuOTE0MTg3MiA2My4zMzk3MjE1LDEzLjg1MTI3MjQgQzYzLjMzOTcyMTUsMTIuODYxOTY3MiA2My42NDY4Mjc1LDEyLjAyMjQ0ODUgNjQuMjYwNzYyNiwxMS4zMzQ5OTkxIEM2NC44NzQxNDM1LDEwLjY0NzEyMTYgNjUuNzEwNDA4NCwxMC4zMDMzMjU2IDY2Ljc2OTAwMzEsMTAuMzAzMzI1NiBDNjcuODEzMzI5OCwxMC4zMDMzMjU2IDY4LjY1NDk5NzEsMTAuNjM3ODQ5MSA2OS4yOTM0NTA4LDExLjMwNzYwOTUgQzY5LjkzMjE4MTUsMTEuOTc3MjI3MiA3MC4yNTE0Nzc2LDEyLjc3ODA4NjYgNzAuMjUxNDc3NiwxMy43MDkzMzE3IEM3MC4yNTE0Nzc2LDE0LjY3MDEwNjIgNjkuOTE0MzEyLDE1LjUwOTA1NDIgNjkuMjQwODExOSwxNi4yMjU4OTA0IE03MC44NTQ3NDYzLDEwLjcyNDE1NDggQzY5Ljg4ODI2OTYsOS40MTIwMjM1NyA2OC40OTgwNTAzLDguNzU1MTAyMDQgNjYuNjg0MjI2OCw4Ljc1NTEwMjA0IEM2NS4yMDI1ODIxLDguNzU1MTAyMDQgNjMuOTgzNDM5LDkuMjU3MjQ0MDEgNjMuMDI3NDkwMSwxMC4yNjExIEM2Mi4wNzA5ODcsMTEuMjY1MjQxMyA2MS41OTMyMjAzLDEyLjQ3MjgwNzEgNjEuNTkzMjIwMywxMy44ODQyMjU1IEM2MS41OTMyMjAzLDE1LjI3MzgxNzggNjIuMDQ3OTkyMiwxNi40Mzk1ODYgNjIuOTU4MzY3LDE3LjM4MTY3MjkgQzYzLjg2ODg4MDMsMTguMzIzNjE3IDY0Ljk5NDI0MzIsMTguNzk0ODAzMSA2Ni4zMzQ3MzI3LDE4Ljc5NDgwMzEgQzY4LjIzMzA1NTMsMTguNzk0ODAzMSA2OS42NTUxMzUsMTcuOTAwNzkwNiA3MC42MDA4MzMyLDE2LjExMzA1MTEgQzcwLjU3OTUwMDYsMTguMTU1MTQyNyA3MC4yMjEyNzk1LDE5Ljc3MjI2ODEgNjkuNTI2NTg1NCwyMC45NjM5OTkzIEM2OC44MzEzMzcyLDIyLjE1NjAxNTkgNjcuNzk1ODc1OSwyMi43NTE0NTM2IDY2LjQxOTUwODksMjIuNzUxNDUzNiBDNjUuMDAxNTg0OSwyMi43NTE0NTM2IDYzLjk5MjMwNDUsMjIuMDY1MDAyNyA2My4zOTIzNjAzLDIwLjY5MTM4NzYgTDYxLjk0MjI5ODksMjEuMjM2NjExMSBDNjIuNzA0MTc2OCwyMy4yNDIxODMyIDY0LjE4OTU2MTYsMjQuMjQ0ODk4IDY2LjM5ODczMDQsMjQuMjQ0ODk4IEM2OC4yODk0MzQyLDI0LjI0NDg5OCA2OS43NDY5NzU5LDIzLjQ5NzgxOTEgNzAuNzcwMTA4NiwyMi4wMDM1MTg4IEM3MS43OTMyNDEzLDIwLjUwOTA3NTggNzIuMzA1MDg0NywxOC41NTQ1NzM4IDcyLjMwNTA4NDcsMTYuMTQwMDEyNyBDNzIuMzA1MDg0NywxMy44NDIxNDI2IDcxLjgyMTYzODYsMTIuMDM2ODU2NiA3MC44NTQ3NDYzLDEwLjcyNDE1NDgiIGlkPSJTaGFwZSIgZmlsbD0iI0ZGRkZGRiI+PC9wYXRoPgogICAgICAgICAgICA8cGF0aCBkPSJNNDguODQzNzkwMSwyNC42NDQ3MTU3IEM0OS41NDM5Mzk0LDI1LjkwNTU0OTIgNTAuNDE5NDA5OCwyNy4wOTIxMjI5IDUxLjQ3MDIwMTMsMjguMTY3MjQ1MyBDNTcuNzY4MDE2NSwzNC42MTA5MTgyIDY3Ljk3ODc5MjcsMzQuNjEwOTE4MiA3NC4yNzY2MDc5LDI4LjE2NzI0NTMgQzgwLjU3NDQ2NCwyMS43MjM2MDAzIDgwLjU3NDQ2NCwxMS4yNzY0MDE4IDc0LjI3NjYwNzksNC44MzI3NTY4MyBDNjcuOTc4NzkyNywtMS42MTA5MTg5NCA1Ny43NjgwMTY1LC0xLjYxMDkxODk0IDUxLjQ3MDIwMTMsNC44MzI3NTY4MyBDNDkuNjA2NzAxNiw2LjczOTM5NzA0IDQ4LjI5NDU5ODMsOC45OTY1NjQ4MyA0Ny41MzM4OTgzLDExLjM5NjgyMjkgTDQ4LjM3MDI2NzIsMTEuNzc3ODE5NiBDNDkuMDgzNDMyNSw5LjQ3ODI5OTU2IDUwLjMzMTIyMjcsNy4zMTQ3NjEyMiA1Mi4xMTM2MzM1LDUuNDkxMDg4OTIgQzU4LjA1NjA5NDgsLTAuNTg4OTk5Mjg4IDY3LjY5MDcyMTIsLTAuNTg4OTk5Mjg4IDczLjYzMzE3NTcsNS40OTEwODg5MiBDNzkuNTc1NjcxMiwxMS41NzExNDM2IDc5LjU3NTY3MTIsMjEuNDI4ODU1NyA3My42MzMxNzU3LDI3LjUwODkxNDYgQzY3LjY5MDcyMTIsMzMuNTg4OTkzIDU4LjA1NjA5NDgsMzMuNTg4OTkzIDUyLjExMzYzMzUsMjcuNTA4OTE0NiBDNTEuMTQ0MDY3NywyNi41MTY4OTg3IDUwLjMzMjY5OTgsMjUuNDI0MzI2NyA0OS42Nzk1MTYxLDI0LjI2NDAwNzMgTDQ4Ljg0Mzc5MDEsMjQuNjQ0NzE1NyBaIiBpZD0iU2hhcGUiIGZpbGw9IiM1REE3QTMiPjwvcGF0aD4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg=="},VE45:function(e,t,n){e.exports=n.p+"static/adopt-open-jdk-7072a4c16b356c87671638dba5c860e9.png"},WLL4:function(e,t,n){var r=n("XKFU");r(r.S+r.F*!n("nh4g"),"Object",{defineProperties:n("FJW5")})},ZXdF:function(e,t,n){"use strict";n("tUrg");var r=n("2A+t");n("qKvR");t.a=function(e){var t=e.children,n=e.primary,i=e.link,o=e.target,a=e.widthChanged,l=n?"buttons.primary":"buttons.secondary";return o?Object(r.c)("a",{href:i,rel:"noopener noreferrer",target:"_blank",sx:{variant:l,display:"flex",alignItems:"center",justifyContent:"center",textDecoration:"none",width:a?"220px":"190px"}},t):Object(r.c)("a",{href:i,sx:{variant:l,display:"flex",alignItems:"center",justifyContent:"center",textDecoration:"none",width:a?"220px":"190px"}},t)}},ZdEh:function(e,t,n){"use strict";n.d(t,"b",(function(){return r})),n.d(t,"a",(function(){return f}));n("LK8F"),n("91GP"),n("DNiP"),n("bWfx"),n("KKXr");var r=function(e,t,n,r,i){for(t=t&&t.split?t.split("."):[t],r=0;r<t.length;r++)e=e?e[t[r]]:i;return e===i?n:e},i=[40,52,64].map((function(e){return e+"em"})),o={space:[0,4,8,16,32,64,128,256,512],fontSizes:[12,14,16,20,24,32,48,64,72]},a={bg:"backgroundColor",m:"margin",mt:"marginTop",mr:"marginRight",mb:"marginBottom",ml:"marginLeft",mx:"marginX",my:"marginY",p:"padding",pt:"paddingTop",pr:"paddingRight",pb:"paddingBottom",pl:"paddingLeft",px:"paddingX",py:"paddingY"},l={marginX:["marginLeft","marginRight"],marginY:["marginTop","marginBottom"],paddingX:["paddingLeft","paddingRight"],paddingY:["paddingTop","paddingBottom"],size:["width","height"]},u={color:"colors",backgroundColor:"colors",borderColor:"colors",margin:"space",marginTop:"space",marginRight:"space",marginBottom:"space",marginLeft:"space",marginX:"space",marginY:"space",padding:"space",paddingTop:"space",paddingRight:"space",paddingBottom:"space",paddingLeft:"space",paddingX:"space",paddingY:"space",top:"space",right:"space",bottom:"space",left:"space",gridGap:"space",gridColumnGap:"space",gridRowGap:"space",gap:"space",columnGap:"space",rowGap:"space",fontFamily:"fonts",fontSize:"fontSizes",fontWeight:"fontWeights",lineHeight:"lineHeights",letterSpacing:"letterSpacings",border:"borders",borderTop:"borders",borderRight:"borders",borderBottom:"borders",borderLeft:"borders",borderWidth:"borderWidths",borderStyle:"borderStyles",borderRadius:"radii",borderTopRightRadius:"radii",borderTopLeftRadius:"radii",borderBottomRightRadius:"radii",borderBottomLeftRadius:"radii",borderTopWidth:"borderWidths",borderTopColor:"colors",borderTopStyle:"borderStyles",borderBottomWidth:"borderWidths",borderBottomColor:"colors",borderBottomStyle:"borderStyles",borderLeftWidth:"borderWidths",borderLeftColor:"colors",borderLeftStyle:"borderStyles",borderRightWidth:"borderWidths",borderRightColor:"colors",borderRightStyle:"borderStyles",outlineColor:"colors",boxShadow:"shadows",textShadow:"shadows",zIndex:"zIndices",width:"sizes",minWidth:"sizes",maxWidth:"sizes",height:"sizes",minHeight:"sizes",maxHeight:"sizes",flexBasis:"sizes",size:"sizes",fill:"colors",stroke:"colors"},c=function(e,t){if("number"!=typeof t||t>=0)return r(e,t,t);var n=Math.abs(t),i=r(e,n,n);return"string"==typeof i?"-"+i:-1*i},s=["margin","marginTop","marginRight","marginBottom","marginLeft","marginX","marginY","top","bottom","left","right"].reduce((function(e,t){var n;return Object.assign({},e,((n={})[t]=c,n))}),{}),f=function e(t){return function(n){void 0===n&&(n={});var c=Object.assign({},o,n.theme||n),f={},d=function(e){return function(t){var n={},o=r(t,"breakpoints",i),a=[null].concat(o.map((function(e){return"@media screen and (min-width: "+e+")"})));for(var l in e){var u="function"==typeof e[l]?e[l](t):e[l];if(null!=u)if(Array.isArray(u))for(var c=0;c<u.slice(0,a.length).length;c++){var s=a[c];s?(n[s]=n[s]||{},null!=u[c]&&(n[s][l]=u[c])):n[l]=u[c]}else n[l]=u}return n}}("function"==typeof t?t(c):t)(c);for(var M in d){var p=d[M],g="function"==typeof p?p(c):p;if("variant"!==M)if(g&&"object"==typeof g)f[M]=e(g)(c);else{var y=r(a,M,M),N=r(u,y),T=r(c,N,r(c,y,{})),D=r(s,y,r)(T,g,g);if(l[y])for(var j=l[y],m=0;m<j.length;m++)f[j[m]]=D;else f[y]=D}else{var I=e(r(c,g))(c);f=Object.assign({},f,I)}}return f}}},bmMU:function(e,t,n){"use strict";n("f3/d"),n("SRfc"),n("a1Th"),n("h7Nl"),n("Oyvg"),n("rGqo"),n("yt8O"),n("Btvt"),n("RW0V"),n("LK8F");var r=Array.isArray,i=Object.keys,o=Object.prototype.hasOwnProperty,a="undefined"!=typeof Element;e.exports=function(e,t){try{return function e(t,n){if(t===n)return!0;if(t&&n&&"object"==typeof t&&"object"==typeof n){var l,u,c,s=r(t),f=r(n);if(s&&f){if((u=t.length)!=n.length)return!1;for(l=u;0!=l--;)if(!e(t[l],n[l]))return!1;return!0}if(s!=f)return!1;var d=t instanceof Date,M=n instanceof Date;if(d!=M)return!1;if(d&&M)return t.getTime()==n.getTime();var p=t instanceof RegExp,g=n instanceof RegExp;if(p!=g)return!1;if(p&&g)return t.toString()==n.toString();var y=i(t);if((u=y.length)!==i(n).length)return!1;for(l=u;0!=l--;)if(!o.call(n,y[l]))return!1;if(a&&t instanceof Element&&n instanceof Element)return t===n;for(l=u;0!=l--;)if(!("_owner"===(c=y[l])&&t.$$typeof||e(t[c],n[c])))return!1;return!0}return t!=t&&n!=n}(e,t)}catch(n){if(n.message&&n.message.match(/stack|recursion/i)||-2146828260===n.number)return console.warn("Warning: react-fast-compare does not handle circular references.",n.name,n.message),!1;throw n}}},cLBj:function(e){e.exports=JSON.parse('{"data":{"site":{"id":"Site","siteMetadata":{"defaultTitle":"Eclipse OpenJ9","defaultDescription":"A fast and efficient JVM to power the next generation of Java applications for the cloud.","siteUrl":"https://www.doe.com","twitterUsername":"@openj9","defaultImage":"openj9-logo.svg"}}}}')},fuUq:function(e,t){e.exports="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNTBweCIgaGVpZ2h0PSI3NXB4IiB2aWV3Qm94PSIwIDAgMTU3IDIzMSIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KICAgIDwhLS0gR2VuZXJhdG9yOiBTa2V0Y2ggNjEuMiAoODk2NTMpIC0gaHR0cHM6Ly9za2V0Y2guY29tIC0tPgogICAgPHRpdGxlPmVjbGlwc2VfaW5jdWJhdGlvbl92ZXJ0aWNhbF9zdmc8L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0iZWNsaXBzZV9pbmN1YmF0aW9uX3ZlcnRpY2FsX3N2ZyIgZmlsbC1ydWxlPSJub256ZXJvIj4KICAgICAgICAgICAgPGcgaWQ9Ikdyb3VwIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNy4wMDAwMDAsIDIxNC4wMDAwMDApIiBmaWxsPSIjRkZGRkZGIj4KICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJQYXRoIiBwb2ludHM9IjAuNzUgMC4zNCAxLjkyIDAuMzQgMS45MiAxNi4wMyAwLjc1IDE2LjAzIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSI1LjYyIDAuMzQgNi43MiAwLjM0IDE3LjU1IDEzLjk5IDE3LjU1IDAuMzQgMTguNjcgMC4zNCAxOC42NyAxNi4wMyAxNy44IDE2LjAzIDYuNzUgMi4wOSA2Ljc1IDE2LjAzIDUuNjMgMTYuMDMgNS42MyAwLjM0Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMjEuODYsOC4yMyBMMjEuODYsOC4xOSBDMjEuODYsMy43NSAyNS4xOCwwLjA4IDI5LjcxLDAuMDggQzMyLjUxLDAuMDggMzQuMTksMS4xMSAzNS44MSwyLjU5IEwzNC45OCwzLjQ0IEMzMy42MSwyLjEyIDMyLjA0LDEuMTMgMjkuNjksMS4xMyBDMjUuOTIsMS4xMyAyMy4wOCw0LjIgMjMuMDgsOC4xNSBMMjMuMDgsOC4xOSBDMjMuMDgsMTIuMTYgMjUuOTcsMTUuMjUgMjkuNzEsMTUuMjUgQzMxLjk3LDE1LjI1IDMzLjUyLDE0LjM3IDM1LjExLDEyLjgxIEwzNS44OSwxMy41NyBDMzQuMjMsMTUuMjEgMzIuNDQsMTYuMyAyOS42NiwxNi4zIEMyNS4xOCwxNi4zIDIxLjg2LDEyLjc0IDIxLjg2LDguMjMgWiIgaWQ9IlBhdGgiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0zOC40LDkuNTEgTDM4LjQsMC4zNCBMMzkuNTcsMC4zNCBMMzkuNTcsOS40IEMzOS41NywxMy4xIDQxLjU3LDE1LjIzIDQ0Ljg4LDE1LjIzIEM0OC4wNiwxNS4yMyA1MC4xLDEzLjMgNTAuMSw5LjUxIEw1MC4xLDAuMzQgTDUxLjI3LDAuMzQgTDUxLjI3LDkuMzcgQzUxLjI3LDEzLjg4IDQ4LjY1LDE2LjI3MDAzMTQgNDQuODQsMTYuMjcwMDMxNCBDNDEuMDcsMTYuMjggMzguNCwxMy45IDM4LjQsOS41MSBaIiBpZD0iUGF0aCI+PC9wYXRoPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTU0LjAyLDAuMzQgTDYwLjUsMC4zNCBDNjIuMjcsMC4zNCA2My43MSwwLjg2IDY0LjU4LDEuNzMgQzY1LjIzLDIuMzggNjUuNTksMy4yMSA2NS41OSw0LjIgTDY1LjU5LDQuMjQgQzY1LjU5LDYuMzcgNjQuMiw3LjQ1IDYyLjkyLDcuOTYgQzY0LjgsOC40NSA2Ni40Niw5LjUzIDY2LjQ2LDExLjcgTDY2LjQ2LDExLjc0IEM2Ni40NiwxNC4zNiA2NC4yMiwxNi4wMiA2MC44MywxNi4wMiBMNTQuMDIsMTYuMDIgTDU0LjAyLDAuMzQgTDU0LjAyLDAuMzQgWiBNNjQuNCw0LjMxIEM2NC40LDIuNTggNjIuOTksMS40MiA2MC40OCwxLjQyIEw1NS4xOSwxLjQyIEw1NS4xOSw3LjU4IEw2MC4zNyw3LjU4IEM2Mi43Miw3LjU4IDY0LjQsNi40NCA2NC40LDQuMzUgTDY0LjQsNC4zMSBaIE02MC41LDguNjYgTDU1LjE5LDguNjYgTDU1LjE5LDE0Ljk2IEw2MC44OCwxNC45NiBDNjMuNTcsMTQuOTYgNjUuMjcwMDQ0NCwxMy43MyA2NS4yNzAwNDQ0LDExLjc1IEw2NS4yNzAwNDQ0LDExLjcxIEM2NS4yOCw5Ljc4IDYzLjYsOC42NiA2MC41LDguNjYgWiIgaWQ9IlNoYXBlIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNzYuMjgsMC4yMyBMNzcuNCwwLjIzIEw4NC43MSwxNi4wMyBMODMuNDMsMTYuMDMgTDgxLjQ0LDExLjY0IEw3Mi4xOCwxMS42NCBMNzAuMTksMTYuMDMgTDY4Ljk4LDE2LjAzIEw3Ni4yOCwwLjIzIFogTTgwLjk0LDEwLjU5IEw3Ni44MiwxLjUxIEw3Mi42NywxMC41OSBMODAuOTQsMTAuNTkgWiIgaWQ9IlNoYXBlIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSI5MS4wNSAxLjQyIDg1LjU4IDEuNDIgODUuNTggMC4zNCA5Ny42OCAwLjM0IDk3LjY4IDEuNDIgOTIuMjEgMS40MiA5Mi4yMSAxNi4wMyA5MS4wNCAxNi4wMyA5MS4wNCAxLjQyIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSIxMDEuMjkgMC4zNCAxMDIuNDYgMC4zNCAxMDIuNDYgMTYuMDMgMTAxLjI5IDE2LjAzIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTA1LjkxLDguMjMgTDEwNS45MSw4LjE5IEMxMDUuOTEsMy45MSAxMDkuMDcsMC4wOCAxMTMuODIsMC4wOCBDMTE4LjU3LDAuMDggMTIxLjY5LDMuODcgMTIxLjY5LDguMTUgTDEyMS42OSw4LjE5IEMxMjEuNjksMTIuNDcgMTE4LjUzLDE2LjMgMTEzLjc4LDE2LjMgQzEwOS4wMywxNi4zIDEwNS45MSwxMi41MSAxMDUuOTEsOC4yMyBaIE0xMjAuNDgsOC4yMyBMMTIwLjQ4LDguMTkgQzEyMC40OCw0LjMxIDExNy42NiwxLjEzIDExMy43OCwxLjEzIEMxMDkuOSwxLjEzIDEwNy4xMiw0LjI3IDEwNy4xMiw4LjE1IEwxMDcuMTIsOC4xOSBDMTA3LjEyLDEyLjA3IDEwOS45NCwxNS4yNSAxMTMuODIsMTUuMjUgQzExNy43LDE1LjI1IDEyMC40OCwxMi4xMSAxMjAuNDgsOC4yMyBaIiBpZD0iU2hhcGUiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJQYXRoIiBwb2ludHM9IjEyNC44OSAwLjM0IDEyNS45OSAwLjM0IDEzNi44MiAxMy45OSAxMzYuODIgMC4zNCAxMzcuOTQgMC4zNCAxMzcuOTQgMTYuMDMgMTM3LjA3IDE2LjAzIDEyNi4wMiAyLjA5IDEyNi4wMiAxNi4wMyAxMjQuOSAxNi4wMyAxMjQuOSAwLjM0Ij48L3BvbHlnb24+CiAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgPHBhdGggZD0iTTU2LjY2LDE2Ni4yMyBDNTcuNTEsMTYzLjQ4IDYwLjQzLDE2MS40MyA2My45NCwxNjEuNDMgQzY1LjE0LDE2MS40MyA2Ni4yNSwxNjEuNjkgNjcuMjUsMTYyLjExIEM2OS40NiwxNjAuNjQgNzIuMTksMTU5Ljc2IDc1LjE3LDE1OS43NiBMNzUuMTksMTU5Ljc2IEM3Ni4xMSwxNTcuOSA3OC40OCwxNTYuNTcgODEuMywxNTYuNTcgQzgyLjA0LDE1Ni41NyA4Mi43NSwxNTYuNjcgODMuNDIsMTU2Ljg0IEM4My4zMywxNTQuNTYgODMuNjksMTUyLjE4IDg0LjU1LDE0OS42OCBDODUuNTUsMTQ2Ljc5IDg3LDE0NC4wMyA4OC41MiwxNDEuMjggQzg4LjE3LDEzNy4xNiA4Ny45LDEzMy41IDgyLjc0LDEzMiBDODAuODIsMTMxLjQ0IDc4LjgyLDEzMS4yNyA3Ni44NiwxMzEuMDQgTDc2Ljg1LDEzMS4wNCBMNzYuODUsMTMxLjAzIEM3Ni4wMSwxMzAuOTMgNzUuMTcsMTMwLjgxIDc0LjM1LDEzMC42NSBDNjAuMTgsMTQ1LjQxIDQwLjIsMTA5Ljk3IDQwLjIsMTA5Ljk3IEM4NC4zLDEwMy4xMyA3Ni4wMSwxMjUuNjEgNzYuMDEsMTI1LjYxIEM3Mi44MSwxMjQuMDUgNzEuOTMsMTIyLjA4IDY5LjQ5LDExOS43MyBDNjMuOTIsMTE0LjM4IDUwLjYyLDExMy40NCA1MC42MiwxMTMuNDQgQzY2LjU0LDExNy41MSA2OC43MSwxMjUuMjIgNzQuOTcsMTI3LjY5IEM3Ni4zOSwxMjguMDEgNzcuOSwxMjguMTMgNzkuMzUsMTI4LjI5IEM4Mi4xNSwxMjguNTkgODQuODksMTI5LjExIDg3LjIyLDEzMC42MSBDODkuNjMsMTMyLjE2IDkwLjcxLDEzNC4wOSA5MS4yNiwxMzYuMjYgQzkzLDEzMi45NCA5NC41LDEyOS41NiA5NS4wNywxMjUuOTIgQzk1LjgsMTIxLjI3IDk1LjEzLDExNS44OCA5MS44MywxMTIuMDcgQzg4Ljc4LDEwOC41NSA4NC42NiwxMDUuODkgODEuNCwxMDIuNTIgQzc3LjkyLDk4LjkxIDc1LjYxLDk0LjQ2IDc1LjUyLDg5LjcxIEM3My43Niw4NS44NiA3MC45LDgxLjM5IDY4LjI4LDc5LjY1IEM1Ni45LDkwLjM0IDQxLjksNjIuNTggNDEuOSw2Mi41OCBDNzYuODgsNTcuNyA3MS4xLDc1LjY3IDcxLjEsNzUuNjcgQzYyLjcsNjYuMjggNTIuMzEsNjcuMTIgNTIuMzEsNjcuMTIgQzYwLjcxLDY5Ljc5IDY3LjM0LDc1LjE1IDcxLjIsNzguODMgTDcxLjczLDc5LjM2IEM3My4zLDgxIDc0LjksODIuNzUgNzYuMjQsODQuNjMgQzc3LjYsNzkuNDggODAuNzcsNzIuMjcgODMuMjYsNjcuOTcgQzgzLjI2LDY3Ljk3IDkxLjY2LDUzLjE1IDEwNS44LDQzLjkgQzEwNS44LDQzLjkgOTUuMDIsNDUuMTQgODMuNDEsNjIuODkgQzgzLjQxLDYyLjg5IDY3Ljk5LDM4LjcgMTE3LjgzLDM0LjIzIEMxMTcuODMsMzQuMjMgMTE0LjQsNzguMTcgODcuNDUsNjkuNjMgQzgyLjc3LDc2LjY3IDc5LjcsODQuNzQgODAuMzMsOTAuNDIgQzgwLjk1LDk1Ljk2IDg0LjgzLDk5Ljg2IDg5LjExLDEwMy41IEM5MC4yNSw5Ny42NiA5NC40Niw5Mi42MyAxMDAuNjUsODkuODkgQzEwNS42LDg3LjkyIDExMi45LDg2LjAzIDExOS43Miw4NS42MiBDMTE5LjcyLDg1LjYyIDEwNi4zOSw4Mi41OCA5Ni4yNSw4OS41MSBDOTYuMjUsODkuNTEgOTYuNDIsNjkuMjIgMTMyLjM0LDgzLjk1IEMxMzIuMzQsODMuOTUgMTA2LjM0LDExMC4yOSA5Ny45OSw5NC41OSBDOTQuMDMsOTcuMiA5MS41MywxMDEuNTggOTIuMTgsMTA2LjExIEM5NC41LDEwOC4xNCA5Ni42NiwxMTAuMzMgOTcuOTcsMTEzLjAzIEM5OS44LDExNi44MiAxMDAuNDUsMTIxLjI0IDk5Ljk1LDEyNS4zNSBDOTguOTksMTMzLjI1IDk0LjA1LDEzOS45NyA5MC42NywxNDcuMTQgQzg5LjI5LDE1MC4wNiA4Ny45NywxNTMuMjcgODcuOTUsMTU2LjUxIEM4OS42NCwxNTYuMDQgOTEuNDcsMTU1Ljc4IDkzLjM5LDE1NS43OCBDMTAwLjYyLDE1NS43OCAxMDYuNzEsMTU5LjM3IDEwOC42OCwxNjQuMyBDMTExLjYxLDE2NC42MSAxMTMuOTIsMTY2LjMzIDExNC4zNCwxNjguNTEgQzExNi40NSwxNjkuODEgMTE4LjEyLDE3MS42MyAxMTkuMTMsMTczLjc1IEw1MC41NSwxNzMuNzUgQzUyLjAyLDE3MC42MiA1NC4xNCwxNjcuMTYgNTYuNjYsMTY2LjIzIiBpZD0iUGF0aCIgZmlsbD0iI0Y3OEQyQyI+PC9wYXRoPgogICAgICAgICAgICA8ZyBpZD0iR3JvdXAiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE3LjAwMDAwMCwgMTgyLjAwMDAwMCkiIGZpbGw9IiNGRkZGRkYiPgogICAgICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlBhdGgiIHBvaW50cz0iMC41NCAxLjM5IDE4LjU0IDEuMzkgMTguNTQgNS4yMSA0LjggNS4yMSA0LjggMTEuNTIgMTYuOTcgMTEuNTIgMTYuOTcgMTUuMzMgNC44IDE1LjMzIDQuOCAyMS44NSAxOC43MSAyMS44NSAxOC43MSAyNS42NyAwLjU0IDI1LjY3Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMjEuNTUsMTMuNiBMMjEuNTUsMTMuNTMgQzIxLjU1LDYuNjMgMjYuNzIsMC45NyAzNC4wNywwLjk3IEMzOC41NCwwLjk3IDQxLjI1LDIuNTMgNDMuNTcsNC43NSBMNDAuODMsNy45MSBDMzguODksNi4xMSAzNi44MSw0Ljg5IDM0LjAzLDQuODkgQzI5LjQyLDQuODkgMjYuMDIsOC43MSAyNi4wMiwxMy40NiBMMjYuMDIsMTMuNTMgQzI2LjAyLDE4LjI4IDI5LjM4LDIyLjEzIDM0LjAzLDIyLjEzIEMzNy4wMSwyMi4xMyAzOC45MiwyMC45NSA0MSwxOS4wMSBMNDMuNzQsMjEuNzggQzQxLjIxLDI0LjQyIDM4LjQzLDI2LjA4MDAxMzYgMzMuODksMjYuMDgwMDEzNiBDMjYuODMsMjYuMDkgMjEuNTUsMjAuNTcgMjEuNTUsMTMuNiBaIiBpZD0iUGF0aCI+PC9wYXRoPgogICAgICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlBhdGgiIHBvaW50cz0iNDcuMjIgMS4zOSA1MS40OSAxLjM5IDUxLjQ5IDIxLjc4IDY0LjI1IDIxLjc4IDY0LjI1IDI1LjY2IDQ3LjIyIDI1LjY2Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSI2Ny45MyAxLjM5IDcyLjIgMS4zOSA3Mi4yIDI1LjY3IDY3LjkzIDI1LjY3Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNzcuNjcsMS4zOSBMODcuMjQsMS4zOSBDOTIuOTMsMS4zOSA5Ni40Nyw0LjYyIDk2LjQ3LDkuNTEgTDk2LjQ3LDkuNTggQzk2LjQ3LDE1LjAzIDkyLjEsMTcuODcgODYuNzYsMTcuODcgTDgxLjk0LDE3Ljg3IEw4MS45NCwyNS42NyBMNzcuNjcsMjUuNjcgTDc3LjY3LDEuMzkgWiBNODYuOSwxNC4wMiBDOTAuMTMsMTQuMDIgOTIuMTQsMTIuMjIgOTIuMTQsOS42OCBMOTIuMTQsOS42MSBDOTIuMTQsNi43NyA5MC4wOSw1LjI4IDg2LjksNS4yOCBMODEuOTQsNS4yOCBMODEuOTQsMTQuMDIgTDg2LjksMTQuMDIgWiIgaWQ9IlNoYXBlIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNOTguMjEsMjIuMTMgTDEwMC43OCwxOS4wOCBDMTAzLjEsMjEuMDkgMTA1LjQ2LDIyLjI0IDEwOC40NSwyMi4yNCBDMTExLjA5LDIyLjI0IDExMi43NSwyMC45OSAxMTIuNzUsMTkuMTkgTDExMi43NSwxOS4xMiBDMTEyLjc1LDE3LjM5IDExMS43OCwxNi40NSAxMDcuMjcsMTUuNDEgQzEwMi4xLDE0LjE2IDk5LjE5LDEyLjY0IDk5LjE5LDguMTYgTDk5LjE5LDguMDkgQzk5LjE5LDMuOTMgMTAyLjY2LDEuMDUgMTA3LjQ4LDEuMDUgQzExMS4wMiwxLjA1IDExMy44MywyLjEzIDExNi4yOSw0LjEgTDExNCw3LjMzIEMxMTEuODEsNS43IDEwOS42Myw0LjgzIDEwNy40MSw0LjgzIEMxMDQuOTEsNC44MyAxMDMuNDYsNi4xMSAxMDMuNDYsNy43MSBMMTAzLjQ2LDcuNzggQzEwMy40Niw5LjY1IDEwNC41NywxMC40OSAxMDkuMjUsMTEuNiBDMTE0LjM4LDEyLjg1IDExNy4wMiwxNC42OSAxMTcuMDIsMTguNzEgTDExNy4wMiwxOC43OCBDMTE3LjAyLDIzLjMyIDExMy40NSwyNi4wMyAxMDguMzUsMjYuMDMgQzEwNC42MiwyNi4wMiAxMDEuMTIsMjQuNzMgOTguMjEsMjIuMTMgWiIgaWQ9IlBhdGgiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJQYXRoIiBwb2ludHM9IjEyMC45OSAxLjM5IDEzOC45OSAxLjM5IDEzOC45OSA1LjIxIDEyNS4yNiA1LjIxIDEyNS4yNiAxMS41MiAxMzcuNDMgMTEuNTIgMTM3LjQzIDE1LjMzIDEyNS4yNiAxNS4zMyAxMjUuMjYgMjEuODUgMTM5LjE3IDIxLjg1IDEzOS4xNyAyNS42NyAxMjEgMjUuNjcgMTIxIDEuMzkiPjwvcG9seWdvbj4KICAgICAgICAgICAgPC9nPgogICAgICAgICAgICA8cGF0aCBkPSJNMjEuNjYsMzkuOTkgQzQxLjI2LDkuNDIgODAuNSwtMS4yNSAxMTMuMjMsMTMuNDQgQzExMi41MSwxMi45NCAxMTEuNzgsMTIuNDMgMTExLjAzLDExLjk1IEM3Ny41MiwtOS41NCAzMi45OCwwLjExIDExLjU2LDMzLjUyIEMtOS44Nyw2Ni45MiAtMC4wNiwxMTEuNDMgMzMuNDUsMTMyLjkyIEMzNC4yLDEzMy40IDM0Ljk2LDEzMy44NSAzNS43MiwxMzQuMyBDOC43MywxMTAuNjggMi4wNiw3MC41NiAyMS42NiwzOS45OSIgaWQ9IlBhdGgiIGZpbGw9IiNGNzhEMkMiPjwvcGF0aD4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg=="},"hFT/":function(e,t,n){n("DNiP"),n("rGqo"),n("yt8O"),n("Btvt"),n("RW0V"),n("bWfx"),t.__esModule=!0;t.ATTRIBUTE_NAMES={BODY:"bodyAttributes",HTML:"htmlAttributes",TITLE:"titleAttributes"};var r=t.TAG_NAMES={BASE:"base",BODY:"body",HEAD:"head",HTML:"html",LINK:"link",META:"meta",NOSCRIPT:"noscript",SCRIPT:"script",STYLE:"style",TITLE:"title"},i=(t.VALID_TAG_NAMES=Object.keys(r).map((function(e){return r[e]})),t.TAG_PROPERTIES={CHARSET:"charset",CSS_TEXT:"cssText",HREF:"href",HTTPEQUIV:"http-equiv",INNER_HTML:"innerHTML",ITEM_PROP:"itemprop",NAME:"name",PROPERTY:"property",REL:"rel",SRC:"src"},t.REACT_TAG_MAP={accesskey:"accessKey",charset:"charSet",class:"className",contenteditable:"contentEditable",contextmenu:"contextMenu","http-equiv":"httpEquiv",itemprop:"itemProp",tabindex:"tabIndex"});t.HELMET_PROPS={DEFAULT_TITLE:"defaultTitle",DEFER:"defer",ENCODE_SPECIAL_CHARACTERS:"encodeSpecialCharacters",ON_CHANGE_CLIENT_STATE:"onChangeClientState",TITLE_TEMPLATE:"titleTemplate"},t.HTML_TAG_MAP=Object.keys(i).reduce((function(e,t){return e[i[t]]=t,e}),{}),t.SELF_CLOSING_TAGS=[r.NOSCRIPT,r.SCRIPT,r.STYLE],t.HELMET_ATTRIBUTE="data-react-helmet"},i8i4:function(e,t,n){"use strict";!function e(){if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE){0;try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(t){console.error(t)}}}(),e.exports=n("yl30")},jm62:function(e,t,n){var r=n("XKFU"),i=n("mQtv"),o=n("aCFj"),a=n("EemH"),l=n("8a7r");r(r.S,"Object",{getOwnPropertyDescriptors:function(e){for(var t,n,r=o(e),u=a.f,c=i(r),s={},f=0;c.length>f;)void 0!==(n=u(r,t=c[f++]))&&l(s,t,n);return s}})},mQtv:function(e,t,n){var r=n("kJMx"),i=n("JiEa"),o=n("y3w9"),a=n("dyZX").Reflect;e.exports=a&&a.ownKeys||function(e){var t=r.f(o(e)),n=i.f;return n?t.concat(n(e)):t}},q1tI:function(e,t,n){"use strict";e.exports=n("viRO")},tUrg:function(e,t,n){"use strict";n("OGtf")("link",(function(e){return function(t){return e(this,"a","href",t)}}))},taE0:function(e,t){e.exports="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIyNXB4IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgogPCEtLSBDcmVhdGVkIHdpdGggTWV0aG9kIERyYXcgLSBodHRwOi8vZ2l0aHViLmNvbS9kdW9waXhlbC9NZXRob2QtRHJhdy8gLS0+CgogPGc+CiAgPHRpdGxlPmJhY2tncm91bmQ8L3RpdGxlPgogIDxyZWN0IGZpbGw9Im5vbmUiIGlkPSJjYW52YXNfYmFja2dyb3VuZCIgaGVpZ2h0PSIyNiIgd2lkdGg9IjI2IiB5PSItMSIgeD0iLTEiLz4KICA8ZyBkaXNwbGF5PSJub25lIiBvdmVyZmxvdz0idmlzaWJsZSIgeT0iMCIgeD0iMCIgaGVpZ2h0PSIxMDAlIiB3aWR0aD0iMTAwJSIgaWQ9ImNhbnZhc0dyaWQiPgogICA8cmVjdCBmaWxsPSJ1cmwoI2dyaWRwYXR0ZXJuKSIgc3Ryb2tlLXdpZHRoPSIwIiB5PSIxIiB4PSIxIiBoZWlnaHQ9IjIyIiB3aWR0aD0iMjIiLz4KICA8L2c+CiA8L2c+CiA8Zz4KICA8dGl0bGU+TGF5ZXIgMTwvdGl0bGU+CiAgPGVsbGlwc2Ugcnk9IjExIiByeD0iMTEiIGlkPSJzdmdfMSIgY3k9IjEyIiBjeD0iMTIiIHN0cm9rZT0iI0ZGRiIgZmlsbD0iI0ZGRkZGRiIvPgogIDxzdHlsZSB0cmFuc2Zvcm09Im1hdHJpeCgwLjA2NTE4MjQ5NTU3MzI1MzYyLDAsMCwwLjA2NTE4MjQ5NTU3MzI1MzYyLDAsMCkgIiB0eXBlPSJ0ZXh0L2NzcyI+LnN0MHtmaWxsOiM0MzQzNDM7fTwvc3R5bGU+CiAgPGcgc3Ryb2tlPSJudWxsIiBpZD0ic3ZnXzE5Ij4KICAgPGcgc3Ryb2tlPSJudWxsIiB0cmFuc2Zvcm09Im1hdHJpeCgwLjEzMDE1NTgwODUxODA5NDg2LDAsMCwwLjEzMDE1NTgwODUxODA5NDg2LC02Ljg0OTAwNjQ1MDQwNTQ5OSwtNi44MzE1MDczOTEwMjE5MjQpICIgaWQ9InN2Z182Ij4KICAgIDxnIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z183Ij4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfOCIgZD0ibTExMC4yOTgyOTIsMTYxLjI5MzAxMWMwLDcuMSAtNS44LDEyLjkgLTEyLjksMTIuOXMtMTIuOSwtNS44IC0xMi45LC0xMi45YzAsLTcuMSA1LjgsLTEyLjkgMTIuOSwtMTIuOWwxMi45LDBsMCwxMi45eiIgY2xhc3M9InN0MCIvPgogICAgIDxwYXRoIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z185IiBkPSJtMTE2Ljc5ODI5MiwxNjEuMjkzMDExYzAsLTcuMSA1LjgsLTEyLjkgMTIuOSwtMTIuOXMxMi45LDUuOCAxMi45LDEyLjlsMCwzMi4zYzAsNy4xIC01LjgsMTIuOSAtMTIuOSwxMi45cy0xMi45LC01LjggLTEyLjksLTEyLjljMCwwIDAsLTMyLjMgMCwtMzIuM3oiIGNsYXNzPSJzdDAiLz4KICAgIDwvZz4KICAgIDxnIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z18xMCI+CiAgICAgPHBhdGggc3Ryb2tlPSJudWxsIiBpZD0ic3ZnXzExIiBkPSJtMTI5LjY5ODI5MiwxMDkuNDkzMDExYy03LjEsMCAtMTIuOSwtNS44IC0xMi45LC0xMi45czUuOCwtMTIuOSAxMi45LC0xMi45czEyLjksNS44IDEyLjksMTIuOWwwLDEyLjlsLTEyLjksMHoiIGNsYXNzPSJzdDAiLz4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTIiIGQ9Im0xMjkuNjk4MjkyLDExNS45OTMwMTFjNy4xLDAgMTIuOSw1LjggMTIuOSwxMi45cy01LjgsMTIuOSAtMTIuOSwxMi45bC0zMi4zLDBjLTcuMSwwIC0xMi45LC01LjggLTEyLjksLTEyLjlzNS44LC0xMi45IDEyLjksLTEyLjljMCwwIDMyLjMsMCAzMi4zLDB6IiBjbGFzcz0ic3QwIi8+CiAgICA8L2c+CiAgICA8ZyBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTMiPgogICAgIDxwYXRoIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z18xNCIgZD0ibTE4MS40OTgyOTIsMTI4Ljg5MzAxMWMwLC03LjEgNS44LC0xMi45IDEyLjksLTEyLjljNy4xLDAgMTIuOSw1LjggMTIuOSwxMi45cy01LjgsMTIuOSAtMTIuOSwxMi45bC0xMi45LDBsMCwtMTIuOXoiIGNsYXNzPSJzdDAiLz4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTUiIGQ9Im0xNzQuOTk4MjkyLDEyOC44OTMwMTFjMCw3LjEgLTUuOCwxMi45IC0xMi45LDEyLjljLTcuMSwwIC0xMi45LC01LjggLTEyLjksLTEyLjlsMCwtMzIuM2MwLC03LjEgNS44LC0xMi45IDEyLjksLTEyLjljNy4xLDAgMTIuOSw1LjggMTIuOSwxMi45bDAsMzIuM3oiIGNsYXNzPSJzdDAiLz4KICAgIDwvZz4KICAgIDxnIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z18xNiI+CiAgICAgPHBhdGggc3Ryb2tlPSJudWxsIiBpZD0ic3ZnXzE3IiBkPSJtMTYyLjA5ODI5MiwxODAuNjkzMDExYzcuMSwwIDEyLjksNS44IDEyLjksMTIuOWMwLDcuMSAtNS44LDEyLjkgLTEyLjksMTIuOWMtNy4xLDAgLTEyLjksLTUuOCAtMTIuOSwtMTIuOWwwLC0xMi45bDEyLjksMHoiIGNsYXNzPSJzdDAiLz4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTgiIGQ9Im0xNjIuMDk4MjkyLDE3NC4xOTMwMTFjLTcuMSwwIC0xMi45LC01LjggLTEyLjksLTEyLjljMCwtNy4xIDUuOCwtMTIuOSAxMi45LC0xMi45bDMyLjMsMGM3LjEsMCAxMi45LDUuOCAxMi45LDEyLjljMCw3LjEgLTUuOCwxMi45IC0xMi45LDEyLjlsLTMyLjMsMHoiIGNsYXNzPSJzdDAiLz4KICAgIDwvZz4KICAgPC9nPgogIDwvZz4KIDwvZz4KPC9zdmc+"},v1p5:function(e,t,n){(function(e){n("dZ+Y"),n("KKXr"),n("eM6i"),n("8+KV"),n("LK8F"),n("V+eJ"),n("rGqo"),n("yt8O"),n("Btvt"),n("RW0V"),n("0l/t"),n("bWfx"),n("DNiP"),n("pIFo"),n("91GP"),n("rE2o"),n("ioFf"),t.__esModule=!0,t.warn=t.requestAnimationFrame=t.reducePropsToState=t.mapStateOnServer=t.handleClientStateChange=t.convertReactPropstoHtmlAttributes=void 0;var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},o=u(n("q1tI")),a=u(n("MgzW")),l=n("hFT/");function u(e){return e&&e.__esModule?e:{default:e}}var c,s=function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return!1===t?String(e):String(e).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#x27;")},f=function(e){var t=y(e,l.TAG_NAMES.TITLE),n=y(e,l.HELMET_PROPS.TITLE_TEMPLATE);if(n&&t)return n.replace(/%s/g,(function(){return t}));var r=y(e,l.HELMET_PROPS.DEFAULT_TITLE);return t||r||void 0},d=function(e){return y(e,l.HELMET_PROPS.ON_CHANGE_CLIENT_STATE)||function(){}},M=function(e,t){return t.filter((function(t){return void 0!==t[e]})).map((function(t){return t[e]})).reduce((function(e,t){return i({},e,t)}),{})},p=function(e,t){return t.filter((function(e){return void 0!==e[l.TAG_NAMES.BASE]})).map((function(e){return e[l.TAG_NAMES.BASE]})).reverse().reduce((function(t,n){if(!t.length)for(var r=Object.keys(n),i=0;i<r.length;i++){var o=r[i].toLowerCase();if(-1!==e.indexOf(o)&&n[o])return t.concat(n)}return t}),[])},g=function(e,t,n){var i={};return n.filter((function(t){return!!Array.isArray(t[e])||(void 0!==t[e]&&m("Helmet: "+e+' should be of type "Array". Instead found type "'+r(t[e])+'"'),!1)})).map((function(t){return t[e]})).reverse().reduce((function(e,n){var r={};n.filter((function(e){for(var n=void 0,o=Object.keys(e),a=0;a<o.length;a++){var u=o[a],c=u.toLowerCase();-1===t.indexOf(c)||n===l.TAG_PROPERTIES.REL&&"canonical"===e[n].toLowerCase()||c===l.TAG_PROPERTIES.REL&&"stylesheet"===e[c].toLowerCase()||(n=c),-1===t.indexOf(u)||u!==l.TAG_PROPERTIES.INNER_HTML&&u!==l.TAG_PROPERTIES.CSS_TEXT&&u!==l.TAG_PROPERTIES.ITEM_PROP||(n=u)}if(!n||!e[n])return!1;var s=e[n].toLowerCase();return i[n]||(i[n]={}),r[n]||(r[n]={}),!i[n][s]&&(r[n][s]=!0,!0)})).reverse().forEach((function(t){return e.push(t)}));for(var o=Object.keys(r),u=0;u<o.length;u++){var c=o[u],s=(0,a.default)({},i[c],r[c]);i[c]=s}return e}),[]).reverse()},y=function(e,t){for(var n=e.length-1;n>=0;n--){var r=e[n];if(r.hasOwnProperty(t))return r[t]}return null},N=(c=Date.now(),function(e){var t=Date.now();t-c>16?(c=t,e(t)):setTimeout((function(){N(e)}),0)}),T=function(e){return clearTimeout(e)},D="undefined"!=typeof window?window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||N:e.requestAnimationFrame||N,j="undefined"!=typeof window?window.cancelAnimationFrame||window.webkitCancelAnimationFrame||window.mozCancelAnimationFrame||T:e.cancelAnimationFrame||T,m=function(e){return console&&"function"==typeof console.warn&&console.warn(e)},I=null,h=function(e,t){var n=e.baseTag,r=e.bodyAttributes,i=e.htmlAttributes,o=e.linkTags,a=e.metaTags,u=e.noscriptTags,c=e.onChangeClientState,s=e.scriptTags,f=e.styleTags,d=e.title,M=e.titleAttributes;b(l.TAG_NAMES.BODY,r),b(l.TAG_NAMES.HTML,i),E(d,M);var p={baseTag:L(l.TAG_NAMES.BASE,n),linkTags:L(l.TAG_NAMES.LINK,o),metaTags:L(l.TAG_NAMES.META,a),noscriptTags:L(l.TAG_NAMES.NOSCRIPT,u),scriptTags:L(l.TAG_NAMES.SCRIPT,s),styleTags:L(l.TAG_NAMES.STYLE,f)},g={},y={};Object.keys(p).forEach((function(e){var t=p[e],n=t.newTags,r=t.oldTags;n.length&&(g[e]=n),r.length&&(y[e]=p[e].oldTags)})),t&&t(),c(e,g,y)},w=function(e){return Array.isArray(e)?e.join(""):e},E=function(e,t){void 0!==e&&document.title!==e&&(document.title=w(e)),b(l.TAG_NAMES.TITLE,t)},b=function(e,t){var n=document.getElementsByTagName(e)[0];if(n){for(var r=n.getAttribute(l.HELMET_ATTRIBUTE),i=r?r.split(","):[],o=[].concat(i),a=Object.keys(t),u=0;u<a.length;u++){var c=a[u],s=t[c]||"";n.getAttribute(c)!==s&&n.setAttribute(c,s),-1===i.indexOf(c)&&i.push(c);var f=o.indexOf(c);-1!==f&&o.splice(f,1)}for(var d=o.length-1;d>=0;d--)n.removeAttribute(o[d]);i.length===o.length?n.removeAttribute(l.HELMET_ATTRIBUTE):n.getAttribute(l.HELMET_ATTRIBUTE)!==a.join(",")&&n.setAttribute(l.HELMET_ATTRIBUTE,a.join(","))}},L=function(e,t){var n=document.head||document.querySelector(l.TAG_NAMES.HEAD),r=n.querySelectorAll(e+"["+l.HELMET_ATTRIBUTE+"]"),i=Array.prototype.slice.call(r),o=[],a=void 0;return t&&t.length&&t.forEach((function(t){var n=document.createElement(e);for(var r in t)if(t.hasOwnProperty(r))if(r===l.TAG_PROPERTIES.INNER_HTML)n.innerHTML=t.innerHTML;else if(r===l.TAG_PROPERTIES.CSS_TEXT)n.styleSheet?n.styleSheet.cssText=t.cssText:n.appendChild(document.createTextNode(t.cssText));else{var u=void 0===t[r]?"":t[r];n.setAttribute(r,u)}n.setAttribute(l.HELMET_ATTRIBUTE,"true"),i.some((function(e,t){return a=t,n.isEqualNode(e)}))?i.splice(a,1):o.push(n)})),i.forEach((function(e){return e.parentNode.removeChild(e)})),o.forEach((function(e){return n.appendChild(e)})),{oldTags:i,newTags:o}},x=function(e){return Object.keys(e).reduce((function(t,n){var r=void 0!==e[n]?n+'="'+e[n]+'"':""+n;return t?t+" "+r:r}),"")},z=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return Object.keys(e).reduce((function(t,n){return t[l.REACT_TAG_MAP[n]||n]=e[n],t}),t)},O=function(e,t,n){switch(e){case l.TAG_NAMES.TITLE:return{toComponent:function(){return e=t.title,n=t.titleAttributes,(r={key:e})[l.HELMET_ATTRIBUTE]=!0,i=z(n,r),[o.default.createElement(l.TAG_NAMES.TITLE,i,e)];var e,n,r,i},toString:function(){return function(e,t,n,r){var i=x(n),o=w(t);return i?"<"+e+" "+l.HELMET_ATTRIBUTE+'="true" '+i+">"+s(o,r)+"</"+e+">":"<"+e+" "+l.HELMET_ATTRIBUTE+'="true">'+s(o,r)+"</"+e+">"}(e,t.title,t.titleAttributes,n)}};case l.ATTRIBUTE_NAMES.BODY:case l.ATTRIBUTE_NAMES.HTML:return{toComponent:function(){return z(t)},toString:function(){return x(t)}};default:return{toComponent:function(){return function(e,t){return t.map((function(t,n){var r,i=((r={key:n})[l.HELMET_ATTRIBUTE]=!0,r);return Object.keys(t).forEach((function(e){var n=l.REACT_TAG_MAP[e]||e;if(n===l.TAG_PROPERTIES.INNER_HTML||n===l.TAG_PROPERTIES.CSS_TEXT){var r=t.innerHTML||t.cssText;i.dangerouslySetInnerHTML={__html:r}}else i[n]=t[e]})),o.default.createElement(e,i)}))}(e,t)},toString:function(){return function(e,t,n){return t.reduce((function(t,r){var i=Object.keys(r).filter((function(e){return!(e===l.TAG_PROPERTIES.INNER_HTML||e===l.TAG_PROPERTIES.CSS_TEXT)})).reduce((function(e,t){var i=void 0===r[t]?t:t+'="'+s(r[t],n)+'"';return e?e+" "+i:i}),""),o=r.innerHTML||r.cssText||"",a=-1===l.SELF_CLOSING_TAGS.indexOf(e);return t+"<"+e+" "+l.HELMET_ATTRIBUTE+'="true" '+i+(a?"/>":">"+o+"</"+e+">")}),"")}(e,t,n)}}}};t.convertReactPropstoHtmlAttributes=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return Object.keys(e).reduce((function(t,n){return t[l.HTML_TAG_MAP[n]||n]=e[n],t}),t)},t.handleClientStateChange=function(e){I&&j(I),e.defer?I=D((function(){h(e,(function(){I=null}))})):(h(e),I=null)},t.mapStateOnServer=function(e){var t=e.baseTag,n=e.bodyAttributes,r=e.encode,i=e.htmlAttributes,o=e.linkTags,a=e.metaTags,u=e.noscriptTags,c=e.scriptTags,s=e.styleTags,f=e.title,d=void 0===f?"":f,M=e.titleAttributes;return{base:O(l.TAG_NAMES.BASE,t,r),bodyAttributes:O(l.ATTRIBUTE_NAMES.BODY,n,r),htmlAttributes:O(l.ATTRIBUTE_NAMES.HTML,i,r),link:O(l.TAG_NAMES.LINK,o,r),meta:O(l.TAG_NAMES.META,a,r),noscript:O(l.TAG_NAMES.NOSCRIPT,u,r),script:O(l.TAG_NAMES.SCRIPT,c,r),style:O(l.TAG_NAMES.STYLE,s,r),title:O(l.TAG_NAMES.TITLE,{title:d,titleAttributes:M},r)}},t.reducePropsToState=function(e){return{baseTag:p([l.TAG_PROPERTIES.HREF],e),bodyAttributes:M(l.ATTRIBUTE_NAMES.BODY,e),defer:y(e,l.HELMET_PROPS.DEFER),encode:y(e,l.HELMET_PROPS.ENCODE_SPECIAL_CHARACTERS),htmlAttributes:M(l.ATTRIBUTE_NAMES.HTML,e),linkTags:g(l.TAG_NAMES.LINK,[l.TAG_PROPERTIES.REL,l.TAG_PROPERTIES.HREF],e),metaTags:g(l.TAG_NAMES.META,[l.TAG_PROPERTIES.NAME,l.TAG_PROPERTIES.CHARSET,l.TAG_PROPERTIES.HTTPEQUIV,l.TAG_PROPERTIES.PROPERTY,l.TAG_PROPERTIES.ITEM_PROP],e),noscriptTags:g(l.TAG_NAMES.NOSCRIPT,[l.TAG_PROPERTIES.INNER_HTML],e),onChangeClientState:d(e),scriptTags:g(l.TAG_NAMES.SCRIPT,[l.TAG_PROPERTIES.SRC,l.TAG_PROPERTIES.INNER_HTML],e),styleTags:g(l.TAG_NAMES.STYLE,[l.TAG_PROPERTIES.CSS_TEXT],e),title:f(e),titleAttributes:M(l.ATTRIBUTE_NAMES.TITLE,e)}},t.requestAnimationFrame=D,t.warn=m}).call(this,n("yLpj"))},viRO:function(e,t,n){"use strict";n("2Spj"),n("a1Th"),n("h7Nl"),n("rGqo"),n("yt8O"),n("Btvt"),n("RW0V"),n("LK8F"),n("pIFo"),n("rE2o"),n("ioFf");var r=n("MgzW"),i="function"==typeof Symbol&&Symbol.for,o=i?Symbol.for("react.element"):60103,a=i?Symbol.for("react.portal"):60106,l=i?Symbol.for("react.fragment"):60107,u=i?Symbol.for("react.strict_mode"):60108,c=i?Symbol.for("react.profiler"):60114,s=i?Symbol.for("react.provider"):60109,f=i?Symbol.for("react.context"):60110,d=i?Symbol.for("react.forward_ref"):60112,M=i?Symbol.for("react.suspense"):60113;i&&Symbol.for("react.suspense_list");var p=i?Symbol.for("react.memo"):60115,g=i?Symbol.for("react.lazy"):60116;i&&Symbol.for("react.fundamental"),i&&Symbol.for("react.responder"),i&&Symbol.for("react.scope");var y="function"==typeof Symbol&&Symbol.iterator;function N(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n<arguments.length;n++)t+="&args[]="+encodeURIComponent(arguments[n]);return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}var T={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},D={};function j(e,t,n){this.props=e,this.context=t,this.refs=D,this.updater=n||T}function m(){}function I(e,t,n){this.props=e,this.context=t,this.refs=D,this.updater=n||T}j.prototype.isReactComponent={},j.prototype.setState=function(e,t){if("object"!=typeof e&&"function"!=typeof e&&null!=e)throw Error(N(85));this.updater.enqueueSetState(this,e,t,"setState")},j.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")},m.prototype=j.prototype;var h=I.prototype=new m;h.constructor=I,r(h,j.prototype),h.isPureReactComponent=!0;var w={current:null},E={current:null},b=Object.prototype.hasOwnProperty,L={key:!0,ref:!0,__self:!0,__source:!0};function x(e,t,n){var r,i={},a=null,l=null;if(null!=t)for(r in void 0!==t.ref&&(l=t.ref),void 0!==t.key&&(a=""+t.key),t)b.call(t,r)&&!L.hasOwnProperty(r)&&(i[r]=t[r]);var u=arguments.length-2;if(1===u)i.children=n;else if(1<u){for(var c=Array(u),s=0;s<u;s++)c[s]=arguments[s+2];i.children=c}if(e&&e.defaultProps)for(r in u=e.defaultProps)void 0===i[r]&&(i[r]=u[r]);return{$$typeof:o,type:e,key:a,ref:l,props:i,_owner:E.current}}function z(e){return"object"==typeof e&&null!==e&&e.$$typeof===o}var O=/\/+/g,v=[];function A(e,t,n,r){if(v.length){var i=v.pop();return i.result=e,i.keyPrefix=t,i.func=n,i.context=r,i.count=0,i}return{result:e,keyPrefix:t,func:n,context:r,count:0}}function C(e){e.result=null,e.keyPrefix=null,e.func=null,e.context=null,e.count=0,10>v.length&&v.push(e)}function S(e,t,n){return null==e?0:function e(t,n,r,i){var l=typeof t;"undefined"!==l&&"boolean"!==l||(t=null);var u=!1;if(null===t)u=!0;else switch(l){case"string":case"number":u=!0;break;case"object":switch(t.$$typeof){case o:case a:u=!0}}if(u)return r(i,t,""===n?"."+k(t,0):n),1;if(u=0,n=""===n?".":n+":",Array.isArray(t))for(var c=0;c<t.length;c++){var s=n+k(l=t[c],c);u+=e(l,s,r,i)}else if(null===t||"object"!=typeof t?s=null:s="function"==typeof(s=y&&t[y]||t["@@iterator"])?s:null,"function"==typeof s)for(t=s.call(t),c=0;!(l=t.next()).done;)u+=e(l=l.value,s=n+k(l,c++),r,i);else if("object"===l)throw r=""+t,Error(N(31,"[object Object]"===r?"object with keys {"+Object.keys(t).join(", ")+"}":r,""));return u}(e,"",t,n)}function k(e,t){return"object"==typeof e&&null!==e&&null!=e.key?function(e){var t={"=":"=0",":":"=2"};return"$"+(""+e).replace(/[=:]/g,(function(e){return t[e]}))}(e.key):t.toString(36)}function U(e,t){e.func.call(e.context,t,e.count++)}function P(e,t,n){var r=e.result,i=e.keyPrefix;e=e.func.call(e.context,t,e.count++),Array.isArray(e)?Q(e,r,n,(function(e){return e})):null!=e&&(z(e)&&(e=function(e,t){return{$$typeof:o,type:e.type,key:t,ref:e.ref,props:e.props,_owner:e._owner}}(e,i+(!e.key||t&&t.key===e.key?"":(""+e.key).replace(O,"$&/")+"/")+n)),r.push(e))}function Q(e,t,n,r,i){var o="";null!=n&&(o=(""+n).replace(O,"$&/")+"/"),S(e,P,t=A(t,o,r,i)),C(t)}function Y(){var e=w.current;if(null===e)throw Error(N(321));return e}var _={Children:{map:function(e,t,n){if(null==e)return e;var r=[];return Q(e,r,null,t,n),r},forEach:function(e,t,n){if(null==e)return e;S(e,U,t=A(null,null,t,n)),C(t)},count:function(e){return S(e,(function(){return null}),null)},toArray:function(e){var t=[];return Q(e,t,null,(function(e){return e})),t},only:function(e){if(!z(e))throw Error(N(143));return e}},createRef:function(){return{current:null}},Component:j,PureComponent:I,createContext:function(e,t){return void 0===t&&(t=null),(e={$$typeof:f,_calculateChangedBits:t,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null}).Provider={$$typeof:s,_context:e},e.Consumer=e},forwardRef:function(e){return{$$typeof:d,render:e}},lazy:function(e){return{$$typeof:g,_ctor:e,_status:-1,_result:null}},memo:function(e,t){return{$$typeof:p,type:e,compare:void 0===t?null:t}},useCallback:function(e,t){return Y().useCallback(e,t)},useContext:function(e,t){return Y().useContext(e,t)},useEffect:function(e,t){return Y().useEffect(e,t)},useImperativeHandle:function(e,t,n){return Y().useImperativeHandle(e,t,n)},useDebugValue:function(){},useLayoutEffect:function(e,t){return Y().useLayoutEffect(e,t)},useMemo:function(e,t){return Y().useMemo(e,t)},useReducer:function(e,t,n){return Y().useReducer(e,t,n)},useRef:function(e){return Y().useRef(e)},useState:function(e){return Y().useState(e)},Fragment:l,Profiler:c,StrictMode:u,Suspense:M,createElement:x,cloneElement:function(e,t,n){if(null==e)throw Error(N(267,e));var i=r({},e.props),a=e.key,l=e.ref,u=e._owner;if(null!=t){if(void 0!==t.ref&&(l=t.ref,u=E.current),void 0!==t.key&&(a=""+t.key),e.type&&e.type.defaultProps)var c=e.type.defaultProps;for(s in t)b.call(t,s)&&!L.hasOwnProperty(s)&&(i[s]=void 0===t[s]&&void 0!==c?c[s]:t[s])}var s=arguments.length-2;if(1===s)i.children=n;else if(1<s){c=Array(s);for(var f=0;f<s;f++)c[f]=arguments[f+2];i.children=c}return{$$typeof:o,type:e.type,key:a,ref:l,props:i,_owner:u}},createFactory:function(e){var t=x.bind(null,e);return t.type=e,t},isValidElement:z,version:"16.12.0",__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:{ReactCurrentDispatcher:w,ReactCurrentBatchConfig:{suspense:null},ReactCurrentOwner:E,IsSomeRendererActing:{current:!1},assign:r}},R={default:_},B=R&&_||R;e.exports=B.default||B},yLpj:function(e,t){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(r){"object"==typeof window&&(n=window)}e.exports=n},yl30:function(e,t,n){"use strict";n("wCsR"),n("25dN"),n("Tze0"),n("RW0V"),n("T39b"),n("EK0E"),n("2Spj"),n("eM6i"),n("a1Th"),n("h7Nl"),n("HAE/"),n("KKXr"),n("rGqo"),n("yt8O"),n("Btvt"),n("XfO3"),n("9AAn"),n("pIFo"),n("f3/d"),n("rE2o"),n("ioFf"),n("8+KV"),n("LK8F"),n("V+eJ");var r=n("q1tI"),i=n("MgzW"),o=n("QCnb");function a(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n<arguments.length;n++)t+="&args[]="+encodeURIComponent(arguments[n]);return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}if(!r)throw Error(a(227));var l=null,u={};function c(){if(l)for(var e in u){var t=u[e],n=l.indexOf(e);if(!(-1<n))throw Error(a(96,e));if(!f[n]){if(!t.extractEvents)throw Error(a(97,e));for(var r in f[n]=t,n=t.eventTypes){var i=void 0,o=n[r],c=t,M=r;if(d.hasOwnProperty(M))throw Error(a(99,M));d[M]=o;var p=o.phasedRegistrationNames;if(p){for(i in p)p.hasOwnProperty(i)&&s(p[i],c,M);i=!0}else o.registrationName?(s(o.registrationName,c,M),i=!0):i=!1;if(!i)throw Error(a(98,r,e))}}}}function s(e,t,n){if(M[e])throw Error(a(100,e));M[e]=t,p[e]=t.eventTypes[n].dependencies}var f=[],d={},M={},p={};function g(e,t,n,r,i,o,a,l,u){var c=Array.prototype.slice.call(arguments,3);try{t.apply(n,c)}catch(s){this.onError(s)}}var y=!1,N=null,T=!1,D=null,j={onError:function(e){y=!0,N=e}};function m(e,t,n,r,i,o,a,l,u){y=!1,N=null,g.apply(j,arguments)}var I=null,h=null,w=null;function E(e,t,n){var r=e.type||"unknown-event";e.currentTarget=w(n),function(e,t,n,r,i,o,l,u,c){if(m.apply(this,arguments),y){if(!y)throw Error(a(198));var s=N;y=!1,N=null,T||(T=!0,D=s)}}(r,t,void 0,e),e.currentTarget=null}function b(e,t){if(null==t)throw Error(a(30));return null==e?t:Array.isArray(e)?Array.isArray(t)?(e.push.apply(e,t),e):(e.push(t),e):Array.isArray(t)?[e].concat(t):[e,t]}function L(e,t,n){Array.isArray(e)?e.forEach(t,n):e&&t.call(n,e)}var x=null;function z(e){if(e){var t=e._dispatchListeners,n=e._dispatchInstances;if(Array.isArray(t))for(var r=0;r<t.length&&!e.isPropagationStopped();r++)E(e,t[r],n[r]);else t&&E(e,t,n);e._dispatchListeners=null,e._dispatchInstances=null,e.isPersistent()||e.constructor.release(e)}}function O(e){if(null!==e&&(x=b(x,e)),e=x,x=null,e){if(L(e,z),x)throw Error(a(95));if(T)throw e=D,T=!1,D=null,e}}var v={injectEventPluginOrder:function(e){if(l)throw Error(a(101));l=Array.prototype.slice.call(e),c()},injectEventPluginsByName:function(e){var t,n=!1;for(t in e)if(e.hasOwnProperty(t)){var r=e[t];if(!u.hasOwnProperty(t)||u[t]!==r){if(u[t])throw Error(a(102,t));u[t]=r,n=!0}}n&&c()}};function A(e,t){var n=e.stateNode;if(!n)return null;var r=I(n);if(!r)return null;n=r[t];e:switch(t){case"onClick":case"onClickCapture":case"onDoubleClick":case"onDoubleClickCapture":case"onMouseDown":case"onMouseDownCapture":case"onMouseMove":case"onMouseMoveCapture":case"onMouseUp":case"onMouseUpCapture":(r=!r.disabled)||(r=!("button"===(e=e.type)||"input"===e||"select"===e||"textarea"===e)),e=!r;break e;default:e=!1}if(e)return null;if(n&&"function"!=typeof n)throw Error(a(231,t,typeof n));return n}var C=r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;C.hasOwnProperty("ReactCurrentDispatcher")||(C.ReactCurrentDispatcher={current:null}),C.hasOwnProperty("ReactCurrentBatchConfig")||(C.ReactCurrentBatchConfig={suspense:null});var S=/^(.*)[\\\/]/,k="function"==typeof Symbol&&Symbol.for,U=k?Symbol.for("react.element"):60103,P=k?Symbol.for("react.portal"):60106,Q=k?Symbol.for("react.fragment"):60107,Y=k?Symbol.for("react.strict_mode"):60108,_=k?Symbol.for("react.profiler"):60114,R=k?Symbol.for("react.provider"):60109,B=k?Symbol.for("react.context"):60110,G=k?Symbol.for("react.concurrent_mode"):60111,F=k?Symbol.for("react.forward_ref"):60112,W=k?Symbol.for("react.suspense"):60113,H=k?Symbol.for("react.suspense_list"):60120,Z=k?Symbol.for("react.memo"):60115,V=k?Symbol.for("react.lazy"):60116;k&&Symbol.for("react.fundamental"),k&&Symbol.for("react.responder"),k&&Symbol.for("react.scope");var X="function"==typeof Symbol&&Symbol.iterator;function K(e){return null===e||"object"!=typeof e?null:"function"==typeof(e=X&&e[X]||e["@@iterator"])?e:null}function J(e){if(null==e)return null;if("function"==typeof e)return e.displayName||e.name||null;if("string"==typeof e)return e;switch(e){case Q:return"Fragment";case P:return"Portal";case _:return"Profiler";case Y:return"StrictMode";case W:return"Suspense";case H:return"SuspenseList"}if("object"==typeof e)switch(e.$$typeof){case B:return"Context.Consumer";case R:return"Context.Provider";case F:var t=e.render;return t=t.displayName||t.name||"",e.displayName||(""!==t?"ForwardRef("+t+")":"ForwardRef");case Z:return J(e.type);case V:if(e=1===e._status?e._result:null)return J(e)}return null}function q(e){var t="";do{e:switch(e.tag){case 3:case 4:case 6:case 7:case 10:case 9:var n="";break e;default:var r=e._debugOwner,i=e._debugSource,o=J(e.type);n=null,r&&(n=J(r.type)),r=o,o="",i?o=" (at "+i.fileName.replace(S,"")+":"+i.lineNumber+")":n&&(o=" (created by "+n+")"),n="\n    in "+(r||"Unknown")+o}t+=n,e=e.return}while(e);return t}var $=!("undefined"==typeof window||void 0===window.document||void 0===window.document.createElement),ee=null,te=null,ne=null;function re(e){if(e=h(e)){if("function"!=typeof ee)throw Error(a(280));var t=I(e.stateNode);ee(e.stateNode,e.type,t)}}function ie(e){te?ne?ne.push(e):ne=[e]:te=e}function oe(){if(te){var e=te,t=ne;if(ne=te=null,re(e),t)for(e=0;e<t.length;e++)re(t[e])}}function ae(e,t){return e(t)}function le(e,t,n,r){return e(t,n,r)}function ue(){}var ce=ae,se=!1,fe=!1;function de(){null===te&&null===ne||(ue(),oe())}new Map;var Me=/^[: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][: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\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,pe=Object.prototype.hasOwnProperty,ge={},ye={};function Ne(e,t,n,r,i,o){this.acceptsBooleans=2===t||3===t||4===t,this.attributeName=r,this.attributeNamespace=i,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=o}var Te={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach((function(e){Te[e]=new Ne(e,0,!1,e,null,!1)})),[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach((function(e){var t=e[0];Te[t]=new Ne(t,1,!1,e[1],null,!1)})),["contentEditable","draggable","spellCheck","value"].forEach((function(e){Te[e]=new Ne(e,2,!1,e.toLowerCase(),null,!1)})),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach((function(e){Te[e]=new Ne(e,2,!1,e,null,!1)})),"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach((function(e){Te[e]=new Ne(e,3,!1,e.toLowerCase(),null,!1)})),["checked","multiple","muted","selected"].forEach((function(e){Te[e]=new Ne(e,3,!0,e,null,!1)})),["capture","download"].forEach((function(e){Te[e]=new Ne(e,4,!1,e,null,!1)})),["cols","rows","size","span"].forEach((function(e){Te[e]=new Ne(e,6,!1,e,null,!1)})),["rowSpan","start"].forEach((function(e){Te[e]=new Ne(e,5,!1,e.toLowerCase(),null,!1)}));var De=/[\-:]([a-z])/g;function je(e){return e[1].toUpperCase()}function me(e){switch(typeof e){case"boolean":case"number":case"object":case"string":case"undefined":return e;default:return""}}function Ie(e,t,n,r){var i=Te.hasOwnProperty(t)?Te[t]:null;(null!==i?0===i.type:!r&&(2<t.length&&("o"===t[0]||"O"===t[0])&&("n"===t[1]||"N"===t[1])))||(function(e,t,n,r){if(null==t||function(e,t,n,r){if(null!==n&&0===n.type)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return!r&&(null!==n?!n.acceptsBooleans:"data-"!==(e=e.toLowerCase().slice(0,5))&&"aria-"!==e);default:return!1}}(e,t,n,r))return!0;if(r)return!1;if(null!==n)switch(n.type){case 3:return!t;case 4:return!1===t;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}(t,n,i,r)&&(n=null),r||null===i?function(e){return!!pe.call(ye,e)||!pe.call(ge,e)&&(Me.test(e)?ye[e]=!0:(ge[e]=!0,!1))}(t)&&(null===n?e.removeAttribute(t):e.setAttribute(t,""+n)):i.mustUseProperty?e[i.propertyName]=null===n?3!==i.type&&"":n:(t=i.attributeName,r=i.attributeNamespace,null===n?e.removeAttribute(t):(n=3===(i=i.type)||4===i&&!0===n?"":""+n,r?e.setAttributeNS(r,t,n):e.setAttribute(t,n))))}function he(e){var t=e.type;return(e=e.nodeName)&&"input"===e.toLowerCase()&&("checkbox"===t||"radio"===t)}function we(e){e._valueTracker||(e._valueTracker=function(e){var t=he(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),r=""+e[t];if(!e.hasOwnProperty(t)&&void 0!==n&&"function"==typeof n.get&&"function"==typeof n.set){var i=n.get,o=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return i.call(this)},set:function(e){r=""+e,o.call(this,e)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return r},setValue:function(e){r=""+e},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}(e))}function Ee(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=he(e)?e.checked?"true":"false":e.value),(e=r)!==n&&(t.setValue(e),!0)}function be(e,t){var n=t.checked;return i({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=n?n:e._wrapperState.initialChecked})}function Le(e,t){var n=null==t.defaultValue?"":t.defaultValue,r=null!=t.checked?t.checked:t.defaultChecked;n=me(null!=t.value?t.value:n),e._wrapperState={initialChecked:r,initialValue:n,controlled:"checkbox"===t.type||"radio"===t.type?null!=t.checked:null!=t.value}}function xe(e,t){null!=(t=t.checked)&&Ie(e,"checked",t,!1)}function ze(e,t){xe(e,t);var n=me(t.value),r=t.type;if(null!=n)"number"===r?(0===n&&""===e.value||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if("submit"===r||"reset"===r)return void e.removeAttribute("value");t.hasOwnProperty("value")?ve(e,t.type,n):t.hasOwnProperty("defaultValue")&&ve(e,t.type,me(t.defaultValue)),null==t.checked&&null!=t.defaultChecked&&(e.defaultChecked=!!t.defaultChecked)}function Oe(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var r=t.type;if(!("submit"!==r&&"reset"!==r||void 0!==t.value&&null!==t.value))return;t=""+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}""!==(n=e.name)&&(e.name=""),e.defaultChecked=!e.defaultChecked,e.defaultChecked=!!e._wrapperState.initialChecked,""!==n&&(e.name=n)}function ve(e,t,n){"number"===t&&e.ownerDocument.activeElement===e||(null==n?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}function Ae(e,t){return e=i({children:void 0},t),(t=function(e){var t="";return r.Children.forEach(e,(function(e){null!=e&&(t+=e)})),t}(t.children))&&(e.children=t),e}function Ce(e,t,n,r){if(e=e.options,t){t={};for(var i=0;i<n.length;i++)t["$"+n[i]]=!0;for(n=0;n<e.length;n++)i=t.hasOwnProperty("$"+e[n].value),e[n].selected!==i&&(e[n].selected=i),i&&r&&(e[n].defaultSelected=!0)}else{for(n=""+me(n),t=null,i=0;i<e.length;i++){if(e[i].value===n)return e[i].selected=!0,void(r&&(e[i].defaultSelected=!0));null!==t||e[i].disabled||(t=e[i])}null!==t&&(t.selected=!0)}}function Se(e,t){if(null!=t.dangerouslySetInnerHTML)throw Error(a(91));return i({},t,{value:void 0,defaultValue:void 0,children:""+e._wrapperState.initialValue})}function ke(e,t){var n=t.value;if(null==n){if(n=t.defaultValue,null!=(t=t.children)){if(null!=n)throw Error(a(92));if(Array.isArray(t)){if(!(1>=t.length))throw Error(a(93));t=t[0]}n=t}null==n&&(n="")}e._wrapperState={initialValue:me(n)}}function Ue(e,t){var n=me(t.value),r=me(t.defaultValue);null!=n&&((n=""+n)!==e.value&&(e.value=n),null==t.defaultValue&&e.defaultValue!==n&&(e.defaultValue=n)),null!=r&&(e.defaultValue=""+r)}function Pe(e){var t=e.textContent;t===e._wrapperState.initialValue&&""!==t&&null!==t&&(e.value=t)}"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".split(" ").forEach((function(e){var t=e.replace(De,je);Te[t]=new Ne(t,1,!1,e,null,!1)})),"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach((function(e){var t=e.replace(De,je);Te[t]=new Ne(t,1,!1,e,"http://www.w3.org/1999/xlink",!1)})),["xml:base","xml:lang","xml:space"].forEach((function(e){var t=e.replace(De,je);Te[t]=new Ne(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1)})),["tabIndex","crossOrigin"].forEach((function(e){Te[e]=new Ne(e,1,!1,e.toLowerCase(),null,!1)})),Te.xlinkHref=new Ne("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0),["src","href","action","formAction"].forEach((function(e){Te[e]=new Ne(e,1,!1,e.toLowerCase(),null,!0)}));var Qe="http://www.w3.org/1999/xhtml",Ye="http://www.w3.org/2000/svg";function _e(e){switch(e){case"svg":return"http://www.w3.org/2000/svg";case"math":return"http://www.w3.org/1998/Math/MathML";default:return"http://www.w3.org/1999/xhtml"}}function Re(e,t){return null==e||"http://www.w3.org/1999/xhtml"===e?_e(t):"http://www.w3.org/2000/svg"===e&&"foreignObject"===t?"http://www.w3.org/1999/xhtml":e}var Be,Ge=function(e){return"undefined"!=typeof MSApp&&MSApp.execUnsafeLocalFunction?function(t,n,r,i){MSApp.execUnsafeLocalFunction((function(){return e(t,n)}))}:e}((function(e,t){if(e.namespaceURI!==Ye||"innerHTML"in e)e.innerHTML=t;else{for((Be=Be||document.createElement("div")).innerHTML="<svg>"+t.valueOf().toString()+"</svg>",t=Be.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}}));function Fe(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&3===n.nodeType)return void(n.nodeValue=t)}e.textContent=t}function We(e,t){var n={};return n[e.toLowerCase()]=t.toLowerCase(),n["Webkit"+e]="webkit"+t,n["Moz"+e]="moz"+t,n}var He={animationend:We("Animation","AnimationEnd"),animationiteration:We("Animation","AnimationIteration"),animationstart:We("Animation","AnimationStart"),transitionend:We("Transition","TransitionEnd")},Ze={},Ve={};function Xe(e){if(Ze[e])return Ze[e];if(!He[e])return e;var t,n=He[e];for(t in n)if(n.hasOwnProperty(t)&&t in Ve)return Ze[e]=n[t];return e}$&&(Ve=document.createElement("div").style,"AnimationEvent"in window||(delete He.animationend.animation,delete He.animationiteration.animation,delete He.animationstart.animation),"TransitionEvent"in window||delete He.transitionend.transition);var Ke=Xe("animationend"),Je=Xe("animationiteration"),qe=Xe("animationstart"),$e=Xe("transitionend"),et="abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange seeked seeking stalled suspend timeupdate volumechange waiting".split(" ");function tt(e){var t=e,n=e;if(e.alternate)for(;t.return;)t=t.return;else{e=t;do{0!=(1026&(t=e).effectTag)&&(n=t.return),e=t.return}while(e)}return 3===t.tag?n:null}function nt(e){if(13===e.tag){var t=e.memoizedState;if(null===t&&(null!==(e=e.alternate)&&(t=e.memoizedState)),null!==t)return t.dehydrated}return null}function rt(e){if(tt(e)!==e)throw Error(a(188))}function it(e){if(!(e=function(e){var t=e.alternate;if(!t){if(null===(t=tt(e)))throw Error(a(188));return t!==e?null:e}for(var n=e,r=t;;){var i=n.return;if(null===i)break;var o=i.alternate;if(null===o){if(null!==(r=i.return)){n=r;continue}break}if(i.child===o.child){for(o=i.child;o;){if(o===n)return rt(i),e;if(o===r)return rt(i),t;o=o.sibling}throw Error(a(188))}if(n.return!==r.return)n=i,r=o;else{for(var l=!1,u=i.child;u;){if(u===n){l=!0,n=i,r=o;break}if(u===r){l=!0,r=i,n=o;break}u=u.sibling}if(!l){for(u=o.child;u;){if(u===n){l=!0,n=o,r=i;break}if(u===r){l=!0,r=o,n=i;break}u=u.sibling}if(!l)throw Error(a(189))}}if(n.alternate!==r)throw Error(a(190))}if(3!==n.tag)throw Error(a(188));return n.stateNode.current===n?e:t}(e)))return null;for(var t=e;;){if(5===t.tag||6===t.tag)return t;if(t.child)t.child.return=t,t=t.child;else{if(t===e)break;for(;!t.sibling;){if(!t.return||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}}return null}var ot,at,lt,ut=!1,ct=[],st=null,ft=null,dt=null,Mt=new Map,pt=new Map,gt=[],yt="mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput close cancel copy cut paste click change contextmenu reset submit".split(" "),Nt="focus blur dragenter dragleave mouseover mouseout pointerover pointerout gotpointercapture lostpointercapture".split(" ");function Tt(e,t,n,r){return{blockedOn:e,topLevelType:t,eventSystemFlags:32|n,nativeEvent:r}}function Dt(e,t){switch(e){case"focus":case"blur":st=null;break;case"dragenter":case"dragleave":ft=null;break;case"mouseover":case"mouseout":dt=null;break;case"pointerover":case"pointerout":Mt.delete(t.pointerId);break;case"gotpointercapture":case"lostpointercapture":pt.delete(t.pointerId)}}function jt(e,t,n,r,i){return null===e||e.nativeEvent!==i?(e=Tt(t,n,r,i),null!==t&&(null!==(t=cr(t))&&at(t)),e):(e.eventSystemFlags|=r,e)}function mt(e){var t=ur(e.target);if(null!==t){var n=tt(t);if(null!==n)if(13===(t=n.tag)){if(null!==(t=nt(n)))return e.blockedOn=t,void o.unstable_runWithPriority(e.priority,(function(){lt(n)}))}else if(3===t&&n.stateNode.hydrate)return void(e.blockedOn=3===n.tag?n.stateNode.containerInfo:null)}e.blockedOn=null}function It(e){if(null!==e.blockedOn)return!1;var t=vn(e.topLevelType,e.eventSystemFlags,e.nativeEvent);if(null!==t){var n=cr(t);return null!==n&&at(n),e.blockedOn=t,!1}return!0}function ht(e,t,n){It(e)&&n.delete(t)}function wt(){for(ut=!1;0<ct.length;){var e=ct[0];if(null!==e.blockedOn){null!==(e=cr(e.blockedOn))&&ot(e);break}var t=vn(e.topLevelType,e.eventSystemFlags,e.nativeEvent);null!==t?e.blockedOn=t:ct.shift()}null!==st&&It(st)&&(st=null),null!==ft&&It(ft)&&(ft=null),null!==dt&&It(dt)&&(dt=null),Mt.forEach(ht),pt.forEach(ht)}function Et(e,t){e.blockedOn===t&&(e.blockedOn=null,ut||(ut=!0,o.unstable_scheduleCallback(o.unstable_NormalPriority,wt)))}function bt(e){function t(t){return Et(t,e)}if(0<ct.length){Et(ct[0],e);for(var n=1;n<ct.length;n++){var r=ct[n];r.blockedOn===e&&(r.blockedOn=null)}}for(null!==st&&Et(st,e),null!==ft&&Et(ft,e),null!==dt&&Et(dt,e),Mt.forEach(t),pt.forEach(t),n=0;n<gt.length;n++)(r=gt[n]).blockedOn===e&&(r.blockedOn=null);for(;0<gt.length&&null===(n=gt[0]).blockedOn;)mt(n),null===n.blockedOn&&gt.shift()}function Lt(e){return(e=e.target||e.srcElement||window).correspondingUseElement&&(e=e.correspondingUseElement),3===e.nodeType?e.parentNode:e}function xt(e){do{e=e.return}while(e&&5!==e.tag);return e||null}function zt(e,t,n){(t=A(e,n.dispatchConfig.phasedRegistrationNames[t]))&&(n._dispatchListeners=b(n._dispatchListeners,t),n._dispatchInstances=b(n._dispatchInstances,e))}function Ot(e){if(e&&e.dispatchConfig.phasedRegistrationNames){for(var t=e._targetInst,n=[];t;)n.push(t),t=xt(t);for(t=n.length;0<t--;)zt(n[t],"captured",e);for(t=0;t<n.length;t++)zt(n[t],"bubbled",e)}}function vt(e,t,n){e&&n&&n.dispatchConfig.registrationName&&(t=A(e,n.dispatchConfig.registrationName))&&(n._dispatchListeners=b(n._dispatchListeners,t),n._dispatchInstances=b(n._dispatchInstances,e))}function At(e){e&&e.dispatchConfig.registrationName&&vt(e._targetInst,null,e)}function Ct(e){L(e,Ot)}function St(){return!0}function kt(){return!1}function Ut(e,t,n,r){for(var i in this.dispatchConfig=e,this._targetInst=t,this.nativeEvent=n,e=this.constructor.Interface)e.hasOwnProperty(i)&&((t=e[i])?this[i]=t(n):"target"===i?this.target=r:this[i]=n[i]);return this.isDefaultPrevented=(null!=n.defaultPrevented?n.defaultPrevented:!1===n.returnValue)?St:kt,this.isPropagationStopped=kt,this}function Pt(e,t,n,r){if(this.eventPool.length){var i=this.eventPool.pop();return this.call(i,e,t,n,r),i}return new this(e,t,n,r)}function Qt(e){if(!(e instanceof this))throw Error(a(279));e.destructor(),10>this.eventPool.length&&this.eventPool.push(e)}function Yt(e){e.eventPool=[],e.getPooled=Pt,e.release=Qt}i(Ut.prototype,{preventDefault:function(){this.defaultPrevented=!0;var e=this.nativeEvent;e&&(e.preventDefault?e.preventDefault():"unknown"!=typeof e.returnValue&&(e.returnValue=!1),this.isDefaultPrevented=St)},stopPropagation:function(){var e=this.nativeEvent;e&&(e.stopPropagation?e.stopPropagation():"unknown"!=typeof e.cancelBubble&&(e.cancelBubble=!0),this.isPropagationStopped=St)},persist:function(){this.isPersistent=St},isPersistent:kt,destructor:function(){var e,t=this.constructor.Interface;for(e in t)this[e]=null;this.nativeEvent=this._targetInst=this.dispatchConfig=null,this.isPropagationStopped=this.isDefaultPrevented=kt,this._dispatchInstances=this._dispatchListeners=null}}),Ut.Interface={type:null,target:null,currentTarget:function(){return null},eventPhase:null,bubbles:null,cancelable:null,timeStamp:function(e){return e.timeStamp||Date.now()},defaultPrevented:null,isTrusted:null},Ut.extend=function(e){function t(){}function n(){return r.apply(this,arguments)}var r=this;t.prototype=r.prototype;var o=new t;return i(o,n.prototype),n.prototype=o,n.prototype.constructor=n,n.Interface=i({},r.Interface,e),n.extend=r.extend,Yt(n),n},Yt(Ut);var _t=Ut.extend({animationName:null,elapsedTime:null,pseudoElement:null}),Rt=Ut.extend({clipboardData:function(e){return"clipboardData"in e?e.clipboardData:window.clipboardData}}),Bt=Ut.extend({view:null,detail:null}),Gt=Bt.extend({relatedTarget:null});function Ft(e){var t=e.keyCode;return"charCode"in e?0===(e=e.charCode)&&13===t&&(e=13):e=t,10===e&&(e=13),32<=e||13===e?e:0}var Wt={Esc:"Escape",Spacebar:" ",Left:"ArrowLeft",Up:"ArrowUp",Right:"ArrowRight",Down:"ArrowDown",Del:"Delete",Win:"OS",Menu:"ContextMenu",Apps:"ContextMenu",Scroll:"ScrollLock",MozPrintableKey:"Unidentified"},Ht={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"},Zt={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};function Vt(e){var t=this.nativeEvent;return t.getModifierState?t.getModifierState(e):!!(e=Zt[e])&&!!t[e]}function Xt(){return Vt}for(var Kt=Bt.extend({key:function(e){if(e.key){var t=Wt[e.key]||e.key;if("Unidentified"!==t)return t}return"keypress"===e.type?13===(e=Ft(e))?"Enter":String.fromCharCode(e):"keydown"===e.type||"keyup"===e.type?Ht[e.keyCode]||"Unidentified":""},location:null,ctrlKey:null,shiftKey:null,altKey:null,metaKey:null,repeat:null,locale:null,getModifierState:Xt,charCode:function(e){return"keypress"===e.type?Ft(e):0},keyCode:function(e){return"keydown"===e.type||"keyup"===e.type?e.keyCode:0},which:function(e){return"keypress"===e.type?Ft(e):"keydown"===e.type||"keyup"===e.type?e.keyCode:0}}),Jt=0,qt=0,$t=!1,en=!1,tn=Bt.extend({screenX:null,screenY:null,clientX:null,clientY:null,pageX:null,pageY:null,ctrlKey:null,shiftKey:null,altKey:null,metaKey:null,getModifierState:Xt,button:null,buttons:null,relatedTarget:function(e){return e.relatedTarget||(e.fromElement===e.srcElement?e.toElement:e.fromElement)},movementX:function(e){if("movementX"in e)return e.movementX;var t=Jt;return Jt=e.screenX,$t?"mousemove"===e.type?e.screenX-t:0:($t=!0,0)},movementY:function(e){if("movementY"in e)return e.movementY;var t=qt;return qt=e.screenY,en?"mousemove"===e.type?e.screenY-t:0:(en=!0,0)}}),nn=tn.extend({pointerId:null,width:null,height:null,pressure:null,tangentialPressure:null,tiltX:null,tiltY:null,twist:null,pointerType:null,isPrimary:null}),rn=tn.extend({dataTransfer:null}),on=Bt.extend({touches:null,targetTouches:null,changedTouches:null,altKey:null,metaKey:null,ctrlKey:null,shiftKey:null,getModifierState:Xt}),an=Ut.extend({propertyName:null,elapsedTime:null,pseudoElement:null}),ln=tn.extend({deltaX:function(e){return"deltaX"in e?e.deltaX:"wheelDeltaX"in e?-e.wheelDeltaX:0},deltaY:function(e){return"deltaY"in e?e.deltaY:"wheelDeltaY"in e?-e.wheelDeltaY:"wheelDelta"in e?-e.wheelDelta:0},deltaZ:null,deltaMode:null}),un=[["blur","blur",0],["cancel","cancel",0],["click","click",0],["close","close",0],["contextmenu","contextMenu",0],["copy","copy",0],["cut","cut",0],["auxclick","auxClick",0],["dblclick","doubleClick",0],["dragend","dragEnd",0],["dragstart","dragStart",0],["drop","drop",0],["focus","focus",0],["input","input",0],["invalid","invalid",0],["keydown","keyDown",0],["keypress","keyPress",0],["keyup","keyUp",0],["mousedown","mouseDown",0],["mouseup","mouseUp",0],["paste","paste",0],["pause","pause",0],["play","play",0],["pointercancel","pointerCancel",0],["pointerdown","pointerDown",0],["pointerup","pointerUp",0],["ratechange","rateChange",0],["reset","reset",0],["seeked","seeked",0],["submit","submit",0],["touchcancel","touchCancel",0],["touchend","touchEnd",0],["touchstart","touchStart",0],["volumechange","volumeChange",0],["drag","drag",1],["dragenter","dragEnter",1],["dragexit","dragExit",1],["dragleave","dragLeave",1],["dragover","dragOver",1],["mousemove","mouseMove",1],["mouseout","mouseOut",1],["mouseover","mouseOver",1],["pointermove","pointerMove",1],["pointerout","pointerOut",1],["pointerover","pointerOver",1],["scroll","scroll",1],["toggle","toggle",1],["touchmove","touchMove",1],["wheel","wheel",1],["abort","abort",2],[Ke,"animationEnd",2],[Je,"animationIteration",2],[qe,"animationStart",2],["canplay","canPlay",2],["canplaythrough","canPlayThrough",2],["durationchange","durationChange",2],["emptied","emptied",2],["encrypted","encrypted",2],["ended","ended",2],["error","error",2],["gotpointercapture","gotPointerCapture",2],["load","load",2],["loadeddata","loadedData",2],["loadedmetadata","loadedMetadata",2],["loadstart","loadStart",2],["lostpointercapture","lostPointerCapture",2],["playing","playing",2],["progress","progress",2],["seeking","seeking",2],["stalled","stalled",2],["suspend","suspend",2],["timeupdate","timeUpdate",2],[$e,"transitionEnd",2],["waiting","waiting",2]],cn={},sn={},fn=0;fn<un.length;fn++){var dn=un[fn],Mn=dn[0],pn=dn[1],gn=dn[2],yn="on"+(pn[0].toUpperCase()+pn.slice(1)),Nn={phasedRegistrationNames:{bubbled:yn,captured:yn+"Capture"},dependencies:[Mn],eventPriority:gn};cn[pn]=Nn,sn[Mn]=Nn}var Tn={eventTypes:cn,getEventPriority:function(e){return void 0!==(e=sn[e])?e.eventPriority:2},extractEvents:function(e,t,n,r){var i=sn[e];if(!i)return null;switch(e){case"keypress":if(0===Ft(n))return null;case"keydown":case"keyup":e=Kt;break;case"blur":case"focus":e=Gt;break;case"click":if(2===n.button)return null;case"auxclick":case"dblclick":case"mousedown":case"mousemove":case"mouseup":case"mouseout":case"mouseover":case"contextmenu":e=tn;break;case"drag":case"dragend":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"dragstart":case"drop":e=rn;break;case"touchcancel":case"touchend":case"touchmove":case"touchstart":e=on;break;case Ke:case Je:case qe:e=_t;break;case $e:e=an;break;case"scroll":e=Bt;break;case"wheel":e=ln;break;case"copy":case"cut":case"paste":e=Rt;break;case"gotpointercapture":case"lostpointercapture":case"pointercancel":case"pointerdown":case"pointermove":case"pointerout":case"pointerover":case"pointerup":e=nn;break;default:e=Ut}return Ct(t=e.getPooled(i,t,n,r)),t}},Dn=o.unstable_UserBlockingPriority,jn=o.unstable_runWithPriority,mn=Tn.getEventPriority,In=[];function hn(e){var t=e.targetInst,n=t;do{if(!n){e.ancestors.push(n);break}var r=n;if(3===r.tag)r=r.stateNode.containerInfo;else{for(;r.return;)r=r.return;r=3!==r.tag?null:r.stateNode.containerInfo}if(!r)break;5!==(t=n.tag)&&6!==t||e.ancestors.push(n),n=ur(r)}while(n);for(n=0;n<e.ancestors.length;n++){t=e.ancestors[n];var i=Lt(e.nativeEvent);r=e.topLevelType;for(var o=e.nativeEvent,a=e.eventSystemFlags,l=null,u=0;u<f.length;u++){var c=f[u];c&&(c=c.extractEvents(r,t,o,i,a))&&(l=b(l,c))}O(l)}}var wn=!0;function En(e,t){bn(t,e,!1)}function bn(e,t,n){switch(mn(t)){case 0:var r=Ln.bind(null,t,1);break;case 1:r=xn.bind(null,t,1);break;default:r=On.bind(null,t,1)}n?e.addEventListener(t,r,!0):e.addEventListener(t,r,!1)}function Ln(e,t,n){se||ue();var r=On,i=se;se=!0;try{le(r,e,t,n)}finally{(se=i)||de()}}function xn(e,t,n){jn(Dn,On.bind(null,e,t,n))}function zn(e,t,n,r){if(In.length){var i=In.pop();i.topLevelType=e,i.eventSystemFlags=t,i.nativeEvent=n,i.targetInst=r,e=i}else e={topLevelType:e,eventSystemFlags:t,nativeEvent:n,targetInst:r,ancestors:[]};try{if(t=hn,n=e,fe)t(n,void 0);else{fe=!0;try{ce(t,n,void 0)}finally{fe=!1,de()}}}finally{e.topLevelType=null,e.nativeEvent=null,e.targetInst=null,e.ancestors.length=0,In.length<10&&In.push(e)}}function On(e,t,n){if(wn)if(0<ct.length&&-1<yt.indexOf(e))e=Tt(null,e,t,n),ct.push(e);else{var r=vn(e,t,n);null===r?Dt(e,n):-1<yt.indexOf(e)?(e=Tt(r,e,t,n),ct.push(e)):function(e,t,n,r){switch(t){case"focus":return st=jt(st,e,t,n,r),!0;case"dragenter":return ft=jt(ft,e,t,n,r),!0;case"mouseover":return dt=jt(dt,e,t,n,r),!0;case"pointerover":var i=r.pointerId;return Mt.set(i,jt(Mt.get(i)||null,e,t,n,r)),!0;case"gotpointercapture":return i=r.pointerId,pt.set(i,jt(pt.get(i)||null,e,t,n,r)),!0}return!1}(r,e,t,n)||(Dt(e,n),zn(e,t,n,null))}}function vn(e,t,n){var r=Lt(n);if(null!==(r=ur(r))){var i=tt(r);if(null===i)r=null;else{var o=i.tag;if(13===o){if(null!==(r=nt(i)))return r;r=null}else if(3===o){if(i.stateNode.hydrate)return 3===i.tag?i.stateNode.containerInfo:null;r=null}else i!==r&&(r=null)}}return zn(e,t,n,r),null}function An(e){if(!$)return!1;var t=(e="on"+e)in document;return t||((t=document.createElement("div")).setAttribute(e,"return;"),t="function"==typeof t[e]),t}var Cn=new("function"==typeof WeakMap?WeakMap:Map);function Sn(e){var t=Cn.get(e);return void 0===t&&(t=new Set,Cn.set(e,t)),t}function kn(e,t,n){if(!n.has(e)){switch(e){case"scroll":bn(t,"scroll",!0);break;case"focus":case"blur":bn(t,"focus",!0),bn(t,"blur",!0),n.add("blur"),n.add("focus");break;case"cancel":case"close":An(e)&&bn(t,e,!0);break;case"invalid":case"submit":case"reset":break;default:-1===et.indexOf(e)&&En(e,t)}n.add(e)}}var Un={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},Pn=["Webkit","ms","Moz","O"];function Qn(e,t,n){return null==t||"boolean"==typeof t||""===t?"":n||"number"!=typeof t||0===t||Un.hasOwnProperty(e)&&Un[e]?(""+t).trim():t+"px"}function Yn(e,t){for(var n in e=e.style,t)if(t.hasOwnProperty(n)){var r=0===n.indexOf("--"),i=Qn(n,t[n],r);"float"===n&&(n="cssFloat"),r?e.setProperty(n,i):e[n]=i}}Object.keys(Un).forEach((function(e){Pn.forEach((function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),Un[t]=Un[e]}))}));var _n=i({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function Rn(e,t){if(t){if(_n[e]&&(null!=t.children||null!=t.dangerouslySetInnerHTML))throw Error(a(137,e,""));if(null!=t.dangerouslySetInnerHTML){if(null!=t.children)throw Error(a(60));if(!("object"==typeof t.dangerouslySetInnerHTML&&"__html"in t.dangerouslySetInnerHTML))throw Error(a(61))}if(null!=t.style&&"object"!=typeof t.style)throw Error(a(62,""))}}function Bn(e,t){if(-1===e.indexOf("-"))return"string"==typeof t.is;switch(e){case"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!1;default:return!0}}function Gn(e,t){var n=Sn(e=9===e.nodeType||11===e.nodeType?e:e.ownerDocument);t=p[t];for(var r=0;r<t.length;r++)kn(t[r],e,n)}function Fn(){}function Wn(e){if(void 0===(e=e||("undefined"!=typeof document?document:void 0)))return null;try{return e.activeElement||e.body}catch(qu){return e.body}}function Hn(e){for(;e&&e.firstChild;)e=e.firstChild;return e}function Zn(e,t){var n,r=Hn(e);for(e=0;r;){if(3===r.nodeType){if(n=e+r.textContent.length,e<=t&&n>=t)return{node:r,offset:t-e};e=n}e:{for(;r;){if(r.nextSibling){r=r.nextSibling;break e}r=r.parentNode}r=void 0}r=Hn(r)}}function Vn(){for(var e=window,t=Wn();t instanceof e.HTMLIFrameElement;){try{var n="string"==typeof t.contentWindow.location.href}catch(r){n=!1}if(!n)break;t=Wn((e=t.contentWindow).document)}return t}function Xn(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&("input"===t&&("text"===e.type||"search"===e.type||"tel"===e.type||"url"===e.type||"password"===e.type)||"textarea"===t||"true"===e.contentEditable)}var Kn=null,Jn=null;function qn(e,t){switch(e){case"button":case"input":case"select":case"textarea":return!!t.autoFocus}return!1}function $n(e,t){return"textarea"===e||"option"===e||"noscript"===e||"string"==typeof t.children||"number"==typeof t.children||"object"==typeof t.dangerouslySetInnerHTML&&null!==t.dangerouslySetInnerHTML&&null!=t.dangerouslySetInnerHTML.__html}var er="function"==typeof setTimeout?setTimeout:void 0,tr="function"==typeof clearTimeout?clearTimeout:void 0;function nr(e){for(;null!=e;e=e.nextSibling){var t=e.nodeType;if(1===t||3===t)break}return e}function rr(e){e=e.previousSibling;for(var t=0;e;){if(8===e.nodeType){var n=e.data;if("$"===n||"$!"===n||"$?"===n){if(0===t)return e;t--}else"/$"===n&&t++}e=e.previousSibling}return null}var ir=Math.random().toString(36).slice(2),or="__reactInternalInstance$"+ir,ar="__reactEventHandlers$"+ir,lr="__reactContainere$"+ir;function ur(e){var t=e[or];if(t)return t;for(var n=e.parentNode;n;){if(t=n[lr]||n[or]){if(n=t.alternate,null!==t.child||null!==n&&null!==n.child)for(e=rr(e);null!==e;){if(n=e[or])return n;e=rr(e)}return t}n=(e=n).parentNode}return null}function cr(e){return!(e=e[or]||e[lr])||5!==e.tag&&6!==e.tag&&13!==e.tag&&3!==e.tag?null:e}function sr(e){if(5===e.tag||6===e.tag)return e.stateNode;throw Error(a(33))}function fr(e){return e[ar]||null}var dr=null,Mr=null,pr=null;function gr(){if(pr)return pr;var e,t,n=Mr,r=n.length,i="value"in dr?dr.value:dr.textContent,o=i.length;for(e=0;e<r&&n[e]===i[e];e++);var a=r-e;for(t=1;t<=a&&n[r-t]===i[o-t];t++);return pr=i.slice(e,1<t?1-t:void 0)}var yr=Ut.extend({data:null}),Nr=Ut.extend({data:null}),Tr=[9,13,27,32],Dr=$&&"CompositionEvent"in window,jr=null;$&&"documentMode"in document&&(jr=document.documentMode);var mr=$&&"TextEvent"in window&&!jr,Ir=$&&(!Dr||jr&&8<jr&&11>=jr),hr=String.fromCharCode(32),wr={beforeInput:{phasedRegistrationNames:{bubbled:"onBeforeInput",captured:"onBeforeInputCapture"},dependencies:["compositionend","keypress","textInput","paste"]},compositionEnd:{phasedRegistrationNames:{bubbled:"onCompositionEnd",captured:"onCompositionEndCapture"},dependencies:"blur compositionend keydown keypress keyup mousedown".split(" ")},compositionStart:{phasedRegistrationNames:{bubbled:"onCompositionStart",captured:"onCompositionStartCapture"},dependencies:"blur compositionstart keydown keypress keyup mousedown".split(" ")},compositionUpdate:{phasedRegistrationNames:{bubbled:"onCompositionUpdate",captured:"onCompositionUpdateCapture"},dependencies:"blur compositionupdate keydown keypress keyup mousedown".split(" ")}},Er=!1;function br(e,t){switch(e){case"keyup":return-1!==Tr.indexOf(t.keyCode);case"keydown":return 229!==t.keyCode;case"keypress":case"mousedown":case"blur":return!0;default:return!1}}function Lr(e){return"object"==typeof(e=e.detail)&&"data"in e?e.data:null}var xr=!1;var zr={eventTypes:wr,extractEvents:function(e,t,n,r){var i;if(Dr)e:{switch(e){case"compositionstart":var o=wr.compositionStart;break e;case"compositionend":o=wr.compositionEnd;break e;case"compositionupdate":o=wr.compositionUpdate;break e}o=void 0}else xr?br(e,n)&&(o=wr.compositionEnd):"keydown"===e&&229===n.keyCode&&(o=wr.compositionStart);return o?(Ir&&"ko"!==n.locale&&(xr||o!==wr.compositionStart?o===wr.compositionEnd&&xr&&(i=gr()):(Mr="value"in(dr=r)?dr.value:dr.textContent,xr=!0)),o=yr.getPooled(o,t,n,r),i?o.data=i:null!==(i=Lr(n))&&(o.data=i),Ct(o),i=o):i=null,(e=mr?function(e,t){switch(e){case"compositionend":return Lr(t);case"keypress":return 32!==t.which?null:(Er=!0,hr);case"textInput":return(e=t.data)===hr&&Er?null:e;default:return null}}(e,n):function(e,t){if(xr)return"compositionend"===e||!Dr&&br(e,t)?(e=gr(),pr=Mr=dr=null,xr=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1<t.char.length)return t.char;if(t.which)return String.fromCharCode(t.which)}return null;case"compositionend":return Ir&&"ko"!==t.locale?null:t.data;default:return null}}(e,n))?((t=Nr.getPooled(wr.beforeInput,t,n,r)).data=e,Ct(t)):t=null,null===i?t:null===t?i:[i,t]}},Or={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function vr(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return"input"===t?!!Or[e.type]:"textarea"===t}var Ar={change:{phasedRegistrationNames:{bubbled:"onChange",captured:"onChangeCapture"},dependencies:"blur change click focus input keydown keyup selectionchange".split(" ")}};function Cr(e,t,n){return(e=Ut.getPooled(Ar.change,e,t,n)).type="change",ie(n),Ct(e),e}var Sr=null,kr=null;function Ur(e){O(e)}function Pr(e){if(Ee(sr(e)))return e}function Qr(e,t){if("change"===e)return t}var Yr=!1;function _r(){Sr&&(Sr.detachEvent("onpropertychange",Rr),kr=Sr=null)}function Rr(e){if("value"===e.propertyName&&Pr(kr))if(e=Cr(kr,e,Lt(e)),se)O(e);else{se=!0;try{ae(Ur,e)}finally{se=!1,de()}}}function Br(e,t,n){"focus"===e?(_r(),kr=n,(Sr=t).attachEvent("onpropertychange",Rr)):"blur"===e&&_r()}function Gr(e){if("selectionchange"===e||"keyup"===e||"keydown"===e)return Pr(kr)}function Fr(e,t){if("click"===e)return Pr(t)}function Wr(e,t){if("input"===e||"change"===e)return Pr(t)}$&&(Yr=An("input")&&(!document.documentMode||9<document.documentMode));var Hr,Zr={eventTypes:Ar,_isInputEventSupported:Yr,extractEvents:function(e,t,n,r){var i=t?sr(t):window,o=i.nodeName&&i.nodeName.toLowerCase();if("select"===o||"input"===o&&"file"===i.type)var a=Qr;else if(vr(i))if(Yr)a=Wr;else{a=Gr;var l=Br}else(o=i.nodeName)&&"input"===o.toLowerCase()&&("checkbox"===i.type||"radio"===i.type)&&(a=Fr);if(a&&(a=a(e,t)))return Cr(a,n,r);l&&l(e,i,t),"blur"===e&&(e=i._wrapperState)&&e.controlled&&"number"===i.type&&ve(i,"number",i.value)}},Vr={mouseEnter:{registrationName:"onMouseEnter",dependencies:["mouseout","mouseover"]},mouseLeave:{registrationName:"onMouseLeave",dependencies:["mouseout","mouseover"]},pointerEnter:{registrationName:"onPointerEnter",dependencies:["pointerout","pointerover"]},pointerLeave:{registrationName:"onPointerLeave",dependencies:["pointerout","pointerover"]}},Xr={eventTypes:Vr,extractEvents:function(e,t,n,r,i){var o="mouseover"===e||"pointerover"===e,a="mouseout"===e||"pointerout"===e;if(o&&0==(32&i)&&(n.relatedTarget||n.fromElement)||!a&&!o)return null;if(i=r.window===r?r:(i=r.ownerDocument)?i.defaultView||i.parentWindow:window,a?(a=t,null!==(t=(t=n.relatedTarget||n.toElement)?ur(t):null)&&(t!==(o=tt(t))||5!==t.tag&&6!==t.tag)&&(t=null)):a=null,a===t)return null;if("mouseout"===e||"mouseover"===e)var l=tn,u=Vr.mouseLeave,c=Vr.mouseEnter,s="mouse";else"pointerout"!==e&&"pointerover"!==e||(l=nn,u=Vr.pointerLeave,c=Vr.pointerEnter,s="pointer");if(e=null==a?i:sr(a),i=null==t?i:sr(t),(u=l.getPooled(u,a,n,r)).type=s+"leave",u.target=e,u.relatedTarget=i,(r=l.getPooled(c,t,n,r)).type=s+"enter",r.target=i,r.relatedTarget=e,s=t,(l=a)&&s)e:{for(e=s,a=0,t=c=l;t;t=xt(t))a++;for(t=0,i=e;i;i=xt(i))t++;for(;0<a-t;)c=xt(c),a--;for(;0<t-a;)e=xt(e),t--;for(;a--;){if(c===e||c===e.alternate)break e;c=xt(c),e=xt(e)}c=null}else c=null;for(e=c,c=[];l&&l!==e&&(null===(a=l.alternate)||a!==e);)c.push(l),l=xt(l);for(l=[];s&&s!==e&&(null===(a=s.alternate)||a!==e);)l.push(s),s=xt(s);for(s=0;s<c.length;s++)vt(c[s],"bubbled",u);for(s=l.length;0<s--;)vt(l[s],"captured",r);return n===Hr?(Hr=null,[u]):(Hr=n,[u,r])}};var Kr="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},Jr=Object.prototype.hasOwnProperty;function qr(e,t){if(Kr(e,t))return!0;if("object"!=typeof e||null===e||"object"!=typeof t||null===t)return!1;var n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(r=0;r<n.length;r++)if(!Jr.call(t,n[r])||!Kr(e[n[r]],t[n[r]]))return!1;return!0}var $r=$&&"documentMode"in document&&11>=document.documentMode,ei={select:{phasedRegistrationNames:{bubbled:"onSelect",captured:"onSelectCapture"},dependencies:"blur contextmenu dragend focus keydown keyup mousedown mouseup selectionchange".split(" ")}},ti=null,ni=null,ri=null,ii=!1;function oi(e,t){var n=t.window===t?t.document:9===t.nodeType?t:t.ownerDocument;return ii||null==ti||ti!==Wn(n)?null:("selectionStart"in(n=ti)&&Xn(n)?n={start:n.selectionStart,end:n.selectionEnd}:n={anchorNode:(n=(n.ownerDocument&&n.ownerDocument.defaultView||window).getSelection()).anchorNode,anchorOffset:n.anchorOffset,focusNode:n.focusNode,focusOffset:n.focusOffset},ri&&qr(ri,n)?null:(ri=n,(e=Ut.getPooled(ei.select,ni,e,t)).type="select",e.target=ti,Ct(e),e))}var ai={eventTypes:ei,extractEvents:function(e,t,n,r){var i,o=r.window===r?r.document:9===r.nodeType?r:r.ownerDocument;if(!(i=!o)){e:{o=Sn(o),i=p.onSelect;for(var a=0;a<i.length;a++)if(!o.has(i[a])){o=!1;break e}o=!0}i=!o}if(i)return null;switch(o=t?sr(t):window,e){case"focus":(vr(o)||"true"===o.contentEditable)&&(ti=o,ni=t,ri=null);break;case"blur":ri=ni=ti=null;break;case"mousedown":ii=!0;break;case"contextmenu":case"mouseup":case"dragend":return ii=!1,oi(n,r);case"selectionchange":if($r)break;case"keydown":case"keyup":return oi(n,r)}return null}};v.injectEventPluginOrder("ResponderEventPlugin SimpleEventPlugin EnterLeaveEventPlugin ChangeEventPlugin SelectEventPlugin BeforeInputEventPlugin".split(" ")),I=fr,h=cr,w=sr,v.injectEventPluginsByName({SimpleEventPlugin:Tn,EnterLeaveEventPlugin:Xr,ChangeEventPlugin:Zr,SelectEventPlugin:ai,BeforeInputEventPlugin:zr}),new Set;var li=[],ui=-1;function ci(e){0>ui||(e.current=li[ui],li[ui]=null,ui--)}function si(e,t){ui++,li[ui]=e.current,e.current=t}var fi={},di={current:fi},Mi={current:!1},pi=fi;function gi(e,t){var n=e.type.contextTypes;if(!n)return fi;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var i,o={};for(i in n)o[i]=t[i];return r&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=o),o}function yi(e){return null!=(e=e.childContextTypes)}function Ni(e){ci(Mi),ci(di)}function Ti(e){ci(Mi),ci(di)}function Di(e,t,n){if(di.current!==fi)throw Error(a(168));si(di,t),si(Mi,n)}function ji(e,t,n){var r=e.stateNode;if(e=t.childContextTypes,"function"!=typeof r.getChildContext)return n;for(var o in r=r.getChildContext())if(!(o in e))throw Error(a(108,J(t)||"Unknown",o));return i({},n,{},r)}function mi(e){var t=e.stateNode;return t=t&&t.__reactInternalMemoizedMergedChildContext||fi,pi=di.current,si(di,t),si(Mi,Mi.current),!0}function Ii(e,t,n){var r=e.stateNode;if(!r)throw Error(a(169));n?(t=ji(e,t,pi),r.__reactInternalMemoizedMergedChildContext=t,ci(Mi),ci(di),si(di,t)):ci(Mi),si(Mi,n)}var hi=o.unstable_runWithPriority,wi=o.unstable_scheduleCallback,Ei=o.unstable_cancelCallback,bi=o.unstable_shouldYield,Li=o.unstable_requestPaint,xi=o.unstable_now,zi=o.unstable_getCurrentPriorityLevel,Oi=o.unstable_ImmediatePriority,vi=o.unstable_UserBlockingPriority,Ai=o.unstable_NormalPriority,Ci=o.unstable_LowPriority,Si=o.unstable_IdlePriority,ki={},Ui=void 0!==Li?Li:function(){},Pi=null,Qi=null,Yi=!1,_i=xi(),Ri=1e4>_i?xi:function(){return xi()-_i};function Bi(){switch(zi()){case Oi:return 99;case vi:return 98;case Ai:return 97;case Ci:return 96;case Si:return 95;default:throw Error(a(332))}}function Gi(e){switch(e){case 99:return Oi;case 98:return vi;case 97:return Ai;case 96:return Ci;case 95:return Si;default:throw Error(a(332))}}function Fi(e,t){return e=Gi(e),hi(e,t)}function Wi(e,t,n){return e=Gi(e),wi(e,t,n)}function Hi(e){return null===Pi?(Pi=[e],Qi=wi(Oi,Vi)):Pi.push(e),ki}function Zi(){if(null!==Qi){var e=Qi;Qi=null,Ei(e)}Vi()}function Vi(){if(!Yi&&null!==Pi){Yi=!0;var e=0;try{var t=Pi;Fi(99,(function(){for(;e<t.length;e++){var n=t[e];do{n=n(!0)}while(null!==n)}})),Pi=null}catch(n){throw null!==Pi&&(Pi=Pi.slice(e+1)),wi(Oi,Zi),n}finally{Yi=!1}}}var Xi=3;function Ki(e,t,n){return 1073741821-(1+((1073741821-e+t/10)/(n/=10)|0))*n}function Ji(e,t){if(e&&e.defaultProps)for(var n in t=i({},t),e=e.defaultProps)void 0===t[n]&&(t[n]=e[n]);return t}var qi={current:null},$i=null,eo=null,to=null;function no(){to=eo=$i=null}function ro(e,t){var n=e.type._context;si(qi,n._currentValue),n._currentValue=t}function io(e){var t=qi.current;ci(qi),e.type._context._currentValue=t}function oo(e,t){for(;null!==e;){var n=e.alternate;if(e.childExpirationTime<t)e.childExpirationTime=t,null!==n&&n.childExpirationTime<t&&(n.childExpirationTime=t);else{if(!(null!==n&&n.childExpirationTime<t))break;n.childExpirationTime=t}e=e.return}}function ao(e,t){$i=e,to=eo=null,null!==(e=e.dependencies)&&null!==e.firstContext&&(e.expirationTime>=t&&(Ra=!0),e.firstContext=null)}function lo(e,t){if(to!==e&&!1!==t&&0!==t)if("number"==typeof t&&1073741823!==t||(to=e,t=1073741823),t={context:e,observedBits:t,next:null},null===eo){if(null===$i)throw Error(a(308));eo=t,$i.dependencies={expirationTime:0,firstContext:t,responders:null}}else eo=eo.next=t;return e._currentValue}var uo=!1;function co(e){return{baseState:e,firstUpdate:null,lastUpdate:null,firstCapturedUpdate:null,lastCapturedUpdate:null,firstEffect:null,lastEffect:null,firstCapturedEffect:null,lastCapturedEffect:null}}function so(e){return{baseState:e.baseState,firstUpdate:e.firstUpdate,lastUpdate:e.lastUpdate,firstCapturedUpdate:null,lastCapturedUpdate:null,firstEffect:null,lastEffect:null,firstCapturedEffect:null,lastCapturedEffect:null}}function fo(e,t){return{expirationTime:e,suspenseConfig:t,tag:0,payload:null,callback:null,next:null,nextEffect:null}}function Mo(e,t){null===e.lastUpdate?e.firstUpdate=e.lastUpdate=t:(e.lastUpdate.next=t,e.lastUpdate=t)}function po(e,t){var n=e.alternate;if(null===n){var r=e.updateQueue,i=null;null===r&&(r=e.updateQueue=co(e.memoizedState))}else r=e.updateQueue,i=n.updateQueue,null===r?null===i?(r=e.updateQueue=co(e.memoizedState),i=n.updateQueue=co(n.memoizedState)):r=e.updateQueue=so(i):null===i&&(i=n.updateQueue=so(r));null===i||r===i?Mo(r,t):null===r.lastUpdate||null===i.lastUpdate?(Mo(r,t),Mo(i,t)):(Mo(r,t),i.lastUpdate=t)}function go(e,t){var n=e.updateQueue;null===(n=null===n?e.updateQueue=co(e.memoizedState):yo(e,n)).lastCapturedUpdate?n.firstCapturedUpdate=n.lastCapturedUpdate=t:(n.lastCapturedUpdate.next=t,n.lastCapturedUpdate=t)}function yo(e,t){var n=e.alternate;return null!==n&&t===n.updateQueue&&(t=e.updateQueue=so(t)),t}function No(e,t,n,r,o,a){switch(n.tag){case 1:return"function"==typeof(e=n.payload)?e.call(a,r,o):e;case 3:e.effectTag=-4097&e.effectTag|64;case 0:if(null==(o="function"==typeof(e=n.payload)?e.call(a,r,o):e))break;return i({},r,o);case 2:uo=!0}return r}function To(e,t,n,r,i){uo=!1;for(var o=(t=yo(e,t)).baseState,a=null,l=0,u=t.firstUpdate,c=o;null!==u;){var s=u.expirationTime;s<i?(null===a&&(a=u,o=c),l<s&&(l=s)):(fu(s,u.suspenseConfig),c=No(e,0,u,c,n,r),null!==u.callback&&(e.effectTag|=32,u.nextEffect=null,null===t.lastEffect?t.firstEffect=t.lastEffect=u:(t.lastEffect.nextEffect=u,t.lastEffect=u))),u=u.next}for(s=null,u=t.firstCapturedUpdate;null!==u;){var f=u.expirationTime;f<i?(null===s&&(s=u,null===a&&(o=c)),l<f&&(l=f)):(c=No(e,0,u,c,n,r),null!==u.callback&&(e.effectTag|=32,u.nextEffect=null,null===t.lastCapturedEffect?t.firstCapturedEffect=t.lastCapturedEffect=u:(t.lastCapturedEffect.nextEffect=u,t.lastCapturedEffect=u))),u=u.next}null===a&&(t.lastUpdate=null),null===s?t.lastCapturedUpdate=null:e.effectTag|=32,null===a&&null===s&&(o=c),t.baseState=o,t.firstUpdate=a,t.firstCapturedUpdate=s,du(l),e.expirationTime=l,e.memoizedState=c}function Do(e,t,n){null!==t.firstCapturedUpdate&&(null!==t.lastUpdate&&(t.lastUpdate.next=t.firstCapturedUpdate,t.lastUpdate=t.lastCapturedUpdate),t.firstCapturedUpdate=t.lastCapturedUpdate=null),jo(t.firstEffect,n),t.firstEffect=t.lastEffect=null,jo(t.firstCapturedEffect,n),t.firstCapturedEffect=t.lastCapturedEffect=null}function jo(e,t){for(;null!==e;){var n=e.callback;if(null!==n){e.callback=null;var r=t;if("function"!=typeof n)throw Error(a(191,n));n.call(r)}e=e.nextEffect}}var mo=C.ReactCurrentBatchConfig,Io=(new r.Component).refs;function ho(e,t,n,r){n=null==(n=n(r,t=e.memoizedState))?t:i({},t,n),e.memoizedState=n,null!==(r=e.updateQueue)&&0===e.expirationTime&&(r.baseState=n)}var wo={isMounted:function(e){return!!(e=e._reactInternalFiber)&&tt(e)===e},enqueueSetState:function(e,t,n){e=e._reactInternalFiber;var r=ql(),i=mo.suspense;(i=fo(r=$l(r,e,i),i)).payload=t,null!=n&&(i.callback=n),po(e,i),eu(e,r)},enqueueReplaceState:function(e,t,n){e=e._reactInternalFiber;var r=ql(),i=mo.suspense;(i=fo(r=$l(r,e,i),i)).tag=1,i.payload=t,null!=n&&(i.callback=n),po(e,i),eu(e,r)},enqueueForceUpdate:function(e,t){e=e._reactInternalFiber;var n=ql(),r=mo.suspense;(r=fo(n=$l(n,e,r),r)).tag=2,null!=t&&(r.callback=t),po(e,r),eu(e,n)}};function Eo(e,t,n,r,i,o,a){return"function"==typeof(e=e.stateNode).shouldComponentUpdate?e.shouldComponentUpdate(r,o,a):!t.prototype||!t.prototype.isPureReactComponent||(!qr(n,r)||!qr(i,o))}function bo(e,t,n){var r=!1,i=fi,o=t.contextType;return"object"==typeof o&&null!==o?o=lo(o):(i=yi(t)?pi:di.current,o=(r=null!=(r=t.contextTypes))?gi(e,i):fi),t=new t(n,o),e.memoizedState=null!==t.state&&void 0!==t.state?t.state:null,t.updater=wo,e.stateNode=t,t._reactInternalFiber=e,r&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=i,e.__reactInternalMemoizedMaskedChildContext=o),t}function Lo(e,t,n,r){e=t.state,"function"==typeof t.componentWillReceiveProps&&t.componentWillReceiveProps(n,r),"function"==typeof t.UNSAFE_componentWillReceiveProps&&t.UNSAFE_componentWillReceiveProps(n,r),t.state!==e&&wo.enqueueReplaceState(t,t.state,null)}function xo(e,t,n,r){var i=e.stateNode;i.props=n,i.state=e.memoizedState,i.refs=Io;var o=t.contextType;"object"==typeof o&&null!==o?i.context=lo(o):(o=yi(t)?pi:di.current,i.context=gi(e,o)),null!==(o=e.updateQueue)&&(To(e,o,n,i,r),i.state=e.memoizedState),"function"==typeof(o=t.getDerivedStateFromProps)&&(ho(e,t,o,n),i.state=e.memoizedState),"function"==typeof t.getDerivedStateFromProps||"function"==typeof i.getSnapshotBeforeUpdate||"function"!=typeof i.UNSAFE_componentWillMount&&"function"!=typeof i.componentWillMount||(t=i.state,"function"==typeof i.componentWillMount&&i.componentWillMount(),"function"==typeof i.UNSAFE_componentWillMount&&i.UNSAFE_componentWillMount(),t!==i.state&&wo.enqueueReplaceState(i,i.state,null),null!==(o=e.updateQueue)&&(To(e,o,n,i,r),i.state=e.memoizedState)),"function"==typeof i.componentDidMount&&(e.effectTag|=4)}var zo=Array.isArray;function Oo(e,t,n){if(null!==(e=n.ref)&&"function"!=typeof e&&"object"!=typeof e){if(n._owner){if(n=n._owner){if(1!==n.tag)throw Error(a(309));var r=n.stateNode}if(!r)throw Error(a(147,e));var i=""+e;return null!==t&&null!==t.ref&&"function"==typeof t.ref&&t.ref._stringRef===i?t.ref:((t=function(e){var t=r.refs;t===Io&&(t=r.refs={}),null===e?delete t[i]:t[i]=e})._stringRef=i,t)}if("string"!=typeof e)throw Error(a(284));if(!n._owner)throw Error(a(290,e))}return e}function vo(e,t){if("textarea"!==e.type)throw Error(a(31,"[object Object]"===Object.prototype.toString.call(t)?"object with keys {"+Object.keys(t).join(", ")+"}":t,""))}function Ao(e){function t(t,n){if(e){var r=t.lastEffect;null!==r?(r.nextEffect=n,t.lastEffect=n):t.firstEffect=t.lastEffect=n,n.nextEffect=null,n.effectTag=8}}function n(n,r){if(!e)return null;for(;null!==r;)t(n,r),r=r.sibling;return null}function r(e,t){for(e=new Map;null!==t;)null!==t.key?e.set(t.key,t):e.set(t.index,t),t=t.sibling;return e}function i(e,t,n){return(e=Au(e,t)).index=0,e.sibling=null,e}function o(t,n,r){return t.index=r,e?null!==(r=t.alternate)?(r=r.index)<n?(t.effectTag=2,n):r:(t.effectTag=2,n):n}function l(t){return e&&null===t.alternate&&(t.effectTag=2),t}function u(e,t,n,r){return null===t||6!==t.tag?((t=ku(n,e.mode,r)).return=e,t):((t=i(t,n)).return=e,t)}function c(e,t,n,r){return null!==t&&t.elementType===n.type?((r=i(t,n.props)).ref=Oo(e,t,n),r.return=e,r):((r=Cu(n.type,n.key,n.props,null,e.mode,r)).ref=Oo(e,t,n),r.return=e,r)}function s(e,t,n,r){return null===t||4!==t.tag||t.stateNode.containerInfo!==n.containerInfo||t.stateNode.implementation!==n.implementation?((t=Uu(n,e.mode,r)).return=e,t):((t=i(t,n.children||[])).return=e,t)}function f(e,t,n,r,o){return null===t||7!==t.tag?((t=Su(n,e.mode,r,o)).return=e,t):((t=i(t,n)).return=e,t)}function d(e,t,n){if("string"==typeof t||"number"==typeof t)return(t=ku(""+t,e.mode,n)).return=e,t;if("object"==typeof t&&null!==t){switch(t.$$typeof){case U:return(n=Cu(t.type,t.key,t.props,null,e.mode,n)).ref=Oo(e,null,t),n.return=e,n;case P:return(t=Uu(t,e.mode,n)).return=e,t}if(zo(t)||K(t))return(t=Su(t,e.mode,n,null)).return=e,t;vo(e,t)}return null}function M(e,t,n,r){var i=null!==t?t.key:null;if("string"==typeof n||"number"==typeof n)return null!==i?null:u(e,t,""+n,r);if("object"==typeof n&&null!==n){switch(n.$$typeof){case U:return n.key===i?n.type===Q?f(e,t,n.props.children,r,i):c(e,t,n,r):null;case P:return n.key===i?s(e,t,n,r):null}if(zo(n)||K(n))return null!==i?null:f(e,t,n,r,null);vo(e,n)}return null}function p(e,t,n,r,i){if("string"==typeof r||"number"==typeof r)return u(t,e=e.get(n)||null,""+r,i);if("object"==typeof r&&null!==r){switch(r.$$typeof){case U:return e=e.get(null===r.key?n:r.key)||null,r.type===Q?f(t,e,r.props.children,i,r.key):c(t,e,r,i);case P:return s(t,e=e.get(null===r.key?n:r.key)||null,r,i)}if(zo(r)||K(r))return f(t,e=e.get(n)||null,r,i,null);vo(t,r)}return null}function g(i,a,l,u){for(var c=null,s=null,f=a,g=a=0,y=null;null!==f&&g<l.length;g++){f.index>g?(y=f,f=null):y=f.sibling;var N=M(i,f,l[g],u);if(null===N){null===f&&(f=y);break}e&&f&&null===N.alternate&&t(i,f),a=o(N,a,g),null===s?c=N:s.sibling=N,s=N,f=y}if(g===l.length)return n(i,f),c;if(null===f){for(;g<l.length;g++)null!==(f=d(i,l[g],u))&&(a=o(f,a,g),null===s?c=f:s.sibling=f,s=f);return c}for(f=r(i,f);g<l.length;g++)null!==(y=p(f,i,g,l[g],u))&&(e&&null!==y.alternate&&f.delete(null===y.key?g:y.key),a=o(y,a,g),null===s?c=y:s.sibling=y,s=y);return e&&f.forEach((function(e){return t(i,e)})),c}function y(i,l,u,c){var s=K(u);if("function"!=typeof s)throw Error(a(150));if(null==(u=s.call(u)))throw Error(a(151));for(var f=s=null,g=l,y=l=0,N=null,T=u.next();null!==g&&!T.done;y++,T=u.next()){g.index>y?(N=g,g=null):N=g.sibling;var D=M(i,g,T.value,c);if(null===D){null===g&&(g=N);break}e&&g&&null===D.alternate&&t(i,g),l=o(D,l,y),null===f?s=D:f.sibling=D,f=D,g=N}if(T.done)return n(i,g),s;if(null===g){for(;!T.done;y++,T=u.next())null!==(T=d(i,T.value,c))&&(l=o(T,l,y),null===f?s=T:f.sibling=T,f=T);return s}for(g=r(i,g);!T.done;y++,T=u.next())null!==(T=p(g,i,y,T.value,c))&&(e&&null!==T.alternate&&g.delete(null===T.key?y:T.key),l=o(T,l,y),null===f?s=T:f.sibling=T,f=T);return e&&g.forEach((function(e){return t(i,e)})),s}return function(e,r,o,u){var c="object"==typeof o&&null!==o&&o.type===Q&&null===o.key;c&&(o=o.props.children);var s="object"==typeof o&&null!==o;if(s)switch(o.$$typeof){case U:e:{for(s=o.key,c=r;null!==c;){if(c.key===s){if(7===c.tag?o.type===Q:c.elementType===o.type){n(e,c.sibling),(r=i(c,o.type===Q?o.props.children:o.props)).ref=Oo(e,c,o),r.return=e,e=r;break e}n(e,c);break}t(e,c),c=c.sibling}o.type===Q?((r=Su(o.props.children,e.mode,u,o.key)).return=e,e=r):((u=Cu(o.type,o.key,o.props,null,e.mode,u)).ref=Oo(e,r,o),u.return=e,e=u)}return l(e);case P:e:{for(c=o.key;null!==r;){if(r.key===c){if(4===r.tag&&r.stateNode.containerInfo===o.containerInfo&&r.stateNode.implementation===o.implementation){n(e,r.sibling),(r=i(r,o.children||[])).return=e,e=r;break e}n(e,r);break}t(e,r),r=r.sibling}(r=Uu(o,e.mode,u)).return=e,e=r}return l(e)}if("string"==typeof o||"number"==typeof o)return o=""+o,null!==r&&6===r.tag?(n(e,r.sibling),(r=i(r,o)).return=e,e=r):(n(e,r),(r=ku(o,e.mode,u)).return=e,e=r),l(e);if(zo(o))return g(e,r,o,u);if(K(o))return y(e,r,o,u);if(s&&vo(e,o),void 0===o&&!c)switch(e.tag){case 1:case 0:throw e=e.type,Error(a(152,e.displayName||e.name||"Component"))}return n(e,r)}}var Co=Ao(!0),So=Ao(!1),ko={},Uo={current:ko},Po={current:ko},Qo={current:ko};function Yo(e){if(e===ko)throw Error(a(174));return e}function _o(e,t){si(Qo,t),si(Po,e),si(Uo,ko);var n=t.nodeType;switch(n){case 9:case 11:t=(t=t.documentElement)?t.namespaceURI:Re(null,"");break;default:t=Re(t=(n=8===n?t.parentNode:t).namespaceURI||null,n=n.tagName)}ci(Uo),si(Uo,t)}function Ro(e){ci(Uo),ci(Po),ci(Qo)}function Bo(e){Yo(Qo.current);var t=Yo(Uo.current),n=Re(t,e.type);t!==n&&(si(Po,e),si(Uo,n))}function Go(e){Po.current===e&&(ci(Uo),ci(Po))}var Fo={current:0};function Wo(e){for(var t=e;null!==t;){if(13===t.tag){var n=t.memoizedState;if(null!==n&&(null===(n=n.dehydrated)||"$?"===n.data||"$!"===n.data))return t}else if(19===t.tag&&void 0!==t.memoizedProps.revealOrder){if(0!=(64&t.effectTag))return t}else if(null!==t.child){t.child.return=t,t=t.child;continue}if(t===e)break;for(;null===t.sibling;){if(null===t.return||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}function Ho(e,t){return{responder:e,props:t}}var Zo=C.ReactCurrentDispatcher,Vo=C.ReactCurrentBatchConfig,Xo=0,Ko=null,Jo=null,qo=null,$o=null,ea=null,ta=null,na=0,ra=null,ia=0,oa=!1,aa=null,la=0;function ua(){throw Error(a(321))}function ca(e,t){if(null===t)return!1;for(var n=0;n<t.length&&n<e.length;n++)if(!Kr(e[n],t[n]))return!1;return!0}function sa(e,t,n,r,i,o){if(Xo=o,Ko=t,qo=null!==e?e.memoizedState:null,Zo.current=null===qo?za:Oa,t=n(r,i),oa){do{oa=!1,la+=1,qo=null!==e?e.memoizedState:null,ta=$o,ra=ea=Jo=null,Zo.current=Oa,t=n(r,i)}while(oa);aa=null,la=0}if(Zo.current=xa,(e=Ko).memoizedState=$o,e.expirationTime=na,e.updateQueue=ra,e.effectTag|=ia,e=null!==Jo&&null!==Jo.next,Xo=0,ta=ea=$o=qo=Jo=Ko=null,na=0,ra=null,ia=0,e)throw Error(a(300));return t}function fa(){Zo.current=xa,Xo=0,ta=ea=$o=qo=Jo=Ko=null,na=0,ra=null,ia=0,oa=!1,aa=null,la=0}function da(){var e={memoizedState:null,baseState:null,queue:null,baseUpdate:null,next:null};return null===ea?$o=ea=e:ea=ea.next=e,ea}function Ma(){if(null!==ta)ta=(ea=ta).next,qo=null!==(Jo=qo)?Jo.next:null;else{if(null===qo)throw Error(a(310));var e={memoizedState:(Jo=qo).memoizedState,baseState:Jo.baseState,queue:Jo.queue,baseUpdate:Jo.baseUpdate,next:null};ea=null===ea?$o=e:ea.next=e,qo=Jo.next}return ea}function pa(e,t){return"function"==typeof t?t(e):t}function ga(e){var t=Ma(),n=t.queue;if(null===n)throw Error(a(311));if(n.lastRenderedReducer=e,0<la){var r=n.dispatch;if(null!==aa){var i=aa.get(n);if(void 0!==i){aa.delete(n);var o=t.memoizedState;do{o=e(o,i.action),i=i.next}while(null!==i);return Kr(o,t.memoizedState)||(Ra=!0),t.memoizedState=o,t.baseUpdate===n.last&&(t.baseState=o),n.lastRenderedState=o,[o,r]}}return[t.memoizedState,r]}r=n.last;var l=t.baseUpdate;if(o=t.baseState,null!==l?(null!==r&&(r.next=null),r=l.next):r=null!==r?r.next:null,null!==r){var u=i=null,c=r,s=!1;do{var f=c.expirationTime;f<Xo?(s||(s=!0,u=l,i=o),f>na&&du(na=f)):(fu(f,c.suspenseConfig),o=c.eagerReducer===e?c.eagerState:e(o,c.action)),l=c,c=c.next}while(null!==c&&c!==r);s||(u=l,i=o),Kr(o,t.memoizedState)||(Ra=!0),t.memoizedState=o,t.baseUpdate=u,t.baseState=i,n.lastRenderedState=o}return[t.memoizedState,n.dispatch]}function ya(e){var t=da();return"function"==typeof e&&(e=e()),t.memoizedState=t.baseState=e,e=(e=t.queue={last:null,dispatch:null,lastRenderedReducer:pa,lastRenderedState:e}).dispatch=La.bind(null,Ko,e),[t.memoizedState,e]}function Na(e){return ga(pa)}function Ta(e,t,n,r){return e={tag:e,create:t,destroy:n,deps:r,next:null},null===ra?(ra={lastEffect:null}).lastEffect=e.next=e:null===(t=ra.lastEffect)?ra.lastEffect=e.next=e:(n=t.next,t.next=e,e.next=n,ra.lastEffect=e),e}function Da(e,t,n,r){var i=da();ia|=e,i.memoizedState=Ta(t,n,void 0,void 0===r?null:r)}function ja(e,t,n,r){var i=Ma();r=void 0===r?null:r;var o=void 0;if(null!==Jo){var a=Jo.memoizedState;if(o=a.destroy,null!==r&&ca(r,a.deps))return void Ta(0,n,o,r)}ia|=e,i.memoizedState=Ta(t,n,o,r)}function ma(e,t){return Da(516,192,e,t)}function Ia(e,t){return ja(516,192,e,t)}function ha(e,t){return"function"==typeof t?(e=e(),t(e),function(){t(null)}):null!=t?(e=e(),t.current=e,function(){t.current=null}):void 0}function wa(){}function Ea(e,t){return da().memoizedState=[e,void 0===t?null:t],e}function ba(e,t){var n=Ma();t=void 0===t?null:t;var r=n.memoizedState;return null!==r&&null!==t&&ca(t,r[1])?r[0]:(n.memoizedState=[e,t],e)}function La(e,t,n){if(!(25>la))throw Error(a(301));var r=e.alternate;if(e===Ko||null!==r&&r===Ko)if(oa=!0,e={expirationTime:Xo,suspenseConfig:null,action:n,eagerReducer:null,eagerState:null,next:null},null===aa&&(aa=new Map),void 0===(n=aa.get(t)))aa.set(t,e);else{for(t=n;null!==t.next;)t=t.next;t.next=e}else{var i=ql(),o=mo.suspense;o={expirationTime:i=$l(i,e,o),suspenseConfig:o,action:n,eagerReducer:null,eagerState:null,next:null};var l=t.last;if(null===l)o.next=o;else{var u=l.next;null!==u&&(o.next=u),l.next=o}if(t.last=o,0===e.expirationTime&&(null===r||0===r.expirationTime)&&null!==(r=t.lastRenderedReducer))try{var c=t.lastRenderedState,s=r(c,n);if(o.eagerReducer=r,o.eagerState=s,Kr(s,c))return}catch(f){}eu(e,i)}}var xa={readContext:lo,useCallback:ua,useContext:ua,useEffect:ua,useImperativeHandle:ua,useLayoutEffect:ua,useMemo:ua,useReducer:ua,useRef:ua,useState:ua,useDebugValue:ua,useResponder:ua,useDeferredValue:ua,useTransition:ua},za={readContext:lo,useCallback:Ea,useContext:lo,useEffect:ma,useImperativeHandle:function(e,t,n){return n=null!=n?n.concat([e]):null,Da(4,36,ha.bind(null,t,e),n)},useLayoutEffect:function(e,t){return Da(4,36,e,t)},useMemo:function(e,t){var n=da();return t=void 0===t?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var r=da();return t=void 0!==n?n(t):t,r.memoizedState=r.baseState=t,e=(e=r.queue={last:null,dispatch:null,lastRenderedReducer:e,lastRenderedState:t}).dispatch=La.bind(null,Ko,e),[r.memoizedState,e]},useRef:function(e){return e={current:e},da().memoizedState=e},useState:ya,useDebugValue:wa,useResponder:Ho,useDeferredValue:function(e,t){var n=ya(e),r=n[0],i=n[1];return ma((function(){o.unstable_next((function(){var n=Vo.suspense;Vo.suspense=void 0===t?null:t;try{i(e)}finally{Vo.suspense=n}}))}),[e,t]),r},useTransition:function(e){var t=ya(!1),n=t[0],r=t[1];return[Ea((function(t){r(!0),o.unstable_next((function(){var n=Vo.suspense;Vo.suspense=void 0===e?null:e;try{r(!1),t()}finally{Vo.suspense=n}}))}),[e,n]),n]}},Oa={readContext:lo,useCallback:ba,useContext:lo,useEffect:Ia,useImperativeHandle:function(e,t,n){return n=null!=n?n.concat([e]):null,ja(4,36,ha.bind(null,t,e),n)},useLayoutEffect:function(e,t){return ja(4,36,e,t)},useMemo:function(e,t){var n=Ma();t=void 0===t?null:t;var r=n.memoizedState;return null!==r&&null!==t&&ca(t,r[1])?r[0]:(e=e(),n.memoizedState=[e,t],e)},useReducer:ga,useRef:function(){return Ma().memoizedState},useState:Na,useDebugValue:wa,useResponder:Ho,useDeferredValue:function(e,t){var n=Na(),r=n[0],i=n[1];return Ia((function(){o.unstable_next((function(){var n=Vo.suspense;Vo.suspense=void 0===t?null:t;try{i(e)}finally{Vo.suspense=n}}))}),[e,t]),r},useTransition:function(e){var t=Na(),n=t[0],r=t[1];return[ba((function(t){r(!0),o.unstable_next((function(){var n=Vo.suspense;Vo.suspense=void 0===e?null:e;try{r(!1),t()}finally{Vo.suspense=n}}))}),[e,n]),n]}},va=null,Aa=null,Ca=!1;function Sa(e,t){var n=Ou(5,null,null,0);n.elementType="DELETED",n.type="DELETED",n.stateNode=t,n.return=e,n.effectTag=8,null!==e.lastEffect?(e.lastEffect.nextEffect=n,e.lastEffect=n):e.firstEffect=e.lastEffect=n}function ka(e,t){switch(e.tag){case 5:var n=e.type;return null!==(t=1!==t.nodeType||n.toLowerCase()!==t.nodeName.toLowerCase()?null:t)&&(e.stateNode=t,!0);case 6:return null!==(t=""===e.pendingProps||3!==t.nodeType?null:t)&&(e.stateNode=t,!0);case 13:default:return!1}}function Ua(e){if(Ca){var t=Aa;if(t){var n=t;if(!ka(e,t)){if(!(t=nr(n.nextSibling))||!ka(e,t))return e.effectTag=-1025&e.effectTag|2,Ca=!1,void(va=e);Sa(va,n)}va=e,Aa=nr(t.firstChild)}else e.effectTag=-1025&e.effectTag|2,Ca=!1,va=e}}function Pa(e){for(e=e.return;null!==e&&5!==e.tag&&3!==e.tag&&13!==e.tag;)e=e.return;va=e}function Qa(e){if(e!==va)return!1;if(!Ca)return Pa(e),Ca=!0,!1;var t=e.type;if(5!==e.tag||"head"!==t&&"body"!==t&&!$n(t,e.memoizedProps))for(t=Aa;t;)Sa(e,t),t=nr(t.nextSibling);if(Pa(e),13===e.tag){if(!(e=null!==(e=e.memoizedState)?e.dehydrated:null))throw Error(a(317));e:{for(e=e.nextSibling,t=0;e;){if(8===e.nodeType){var n=e.data;if("/$"===n){if(0===t){Aa=nr(e.nextSibling);break e}t--}else"$"!==n&&"$!"!==n&&"$?"!==n||t++}e=e.nextSibling}Aa=null}}else Aa=va?nr(e.stateNode.nextSibling):null;return!0}function Ya(){Aa=va=null,Ca=!1}var _a=C.ReactCurrentOwner,Ra=!1;function Ba(e,t,n,r){t.child=null===e?So(t,null,n,r):Co(t,e.child,n,r)}function Ga(e,t,n,r,i){n=n.render;var o=t.ref;return ao(t,i),r=sa(e,t,n,r,o,i),null===e||Ra?(t.effectTag|=1,Ba(e,t,r,i),t.child):(t.updateQueue=e.updateQueue,t.effectTag&=-517,e.expirationTime<=i&&(e.expirationTime=0),ol(e,t,i))}function Fa(e,t,n,r,i,o){if(null===e){var a=n.type;return"function"!=typeof a||vu(a)||void 0!==a.defaultProps||null!==n.compare||void 0!==n.defaultProps?((e=Cu(n.type,null,r,null,t.mode,o)).ref=t.ref,e.return=t,t.child=e):(t.tag=15,t.type=a,Wa(e,t,a,r,i,o))}return a=e.child,i<o&&(i=a.memoizedProps,(n=null!==(n=n.compare)?n:qr)(i,r)&&e.ref===t.ref)?ol(e,t,o):(t.effectTag|=1,(e=Au(a,r)).ref=t.ref,e.return=t,t.child=e)}function Wa(e,t,n,r,i,o){return null!==e&&qr(e.memoizedProps,r)&&e.ref===t.ref&&(Ra=!1,i<o)?ol(e,t,o):Za(e,t,n,r,o)}function Ha(e,t){var n=t.ref;(null===e&&null!==n||null!==e&&e.ref!==n)&&(t.effectTag|=128)}function Za(e,t,n,r,i){var o=yi(n)?pi:di.current;return o=gi(t,o),ao(t,i),n=sa(e,t,n,r,o,i),null===e||Ra?(t.effectTag|=1,Ba(e,t,n,i),t.child):(t.updateQueue=e.updateQueue,t.effectTag&=-517,e.expirationTime<=i&&(e.expirationTime=0),ol(e,t,i))}function Va(e,t,n,r,i){if(yi(n)){var o=!0;mi(t)}else o=!1;if(ao(t,i),null===t.stateNode)null!==e&&(e.alternate=null,t.alternate=null,t.effectTag|=2),bo(t,n,r),xo(t,n,r,i),r=!0;else if(null===e){var a=t.stateNode,l=t.memoizedProps;a.props=l;var u=a.context,c=n.contextType;"object"==typeof c&&null!==c?c=lo(c):c=gi(t,c=yi(n)?pi:di.current);var s=n.getDerivedStateFromProps,f="function"==typeof s||"function"==typeof a.getSnapshotBeforeUpdate;f||"function"!=typeof a.UNSAFE_componentWillReceiveProps&&"function"!=typeof a.componentWillReceiveProps||(l!==r||u!==c)&&Lo(t,a,r,c),uo=!1;var d=t.memoizedState;u=a.state=d;var M=t.updateQueue;null!==M&&(To(t,M,r,a,i),u=t.memoizedState),l!==r||d!==u||Mi.current||uo?("function"==typeof s&&(ho(t,n,s,r),u=t.memoizedState),(l=uo||Eo(t,n,l,r,d,u,c))?(f||"function"!=typeof a.UNSAFE_componentWillMount&&"function"!=typeof a.componentWillMount||("function"==typeof a.componentWillMount&&a.componentWillMount(),"function"==typeof a.UNSAFE_componentWillMount&&a.UNSAFE_componentWillMount()),"function"==typeof a.componentDidMount&&(t.effectTag|=4)):("function"==typeof a.componentDidMount&&(t.effectTag|=4),t.memoizedProps=r,t.memoizedState=u),a.props=r,a.state=u,a.context=c,r=l):("function"==typeof a.componentDidMount&&(t.effectTag|=4),r=!1)}else a=t.stateNode,l=t.memoizedProps,a.props=t.type===t.elementType?l:Ji(t.type,l),u=a.context,"object"==typeof(c=n.contextType)&&null!==c?c=lo(c):c=gi(t,c=yi(n)?pi:di.current),(f="function"==typeof(s=n.getDerivedStateFromProps)||"function"==typeof a.getSnapshotBeforeUpdate)||"function"!=typeof a.UNSAFE_componentWillReceiveProps&&"function"!=typeof a.componentWillReceiveProps||(l!==r||u!==c)&&Lo(t,a,r,c),uo=!1,u=t.memoizedState,d=a.state=u,null!==(M=t.updateQueue)&&(To(t,M,r,a,i),d=t.memoizedState),l!==r||u!==d||Mi.current||uo?("function"==typeof s&&(ho(t,n,s,r),d=t.memoizedState),(s=uo||Eo(t,n,l,r,u,d,c))?(f||"function"!=typeof a.UNSAFE_componentWillUpdate&&"function"!=typeof a.componentWillUpdate||("function"==typeof a.componentWillUpdate&&a.componentWillUpdate(r,d,c),"function"==typeof a.UNSAFE_componentWillUpdate&&a.UNSAFE_componentWillUpdate(r,d,c)),"function"==typeof a.componentDidUpdate&&(t.effectTag|=4),"function"==typeof a.getSnapshotBeforeUpdate&&(t.effectTag|=256)):("function"!=typeof a.componentDidUpdate||l===e.memoizedProps&&u===e.memoizedState||(t.effectTag|=4),"function"!=typeof a.getSnapshotBeforeUpdate||l===e.memoizedProps&&u===e.memoizedState||(t.effectTag|=256),t.memoizedProps=r,t.memoizedState=d),a.props=r,a.state=d,a.context=c,r=s):("function"!=typeof a.componentDidUpdate||l===e.memoizedProps&&u===e.memoizedState||(t.effectTag|=4),"function"!=typeof a.getSnapshotBeforeUpdate||l===e.memoizedProps&&u===e.memoizedState||(t.effectTag|=256),r=!1);return Xa(e,t,n,r,o,i)}function Xa(e,t,n,r,i,o){Ha(e,t);var a=0!=(64&t.effectTag);if(!r&&!a)return i&&Ii(t,n,!1),ol(e,t,o);r=t.stateNode,_a.current=t;var l=a&&"function"!=typeof n.getDerivedStateFromError?null:r.render();return t.effectTag|=1,null!==e&&a?(t.child=Co(t,e.child,null,o),t.child=Co(t,null,l,o)):Ba(e,t,l,o),t.memoizedState=r.state,i&&Ii(t,n,!0),t.child}function Ka(e){var t=e.stateNode;t.pendingContext?Di(0,t.pendingContext,t.pendingContext!==t.context):t.context&&Di(0,t.context,!1),_o(e,t.containerInfo)}var Ja,qa,$a,el={dehydrated:null,retryTime:0};function tl(e,t,n){var r,i=t.mode,o=t.pendingProps,a=Fo.current,l=!1;if((r=0!=(64&t.effectTag))||(r=0!=(2&a)&&(null===e||null!==e.memoizedState)),r?(l=!0,t.effectTag&=-65):null!==e&&null===e.memoizedState||void 0===o.fallback||!0===o.unstable_avoidThisFallback||(a|=1),si(Fo,1&a),null===e){if(void 0!==o.fallback&&Ua(t),l){if(l=o.fallback,(o=Su(null,i,0,null)).return=t,0==(2&t.mode))for(e=null!==t.memoizedState?t.child.child:t.child,o.child=e;null!==e;)e.return=o,e=e.sibling;return(n=Su(l,i,n,null)).return=t,o.sibling=n,t.memoizedState=el,t.child=o,n}return i=o.children,t.memoizedState=null,t.child=So(t,null,i,n)}if(null!==e.memoizedState){if(i=(e=e.child).sibling,l){if(o=o.fallback,(n=Au(e,e.pendingProps)).return=t,0==(2&t.mode)&&(l=null!==t.memoizedState?t.child.child:t.child)!==e.child)for(n.child=l;null!==l;)l.return=n,l=l.sibling;return(i=Au(i,o,i.expirationTime)).return=t,n.sibling=i,n.childExpirationTime=0,t.memoizedState=el,t.child=n,i}return n=Co(t,e.child,o.children,n),t.memoizedState=null,t.child=n}if(e=e.child,l){if(l=o.fallback,(o=Su(null,i,0,null)).return=t,o.child=e,null!==e&&(e.return=o),0==(2&t.mode))for(e=null!==t.memoizedState?t.child.child:t.child,o.child=e;null!==e;)e.return=o,e=e.sibling;return(n=Su(l,i,n,null)).return=t,o.sibling=n,n.effectTag|=2,o.childExpirationTime=0,t.memoizedState=el,t.child=o,n}return t.memoizedState=null,t.child=Co(t,e,o.children,n)}function nl(e,t){e.expirationTime<t&&(e.expirationTime=t);var n=e.alternate;null!==n&&n.expirationTime<t&&(n.expirationTime=t),oo(e.return,t)}function rl(e,t,n,r,i,o){var a=e.memoizedState;null===a?e.memoizedState={isBackwards:t,rendering:null,last:r,tail:n,tailExpiration:0,tailMode:i,lastEffect:o}:(a.isBackwards=t,a.rendering=null,a.last=r,a.tail=n,a.tailExpiration=0,a.tailMode=i,a.lastEffect=o)}function il(e,t,n){var r=t.pendingProps,i=r.revealOrder,o=r.tail;if(Ba(e,t,r.children,n),0!=(2&(r=Fo.current)))r=1&r|2,t.effectTag|=64;else{if(null!==e&&0!=(64&e.effectTag))e:for(e=t.child;null!==e;){if(13===e.tag)null!==e.memoizedState&&nl(e,n);else if(19===e.tag)nl(e,n);else if(null!==e.child){e.child.return=e,e=e.child;continue}if(e===t)break e;for(;null===e.sibling;){if(null===e.return||e.return===t)break e;e=e.return}e.sibling.return=e.return,e=e.sibling}r&=1}if(si(Fo,r),0==(2&t.mode))t.memoizedState=null;else switch(i){case"forwards":for(n=t.child,i=null;null!==n;)null!==(e=n.alternate)&&null===Wo(e)&&(i=n),n=n.sibling;null===(n=i)?(i=t.child,t.child=null):(i=n.sibling,n.sibling=null),rl(t,!1,i,n,o,t.lastEffect);break;case"backwards":for(n=null,i=t.child,t.child=null;null!==i;){if(null!==(e=i.alternate)&&null===Wo(e)){t.child=i;break}e=i.sibling,i.sibling=n,n=i,i=e}rl(t,!0,n,null,o,t.lastEffect);break;case"together":rl(t,!1,null,null,void 0,t.lastEffect);break;default:t.memoizedState=null}return t.child}function ol(e,t,n){null!==e&&(t.dependencies=e.dependencies);var r=t.expirationTime;if(0!==r&&du(r),t.childExpirationTime<n)return null;if(null!==e&&t.child!==e.child)throw Error(a(153));if(null!==t.child){for(n=Au(e=t.child,e.pendingProps,e.expirationTime),t.child=n,n.return=t;null!==e.sibling;)e=e.sibling,(n=n.sibling=Au(e,e.pendingProps,e.expirationTime)).return=t;n.sibling=null}return t.child}function al(e){e.effectTag|=4}function ll(e,t){switch(e.tailMode){case"hidden":t=e.tail;for(var n=null;null!==t;)null!==t.alternate&&(n=t),t=t.sibling;null===n?e.tail=null:n.sibling=null;break;case"collapsed":n=e.tail;for(var r=null;null!==n;)null!==n.alternate&&(r=n),n=n.sibling;null===r?t||null===e.tail?e.tail=null:e.tail.sibling=null:r.sibling=null}}function ul(e){switch(e.tag){case 1:yi(e.type)&&Ni();var t=e.effectTag;return 4096&t?(e.effectTag=-4097&t|64,e):null;case 3:if(Ro(),Ti(),0!=(64&(t=e.effectTag)))throw Error(a(285));return e.effectTag=-4097&t|64,e;case 5:return Go(e),null;case 13:return ci(Fo),4096&(t=e.effectTag)?(e.effectTag=-4097&t|64,e):null;case 19:return ci(Fo),null;case 4:return Ro(),null;case 10:return io(e),null;default:return null}}function cl(e,t){return{value:e,source:t,stack:q(t)}}Ja=function(e,t){for(var n=t.child;null!==n;){if(5===n.tag||6===n.tag)e.appendChild(n.stateNode);else if(4!==n.tag&&null!==n.child){n.child.return=n,n=n.child;continue}if(n===t)break;for(;null===n.sibling;){if(null===n.return||n.return===t)return;n=n.return}n.sibling.return=n.return,n=n.sibling}},qa=function(e,t,n,r,o){var a=e.memoizedProps;if(a!==r){var l,u,c=t.stateNode;switch(Yo(Uo.current),e=null,n){case"input":a=be(c,a),r=be(c,r),e=[];break;case"option":a=Ae(c,a),r=Ae(c,r),e=[];break;case"select":a=i({},a,{value:void 0}),r=i({},r,{value:void 0}),e=[];break;case"textarea":a=Se(c,a),r=Se(c,r),e=[];break;default:"function"!=typeof a.onClick&&"function"==typeof r.onClick&&(c.onclick=Fn)}for(l in Rn(n,r),n=null,a)if(!r.hasOwnProperty(l)&&a.hasOwnProperty(l)&&null!=a[l])if("style"===l)for(u in c=a[l])c.hasOwnProperty(u)&&(n||(n={}),n[u]="");else"dangerouslySetInnerHTML"!==l&&"children"!==l&&"suppressContentEditableWarning"!==l&&"suppressHydrationWarning"!==l&&"autoFocus"!==l&&(M.hasOwnProperty(l)?e||(e=[]):(e=e||[]).push(l,null));for(l in r){var s=r[l];if(c=null!=a?a[l]:void 0,r.hasOwnProperty(l)&&s!==c&&(null!=s||null!=c))if("style"===l)if(c){for(u in c)!c.hasOwnProperty(u)||s&&s.hasOwnProperty(u)||(n||(n={}),n[u]="");for(u in s)s.hasOwnProperty(u)&&c[u]!==s[u]&&(n||(n={}),n[u]=s[u])}else n||(e||(e=[]),e.push(l,n)),n=s;else"dangerouslySetInnerHTML"===l?(s=s?s.__html:void 0,c=c?c.__html:void 0,null!=s&&c!==s&&(e=e||[]).push(l,""+s)):"children"===l?c===s||"string"!=typeof s&&"number"!=typeof s||(e=e||[]).push(l,""+s):"suppressContentEditableWarning"!==l&&"suppressHydrationWarning"!==l&&(M.hasOwnProperty(l)?(null!=s&&Gn(o,l),e||c===s||(e=[])):(e=e||[]).push(l,s))}n&&(e=e||[]).push("style",n),o=e,(t.updateQueue=o)&&al(t)}},$a=function(e,t,n,r){n!==r&&al(t)};var sl="function"==typeof WeakSet?WeakSet:Set;function fl(e,t){var n=t.source,r=t.stack;null===r&&null!==n&&(r=q(n)),null!==n&&J(n.type),t=t.value,null!==e&&1===e.tag&&J(e.type);try{console.error(t)}catch(i){setTimeout((function(){throw i}))}}function dl(e){var t=e.ref;if(null!==t)if("function"==typeof t)try{t(null)}catch(n){wu(e,n)}else t.current=null}function Ml(e,t){switch(t.tag){case 0:case 11:case 15:pl(2,0,t);break;case 1:if(256&t.effectTag&&null!==e){var n=e.memoizedProps,r=e.memoizedState;t=(e=t.stateNode).getSnapshotBeforeUpdate(t.elementType===t.type?n:Ji(t.type,n),r),e.__reactInternalSnapshotBeforeUpdate=t}break;case 3:case 5:case 6:case 4:case 17:break;default:throw Error(a(163))}}function pl(e,t,n){if(null!==(n=null!==(n=n.updateQueue)?n.lastEffect:null)){var r=n=n.next;do{if(0!=(r.tag&e)){var i=r.destroy;r.destroy=void 0,void 0!==i&&i()}0!=(r.tag&t)&&(i=r.create,r.destroy=i()),r=r.next}while(r!==n)}}function gl(e,t,n){switch("function"==typeof xu&&xu(t),t.tag){case 0:case 11:case 14:case 15:if(null!==(e=t.updateQueue)&&null!==(e=e.lastEffect)){var r=e.next;Fi(97<n?97:n,(function(){var e=r;do{var n=e.destroy;if(void 0!==n){var i=t;try{n()}catch(o){wu(i,o)}}e=e.next}while(e!==r)}))}break;case 1:dl(t),"function"==typeof(n=t.stateNode).componentWillUnmount&&function(e,t){try{t.props=e.memoizedProps,t.state=e.memoizedState,t.componentWillUnmount()}catch(n){wu(e,n)}}(t,n);break;case 5:dl(t);break;case 4:Dl(e,t,n)}}function yl(e){var t=e.alternate;e.return=null,e.child=null,e.memoizedState=null,e.updateQueue=null,e.dependencies=null,e.alternate=null,e.firstEffect=null,e.lastEffect=null,e.pendingProps=null,e.memoizedProps=null,null!==t&&yl(t)}function Nl(e){return 5===e.tag||3===e.tag||4===e.tag}function Tl(e){e:{for(var t=e.return;null!==t;){if(Nl(t)){var n=t;break e}t=t.return}throw Error(a(160))}switch(t=n.stateNode,n.tag){case 5:var r=!1;break;case 3:case 4:t=t.containerInfo,r=!0;break;default:throw Error(a(161))}16&n.effectTag&&(Fe(t,""),n.effectTag&=-17);e:t:for(n=e;;){for(;null===n.sibling;){if(null===n.return||Nl(n.return)){n=null;break e}n=n.return}for(n.sibling.return=n.return,n=n.sibling;5!==n.tag&&6!==n.tag&&18!==n.tag;){if(2&n.effectTag)continue t;if(null===n.child||4===n.tag)continue t;n.child.return=n,n=n.child}if(!(2&n.effectTag)){n=n.stateNode;break e}}for(var i=e;;){var o=5===i.tag||6===i.tag;if(o){var l=o?i.stateNode:i.stateNode.instance;if(n)if(r){var u=l;l=n,8===(o=t).nodeType?o.parentNode.insertBefore(u,l):o.insertBefore(u,l)}else t.insertBefore(l,n);else r?(8===(u=t).nodeType?(o=u.parentNode).insertBefore(l,u):(o=u).appendChild(l),null!=(u=u._reactRootContainer)||null!==o.onclick||(o.onclick=Fn)):t.appendChild(l)}else if(4!==i.tag&&null!==i.child){i.child.return=i,i=i.child;continue}if(i===e)break;for(;null===i.sibling;){if(null===i.return||i.return===e)return;i=i.return}i.sibling.return=i.return,i=i.sibling}}function Dl(e,t,n){for(var r,i,o=t,l=!1;;){if(!l){l=o.return;e:for(;;){if(null===l)throw Error(a(160));switch(r=l.stateNode,l.tag){case 5:i=!1;break e;case 3:case 4:r=r.containerInfo,i=!0;break e}l=l.return}l=!0}if(5===o.tag||6===o.tag){e:for(var u=e,c=o,s=n,f=c;;)if(gl(u,f,s),null!==f.child&&4!==f.tag)f.child.return=f,f=f.child;else{if(f===c)break;for(;null===f.sibling;){if(null===f.return||f.return===c)break e;f=f.return}f.sibling.return=f.return,f=f.sibling}i?(u=r,c=o.stateNode,8===u.nodeType?u.parentNode.removeChild(c):u.removeChild(c)):r.removeChild(o.stateNode)}else if(4===o.tag){if(null!==o.child){r=o.stateNode.containerInfo,i=!0,o.child.return=o,o=o.child;continue}}else if(gl(e,o,n),null!==o.child){o.child.return=o,o=o.child;continue}if(o===t)break;for(;null===o.sibling;){if(null===o.return||o.return===t)return;4===(o=o.return).tag&&(l=!1)}o.sibling.return=o.return,o=o.sibling}}function jl(e,t){switch(t.tag){case 0:case 11:case 14:case 15:pl(4,8,t);break;case 1:break;case 5:var n=t.stateNode;if(null!=n){var r=t.memoizedProps,i=null!==e?e.memoizedProps:r;e=t.type;var o=t.updateQueue;if(t.updateQueue=null,null!==o){for(n[ar]=r,"input"===e&&"radio"===r.type&&null!=r.name&&xe(n,r),Bn(e,i),t=Bn(e,r),i=0;i<o.length;i+=2){var l=o[i],u=o[i+1];"style"===l?Yn(n,u):"dangerouslySetInnerHTML"===l?Ge(n,u):"children"===l?Fe(n,u):Ie(n,l,u,t)}switch(e){case"input":ze(n,r);break;case"textarea":Ue(n,r);break;case"select":t=n._wrapperState.wasMultiple,n._wrapperState.wasMultiple=!!r.multiple,null!=(e=r.value)?Ce(n,!!r.multiple,e,!1):t!==!!r.multiple&&(null!=r.defaultValue?Ce(n,!!r.multiple,r.defaultValue,!0):Ce(n,!!r.multiple,r.multiple?[]:"",!1))}}}break;case 6:if(null===t.stateNode)throw Error(a(162));t.stateNode.nodeValue=t.memoizedProps;break;case 3:(t=t.stateNode).hydrate&&(t.hydrate=!1,bt(t.containerInfo));break;case 12:break;case 13:if(n=t,null===t.memoizedState?r=!1:(r=!0,n=t.child,_l=Ri()),null!==n)e:for(e=n;;){if(5===e.tag)o=e.stateNode,r?"function"==typeof(o=o.style).setProperty?o.setProperty("display","none","important"):o.display="none":(o=e.stateNode,i=null!=(i=e.memoizedProps.style)&&i.hasOwnProperty("display")?i.display:null,o.style.display=Qn("display",i));else if(6===e.tag)e.stateNode.nodeValue=r?"":e.memoizedProps;else{if(13===e.tag&&null!==e.memoizedState&&null===e.memoizedState.dehydrated){(o=e.child.sibling).return=e,e=o;continue}if(null!==e.child){e.child.return=e,e=e.child;continue}}if(e===n)break e;for(;null===e.sibling;){if(null===e.return||e.return===n)break e;e=e.return}e.sibling.return=e.return,e=e.sibling}ml(t);break;case 19:ml(t);break;case 17:case 20:case 21:break;default:throw Error(a(163))}}function ml(e){var t=e.updateQueue;if(null!==t){e.updateQueue=null;var n=e.stateNode;null===n&&(n=e.stateNode=new sl),t.forEach((function(t){var r=bu.bind(null,e,t);n.has(t)||(n.add(t),t.then(r,r))}))}}var Il="function"==typeof WeakMap?WeakMap:Map;function hl(e,t,n){(n=fo(n,null)).tag=3,n.payload={element:null};var r=t.value;return n.callback=function(){Bl||(Bl=!0,Gl=r),fl(e,t)},n}function wl(e,t,n){(n=fo(n,null)).tag=3;var r=e.type.getDerivedStateFromError;if("function"==typeof r){var i=t.value;n.payload=function(){return fl(e,t),r(i)}}var o=e.stateNode;return null!==o&&"function"==typeof o.componentDidCatch&&(n.callback=function(){"function"!=typeof r&&(null===Fl?Fl=new Set([this]):Fl.add(this),fl(e,t));var n=t.stack;this.componentDidCatch(t.value,{componentStack:null!==n?n:""})}),n}var El,bl=Math.ceil,Ll=C.ReactCurrentDispatcher,xl=C.ReactCurrentOwner,zl=0,Ol=null,vl=null,Al=0,Cl=0,Sl=null,kl=1073741823,Ul=1073741823,Pl=null,Ql=0,Yl=!1,_l=0,Rl=null,Bl=!1,Gl=null,Fl=null,Wl=!1,Hl=null,Zl=90,Vl=null,Xl=0,Kl=null,Jl=0;function ql(){return 0!=(48&zl)?1073741821-(Ri()/10|0):0!==Jl?Jl:Jl=1073741821-(Ri()/10|0)}function $l(e,t,n){if(0==(2&(t=t.mode)))return 1073741823;var r=Bi();if(0==(4&t))return 99===r?1073741823:1073741822;if(0!=(16&zl))return Al;if(null!==n)e=Ki(e,0|n.timeoutMs||5e3,250);else switch(r){case 99:e=1073741823;break;case 98:e=Ki(e,150,100);break;case 97:case 96:e=Ki(e,5e3,250);break;case 95:e=2;break;default:throw Error(a(326))}return null!==Ol&&e===Al&&--e,e}function eu(e,t){if(50<Xl)throw Xl=0,Kl=null,Error(a(185));if(null!==(e=tu(e,t))){var n=Bi();1073741823===t?0!=(8&zl)&&0==(48&zl)?ou(e):(ru(e),0===zl&&Zi()):ru(e),0==(4&zl)||98!==n&&99!==n||(null===Vl?Vl=new Map([[e,t]]):(void 0===(n=Vl.get(e))||n>t)&&Vl.set(e,t))}}function tu(e,t){e.expirationTime<t&&(e.expirationTime=t);var n=e.alternate;null!==n&&n.expirationTime<t&&(n.expirationTime=t);var r=e.return,i=null;if(null===r&&3===e.tag)i=e.stateNode;else for(;null!==r;){if(n=r.alternate,r.childExpirationTime<t&&(r.childExpirationTime=t),null!==n&&n.childExpirationTime<t&&(n.childExpirationTime=t),null===r.return&&3===r.tag){i=r.stateNode;break}r=r.return}return null!==i&&(Ol===i&&(du(t),4===Cl&&Yu(i,Al)),_u(i,t)),i}function nu(e){var t=e.lastExpiredTime;return 0!==t?t:Qu(e,t=e.firstPendingTime)?(t=e.lastPingedTime)>(e=e.nextKnownPendingLevel)?t:e:t}function ru(e){if(0!==e.lastExpiredTime)e.callbackExpirationTime=1073741823,e.callbackPriority=99,e.callbackNode=Hi(ou.bind(null,e));else{var t=nu(e),n=e.callbackNode;if(0===t)null!==n&&(e.callbackNode=null,e.callbackExpirationTime=0,e.callbackPriority=90);else{var r=ql();if(1073741823===t?r=99:1===t||2===t?r=95:r=0>=(r=10*(1073741821-t)-10*(1073741821-r))?99:250>=r?98:5250>=r?97:95,null!==n){var i=e.callbackPriority;if(e.callbackExpirationTime===t&&i>=r)return;n!==ki&&Ei(n)}e.callbackExpirationTime=t,e.callbackPriority=r,t=1073741823===t?Hi(ou.bind(null,e)):Wi(r,iu.bind(null,e),{timeout:10*(1073741821-t)-Ri()}),e.callbackNode=t}}}function iu(e,t){if(Jl=0,t)return Ru(e,t=ql()),ru(e),null;var n=nu(e);if(0!==n){if(t=e.callbackNode,0!=(48&zl))throw Error(a(327));if(mu(),e===Ol&&n===Al||uu(e,n),null!==vl){var r=zl;zl|=16;for(var i=su();;)try{pu();break}catch(u){cu(e,u)}if(no(),zl=r,Ll.current=i,1===Cl)throw t=Sl,uu(e,n),Yu(e,n),ru(e),t;if(null===vl)switch(i=e.finishedWork=e.current.alternate,e.finishedExpirationTime=n,r=Cl,Ol=null,r){case 0:case 1:throw Error(a(345));case 2:Ru(e,2<n?2:n);break;case 3:if(Yu(e,n),n===(r=e.lastSuspendedTime)&&(e.nextKnownPendingLevel=Nu(i)),1073741823===kl&&10<(i=_l+500-Ri())){if(Yl){var o=e.lastPingedTime;if(0===o||o>=n){e.lastPingedTime=n,uu(e,n);break}}if(0!==(o=nu(e))&&o!==n)break;if(0!==r&&r!==n){e.lastPingedTime=r;break}e.timeoutHandle=er(Tu.bind(null,e),i);break}Tu(e);break;case 4:if(Yu(e,n),n===(r=e.lastSuspendedTime)&&(e.nextKnownPendingLevel=Nu(i)),Yl&&(0===(i=e.lastPingedTime)||i>=n)){e.lastPingedTime=n,uu(e,n);break}if(0!==(i=nu(e))&&i!==n)break;if(0!==r&&r!==n){e.lastPingedTime=r;break}if(1073741823!==Ul?r=10*(1073741821-Ul)-Ri():1073741823===kl?r=0:(r=10*(1073741821-kl)-5e3,0>(r=(i=Ri())-r)&&(r=0),(n=10*(1073741821-n)-i)<(r=(120>r?120:480>r?480:1080>r?1080:1920>r?1920:3e3>r?3e3:4320>r?4320:1960*bl(r/1960))-r)&&(r=n)),10<r){e.timeoutHandle=er(Tu.bind(null,e),r);break}Tu(e);break;case 5:if(1073741823!==kl&&null!==Pl){o=kl;var l=Pl;if(0>=(r=0|l.busyMinDurationMs)?r=0:(i=0|l.busyDelayMs,r=(o=Ri()-(10*(1073741821-o)-(0|l.timeoutMs||5e3)))<=i?0:i+r-o),10<r){Yu(e,n),e.timeoutHandle=er(Tu.bind(null,e),r);break}}Tu(e);break;default:throw Error(a(329))}if(ru(e),e.callbackNode===t)return iu.bind(null,e)}}return null}function ou(e){var t=e.lastExpiredTime;if(t=0!==t?t:1073741823,e.finishedExpirationTime===t)Tu(e);else{if(0!=(48&zl))throw Error(a(327));if(mu(),e===Ol&&t===Al||uu(e,t),null!==vl){var n=zl;zl|=16;for(var r=su();;)try{Mu();break}catch(i){cu(e,i)}if(no(),zl=n,Ll.current=r,1===Cl)throw n=Sl,uu(e,t),Yu(e,t),ru(e),n;if(null!==vl)throw Error(a(261));e.finishedWork=e.current.alternate,e.finishedExpirationTime=t,Ol=null,Tu(e),ru(e)}}return null}function au(e,t){var n=zl;zl|=1;try{return e(t)}finally{0===(zl=n)&&Zi()}}function lu(e,t){var n=zl;zl&=-2,zl|=8;try{return e(t)}finally{0===(zl=n)&&Zi()}}function uu(e,t){e.finishedWork=null,e.finishedExpirationTime=0;var n=e.timeoutHandle;if(-1!==n&&(e.timeoutHandle=-1,tr(n)),null!==vl)for(n=vl.return;null!==n;){var r=n;switch(r.tag){case 1:var i=r.type.childContextTypes;null!=i&&Ni();break;case 3:Ro(),Ti();break;case 5:Go(r);break;case 4:Ro();break;case 13:case 19:ci(Fo);break;case 10:io(r)}n=n.return}Ol=e,vl=Au(e.current,null),Al=t,Cl=0,Sl=null,Ul=kl=1073741823,Pl=null,Ql=0,Yl=!1}function cu(e,t){for(;;){try{if(no(),fa(),null===vl||null===vl.return)return Cl=1,Sl=t,null;e:{var n=e,r=vl.return,i=vl,o=t;if(t=Al,i.effectTag|=2048,i.firstEffect=i.lastEffect=null,null!==o&&"object"==typeof o&&"function"==typeof o.then){var a=o,l=0!=(1&Fo.current),u=r;do{var c;if(c=13===u.tag){var s=u.memoizedState;if(null!==s)c=null!==s.dehydrated;else{var f=u.memoizedProps;c=void 0!==f.fallback&&(!0!==f.unstable_avoidThisFallback||!l)}}if(c){var d=u.updateQueue;if(null===d){var M=new Set;M.add(a),u.updateQueue=M}else d.add(a);if(0==(2&u.mode)){if(u.effectTag|=64,i.effectTag&=-2981,1===i.tag)if(null===i.alternate)i.tag=17;else{var p=fo(1073741823,null);p.tag=2,po(i,p)}i.expirationTime=1073741823;break e}o=void 0,i=t;var g=n.pingCache;if(null===g?(g=n.pingCache=new Il,o=new Set,g.set(a,o)):void 0===(o=g.get(a))&&(o=new Set,g.set(a,o)),!o.has(i)){o.add(i);var y=Eu.bind(null,n,a,i);a.then(y,y)}u.effectTag|=4096,u.expirationTime=t;break e}u=u.return}while(null!==u);o=Error((J(i.type)||"A React component")+" suspended while rendering, but no fallback UI was specified.\n\nAdd a <Suspense fallback=...> component higher in the tree to provide a loading indicator or placeholder to display."+q(i))}5!==Cl&&(Cl=2),o=cl(o,i),u=r;do{switch(u.tag){case 3:a=o,u.effectTag|=4096,u.expirationTime=t,go(u,hl(u,a,t));break e;case 1:a=o;var N=u.type,T=u.stateNode;if(0==(64&u.effectTag)&&("function"==typeof N.getDerivedStateFromError||null!==T&&"function"==typeof T.componentDidCatch&&(null===Fl||!Fl.has(T)))){u.effectTag|=4096,u.expirationTime=t,go(u,wl(u,a,t));break e}}u=u.return}while(null!==u)}vl=yu(vl)}catch(D){t=D;continue}break}}function su(){var e=Ll.current;return Ll.current=xa,null===e?xa:e}function fu(e,t){e<kl&&2<e&&(kl=e),null!==t&&e<Ul&&2<e&&(Ul=e,Pl=t)}function du(e){e>Ql&&(Ql=e)}function Mu(){for(;null!==vl;)vl=gu(vl)}function pu(){for(;null!==vl&&!bi();)vl=gu(vl)}function gu(e){var t=El(e.alternate,e,Al);return e.memoizedProps=e.pendingProps,null===t&&(t=yu(e)),xl.current=null,t}function yu(e){vl=e;do{var t=vl.alternate;if(e=vl.return,0==(2048&vl.effectTag)){e:{var n=t,r=Al,o=(t=vl).pendingProps;switch(t.tag){case 2:case 16:break;case 15:case 0:break;case 1:yi(t.type)&&Ni();break;case 3:Ro(),Ti(),(o=t.stateNode).pendingContext&&(o.context=o.pendingContext,o.pendingContext=null),(null===n||null===n.child)&&Qa(t)&&al(t);break;case 5:Go(t),r=Yo(Qo.current);var l=t.type;if(null!==n&&null!=t.stateNode)qa(n,t,l,o,r),n.ref!==t.ref&&(t.effectTag|=128);else if(o){var u=Yo(Uo.current);if(Qa(t)){var c=(o=t).stateNode;n=o.type;var s=o.memoizedProps,f=r;switch(c[or]=o,c[ar]=s,l=void 0,r=c,n){case"iframe":case"object":case"embed":En("load",r);break;case"video":case"audio":for(c=0;c<et.length;c++)En(et[c],r);break;case"source":En("error",r);break;case"img":case"image":case"link":En("error",r),En("load",r);break;case"form":En("reset",r),En("submit",r);break;case"details":En("toggle",r);break;case"input":Le(r,s),En("invalid",r),Gn(f,"onChange");break;case"select":r._wrapperState={wasMultiple:!!s.multiple},En("invalid",r),Gn(f,"onChange");break;case"textarea":ke(r,s),En("invalid",r),Gn(f,"onChange")}for(l in Rn(n,s),c=null,s)s.hasOwnProperty(l)&&(u=s[l],"children"===l?"string"==typeof u?r.textContent!==u&&(c=["children",u]):"number"==typeof u&&r.textContent!==""+u&&(c=["children",""+u]):M.hasOwnProperty(l)&&null!=u&&Gn(f,l));switch(n){case"input":we(r),Oe(r,s,!0);break;case"textarea":we(r),Pe(r);break;case"select":case"option":break;default:"function"==typeof s.onClick&&(r.onclick=Fn)}l=c,o.updateQueue=l,(o=null!==l)&&al(t)}else{n=t,f=l,s=o,c=9===r.nodeType?r:r.ownerDocument,u===Qe&&(u=_e(f)),u===Qe?"script"===f?((s=c.createElement("div")).innerHTML="<script><\/script>",c=s.removeChild(s.firstChild)):"string"==typeof s.is?c=c.createElement(f,{is:s.is}):(c=c.createElement(f),"select"===f&&(f=c,s.multiple?f.multiple=!0:s.size&&(f.size=s.size))):c=c.createElementNS(u,f),(s=c)[or]=n,s[ar]=o,Ja(s,t),t.stateNode=s;var d=r,p=Bn(f=l,n=o);switch(f){case"iframe":case"object":case"embed":En("load",s),r=n;break;case"video":case"audio":for(r=0;r<et.length;r++)En(et[r],s);r=n;break;case"source":En("error",s),r=n;break;case"img":case"image":case"link":En("error",s),En("load",s),r=n;break;case"form":En("reset",s),En("submit",s),r=n;break;case"details":En("toggle",s),r=n;break;case"input":Le(s,n),r=be(s,n),En("invalid",s),Gn(d,"onChange");break;case"option":r=Ae(s,n);break;case"select":s._wrapperState={wasMultiple:!!n.multiple},r=i({},n,{value:void 0}),En("invalid",s),Gn(d,"onChange");break;case"textarea":ke(s,n),r=Se(s,n),En("invalid",s),Gn(d,"onChange");break;default:r=n}Rn(f,r),c=void 0,u=f;var g=s,y=r;for(c in y)if(y.hasOwnProperty(c)){var N=y[c];"style"===c?Yn(g,N):"dangerouslySetInnerHTML"===c?null!=(N=N?N.__html:void 0)&&Ge(g,N):"children"===c?"string"==typeof N?("textarea"!==u||""!==N)&&Fe(g,N):"number"==typeof N&&Fe(g,""+N):"suppressContentEditableWarning"!==c&&"suppressHydrationWarning"!==c&&"autoFocus"!==c&&(M.hasOwnProperty(c)?null!=N&&Gn(d,c):null!=N&&Ie(g,c,N,p))}switch(f){case"input":we(s),Oe(s,n,!1);break;case"textarea":we(s),Pe(s);break;case"option":null!=n.value&&s.setAttribute("value",""+me(n.value));break;case"select":(r=s).multiple=!!n.multiple,null!=(s=n.value)?Ce(r,!!n.multiple,s,!1):null!=n.defaultValue&&Ce(r,!!n.multiple,n.defaultValue,!0);break;default:"function"==typeof r.onClick&&(s.onclick=Fn)}(o=qn(l,o))&&al(t)}null!==t.ref&&(t.effectTag|=128)}else if(null===t.stateNode)throw Error(a(166));break;case 6:if(n&&null!=t.stateNode)$a(0,t,n.memoizedProps,o);else{if("string"!=typeof o&&null===t.stateNode)throw Error(a(166));r=Yo(Qo.current),Yo(Uo.current),Qa(t)?(l=(o=t).stateNode,r=o.memoizedProps,l[or]=o,(o=l.nodeValue!==r)&&al(t)):(l=t,(o=(9===r.nodeType?r:r.ownerDocument).createTextNode(o))[or]=l,t.stateNode=o)}break;case 11:break;case 13:if(ci(Fo),o=t.memoizedState,0!=(64&t.effectTag)){t.expirationTime=r;break e}o=null!==o,l=!1,null===n?void 0!==t.memoizedProps.fallback&&Qa(t):(l=null!==(r=n.memoizedState),o||null===r||null!==(r=n.child.sibling)&&(null!==(s=t.firstEffect)?(t.firstEffect=r,r.nextEffect=s):(t.firstEffect=t.lastEffect=r,r.nextEffect=null),r.effectTag=8)),o&&!l&&0!=(2&t.mode)&&(null===n&&!0!==t.memoizedProps.unstable_avoidThisFallback||0!=(1&Fo.current)?0===Cl&&(Cl=3):(0!==Cl&&3!==Cl||(Cl=4),0!==Ql&&null!==Ol&&(Yu(Ol,Al),_u(Ol,Ql)))),(o||l)&&(t.effectTag|=4);break;case 7:case 8:case 12:break;case 4:Ro();break;case 10:io(t);break;case 9:case 14:break;case 17:yi(t.type)&&Ni();break;case 19:if(ci(Fo),null===(o=t.memoizedState))break;if(l=0!=(64&t.effectTag),null===(s=o.rendering)){if(l)ll(o,!1);else if(0!==Cl||null!==n&&0!=(64&n.effectTag))for(n=t.child;null!==n;){if(null!==(s=Wo(n))){for(t.effectTag|=64,ll(o,!1),null!==(l=s.updateQueue)&&(t.updateQueue=l,t.effectTag|=4),null===o.lastEffect&&(t.firstEffect=null),t.lastEffect=o.lastEffect,o=r,l=t.child;null!==l;)n=o,(r=l).effectTag&=2,r.nextEffect=null,r.firstEffect=null,r.lastEffect=null,null===(s=r.alternate)?(r.childExpirationTime=0,r.expirationTime=n,r.child=null,r.memoizedProps=null,r.memoizedState=null,r.updateQueue=null,r.dependencies=null):(r.childExpirationTime=s.childExpirationTime,r.expirationTime=s.expirationTime,r.child=s.child,r.memoizedProps=s.memoizedProps,r.memoizedState=s.memoizedState,r.updateQueue=s.updateQueue,n=s.dependencies,r.dependencies=null===n?null:{expirationTime:n.expirationTime,firstContext:n.firstContext,responders:n.responders}),l=l.sibling;si(Fo,1&Fo.current|2),t=t.child;break e}n=n.sibling}}else{if(!l)if(null!==(n=Wo(s))){if(t.effectTag|=64,l=!0,null!==(r=n.updateQueue)&&(t.updateQueue=r,t.effectTag|=4),ll(o,!0),null===o.tail&&"hidden"===o.tailMode&&!s.alternate){null!==(t=t.lastEffect=o.lastEffect)&&(t.nextEffect=null);break}}else Ri()>o.tailExpiration&&1<r&&(t.effectTag|=64,l=!0,ll(o,!1),t.expirationTime=t.childExpirationTime=r-1);o.isBackwards?(s.sibling=t.child,t.child=s):(null!==(r=o.last)?r.sibling=s:t.child=s,o.last=s)}if(null!==o.tail){0===o.tailExpiration&&(o.tailExpiration=Ri()+500),r=o.tail,o.rendering=r,o.tail=r.sibling,o.lastEffect=t.lastEffect,r.sibling=null,o=Fo.current,si(Fo,o=l?1&o|2:1&o),t=r;break e}break;case 20:case 21:break;default:throw Error(a(156,t.tag))}t=null}if(o=vl,1===Al||1!==o.childExpirationTime){for(l=0,r=o.child;null!==r;)(n=r.expirationTime)>l&&(l=n),(s=r.childExpirationTime)>l&&(l=s),r=r.sibling;o.childExpirationTime=l}if(null!==t)return t;null!==e&&0==(2048&e.effectTag)&&(null===e.firstEffect&&(e.firstEffect=vl.firstEffect),null!==vl.lastEffect&&(null!==e.lastEffect&&(e.lastEffect.nextEffect=vl.firstEffect),e.lastEffect=vl.lastEffect),1<vl.effectTag&&(null!==e.lastEffect?e.lastEffect.nextEffect=vl:e.firstEffect=vl,e.lastEffect=vl))}else{if(null!==(t=ul(vl)))return t.effectTag&=2047,t;null!==e&&(e.firstEffect=e.lastEffect=null,e.effectTag|=2048)}if(null!==(t=vl.sibling))return t;vl=e}while(null!==vl);return 0===Cl&&(Cl=5),null}function Nu(e){var t=e.expirationTime;return t>(e=e.childExpirationTime)?t:e}function Tu(e){var t=Bi();return Fi(99,Du.bind(null,e,t)),null}function Du(e,t){do{mu()}while(null!==Hl);if(0!=(48&zl))throw Error(a(327));var n=e.finishedWork,r=e.finishedExpirationTime;if(null===n)return null;if(e.finishedWork=null,e.finishedExpirationTime=0,n===e.current)throw Error(a(177));e.callbackNode=null,e.callbackExpirationTime=0,e.callbackPriority=90,e.nextKnownPendingLevel=0;var i=Nu(n);if(e.firstPendingTime=i,r<=e.lastSuspendedTime?e.firstSuspendedTime=e.lastSuspendedTime=e.nextKnownPendingLevel=0:r<=e.firstSuspendedTime&&(e.firstSuspendedTime=r-1),r<=e.lastPingedTime&&(e.lastPingedTime=0),r<=e.lastExpiredTime&&(e.lastExpiredTime=0),e===Ol&&(vl=Ol=null,Al=0),1<n.effectTag?null!==n.lastEffect?(n.lastEffect.nextEffect=n,i=n.firstEffect):i=n:i=n.firstEffect,null!==i){var o=zl;zl|=32,xl.current=null,Kn=wn;var l=Vn();if(Xn(l)){if("selectionStart"in l)var u={start:l.selectionStart,end:l.selectionEnd};else e:{var c=(u=(u=l.ownerDocument)&&u.defaultView||window).getSelection&&u.getSelection();if(c&&0!==c.rangeCount){u=c.anchorNode;var s=c.anchorOffset,f=c.focusNode;c=c.focusOffset;try{u.nodeType,f.nodeType}catch(k){u=null;break e}var d=0,M=-1,p=-1,g=0,y=0,N=l,T=null;t:for(;;){for(var D;N!==u||0!==s&&3!==N.nodeType||(M=d+s),N!==f||0!==c&&3!==N.nodeType||(p=d+c),3===N.nodeType&&(d+=N.nodeValue.length),null!==(D=N.firstChild);)T=N,N=D;for(;;){if(N===l)break t;if(T===u&&++g===s&&(M=d),T===f&&++y===c&&(p=d),null!==(D=N.nextSibling))break;T=(N=T).parentNode}N=D}u=-1===M||-1===p?null:{start:M,end:p}}else u=null}u=u||{start:0,end:0}}else u=null;Jn={focusedElem:l,selectionRange:u},wn=!1,Rl=i;do{try{ju()}catch(k){if(null===Rl)throw Error(a(330));wu(Rl,k),Rl=Rl.nextEffect}}while(null!==Rl);Rl=i;do{try{for(l=e,u=t;null!==Rl;){var j=Rl.effectTag;if(16&j&&Fe(Rl.stateNode,""),128&j){var m=Rl.alternate;if(null!==m){var I=m.ref;null!==I&&("function"==typeof I?I(null):I.current=null)}}switch(1038&j){case 2:Tl(Rl),Rl.effectTag&=-3;break;case 6:Tl(Rl),Rl.effectTag&=-3,jl(Rl.alternate,Rl);break;case 1024:Rl.effectTag&=-1025;break;case 1028:Rl.effectTag&=-1025,jl(Rl.alternate,Rl);break;case 4:jl(Rl.alternate,Rl);break;case 8:Dl(l,s=Rl,u),yl(s)}Rl=Rl.nextEffect}}catch(k){if(null===Rl)throw Error(a(330));wu(Rl,k),Rl=Rl.nextEffect}}while(null!==Rl);if(I=Jn,m=Vn(),j=I.focusedElem,u=I.selectionRange,m!==j&&j&&j.ownerDocument&&function e(t,n){return!(!t||!n)&&(t===n||(!t||3!==t.nodeType)&&(n&&3===n.nodeType?e(t,n.parentNode):"contains"in t?t.contains(n):!!t.compareDocumentPosition&&!!(16&t.compareDocumentPosition(n))))}(j.ownerDocument.documentElement,j)){null!==u&&Xn(j)&&(m=u.start,void 0===(I=u.end)&&(I=m),"selectionStart"in j?(j.selectionStart=m,j.selectionEnd=Math.min(I,j.value.length)):(I=(m=j.ownerDocument||document)&&m.defaultView||window).getSelection&&(I=I.getSelection(),s=j.textContent.length,l=Math.min(u.start,s),u=void 0===u.end?l:Math.min(u.end,s),!I.extend&&l>u&&(s=u,u=l,l=s),s=Zn(j,l),f=Zn(j,u),s&&f&&(1!==I.rangeCount||I.anchorNode!==s.node||I.anchorOffset!==s.offset||I.focusNode!==f.node||I.focusOffset!==f.offset)&&((m=m.createRange()).setStart(s.node,s.offset),I.removeAllRanges(),l>u?(I.addRange(m),I.extend(f.node,f.offset)):(m.setEnd(f.node,f.offset),I.addRange(m))))),m=[];for(I=j;I=I.parentNode;)1===I.nodeType&&m.push({element:I,left:I.scrollLeft,top:I.scrollTop});for("function"==typeof j.focus&&j.focus(),j=0;j<m.length;j++)(I=m[j]).element.scrollLeft=I.left,I.element.scrollTop=I.top}Jn=null,wn=!!Kn,Kn=null,e.current=n,Rl=i;do{try{for(j=r;null!==Rl;){var h=Rl.effectTag;if(36&h){var w=Rl.alternate;switch(I=j,(m=Rl).tag){case 0:case 11:case 15:pl(16,32,m);break;case 1:var E=m.stateNode;if(4&m.effectTag)if(null===w)E.componentDidMount();else{var b=m.elementType===m.type?w.memoizedProps:Ji(m.type,w.memoizedProps);E.componentDidUpdate(b,w.memoizedState,E.__reactInternalSnapshotBeforeUpdate)}var L=m.updateQueue;null!==L&&Do(0,L,E);break;case 3:var x=m.updateQueue;if(null!==x){if(l=null,null!==m.child)switch(m.child.tag){case 5:l=m.child.stateNode;break;case 1:l=m.child.stateNode}Do(0,x,l)}break;case 5:var z=m.stateNode;null===w&&4&m.effectTag&&qn(m.type,m.memoizedProps)&&z.focus();break;case 6:case 4:case 12:break;case 13:if(null===m.memoizedState){var O=m.alternate;if(null!==O){var v=O.memoizedState;if(null!==v){var A=v.dehydrated;null!==A&&bt(A)}}}break;case 19:case 17:case 20:case 21:break;default:throw Error(a(163))}}if(128&h){m=void 0;var C=Rl.ref;if(null!==C){var S=Rl.stateNode;switch(Rl.tag){case 5:m=S;break;default:m=S}"function"==typeof C?C(m):C.current=m}}Rl=Rl.nextEffect}}catch(k){if(null===Rl)throw Error(a(330));wu(Rl,k),Rl=Rl.nextEffect}}while(null!==Rl);Rl=null,Ui(),zl=o}else e.current=n;if(Wl)Wl=!1,Hl=e,Zl=t;else for(Rl=i;null!==Rl;)t=Rl.nextEffect,Rl.nextEffect=null,Rl=t;if(0===(t=e.firstPendingTime)&&(Fl=null),1073741823===t?e===Kl?Xl++:(Xl=0,Kl=e):Xl=0,"function"==typeof Lu&&Lu(n.stateNode,r),ru(e),Bl)throw Bl=!1,e=Gl,Gl=null,e;return 0!=(8&zl)?null:(Zi(),null)}function ju(){for(;null!==Rl;){var e=Rl.effectTag;0!=(256&e)&&Ml(Rl.alternate,Rl),0==(512&e)||Wl||(Wl=!0,Wi(97,(function(){return mu(),null}))),Rl=Rl.nextEffect}}function mu(){if(90!==Zl){var e=97<Zl?97:Zl;return Zl=90,Fi(e,Iu)}}function Iu(){if(null===Hl)return!1;var e=Hl;if(Hl=null,0!=(48&zl))throw Error(a(331));var t=zl;for(zl|=32,e=e.current.firstEffect;null!==e;){try{var n=e;if(0!=(512&n.effectTag))switch(n.tag){case 0:case 11:case 15:pl(128,0,n),pl(0,64,n)}}catch(r){if(null===e)throw Error(a(330));wu(e,r)}n=e.nextEffect,e.nextEffect=null,e=n}return zl=t,Zi(),!0}function hu(e,t,n){po(e,t=hl(e,t=cl(n,t),1073741823)),null!==(e=tu(e,1073741823))&&ru(e)}function wu(e,t){if(3===e.tag)hu(e,e,t);else for(var n=e.return;null!==n;){if(3===n.tag){hu(n,e,t);break}if(1===n.tag){var r=n.stateNode;if("function"==typeof n.type.getDerivedStateFromError||"function"==typeof r.componentDidCatch&&(null===Fl||!Fl.has(r))){po(n,e=wl(n,e=cl(t,e),1073741823)),null!==(n=tu(n,1073741823))&&ru(n);break}}n=n.return}}function Eu(e,t,n){var r=e.pingCache;null!==r&&r.delete(t),Ol===e&&Al===n?4===Cl||3===Cl&&1073741823===kl&&Ri()-_l<500?uu(e,Al):Yl=!0:Qu(e,n)&&(0!==(t=e.lastPingedTime)&&t<n||(e.lastPingedTime=n,e.finishedExpirationTime===n&&(e.finishedExpirationTime=0,e.finishedWork=null),ru(e)))}function bu(e,t){var n=e.stateNode;null!==n&&n.delete(t),0===(t=0)&&(t=$l(t=ql(),e,null)),null!==(e=tu(e,t))&&ru(e)}El=function(e,t,n){var r=t.expirationTime;if(null!==e){var i=t.pendingProps;if(e.memoizedProps!==i||Mi.current)Ra=!0;else{if(r<n){switch(Ra=!1,t.tag){case 3:Ka(t),Ya();break;case 5:if(Bo(t),4&t.mode&&1!==n&&i.hidden)return t.expirationTime=t.childExpirationTime=1,null;break;case 1:yi(t.type)&&mi(t);break;case 4:_o(t,t.stateNode.containerInfo);break;case 10:ro(t,t.memoizedProps.value);break;case 13:if(null!==t.memoizedState)return 0!==(r=t.child.childExpirationTime)&&r>=n?tl(e,t,n):(si(Fo,1&Fo.current),null!==(t=ol(e,t,n))?t.sibling:null);si(Fo,1&Fo.current);break;case 19:if(r=t.childExpirationTime>=n,0!=(64&e.effectTag)){if(r)return il(e,t,n);t.effectTag|=64}if(null!==(i=t.memoizedState)&&(i.rendering=null,i.tail=null),si(Fo,Fo.current),!r)return null}return ol(e,t,n)}Ra=!1}}else Ra=!1;switch(t.expirationTime=0,t.tag){case 2:if(r=t.type,null!==e&&(e.alternate=null,t.alternate=null,t.effectTag|=2),e=t.pendingProps,i=gi(t,di.current),ao(t,n),i=sa(null,t,r,e,i,n),t.effectTag|=1,"object"==typeof i&&null!==i&&"function"==typeof i.render&&void 0===i.$$typeof){if(t.tag=1,fa(),yi(r)){var o=!0;mi(t)}else o=!1;t.memoizedState=null!==i.state&&void 0!==i.state?i.state:null;var l=r.getDerivedStateFromProps;"function"==typeof l&&ho(t,r,l,e),i.updater=wo,t.stateNode=i,i._reactInternalFiber=t,xo(t,r,e,n),t=Xa(null,t,r,!0,o,n)}else t.tag=0,Ba(null,t,i,n),t=t.child;return t;case 16:if(i=t.elementType,null!==e&&(e.alternate=null,t.alternate=null,t.effectTag|=2),e=t.pendingProps,function(e){if(-1===e._status){e._status=0;var t=e._ctor;t=t(),e._result=t,t.then((function(t){0===e._status&&(t=t.default,e._status=1,e._result=t)}),(function(t){0===e._status&&(e._status=2,e._result=t)}))}}(i),1!==i._status)throw i._result;switch(i=i._result,t.type=i,o=t.tag=function(e){if("function"==typeof e)return vu(e)?1:0;if(null!=e){if((e=e.$$typeof)===F)return 11;if(e===Z)return 14}return 2}(i),e=Ji(i,e),o){case 0:t=Za(null,t,i,e,n);break;case 1:t=Va(null,t,i,e,n);break;case 11:t=Ga(null,t,i,e,n);break;case 14:t=Fa(null,t,i,Ji(i.type,e),r,n);break;default:throw Error(a(306,i,""))}return t;case 0:return r=t.type,i=t.pendingProps,Za(e,t,r,i=t.elementType===r?i:Ji(r,i),n);case 1:return r=t.type,i=t.pendingProps,Va(e,t,r,i=t.elementType===r?i:Ji(r,i),n);case 3:if(Ka(t),null===(r=t.updateQueue))throw Error(a(282));if(i=null!==(i=t.memoizedState)?i.element:null,To(t,r,t.pendingProps,null,n),(r=t.memoizedState.element)===i)Ya(),t=ol(e,t,n);else{if((i=t.stateNode.hydrate)&&(Aa=nr(t.stateNode.containerInfo.firstChild),va=t,i=Ca=!0),i)for(n=So(t,null,r,n),t.child=n;n;)n.effectTag=-3&n.effectTag|1024,n=n.sibling;else Ba(e,t,r,n),Ya();t=t.child}return t;case 5:return Bo(t),null===e&&Ua(t),r=t.type,i=t.pendingProps,o=null!==e?e.memoizedProps:null,l=i.children,$n(r,i)?l=null:null!==o&&$n(r,o)&&(t.effectTag|=16),Ha(e,t),4&t.mode&&1!==n&&i.hidden?(t.expirationTime=t.childExpirationTime=1,t=null):(Ba(e,t,l,n),t=t.child),t;case 6:return null===e&&Ua(t),null;case 13:return tl(e,t,n);case 4:return _o(t,t.stateNode.containerInfo),r=t.pendingProps,null===e?t.child=Co(t,null,r,n):Ba(e,t,r,n),t.child;case 11:return r=t.type,i=t.pendingProps,Ga(e,t,r,i=t.elementType===r?i:Ji(r,i),n);case 7:return Ba(e,t,t.pendingProps,n),t.child;case 8:case 12:return Ba(e,t,t.pendingProps.children,n),t.child;case 10:e:{if(r=t.type._context,i=t.pendingProps,l=t.memoizedProps,ro(t,o=i.value),null!==l){var u=l.value;if(0===(o=Kr(u,o)?0:0|("function"==typeof r._calculateChangedBits?r._calculateChangedBits(u,o):1073741823))){if(l.children===i.children&&!Mi.current){t=ol(e,t,n);break e}}else for(null!==(u=t.child)&&(u.return=t);null!==u;){var c=u.dependencies;if(null!==c){l=u.child;for(var s=c.firstContext;null!==s;){if(s.context===r&&0!=(s.observedBits&o)){1===u.tag&&((s=fo(n,null)).tag=2,po(u,s)),u.expirationTime<n&&(u.expirationTime=n),null!==(s=u.alternate)&&s.expirationTime<n&&(s.expirationTime=n),oo(u.return,n),c.expirationTime<n&&(c.expirationTime=n);break}s=s.next}}else l=10===u.tag&&u.type===t.type?null:u.child;if(null!==l)l.return=u;else for(l=u;null!==l;){if(l===t){l=null;break}if(null!==(u=l.sibling)){u.return=l.return,l=u;break}l=l.return}u=l}}Ba(e,t,i.children,n),t=t.child}return t;case 9:return i=t.type,r=(o=t.pendingProps).children,ao(t,n),r=r(i=lo(i,o.unstable_observedBits)),t.effectTag|=1,Ba(e,t,r,n),t.child;case 14:return o=Ji(i=t.type,t.pendingProps),Fa(e,t,i,o=Ji(i.type,o),r,n);case 15:return Wa(e,t,t.type,t.pendingProps,r,n);case 17:return r=t.type,i=t.pendingProps,i=t.elementType===r?i:Ji(r,i),null!==e&&(e.alternate=null,t.alternate=null,t.effectTag|=2),t.tag=1,yi(r)?(e=!0,mi(t)):e=!1,ao(t,n),bo(t,r,i),xo(t,r,i,n),Xa(null,t,r,!0,e,n);case 19:return il(e,t,n)}throw Error(a(156,t.tag))};var Lu=null,xu=null;function zu(e,t,n,r){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.effectTag=0,this.lastEffect=this.firstEffect=this.nextEffect=null,this.childExpirationTime=this.expirationTime=0,this.alternate=null}function Ou(e,t,n,r){return new zu(e,t,n,r)}function vu(e){return!(!(e=e.prototype)||!e.isReactComponent)}function Au(e,t){var n=e.alternate;return null===n?((n=Ou(e.tag,t,e.key,e.mode)).elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.effectTag=0,n.nextEffect=null,n.firstEffect=null,n.lastEffect=null),n.childExpirationTime=e.childExpirationTime,n.expirationTime=e.expirationTime,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=null===t?null:{expirationTime:t.expirationTime,firstContext:t.firstContext,responders:t.responders},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function Cu(e,t,n,r,i,o){var l=2;if(r=e,"function"==typeof e)vu(e)&&(l=1);else if("string"==typeof e)l=5;else e:switch(e){case Q:return Su(n.children,i,o,t);case G:l=8,i|=7;break;case Y:l=8,i|=1;break;case _:return(e=Ou(12,n,t,8|i)).elementType=_,e.type=_,e.expirationTime=o,e;case W:return(e=Ou(13,n,t,i)).type=W,e.elementType=W,e.expirationTime=o,e;case H:return(e=Ou(19,n,t,i)).elementType=H,e.expirationTime=o,e;default:if("object"==typeof e&&null!==e)switch(e.$$typeof){case R:l=10;break e;case B:l=9;break e;case F:l=11;break e;case Z:l=14;break e;case V:l=16,r=null;break e}throw Error(a(130,null==e?e:typeof e,""))}return(t=Ou(l,n,t,i)).elementType=e,t.type=r,t.expirationTime=o,t}function Su(e,t,n,r){return(e=Ou(7,e,r,t)).expirationTime=n,e}function ku(e,t,n){return(e=Ou(6,e,null,t)).expirationTime=n,e}function Uu(e,t,n){return(t=Ou(4,null!==e.children?e.children:[],e.key,t)).expirationTime=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function Pu(e,t,n){this.tag=t,this.current=null,this.containerInfo=e,this.pingCache=this.pendingChildren=null,this.finishedExpirationTime=0,this.finishedWork=null,this.timeoutHandle=-1,this.pendingContext=this.context=null,this.hydrate=n,this.callbackNode=null,this.callbackPriority=90,this.lastExpiredTime=this.lastPingedTime=this.nextKnownPendingLevel=this.lastSuspendedTime=this.firstSuspendedTime=this.firstPendingTime=0}function Qu(e,t){var n=e.firstSuspendedTime;return e=e.lastSuspendedTime,0!==n&&n>=t&&e<=t}function Yu(e,t){var n=e.firstSuspendedTime,r=e.lastSuspendedTime;n<t&&(e.firstSuspendedTime=t),(r>t||0===n)&&(e.lastSuspendedTime=t),t<=e.lastPingedTime&&(e.lastPingedTime=0),t<=e.lastExpiredTime&&(e.lastExpiredTime=0)}function _u(e,t){t>e.firstPendingTime&&(e.firstPendingTime=t);var n=e.firstSuspendedTime;0!==n&&(t>=n?e.firstSuspendedTime=e.lastSuspendedTime=e.nextKnownPendingLevel=0:t>=e.lastSuspendedTime&&(e.lastSuspendedTime=t+1),t>e.nextKnownPendingLevel&&(e.nextKnownPendingLevel=t))}function Ru(e,t){var n=e.lastExpiredTime;(0===n||n>t)&&(e.lastExpiredTime=t)}function Bu(e,t,n,r){var i=t.current,o=ql(),l=mo.suspense;o=$l(o,i,l);e:if(n){t:{if(tt(n=n._reactInternalFiber)!==n||1!==n.tag)throw Error(a(170));var u=n;do{switch(u.tag){case 3:u=u.stateNode.context;break t;case 1:if(yi(u.type)){u=u.stateNode.__reactInternalMemoizedMergedChildContext;break t}}u=u.return}while(null!==u);throw Error(a(171))}if(1===n.tag){var c=n.type;if(yi(c)){n=ji(n,c,u);break e}}n=u}else n=fi;return null===t.context?t.context=n:t.pendingContext=n,(t=fo(o,l)).payload={element:e},null!==(r=void 0===r?null:r)&&(t.callback=r),po(i,t),eu(i,o),o}function Gu(e){if(!(e=e.current).child)return null;switch(e.child.tag){case 5:default:return e.child.stateNode}}function Fu(e,t){null!==(e=e.memoizedState)&&null!==e.dehydrated&&e.retryTime<t&&(e.retryTime=t)}function Wu(e,t){Fu(e,t),(e=e.alternate)&&Fu(e,t)}function Hu(e,t,n){var r=new Pu(e,t,n=null!=n&&!0===n.hydrate),i=Ou(3,null,null,2===t?7:1===t?3:0);r.current=i,i.stateNode=r,e[lr]=r.current,n&&0!==t&&function(e){var t=Sn(e);yt.forEach((function(n){kn(n,e,t)})),Nt.forEach((function(n){kn(n,e,t)}))}(9===e.nodeType?e:e.ownerDocument),this._internalRoot=r}function Zu(e){return!(!e||1!==e.nodeType&&9!==e.nodeType&&11!==e.nodeType&&(8!==e.nodeType||" react-mount-point-unstable "!==e.nodeValue))}function Vu(e,t,n,r,i){var o=n._reactRootContainer;if(o){var a=o._internalRoot;if("function"==typeof i){var l=i;i=function(){var e=Gu(a);l.call(e)}}Bu(t,a,e,i)}else{if(o=n._reactRootContainer=function(e,t){if(t||(t=!(!(t=e?9===e.nodeType?e.documentElement:e.firstChild:null)||1!==t.nodeType||!t.hasAttribute("data-reactroot"))),!t)for(var n;n=e.lastChild;)e.removeChild(n);return new Hu(e,0,t?{hydrate:!0}:void 0)}(n,r),a=o._internalRoot,"function"==typeof i){var u=i;i=function(){var e=Gu(a);u.call(e)}}lu((function(){Bu(t,a,e,i)}))}return Gu(a)}function Xu(e,t,n){var r=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:P,key:null==r?null:""+r,children:e,containerInfo:t,implementation:n}}function Ku(e,t){var n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!Zu(t))throw Error(a(200));return Xu(e,t,null,n)}Hu.prototype.render=function(e,t){Bu(e,this._internalRoot,null,void 0===t?null:t)},Hu.prototype.unmount=function(e){var t=this._internalRoot,n=void 0===e?null:e,r=t.containerInfo;Bu(null,t,null,(function(){r[lr]=null,null!==n&&n()}))},ot=function(e){if(13===e.tag){var t=Ki(ql(),150,100);eu(e,t),Wu(e,t)}},at=function(e){if(13===e.tag){ql();var t=Xi++;eu(e,t),Wu(e,t)}},lt=function(e){if(13===e.tag){var t=ql();eu(e,t=$l(t,e,null)),Wu(e,t)}},ee=function(e,t,n){switch(t){case"input":if(ze(e,n),t=n.name,"radio"===n.type&&null!=t){for(n=e;n.parentNode;)n=n.parentNode;for(n=n.querySelectorAll("input[name="+JSON.stringify(""+t)+'][type="radio"]'),t=0;t<n.length;t++){var r=n[t];if(r!==e&&r.form===e.form){var i=fr(r);if(!i)throw Error(a(90));Ee(r),ze(r,i)}}}break;case"textarea":Ue(e,n);break;case"select":null!=(t=n.value)&&Ce(e,!!n.multiple,t,!1)}},ae=au,le=function(e,t,n,r){var i=zl;zl|=4;try{return Fi(98,e.bind(null,t,n,r))}finally{0===(zl=i)&&Zi()}},ue=function(){0==(49&zl)&&(function(){if(null!==Vl){var e=Vl;Vl=null,e.forEach((function(e,t){Ru(t,e),ru(t)})),Zi()}}(),mu())},ce=function(e,t){var n=zl;zl|=2;try{return e(t)}finally{0===(zl=n)&&Zi()}};var Ju,qu,$u={createPortal:Ku,findDOMNode:function(e){if(null==e)return null;if(1===e.nodeType)return e;var t=e._reactInternalFiber;if(void 0===t){if("function"==typeof e.render)throw Error(a(188));throw Error(a(268,Object.keys(e)))}return e=null===(e=it(t))?null:e.stateNode},hydrate:function(e,t,n){if(!Zu(t))throw Error(a(200));return Vu(null,e,t,!0,n)},render:function(e,t,n){if(!Zu(t))throw Error(a(200));return Vu(null,e,t,!1,n)},unstable_renderSubtreeIntoContainer:function(e,t,n,r){if(!Zu(n))throw Error(a(200));if(null==e||void 0===e._reactInternalFiber)throw Error(a(38));return Vu(e,t,n,!1,r)},unmountComponentAtNode:function(e){if(!Zu(e))throw Error(a(40));return!!e._reactRootContainer&&(lu((function(){Vu(null,null,e,!1,(function(){e._reactRootContainer=null,e[lr]=null}))})),!0)},unstable_createPortal:function(){return Ku.apply(void 0,arguments)},unstable_batchedUpdates:au,flushSync:function(e,t){if(0!=(48&zl))throw Error(a(187));var n=zl;zl|=1;try{return Fi(99,e.bind(null,t))}finally{zl=n,Zi()}},__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:{Events:[cr,sr,fr,v.injectEventPluginsByName,d,Ct,function(e){L(e,At)},ie,oe,On,O,mu,{current:!1}]}};qu=(Ju={findFiberByHostInstance:ur,bundleType:0,version:"16.12.0",rendererPackageName:"react-dom"}).findFiberByHostInstance,function(e){if("undefined"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__)return!1;var t=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(t.isDisabled||!t.supportsFiber)return!0;try{var n=t.inject(e);Lu=function(e){try{t.onCommitFiberRoot(n,e,void 0,64==(64&e.current.effectTag))}catch(r){}},xu=function(e){try{t.onCommitFiberUnmount(n,e)}catch(r){}}}catch(r){}}(i({},Ju,{overrideHookState:null,overrideProps:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:C.ReactCurrentDispatcher,findHostInstanceByFiber:function(e){return null===(e=it(e))?null:e.stateNode},findFiberByHostInstance:function(e){return qu?qu(e):null},findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null}));var ec={default:$u},tc=ec&&$u||ec;e.exports=tc.default||tc}}]);
-//# sourceMappingURL=commons-42a47b90457bdd243664.js.map
\ No newline at end of file
diff --git a/commons-42a47b90457bdd243664.js.map b/commons-42a47b90457bdd243664.js.map
deleted file mode 100644
index 39fb712..0000000
--- a/commons-42a47b90457bdd243664.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"sources":["webpack:///./node_modules/scheduler/cjs/scheduler.production.min.js","webpack:///./node_modules/@theme-ui/core/dist/index.esm.js","webpack:///./node_modules/react-side-effect/lib/index.js","webpack:///./node_modules/@emotion/is-prop-valid/dist/is-prop-valid.browser.esm.js","webpack:///./node_modules/@theme-ui/color-modes/dist/index.esm.js","webpack:///./node_modules/@theme-ui/theme-provider/dist/index.esm.js","webpack:///./src/theme.js","webpack:///./src/components/header.js","webpack:///./src/components/footer.js","webpack:///./src/components/seo.js","webpack:///./src/components/head.js","webpack:///./src/components/mobileNav.js","webpack:///./src/components/layout.js","webpack:///./src/images/stackoverflow-logo.svg","webpack:///./node_modules/shallowequal/index.js","webpack:///./src/images/twitter-logo.svg","webpack:///./src/components/card.js","webpack:///./node_modules/@emotion/styled-base/dist/styled-base.browser.esm.js","webpack:///./node_modules/@emotion/styled/dist/styled.browser.esm.js","webpack:///./node_modules/@mdx-js/react/dist/esm.js","webpack:///./node_modules/@theme-ui/mdx/dist/index.esm.js","webpack:///./node_modules/core-js/modules/_string-html.js","webpack:///./node_modules/deepmerge/dist/cjs.js","webpack:///./src/images/github-logo.svg","webpack:///./node_modules/scheduler/index.js","webpack:///./node_modules/react-helmet/lib/Helmet.js","webpack:///./src/images/openJ9-header-logo.svg","webpack:///./src/images/adopt-open-jdk.png","webpack:///./node_modules/core-js/modules/es6.object.define-properties.js","webpack:///./src/components/button.js","webpack:///./node_modules/@theme-ui/css/dist/index.esm.js","webpack:///./node_modules/react-fast-compare/index.js","webpack:///./src/images/incubator-logo.svg","webpack:///./node_modules/react-helmet/lib/HelmetConstants.js","webpack:///./node_modules/react-dom/index.js","webpack:///./node_modules/core-js/modules/es7.object.get-own-property-descriptors.js","webpack:///./node_modules/core-js/modules/_own-keys.js","webpack:///./node_modules/react/index.js","webpack:///./node_modules/core-js/modules/es6.string.link.js","webpack:///./src/images/slack-icon.svg","webpack:///./node_modules/react-helmet/lib/HelmetUtils.js","webpack:///./node_modules/react/cjs/react.production.min.js","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/react-dom/cjs/react-dom.production.min.js"],"names":["_f","g","h","k","l","Object","defineProperty","exports","value","window","MessageChannel","p","q","t","a","unstable_now","b","setTimeout","u","Date","now","clearTimeout","unstable_forceFrameRate","w","performance","x","y","z","console","A","cancelAnimationFrame","requestAnimationFrame","error","B","C","D","E","F","G","Math","floor","H","I","port2","port1","onmessage","postMessage","J","c","length","push","d","e","K","L","M","pop","m","n","v","r","sortIndex","id","N","O","P","Q","R","S","T","U","V","callback","startTime","expirationTime","W","X","priorityLevel","Y","Z","unstable_ImmediatePriority","unstable_UserBlockingPriority","unstable_NormalPriority","unstable_IdlePriority","unstable_LowPriority","unstable_runWithPriority","unstable_next","unstable_scheduleCallback","delay","timeout","unstable_cancelCallback","unstable_wrapCallback","apply","this","arguments","unstable_getCurrentPriorityLevel","unstable_shouldYield","unstable_requestPaint","unstable_continueExecution","unstable_pauseExecution","unstable_getFirstCallbackNode","unstable_Profiling","parseProps","props","next","key","css$$1","sx","css","theme","getCSS","jsx$1","type","children","len","undefined","concat","Context","createContext","__EMOTION_VERSION__","useThemeUI","useContext","canUseSymbol","Symbol","REACT_ELEMENT","FORWARD_REF","isMergeableObject","$$typeof","arrayMerge","destinationArray","sourceArray","options","merge","all","args","BaseProvider","ref","context","Provider","ThemeProvider","outer","assign","_interopDefault","ex","React","React__default","shallowEqual","_defineProperty","obj","enumerable","configurable","writable","canUseDOM","document","createElement","module","reducePropsToState","handleStateChangeOnClient","mapStateOnServer","Error","WrappedComponent","state","mountedInstances","emitChange","map","instance","SideEffect","_Component","subClass","superClass","prototype","create","constructor","__proto__","peek","rewind","recordedState","_proto","shouldComponentUpdate","nextProps","componentWillMount","componentDidUpdate","componentWillUnmount","index","indexOf","splice","render","Component","displayName","name","getDisplayName","reactPropsRegex","prop","test","charCodeAt","toVarName","toVarValue","join","filter","Boolean","numberScales","fontWeights","lineHeights","reservedKeys","useCustomProperties","initialColorModeName","initialColorMode","toPixel","objectToVars","parent","vars","storage","init","localStorage","getItem","warn","setItem","useState","mode","setMode","useEffect","stored","body","classList","remove","useColorSchemeMediaQuery","darkQuery","darkMQL","lightMQL","query","matchMedia","media","matches","styles","colors","useBodyStyles","modes","color","bg","rawColors","keys","forEach","ref$1","colorMode","setColorMode","emotionTheme","toCustomProperties","themeKey","Array","isArray","val","get","def","undef","split","defaultBreakpoints","defaultTheme","space","fontSizes","aliases","mt","mr","mb","ml","mx","my","pt","pr","pb","pl","px","py","multiples","marginX","marginY","paddingX","paddingY","size","scales","backgroundColor","borderColor","margin","marginTop","marginRight","marginBottom","marginLeft","padding","paddingTop","paddingRight","paddingBottom","paddingLeft","top","right","bottom","left","gridGap","gridColumnGap","gridRowGap","gap","columnGap","rowGap","fontFamily","fontSize","fontWeight","lineHeight","letterSpacing","border","borderTop","borderRight","borderBottom","borderLeft","borderWidth","borderStyle","borderRadius","borderTopRightRadius","borderTopLeftRadius","borderBottomRightRadius","borderBottomLeftRadius","borderTopWidth","borderTopColor","borderTopStyle","borderBottomWidth","borderBottomColor","borderBottomStyle","borderLeftWidth","borderLeftColor","borderLeftStyle","borderRightWidth","borderRightColor","borderRightStyle","outlineColor","boxShadow","textShadow","zIndex","width","minWidth","maxWidth","height","minHeight","maxHeight","flexBasis","fill","stroke","positiveOrNegative","scale","absolute","abs","transforms","reduce","acc","curr","result","breakpoints","mediaQueries","i","slice","responsive","scaleName","transform","dirs","variant","root","boxSizing","useBorderBox","components","fonts","heading","darkText","lightText","links","primary","secondary","secondaryDark","accent","background","lightGrey","radii","button","card","buttons","cursor","textDecoration","text","h1","h2","h3","h4","h5","h6","lists","navRow","display","listStyle","justifyContent","li","navCol","flexDirection","borders","cardBorder","shadows","cardShadow","isHome","position","alignItems","flex","opacity","pointerEvents","to","src","openJ9Logo","alt","href","rel","target","twitterLogo","githubLogo","slackIcon","stackoverflowLogo","flexWrap","incubatorLogo","listStyleType","SEO","title","description","site","siteMetadata","defaultTitle","titleTemplate","defaultDescription","siteUrl","twitterUsername","seo","image","defaultImage","url","Helmet","content","property","defaultProps","MobileNav","objA","objB","compare","compareContext","ret","call","keysA","keysB","bHasOwnProperty","hasOwnProperty","bind","idx","valueA","valueB","Card","testOmitPropsOnStringTag","testOmitPropsOnComponent","getDefaultShouldForwardProp","tag","ownKeys","object","enumerableOnly","getOwnPropertySymbols","symbols","sym","getOwnPropertyDescriptor","_objectSpread","source","getOwnPropertyDescriptors","defineProperties","newStyled","createStyled","identifierName","shouldForwardProp","targetClassName","label","__emotion_forwardProp","propName","isReal","__emotion_real","baseTag","__emotion_base","defaultShouldForwardProp","shouldUseAs","__emotion_styles","raw","Styled","Consumer","finalTag","as","className","classInterpolations","mergedProps","registered","serialized","finalShouldForwardProp","newProps","_key","innerRef","withComponent","nextTag","nextOptions","tagName","_objectSpread2","_objectWithoutProperties","excluded","sourceKeys","_objectWithoutPropertiesLoose","sourceSymbolKeys","propertyIsEnumerable","MDXContext","contextComponents","allComponents","DEFAULTS","inlineCode","wrapper","_ref","Fragment","MDXCreateElement","propComponents","mdxType","originalType","parentName","etc","thematicBreak","comps","$export","fails","defined","quot","createHTML","string","attribute","String","p1","replace","NAME","exec","toLowerCase","isNonNullObject","stringValue","toString","REACT_ELEMENT_TYPE","isReactElement","isSpecial","cloneUnlessOtherwiseSpecified","clone","deepmerge","defaultArrayMerge","element","getKeys","symbol","getEnumerableOwnPropertySymbols","propertyIsOnObject","_","mergeObject","destination","propertyIsUnsafe","customMerge","getMergeFunction","sourceIsArray","array","prev","deepmerge_1","__esModule","_extends","_createClass","descriptor","Constructor","protoProps","staticProps","_react2","_interopRequireDefault","_propTypes2","_reactSideEffect2","_reactFastCompare2","_HelmetUtils","_HelmetConstants","_classCallCheck","TypeError","_possibleConstructorReturn","self","ReferenceError","_class","_temp","HelmetSideEffects","handleClientStateChange","HelmetExport","_React$Component","HelmetWrapper","setPrototypeOf","_inherits","mapNestedChildrenToProps","child","nestedChildren","TAG_NAMES","SCRIPT","NOSCRIPT","innerHTML","STYLE","cssText","flattenArrayTypeChildren","_extends2","arrayTypeChildren","newChildProps","mapObjectTypeChildren","_ref2","_extends3","_extends4","TITLE","titleAttributes","BODY","bodyAttributes","HTML","htmlAttributes","mapArrayTypeChildrenToProps","newFlattenedProps","arrayChildName","_extends5","warnOnInvalidChildren","mapChildrenToProps","_this2","Children","_child$props","childProps","convertReactPropstoHtmlAttributes","LINK","META","_props","set","propTypes","base","oneOfType","arrayOf","node","defer","bool","encodeSpecialCharacters","link","meta","noscript","onChangeClientState","func","script","style","mappedState","linkTags","metaTags","noscriptTags","scriptTags","styleTags","renderStatic","Button","widthChanged","keyList","hasProp","hasElementType","Element","equal","arrA","arrB","dateA","dateB","getTime","regexpA","RegExp","regexpB","message","match","number","ATTRIBUTE_NAMES","BASE","HEAD","REACT_TAG_MAP","VALID_TAG_NAMES","TAG_PROPERTIES","CHARSET","CSS_TEXT","HREF","HTTPEQUIV","INNER_HTML","ITEM_PROP","PROPERTY","REL","SRC","accesskey","charset","contenteditable","contextmenu","itemprop","tabindex","HELMET_PROPS","DEFAULT_TITLE","DEFER","ENCODE_SPECIAL_CHARACTERS","ON_CHANGE_CLIENT_STATE","TITLE_TEMPLATE","HTML_TAG_MAP","SELF_CLOSING_TAGS","HELMET_ATTRIBUTE","checkDCE","__REACT_DEVTOOLS_GLOBAL_HOOK__","err","toIObject","gOPD","createProperty","desc","getDesc","f","gOPN","gOPS","anObject","Reflect","it","getSymbols","_typeof","iterator","_objectAssign2","clock","str","encode","getTitleFromPropsList","propsList","innermostTitle","getInnermostProperty","innermostTemplate","innermostDefaultTitle","getOnChangeClientState","getAttributesFromPropsList","tagType","tagAttrs","current","getBaseTagFromPropsList","primaryAttributes","reverse","innermostBaseTag","lowerCaseAttributeKey","getTagsFromPropsList","approvedSeenTags","approvedTags","instanceTags","instanceSeenTags","primaryAttributeKey","attributeKey","tagUnion","rafPolyfill","currentTime","cafPolyfill","webkitRequestAnimationFrame","mozRequestAnimationFrame","global","webkitCancelAnimationFrame","mozCancelAnimationFrame","msg","_helmetCallback","commitTagChanges","newState","cb","updateAttributes","updateTitle","tagUpdates","updateTags","addedTags","removedTags","_tagUpdates$tagType","newTags","oldTags","flattenArray","possibleArray","attributes","elementTag","getElementsByTagName","helmetAttributeString","getAttribute","helmetAttributes","attributesToRemove","attributeKeys","setAttribute","indexToSave","_i","removeAttribute","tags","headElement","head","querySelector","tagNodes","querySelectorAll","indexToDelete","newElement","styleSheet","appendChild","createTextNode","some","existingTag","isEqualNode","parentNode","removeChild","generateElementAttributesAsString","attr","convertElementAttributestoReactProps","initProps","getMethodsForTag","toComponent","_initProps","attributeString","flattenedTitle","generateTitleAsString","_mappedTag","mappedTag","mappedAttribute","dangerouslySetInnerHTML","__html","generateTagsAsReactComponent","attributeHtml","tagContent","isSelfClosing","generateTagsAsString","initAttributes","_ref$title","aa","encodeURIComponent","isMounted","enqueueForceUpdate","enqueueReplaceState","enqueueSetState","refs","updater","isReactComponent","setState","forceUpdate","isPureReactComponent","__self","__source","_owner","keyPrefix","count","done","escape","ca","da","ba","toArray","only","createRef","PureComponent","_calculateChangedBits","_currentValue","_currentValue2","_threadCount","_context","forwardRef","lazy","_ctor","_status","_result","memo","useCallback","useImperativeHandle","useDebugValue","useLayoutEffect","useMemo","useReducer","useRef","Profiler","StrictMode","Suspense","cloneElement","createFactory","isValidElement","version","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","ReactCurrentDispatcher","ReactCurrentBatchConfig","suspense","ReactCurrentOwner","IsSomeRendererActing","Function","ea","extractEvents","eventTypes","fa","phasedRegistrationNames","ha","registrationName","ia","ja","dependencies","ka","onError","la","ma","na","oa","pa","qa","sa","ua","va","wa","currentTarget","ra","xa","ya","za","Aa","_dispatchListeners","_dispatchInstances","isPropagationStopped","isPersistent","release","Ba","Ca","injectEventPluginOrder","injectEventPluginsByName","Da","stateNode","disabled","Ea","Fa","Ga","Ha","Ia","Ja","Ka","La","Ma","Na","Oa","Pa","Qa","Ra","Sa","Ta","Ua","Wa","Xa","_debugOwner","_debugSource","fileName","lineNumber","Ya","Za","$a","ab","bb","db","eb","fb","gb","hb","ib","jb","kb","Map","lb","nb","ob","acceptsBooleans","attributeName","attributeNamespace","mustUseProperty","propertyName","sanitizeURL","sb","tb","toUpperCase","ub","vb","qb","isNaN","rb","setAttributeNS","wb","nodeName","yb","_valueTracker","getValue","setValue","stopTracking","xb","zb","checked","Ab","defaultChecked","defaultValue","_wrapperState","initialChecked","Bb","initialValue","controlled","Cb","Eb","Fb","Gb","ownerDocument","activeElement","Ib","Hb","Jb","selected","defaultSelected","Kb","Lb","Mb","Nb","textContent","xlinkHref","Ob","Pb","Qb","Rb","Sb","MSApp","execUnsafeLocalFunction","namespaceURI","valueOf","firstChild","Tb","lastChild","nodeType","nodeValue","Ub","Vb","animationend","animationiteration","animationstart","transitionend","Wb","Xb","Yb","animation","transition","Zb","$b","ac","bc","cc","ec","alternate","effectTag","fc","memoizedState","dehydrated","gc","ic","sibling","hc","jc","kc","lc","mc","nc","oc","pc","qc","rc","sc","tc","uc","vc","zc","blockedOn","topLevelType","eventSystemFlags","nativeEvent","Ac","pointerId","Bc","Cc","Ec","Fc","priority","hydrate","containerInfo","Gc","Hc","Ic","Jc","shift","Kc","Lc","Mc","srcElement","correspondingUseElement","Nc","Oc","dispatchConfig","Pc","_targetInst","Qc","Rc","Sc","Tc","Uc","Interface","isDefaultPrevented","defaultPrevented","returnValue","Wc","eventPool","Xc","destructor","Vc","getPooled","preventDefault","stopPropagation","cancelBubble","persist","eventPhase","bubbles","cancelable","timeStamp","isTrusted","extend","Yc","animationName","elapsedTime","pseudoElement","Zc","clipboardData","$c","view","detail","ad","relatedTarget","bd","keyCode","charCode","cd","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","dd","8","9","12","13","16","17","18","19","20","27","32","33","34","35","36","37","38","39","40","45","46","112","113","114","115","116","117","118","119","120","121","122","123","144","145","224","ed","Alt","Control","Meta","Shift","gd","getModifierState","hd","fromCharCode","location","ctrlKey","shiftKey","altKey","metaKey","repeat","locale","which","jd","kd","ld","md","nd","screenX","screenY","clientX","clientY","pageX","pageY","fromElement","toElement","movementX","movementY","od","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","pd","dataTransfer","qd","touches","targetTouches","changedTouches","rd","sd","deltaX","wheelDeltaX","deltaY","wheelDeltaY","wheelDelta","deltaZ","deltaMode","td","ud","vd","wd","yd","zd","Ad","Bd","Cd","Dd","bubbled","captured","eventPriority","Ed","getEventPriority","Fd","Gd","Hd","Jd","Kd","targetInst","ancestors","Ld","Md","Nd","Od","Pd","addEventListener","Qd","Dc","Rd","Sd","WeakMap","xc","Set","yc","has","add","Td","animationIterationCount","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridArea","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","lineClamp","order","orphans","tabSize","widows","zoom","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","Ud","Vd","trim","Wd","setProperty","charAt","substring","Xd","menuitem","area","br","col","embed","hr","img","input","keygen","param","track","wbr","Yd","Zd","is","$d","ae","be","ce","de","offset","nextSibling","fe","HTMLIFrameElement","contentWindow","ge","contentEditable","le","me","ne","autoFocus","oe","pe","qe","re","se","previousSibling","data","te","random","ue","ve","we","xe","ye","ze","Ae","Be","Ce","De","Ee","Fe","Ge","He","documentMode","Ie","Je","Ke","Le","beforeInput","compositionEnd","compositionStart","compositionUpdate","Me","Ne","Oe","Pe","Se","Qe","Re","Te","date","datetime","email","month","password","range","search","tel","time","week","Ue","Ve","change","We","Xe","Ye","Ze","$e","af","bf","cf","detachEvent","df","ef","attachEvent","ff","gf","hf","lf","jf","_isInputEventSupported","kf","mouseEnter","mouseLeave","pointerEnter","pointerLeave","mf","defaultView","parentWindow","of","pf","qf","rf","sf","select","tf","uf","vf","wf","xf","start","selectionStart","end","selectionEnd","anchorNode","getSelection","anchorOffset","focusNode","focusOffset","yf","onSelect","SimpleEventPlugin","EnterLeaveEventPlugin","ChangeEventPlugin","SelectEventPlugin","BeforeInputEventPlugin","Af","Bf","Cf","Df","Ef","contextTypes","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","childContextTypes","Ff","Gf","Hf","If","getChildContext","Jf","__reactInternalMemoizedMergedChildContext","Kf","Lf","Mf","Nf","Of","Pf","Qf","Rf","Sf","Tf","Uf","Vf","Wf","Xf","Yf","Zf","$f","ag","cg","dg","eg","fg","gg","hg","ig","jg","kg","lg","mg","ng","og","pg","qg","rg","sg","tg","ug","childExpirationTime","vg","firstContext","wg","xg","observedBits","responders","yg","zg","baseState","firstUpdate","lastUpdate","firstCapturedUpdate","lastCapturedUpdate","firstEffect","lastEffect","firstCapturedEffect","lastCapturedEffect","Ag","Bg","suspenseConfig","payload","nextEffect","Cg","Dg","updateQueue","Eg","Fg","Gg","Hg","Ig","Jg","Kg","Lg","Mg","Ng","Og","Sg","_reactInternalFiber","Pg","Qg","Rg","Tg","Ug","contextType","Vg","componentWillReceiveProps","UNSAFE_componentWillReceiveProps","Wg","getDerivedStateFromProps","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentDidMount","Xg","Yg","_stringRef","Zg","$g","ah","bh","elementType","ch","implementation","dh","eh","ta","fh","gh","hh","ih","jh","kh","lh","mh","documentElement","nh","oh","ph","qh","memoizedProps","revealOrder","rh","responder","sh","th","uh","vh","wh","xh","yh","zh","Ah","Bh","Ch","Gh","Hh","Ih","Jh","Kh","Lh","Mh","Nh","queue","baseUpdate","Oh","Ph","Qh","lastRenderedReducer","dispatch","action","last","lastRenderedState","eagerReducer","eagerState","Rh","Sh","Th","Uh","destroy","deps","Vh","Wh","Xh","Yh","Zh","$h","ai","bi","readContext","useResponder","useDeferredValue","useTransition","ci","di","ei","fi","gi","hi","pendingProps","ii","ji","ki","mi","ni","oi","pi","qi","ri","si","ti","ui","UNSAFE_componentWillUpdate","componentWillUpdate","vi","getDerivedStateFromError","wi","pendingContext","Hi","Ji","Ki","xi","retryTime","yi","fallback","unstable_avoidThisFallback","zi","Ai","isBackwards","rendering","tail","tailExpiration","tailMode","Bi","Ci","Li","Mi","Ni","stack","onClick","onclick","Oi","WeakSet","Pi","Si","Ri","Ti","Ui","__reactInternalSnapshotBeforeUpdate","Vi","Wi","Qi","Xi","Yi","Zi","$i","insertBefore","_reactRootContainer","aj","wasMultiple","multiple","bj","cj","dj","then","ej","fj","gj","hj","ij","componentDidCatch","jj","componentStack","gk","kj","ceil","lj","mj","wj","xj","yj","zj","Aj","Bj","Dj","Ej","Fj","Gj","Hj","Ij","Jj","timeoutMs","Kj","Lj","Mj","Nj","Oj","lastExpiredTime","Pj","firstPendingTime","lastPingedTime","nextKnownPendingLevel","callbackExpirationTime","callbackPriority","callbackNode","Qj","Rj","Sj","Tj","Uj","Vj","Wj","finishedWork","finishedExpirationTime","lastSuspendedTime","Xj","timeoutHandle","Yj","busyMinDurationMs","busyDelayMs","Zj","bk","ck","pingCache","dk","ek","fk","createElementNS","ik","firstSuspendedTime","rangeCount","Db","focusedElem","selectionRange","jk","ee","contains","compareDocumentPosition","min","createRange","setStart","removeAllRanges","addRange","setEnd","scrollLeft","scrollTop","focus","Dh","dc","fd","hk","Eh","Fh","xk","Di","Ei","Fi","xd","Gi","kk","lk","mk","hidden","Va","nk","unstable_observedBits","pk","pendingChildren","qk","rk","sk","tk","uk","vk","wc","_internalRoot","wk","zk","hasAttribute","yk","Ak","Bk","unmount","JSON","stringify","form","ak","Ck","createPortal","findDOMNode","unstable_renderSubtreeIntoContainer","unmountComponentAtNode","unstable_createPortal","unstable_batchedUpdates","flushSync","Events","findFiberByHostInstance","bundleType","rendererPackageName","isDisabled","supportsFiber","inject","onCommitFiberRoot","onCommitFiberUnmount","ok","overrideHookState","overrideProps","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","Dk","Ek"],"mappings":"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","file":"commons-42a47b90457bdd243664.js","sourcesContent":["/** @license React v0.18.0\n * scheduler.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';\n\nrequire(\"core-js/modules/es6.date.now\");\n\nrequire(\"core-js/modules/es6.object.define-property\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: !0\n});\n\nvar _f, g, h, k, l;\n\nif (\"undefined\" === typeof window || \"function\" !== typeof MessageChannel) {\n  var p = null,\n      q = null,\n      t = function t() {\n    if (null !== p) try {\n      var a = exports.unstable_now();\n      p(!0, a);\n      p = null;\n    } catch (b) {\n      throw setTimeout(t, 0), b;\n    }\n  },\n      u = Date.now();\n\n  exports.unstable_now = function () {\n    return Date.now() - u;\n  };\n\n  _f = function f(a) {\n    null !== p ? setTimeout(_f, 0, a) : (p = a, setTimeout(t, 0));\n  };\n\n  g = function g(a, b) {\n    q = setTimeout(a, b);\n  };\n\n  h = function h() {\n    clearTimeout(q);\n  };\n\n  k = function k() {\n    return !1;\n  };\n\n  l = exports.unstable_forceFrameRate = function () {};\n} else {\n  var w = window.performance,\n      x = window.Date,\n      y = window.setTimeout,\n      z = window.clearTimeout;\n\n  if (\"undefined\" !== typeof console) {\n    var A = window.cancelAnimationFrame;\n    \"function\" !== typeof window.requestAnimationFrame && console.error(\"This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills\");\n    \"function\" !== typeof A && console.error(\"This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills\");\n  }\n\n  if (\"object\" === typeof w && \"function\" === typeof w.now) exports.unstable_now = function () {\n    return w.now();\n  };else {\n    var B = x.now();\n\n    exports.unstable_now = function () {\n      return x.now() - B;\n    };\n  }\n  var C = !1,\n      D = null,\n      E = -1,\n      F = 5,\n      G = 0;\n\n  k = function k() {\n    return exports.unstable_now() >= G;\n  };\n\n  l = function l() {};\n\n  exports.unstable_forceFrameRate = function (a) {\n    0 > a || 125 < a ? console.error(\"forceFrameRate takes a positive int between 0 and 125, forcing framerates higher than 125 fps is not unsupported\") : F = 0 < a ? Math.floor(1E3 / a) : 5;\n  };\n\n  var H = new MessageChannel(),\n      I = H.port2;\n\n  H.port1.onmessage = function () {\n    if (null !== D) {\n      var a = exports.unstable_now();\n      G = a + F;\n\n      try {\n        D(!0, a) ? I.postMessage(null) : (C = !1, D = null);\n      } catch (b) {\n        throw I.postMessage(null), b;\n      }\n    } else C = !1;\n  };\n\n  _f = function _f(a) {\n    D = a;\n    C || (C = !0, I.postMessage(null));\n  };\n\n  g = function g(a, b) {\n    E = y(function () {\n      a(exports.unstable_now());\n    }, b);\n  };\n\n  h = function h() {\n    z(E);\n    E = -1;\n  };\n}\n\nfunction J(a, b) {\n  var c = a.length;\n  a.push(b);\n\n  a: for (;;) {\n    var d = Math.floor((c - 1) / 2),\n        e = a[d];\n    if (void 0 !== e && 0 < K(e, b)) a[d] = b, a[c] = e, c = d;else break a;\n  }\n}\n\nfunction L(a) {\n  a = a[0];\n  return void 0 === a ? null : a;\n}\n\nfunction M(a) {\n  var b = a[0];\n\n  if (void 0 !== b) {\n    var c = a.pop();\n\n    if (c !== b) {\n      a[0] = c;\n\n      a: for (var d = 0, e = a.length; d < e;) {\n        var m = 2 * (d + 1) - 1,\n            n = a[m],\n            v = m + 1,\n            r = a[v];\n        if (void 0 !== n && 0 > K(n, c)) void 0 !== r && 0 > K(r, n) ? (a[d] = r, a[v] = c, d = v) : (a[d] = n, a[m] = c, d = m);else if (void 0 !== r && 0 > K(r, c)) a[d] = r, a[v] = c, d = v;else break a;\n      }\n    }\n\n    return b;\n  }\n\n  return null;\n}\n\nfunction K(a, b) {\n  var c = a.sortIndex - b.sortIndex;\n  return 0 !== c ? c : a.id - b.id;\n}\n\nvar N = [],\n    O = [],\n    P = 1,\n    Q = null,\n    R = 3,\n    S = !1,\n    T = !1,\n    U = !1;\n\nfunction V(a) {\n  for (var b = L(O); null !== b;) {\n    if (null === b.callback) M(O);else if (b.startTime <= a) M(O), b.sortIndex = b.expirationTime, J(N, b);else break;\n    b = L(O);\n  }\n}\n\nfunction W(a) {\n  U = !1;\n  V(a);\n  if (!T) if (null !== L(N)) T = !0, _f(X);else {\n    var b = L(O);\n    null !== b && g(W, b.startTime - a);\n  }\n}\n\nfunction X(a, b) {\n  T = !1;\n  U && (U = !1, h());\n  S = !0;\n  var c = R;\n\n  try {\n    V(b);\n\n    for (Q = L(N); null !== Q && (!(Q.expirationTime > b) || a && !k());) {\n      var d = Q.callback;\n\n      if (null !== d) {\n        Q.callback = null;\n        R = Q.priorityLevel;\n        var e = d(Q.expirationTime <= b);\n        b = exports.unstable_now();\n        \"function\" === typeof e ? Q.callback = e : Q === L(N) && M(N);\n        V(b);\n      } else M(N);\n\n      Q = L(N);\n    }\n\n    if (null !== Q) var m = !0;else {\n      var n = L(O);\n      null !== n && g(W, n.startTime - b);\n      m = !1;\n    }\n    return m;\n  } finally {\n    Q = null, R = c, S = !1;\n  }\n}\n\nfunction Y(a) {\n  switch (a) {\n    case 1:\n      return -1;\n\n    case 2:\n      return 250;\n\n    case 5:\n      return 1073741823;\n\n    case 4:\n      return 1E4;\n\n    default:\n      return 5E3;\n  }\n}\n\nvar Z = l;\nexports.unstable_ImmediatePriority = 1;\nexports.unstable_UserBlockingPriority = 2;\nexports.unstable_NormalPriority = 3;\nexports.unstable_IdlePriority = 5;\nexports.unstable_LowPriority = 4;\n\nexports.unstable_runWithPriority = function (a, b) {\n  switch (a) {\n    case 1:\n    case 2:\n    case 3:\n    case 4:\n    case 5:\n      break;\n\n    default:\n      a = 3;\n  }\n\n  var c = R;\n  R = a;\n\n  try {\n    return b();\n  } finally {\n    R = c;\n  }\n};\n\nexports.unstable_next = function (a) {\n  switch (R) {\n    case 1:\n    case 2:\n    case 3:\n      var b = 3;\n      break;\n\n    default:\n      b = R;\n  }\n\n  var c = R;\n  R = b;\n\n  try {\n    return a();\n  } finally {\n    R = c;\n  }\n};\n\nexports.unstable_scheduleCallback = function (a, b, c) {\n  var d = exports.unstable_now();\n\n  if (\"object\" === typeof c && null !== c) {\n    var e = c.delay;\n    e = \"number\" === typeof e && 0 < e ? d + e : d;\n    c = \"number\" === typeof c.timeout ? c.timeout : Y(a);\n  } else c = Y(a), e = d;\n\n  c = e + c;\n  a = {\n    id: P++,\n    callback: b,\n    priorityLevel: a,\n    startTime: e,\n    expirationTime: c,\n    sortIndex: -1\n  };\n  e > d ? (a.sortIndex = e, J(O, a), null === L(N) && a === L(O) && (U ? h() : U = !0, g(W, e - d))) : (a.sortIndex = c, J(N, a), T || S || (T = !0, _f(X)));\n  return a;\n};\n\nexports.unstable_cancelCallback = function (a) {\n  a.callback = null;\n};\n\nexports.unstable_wrapCallback = function (a) {\n  var b = R;\n  return function () {\n    var c = R;\n    R = b;\n\n    try {\n      return a.apply(this, arguments);\n    } finally {\n      R = c;\n    }\n  };\n};\n\nexports.unstable_getCurrentPriorityLevel = function () {\n  return R;\n};\n\nexports.unstable_shouldYield = function () {\n  var a = exports.unstable_now();\n  V(a);\n  var b = L(N);\n  return b !== Q && null !== Q && null !== b && null !== b.callback && b.startTime <= a && b.expirationTime < Q.expirationTime || k();\n};\n\nexports.unstable_requestPaint = Z;\n\nexports.unstable_continueExecution = function () {\n  T || S || (T = !0, _f(X));\n};\n\nexports.unstable_pauseExecution = function () {};\n\nexports.unstable_getFirstCallbackNode = function () {\n  return L(N);\n};\n\nexports.unstable_Profiling = null;","import \"core-js/modules/es6.object.assign\";\nimport \"core-js/modules/es7.symbol.async-iterator\";\nimport \"core-js/modules/es6.symbol\";\nimport { jsx, ThemeContext } from '@emotion/core';\nimport { css } from '@theme-ui/css';\nimport React from 'react';\nimport deepmerge from 'deepmerge';\nimport { version } from '@emotion/core/package.json';\n\nvar getCSS = function getCSS(props) {\n  if (!props.sx && !props.css) {\n    return undefined;\n  }\n\n  return function (theme) {\n    var styles = css(props.sx)(theme);\n    var raw = typeof props.css === 'function' ? props.css(theme) : props.css;\n    return [styles, raw];\n  };\n};\n\nvar parseProps = function parseProps(props) {\n  if (!props) {\n    return null;\n  }\n\n  var next = {};\n\n  for (var key in props) {\n    if (key === 'sx') {\n      continue;\n    }\n\n    next[key] = props[key];\n  }\n\n  var css$$1 = getCSS(props);\n\n  if (css$$1) {\n    next.css = css$$1;\n  }\n\n  return next;\n};\n\nvar jsx$1 = function jsx$1(type, props) {\n  var children = [],\n      len = arguments.length - 2;\n\n  while (len-- > 0) {\n    children[len] = arguments[len + 2];\n  }\n\n  return jsx.apply(undefined, [type, parseProps(props)].concat(children));\n};\n\nvar Context = React.createContext({\n  __EMOTION_VERSION__: version,\n  theme: null\n});\n\nvar useThemeUI = function useThemeUI() {\n  return React.useContext(Context);\n};\n\nvar canUseSymbol = typeof Symbol === 'function' && Symbol[\"for\"];\nvar REACT_ELEMENT = canUseSymbol ? Symbol[\"for\"]('react.element') : 0xeac7;\nvar FORWARD_REF = canUseSymbol ? Symbol[\"for\"]('react.forward_ref') : 0xeac7;\n\nvar isMergeableObject = function isMergeableObject(n) {\n  return !!n && typeof n === 'object' && n.$$typeof !== REACT_ELEMENT && n.$$typeof !== FORWARD_REF;\n};\n\nvar arrayMerge = function arrayMerge(destinationArray, sourceArray, options) {\n  return sourceArray;\n};\n\nvar merge = function merge(a, b) {\n  return deepmerge(a, b, {\n    isMergeableObject: isMergeableObject,\n    arrayMerge: arrayMerge\n  });\n};\n\nmerge.all = function () {\n  var args = [],\n      len = arguments.length;\n\n  while (len--) {\n    args[len] = arguments[len];\n  }\n\n  return deepmerge.all(args, {\n    isMergeableObject: isMergeableObject,\n    arrayMerge: arrayMerge\n  });\n};\n\nvar BaseProvider = function BaseProvider(ref) {\n  var context = ref.context;\n  var children = ref.children;\n  return jsx$1(ThemeContext.Provider, {\n    value: context.theme\n  }, jsx$1(Context.Provider, {\n    value: context,\n    children: children\n  }));\n};\n\nvar ThemeProvider = function ThemeProvider(ref) {\n  var theme = ref.theme;\n  var children = ref.children;\n  var outer = useThemeUI();\n\n  if (process.env.NODE_ENV !== 'production') {\n    if (outer.__EMOTION_VERSION__ !== version) {\n      console.warn('Multiple versions of Emotion detected,', 'and theming might not work as expected.', 'Please ensure there is only one copy of @emotion/core installed in your application.');\n    }\n  }\n\n  var context = typeof theme === 'function' ? Object.assign({}, outer, {\n    theme: theme(outer.theme)\n  }) : merge.all({}, outer, {\n    theme: theme\n  });\n  return jsx$1(BaseProvider, {\n    context: context,\n    children: children\n  });\n};\n\nexport { jsx$1 as jsx, Context, useThemeUI, merge, ThemeProvider };","'use strict';\n\nrequire(\"core-js/modules/es6.array.index-of\");\n\nrequire(\"core-js/modules/es6.array.map\");\n\nrequire(\"core-js/modules/es6.function.name\");\n\nrequire(\"core-js/modules/es6.object.create\");\n\nrequire(\"core-js/modules/es6.object.define-property\");\n\nfunction _interopDefault(ex) {\n  return ex && typeof ex === 'object' && 'default' in ex ? ex['default'] : ex;\n}\n\nvar React = require('react');\n\nvar React__default = _interopDefault(React);\n\nvar shallowEqual = _interopDefault(require('shallowequal'));\n\nfunction _defineProperty(obj, key, value) {\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n\n  return obj;\n}\n\nfunction _inheritsLoose(subClass, superClass) {\n  subClass.prototype = Object.create(superClass.prototype);\n  subClass.prototype.constructor = subClass;\n  subClass.__proto__ = superClass;\n}\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n\nfunction withSideEffect(reducePropsToState, handleStateChangeOnClient, mapStateOnServer) {\n  if (typeof reducePropsToState !== 'function') {\n    throw new Error('Expected reducePropsToState to be a function.');\n  }\n\n  if (typeof handleStateChangeOnClient !== 'function') {\n    throw new Error('Expected handleStateChangeOnClient to be a function.');\n  }\n\n  if (typeof mapStateOnServer !== 'undefined' && typeof mapStateOnServer !== 'function') {\n    throw new Error('Expected mapStateOnServer to either be undefined or a function.');\n  }\n\n  function getDisplayName(WrappedComponent) {\n    return WrappedComponent.displayName || WrappedComponent.name || 'Component';\n  }\n\n  return function wrap(WrappedComponent) {\n    if (typeof WrappedComponent !== 'function') {\n      throw new Error('Expected WrappedComponent to be a React component.');\n    }\n\n    var mountedInstances = [];\n    var state;\n\n    function emitChange() {\n      state = reducePropsToState(mountedInstances.map(function (instance) {\n        return instance.props;\n      }));\n\n      if (SideEffect.canUseDOM) {\n        handleStateChangeOnClient(state);\n      } else if (mapStateOnServer) {\n        state = mapStateOnServer(state);\n      }\n    }\n\n    var SideEffect =\n    /*#__PURE__*/\n    function (_Component) {\n      _inheritsLoose(SideEffect, _Component);\n\n      function SideEffect() {\n        return _Component.apply(this, arguments) || this;\n      } // Try to use displayName of wrapped component\n      // Expose canUseDOM so tests can monkeypatch it\n\n\n      SideEffect.peek = function peek() {\n        return state;\n      };\n\n      SideEffect.rewind = function rewind() {\n        if (SideEffect.canUseDOM) {\n          throw new Error('You may only call rewind() on the server. Call peek() to read the current state.');\n        }\n\n        var recordedState = state;\n        state = undefined;\n        mountedInstances = [];\n        return recordedState;\n      };\n\n      var _proto = SideEffect.prototype;\n\n      _proto.shouldComponentUpdate = function shouldComponentUpdate(nextProps) {\n        return !shallowEqual(nextProps, this.props);\n      };\n\n      _proto.componentWillMount = function componentWillMount() {\n        mountedInstances.push(this);\n        emitChange();\n      };\n\n      _proto.componentDidUpdate = function componentDidUpdate() {\n        emitChange();\n      };\n\n      _proto.componentWillUnmount = function componentWillUnmount() {\n        var index = mountedInstances.indexOf(this);\n        mountedInstances.splice(index, 1);\n        emitChange();\n      };\n\n      _proto.render = function render() {\n        return React__default.createElement(WrappedComponent, this.props);\n      };\n\n      return SideEffect;\n    }(React.Component);\n\n    _defineProperty(SideEffect, \"displayName\", \"SideEffect(\" + getDisplayName(WrappedComponent) + \")\");\n\n    _defineProperty(SideEffect, \"canUseDOM\", canUseDOM);\n\n    return SideEffect;\n  };\n}\n\nmodule.exports = withSideEffect;","import memoize from '@emotion/memoize';\nvar 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|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|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\n\nvar index = memoize(function (prop) {\n  return reactPropsRegex.test(prop) || prop.charCodeAt(0) === 111\n  /* o */\n  && prop.charCodeAt(1) === 110\n  /* n */\n  && prop.charCodeAt(2) < 91;\n}\n/* Z+1 */\n);\nexport default index;","import \"core-js/modules/es6.array.index-of\";\nimport \"core-js/modules/web.dom.iterable\";\nimport \"core-js/modules/es6.array.iterator\";\nimport \"core-js/modules/es6.object.to-string\";\nimport \"core-js/modules/es6.object.keys\";\nimport \"core-js/modules/es6.array.for-each\";\nimport \"core-js/modules/es6.object.assign\";\nimport \"core-js/modules/es6.array.is-array\";\nimport \"core-js/modules/es6.array.filter\";\nimport React from 'react';\nimport { jsx, useThemeUI, merge, Context } from '@theme-ui/core';\nimport { Global, ThemeContext } from '@emotion/core';\nimport { css, get } from '@theme-ui/css';\n\nvar toVarName = function toVarName(key) {\n  return \"--theme-ui-\" + key;\n};\n\nvar toVarValue = function toVarValue(key, value) {\n  return \"var(\" + toVarName(key) + \", \" + value + \")\";\n};\n\nvar join = function join() {\n  var args = [],\n      len = arguments.length;\n\n  while (len--) {\n    args[len] = arguments[len];\n  }\n\n  return args.filter(Boolean).join('-');\n};\n\nvar numberScales = {\n  fontWeights: true,\n  lineHeights: true\n};\nvar reservedKeys = {\n  useCustomProperties: true,\n  initialColorModeName: true,\n  initialColorMode: true\n};\n\nvar toPixel = function toPixel(key, value) {\n  if (typeof value !== 'number') {\n    return value;\n  }\n\n  if (numberScales[key]) {\n    return value;\n  }\n\n  return value + 'px';\n}; // convert theme values to custom properties\n\n\nvar toCustomProperties = function toCustomProperties(obj, parent, themeKey) {\n  var next = Array.isArray(obj) ? [] : {};\n\n  for (var key in obj) {\n    var value = obj[key];\n    var name = join(parent, key);\n\n    if (value && typeof value === 'object') {\n      next[key] = toCustomProperties(value, name, key);\n      continue;\n    }\n\n    if (reservedKeys[key]) {\n      next[key] = value;\n      continue;\n    }\n\n    var val = toPixel(themeKey || key, value);\n    next[key] = toVarValue(name, val);\n  }\n\n  return next;\n};\n\nvar objectToVars = function objectToVars(parent, obj) {\n  var vars = {};\n\n  for (var key in obj) {\n    if (key === 'modes') {\n      continue;\n    }\n\n    var name = join(parent, key);\n    var value = obj[key];\n\n    if (value && typeof value === 'object') {\n      vars = Object.assign({}, vars, objectToVars(name, value));\n    } else {\n      vars[toVarName(name)] = value;\n    }\n  }\n\n  return vars;\n}; // create body styles for color modes\n\n\nvar createColorStyles = function createColorStyles(theme) {\n  if (theme === void 0) theme = {};\n\n  if (!theme.colors || theme.useBodyStyles === false) {\n    return {};\n  }\n\n  if (theme.useCustomProperties === false || !theme.colors.modes) {\n    return css({\n      body: {\n        color: 'text',\n        bg: 'background'\n      }\n    })(theme);\n  }\n\n  var colors = theme.rawColors || theme.colors;\n  var modes = colors.modes;\n  var styles = objectToVars('colors', colors);\n  Object.keys(modes).forEach(function (mode) {\n    var key = \"&.theme-ui-\" + mode;\n    styles[key] = objectToVars('colors', modes[mode]);\n  });\n  return css({\n    body: Object.assign({}, styles, {\n      color: 'text',\n      bg: 'background'\n    })\n  })(theme);\n};\n\nvar STORAGE_KEY = 'theme-ui-color-mode';\nvar storage = {\n  get: function get(init) {\n    try {\n      return window.localStorage.getItem(STORAGE_KEY) || init;\n    } catch (e) {\n      console.warn('localStorage is disabled and color mode might not work as expected.', 'Please check your Site Settings.', e);\n    }\n  },\n  set: function set(value) {\n    try {\n      window.localStorage.setItem(STORAGE_KEY, value);\n    } catch (e) {\n      console.warn('localStorage is disabled and color mode might not work as expected.', 'Please check your Site Settings.', e);\n    }\n  }\n};\n\nvar getMediaQuery = function getMediaQuery() {\n  var darkQuery = '(prefers-color-scheme: dark)';\n  var lightQuery = '(prefers-color-scheme: light)';\n  var darkMQL = window.matchMedia ? window.matchMedia(darkQuery) : {};\n  var lightMQL = window.matchMedia ? window.matchMedia(lightQuery) : {};\n  var dark = darkMQL.media === darkQuery && darkMQL.matches;\n\n  if (dark) {\n    return 'dark';\n  }\n\n  var light = lightMQL.media === lightQuery && lightMQL.matches;\n\n  if (light) {\n    return 'light';\n  }\n\n  return 'default';\n};\n\nvar useColorModeState = function useColorModeState(theme) {\n  if (theme === void 0) theme = {};\n  var ref = React.useState(theme.initialColorModeName || 'default');\n  var mode = ref[0];\n  var setMode = ref[1]; // initialize state\n\n  React.useEffect(function () {\n    var stored = storage.get();\n    document.body.classList.remove('theme-ui-' + stored);\n\n    if (!stored && theme.useColorSchemeMediaQuery) {\n      var query = getMediaQuery();\n      setMode(query);\n      return;\n    }\n\n    if (!stored || stored === mode) {\n      return;\n    }\n\n    setMode(stored);\n  }, []);\n  React.useEffect(function () {\n    if (!mode) {\n      return;\n    }\n\n    storage.set(mode);\n  }, [mode]);\n\n  if (process.env.NODE_ENV !== 'production') {\n    if (theme.colors && theme.colors.modes && Object.keys(theme.colors.modes).indexOf(theme.initialColorModeName) > -1) {\n      console.warn('The `initialColorModeName` value should be a unique name' + ' and cannot reference a key in `theme.colors.modes`.');\n    }\n  }\n\n  return [mode, setMode];\n};\n\nvar useColorMode = function useColorMode() {\n  var ref = useThemeUI();\n  var colorMode = ref.colorMode;\n  var setColorMode = ref.setColorMode;\n\n  if (typeof setColorMode !== 'function') {\n    throw new Error(\"[useColorMode] requires the ColorModeProvider component\");\n  }\n\n  return [colorMode, setColorMode];\n};\n\nvar applyColorMode = function applyColorMode(theme, mode) {\n  if (!mode) {\n    return theme;\n  }\n\n  var modes = get(theme, 'colors.modes', {});\n  return merge.all({}, theme, {\n    colors: get(modes, mode, {})\n  });\n};\n\nvar BodyStyles = function BodyStyles() {\n  return jsx(Global, {\n    styles: function styles(theme) {\n      return createColorStyles(theme);\n    }\n  });\n};\n\nvar ColorModeProvider = function ColorModeProvider(ref) {\n  var children = ref.children;\n  var outer = useThemeUI();\n  var ref$1 = useColorModeState(outer.theme);\n  var colorMode = ref$1[0];\n  var setColorMode = ref$1[1];\n  var theme = applyColorMode(outer.theme || {}, colorMode);\n  var emotionTheme = Object.assign({}, theme);\n\n  if (theme.useCustomProperties !== false) {\n    emotionTheme.colors = toCustomProperties(emotionTheme.colors, 'colors');\n  }\n\n  var context = Object.assign({}, outer, {\n    theme: theme,\n    colorMode: colorMode,\n    setColorMode: setColorMode\n  });\n  return jsx(ThemeContext.Provider, {\n    value: emotionTheme\n  }, jsx(Context.Provider, {\n    value: context\n  }, jsx(BodyStyles, {\n    key: 'color-mode'\n  }), children));\n};\n\nvar noflash = \"(function() { try {\\n  var mode = localStorage.getItem('theme-ui-color-mode');\\n  if (!mode) return\\n  document.body.classList.add('theme-ui-' + mode);\\n} catch (e) {} })();\";\n\nvar InitializeColorMode = function InitializeColorMode() {\n  return jsx('script', {\n    key: 'theme-ui-no-flash',\n    dangerouslySetInnerHTML: {\n      __html: noflash\n    }\n  });\n};\n\nexport { useColorMode, ColorModeProvider, InitializeColorMode };","import \"core-js/modules/es6.array.is-array\";\nimport \"core-js/modules/es6.object.assign\";\nimport \"core-js/modules/es6.array.reduce\";\nimport \"core-js/modules/es6.array.map\";\nimport \"core-js/modules/es6.regexp.split\";\nimport { jsx, useThemeUI, ThemeProvider } from '@theme-ui/core';\nimport { ColorModeProvider } from '@theme-ui/color-modes';\nimport { MDXProvider } from '@theme-ui/mdx';\nimport { Global } from '@emotion/core';\n\nvar get = function get(obj, key, def, p, undef) {\n  key = key && key.split ? key.split('.') : [key];\n\n  for (p = 0; p < key.length; p++) {\n    obj = obj ? obj[key[p]] : undef;\n  }\n\n  return obj === undef ? def : obj;\n};\n\nvar defaultBreakpoints = [40, 52, 64].map(function (n) {\n  return n + 'em';\n});\nvar defaultTheme = {\n  space: [0, 4, 8, 16, 32, 64, 128, 256, 512],\n  fontSizes: [12, 14, 16, 20, 24, 32, 48, 64, 72]\n};\nvar aliases = {\n  bg: 'backgroundColor',\n  m: 'margin',\n  mt: 'marginTop',\n  mr: 'marginRight',\n  mb: 'marginBottom',\n  ml: 'marginLeft',\n  mx: 'marginX',\n  my: 'marginY',\n  p: 'padding',\n  pt: 'paddingTop',\n  pr: 'paddingRight',\n  pb: 'paddingBottom',\n  pl: 'paddingLeft',\n  px: 'paddingX',\n  py: 'paddingY'\n};\nvar multiples = {\n  marginX: ['marginLeft', 'marginRight'],\n  marginY: ['marginTop', 'marginBottom'],\n  paddingX: ['paddingLeft', 'paddingRight'],\n  paddingY: ['paddingTop', 'paddingBottom'],\n  size: ['width', 'height']\n};\nvar scales = {\n  color: 'colors',\n  backgroundColor: 'colors',\n  borderColor: 'colors',\n  margin: 'space',\n  marginTop: 'space',\n  marginRight: 'space',\n  marginBottom: 'space',\n  marginLeft: 'space',\n  marginX: 'space',\n  marginY: 'space',\n  padding: 'space',\n  paddingTop: 'space',\n  paddingRight: 'space',\n  paddingBottom: 'space',\n  paddingLeft: 'space',\n  paddingX: 'space',\n  paddingY: 'space',\n  top: 'space',\n  right: 'space',\n  bottom: 'space',\n  left: 'space',\n  gridGap: 'space',\n  gridColumnGap: 'space',\n  gridRowGap: 'space',\n  gap: 'space',\n  columnGap: 'space',\n  rowGap: 'space',\n  fontFamily: 'fonts',\n  fontSize: 'fontSizes',\n  fontWeight: 'fontWeights',\n  lineHeight: 'lineHeights',\n  letterSpacing: 'letterSpacings',\n  border: 'borders',\n  borderTop: 'borders',\n  borderRight: 'borders',\n  borderBottom: 'borders',\n  borderLeft: 'borders',\n  borderWidth: 'borderWidths',\n  borderStyle: 'borderStyles',\n  borderRadius: 'radii',\n  borderTopRightRadius: 'radii',\n  borderTopLeftRadius: 'radii',\n  borderBottomRightRadius: 'radii',\n  borderBottomLeftRadius: 'radii',\n  borderTopWidth: 'borderWidths',\n  borderTopColor: 'colors',\n  borderTopStyle: 'borderStyles',\n  borderBottomWidth: 'borderWidths',\n  borderBottomColor: 'colors',\n  borderBottomStyle: 'borderStyles',\n  borderLeftWidth: 'borderWidths',\n  borderLeftColor: 'colors',\n  borderLeftStyle: 'borderStyles',\n  borderRightWidth: 'borderWidths',\n  borderRightColor: 'colors',\n  borderRightStyle: 'borderStyles',\n  outlineColor: 'colors',\n  boxShadow: 'shadows',\n  textShadow: 'shadows',\n  zIndex: 'zIndices',\n  width: 'sizes',\n  minWidth: 'sizes',\n  maxWidth: 'sizes',\n  height: 'sizes',\n  minHeight: 'sizes',\n  maxHeight: 'sizes',\n  flexBasis: 'sizes',\n  size: 'sizes',\n  // svg\n  fill: 'colors',\n  stroke: 'colors'\n};\n\nvar positiveOrNegative = function positiveOrNegative(scale, value) {\n  if (typeof value !== 'number' || value >= 0) {\n    return get(scale, value, value);\n  }\n\n  var absolute = Math.abs(value);\n  var n = get(scale, absolute, absolute);\n\n  if (typeof n === 'string') {\n    return '-' + n;\n  }\n\n  return n * -1;\n};\n\nvar transforms = ['margin', 'marginTop', 'marginRight', 'marginBottom', 'marginLeft', 'marginX', 'marginY', 'top', 'bottom', 'left', 'right'].reduce(function (acc, curr) {\n  var obj;\n  return Object.assign({}, acc, (obj = {}, obj[curr] = positiveOrNegative, obj));\n}, {});\n\nvar responsive = function responsive(styles) {\n  return function (theme) {\n    var next = {};\n    var breakpoints = get(theme, 'breakpoints', defaultBreakpoints);\n    var mediaQueries = [null].concat(breakpoints.map(function (n) {\n      return \"@media screen and (min-width: \" + n + \")\";\n    }));\n\n    for (var key in styles) {\n      var value = typeof styles[key] === 'function' ? styles[key](theme) : styles[key];\n\n      if (value == null) {\n        continue;\n      }\n\n      if (!Array.isArray(value)) {\n        next[key] = value;\n        continue;\n      }\n\n      for (var i = 0; i < value.slice(0, mediaQueries.length).length; i++) {\n        var media = mediaQueries[i];\n\n        if (!media) {\n          next[key] = value[i];\n          continue;\n        }\n\n        next[media] = next[media] || {};\n\n        if (value[i] == null) {\n          continue;\n        }\n\n        next[media][key] = value[i];\n      }\n    }\n\n    return next;\n  };\n};\n\nvar css = function css(args) {\n  return function (props) {\n    if (props === void 0) {\n      props = {};\n    }\n\n    var theme = Object.assign({}, defaultTheme, props.theme || props);\n    var result = {};\n    var obj = typeof args === 'function' ? args(theme) : args;\n    var styles = responsive(obj)(theme);\n\n    for (var key in styles) {\n      var x = styles[key];\n      var val = typeof x === 'function' ? x(theme) : x;\n\n      if (key === 'variant') {\n        var variant = css(get(theme, val))(theme);\n        result = Object.assign({}, result, variant);\n        continue;\n      }\n\n      if (val && typeof val === 'object') {\n        result[key] = css(val)(theme);\n        continue;\n      }\n\n      var prop = get(aliases, key, key);\n      var scaleName = get(scales, prop);\n      var scale = get(theme, scaleName, get(theme, prop, {}));\n      var transform = get(transforms, prop, get);\n      var value = transform(scale, val, val);\n\n      if (multiples[prop]) {\n        var dirs = multiples[prop];\n\n        for (var i = 0; i < dirs.length; i++) {\n          result[dirs[i]] = value;\n        }\n      } else {\n        result[prop] = value;\n      }\n    }\n\n    return result;\n  };\n};\n\nvar BodyStyles = function BodyStyles() {\n  return jsx(Global, {\n    styles: function styles(theme) {\n      if (theme.useBodyStyles === false || theme.styles && !theme.styles.root) {\n        return false;\n      }\n\n      var boxSizing = theme.useBorderBox === false ? null : 'border-box';\n      return css({\n        '*': {\n          boxSizing: boxSizing\n        },\n        body: {\n          margin: 0,\n          variant: 'styles.root'\n        }\n      })(theme);\n    }\n  });\n};\n\nvar ThemeProvider$1 = function ThemeProvider$1(ref) {\n  var theme = ref.theme;\n  var components = ref.components;\n  var children = ref.children;\n  var outer = useThemeUI();\n\n  if (typeof outer.setColorMode === 'function') {\n    return jsx(ThemeProvider, {\n      theme: theme\n    }, jsx(MDXProvider, {\n      components: components,\n      children: children\n    }));\n  }\n\n  return jsx(ThemeProvider, {\n    theme: theme\n  }, jsx(ColorModeProvider, null, jsx(BodyStyles), jsx(MDXProvider, {\n    components: components,\n    children: children\n  })));\n};\n\nexport { ThemeProvider$1 as ThemeProvider };","// Copyright (c) 2017, 2020 IBM Corp. and others\n\n// This program and the accompanying materials are made available under\n// the terms of the Eclipse Public License 2.0 which accompanies this\n// distribution and is available at https://www.eclipse.org/legal/epl-2.0/\n// or the Apache License, Version 2.0 which accompanies this distribution and\n// is available at https://www.apache.org/licenses/LICENSE-2.0.\n\n// This Source Code may also be made available under the following\n// Secondary Licenses when the conditions for such availability set\n// forth in the Eclipse Public License, v. 2.0 are satisfied: GNU\n// General Public License, version 2 with the GNU Classpath\n// Exception [1] and GNU General Public License, version 2 with the\n// OpenJDK Assembly Exception [2].\n\n// [1] https://www.gnu.org/software/classpath/license.html\n// [2] http://openjdk.java.net/legal/assembly-exception.html\n\n// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 OR LicenseRef-GPL-2.0 WITH Assembly-exception\n\n// The project website pages cannot be redistributed\n\nexport default {\n  fonts: {\n    heading: \"'Helvetica Neue', Helvetica, Arial, 'Lucida Grande'\",\n    body: \"'Helvetica Neue', Helvetica, Arial, 'Lucida Grande'\"\n  },\n  colors: {\n    darkText: \"#4d4f50\",\n    lightText: \"#d8d8d8\",\n    links: \"#5DA7A3\",\n    primary: \"#434343\",\n    secondary: \"#5DA7A3\",\n    secondaryDark:\"#5d9da3\",\n    accent: \"#F8D000\",\n    background: \"#FFFFFF\",\n    lightGrey: \"#F1F1F1\"\n  },\n  radii: {\n    button: \"35px\",\n    card: \"10px\"\n  },\n  breakpoints: [\"560px\", \"1000px\", \"1366px\", \"1920px\"],\n  fontSizes: [16, 18, 20, 24, 28, 36],\n  space: [0, 8, 16, 24, 32, 40],\n  fontWeights: {\n    body: 400,\n    heading: 700\n  },\n  lineHeights: {\n    body: 1.5,\n    heading: 1.125\n  },\n  buttons: {\n    primary: {\n      backgroundColor: \"secondary\",\n      color: \"white\",\n      borderRadius: \"button\",\n      height: \"35px\",\n      width: \"150px\",\n      border: \"none\",\n      fontFamily: \"body\",\n      fontSize: 0,\n      \"&:hover\": {\n        cursor: \"pointer\",\n        backgroundColor: \"secondaryDark\",\n        borderColor: \"secondaryDark\",\n        textDecoration:\"none\",\n        color:\"white\"\n      }\n    },\n    secondary: { variant: \"buttons.primary\", width: \"190px\" }\n  },\n  text: {\n    heading: {\n      fontFamily: \"heading\",\n      lineHeight: \"heading\",\n      fontWeight: \"heading\",\n      marginY: 2\n    }\n  },\n  styles: {\n    root: {\n      fontFamily: \"body\",\n      lineHeight: \"body\",\n      fontWeight: \"body\"\n    },\n    h1: {\n      variant: \"text.heading\",\n      fontSize: 5\n    },\n    h2: {\n      variant: \"text.heading\",\n      fontSize: 4\n    },\n    h3: {\n      variant: \"text.heading\",\n      fontSize: 3\n    },\n    h4: {\n      variant: \"text.heading\",\n      fontSize: 2,\n\n    },\n    h5: {\n      variant: \"text.heading\",\n      fontSize: 1\n    },\n    h6: {\n      variant: \"text.heading\",\n      fontSize: 0\n    },\n    p: {\n      marginBottom: 5,\n      fontSize: 1\n    }\n  },\n  lists: {\n    navRow: {\n      display: \"flex\",\n      listStyle: \"none\",\n      justifyContent: \"flex-end\",\n      li: {\n        padding: 1,\n        marginX: 1,\n        a: {\n          color: \"white\",\n          textDecoration: \"none\",\n          \"&:hover\": {\n            color: \"links\",\n          }\n        }\n      },\n      \"li:first-of-type\": {\n        marginLeft: 0\n      },\n      \"li:last-child\": {\n        marginRight: 0,\n        paddingRight: 0\n      }\n    },\n    navCol: {\n      variant: \"lists.navRow\",\n      flexDirection: \"column\",\n      li: {\n        padding: 1,\n        paddingLeft: 0\n      }\n    }\n  },\n  borders: {\n    cardBorder: \"#5DA7A3 10px solid\"\n  },\n  shadows: {\n    cardShadow: \"#DADADA 0 0 20px\"\n  },\n};\n","// Copyright (c) 2017, 2020 IBM Corp. and others\n\n// This program and the accompanying materials are made available under\n// the terms of the Eclipse Public License 2.0 which accompanies this\n// distribution and is available at https://www.eclipse.org/legal/epl-2.0/\n// or the Apache License, Version 2.0 which accompanies this distribution and\n// is available at https://www.apache.org/licenses/LICENSE-2.0.\n\n// This Source Code may also be made available under the following\n// Secondary Licenses when the conditions for such availability set\n// forth in the Eclipse Public License, v. 2.0 are satisfied: GNU\n// General Public License, version 2 with the GNU Classpath\n// Exception [1] and GNU General Public License, version 2 with the\n// OpenJDK Assembly Exception [2].\n\n// [1] https://www.gnu.org/software/classpath/license.html\n// [2] http://openjdk.java.net/legal/assembly-exception.html\n\n// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 OR LicenseRef-GPL-2.0 WITH Assembly-exception\n\n// The project website pages cannot be redistributed\n\nimport { Link } from \"gatsby\";\n\nimport openJ9Logo from \"../images/openJ9-header-logo.svg\";\nimport slackIcon from \"../images/slack-icon.svg\";\nimport githubLogo from \"../images/github-logo.svg\";\nimport twitterLogo from \"../images/twitter-logo.svg\";\nimport stackoverflowLogo from \"../images/stackoverflow-logo.svg\";\n\n/** @jsx jsx */\nimport { jsx } from \"theme-ui\";\n\nexport default ({ isHome }) => (\n  <header\n    sx={{\n      display: [\"none\", \"none\", \"flex\", \"flex\"],\n      backgroundColor: isHome ? \"#00000000\" : \"primary\",\n      position: isHome ? \"absolute\" : null,\n      width: \"100%\",\n      color: \"lightText\",\n      paddingX: 5,\n      paddingY: 4,\n      alignItems: \"center\"\n    }}\n  >\n    <div\n      sx={{\n        flex: 1,\n        opacity: isHome ? 0 : 1,\n        pointerEvents: isHome ? \"none\" : \"all\"\n      }}\n    >\n      <Link to=\"/\">\n        <img src={openJ9Logo} alt=\"OpenJ9 Logo\"></img>\n      </Link>\n    </div>\n    <nav sx={{ flex: 2 }}>\n      <ul sx={{ variant: \"lists.navRow\" }}>\n        <li>\n          <Link to=\"/\">Home</Link>\n        </li>\n        <li>\n          <Link to=\"/about\">About</Link>\n        </li>\n        <li>\n          <a href=\"https://www.eclipse.org/openj9/docs/\" rel=\"noopener noreferrer\" target=\"_blank\">Docs</a>\n        </li>\n        <li>\n          <Link to=\"/performance\">Performance</Link>\n        </li>\n        <li>\n          <Link to=\"/news\">News</Link>\n        </li>\n      </ul>\n    </nav>\n    <nav sx={{ flex: 1 }}>\n      <ul sx={{ variant: \"lists.navRow\" }}>\n        <li> \n          <a href=\"https://twitter.com/openj9/\" rel=\"noopener noreferrer\" target=\"_blank\"> <img src={twitterLogo} alt=\"Twitter Logo\"></img></a>\n        </li>\n        <li>\n          <a href=\"https://github.com/eclipse/openj9\" rel=\"noopener noreferrer\" target=\"_blank\"> <img src={githubLogo} alt=\"GitHub Logo\"></img></a>\n        </li>\n        <li>\n          <a href=\"https://openj9.slack.com/\" rel=\"noopener noreferrer\" target=\"_blank\"><img src={slackIcon} alt=\"Slack logo\"></img></a>\n        </li>\n        <li>\n          <a href=\"https://stackoverflow.com/search?q=%23OpenJ9\" rel=\"noopener noreferrer\" target=\"_blank\"><img src={stackoverflowLogo} alt=\"Stack Overflow logo\"></img></a>\n        </li>\n      </ul>\n    </nav>\n  </header>\n);\n","// Copyright (c) 2017, 2020 IBM Corp. and others\n\n// This program and the accompanying materials are made available under\n// the terms of the Eclipse Public License 2.0 which accompanies this\n// distribution and is available at https://www.eclipse.org/legal/epl-2.0/\n// or the Apache License, Version 2.0 which accompanies this distribution and\n// is available at https://www.apache.org/licenses/LICENSE-2.0.\n\n// This Source Code may also be made available under the following\n// Secondary Licenses when the conditions for such availability set\n// forth in the Eclipse Public License, v. 2.0 are satisfied: GNU\n// General Public License, version 2 with the GNU Classpath\n// Exception [1] and GNU General Public License, version 2 with the\n// OpenJDK Assembly Exception [2].\n\n// [1] https://www.gnu.org/software/classpath/license.html\n// [2] http://openjdk.java.net/legal/assembly-exception.html\n\n// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 OR LicenseRef-GPL-2.0 WITH Assembly-exception\n\n// The project website pages cannot be redistributed\n\nimport slackIcon from \"../images/slack-icon.svg\";\nimport githubLogo from \"../images/github-logo.svg\";\nimport twitterLogo from \"../images/twitter-logo.svg\";\nimport incubatorLogo from \"../images/incubator-logo.svg\";\nimport stackoverflowLogo from \"../images/stackoverflow-logo.svg\";\nimport { Link } from \"gatsby\";\n/** @jsx jsx */\nimport { jsx, Styled } from \"theme-ui\";\n\nexport default () => (\n  <footer\n    sx={{\n      display: \"flex\",\n      backgroundColor: \"primary\",\n      color: \"white\",\n      flexWrap: \"wrap\",\n      padding: \"1rem\",\n      paddingBottom: [\"3rem\", \"3rem\", \"0\", \"0\"],\n      flexDirection: \"reverse-column\"\n    }}\n  >\n      <section\n      sx={{\n        flex: \"50%\",\n        display: [\"flex\", \"none\", \"none\", \"none\"],\n        alignItems: [\"center\", \"center\", \"flex-end\", \"flex-end\"],\n        flexDirection: \"column\"\n      }}\n    >\n      <a href=\"https://wiki.eclipse.org/Development_Resources/Process_Guidelines/What_is_Incubation\" rel=\"noopener noreferrer\" target=\"_blank\"><img src={incubatorLogo} alt=\"Eclipse Incubator Logo\"></img></a>\n      <Styled.h6 sx={{fontSize:\"0.9rem\"}} >OpenJ9 is an Eclipse Incubator Project</Styled.h6>\n    </section>\n\n\n    <nav sx={{ display: [\"flex\", \"flex\", \"flex\", \"flex\"],\n          flex: [\"100%\", \"50%\", \"50%\",\"50%\"], \n          flexDirection:[\"column\", \"row\", \"row\", \"row\"],\n          justifyContent:\"center\",\n          a: {\n            color: \"white\",\n            textDecoration: \"none\",\n            \"&:hover\": {\n              color: \"links\",\n            }\n    }}}>\n      <section sx={{ flex: 1, paddingLeft:[\"2rem\", \"0.8rem\", \"0.8rem\", \"0.8rem\"],  marginRight:\"1.1rem\", padding:[\"1rem\", 0], fontSize:[\"1rem\", \"0.9rem\", \"1rem\", \"1rem\"]}}>\n        <Styled.h4 sx={{marginBottom:\"0.2rem\"}}>Docs</Styled.h4>\n        <ul sx={{ \n          variant: \"lists.navCol\",\n          li: { \n            padding: 0,\n          }\n           }}>\n          <li><a sx={{textDecoration:\"none\", color:\"white\"}}href=\"https://www.eclipse.org/openj9/docs/openj9_newuser/\" rel=\"noopener noreferrer\" target=\"_blank\">New to OpenJ9?</a></li>\n          <li><a sx={{textDecoration:\"none\", color:\"white\"}}href=\"https://www.eclipse.org/openj9/docs/introduction/\" rel=\"noopener noreferrer\" target=\"_blank\">Getting started</a></li>\n          <li><a sx={{textDecoration:\"none\", color:\"white\"}}href=\"https://www.eclipse.org/openj9/docs/cmdline_specifying/\" rel=\"noopener noreferrer\" target=\"_blank\">Command-line options</a></li>\n        </ul>\n      </section>\n      <section sx={{ flex: 1, paddingLeft:[\"2rem\", \"0.8rem\", 0, 0], padding:[\"1rem\", 0], fontSize:[\"1rem\", \"0.9rem\", \"1rem\", \"1rem\"] }}>\n        <Styled.h4 sx={{marginBottom:\"0.2rem\"}}>Resources</Styled.h4>\n        <ul sx={{ variant: \"lists.navCol\",\n          li: { \n            padding: 0,\n          }\n          }}>\n          <li><Link sx={{textDecoration:\"none\", color:\"white\"}} to=\"/about\">About</Link></li>\n          <li><Link sx={{textDecoration:\"none\", color:\"white\"}} to=\"/performance\">Performance</Link></li>\n        </ul>\n      </section>\n      <section sx={{ flex: 1, paddingLeft:[\"2rem\", 0, 0, 0], padding:[\"1rem\", 0], fontSize:[\"1rem\", \"0.9rem\", \"1rem\", \"1rem\"], marginLeft:[0,\"1rem\"] }}>\n        <Styled.h4 sx={{marginBottom:\"0.2rem\"}}>Community</Styled.h4>\n        <ul sx={{ variant: \"lists.navCol\",\n          li: { \n            padding: 0,\n          }\n       }}>\n          <li><Link sx={{textDecoration:\"none\", color:\"white\"}} to=\"/news\">News</Link></li>\n          <li><a sx={{textDecoration:\"none\", color:\"white\"}}href=\"https://blog.openj9.org/\" rel=\"noopener noreferrer\" target=\"_blank\">Blogs</a></li>\n        </ul>\n      </section>\n    </nav>\n    <section\n      sx={{\n        flex: \"25%\",\n        display: [\"none\",\"flex\", \"flex\", \"flex\"],\n        alignItems: [\"center\", \"flex-end\", \"flex-end\", \"flex-end\"],\n        flexDirection: \"column\"\n      }}\n    >\n      <Styled.h6 sx={{fontSize:\"0.9rem\", marginTop:\"1.3rem\", marginLeft:\"0.6rem\"}}>OpenJ9 is an Eclipse Incubator Project</Styled.h6>\n      <a href=\"https://wiki.eclipse.org/Development_Resources/Process_Guidelines/What_is_Incubation\" rel=\"noopener noreferrer\" target=\"_blank\"><img src={incubatorLogo} alt=\"Eclipse Incubator Logo\"></img></a>\n    </section>\n    <div\n      sx={{\n        height: \"2px\",\n        backgroundColor: \"secondary\",\n        width: \"100%\",\n        marginY: 2\n      }}\n    ></div>\n    <nav sx={{width:\"70%\"}}>\n      <ul sx={{ \n        display: \"flex\", flexDirection:[\"column\", \"row\", \"row\", \"row\"],\n        li: { \n          padding: \"0.4rem\",\n          fontSize: [\"0.9rem\", \"0.7rem\", \"1rem\", \"1rem\"],\n          listStyleType: \"none\",\n          paddingLeft:\"1rem\",\n          color:\"white\",\n        },\n         a: {\n          color: \"white\",\n          textDecoration: \"none\",\n          \"&:hover\": {\n            color: \"links\",\n          }\n        }\n        }}>\n          \n        <li sx={{ paddingLeft:[\"1rem\", \"0rem !important\", \"0.5rem !important\", \"0.5 !important\"]}}><a sx={{textDecoration:\"none\", color:\"white\"}}href=\"https://www.eclipse.org/\" rel=\"noopener noreferrer\" target=\"_blank\">Eclipse Foundation Website </a></li>\n        <li><a sx={{textDecoration:\"none\", color:\"white\"}}href=\"https://www.eclipse.org/legal/privacy.php\" rel=\"noopener noreferrer\" target=\"_blank\">Privacy Policy</a></li>\n        <li><a sx={{textDecoration:\"none\", color:\"white\"}}href=\"https://www.eclipse.org/legal/termsofuse.php\" rel=\"noopener noreferrer\" target=\"_blank\">Terms of Use</a></li>\n        <li><a sx={{textDecoration:\"none\", color:\"white\"}}href=\"https://www.eclipse.org/legal/copyright.php\" rel=\"noopener noreferrer\" target=\"_blank\">Copyright Agent</a></li>\n        <li><a sx={{textDecoration:\"none\", color:\"white\"}}href=\"https://www.eclipse.org/legal/\" rel=\"noopener noreferrer\" target=\"_blank\">Legal</a></li>\n      </ul>\n    </nav>\n    <nav sx={{ display: [\"inline\", \"inline\", \"block\", \"block\"], flex: \"30%\" }}>\n      <ul sx={{ variant: \"lists.navRow\", justifyContent: [\"center\", \"flex-end\",\"flex-end\", \"flex-end\"] }}>\n        <li> \n          <a href=\"https://twitter.com/openj9/\" rel=\"noopener noreferrer\" target=\"_blank\"> <img src={twitterLogo} alt=\"Twitter Logo\"></img></a>\n        </li>\n        <li>\n          <a href=\"https://github.com/eclipse/openj9\" rel=\"noopener noreferrer\" target=\"_blank\"> <img src={githubLogo} alt=\"GitHub Logo\"></img></a>\n        </li>\n        <li>\n          <a href=\"https://openj9.slack.com/\" rel=\"noopener noreferrer\" target=\"_blank\"><img src={slackIcon} alt=\"Slack logo\"></img></a>\n        </li>\n        <li>\n          <a href=\"https://stackoverflow.com/search?q=%23OpenJ9\" rel=\"noopener noreferrer\" target=\"_blank\"><img src={stackoverflowLogo} alt=\"Stack Overflow logo\"></img></a>\n        </li>\n      </ul>\n    </nav>\n  </footer>\n);\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport { Helmet } from \"react-helmet\"\nimport { useStaticQuery, graphql } from \"gatsby\"\n\nconst SEO = ({ title, description }) => {\n  const { site } = useStaticQuery(query);\n\n  const {\n    defaultTitle,\n    titleTemplate,\n    defaultDescription,\n    siteUrl,\n    twitterUsername,\n    defaultImage,\n  } = site.siteMetadata;\n\n  const seo = {\n    title: title || defaultTitle,\n    description: description || defaultDescription,\n    image: defaultImage,\n    url: `${siteUrl}`,\n  };\n  return (\n    <Helmet title={seo.title} titleTemplate={titleTemplate}>\n      <meta name=\"description\" content={seo.description} />\n      <meta name=\"image\" content={seo.image} />\n\n      {seo.url && <meta property=\"og:url\" content={seo.url} />}\n\n      {seo.title && <meta property=\"og:title\" content={seo.title} />}\n\n      {seo.description && (\n        <meta property=\"og:description\" content={seo.description} />\n      )}\n\n      {seo.image && <meta property=\"og:image\" content={seo.image} />}\n\n      <meta name=\"twitter:card\" content=\"summary_large_image\" />\n\n      {twitterUsername && (\n        <meta name=\"twitter:creator\" content={twitterUsername} />\n      )}\n\n      {seo.title && <meta name=\"twitter:title\" content={seo.title} />}\n\n      {seo.description && (\n        <meta name=\"twitter:description\" content={seo.description} />\n      )}\n\n      <link rel=\"stylesheet\" type=\"text/css\" href=\"//www.eclipse.org/eclipse.org-common/themes/solstice/public/stylesheets/vendor/cookieconsent/cookieconsent.min.css\" />\n      <script src=\"//www.eclipse.org/eclipse.org-common/themes/solstice/public/javascript/vendor/cookieconsent/default.min.js\"></script>\n    </Helmet>\n  )\n};\n\nexport default SEO\n\nSEO.propTypes = {\n  title: PropTypes.string,\n  description: PropTypes.string,\n}\n\nSEO.defaultProps = {\n  title: null,\n  description: null,\n}\n\nconst query = graphql`\n  query SEO {\n    site {\n      siteMetadata {\n        defaultTitle: title\n        defaultDescription: description\n        siteUrl: url\n        twitterUsername\n        defaultImage: image\n      }\n    }\n  }\n`","// Copyright (c) 2017, 2020 IBM Corp. and others\n\n// This program and the accompanying materials are made available under\n// the terms of the Eclipse Public License 2.0 which accompanies this\n// distribution and is available at https://www.eclipse.org/legal/epl-2.0/\n// or the Apache License, Version 2.0 which accompanies this distribution and\n// is available at https://www.apache.org/licenses/LICENSE-2.0.\n\n// This Source Code may also be made available under the following\n// Secondary Licenses when the conditions for such availability set\n// forth in the Eclipse Public License, v. 2.0 are satisfied: GNU\n// General Public License, version 2 with the GNU Classpath\n// Exception [1] and GNU General Public License, version 2 with the\n// OpenJDK Assembly Exception [2].\n\n// [1] https://www.gnu.org/software/classpath/license.html\n// [2] http://openjdk.java.net/legal/assembly-exception.html\n\n// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 OR LicenseRef-GPL-2.0 WITH Assembly-exception\n\n// The project website pages cannot be redistributed\n\nimport React from \"react\";\n\nimport SEO from \"../components/seo\";\n\nexport default (props) => {\n    return (\n        <SEO title={props.title} description={props.description}></SEO>\n    );\n}\n\n","// Copyright (c) 2017, 2020 IBM Corp. and others\n\n// This program and the accompanying materials are made available under\n// the terms of the Eclipse Public License 2.0 which accompanies this\n// distribution and is available at https://www.eclipse.org/legal/epl-2.0/\n// or the Apache License, Version 2.0 which accompanies this distribution and\n// is available at https://www.apache.org/licenses/LICENSE-2.0.\n\n// This Source Code may also be made available under the following\n// Secondary Licenses when the conditions for such availability set\n// forth in the Eclipse Public License, v. 2.0 are satisfied: GNU\n// General Public License, version 2 with the GNU Classpath\n// Exception [1] and GNU General Public License, version 2 with the\n// OpenJDK Assembly Exception [2].\n\n// [1] https://www.gnu.org/software/classpath/license.html\n// [2] http://openjdk.java.net/legal/assembly-exception.html\n\n// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 OR LicenseRef-GPL-2.0 WITH Assembly-exception\n\n// The project website pages cannot be redistributed\n\nimport { Link } from \"gatsby\"\n/** @jsx jsx */\nimport { jsx } from \"theme-ui\";\n\nconst MobileNav = () => (\n    <nav sx={{\n        display: [\"flex\", \"flex\", \"none\", \"none\"], \n        justifyContent: \"center\", \n        alignItems: \"center\", \n        position:\"fixed\", \n        width: \"100%\",\n        bottom: \"0\",\n        backgroundColor: \"white\",\n        height: \"3rem\",\n        boxShadow: \"0 10px 30px grey\",\n        zIndex: \"9999\"\n        }}> \n        <ul sx={{ \n            variant: \"lists.navRow\", \n            li: { \n                a: {\n                    color: \"black\", \n                    textDecoration: \"none\"\n                }\n            },\n            justifyContent: \"space-evenly\",\n            width: \"100%\"\n        }}>\n            <li><Link to=\"/\">Home</Link></li>\n            <li><Link to=\"/about\">About</Link> </li>\n            <li><a href=\"https://www.eclipse.org/openj9/docs/\" rel=\"noopener noreferrer\" target=\"_blank\">Docs</a> </li>\n            <li><Link to=\"/performance\">Performance</Link> </li>\n            <li><Link to=\"/news\">News</Link> </li>\n        </ul>\n    </nav>\n)\n\nexport default MobileNav","// Copyright (c) 2017, 2020 IBM Corp. and others\n\n// This program and the accompanying materials are made available under\n// the terms of the Eclipse Public License 2.0 which accompanies this\n// distribution and is available at https://www.eclipse.org/legal/epl-2.0/\n// or the Apache License, Version 2.0 which accompanies this distribution and\n// is available at https://www.apache.org/licenses/LICENSE-2.0.\n\n// This Source Code may also be made available under the following\n// Secondary Licenses when the conditions for such availability set\n// forth in the Eclipse Public License, v. 2.0 are satisfied: GNU\n// General Public License, version 2 with the GNU Classpath\n// Exception [1] and GNU General Public License, version 2 with the\n// OpenJDK Assembly Exception [2].\n\n// [1] https://www.gnu.org/software/classpath/license.html\n// [2] http://openjdk.java.net/legal/assembly-exception.html\n\n// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 OR LicenseRef-GPL-2.0 WITH Assembly-exception\n\n// The project website pages cannot be redistributed\n\nimport React from \"react\";\nimport { ThemeProvider } from \"theme-ui\";\nimport theme from \"../theme\";\nimport Header from \"./header\";\nimport Footer from \"./footer\";\nimport Head from \"./head\";\nimport MobileNav from \"./mobileNav\";\nimport { Global } from \"@emotion/core\";\n\nexport default ({ children, isHome, title, description }) => (\n  <ThemeProvider theme={theme}>\n    <Global\n      styles={theme => ({\n        \"*\": { padding: 0, margin: 0 },                          \n      })}\n    />\n    <Head title={title} description={description}/>\n    <Header isHome={isHome} />\n    <MobileNav />\n    {children}\n   \n    <Footer />\n    \n  </ThemeProvider>\n);\n","module.exports = \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjRweCIgaGVpZ2h0PSIyNHB4IiB2aWV3Qm94PSIwIDAgNjUgNzAiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5zdGFja292ZXJmbG93LWxvZ288L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0iI0ZGRkZGRiIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0ic3RhY2tvdmVyZmxvdy1sb2dvIiBmaWxsLXJ1bGU9Im5vbnplcm8iPgogICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgZmlsbD0iI0ZGRkZGRiIgcG9pbnRzPSI1NC4yNDE3MjY2IDYzLjc3MDIyNjUgNTQuMjQxNzI2NiA0NSA2MSA0NSA2MSA3MCAwIDcwIDAgNDUgNi43NTgyNzMzOCA0NSA2Ljc1ODI3MzM4IDYzLjc3MDIyNjUiPjwvcG9seWdvbj4KICAgICAgICAgICAgPHBhdGggZD0iTTE0LjcwNzEwNTcsNDMuNjQyNzU2NyBMNDguMTE3ODUxLDUwLjA4NzIwMTEgTDQ5LjUzMjA2MjQsNDMuODg3NDgyNCBMMTYuMTIxMzE3MiwzNy40NDMwMzggTDE0LjcwNzEwNTcsNDMuNjQyNzU2NyBMMTQuNzA3MTA1Nyw0My42NDI3NTY3IFogTTE5LjEyNjUxNjUsMjguOTU5MjEyNCBMNTAuMDYyMzkxNyw0Mi4yNTU5Nzc1IEw1Mi44OTA4MTQ2LDM2LjU0NTcxMDMgTDIxLjk1NDkzOTMsMjMuMTY3MzY5OSBMMTkuMTI2NTE2NSwyOC45NTkyMTI0IFogTTI3LjcwMDE3MzMsMTQuOTI4MjcgTDUzLjk1MTQ3MzEsMzUuMDc3MzU1OCBMNTguMjgyNDk1NywzMC4yNjQ0MTYzIEwzMi4wMzExOTU4LDEwLjExNTMzMDUgTDI3LjcwMDE3MzMsMTQuOTI4MjcgTDI3LjcwMDE3MzMsMTQuOTI4MjcgWiBNNDQuNjcwNzEwNiwwIEwzOS4xOTA2NDEyLDMuNzUyNDYxMzIgTDU5LjUxOTkzMDcsMjkuMDQwNzg3NiBMNjUsMjUuMjg4MzI2MyBMNDQuNjcwNzEwNiwwIFogTTE0LDU4IEw0OC4xMTc4NTEsNTggTDQ4LjExNzg1MSw1MS43MTg3MDYgTDE0LDUxLjcxODcwNiBMMTQsNTggWiIgaWQ9IlNoYXBlIiBmaWxsPSIjRkZGRkZGIj48L3BhdGg+CiAgICAgICAgPC9nPgogICAgPC9nPgo8L3N2Zz4KCgo=\"","require(\"core-js/modules/es6.function.bind\");\n\nrequire(\"core-js/modules/web.dom.iterable\");\n\nrequire(\"core-js/modules/es6.array.iterator\");\n\nrequire(\"core-js/modules/es6.object.to-string\");\n\nrequire(\"core-js/modules/es6.object.keys\");\n\n//\nmodule.exports = function shallowEqual(objA, objB, compare, compareContext) {\n  var ret = compare ? compare.call(compareContext, objA, objB) : void 0;\n\n  if (ret !== void 0) {\n    return !!ret;\n  }\n\n  if (objA === objB) {\n    return true;\n  }\n\n  if (typeof objA !== \"object\" || !objA || typeof objB !== \"object\" || !objB) {\n    return false;\n  }\n\n  var keysA = Object.keys(objA);\n  var keysB = Object.keys(objB);\n\n  if (keysA.length !== keysB.length) {\n    return false;\n  }\n\n  var bHasOwnProperty = Object.prototype.hasOwnProperty.bind(objB); // Test for A's keys different from B.\n\n  for (var idx = 0; idx < keysA.length; idx++) {\n    var key = keysA[idx];\n\n    if (!bHasOwnProperty(key)) {\n      return false;\n    }\n\n    var valueA = objA[key];\n    var valueB = objB[key];\n    ret = compare ? compare.call(compareContext, valueA, valueB, key) : void 0;\n\n    if (ret === false || ret === void 0 && valueA !== valueB) {\n      return false;\n    }\n  }\n\n  return true;\n};","module.exports = \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIyNXB4IiB2aWV3Qm94PSIwIDAgMjUgMjUiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5Ud2l0dGVyPC90aXRsZT4KICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPgogICAgPGcgaWQ9IlBhZ2UtMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9IlR3aXR0ZXIiIGZpbGwtcnVsZT0ibm9uemVybyI+CiAgICAgICAgICAgIDxnIGlkPSJ0d2l0dGVyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjAwMDAwMCwgMC4yOTg4NzkpIj4KICAgICAgICAgICAgICAgIDxlbGxpcHNlIGlkPSJPdmFsLXBhdGgiIGZpbGw9IiM0MzQzNDMiIGN4PSIxMi41MDAyMjEyIiBjeT0iMTIuMjcyNzI3MyIgcng9IjEyLjUiIHJ5PSIxMi4yNzI3MjczIj48L2VsbGlwc2U+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTIuNTAwMjIxMiwwIEMxOS40MDM3ODA2LDAgMjUuMDAwMjIxMiw1LjQ5NDY4NzE2IDI1LjAwMDIyMTIsMTIuMjcyNzI3MyBDMjUuMDAwMjIxMiwxOS4wNTA3Njc0IDE5LjQwMzc4MDYsMjQuNTQ1NDU0NSAxMi41MDAyMjEyLDI0LjU0NTQ1NDUgQzUuNTk2NjYxODcsMjQuNTQ1NDU0NSAwLjAwMDIyMTIzODkzOCwxOS4wNTA3Njc0IDAuMDAwMjIxMjM4OTM4LDEyLjI3MjcyNzMgQzAuMDAwMjIxMjM4OTM4LDUuNDk0Njg3MTYgNS41OTY2NjE4NywwIDEyLjUwMDIyMTIsMCBaIE0xNS4xMDM0MzMzLDYuODE4MTgxODIgQzEzLjQ2NTM4MDIsNi44MTgxODE4MiAxMi4xMzY4NDA0LDguMDkyMTI0MTEgMTIuMTM2ODQwNCw5LjY2Mjg1OTk2IEMxMi4xMzY4NDA0LDkuODg1ODI2MzggMTIuMTYzMTY3OCwxMC4xMDI4NTI3IDEyLjIxNDA1MjgsMTAuMzExMTgxIEM5Ljc0ODU2NjA0LDEwLjE5MjU5MDggNy41NjI1MDQxLDkuMDYwMTUwNTQgNi4wOTkyMjk3Niw3LjMzODU3ODIzIEM1Ljg0MzkyMDAzLDcuNzU4NjI5MTUgNS42OTc0NTk4NSw4LjI0NzYyNzgxIDUuNjk3NDU5ODUsOC43Njg4NzI4MSBDNS42OTc0NTk4NSw5Ljc1NTU2ODE3IDYuMjIxNTc0ODksMTAuNjI2NjQzNCA3LjAxNzE1MDExLDExLjEzNjY0NDcgQzYuNTMxMDg4MTcsMTEuMTIyMDA2NSA2LjA3MzM0NDgsMTAuOTk0MDgxOSA1LjY3MzU2NjA0LDEwLjc4MDQ1IEw1LjY3MzM0NDgsMTAuODE2NTE0OSBMNS42NzMzNDQ4LDEwLjgxNjUxNDkgQzUuNjczMzQ0OCwxMi4xOTQ4MzM1IDYuNjk2MzUzNjUsMTMuMzQ0NDU3NyA4LjA1MzIxMjA2LDEzLjYwNTYxMDYgQzcuODA0NTM5NSwxMy42NzA5NTE5IDcuNTQxOTI4ODgsMTMuNzA1NTMxOCA3LjI3MTc5NjEzLDEzLjcwNTUzMTggQzcuMDgwMjAzMjEsMTMuNzA1NTMxOCA2Ljg5NDU4Mzc0LDEzLjY4NzkyMzYgNi43MTM2MTAyOSwxMy42NTQ4Mjg3IEM3LjA5MTA0MzkyLDE0Ljc4NDcyMzIgOC4xODYzOTc5LDE1LjYwNzIxNjkgOS40ODQ4NDkyMywxNS42MzAzNDA5IEM4LjQ2OTM2MjUsMTYuMzkzNDMzNCA3LjE5MDM4MDIsMTYuODQ4MDY0MiA1LjgwMDExNDcyLDE2Ljg0ODA2NDIgQzUuNTYxMTc2NjYsMTYuODQ4MDY0MiA1LjMyNDQ1MSwxNi44MzQ2OTkgNS4wOTI4MTM4MywxNi44MDgxODA2IEM2LjQwNDk4MTk3LDE3LjYxNTYxMTggNy45NjQ3MTY0OSwxOC4wODYzNjU4IDkuNjM5OTM3NzMsMTguMDg2MzY1OCBDMTUuMDk2NTc0OSwxOC4wODYzNjU4IDE4LjA4MDY0NTcsMTMuNzUxNzc5OCAxOC4wODA2NDU3LDkuOTkyMzI0MTQgQzE4LjA4MDY0NTcsOS44NjkwNjY3NyAxOC4wNzc3Njk2LDkuNzQ2MjMzNyAxOC4wNzIwMTc0LDkuNjI0NDYxMzcgQzE4LjY1MjEwNTksOS4yMjM1MDM2OCAxOS4xNTQ5ODIsOC43MjI2MjQ3OCAxOS41NTI1NDgzLDguMTUyMTYxNjkgQzE5LjAyMDY4OTksOC4zNzgzMTAzMiAxOC40NDg1NjYsOC41MzEyNjgyNSAxNy44NDg1NjYsOC41OTk1Nzk1NiBDMTguNDYxMTc2Nyw4LjI0NzYyNzgxIDE4LjkzMTMwOTQsNy42OTA3NDIxMyAxOS4xNTMyMTIxLDcuMDI2MDg1ODEgQzE4LjU3OTk4Miw3LjM1MjE1NTYzIDE3Ljk0NDgwNSw3LjU4ODY5OTQ2IDE3LjI2OTM2MjUsNy43MTYxOTk3NiBDMTYuNzI4MjEyMSw3LjE2MzU1NzAyIDE1Ljk1NzE5NDQsNi44MTgxODE4MiAxNS4xMDM0MzMzLDYuODE4MTgxODIgWiIgaWQ9IkNvbWJpbmVkLVNoYXBlIiBmaWxsPSIjRkZGRkZGIj48L3BhdGg+CiAgICAgICAgICAgIDwvZz4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==\"","\n// Copyright (c) 2017, 2020 IBM Corp. and others\n\n// This program and the accompanying materials are made available under\n// the terms of the Eclipse Public License 2.0 which accompanies this\n// distribution and is available at https://www.eclipse.org/legal/epl-2.0/\n// or the Apache License, Version 2.0 which accompanies this distribution and\n// is available at https://www.apache.org/licenses/LICENSE-2.0.\n\n// This Source Code may also be made available under the following\n// Secondary Licenses when the conditions for such availability set\n// forth in the Eclipse Public License, v. 2.0 are satisfied: GNU\n// General Public License, version 2 with the GNU Classpath\n// Exception [1] and GNU General Public License, version 2 with the\n// OpenJDK Assembly Exception [2].\n\n// [1] https://www.gnu.org/software/classpath/license.html\n// [2] http://openjdk.java.net/legal/assembly-exception.html\n\n// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 OR LicenseRef-GPL-2.0 WITH Assembly-exception\n\n// The project website pages cannot be redistributed\n\n/** @jsx jsx */\n\nimport { jsx } from \"theme-ui\";\n\nconst Card = ({ children, primary, width }) => {\n  return (\n    <article\n      sx={{\n        minHeight: \"200px\",\n        boxShadow: primary ? \"cardShadow\" : null,\n        borderRadius: \"card\",\n        backgroundColor: \"white\",\n        color: \"darkText\",\n        marginY: 5,\n        marginX: 2,\n        width: width,\n        display: \"flex\",\n        flexDirection: \"column\",\n        justifyContent: \"center\",\n        alignItems: \"center\",\n      }}\n    >\n      {children}\n    </article>\n  );\n};\n\nexport default Card;\n","import \"core-js/modules/es6.function.name\";\nimport \"core-js/modules/es6.object.define-property\";\nimport \"core-js/modules/es6.object.define-properties\";\nimport \"core-js/modules/es7.object.get-own-property-descriptors\";\nimport \"core-js/modules/es6.array.for-each\";\nimport \"core-js/modules/es6.array.filter\";\nimport \"core-js/modules/es6.symbol\";\nimport \"core-js/modules/web.dom.iterable\";\nimport \"core-js/modules/es6.array.iterator\";\nimport \"core-js/modules/es6.object.to-string\";\nimport \"core-js/modules/es6.object.keys\";\nimport _defineProperty from '@babel/runtime/helpers/defineProperty';\nimport { createElement } from 'react';\nimport isPropValid from '@emotion/is-prop-valid';\nimport { withEmotionCache, ThemeContext } from '@emotion/core';\nimport { getRegisteredStyles, insertStyles } from '@emotion/utils';\nimport { serializeStyles } from '@emotion/serialize';\nvar testOmitPropsOnStringTag = isPropValid;\n\nvar testOmitPropsOnComponent = function testOmitPropsOnComponent(key) {\n  return key !== 'theme' && key !== 'innerRef';\n};\n\nvar getDefaultShouldForwardProp = function getDefaultShouldForwardProp(tag) {\n  return typeof tag === 'string' && // 96 is one less than the char code\n  // for \"a\" so this is checking that\n  // it's a lowercase character\n  tag.charCodeAt(0) > 96 ? testOmitPropsOnStringTag : testOmitPropsOnComponent;\n};\n\nfunction ownKeys(object, enumerableOnly) {\n  var keys = Object.keys(object);\n\n  if (Object.getOwnPropertySymbols) {\n    var symbols = Object.getOwnPropertySymbols(object);\n    if (enumerableOnly) symbols = symbols.filter(function (sym) {\n      return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n    });\n    keys.push.apply(keys, symbols);\n  }\n\n  return keys;\n}\n\nfunction _objectSpread(target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments[i] != null ? arguments[i] : {};\n\n    if (i % 2) {\n      ownKeys(source, true).forEach(function (key) {\n        _defineProperty(target, key, source[key]);\n      });\n    } else if (Object.getOwnPropertyDescriptors) {\n      Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n    } else {\n      ownKeys(source).forEach(function (key) {\n        Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n      });\n    }\n  }\n\n  return target;\n}\n\nvar ILLEGAL_ESCAPE_SEQUENCE_ERROR = \"You have illegal escape sequence in your template literal, most likely inside content's property value.\\nBecause you write your CSS inside a JavaScript string you actually have to do double escaping, so for example \\\"content: '\\\\00d7';\\\" should become \\\"content: '\\\\\\\\00d7';\\\".\\nYou can read more about this here:\\nhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals#ES2018_revision_of_illegal_escape_sequences\";\n\nvar createStyled = function createStyled(tag, options) {\n  if (process.env.NODE_ENV !== 'production') {\n    if (tag === undefined) {\n      throw new Error('You are trying to create a styled element with an undefined component.\\nYou may have forgotten to import it.');\n    }\n  }\n\n  var identifierName;\n  var shouldForwardProp;\n  var targetClassName;\n\n  if (options !== undefined) {\n    identifierName = options.label;\n    targetClassName = options.target;\n    shouldForwardProp = tag.__emotion_forwardProp && options.shouldForwardProp ? function (propName) {\n      return tag.__emotion_forwardProp(propName) && // $FlowFixMe\n      options.shouldForwardProp(propName);\n    } : options.shouldForwardProp;\n  }\n\n  var isReal = tag.__emotion_real === tag;\n  var baseTag = isReal && tag.__emotion_base || tag;\n\n  if (typeof shouldForwardProp !== 'function' && isReal) {\n    shouldForwardProp = tag.__emotion_forwardProp;\n  }\n\n  var defaultShouldForwardProp = shouldForwardProp || getDefaultShouldForwardProp(baseTag);\n  var shouldUseAs = !defaultShouldForwardProp('as');\n  return function () {\n    var args = arguments;\n    var styles = isReal && tag.__emotion_styles !== undefined ? tag.__emotion_styles.slice(0) : [];\n\n    if (identifierName !== undefined) {\n      styles.push(\"label:\" + identifierName + \";\");\n    }\n\n    if (args[0] == null || args[0].raw === undefined) {\n      styles.push.apply(styles, args);\n    } else {\n      if (process.env.NODE_ENV !== 'production' && args[0][0] === undefined) {\n        console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n      }\n\n      styles.push(args[0][0]);\n      var len = args.length;\n      var i = 1;\n\n      for (; i < len; i++) {\n        if (process.env.NODE_ENV !== 'production' && args[0][i] === undefined) {\n          console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n        }\n\n        styles.push(args[i], args[0][i]);\n      }\n    } // $FlowFixMe: we need to cast StatelessFunctionalComponent to our PrivateStyledComponent class\n\n\n    var Styled = withEmotionCache(function (props, context, ref) {\n      return createElement(ThemeContext.Consumer, null, function (theme) {\n        var finalTag = shouldUseAs && props.as || baseTag;\n        var className = '';\n        var classInterpolations = [];\n        var mergedProps = props;\n\n        if (props.theme == null) {\n          mergedProps = {};\n\n          for (var key in props) {\n            mergedProps[key] = props[key];\n          }\n\n          mergedProps.theme = theme;\n        }\n\n        if (typeof props.className === 'string') {\n          className = getRegisteredStyles(context.registered, classInterpolations, props.className);\n        } else if (props.className != null) {\n          className = props.className + \" \";\n        }\n\n        var serialized = serializeStyles(styles.concat(classInterpolations), context.registered, mergedProps);\n        var rules = insertStyles(context, serialized, typeof finalTag === 'string');\n        className += context.key + \"-\" + serialized.name;\n\n        if (targetClassName !== undefined) {\n          className += \" \" + targetClassName;\n        }\n\n        var finalShouldForwardProp = shouldUseAs && shouldForwardProp === undefined ? getDefaultShouldForwardProp(finalTag) : defaultShouldForwardProp;\n        var newProps = {};\n\n        for (var _key in props) {\n          if (shouldUseAs && _key === 'as') continue;\n\n          if ( // $FlowFixMe\n          finalShouldForwardProp(_key)) {\n            newProps[_key] = props[_key];\n          }\n        }\n\n        newProps.className = className;\n        newProps.ref = ref || props.innerRef;\n\n        if (process.env.NODE_ENV !== 'production' && props.innerRef) {\n          console.error('`innerRef` is deprecated and will be removed in a future major version of Emotion, please use the `ref` prop instead' + (identifierName === undefined ? '' : \" in the usage of `\" + identifierName + \"`\"));\n        }\n\n        var ele = createElement(finalTag, newProps);\n        return ele;\n      });\n    });\n    Styled.displayName = identifierName !== undefined ? identifierName : \"Styled(\" + (typeof baseTag === 'string' ? baseTag : baseTag.displayName || baseTag.name || 'Component') + \")\";\n    Styled.defaultProps = tag.defaultProps;\n    Styled.__emotion_real = Styled;\n    Styled.__emotion_base = baseTag;\n    Styled.__emotion_styles = styles;\n    Styled.__emotion_forwardProp = shouldForwardProp;\n    Object.defineProperty(Styled, 'toString', {\n      value: function value() {\n        if (targetClassName === undefined && process.env.NODE_ENV !== 'production') {\n          return 'NO_COMPONENT_SELECTOR';\n        } // $FlowFixMe: coerce undefined to string\n\n\n        return \".\" + targetClassName;\n      }\n    });\n\n    Styled.withComponent = function (nextTag, nextOptions) {\n      return createStyled(nextTag, nextOptions !== undefined ? _objectSpread({}, options || {}, {}, nextOptions) : options).apply(void 0, styles);\n    };\n\n    return Styled;\n  };\n};\n\nexport default createStyled;","import \"core-js/modules/es6.array.for-each\";\nimport \"core-js/modules/es6.function.bind\";\nimport styled from '@emotion/styled-base';\nvar tags = ['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\n'circle', 'clipPath', 'defs', 'ellipse', 'foreignObject', 'g', 'image', 'line', 'linearGradient', 'mask', 'path', 'pattern', 'polygon', 'polyline', 'radialGradient', 'rect', 'stop', 'svg', 'text', 'tspan'];\nvar newStyled = styled.bind();\ntags.forEach(function (tagName) {\n  newStyled[tagName] = newStyled(tagName);\n});\nexport default newStyled;","import \"core-js/modules/es6.array.index-of\";\nimport \"core-js/modules/es6.object.define-properties\";\nimport \"core-js/modules/es7.object.get-own-property-descriptors\";\nimport \"core-js/modules/es6.array.for-each\";\nimport \"core-js/modules/es6.array.filter\";\nimport \"core-js/modules/es6.symbol\";\nimport \"core-js/modules/web.dom.iterable\";\nimport \"core-js/modules/es6.array.iterator\";\nimport \"core-js/modules/es6.object.to-string\";\nimport \"core-js/modules/es6.object.keys\";\nimport \"core-js/modules/es6.object.assign\";\nimport \"core-js/modules/es6.object.define-property\";\nimport React, { forwardRef } from 'react';\n\nfunction _defineProperty(obj, key, value) {\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n\n  return obj;\n}\n\nfunction _extends() {\n  _extends = Object.assign || function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n\n    return target;\n  };\n\n  return _extends.apply(this, arguments);\n}\n\nfunction ownKeys(object, enumerableOnly) {\n  var keys = Object.keys(object);\n\n  if (Object.getOwnPropertySymbols) {\n    var symbols = Object.getOwnPropertySymbols(object);\n    if (enumerableOnly) symbols = symbols.filter(function (sym) {\n      return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n    });\n    keys.push.apply(keys, symbols);\n  }\n\n  return keys;\n}\n\nfunction _objectSpread2(target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments[i] != null ? arguments[i] : {};\n\n    if (i % 2) {\n      ownKeys(Object(source), true).forEach(function (key) {\n        _defineProperty(target, key, source[key]);\n      });\n    } else if (Object.getOwnPropertyDescriptors) {\n      Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n    } else {\n      ownKeys(Object(source)).forEach(function (key) {\n        Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n      });\n    }\n  }\n\n  return target;\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n  if (source == null) return {};\n  var target = {};\n  var sourceKeys = Object.keys(source);\n  var key, i;\n\n  for (i = 0; i < sourceKeys.length; i++) {\n    key = sourceKeys[i];\n    if (excluded.indexOf(key) >= 0) continue;\n    target[key] = source[key];\n  }\n\n  return target;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n  if (source == null) return {};\n\n  var target = _objectWithoutPropertiesLoose(source, excluded);\n\n  var key, i;\n\n  if (Object.getOwnPropertySymbols) {\n    var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n    for (i = 0; i < sourceSymbolKeys.length; i++) {\n      key = sourceSymbolKeys[i];\n      if (excluded.indexOf(key) >= 0) continue;\n      if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n      target[key] = source[key];\n    }\n  }\n\n  return target;\n}\n\nvar isFunction = function isFunction(obj) {\n  return typeof obj === 'function';\n};\n\nvar MDXContext = React.createContext({});\n\nvar withMDXComponents = function withMDXComponents(Component) {\n  return function (props) {\n    var allComponents = useMDXComponents(props.components);\n    return React.createElement(Component, _extends({}, props, {\n      components: allComponents\n    }));\n  };\n};\n\nvar useMDXComponents = function useMDXComponents(components) {\n  var contextComponents = React.useContext(MDXContext);\n  var allComponents = contextComponents;\n\n  if (components) {\n    allComponents = isFunction(components) ? components(contextComponents) : _objectSpread2({}, contextComponents, {}, components);\n  }\n\n  return allComponents;\n};\n\nvar MDXProvider = function MDXProvider(props) {\n  var allComponents = useMDXComponents(props.components);\n  return React.createElement(MDXContext.Provider, {\n    value: allComponents\n  }, props.children);\n};\n\nvar TYPE_PROP_NAME = 'mdxType';\nvar DEFAULTS = {\n  inlineCode: 'code',\n  wrapper: function wrapper(_ref) {\n    var children = _ref.children;\n    return React.createElement(React.Fragment, {}, children);\n  }\n};\nvar MDXCreateElement = forwardRef(function (props, ref) {\n  var propComponents = props.components,\n      mdxType = props.mdxType,\n      originalType = props.originalType,\n      parentName = props.parentName,\n      etc = _objectWithoutProperties(props, [\"components\", \"mdxType\", \"originalType\", \"parentName\"]);\n\n  var components = useMDXComponents(propComponents);\n  var type = mdxType;\n  var Component = components[\"\".concat(parentName, \".\").concat(type)] || components[type] || DEFAULTS[type] || originalType;\n\n  if (propComponents) {\n    return React.createElement(Component, _objectSpread2({\n      ref: ref\n    }, etc, {\n      components: propComponents\n    }));\n  }\n\n  return React.createElement(Component, _objectSpread2({\n    ref: ref\n  }, etc));\n});\nMDXCreateElement.displayName = 'MDXCreateElement';\n\nfunction createElement(type, props) {\n  var args = arguments;\n  var mdxType = props && props.mdxType;\n\n  if (typeof type === 'string' || mdxType) {\n    var argsLength = args.length;\n    var createElementArgArray = new Array(argsLength);\n    createElementArgArray[0] = MDXCreateElement;\n    var newProps = {};\n\n    for (var key in props) {\n      if (hasOwnProperty.call(props, key)) {\n        newProps[key] = props[key];\n      }\n    }\n\n    newProps.originalType = type;\n    newProps[TYPE_PROP_NAME] = typeof type === 'string' ? type : mdxType;\n    createElementArgArray[1] = newProps;\n\n    for (var i = 2; i < argsLength; i++) {\n      createElementArgArray[i] = args[i];\n    }\n\n    return React.createElement.apply(null, createElementArgArray);\n  }\n\n  return React.createElement.apply(null, args);\n}\n\nexport { MDXContext, MDXProvider, createElement as mdx, useMDXComponents, withMDXComponents };","import \"core-js/modules/web.dom.iterable\";\nimport \"core-js/modules/es6.array.iterator\";\nimport \"core-js/modules/es6.object.to-string\";\nimport \"core-js/modules/es6.object.keys\";\nimport \"core-js/modules/es6.object.assign\";\nimport \"core-js/modules/es6.array.for-each\";\nimport { jsx } from '@theme-ui/core';\nimport { css, get } from '@theme-ui/css';\nimport 'react';\nimport '@emotion/core';\nimport styled from '@emotion/styled';\nimport { MDXProvider, useMDXComponents } from '@mdx-js/react';\nvar tags = ['p', 'b', 'i', 'a', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'img', 'pre', 'code', 'ol', 'ul', 'li', 'blockquote', 'hr', 'em', 'table', 'tr', 'th', 'td', 'em', 'strong', 'del', // mdx\n'inlineCode', 'thematicBreak', // other\n'div', // theme-ui\n'root'];\nvar aliases = {\n  inlineCode: 'code',\n  thematicBreak: 'hr',\n  root: 'div'\n};\n\nvar alias = function alias(n) {\n  return aliases[n] || n;\n};\n\nvar themed = function themed(key) {\n  return function (props) {\n    return css(get(props.theme, \"styles.\" + key))(props.theme);\n  };\n};\n\nvar Styled = styled('div')(themed('div'));\nvar components = {};\ntags.forEach(function (tag) {\n  components[tag] = styled(alias(tag))(themed(tag));\n  Styled[tag] = components[tag];\n});\n\nvar createComponents = function createComponents(comps) {\n  var next = Object.assign({}, components);\n  Object.keys(comps).forEach(function (key) {\n    next[key] = styled(comps[key])(themed(key));\n  });\n  return next;\n};\n\nvar MDXProvider$1 = function MDXProvider$1(ref) {\n  var components = ref.components;\n  var children = ref.children;\n  var outer = useMDXComponents();\n  return jsx(MDXProvider, {\n    components: createComponents(Object.assign({}, outer, components)),\n    children: children\n  });\n};\n\nexport { themed, Styled, components, MDXProvider$1 as MDXProvider };","var $export = require('./_export');\nvar fails = require('./_fails');\nvar defined = require('./_defined');\nvar quot = /\"/g;\n// B.2.3.2.1 CreateHTML(string, tag, attribute, value)\nvar createHTML = function (string, tag, attribute, value) {\n  var S = String(defined(string));\n  var p1 = '<' + tag;\n  if (attribute !== '') p1 += ' ' + attribute + '=\"' + String(value).replace(quot, '&quot;') + '\"';\n  return p1 + '>' + S + '</' + tag + '>';\n};\nmodule.exports = function (NAME, exec) {\n  var O = {};\n  O[NAME] = exec(createHTML);\n  $export($export.P + $export.F * fails(function () {\n    var test = ''[NAME]('\"');\n    return test !== test.toLowerCase() || test.split('\"').length > 3;\n  }), 'String', O);\n};\n","'use strict';\n\nrequire(\"core-js/modules/es6.array.reduce\");\n\nrequire(\"core-js/modules/es6.array.for-each\");\n\nrequire(\"core-js/modules/web.dom.iterable\");\n\nrequire(\"core-js/modules/es6.array.iterator\");\n\nrequire(\"core-js/modules/es6.object.keys\");\n\nrequire(\"core-js/modules/es6.array.filter\");\n\nrequire(\"core-js/modules/es6.array.map\");\n\nrequire(\"core-js/modules/es6.array.is-array\");\n\nrequire(\"core-js/modules/es7.symbol.async-iterator\");\n\nrequire(\"core-js/modules/es6.symbol\");\n\nrequire(\"core-js/modules/es6.regexp.to-string\");\n\nrequire(\"core-js/modules/es6.date.to-string\");\n\nrequire(\"core-js/modules/es6.object.to-string\");\n\nvar isMergeableObject = function isMergeableObject(value) {\n  return isNonNullObject(value) && !isSpecial(value);\n};\n\nfunction isNonNullObject(value) {\n  return !!value && typeof value === 'object';\n}\n\nfunction isSpecial(value) {\n  var stringValue = Object.prototype.toString.call(value);\n  return stringValue === '[object RegExp]' || stringValue === '[object Date]' || isReactElement(value);\n} // see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25\n\n\nvar canUseSymbol = typeof Symbol === 'function' && Symbol[\"for\"];\nvar REACT_ELEMENT_TYPE = canUseSymbol ? Symbol[\"for\"]('react.element') : 0xeac7;\n\nfunction isReactElement(value) {\n  return value.$$typeof === REACT_ELEMENT_TYPE;\n}\n\nfunction emptyTarget(val) {\n  return Array.isArray(val) ? [] : {};\n}\n\nfunction cloneUnlessOtherwiseSpecified(value, options) {\n  return options.clone !== false && options.isMergeableObject(value) ? deepmerge(emptyTarget(value), value, options) : value;\n}\n\nfunction defaultArrayMerge(target, source, options) {\n  return target.concat(source).map(function (element) {\n    return cloneUnlessOtherwiseSpecified(element, options);\n  });\n}\n\nfunction getMergeFunction(key, options) {\n  if (!options.customMerge) {\n    return deepmerge;\n  }\n\n  var customMerge = options.customMerge(key);\n  return typeof customMerge === 'function' ? customMerge : deepmerge;\n}\n\nfunction getEnumerableOwnPropertySymbols(target) {\n  return Object.getOwnPropertySymbols ? Object.getOwnPropertySymbols(target).filter(function (symbol) {\n    return target.propertyIsEnumerable(symbol);\n  }) : [];\n}\n\nfunction getKeys(target) {\n  return Object.keys(target).concat(getEnumerableOwnPropertySymbols(target));\n}\n\nfunction propertyIsOnObject(object, property) {\n  try {\n    return property in object;\n  } catch (_) {\n    return false;\n  }\n} // Protects from prototype poisoning and unexpected merging up the prototype chain.\n\n\nfunction propertyIsUnsafe(target, key) {\n  return propertyIsOnObject(target, key) // Properties are safe to merge if they don't exist in the target yet,\n  && !(Object.hasOwnProperty.call(target, key) // unsafe if they exist up the prototype chain,\n  && Object.propertyIsEnumerable.call(target, key)); // and also unsafe if they're nonenumerable.\n}\n\nfunction mergeObject(target, source, options) {\n  var destination = {};\n\n  if (options.isMergeableObject(target)) {\n    getKeys(target).forEach(function (key) {\n      destination[key] = cloneUnlessOtherwiseSpecified(target[key], options);\n    });\n  }\n\n  getKeys(source).forEach(function (key) {\n    if (propertyIsUnsafe(target, key)) {\n      return;\n    }\n\n    if (propertyIsOnObject(target, key) && options.isMergeableObject(source[key])) {\n      destination[key] = getMergeFunction(key, options)(target[key], source[key], options);\n    } else {\n      destination[key] = cloneUnlessOtherwiseSpecified(source[key], options);\n    }\n  });\n  return destination;\n}\n\nfunction deepmerge(target, source, options) {\n  options = options || {};\n  options.arrayMerge = options.arrayMerge || defaultArrayMerge;\n  options.isMergeableObject = options.isMergeableObject || isMergeableObject; // cloneUnlessOtherwiseSpecified is added to `options` so that custom arrayMerge()\n  // implementations can use it. The caller may not replace it.\n\n  options.cloneUnlessOtherwiseSpecified = cloneUnlessOtherwiseSpecified;\n  var sourceIsArray = Array.isArray(source);\n  var targetIsArray = Array.isArray(target);\n  var sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;\n\n  if (!sourceAndTargetTypesMatch) {\n    return cloneUnlessOtherwiseSpecified(source, options);\n  } else if (sourceIsArray) {\n    return options.arrayMerge(target, source, options);\n  } else {\n    return mergeObject(target, source, options);\n  }\n}\n\ndeepmerge.all = function deepmergeAll(array, options) {\n  if (!Array.isArray(array)) {\n    throw new Error('first argument should be an array');\n  }\n\n  return array.reduce(function (prev, next) {\n    return deepmerge(prev, next, options);\n  }, {});\n};\n\nvar deepmerge_1 = deepmerge;\nmodule.exports = deepmerge_1;","module.exports = \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIyNXB4IiB2aWV3Qm94PSIwIDAgMjUgMjUiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5HaXRIdWI8L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0iR2l0SHViIiBmaWxsPSIjRkZGRkZGIiBmaWxsLXJ1bGU9Im5vbnplcm8iPgogICAgICAgICAgICA8ZyBpZD0iZ2l0aHViLWxvZ28iPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTIzLjMyMzIwOSw2LjM1NjM4NTg4IEMyMi4yMDU0MjQzLDQuNDI4ODY0OTMgMjAuNjg5MjIwNywyLjkwMjg0MzkxIDE4Ljc3NDE5OTMsMS43Nzc5Nzg1OCBDMTYuODU4ODkyOCwwLjY1MzA1NTg3MyAxNC43Njc5NDkxLDAuMDkwNzM3OTUzMyAxMi40OTk4ODYsMC4wOTA3Mzc5NTMzIEMxMC4yMzIxMDc5LDAuMDkwNzM3OTUzMyA4LjE0MDQ4MDEzLDAuNjUzMjI3OTkzIDYuMjI1NTcyNjksMS43Nzc5Nzg1OCBDNC4zMTAzODAyMSwyLjkwMjc4NjU0IDIuNzk0MjMzNjcsNC40Mjg4NjQ5MyAxLjY3NjQ0ODk5LDYuMzU2Mzg1ODggQzAuNTU4ODM1MzMzLDguMjgzODQ5NDUgMCwxMC4zODg2NTQ2IDAsMTIuNjcwNzQzOSBDMCwxNS40MTIwNTEgMC43OTQ2NzE0ODMsMTcuODc3MTA0NSAyLjM4NDQxMzQ5LDIwLjA2NjUzNTUgQzMuOTczOTg0NDksMjIuMjU2MTM4OCA2LjAyNzQ3NDg4LDIzLjc3MTI1ODggOC41NDQ3MTM2NywyNC42MTIwNjc4IEM4LjgzNzcyNzQsMjQuNjY2ODAyMiA5LjA1NDYzNzM3LDI0LjYyODMwNDUgOS4xOTU2NzE2MSwyNC40OTc1NTAzIEM5LjMzNjc2Mjg1LDI0LjM2NjYyMzkgOS40MDcyMjI5NiwyNC4yMDI2NTAzIDkuNDA3MjIyOTYsMjQuMDA2MzE4MSBDOS40MDcyMjI5NiwyMy45NzM1NTc5IDkuNDA0NDI5NjQsMjMuNjc4ODMwMSA5LjM5OTAxNDAxLDIzLjEyMTc5MDUgQzkuMzkzNDI3MzcsMjIuNTY0NzUxIDkuMzkwODA1MDcsMjIuMDc4Nzk3MiA5LjM5MDgwNTA3LDIxLjY2NDE1ODcgTDkuMDE2NDQyOTcsMjEuNzI5MzM1MSBDOC43Nzc3NTY1LDIxLjc3MzM0MDUgOC40NzY2NDc4MywyMS43OTE5ODY5IDguMTEzMTE2OTgsMjEuNzg2NzA4NiBDNy43NDk3NTcxNSwyMS43ODE2MDIzIDcuMzcyNTQ0NzMsMjEuNzQzMjc2OCA2Ljk4MTk5Mjc3LDIxLjY3MjAxODkgQzYuNTkxMjY5NzksMjEuNjAxMzkyMSA2LjIyNzg1Mjk1LDIxLjQzNzU5MDcgNS44OTE0NTcyMiwyMS4xODA5NTg5IEM1LjU1NTIzMjUyLDIwLjkyNDMyNzEgNS4zMTY1NDYwNCwyMC41ODg0MDUxIDUuMTc1NDU0OCwyMC4xNzM3MDkzIEw1LjAxMjcwMTA2LDE5Ljc5Njc2NTIgQzQuOTA0MjE3NTcsMTkuNTQ1ODEzNCA0LjczMzQyNTkxLDE5LjI2NzAzNTUgNC41MDAwOTgwNSwxOC45NjE0NjQxIEM0LjI2Njc3MDE5LDE4LjY1NTYwNTggNC4wMzA4MjAwMywxOC40NDgyNTc5IDMuNzkyMTMzNTUsMTguMzM5MDc2MSBMMy42NzgxNzc0MywxOC4yNTY5NzQ2IEMzLjYwMjI0NDY5LDE4LjIwMjQxMjMgMy41MzE3ODQ1OCwxOC4xMzY2MDQ5IDMuNDY2NjI2MDgsMTguMDYwMjQwOCBDMy40MDE1MjQ1OCwxNy45ODM4NzY2IDMuMzUyNzgzOTcsMTcuOTA3NDU1MSAzLjMyMDIzMzIzLDE3LjgzMDkxODggQzMuMjg3NjI1NDcsMTcuNzU0MzI1MSAzLjMxNDY0NjU4LDE3LjY5MTUwMTEgMy40MDE1ODE1OSwxNy42NDIyMTcyIEMzLjQ4ODUxNjYsMTcuNTkyOTMzNCAzLjY0NTYyNjY4LDE3LjU2OTAwODYgMy44NzM1OTU5MywxNy41NjkwMDg2IEw0LjE5ODk4OTM5LDE3LjYxNzk0ODIgQzQuNDE2MDEzMzcsMTcuNjYxNzI0MiA0LjY4NDQ1NzI3LDE3Ljc5MjQ3ODUgNS4wMDQ2NjMxNCwxOC4wMTEwMTQzIEM1LjMyNDY5Nzk4LDE4LjIyOTM3NzkgNS41ODc3ODMyNywxOC41MTMyNjIxIDUuNzkzOTc2LDE4Ljg2MjU1MjEgQzYuMDQzNjY0NzUsMTkuMzEwNDA5OSA2LjM0NDQ4ODM4LDE5LjY1MTY2NzYgNi42OTczMDE5OSwxOS44ODY0OTc0IEM3LjA0OTgzMDU4LDIwLjEyMTMyNzMgNy40MDUyNjY0OSwyMC4yMzg1NDE0IDcuNzYzMjY3NzEsMjAuMjM4NTQxNCBDOC4xMjEyNjg5MiwyMC4yMzg1NDE0IDguNDMwNDcyNTIsMjAuMjExMjMxNiA4LjY5MDk5MjUxLDIwLjE1Njg5ODkgQzguOTUxMjI3NDcsMjAuMTAyMjc5MyA5LjE5NTM4NjU3LDIwLjAyMDE3NzcgOS40MjMzNTU4MiwxOS45MTEwNTMzIEM5LjUyMTAwODA2LDE5LjE3OTA4MTkgOS43ODY4ODY2NywxOC42MTY3NjM5IDEwLjIyMDc2MzYsMTguMjIzNjk3OSBDOS42MDIzNTY0MiwxOC4xNTgyOTIxIDkuMDQ2MzcxNDIsMTguMDU5NzgxOCA4LjU1MjUyMzU3LDE3LjkyODc5OCBDOC4wNTg5NjA3NSwxNy43OTc2NDIxIDcuNTQ4OTIzMDMsMTcuNTg0Nzg2MyA3LjAyMjc1MjQ2LDE3LjI4OTY1NjkgQzYuNDk2Mjk2ODUsMTYuOTk0OTI5MSA2LjA1OTU2OTU4LDE2LjYyODk0MzQgNS43MTI0NTY2MiwxNi4xOTIzMzA5IEM1LjM2NTI4NjY1LDE1Ljc1NTQ4ODkgNS4wODAzNjc4NSwxNS4xODE5ODMxIDQuODU4MDk5MjYsMTQuNDcyMzMgQzQuNjM1NzE2NjYsMTMuNzYyMzkgNC41MjQ0OTY4NiwxMi45NDM0NDAzIDQuNTI0NDk2ODYsMTIuMDE1MjUxNCBDNC41MjQ0OTY4NiwxMC42OTM2NTIzIDQuOTUzMTg2MjEsOS41NjkwMTY0MiA1LjgxMDM5Mzg5LDguNjQwNzEyNzggQzUuNDA4ODM5NjcsNy42NDcxMTgwNyA1LjQ0Njc0OTAzLDYuNTMzMjY4NDYgNS45MjQyMzYsNS4yOTkyNzg2OCBDNi4yMzg5MTIyMiw1LjIwMDg4MzA4IDYuNzA1NTY3OTQsNS4yNzQ3MjI4MSA3LjMyMzk3NTE0LDUuNTIwMzM4ODcgQzcuOTQyNDk2MzQsNS43NjYwNjk2OCA4LjM5NTM1NjQ3LDUuOTc2NTczMTQgOC42ODMwMTE1OSw2LjE1MTEwMzQxIEM4Ljk3MDY2NjcsNi4zMjU1NzYzIDkuMjAxMTQ0MjQsNi40NzM0Mjc4NyA5LjM3NDc4NjIzLDYuNTkzMzM4NTQgQzEwLjM4NDA4NzQsNi4zMDk1MTE3MSAxMS40MjU2NTQzLDYuMTY3NTY5NjEgMTIuNDk5NzcyLDYuMTY3NTY5NjEgQzEzLjU3Mzg4OTYsNi4xNjc1Njk2MSAxNC42MTU2ODQ2LDYuMzA5NTExNzEgMTUuNjI1MDQyOCw2LjU5MzMzODU0IEwxNi4yNDM1MDcsNi4yMDAzODcyNiBDMTYuNjY2NDM4Niw1LjkzODE5MDI1IDE3LjE2NTg3MzEsNS42OTc5MDk5MyAxNy43NDA2MTMzLDUuNDc5NDg4OTIgQzE4LjMxNTY5NTUsNS4yNjExODI2NiAxOC43NTU0NDQxLDUuMjAxMDU1MiAxOS4wNTk0MDMxLDUuMjk5NDUwOCBDMTkuNTQ3NDkzMyw2LjUzMzQ5Nzk1IDE5LjU5MDk4OTMsNy42NDcyOTAxOSAxOS4xODkzMjExLDguNjQwODg0OSBDMjAuMDQ2NDcxNyw5LjU2OTE4ODU0IDIwLjQ3NTMzMjEsMTAuNjk0MTExMiAyMC40NzUzMzIxLDEyLjAxNTQyMzUgQzIwLjQ3NTMzMjEsMTIuOTQzNjEyNCAyMC4zNjM3MTMzLDEzLjc2NTE0MzkgMjAuMTQxNjcyNywxNC40ODA1MzQ0IEMxOS45MTkzNDcxLDE1LjE5NjAzOTYgMTkuNjMxOTc3LDE1Ljc2ODk3MTcgMTkuMjc5NDQ4NSwxNi4yMDA1MzUzIEMxOC45MjY1MjA4LDE2LjYzMjA0MTYgMTguNDg3MDAwMiwxNi45OTUxNTg2IDE3Ljk2MDgyOTcsMTcuMjg5ODI5MSBDMTcuNDM0NTQ1MSwxNy41ODQ3MjkgMTYuOTI0MzM2MywxNy43OTc1ODQ4IDE2LjQzMDc3MzUsMTcuOTI4NzQwNiBDMTUuOTM2OTgyNywxOC4wNTk4OTY1IDE1LjM4MDk5NzcsMTguMTU4NDY0MiAxNC43NjI1OTA1LDE4LjIyMzk4NDggQzE1LjMyNjYxMzQsMTguNzE1MjE2OSAxNS42MDg2ODE5LDE5LjQ5MDYyMDEgMTUuNjA4NjgxOSwyMC41NDk4NTAxIEwxNS42MDg2ODE5LDI0LjAwNTg1OTIgQzE1LjYwODY4MTksMjQuMjAyMTkxNCAxNS42NzY1MTk3LDI0LjM2NjEwNzUgMTUuODEyMzA5MywyNC40OTcwOTEzIEMxNS45NDc5Mjc5LDI0LjYyNzg0NTUgMTYuMTYyMTAxNiwyNC42NjYzNDMyIDE2LjQ1NTExNTMsMjQuNjExNTUxNSBDMTguOTcyNjk2MSwyMy43NzA4NTcyIDIxLjAyNjE4NjUsMjIuMjU1Njc5OCAyMi42MTU3MDA1LDIwLjA2NjA3NjYgQzI0LjIwNTA0MzUsMTcuODc2NjQ1NSAyNSwxNS40MTE1OTIgMjUsMTIuNjcwMjg0OSBDMjQuOTk5NDI5OSwxMC4zODg0ODI1IDI0LjQ0MDMwOTYsOC4yODM4NDk0NSAyMy4zMjMyMDksNi4zNTYzODU4OCBaIiBpZD0iU2hhcGUiPjwvcGF0aD4KICAgICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+\"","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n  module.exports = require('./cjs/scheduler.development.js');\n}","require(\"core-js/modules/es6.array.is-array\");\n\nrequire(\"core-js/modules/es6.array.some\");\n\nrequire(\"core-js/modules/web.dom.iterable\");\n\nrequire(\"core-js/modules/es6.array.iterator\");\n\nrequire(\"core-js/modules/es6.object.to-string\");\n\nrequire(\"core-js/modules/es6.object.keys\");\n\nrequire(\"core-js/modules/es6.array.for-each\");\n\nrequire(\"core-js/modules/es6.object.set-prototype-of\");\n\nrequire(\"core-js/modules/es6.object.create\");\n\nrequire(\"core-js/modules/es6.array.index-of\");\n\nrequire(\"core-js/modules/es6.object.define-property\");\n\nrequire(\"core-js/modules/es6.object.assign\");\n\nexports.__esModule = true;\nexports.Helmet = undefined;\n\nvar _extends = Object.assign || function (target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments[i];\n\n    for (var key in source) {\n      if (Object.prototype.hasOwnProperty.call(source, key)) {\n        target[key] = source[key];\n      }\n    }\n  }\n\n  return target;\n};\n\nvar _createClass = function () {\n  function defineProperties(target, props) {\n    for (var i = 0; i < props.length; i++) {\n      var descriptor = props[i];\n      descriptor.enumerable = descriptor.enumerable || false;\n      descriptor.configurable = true;\n      if (\"value\" in descriptor) descriptor.writable = true;\n      Object.defineProperty(target, descriptor.key, descriptor);\n    }\n  }\n\n  return function (Constructor, protoProps, staticProps) {\n    if (protoProps) defineProperties(Constructor.prototype, protoProps);\n    if (staticProps) defineProperties(Constructor, staticProps);\n    return Constructor;\n  };\n}();\n\nvar _react = require(\"react\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require(\"prop-types\");\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _reactSideEffect = require(\"react-side-effect\");\n\nvar _reactSideEffect2 = _interopRequireDefault(_reactSideEffect);\n\nvar _reactFastCompare = require(\"react-fast-compare\");\n\nvar _reactFastCompare2 = _interopRequireDefault(_reactFastCompare);\n\nvar _HelmetUtils = require(\"./HelmetUtils.js\");\n\nvar _HelmetConstants = require(\"./HelmetConstants.js\");\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    \"default\": obj\n  };\n}\n\nfunction _objectWithoutProperties(obj, keys) {\n  var target = {};\n\n  for (var i in obj) {\n    if (keys.indexOf(i) >= 0) continue;\n    if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;\n    target[i] = obj[i];\n  }\n\n  return target;\n}\n\nfunction _classCallCheck(instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n}\n\nfunction _possibleConstructorReturn(self, call) {\n  if (!self) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n\n  return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n}\n\nfunction _inherits(subClass, superClass) {\n  if (typeof superClass !== \"function\" && superClass !== null) {\n    throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n  }\n\n  subClass.prototype = Object.create(superClass && superClass.prototype, {\n    constructor: {\n      value: subClass,\n      enumerable: false,\n      writable: true,\n      configurable: true\n    }\n  });\n  if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\n\nvar Helmet = function Helmet(Component) {\n  var _class, _temp;\n\n  return _temp = _class = function (_React$Component) {\n    _inherits(HelmetWrapper, _React$Component);\n\n    function HelmetWrapper() {\n      _classCallCheck(this, HelmetWrapper);\n\n      return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n    }\n\n    HelmetWrapper.prototype.shouldComponentUpdate = function shouldComponentUpdate(nextProps) {\n      return !(0, _reactFastCompare2[\"default\"])(this.props, nextProps);\n    };\n\n    HelmetWrapper.prototype.mapNestedChildrenToProps = function mapNestedChildrenToProps(child, nestedChildren) {\n      if (!nestedChildren) {\n        return null;\n      }\n\n      switch (child.type) {\n        case _HelmetConstants.TAG_NAMES.SCRIPT:\n        case _HelmetConstants.TAG_NAMES.NOSCRIPT:\n          return {\n            innerHTML: nestedChildren\n          };\n\n        case _HelmetConstants.TAG_NAMES.STYLE:\n          return {\n            cssText: nestedChildren\n          };\n      }\n\n      throw new Error(\"<\" + child.type + \" /> elements are self-closing and can not contain children. Refer to our API for more information.\");\n    };\n\n    HelmetWrapper.prototype.flattenArrayTypeChildren = function flattenArrayTypeChildren(_ref) {\n      var _extends2;\n\n      var child = _ref.child,\n          arrayTypeChildren = _ref.arrayTypeChildren,\n          newChildProps = _ref.newChildProps,\n          nestedChildren = _ref.nestedChildren;\n      return _extends({}, arrayTypeChildren, (_extends2 = {}, _extends2[child.type] = [].concat(arrayTypeChildren[child.type] || [], [_extends({}, newChildProps, this.mapNestedChildrenToProps(child, nestedChildren))]), _extends2));\n    };\n\n    HelmetWrapper.prototype.mapObjectTypeChildren = function mapObjectTypeChildren(_ref2) {\n      var _extends3, _extends4;\n\n      var child = _ref2.child,\n          newProps = _ref2.newProps,\n          newChildProps = _ref2.newChildProps,\n          nestedChildren = _ref2.nestedChildren;\n\n      switch (child.type) {\n        case _HelmetConstants.TAG_NAMES.TITLE:\n          return _extends({}, newProps, (_extends3 = {}, _extends3[child.type] = nestedChildren, _extends3.titleAttributes = _extends({}, newChildProps), _extends3));\n\n        case _HelmetConstants.TAG_NAMES.BODY:\n          return _extends({}, newProps, {\n            bodyAttributes: _extends({}, newChildProps)\n          });\n\n        case _HelmetConstants.TAG_NAMES.HTML:\n          return _extends({}, newProps, {\n            htmlAttributes: _extends({}, newChildProps)\n          });\n      }\n\n      return _extends({}, newProps, (_extends4 = {}, _extends4[child.type] = _extends({}, newChildProps), _extends4));\n    };\n\n    HelmetWrapper.prototype.mapArrayTypeChildrenToProps = function mapArrayTypeChildrenToProps(arrayTypeChildren, newProps) {\n      var newFlattenedProps = _extends({}, newProps);\n\n      Object.keys(arrayTypeChildren).forEach(function (arrayChildName) {\n        var _extends5;\n\n        newFlattenedProps = _extends({}, newFlattenedProps, (_extends5 = {}, _extends5[arrayChildName] = arrayTypeChildren[arrayChildName], _extends5));\n      });\n      return newFlattenedProps;\n    };\n\n    HelmetWrapper.prototype.warnOnInvalidChildren = function warnOnInvalidChildren(child, nestedChildren) {\n      if (process.env.NODE_ENV !== \"production\") {\n        if (!_HelmetConstants.VALID_TAG_NAMES.some(function (name) {\n          return child.type === name;\n        })) {\n          if (typeof child.type === \"function\") {\n            return (0, _HelmetUtils.warn)(\"You may be attempting to nest <Helmet> components within each other, which is not allowed. Refer to our API for more information.\");\n          }\n\n          return (0, _HelmetUtils.warn)(\"Only elements types \" + _HelmetConstants.VALID_TAG_NAMES.join(\", \") + \" are allowed. Helmet does not support rendering <\" + child.type + \"> elements. Refer to our API for more information.\");\n        }\n\n        if (nestedChildren && typeof nestedChildren !== \"string\" && (!Array.isArray(nestedChildren) || nestedChildren.some(function (nestedChild) {\n          return typeof nestedChild !== \"string\";\n        }))) {\n          throw new Error(\"Helmet expects a string as a child of <\" + child.type + \">. Did you forget to wrap your children in braces? ( <\" + child.type + \">{``}</\" + child.type + \"> ) Refer to our API for more information.\");\n        }\n      }\n\n      return true;\n    };\n\n    HelmetWrapper.prototype.mapChildrenToProps = function mapChildrenToProps(children, newProps) {\n      var _this2 = this;\n\n      var arrayTypeChildren = {};\n\n      _react2[\"default\"].Children.forEach(children, function (child) {\n        if (!child || !child.props) {\n          return;\n        }\n\n        var _child$props = child.props,\n            nestedChildren = _child$props.children,\n            childProps = _objectWithoutProperties(_child$props, [\"children\"]);\n\n        var newChildProps = (0, _HelmetUtils.convertReactPropstoHtmlAttributes)(childProps);\n\n        _this2.warnOnInvalidChildren(child, nestedChildren);\n\n        switch (child.type) {\n          case _HelmetConstants.TAG_NAMES.LINK:\n          case _HelmetConstants.TAG_NAMES.META:\n          case _HelmetConstants.TAG_NAMES.NOSCRIPT:\n          case _HelmetConstants.TAG_NAMES.SCRIPT:\n          case _HelmetConstants.TAG_NAMES.STYLE:\n            arrayTypeChildren = _this2.flattenArrayTypeChildren({\n              child: child,\n              arrayTypeChildren: arrayTypeChildren,\n              newChildProps: newChildProps,\n              nestedChildren: nestedChildren\n            });\n            break;\n\n          default:\n            newProps = _this2.mapObjectTypeChildren({\n              child: child,\n              newProps: newProps,\n              newChildProps: newChildProps,\n              nestedChildren: nestedChildren\n            });\n            break;\n        }\n      });\n\n      newProps = this.mapArrayTypeChildrenToProps(arrayTypeChildren, newProps);\n      return newProps;\n    };\n\n    HelmetWrapper.prototype.render = function render() {\n      var _props = this.props,\n          children = _props.children,\n          props = _objectWithoutProperties(_props, [\"children\"]);\n\n      var newProps = _extends({}, props);\n\n      if (children) {\n        newProps = this.mapChildrenToProps(children, newProps);\n      }\n\n      return _react2[\"default\"].createElement(Component, newProps);\n    };\n\n    _createClass(HelmetWrapper, null, [{\n      key: \"canUseDOM\",\n      // Component.peek comes from react-side-effect:\n      // For testing, you may use a static peek() method available on the returned component.\n      // It lets you get the current state without resetting the mounted instance stack.\n      // Don’t use it for anything other than testing.\n\n      /**\n       * @param {Object} base: {\"target\": \"_blank\", \"href\": \"http://mysite.com/\"}\n       * @param {Object} bodyAttributes: {\"className\": \"root\"}\n       * @param {String} defaultTitle: \"Default Title\"\n       * @param {Boolean} defer: true\n       * @param {Boolean} encodeSpecialCharacters: true\n       * @param {Object} htmlAttributes: {\"lang\": \"en\", \"amp\": undefined}\n       * @param {Array} link: [{\"rel\": \"canonical\", \"href\": \"http://mysite.com/example\"}]\n       * @param {Array} meta: [{\"name\": \"description\", \"content\": \"Test description\"}]\n       * @param {Array} noscript: [{\"innerHTML\": \"<img src='http://mysite.com/js/test.js'\"}]\n       * @param {Function} onChangeClientState: \"(newState) => console.log(newState)\"\n       * @param {Array} script: [{\"type\": \"text/javascript\", \"src\": \"http://mysite.com/js/test.js\"}]\n       * @param {Array} style: [{\"type\": \"text/css\", \"cssText\": \"div { display: block; color: blue; }\"}]\n       * @param {String} title: \"Title\"\n       * @param {Object} titleAttributes: {\"itemprop\": \"name\"}\n       * @param {String} titleTemplate: \"MySite.com - %s\"\n       */\n      set: function set(canUseDOM) {\n        Component.canUseDOM = canUseDOM;\n      }\n    }]);\n\n    return HelmetWrapper;\n  }(_react2[\"default\"].Component), _class.propTypes = {\n    base: _propTypes2[\"default\"].object,\n    bodyAttributes: _propTypes2[\"default\"].object,\n    children: _propTypes2[\"default\"].oneOfType([_propTypes2[\"default\"].arrayOf(_propTypes2[\"default\"].node), _propTypes2[\"default\"].node]),\n    defaultTitle: _propTypes2[\"default\"].string,\n    defer: _propTypes2[\"default\"].bool,\n    encodeSpecialCharacters: _propTypes2[\"default\"].bool,\n    htmlAttributes: _propTypes2[\"default\"].object,\n    link: _propTypes2[\"default\"].arrayOf(_propTypes2[\"default\"].object),\n    meta: _propTypes2[\"default\"].arrayOf(_propTypes2[\"default\"].object),\n    noscript: _propTypes2[\"default\"].arrayOf(_propTypes2[\"default\"].object),\n    onChangeClientState: _propTypes2[\"default\"].func,\n    script: _propTypes2[\"default\"].arrayOf(_propTypes2[\"default\"].object),\n    style: _propTypes2[\"default\"].arrayOf(_propTypes2[\"default\"].object),\n    title: _propTypes2[\"default\"].string,\n    titleAttributes: _propTypes2[\"default\"].object,\n    titleTemplate: _propTypes2[\"default\"].string\n  }, _class.defaultProps = {\n    defer: true,\n    encodeSpecialCharacters: true\n  }, _class.peek = Component.peek, _class.rewind = function () {\n    var mappedState = Component.rewind();\n\n    if (!mappedState) {\n      // provide fallback if mappedState is undefined\n      mappedState = (0, _HelmetUtils.mapStateOnServer)({\n        baseTag: [],\n        bodyAttributes: {},\n        encodeSpecialCharacters: true,\n        htmlAttributes: {},\n        linkTags: [],\n        metaTags: [],\n        noscriptTags: [],\n        scriptTags: [],\n        styleTags: [],\n        title: \"\",\n        titleAttributes: {}\n      });\n    }\n\n    return mappedState;\n  }, _temp;\n};\n\nvar NullComponent = function NullComponent() {\n  return null;\n};\n\nvar HelmetSideEffects = (0, _reactSideEffect2[\"default\"])(_HelmetUtils.reducePropsToState, _HelmetUtils.handleClientStateChange, _HelmetUtils.mapStateOnServer)(NullComponent);\nvar HelmetExport = Helmet(HelmetSideEffects);\nHelmetExport.renderStatic = HelmetExport.rewind;\nexports.Helmet = HelmetExport;\nexports[\"default\"] = HelmetExport;","module.exports = \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNzlweCIgaGVpZ2h0PSIzM3B4IiB2aWV3Qm94PSIwIDAgNzkgMzMiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5Mb2dvPC90aXRsZT4KICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPgogICAgPGcgaWQ9IlBhZ2UtMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9IkxvZ28iIGZpbGwtcnVsZT0ibm9uemVybyI+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMC4wNDUyMzE4LDE5LjQ2MTIzMzcgQzkuMjQwNjc1MjUsMjAuNjk4NDMyOCA4LjEyNjE5NTA0LDIxLjMxNjY4NzggNi43MDA3Nzc4OSwyMS4zMTY2ODc4IEM1LjMxNTQ1ODI5LDIxLjMxNjY4NzggNC4yMDg2NTAxNywyMC43MTkxMTAzIDMuMzgwMjA4NzgsMTkuNTIzODE3NCBDMi41NTIyMDE2NiwxOC4zMjgyNDg5IDIuMTM4MDUzMzUsMTYuNzc4NDA3MSAyLjEzODA1MzM1LDE0Ljg3MzMyNzMgQzIuMTM4MDUzMzUsMTIuOTIyNzU3MSAyLjU0ODE0ODQ4LDExLjM0Mzk2NyAzLjM2ODMzODc1LDEwLjEzNzIzMjYgQzQuMTg4NjczNzgsOC45MzA2MzYxMiA1LjI5NTE5MjM4LDguMzI2OTkzMjQgNi42ODg3NjMxLDguMzI2OTkzMjQgQzguMDY2NTU1MzcsOC4zMjY5OTMyNCA5LjE3MTE5MjE0LDguODg1MjgzNjUgMTAuMDAzMzk3MiwxMC4wMDA0ODYgQzEwLjgzNTYwMjMsMTEuMTE2Mzc3NSAxMS4yNTE3NzcyLDEyLjY3NjI4MjIgMTEuMjUxNzc3MiwxNC42Nzk2NDg4IEMxMS4yNTE3NzcyLDE2LjYzMDM1NjggMTAuODQ5NDk4OSwxOC4yMjQxNzI1IDEwLjA0NTIzMTgsMTkuNDYxMjMzNyBNNi43MTI3OTI2OCw2LjczNDY5Mzg4IEM0LjY5MDExMDI1LDYuNzM0NjkzODggMy4wNjU2NTI5Myw3LjUwMTQxMjcgMS44MzkyNzU5NSw5LjAzNDAyMzI0IEMwLjYxMzE4ODQ4OSwxMC41NjY3NzE2IDAsMTIuNTA5NDg0NCAwLDE0Ljg2MTg4NTggQzAsMTcuMTE1NzI0OCAwLjU4NTM5NTI0MywxOS4wMTg1OTkxIDEuNzU2MDQwOTcsMjAuNTcwMDk1IEMyLjkyNjU0MTk1LDIyLjEyMjAwNDQgNC41NTg4MTYxMiwyMi44OTc5NTkyIDYuNjUzMDA4MjUsMjIuODk3OTU5MiBDOC43NzkxOTE1NywyMi44OTc5NTkyIDEwLjQzMzQ2ODcsMjIuMDgwMDk4MiAxMS42MTYyNzQsMjAuNDQ1MDY1NSBDMTIuNzk4NTAwMiwxOC44MDk3NTcxIDEzLjM4OTgzMDUsMTYuODkxNDQzNyAxMy4zODk4MzA1LDE0LjY5MTIyODEgQzEzLjM4OTgzMDUsMTIuMzk5NjE4MyAxMi43ODA1NTA0LDEwLjUwMDQ2NiAxMS41NjIyNzk4LDguOTkzOTA5MDQgQzEwLjM0Mzg2NDUsNy40ODgwNDEzIDguNzI3MzY4NzQsNi43MzQ2OTM4OCA2LjcxMjc5MjY4LDYuNzM0NjkzODgiIGlkPSJTaGFwZSIgZmlsbD0iIzVEQTdBMyI+PC9wYXRoPgogICAgICAgICAgICA8cGF0aCBkPSJNMjIuOTc0MzgxNywyMS4zNjc1NDcyIEMyMi4zMTQxOTk5LDIyLjA3MDg5MDkgMjEuNTU1MzY4NiwyMi40MjMxMzExIDIwLjY5OTU0OTUsMjIuNDIzMTMxMSBDMTkuOTYwMDU1MywyMi40MjMxMzExIDE5LjI1MDkyNjQsMjIuMTMwOTk0OCAxOC41Njk3NDU3LDIxLjU0NjU4MDEgQzE3Ljg4ODI2MjksMjAuOTYzMDE3OSAxNy41MTMzMDM4LDIwLjIyMzAxNTEgMTcuMzYyMjMyNSwxOS4zMjc5OTI0IEwxNy4zNjIyMzI1LDE1Ljk4NjA0NCBDMTcuNjY0Mzc1MiwxNS4xNzMxNDkxIDE3Ljk2OTM4ODIsMTQuNDgxNDU2OCAxOC41ODg0Nzg2LDEzLjkxMDk2NjggQzE5LjIwNzU2ODksMTMuMzQwNDc2OSAxOS45MDY3MjcxLDEzLjA1NTE2MDkgMjAuNjg3OTE3LDEzLjA1NTE2MDkgQzIxLjY3NjgzLDEzLjA1NTE2MDkgMjIuNDcwNDA3NywxMy40NTk2OTAxIDIzLjA2ODgwMTMsMTQuMjY4NjA2NSBDMjMuNjY2ODkyNywxNS4wNzc1MjI4IDIzLjk2NjAxNCwxNi4yMjg0NDg5IDIzLjk2NjAxNCwxNy43MjE1MjY5IEMyMy45NjYwMTQsMTkuNDQ4OTEwNyAyMy42MzUxNjc3LDIwLjY2NDYyOTcgMjIuOTc0MzgxNywyMS4zNjc1NDcyIE0yMS4xNjI3MzQyLDExLjQ0ODk3OTYgQzE5LjQwMzM1NzQsMTEuNDQ4OTc5NiAxOC4xMTc1ODkyLDEyLjMyNDUzNiAxNy4yMTExNjEyLDE0LjA3NDc5NjIgTDE3LjIxMTE2MTIsMTEuNjk4MjA0OCBMMTUuMzk4MzA1MSwxMS42OTgyMDQ4IEwxNS4zOTgzMDUxLDI3LjYxMjI0NDkgTDE3LjM2MjIzMjUsMjcuNjEyMjQ0OSBMMTcuMzYyMjMyNSwyMS44MjQ5MzM3IEMxOC4yNjg2NjA1LDIzLjIzOTQzNjEgMTkuNTA4OTU2MiwyMy45NDcwNDI1IDIxLjA4NzY1MTcsMjMuOTQ3MDQyNSBDMjIuNTU4OTM1NSwyMy45NDcwNDI1IDIzLjc2MjgyMywyMy4zNzk2Nzg2IDI0LjcwMjAzMzUsMjIuMjQ1NTE5MSBDMjUuNjQwNzkwOCwyMS4xMTA3OTEyIDI2LjExMDE2OTUsMTkuNTc3NTAxOCAyNi4xMTAxNjk1LDE3LjY0NTM2NjkgQzI2LjExMDE2OTUsMTUuODUzNDc0NCAyNS42NjI5OTgzLDE0LjM3MjkwMDMgMjQuNzUwNTI3NCwxMy4yMDMzNjA0IEMyMy44Mzc2MDMzLDEyLjAzMzY3ODUgMjIuNjQ4MDY3NiwxMS40NDg5Nzk2IDIxLjE2MjczNDIsMTEuNDQ4OTc5NiIgaWQ9IlNoYXBlIiBmaWxsPSIjNURBN0EzIj48L3BhdGg+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMC4yNjM1ODc2LDE2LjM2MzMzNjcgQzMwLjM0MTcwNzYsMTUuMjU4OTg2OCAzMC43MDEzMTY2LDE0LjQwODM2MTMgMzEuMzQxNzAwNiwxMy43NzA0NjExIEMzMS45ODE2NTYxLDEzLjEzMjQyMyAzMi43NjE0Mjc5LDEyLjgwNDAxNjkgMzMuNjgwNzMwMiwxMi44MDQwMTY5IEMzNC4zNjQxMDE2LDEyLjgwNDAxNjkgMzQuOTQ5MDczMiwxMi45NzU3NDMzIDM1LjQzNjUwMiwxMy4zMjkxMzUzIEMzNS45MjM1MDIzLDEzLjY4MTk3NTEgMzYuMjY5NDAxLDE0LjEyNTc4NTcgMzYuNDczNDg0MSwxNC42MjcwMjI1IEMzNi42NzgxMzg1LDE1LjEyODEyMTMgMzYuNzg3NTM1MSwxNS42NzMxMTggMzYuODAzMzg3NiwxNi4zNjMzMzY3IEwzMC4yNjM1ODc2LDE2LjM2MzMzNjcgWiBNMzcuMzc1MjIwMiwxMy4wMzA2ODQ4IEMzNi40MjgzNTQ1LDExLjk5MDI0OTEgMzUuMTc3NDM1LDExLjQ0ODk3OTYgMzMuNjIxNzQ3NSwxMS40NDg5Nzk2IEMzMi4wNDI5MjM5LDExLjQ0ODk3OTYgMzAuNzMwNTkzOCwxMi4wMDI1MzUgMjkuNjg2MDQyNCwxMy4xMzE0NTY3IEMyOC42NDEyMDU0LDE0LjI1OTgyNjIgMjguMTE4NjQ0MSwxNS43MzQ5NjE2IDI4LjExODY0NDEsMTcuNTY2OTQwMSBDMjguMTE4NjQ0MSwxOS4zNjA4MTg0IDI4LjYyMTA2ODQsMjAuODA3Mzc4OCAyOS42MjY5MTY4LDIxLjkxMzM4NTIgQzMwLjYzMjQ3OTYsMjMuMDE5OTQzOCAzMS45NDg1MjMsMjMuNTcxNDI4NiAzMy41NzQ5MDQsMjMuNTcxNDI4NiBDMzQuODA4MjU3MywyMy41NzE0Mjg2IDM1Ljg4MDIyOTIsMjMuMjQ4OTU4NCAzNi43OTE1MzM5LDIyLjYwNDcwODMgQzM3LjcwMzEyNDIsMjEuOTYwNzM0MiAzOC4zMTU4MDIsMjEuMTQ3MzgwNSAzOC42MzAxMzg2LDIwLjE2NDA5NSBMMzYuOTA5OTI3OCwxOS44MjI3MTI4IEMzNi4yODg5NjY3LDIxLjMzMzQ2MzUgMzUuMjIwNTY1MiwyMi4wODkyNTI5IDMzLjcwNDI5NDcsMjIuMDg5MjUyOSBDMzIuODYzNjgzNywyMi4wODkyNTI5IDMyLjA2NjM0NTYsMjEuODI4MDc0MiAzMS4zMTIyODA3LDIxLjIyMDY4MTcgQzMwLjU1ODA3MjksMjAuNjEzMDEzMiAzMC4xODA3NTQ3LDE5LjQwMDI5OSAzMC4xODA3NTQ3LDE3Ljc0Mzc3NDEgTDM4LjgzMDUwODUsMTcuNzQzNzc0MSBDMzguODA2OTQzOSwxNS41MzUwNzQzIDM4LjMyMTgwMDIsMTQuMDcwODQ0MyAzNy4zNzUyMjAyLDEzLjAzMDY4NDggTDM3LjM3NTIyMDIsMTMuMDMwNjg0OCBaIiBpZD0iU2hhcGUiIGZpbGw9IiM1REE3QTMiPjwvcGF0aD4KICAgICAgICAgICAgPHBhdGggZD0iTTQ4LjQzNjA2MzksMTIuMTMxMzMxIEM0Ny43NjA0NDM5LDExLjY3NjU3MTQgNDYuOTE5MzU2NiwxMS40NDg5Nzk2IDQ1Ljk1ODg0MjIsMTEuNDQ4OTc5NiBDNDQuMjkzMDQ0MywxMS40NDg5Nzk2IDQyLjk1MDQ1NjMsMTIuMjgxMTc0IDQxLjg2ODk3LDEzLjk0NTEzODggTDQxLjg2ODk3LDExLjY5NzA2ODggTDQwLjE2OTQ5MTUsMTEuNjk3MDY4OCBMNDAuMTY5NDkxNSwyMy41NzE0Mjg2IEw0Mi4wMjM0NjgxLDIzLjU3MTQyODYgTDQyLjAyMzQ2ODEsMTcuMDk0Mzg3NSBDNDIuMDIzNDY4MSwxNS44NzQwMTQ3IDQyLjM4NTkyMDUsMTQuODg5OTk4MiA0My4wNzg1MzUyLDE0LjE0MzE4NiBDNDMuNzcwNjg2NCwxMy4zOTY3OTggNDQuNjM1NDEyLDEzLjAyMzYwNCA0NS42NTUwOTkxLDEzLjAyMzYwNCBDNDYuMzk0NjgxMiwxMy4wMjM2MDQgNDcuMDQyODAwNSwxMy4yNDUyNTg2IDQ3LjU2MTE0MTUsMTMuNjg4NTY3OSBDNDguMDc5NjM2OSwxNC4xMzE1OTQ0IDQ4LjM1Nzg4NzksMTQuODk3NjMxNyA0OC4zNTc4ODc5LDE1Ljk4NjUzODQgTDQ4LjM1Nzg4NzksMjMuNTcxNDI4NiBMNTAuMjExODY0NCwyMy41NzE0Mjg2IEw1MC4yMTE4NjQ0LDE2Ljc0NDUxODEgQzUwLjIxMTg2NDQsMTUuMjU5Mzc1NSA1MC4wODE0NjgxLDE0LjIzMzA5MTkgNDkuODMwNDA4NywxMy42NjUyNDMyIEM0OS41Nzk2NTg0LDEzLjA5NzM5NDYgNDkuMTExODM4MywxMi41ODYwOTA1IDQ4LjQzNjA2MzksMTIuMTMxMzMxIFoiIGlkPSJTaGFwZSIgZmlsbD0iIzVEQTdBMyI+PC9wYXRoPgogICAgICAgICAgICA8cGF0aCBkPSJNNTcuNzMyOTYwNywxOS4zMjIyNzI0IEM1Ny43MzI5NjA3LDIwLjIxNjkxMjkgNTcuNjY0MDE3MywyMC44NjM1NjU5IDU3LjUyOTgzNDEsMjEuMjYzMjQ2NCBDNTcuMzk1MjIzNiwyMS42NjI0OTE5IDU3LjEzMTQxNTQsMjEuOTg3NjMxMSA1Ni43Mzk0MDY4LDIyLjIzOTM4OTIgQzU2LjM0NzY4MywyMi40OTA4NTczIDU1LjY5NjI4MiwyMi42MTYxNTYzIDU0Ljg2OTM4ODcsMjIuNjE2MTU2MyBDNTQuMjg4MDcwNywyMi42MTYxNTYzIDUzLjc0NDUwMDUsMjIuNTM4NTY5NSA1Mi44ODk4MzA1LDIyLjM4MzI1MSBMNTIuODg5ODMwNSwyMy45MzQ2OTYgQzUzLjc0NDUwMDUsMjQuMTQxMjA3MyA1NC4zNzg4MDgyLDI0LjI0NDg5OCA1NS4wOTc0NDMyLDI0LjI0NDg5OCBDNTYuNDM5NTYsMjQuMjQ0ODk4IDU3LjUzNTEwNDYsMjMuODgyNDg4MSA1OC4zNDc4OTU4LDIzLjE1ODM5MzQgQzU5LjE2MDQwMjEsMjIuNDMzODYzNyA1OS41ODQ3NDU4LDIxLjE1NDkxNSA1OS41ODQ3NDU4LDE5LjMyMTExMjMgTDU5LjU4NDc0NTgsOC43NTUxMDIwNCBMNTcuNzMyOTYwNyw4Ljc1NTEwMjA0IEw1Ny43MzI5NjA3LDE5LjMyMjI3MjQgWiIgaWQ9IlNoYXBlIiBmaWxsPSIjRkZGRkZGIj48L3BhdGg+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik02OS4yNDA4MTE5LDE2LjIyNTg5MDQgQzY4LjU2Njc1NzgsMTYuOTQyNzI2NiA2Ny43MzIxNTUyLDE3LjMwMTIxNiA2Ni43Mzc0MTk4LDE3LjMwMTIxNiBDNjUuODMzODMyNiwxNy4zMDEyMTYgNjUuMDQyMDMzNywxNi45OTE5NDIyIDY0LjM2MTA1MzQsMTYuMzczNTM3MyBDNjMuNjgwMjExNiwxNS43NTQ3MDQzIDYzLjMzOTcyMTUsMTQuOTE0MTg3MiA2My4zMzk3MjE1LDEzLjg1MTI3MjQgQzYzLjMzOTcyMTUsMTIuODYxOTY3MiA2My42NDY4Mjc1LDEyLjAyMjQ0ODUgNjQuMjYwNzYyNiwxMS4zMzQ5OTkxIEM2NC44NzQxNDM1LDEwLjY0NzEyMTYgNjUuNzEwNDA4NCwxMC4zMDMzMjU2IDY2Ljc2OTAwMzEsMTAuMzAzMzI1NiBDNjcuODEzMzI5OCwxMC4zMDMzMjU2IDY4LjY1NDk5NzEsMTAuNjM3ODQ5MSA2OS4yOTM0NTA4LDExLjMwNzYwOTUgQzY5LjkzMjE4MTUsMTEuOTc3MjI3MiA3MC4yNTE0Nzc2LDEyLjc3ODA4NjYgNzAuMjUxNDc3NiwxMy43MDkzMzE3IEM3MC4yNTE0Nzc2LDE0LjY3MDEwNjIgNjkuOTE0MzEyLDE1LjUwOTA1NDIgNjkuMjQwODExOSwxNi4yMjU4OTA0IE03MC44NTQ3NDYzLDEwLjcyNDE1NDggQzY5Ljg4ODI2OTYsOS40MTIwMjM1NyA2OC40OTgwNTAzLDguNzU1MTAyMDQgNjYuNjg0MjI2OCw4Ljc1NTEwMjA0IEM2NS4yMDI1ODIxLDguNzU1MTAyMDQgNjMuOTgzNDM5LDkuMjU3MjQ0MDEgNjMuMDI3NDkwMSwxMC4yNjExIEM2Mi4wNzA5ODcsMTEuMjY1MjQxMyA2MS41OTMyMjAzLDEyLjQ3MjgwNzEgNjEuNTkzMjIwMywxMy44ODQyMjU1IEM2MS41OTMyMjAzLDE1LjI3MzgxNzggNjIuMDQ3OTkyMiwxNi40Mzk1ODYgNjIuOTU4MzY3LDE3LjM4MTY3MjkgQzYzLjg2ODg4MDMsMTguMzIzNjE3IDY0Ljk5NDI0MzIsMTguNzk0ODAzMSA2Ni4zMzQ3MzI3LDE4Ljc5NDgwMzEgQzY4LjIzMzA1NTMsMTguNzk0ODAzMSA2OS42NTUxMzUsMTcuOTAwNzkwNiA3MC42MDA4MzMyLDE2LjExMzA1MTEgQzcwLjU3OTUwMDYsMTguMTU1MTQyNyA3MC4yMjEyNzk1LDE5Ljc3MjI2ODEgNjkuNTI2NTg1NCwyMC45NjM5OTkzIEM2OC44MzEzMzcyLDIyLjE1NjAxNTkgNjcuNzk1ODc1OSwyMi43NTE0NTM2IDY2LjQxOTUwODksMjIuNzUxNDUzNiBDNjUuMDAxNTg0OSwyMi43NTE0NTM2IDYzLjk5MjMwNDUsMjIuMDY1MDAyNyA2My4zOTIzNjAzLDIwLjY5MTM4NzYgTDYxLjk0MjI5ODksMjEuMjM2NjExMSBDNjIuNzA0MTc2OCwyMy4yNDIxODMyIDY0LjE4OTU2MTYsMjQuMjQ0ODk4IDY2LjM5ODczMDQsMjQuMjQ0ODk4IEM2OC4yODk0MzQyLDI0LjI0NDg5OCA2OS43NDY5NzU5LDIzLjQ5NzgxOTEgNzAuNzcwMTA4NiwyMi4wMDM1MTg4IEM3MS43OTMyNDEzLDIwLjUwOTA3NTggNzIuMzA1MDg0NywxOC41NTQ1NzM4IDcyLjMwNTA4NDcsMTYuMTQwMDEyNyBDNzIuMzA1MDg0NywxMy44NDIxNDI2IDcxLjgyMTYzODYsMTIuMDM2ODU2NiA3MC44NTQ3NDYzLDEwLjcyNDE1NDgiIGlkPSJTaGFwZSIgZmlsbD0iI0ZGRkZGRiI+PC9wYXRoPgogICAgICAgICAgICA8cGF0aCBkPSJNNDguODQzNzkwMSwyNC42NDQ3MTU3IEM0OS41NDM5Mzk0LDI1LjkwNTU0OTIgNTAuNDE5NDA5OCwyNy4wOTIxMjI5IDUxLjQ3MDIwMTMsMjguMTY3MjQ1MyBDNTcuNzY4MDE2NSwzNC42MTA5MTgyIDY3Ljk3ODc5MjcsMzQuNjEwOTE4MiA3NC4yNzY2MDc5LDI4LjE2NzI0NTMgQzgwLjU3NDQ2NCwyMS43MjM2MDAzIDgwLjU3NDQ2NCwxMS4yNzY0MDE4IDc0LjI3NjYwNzksNC44MzI3NTY4MyBDNjcuOTc4NzkyNywtMS42MTA5MTg5NCA1Ny43NjgwMTY1LC0xLjYxMDkxODk0IDUxLjQ3MDIwMTMsNC44MzI3NTY4MyBDNDkuNjA2NzAxNiw2LjczOTM5NzA0IDQ4LjI5NDU5ODMsOC45OTY1NjQ4MyA0Ny41MzM4OTgzLDExLjM5NjgyMjkgTDQ4LjM3MDI2NzIsMTEuNzc3ODE5NiBDNDkuMDgzNDMyNSw5LjQ3ODI5OTU2IDUwLjMzMTIyMjcsNy4zMTQ3NjEyMiA1Mi4xMTM2MzM1LDUuNDkxMDg4OTIgQzU4LjA1NjA5NDgsLTAuNTg4OTk5Mjg4IDY3LjY5MDcyMTIsLTAuNTg4OTk5Mjg4IDczLjYzMzE3NTcsNS40OTEwODg5MiBDNzkuNTc1NjcxMiwxMS41NzExNDM2IDc5LjU3NTY3MTIsMjEuNDI4ODU1NyA3My42MzMxNzU3LDI3LjUwODkxNDYgQzY3LjY5MDcyMTIsMzMuNTg4OTkzIDU4LjA1NjA5NDgsMzMuNTg4OTkzIDUyLjExMzYzMzUsMjcuNTA4OTE0NiBDNTEuMTQ0MDY3NywyNi41MTY4OTg3IDUwLjMzMjY5OTgsMjUuNDI0MzI2NyA0OS42Nzk1MTYxLDI0LjI2NDAwNzMgTDQ4Ljg0Mzc5MDEsMjQuNjQ0NzE1NyBaIiBpZD0iU2hhcGUiIGZpbGw9IiM1REE3QTMiPjwvcGF0aD4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==\"","module.exports = __webpack_public_path__ + \"static/adopt-open-jdk-7072a4c16b356c87671638dba5c860e9.png\";","var $export = require('./_export');\n// 19.1.2.3 / 15.2.3.7 Object.defineProperties(O, Properties)\n$export($export.S + $export.F * !require('./_descriptors'), 'Object', { defineProperties: require('./_object-dps') });\n","// Copyright (c) 2017, 2020 IBM Corp. and others\n\n// This program and the accompanying materials are made available under\n// the terms of the Eclipse Public License 2.0 which accompanies this\n// distribution and is available at https://www.eclipse.org/legal/epl-2.0/\n// or the Apache License, Version 2.0 which accompanies this distribution and\n// is available at https://www.apache.org/licenses/LICENSE-2.0.\n\n// This Source Code may also be made available under the following\n// Secondary Licenses when the conditions for such availability set\n// forth in the Eclipse Public License, v. 2.0 are satisfied: GNU\n// General Public License, version 2 with the GNU Classpath\n// Exception [1] and GNU General Public License, version 2 with the\n// OpenJDK Assembly Exception [2].\n\n// [1] https://www.gnu.org/software/classpath/license.html\n// [2] http://openjdk.java.net/legal/assembly-exception.html\n\n// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 OR LicenseRef-GPL-2.0 WITH Assembly-exception\n\n// The project website pages cannot be redistributed\n\n/** @jsx jsx */\n\n\nimport { jsx } from \"theme-ui\"\n\nconst Button = ({children, primary, link, target, widthChanged }) => {\n  const variant = primary ? \"buttons.primary\" : \"buttons.secondary\"\n  if (target) {\n    return (\n      <a href= {link} rel=\"noopener noreferrer\" target=\"_blank\"\n        sx={{\n          variant: variant,\n          display: \"flex\",\n          alignItems: \"center\",\n          justifyContent: \"center\",\n          textDecoration: \"none\",\n          width: widthChanged ? \"220px\" : \"190px\",\n        }}\n      >\n        {children}\n      </a>\n    )\n  } else {\n    return (\n      <a href= {link}\n        sx={{\n          variant: variant,\n          display: \"flex\",\n          alignItems: \"center\",\n          justifyContent: \"center\",\n          textDecoration: \"none\",\n          width: widthChanged ? \"220px\" : \"190px\",\n        }}\n      >\n        {children}\n      </a>\n    )\n  }\n}\n\nexport default Button\n","import \"core-js/modules/es6.array.is-array\";\nimport \"core-js/modules/es6.object.assign\";\nimport \"core-js/modules/es6.array.reduce\";\nimport \"core-js/modules/es6.array.map\";\nimport \"core-js/modules/es6.regexp.split\";\n\nvar get = function get(obj, key, def, p, undef) {\n  key = key && key.split ? key.split('.') : [key];\n\n  for (p = 0; p < key.length; p++) {\n    obj = obj ? obj[key[p]] : undef;\n  }\n\n  return obj === undef ? def : obj;\n};\n\nvar defaultBreakpoints = [40, 52, 64].map(function (n) {\n  return n + 'em';\n});\nvar defaultTheme = {\n  space: [0, 4, 8, 16, 32, 64, 128, 256, 512],\n  fontSizes: [12, 14, 16, 20, 24, 32, 48, 64, 72]\n};\nvar aliases = {\n  bg: 'backgroundColor',\n  m: 'margin',\n  mt: 'marginTop',\n  mr: 'marginRight',\n  mb: 'marginBottom',\n  ml: 'marginLeft',\n  mx: 'marginX',\n  my: 'marginY',\n  p: 'padding',\n  pt: 'paddingTop',\n  pr: 'paddingRight',\n  pb: 'paddingBottom',\n  pl: 'paddingLeft',\n  px: 'paddingX',\n  py: 'paddingY'\n};\nvar multiples = {\n  marginX: ['marginLeft', 'marginRight'],\n  marginY: ['marginTop', 'marginBottom'],\n  paddingX: ['paddingLeft', 'paddingRight'],\n  paddingY: ['paddingTop', 'paddingBottom'],\n  size: ['width', 'height']\n};\nvar scales = {\n  color: 'colors',\n  backgroundColor: 'colors',\n  borderColor: 'colors',\n  margin: 'space',\n  marginTop: 'space',\n  marginRight: 'space',\n  marginBottom: 'space',\n  marginLeft: 'space',\n  marginX: 'space',\n  marginY: 'space',\n  padding: 'space',\n  paddingTop: 'space',\n  paddingRight: 'space',\n  paddingBottom: 'space',\n  paddingLeft: 'space',\n  paddingX: 'space',\n  paddingY: 'space',\n  top: 'space',\n  right: 'space',\n  bottom: 'space',\n  left: 'space',\n  gridGap: 'space',\n  gridColumnGap: 'space',\n  gridRowGap: 'space',\n  gap: 'space',\n  columnGap: 'space',\n  rowGap: 'space',\n  fontFamily: 'fonts',\n  fontSize: 'fontSizes',\n  fontWeight: 'fontWeights',\n  lineHeight: 'lineHeights',\n  letterSpacing: 'letterSpacings',\n  border: 'borders',\n  borderTop: 'borders',\n  borderRight: 'borders',\n  borderBottom: 'borders',\n  borderLeft: 'borders',\n  borderWidth: 'borderWidths',\n  borderStyle: 'borderStyles',\n  borderRadius: 'radii',\n  borderTopRightRadius: 'radii',\n  borderTopLeftRadius: 'radii',\n  borderBottomRightRadius: 'radii',\n  borderBottomLeftRadius: 'radii',\n  borderTopWidth: 'borderWidths',\n  borderTopColor: 'colors',\n  borderTopStyle: 'borderStyles',\n  borderBottomWidth: 'borderWidths',\n  borderBottomColor: 'colors',\n  borderBottomStyle: 'borderStyles',\n  borderLeftWidth: 'borderWidths',\n  borderLeftColor: 'colors',\n  borderLeftStyle: 'borderStyles',\n  borderRightWidth: 'borderWidths',\n  borderRightColor: 'colors',\n  borderRightStyle: 'borderStyles',\n  outlineColor: 'colors',\n  boxShadow: 'shadows',\n  textShadow: 'shadows',\n  zIndex: 'zIndices',\n  width: 'sizes',\n  minWidth: 'sizes',\n  maxWidth: 'sizes',\n  height: 'sizes',\n  minHeight: 'sizes',\n  maxHeight: 'sizes',\n  flexBasis: 'sizes',\n  size: 'sizes',\n  // svg\n  fill: 'colors',\n  stroke: 'colors'\n};\n\nvar positiveOrNegative = function positiveOrNegative(scale, value) {\n  if (typeof value !== 'number' || value >= 0) {\n    return get(scale, value, value);\n  }\n\n  var absolute = Math.abs(value);\n  var n = get(scale, absolute, absolute);\n\n  if (typeof n === 'string') {\n    return '-' + n;\n  }\n\n  return n * -1;\n};\n\nvar transforms = ['margin', 'marginTop', 'marginRight', 'marginBottom', 'marginLeft', 'marginX', 'marginY', 'top', 'bottom', 'left', 'right'].reduce(function (acc, curr) {\n  var obj;\n  return Object.assign({}, acc, (obj = {}, obj[curr] = positiveOrNegative, obj));\n}, {});\n\nvar responsive = function responsive(styles) {\n  return function (theme) {\n    var next = {};\n    var breakpoints = get(theme, 'breakpoints', defaultBreakpoints);\n    var mediaQueries = [null].concat(breakpoints.map(function (n) {\n      return \"@media screen and (min-width: \" + n + \")\";\n    }));\n\n    for (var key in styles) {\n      var value = typeof styles[key] === 'function' ? styles[key](theme) : styles[key];\n\n      if (value == null) {\n        continue;\n      }\n\n      if (!Array.isArray(value)) {\n        next[key] = value;\n        continue;\n      }\n\n      for (var i = 0; i < value.slice(0, mediaQueries.length).length; i++) {\n        var media = mediaQueries[i];\n\n        if (!media) {\n          next[key] = value[i];\n          continue;\n        }\n\n        next[media] = next[media] || {};\n\n        if (value[i] == null) {\n          continue;\n        }\n\n        next[media][key] = value[i];\n      }\n    }\n\n    return next;\n  };\n};\n\nvar css = function css(args) {\n  return function (props) {\n    if (props === void 0) props = {};\n    var theme = Object.assign({}, defaultTheme, props.theme || props);\n    var result = {};\n    var obj = typeof args === 'function' ? args(theme) : args;\n    var styles = responsive(obj)(theme);\n\n    for (var key in styles) {\n      var x = styles[key];\n      var val = typeof x === 'function' ? x(theme) : x;\n\n      if (key === 'variant') {\n        var variant = css(get(theme, val))(theme);\n        result = Object.assign({}, result, variant);\n        continue;\n      }\n\n      if (val && typeof val === 'object') {\n        result[key] = css(val)(theme);\n        continue;\n      }\n\n      var prop = get(aliases, key, key);\n      var scaleName = get(scales, prop);\n      var scale = get(theme, scaleName, get(theme, prop, {}));\n      var transform = get(transforms, prop, get);\n      var value = transform(scale, val, val);\n\n      if (multiples[prop]) {\n        var dirs = multiples[prop];\n\n        for (var i = 0; i < dirs.length; i++) {\n          result[dirs[i]] = value;\n        }\n      } else {\n        result[prop] = value;\n      }\n    }\n\n    return result;\n  };\n};\n\nexport { get, css };","'use strict';\n\nrequire(\"core-js/modules/es6.function.name\");\n\nrequire(\"core-js/modules/es6.regexp.match\");\n\nrequire(\"core-js/modules/es6.regexp.to-string\");\n\nrequire(\"core-js/modules/es6.date.to-string\");\n\nrequire(\"core-js/modules/es6.regexp.constructor\");\n\nrequire(\"core-js/modules/web.dom.iterable\");\n\nrequire(\"core-js/modules/es6.array.iterator\");\n\nrequire(\"core-js/modules/es6.object.to-string\");\n\nrequire(\"core-js/modules/es6.object.keys\");\n\nrequire(\"core-js/modules/es6.array.is-array\");\n\nvar isArray = Array.isArray;\nvar keyList = Object.keys;\nvar hasProp = Object.prototype.hasOwnProperty;\nvar hasElementType = typeof Element !== 'undefined';\n\nfunction equal(a, b) {\n  // fast-deep-equal index.js 2.0.1\n  if (a === b) return true;\n\n  if (a && b && typeof a == 'object' && typeof b == 'object') {\n    var arrA = isArray(a),\n        arrB = isArray(b),\n        i,\n        length,\n        key;\n\n    if (arrA && arrB) {\n      length = a.length;\n      if (length != b.length) return false;\n\n      for (i = length; i-- !== 0;) {\n        if (!equal(a[i], b[i])) return false;\n      }\n\n      return true;\n    }\n\n    if (arrA != arrB) return false;\n    var dateA = a instanceof Date,\n        dateB = b instanceof Date;\n    if (dateA != dateB) return false;\n    if (dateA && dateB) return a.getTime() == b.getTime();\n    var regexpA = a instanceof RegExp,\n        regexpB = b instanceof RegExp;\n    if (regexpA != regexpB) return false;\n    if (regexpA && regexpB) return a.toString() == b.toString();\n    var keys = keyList(a);\n    length = keys.length;\n    if (length !== keyList(b).length) return false;\n\n    for (i = length; i-- !== 0;) {\n      if (!hasProp.call(b, keys[i])) return false;\n    } // end fast-deep-equal\n    // start react-fast-compare\n    // custom handling for DOM elements\n\n\n    if (hasElementType && a instanceof Element && b instanceof Element) return a === b; // custom handling for React\n\n    for (i = length; i-- !== 0;) {\n      key = keys[i];\n\n      if (key === '_owner' && a.$$typeof) {\n        // React-specific: avoid traversing React elements' _owner.\n        //  _owner contains circular references\n        // and is not needed when comparing the actual elements (and not their owners)\n        // .$$typeof and ._store on just reasonable markers of a react element\n        continue;\n      } else {\n        // all other properties should be traversed as usual\n        if (!equal(a[key], b[key])) return false;\n      }\n    } // end react-fast-compare\n    // fast-deep-equal index.js 2.0.1\n\n\n    return true;\n  }\n\n  return a !== a && b !== b;\n} // end fast-deep-equal\n\n\nmodule.exports = function exportedEqual(a, b) {\n  try {\n    return equal(a, b);\n  } catch (error) {\n    if (error.message && error.message.match(/stack|recursion/i) || error.number === -2146828260) {\n      // warn on circular references, don't crash\n      // browsers give this different errors name and messages:\n      // chrome/safari: \"RangeError\", \"Maximum call stack size exceeded\"\n      // firefox: \"InternalError\", too much recursion\"\n      // edge: \"Error\", \"Out of stack space\"\n      console.warn('Warning: react-fast-compare does not handle circular references.', error.name, error.message);\n      return false;\n    } // some other error. we should definitely know about these\n\n\n    throw error;\n  }\n};","module.exports = \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNTBweCIgaGVpZ2h0PSI3NXB4IiB2aWV3Qm94PSIwIDAgMTU3IDIzMSIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KICAgIDwhLS0gR2VuZXJhdG9yOiBTa2V0Y2ggNjEuMiAoODk2NTMpIC0gaHR0cHM6Ly9za2V0Y2guY29tIC0tPgogICAgPHRpdGxlPmVjbGlwc2VfaW5jdWJhdGlvbl92ZXJ0aWNhbF9zdmc8L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0iZWNsaXBzZV9pbmN1YmF0aW9uX3ZlcnRpY2FsX3N2ZyIgZmlsbC1ydWxlPSJub256ZXJvIj4KICAgICAgICAgICAgPGcgaWQ9Ikdyb3VwIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNy4wMDAwMDAsIDIxNC4wMDAwMDApIiBmaWxsPSIjRkZGRkZGIj4KICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJQYXRoIiBwb2ludHM9IjAuNzUgMC4zNCAxLjkyIDAuMzQgMS45MiAxNi4wMyAwLjc1IDE2LjAzIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSI1LjYyIDAuMzQgNi43MiAwLjM0IDE3LjU1IDEzLjk5IDE3LjU1IDAuMzQgMTguNjcgMC4zNCAxOC42NyAxNi4wMyAxNy44IDE2LjAzIDYuNzUgMi4wOSA2Ljc1IDE2LjAzIDUuNjMgMTYuMDMgNS42MyAwLjM0Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMjEuODYsOC4yMyBMMjEuODYsOC4xOSBDMjEuODYsMy43NSAyNS4xOCwwLjA4IDI5LjcxLDAuMDggQzMyLjUxLDAuMDggMzQuMTksMS4xMSAzNS44MSwyLjU5IEwzNC45OCwzLjQ0IEMzMy42MSwyLjEyIDMyLjA0LDEuMTMgMjkuNjksMS4xMyBDMjUuOTIsMS4xMyAyMy4wOCw0LjIgMjMuMDgsOC4xNSBMMjMuMDgsOC4xOSBDMjMuMDgsMTIuMTYgMjUuOTcsMTUuMjUgMjkuNzEsMTUuMjUgQzMxLjk3LDE1LjI1IDMzLjUyLDE0LjM3IDM1LjExLDEyLjgxIEwzNS44OSwxMy41NyBDMzQuMjMsMTUuMjEgMzIuNDQsMTYuMyAyOS42NiwxNi4zIEMyNS4xOCwxNi4zIDIxLjg2LDEyLjc0IDIxLjg2LDguMjMgWiIgaWQ9IlBhdGgiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0zOC40LDkuNTEgTDM4LjQsMC4zNCBMMzkuNTcsMC4zNCBMMzkuNTcsOS40IEMzOS41NywxMy4xIDQxLjU3LDE1LjIzIDQ0Ljg4LDE1LjIzIEM0OC4wNiwxNS4yMyA1MC4xLDEzLjMgNTAuMSw5LjUxIEw1MC4xLDAuMzQgTDUxLjI3LDAuMzQgTDUxLjI3LDkuMzcgQzUxLjI3LDEzLjg4IDQ4LjY1LDE2LjI3MDAzMTQgNDQuODQsMTYuMjcwMDMxNCBDNDEuMDcsMTYuMjggMzguNCwxMy45IDM4LjQsOS41MSBaIiBpZD0iUGF0aCI+PC9wYXRoPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTU0LjAyLDAuMzQgTDYwLjUsMC4zNCBDNjIuMjcsMC4zNCA2My43MSwwLjg2IDY0LjU4LDEuNzMgQzY1LjIzLDIuMzggNjUuNTksMy4yMSA2NS41OSw0LjIgTDY1LjU5LDQuMjQgQzY1LjU5LDYuMzcgNjQuMiw3LjQ1IDYyLjkyLDcuOTYgQzY0LjgsOC40NSA2Ni40Niw5LjUzIDY2LjQ2LDExLjcgTDY2LjQ2LDExLjc0IEM2Ni40NiwxNC4zNiA2NC4yMiwxNi4wMiA2MC44MywxNi4wMiBMNTQuMDIsMTYuMDIgTDU0LjAyLDAuMzQgTDU0LjAyLDAuMzQgWiBNNjQuNCw0LjMxIEM2NC40LDIuNTggNjIuOTksMS40MiA2MC40OCwxLjQyIEw1NS4xOSwxLjQyIEw1NS4xOSw3LjU4IEw2MC4zNyw3LjU4IEM2Mi43Miw3LjU4IDY0LjQsNi40NCA2NC40LDQuMzUgTDY0LjQsNC4zMSBaIE02MC41LDguNjYgTDU1LjE5LDguNjYgTDU1LjE5LDE0Ljk2IEw2MC44OCwxNC45NiBDNjMuNTcsMTQuOTYgNjUuMjcwMDQ0NCwxMy43MyA2NS4yNzAwNDQ0LDExLjc1IEw2NS4yNzAwNDQ0LDExLjcxIEM2NS4yOCw5Ljc4IDYzLjYsOC42NiA2MC41LDguNjYgWiIgaWQ9IlNoYXBlIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNzYuMjgsMC4yMyBMNzcuNCwwLjIzIEw4NC43MSwxNi4wMyBMODMuNDMsMTYuMDMgTDgxLjQ0LDExLjY0IEw3Mi4xOCwxMS42NCBMNzAuMTksMTYuMDMgTDY4Ljk4LDE2LjAzIEw3Ni4yOCwwLjIzIFogTTgwLjk0LDEwLjU5IEw3Ni44MiwxLjUxIEw3Mi42NywxMC41OSBMODAuOTQsMTAuNTkgWiIgaWQ9IlNoYXBlIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSI5MS4wNSAxLjQyIDg1LjU4IDEuNDIgODUuNTggMC4zNCA5Ny42OCAwLjM0IDk3LjY4IDEuNDIgOTIuMjEgMS40MiA5Mi4yMSAxNi4wMyA5MS4wNCAxNi4wMyA5MS4wNCAxLjQyIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSIxMDEuMjkgMC4zNCAxMDIuNDYgMC4zNCAxMDIuNDYgMTYuMDMgMTAxLjI5IDE2LjAzIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTA1LjkxLDguMjMgTDEwNS45MSw4LjE5IEMxMDUuOTEsMy45MSAxMDkuMDcsMC4wOCAxMTMuODIsMC4wOCBDMTE4LjU3LDAuMDggMTIxLjY5LDMuODcgMTIxLjY5LDguMTUgTDEyMS42OSw4LjE5IEMxMjEuNjksMTIuNDcgMTE4LjUzLDE2LjMgMTEzLjc4LDE2LjMgQzEwOS4wMywxNi4zIDEwNS45MSwxMi41MSAxMDUuOTEsOC4yMyBaIE0xMjAuNDgsOC4yMyBMMTIwLjQ4LDguMTkgQzEyMC40OCw0LjMxIDExNy42NiwxLjEzIDExMy43OCwxLjEzIEMxMDkuOSwxLjEzIDEwNy4xMiw0LjI3IDEwNy4xMiw4LjE1IEwxMDcuMTIsOC4xOSBDMTA3LjEyLDEyLjA3IDEwOS45NCwxNS4yNSAxMTMuODIsMTUuMjUgQzExNy43LDE1LjI1IDEyMC40OCwxMi4xMSAxMjAuNDgsOC4yMyBaIiBpZD0iU2hhcGUiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJQYXRoIiBwb2ludHM9IjEyNC44OSAwLjM0IDEyNS45OSAwLjM0IDEzNi44MiAxMy45OSAxMzYuODIgMC4zNCAxMzcuOTQgMC4zNCAxMzcuOTQgMTYuMDMgMTM3LjA3IDE2LjAzIDEyNi4wMiAyLjA5IDEyNi4wMiAxNi4wMyAxMjQuOSAxNi4wMyAxMjQuOSAwLjM0Ij48L3BvbHlnb24+CiAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgPHBhdGggZD0iTTU2LjY2LDE2Ni4yMyBDNTcuNTEsMTYzLjQ4IDYwLjQzLDE2MS40MyA2My45NCwxNjEuNDMgQzY1LjE0LDE2MS40MyA2Ni4yNSwxNjEuNjkgNjcuMjUsMTYyLjExIEM2OS40NiwxNjAuNjQgNzIuMTksMTU5Ljc2IDc1LjE3LDE1OS43NiBMNzUuMTksMTU5Ljc2IEM3Ni4xMSwxNTcuOSA3OC40OCwxNTYuNTcgODEuMywxNTYuNTcgQzgyLjA0LDE1Ni41NyA4Mi43NSwxNTYuNjcgODMuNDIsMTU2Ljg0IEM4My4zMywxNTQuNTYgODMuNjksMTUyLjE4IDg0LjU1LDE0OS42OCBDODUuNTUsMTQ2Ljc5IDg3LDE0NC4wMyA4OC41MiwxNDEuMjggQzg4LjE3LDEzNy4xNiA4Ny45LDEzMy41IDgyLjc0LDEzMiBDODAuODIsMTMxLjQ0IDc4LjgyLDEzMS4yNyA3Ni44NiwxMzEuMDQgTDc2Ljg1LDEzMS4wNCBMNzYuODUsMTMxLjAzIEM3Ni4wMSwxMzAuOTMgNzUuMTcsMTMwLjgxIDc0LjM1LDEzMC42NSBDNjAuMTgsMTQ1LjQxIDQwLjIsMTA5Ljk3IDQwLjIsMTA5Ljk3IEM4NC4zLDEwMy4xMyA3Ni4wMSwxMjUuNjEgNzYuMDEsMTI1LjYxIEM3Mi44MSwxMjQuMDUgNzEuOTMsMTIyLjA4IDY5LjQ5LDExOS43MyBDNjMuOTIsMTE0LjM4IDUwLjYyLDExMy40NCA1MC42MiwxMTMuNDQgQzY2LjU0LDExNy41MSA2OC43MSwxMjUuMjIgNzQuOTcsMTI3LjY5IEM3Ni4zOSwxMjguMDEgNzcuOSwxMjguMTMgNzkuMzUsMTI4LjI5IEM4Mi4xNSwxMjguNTkgODQuODksMTI5LjExIDg3LjIyLDEzMC42MSBDODkuNjMsMTMyLjE2IDkwLjcxLDEzNC4wOSA5MS4yNiwxMzYuMjYgQzkzLDEzMi45NCA5NC41LDEyOS41NiA5NS4wNywxMjUuOTIgQzk1LjgsMTIxLjI3IDk1LjEzLDExNS44OCA5MS44MywxMTIuMDcgQzg4Ljc4LDEwOC41NSA4NC42NiwxMDUuODkgODEuNCwxMDIuNTIgQzc3LjkyLDk4LjkxIDc1LjYxLDk0LjQ2IDc1LjUyLDg5LjcxIEM3My43Niw4NS44NiA3MC45LDgxLjM5IDY4LjI4LDc5LjY1IEM1Ni45LDkwLjM0IDQxLjksNjIuNTggNDEuOSw2Mi41OCBDNzYuODgsNTcuNyA3MS4xLDc1LjY3IDcxLjEsNzUuNjcgQzYyLjcsNjYuMjggNTIuMzEsNjcuMTIgNTIuMzEsNjcuMTIgQzYwLjcxLDY5Ljc5IDY3LjM0LDc1LjE1IDcxLjIsNzguODMgTDcxLjczLDc5LjM2IEM3My4zLDgxIDc0LjksODIuNzUgNzYuMjQsODQuNjMgQzc3LjYsNzkuNDggODAuNzcsNzIuMjcgODMuMjYsNjcuOTcgQzgzLjI2LDY3Ljk3IDkxLjY2LDUzLjE1IDEwNS44LDQzLjkgQzEwNS44LDQzLjkgOTUuMDIsNDUuMTQgODMuNDEsNjIuODkgQzgzLjQxLDYyLjg5IDY3Ljk5LDM4LjcgMTE3LjgzLDM0LjIzIEMxMTcuODMsMzQuMjMgMTE0LjQsNzguMTcgODcuNDUsNjkuNjMgQzgyLjc3LDc2LjY3IDc5LjcsODQuNzQgODAuMzMsOTAuNDIgQzgwLjk1LDk1Ljk2IDg0LjgzLDk5Ljg2IDg5LjExLDEwMy41IEM5MC4yNSw5Ny42NiA5NC40Niw5Mi42MyAxMDAuNjUsODkuODkgQzEwNS42LDg3LjkyIDExMi45LDg2LjAzIDExOS43Miw4NS42MiBDMTE5LjcyLDg1LjYyIDEwNi4zOSw4Mi41OCA5Ni4yNSw4OS41MSBDOTYuMjUsODkuNTEgOTYuNDIsNjkuMjIgMTMyLjM0LDgzLjk1IEMxMzIuMzQsODMuOTUgMTA2LjM0LDExMC4yOSA5Ny45OSw5NC41OSBDOTQuMDMsOTcuMiA5MS41MywxMDEuNTggOTIuMTgsMTA2LjExIEM5NC41LDEwOC4xNCA5Ni42NiwxMTAuMzMgOTcuOTcsMTEzLjAzIEM5OS44LDExNi44MiAxMDAuNDUsMTIxLjI0IDk5Ljk1LDEyNS4zNSBDOTguOTksMTMzLjI1IDk0LjA1LDEzOS45NyA5MC42NywxNDcuMTQgQzg5LjI5LDE1MC4wNiA4Ny45NywxNTMuMjcgODcuOTUsMTU2LjUxIEM4OS42NCwxNTYuMDQgOTEuNDcsMTU1Ljc4IDkzLjM5LDE1NS43OCBDMTAwLjYyLDE1NS43OCAxMDYuNzEsMTU5LjM3IDEwOC42OCwxNjQuMyBDMTExLjYxLDE2NC42MSAxMTMuOTIsMTY2LjMzIDExNC4zNCwxNjguNTEgQzExNi40NSwxNjkuODEgMTE4LjEyLDE3MS42MyAxMTkuMTMsMTczLjc1IEw1MC41NSwxNzMuNzUgQzUyLjAyLDE3MC42MiA1NC4xNCwxNjcuMTYgNTYuNjYsMTY2LjIzIiBpZD0iUGF0aCIgZmlsbD0iI0Y3OEQyQyI+PC9wYXRoPgogICAgICAgICAgICA8ZyBpZD0iR3JvdXAiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE3LjAwMDAwMCwgMTgyLjAwMDAwMCkiIGZpbGw9IiNGRkZGRkYiPgogICAgICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlBhdGgiIHBvaW50cz0iMC41NCAxLjM5IDE4LjU0IDEuMzkgMTguNTQgNS4yMSA0LjggNS4yMSA0LjggMTEuNTIgMTYuOTcgMTEuNTIgMTYuOTcgMTUuMzMgNC44IDE1LjMzIDQuOCAyMS44NSAxOC43MSAyMS44NSAxOC43MSAyNS42NyAwLjU0IDI1LjY3Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMjEuNTUsMTMuNiBMMjEuNTUsMTMuNTMgQzIxLjU1LDYuNjMgMjYuNzIsMC45NyAzNC4wNywwLjk3IEMzOC41NCwwLjk3IDQxLjI1LDIuNTMgNDMuNTcsNC43NSBMNDAuODMsNy45MSBDMzguODksNi4xMSAzNi44MSw0Ljg5IDM0LjAzLDQuODkgQzI5LjQyLDQuODkgMjYuMDIsOC43MSAyNi4wMiwxMy40NiBMMjYuMDIsMTMuNTMgQzI2LjAyLDE4LjI4IDI5LjM4LDIyLjEzIDM0LjAzLDIyLjEzIEMzNy4wMSwyMi4xMyAzOC45MiwyMC45NSA0MSwxOS4wMSBMNDMuNzQsMjEuNzggQzQxLjIxLDI0LjQyIDM4LjQzLDI2LjA4MDAxMzYgMzMuODksMjYuMDgwMDEzNiBDMjYuODMsMjYuMDkgMjEuNTUsMjAuNTcgMjEuNTUsMTMuNiBaIiBpZD0iUGF0aCI+PC9wYXRoPgogICAgICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlBhdGgiIHBvaW50cz0iNDcuMjIgMS4zOSA1MS40OSAxLjM5IDUxLjQ5IDIxLjc4IDY0LjI1IDIxLjc4IDY0LjI1IDI1LjY2IDQ3LjIyIDI1LjY2Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSI2Ny45MyAxLjM5IDcyLjIgMS4zOSA3Mi4yIDI1LjY3IDY3LjkzIDI1LjY3Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNzcuNjcsMS4zOSBMODcuMjQsMS4zOSBDOTIuOTMsMS4zOSA5Ni40Nyw0LjYyIDk2LjQ3LDkuNTEgTDk2LjQ3LDkuNTggQzk2LjQ3LDE1LjAzIDkyLjEsMTcuODcgODYuNzYsMTcuODcgTDgxLjk0LDE3Ljg3IEw4MS45NCwyNS42NyBMNzcuNjcsMjUuNjcgTDc3LjY3LDEuMzkgWiBNODYuOSwxNC4wMiBDOTAuMTMsMTQuMDIgOTIuMTQsMTIuMjIgOTIuMTQsOS42OCBMOTIuMTQsOS42MSBDOTIuMTQsNi43NyA5MC4wOSw1LjI4IDg2LjksNS4yOCBMODEuOTQsNS4yOCBMODEuOTQsMTQuMDIgTDg2LjksMTQuMDIgWiIgaWQ9IlNoYXBlIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNOTguMjEsMjIuMTMgTDEwMC43OCwxOS4wOCBDMTAzLjEsMjEuMDkgMTA1LjQ2LDIyLjI0IDEwOC40NSwyMi4yNCBDMTExLjA5LDIyLjI0IDExMi43NSwyMC45OSAxMTIuNzUsMTkuMTkgTDExMi43NSwxOS4xMiBDMTEyLjc1LDE3LjM5IDExMS43OCwxNi40NSAxMDcuMjcsMTUuNDEgQzEwMi4xLDE0LjE2IDk5LjE5LDEyLjY0IDk5LjE5LDguMTYgTDk5LjE5LDguMDkgQzk5LjE5LDMuOTMgMTAyLjY2LDEuMDUgMTA3LjQ4LDEuMDUgQzExMS4wMiwxLjA1IDExMy44MywyLjEzIDExNi4yOSw0LjEgTDExNCw3LjMzIEMxMTEuODEsNS43IDEwOS42Myw0LjgzIDEwNy40MSw0LjgzIEMxMDQuOTEsNC44MyAxMDMuNDYsNi4xMSAxMDMuNDYsNy43MSBMMTAzLjQ2LDcuNzggQzEwMy40Niw5LjY1IDEwNC41NywxMC40OSAxMDkuMjUsMTEuNiBDMTE0LjM4LDEyLjg1IDExNy4wMiwxNC42OSAxMTcuMDIsMTguNzEgTDExNy4wMiwxOC43OCBDMTE3LjAyLDIzLjMyIDExMy40NSwyNi4wMyAxMDguMzUsMjYuMDMgQzEwNC42MiwyNi4wMiAxMDEuMTIsMjQuNzMgOTguMjEsMjIuMTMgWiIgaWQ9IlBhdGgiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJQYXRoIiBwb2ludHM9IjEyMC45OSAxLjM5IDEzOC45OSAxLjM5IDEzOC45OSA1LjIxIDEyNS4yNiA1LjIxIDEyNS4yNiAxMS41MiAxMzcuNDMgMTEuNTIgMTM3LjQzIDE1LjMzIDEyNS4yNiAxNS4zMyAxMjUuMjYgMjEuODUgMTM5LjE3IDIxLjg1IDEzOS4xNyAyNS42NyAxMjEgMjUuNjcgMTIxIDEuMzkiPjwvcG9seWdvbj4KICAgICAgICAgICAgPC9nPgogICAgICAgICAgICA8cGF0aCBkPSJNMjEuNjYsMzkuOTkgQzQxLjI2LDkuNDIgODAuNSwtMS4yNSAxMTMuMjMsMTMuNDQgQzExMi41MSwxMi45NCAxMTEuNzgsMTIuNDMgMTExLjAzLDExLjk1IEM3Ny41MiwtOS41NCAzMi45OCwwLjExIDExLjU2LDMzLjUyIEMtOS44Nyw2Ni45MiAtMC4wNiwxMTEuNDMgMzMuNDUsMTMyLjkyIEMzNC4yLDEzMy40IDM0Ljk2LDEzMy44NSAzNS43MiwxMzQuMyBDOC43MywxMTAuNjggMi4wNiw3MC41NiAyMS42NiwzOS45OSIgaWQ9IlBhdGgiIGZpbGw9IiNGNzhEMkMiPjwvcGF0aD4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==\"","require(\"core-js/modules/es6.array.reduce\");\n\nrequire(\"core-js/modules/web.dom.iterable\");\n\nrequire(\"core-js/modules/es6.array.iterator\");\n\nrequire(\"core-js/modules/es6.object.to-string\");\n\nrequire(\"core-js/modules/es6.object.keys\");\n\nrequire(\"core-js/modules/es6.array.map\");\n\nexports.__esModule = true;\nvar ATTRIBUTE_NAMES = exports.ATTRIBUTE_NAMES = {\n  BODY: \"bodyAttributes\",\n  HTML: \"htmlAttributes\",\n  TITLE: \"titleAttributes\"\n};\nvar TAG_NAMES = exports.TAG_NAMES = {\n  BASE: \"base\",\n  BODY: \"body\",\n  HEAD: \"head\",\n  HTML: \"html\",\n  LINK: \"link\",\n  META: \"meta\",\n  NOSCRIPT: \"noscript\",\n  SCRIPT: \"script\",\n  STYLE: \"style\",\n  TITLE: \"title\"\n};\nvar VALID_TAG_NAMES = exports.VALID_TAG_NAMES = Object.keys(TAG_NAMES).map(function (name) {\n  return TAG_NAMES[name];\n});\nvar TAG_PROPERTIES = exports.TAG_PROPERTIES = {\n  CHARSET: \"charset\",\n  CSS_TEXT: \"cssText\",\n  HREF: \"href\",\n  HTTPEQUIV: \"http-equiv\",\n  INNER_HTML: \"innerHTML\",\n  ITEM_PROP: \"itemprop\",\n  NAME: \"name\",\n  PROPERTY: \"property\",\n  REL: \"rel\",\n  SRC: \"src\"\n};\nvar REACT_TAG_MAP = exports.REACT_TAG_MAP = {\n  accesskey: \"accessKey\",\n  charset: \"charSet\",\n  \"class\": \"className\",\n  contenteditable: \"contentEditable\",\n  contextmenu: \"contextMenu\",\n  \"http-equiv\": \"httpEquiv\",\n  itemprop: \"itemProp\",\n  tabindex: \"tabIndex\"\n};\nvar HELMET_PROPS = exports.HELMET_PROPS = {\n  DEFAULT_TITLE: \"defaultTitle\",\n  DEFER: \"defer\",\n  ENCODE_SPECIAL_CHARACTERS: \"encodeSpecialCharacters\",\n  ON_CHANGE_CLIENT_STATE: \"onChangeClientState\",\n  TITLE_TEMPLATE: \"titleTemplate\"\n};\nvar HTML_TAG_MAP = exports.HTML_TAG_MAP = Object.keys(REACT_TAG_MAP).reduce(function (obj, key) {\n  obj[REACT_TAG_MAP[key]] = key;\n  return obj;\n}, {});\nvar SELF_CLOSING_TAGS = exports.SELF_CLOSING_TAGS = [TAG_NAMES.NOSCRIPT, TAG_NAMES.SCRIPT, TAG_NAMES.STYLE];\nvar HELMET_ATTRIBUTE = exports.HELMET_ATTRIBUTE = \"data-react-helmet\";","'use strict';\n\nfunction checkDCE() {\n  /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\n  if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' || typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function') {\n    return;\n  }\n\n  if (process.env.NODE_ENV !== 'production') {\n    // This branch is unreachable because this function is only called\n    // in production, but the condition is true only in development.\n    // Therefore if the branch is still here, dead code elimination wasn't\n    // properly applied.\n    // Don't change the message. React DevTools relies on it. Also make sure\n    // this message doesn't occur elsewhere in this function, or it will cause\n    // a false positive.\n    throw new Error('^_^');\n  }\n\n  try {\n    // Verify that the code above has been dead code eliminated (DCE'd).\n    __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);\n  } catch (err) {\n    // DevTools shouldn't crash React, no matter what.\n    // We should still report in case we break this code.\n    console.error(err);\n  }\n}\n\nif (process.env.NODE_ENV === 'production') {\n  // DCE check should happen before ReactDOM bundle executes so that\n  // DevTools can report bad minification during injection.\n  checkDCE();\n  module.exports = require('./cjs/react-dom.production.min.js');\n} else {\n  module.exports = require('./cjs/react-dom.development.js');\n}","// https://github.com/tc39/proposal-object-getownpropertydescriptors\nvar $export = require('./_export');\nvar ownKeys = require('./_own-keys');\nvar toIObject = require('./_to-iobject');\nvar gOPD = require('./_object-gopd');\nvar createProperty = require('./_create-property');\n\n$export($export.S, 'Object', {\n  getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object) {\n    var O = toIObject(object);\n    var getDesc = gOPD.f;\n    var keys = ownKeys(O);\n    var result = {};\n    var i = 0;\n    var key, desc;\n    while (keys.length > i) {\n      desc = getDesc(O, key = keys[i++]);\n      if (desc !== undefined) createProperty(result, key, desc);\n    }\n    return result;\n  }\n});\n","// all object keys, includes non-enumerable and symbols\nvar gOPN = require('./_object-gopn');\nvar gOPS = require('./_object-gops');\nvar anObject = require('./_an-object');\nvar Reflect = require('./_global').Reflect;\nmodule.exports = Reflect && Reflect.ownKeys || function ownKeys(it) {\n  var keys = gOPN.f(anObject(it));\n  var getSymbols = gOPS.f;\n  return getSymbols ? keys.concat(getSymbols(it)) : keys;\n};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react.production.min.js');\n} else {\n  module.exports = require('./cjs/react.development.js');\n}","'use strict';\n// B.2.3.10 String.prototype.link(url)\nrequire('./_string-html')('link', function (createHTML) {\n  return function link(url) {\n    return createHTML(this, 'a', 'href', url);\n  };\n});\n","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIyNXB4IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgogPCEtLSBDcmVhdGVkIHdpdGggTWV0aG9kIERyYXcgLSBodHRwOi8vZ2l0aHViLmNvbS9kdW9waXhlbC9NZXRob2QtRHJhdy8gLS0+CgogPGc+CiAgPHRpdGxlPmJhY2tncm91bmQ8L3RpdGxlPgogIDxyZWN0IGZpbGw9Im5vbmUiIGlkPSJjYW52YXNfYmFja2dyb3VuZCIgaGVpZ2h0PSIyNiIgd2lkdGg9IjI2IiB5PSItMSIgeD0iLTEiLz4KICA8ZyBkaXNwbGF5PSJub25lIiBvdmVyZmxvdz0idmlzaWJsZSIgeT0iMCIgeD0iMCIgaGVpZ2h0PSIxMDAlIiB3aWR0aD0iMTAwJSIgaWQ9ImNhbnZhc0dyaWQiPgogICA8cmVjdCBmaWxsPSJ1cmwoI2dyaWRwYXR0ZXJuKSIgc3Ryb2tlLXdpZHRoPSIwIiB5PSIxIiB4PSIxIiBoZWlnaHQ9IjIyIiB3aWR0aD0iMjIiLz4KICA8L2c+CiA8L2c+CiA8Zz4KICA8dGl0bGU+TGF5ZXIgMTwvdGl0bGU+CiAgPGVsbGlwc2Ugcnk9IjExIiByeD0iMTEiIGlkPSJzdmdfMSIgY3k9IjEyIiBjeD0iMTIiIHN0cm9rZT0iI0ZGRiIgZmlsbD0iI0ZGRkZGRiIvPgogIDxzdHlsZSB0cmFuc2Zvcm09Im1hdHJpeCgwLjA2NTE4MjQ5NTU3MzI1MzYyLDAsMCwwLjA2NTE4MjQ5NTU3MzI1MzYyLDAsMCkgIiB0eXBlPSJ0ZXh0L2NzcyI+LnN0MHtmaWxsOiM0MzQzNDM7fTwvc3R5bGU+CiAgPGcgc3Ryb2tlPSJudWxsIiBpZD0ic3ZnXzE5Ij4KICAgPGcgc3Ryb2tlPSJudWxsIiB0cmFuc2Zvcm09Im1hdHJpeCgwLjEzMDE1NTgwODUxODA5NDg2LDAsMCwwLjEzMDE1NTgwODUxODA5NDg2LC02Ljg0OTAwNjQ1MDQwNTQ5OSwtNi44MzE1MDczOTEwMjE5MjQpICIgaWQ9InN2Z182Ij4KICAgIDxnIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z183Ij4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfOCIgZD0ibTExMC4yOTgyOTIsMTYxLjI5MzAxMWMwLDcuMSAtNS44LDEyLjkgLTEyLjksMTIuOXMtMTIuOSwtNS44IC0xMi45LC0xMi45YzAsLTcuMSA1LjgsLTEyLjkgMTIuOSwtMTIuOWwxMi45LDBsMCwxMi45eiIgY2xhc3M9InN0MCIvPgogICAgIDxwYXRoIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z185IiBkPSJtMTE2Ljc5ODI5MiwxNjEuMjkzMDExYzAsLTcuMSA1LjgsLTEyLjkgMTIuOSwtMTIuOXMxMi45LDUuOCAxMi45LDEyLjlsMCwzMi4zYzAsNy4xIC01LjgsMTIuOSAtMTIuOSwxMi45cy0xMi45LC01LjggLTEyLjksLTEyLjljMCwwIDAsLTMyLjMgMCwtMzIuM3oiIGNsYXNzPSJzdDAiLz4KICAgIDwvZz4KICAgIDxnIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z18xMCI+CiAgICAgPHBhdGggc3Ryb2tlPSJudWxsIiBpZD0ic3ZnXzExIiBkPSJtMTI5LjY5ODI5MiwxMDkuNDkzMDExYy03LjEsMCAtMTIuOSwtNS44IC0xMi45LC0xMi45czUuOCwtMTIuOSAxMi45LC0xMi45czEyLjksNS44IDEyLjksMTIuOWwwLDEyLjlsLTEyLjksMHoiIGNsYXNzPSJzdDAiLz4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTIiIGQ9Im0xMjkuNjk4MjkyLDExNS45OTMwMTFjNy4xLDAgMTIuOSw1LjggMTIuOSwxMi45cy01LjgsMTIuOSAtMTIuOSwxMi45bC0zMi4zLDBjLTcuMSwwIC0xMi45LC01LjggLTEyLjksLTEyLjlzNS44LC0xMi45IDEyLjksLTEyLjljMCwwIDMyLjMsMCAzMi4zLDB6IiBjbGFzcz0ic3QwIi8+CiAgICA8L2c+CiAgICA8ZyBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTMiPgogICAgIDxwYXRoIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z18xNCIgZD0ibTE4MS40OTgyOTIsMTI4Ljg5MzAxMWMwLC03LjEgNS44LC0xMi45IDEyLjksLTEyLjljNy4xLDAgMTIuOSw1LjggMTIuOSwxMi45cy01LjgsMTIuOSAtMTIuOSwxMi45bC0xMi45LDBsMCwtMTIuOXoiIGNsYXNzPSJzdDAiLz4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTUiIGQ9Im0xNzQuOTk4MjkyLDEyOC44OTMwMTFjMCw3LjEgLTUuOCwxMi45IC0xMi45LDEyLjljLTcuMSwwIC0xMi45LC01LjggLTEyLjksLTEyLjlsMCwtMzIuM2MwLC03LjEgNS44LC0xMi45IDEyLjksLTEyLjljNy4xLDAgMTIuOSw1LjggMTIuOSwxMi45bDAsMzIuM3oiIGNsYXNzPSJzdDAiLz4KICAgIDwvZz4KICAgIDxnIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z18xNiI+CiAgICAgPHBhdGggc3Ryb2tlPSJudWxsIiBpZD0ic3ZnXzE3IiBkPSJtMTYyLjA5ODI5MiwxODAuNjkzMDExYzcuMSwwIDEyLjksNS44IDEyLjksMTIuOWMwLDcuMSAtNS44LDEyLjkgLTEyLjksMTIuOWMtNy4xLDAgLTEyLjksLTUuOCAtMTIuOSwtMTIuOWwwLC0xMi45bDEyLjksMHoiIGNsYXNzPSJzdDAiLz4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTgiIGQ9Im0xNjIuMDk4MjkyLDE3NC4xOTMwMTFjLTcuMSwwIC0xMi45LC01LjggLTEyLjksLTEyLjljMCwtNy4xIDUuOCwtMTIuOSAxMi45LC0xMi45bDMyLjMsMGM3LjEsMCAxMi45LDUuOCAxMi45LDEyLjljMCw3LjEgLTUuOCwxMi45IC0xMi45LDEyLjlsLTMyLjMsMHoiIGNsYXNzPSJzdDAiLz4KICAgIDwvZz4KICAgPC9nPgogIDwvZz4KIDwvZz4KPC9zdmc+\"","require(\"core-js/modules/es6.array.some\");\n\nrequire(\"core-js/modules/es6.regexp.split\");\n\nrequire(\"core-js/modules/es6.date.now\");\n\nrequire(\"core-js/modules/es6.array.for-each\");\n\nrequire(\"core-js/modules/es6.array.is-array\");\n\nrequire(\"core-js/modules/es6.array.index-of\");\n\nrequire(\"core-js/modules/web.dom.iterable\");\n\nrequire(\"core-js/modules/es6.array.iterator\");\n\nrequire(\"core-js/modules/es6.object.to-string\");\n\nrequire(\"core-js/modules/es6.object.keys\");\n\nrequire(\"core-js/modules/es6.array.filter\");\n\nrequire(\"core-js/modules/es6.array.map\");\n\nrequire(\"core-js/modules/es6.array.reduce\");\n\nrequire(\"core-js/modules/es6.regexp.replace\");\n\nrequire(\"core-js/modules/es6.object.assign\");\n\nrequire(\"core-js/modules/es7.symbol.async-iterator\");\n\nrequire(\"core-js/modules/es6.symbol\");\n\nexports.__esModule = true;\nexports.warn = exports.requestAnimationFrame = exports.reducePropsToState = exports.mapStateOnServer = exports.handleClientStateChange = exports.convertReactPropstoHtmlAttributes = undefined;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n  return typeof obj;\n} : function (obj) {\n  return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n};\n\nvar _extends = Object.assign || function (target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments[i];\n\n    for (var key in source) {\n      if (Object.prototype.hasOwnProperty.call(source, key)) {\n        target[key] = source[key];\n      }\n    }\n  }\n\n  return target;\n};\n\nvar _react = require(\"react\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _objectAssign = require(\"object-assign\");\n\nvar _objectAssign2 = _interopRequireDefault(_objectAssign);\n\nvar _HelmetConstants = require(\"./HelmetConstants.js\");\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    \"default\": obj\n  };\n}\n\nvar encodeSpecialCharacters = function encodeSpecialCharacters(str) {\n  var encode = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n  if (encode === false) {\n    return String(str);\n  }\n\n  return String(str).replace(/&/g, \"&amp;\").replace(/</g, \"&lt;\").replace(/>/g, \"&gt;\").replace(/\"/g, \"&quot;\").replace(/'/g, \"&#x27;\");\n};\n\nvar getTitleFromPropsList = function getTitleFromPropsList(propsList) {\n  var innermostTitle = getInnermostProperty(propsList, _HelmetConstants.TAG_NAMES.TITLE);\n  var innermostTemplate = getInnermostProperty(propsList, _HelmetConstants.HELMET_PROPS.TITLE_TEMPLATE);\n\n  if (innermostTemplate && innermostTitle) {\n    // use function arg to avoid need to escape $ characters\n    return innermostTemplate.replace(/%s/g, function () {\n      return innermostTitle;\n    });\n  }\n\n  var innermostDefaultTitle = getInnermostProperty(propsList, _HelmetConstants.HELMET_PROPS.DEFAULT_TITLE);\n  return innermostTitle || innermostDefaultTitle || undefined;\n};\n\nvar getOnChangeClientState = function getOnChangeClientState(propsList) {\n  return getInnermostProperty(propsList, _HelmetConstants.HELMET_PROPS.ON_CHANGE_CLIENT_STATE) || function () {};\n};\n\nvar getAttributesFromPropsList = function getAttributesFromPropsList(tagType, propsList) {\n  return propsList.filter(function (props) {\n    return typeof props[tagType] !== \"undefined\";\n  }).map(function (props) {\n    return props[tagType];\n  }).reduce(function (tagAttrs, current) {\n    return _extends({}, tagAttrs, current);\n  }, {});\n};\n\nvar getBaseTagFromPropsList = function getBaseTagFromPropsList(primaryAttributes, propsList) {\n  return propsList.filter(function (props) {\n    return typeof props[_HelmetConstants.TAG_NAMES.BASE] !== \"undefined\";\n  }).map(function (props) {\n    return props[_HelmetConstants.TAG_NAMES.BASE];\n  }).reverse().reduce(function (innermostBaseTag, tag) {\n    if (!innermostBaseTag.length) {\n      var keys = Object.keys(tag);\n\n      for (var i = 0; i < keys.length; i++) {\n        var attributeKey = keys[i];\n        var lowerCaseAttributeKey = attributeKey.toLowerCase();\n\n        if (primaryAttributes.indexOf(lowerCaseAttributeKey) !== -1 && tag[lowerCaseAttributeKey]) {\n          return innermostBaseTag.concat(tag);\n        }\n      }\n    }\n\n    return innermostBaseTag;\n  }, []);\n};\n\nvar getTagsFromPropsList = function getTagsFromPropsList(tagName, primaryAttributes, propsList) {\n  // Calculate list of tags, giving priority innermost component (end of the propslist)\n  var approvedSeenTags = {};\n  return propsList.filter(function (props) {\n    if (Array.isArray(props[tagName])) {\n      return true;\n    }\n\n    if (typeof props[tagName] !== \"undefined\") {\n      warn(\"Helmet: \" + tagName + \" should be of type \\\"Array\\\". Instead found type \\\"\" + _typeof(props[tagName]) + \"\\\"\");\n    }\n\n    return false;\n  }).map(function (props) {\n    return props[tagName];\n  }).reverse().reduce(function (approvedTags, instanceTags) {\n    var instanceSeenTags = {};\n    instanceTags.filter(function (tag) {\n      var primaryAttributeKey = void 0;\n      var keys = Object.keys(tag);\n\n      for (var i = 0; i < keys.length; i++) {\n        var attributeKey = keys[i];\n        var lowerCaseAttributeKey = attributeKey.toLowerCase(); // Special rule with link tags, since rel and href are both primary tags, rel takes priority\n\n        if (primaryAttributes.indexOf(lowerCaseAttributeKey) !== -1 && !(primaryAttributeKey === _HelmetConstants.TAG_PROPERTIES.REL && tag[primaryAttributeKey].toLowerCase() === \"canonical\") && !(lowerCaseAttributeKey === _HelmetConstants.TAG_PROPERTIES.REL && tag[lowerCaseAttributeKey].toLowerCase() === \"stylesheet\")) {\n          primaryAttributeKey = lowerCaseAttributeKey;\n        } // Special case for innerHTML which doesn't work lowercased\n\n\n        if (primaryAttributes.indexOf(attributeKey) !== -1 && (attributeKey === _HelmetConstants.TAG_PROPERTIES.INNER_HTML || attributeKey === _HelmetConstants.TAG_PROPERTIES.CSS_TEXT || attributeKey === _HelmetConstants.TAG_PROPERTIES.ITEM_PROP)) {\n          primaryAttributeKey = attributeKey;\n        }\n      }\n\n      if (!primaryAttributeKey || !tag[primaryAttributeKey]) {\n        return false;\n      }\n\n      var value = tag[primaryAttributeKey].toLowerCase();\n\n      if (!approvedSeenTags[primaryAttributeKey]) {\n        approvedSeenTags[primaryAttributeKey] = {};\n      }\n\n      if (!instanceSeenTags[primaryAttributeKey]) {\n        instanceSeenTags[primaryAttributeKey] = {};\n      }\n\n      if (!approvedSeenTags[primaryAttributeKey][value]) {\n        instanceSeenTags[primaryAttributeKey][value] = true;\n        return true;\n      }\n\n      return false;\n    }).reverse().forEach(function (tag) {\n      return approvedTags.push(tag);\n    }); // Update seen tags with tags from this instance\n\n    var keys = Object.keys(instanceSeenTags);\n\n    for (var i = 0; i < keys.length; i++) {\n      var attributeKey = keys[i];\n      var tagUnion = (0, _objectAssign2[\"default\"])({}, approvedSeenTags[attributeKey], instanceSeenTags[attributeKey]);\n      approvedSeenTags[attributeKey] = tagUnion;\n    }\n\n    return approvedTags;\n  }, []).reverse();\n};\n\nvar getInnermostProperty = function getInnermostProperty(propsList, property) {\n  for (var i = propsList.length - 1; i >= 0; i--) {\n    var props = propsList[i];\n\n    if (props.hasOwnProperty(property)) {\n      return props[property];\n    }\n  }\n\n  return null;\n};\n\nvar reducePropsToState = function reducePropsToState(propsList) {\n  return {\n    baseTag: getBaseTagFromPropsList([_HelmetConstants.TAG_PROPERTIES.HREF], propsList),\n    bodyAttributes: getAttributesFromPropsList(_HelmetConstants.ATTRIBUTE_NAMES.BODY, propsList),\n    defer: getInnermostProperty(propsList, _HelmetConstants.HELMET_PROPS.DEFER),\n    encode: getInnermostProperty(propsList, _HelmetConstants.HELMET_PROPS.ENCODE_SPECIAL_CHARACTERS),\n    htmlAttributes: getAttributesFromPropsList(_HelmetConstants.ATTRIBUTE_NAMES.HTML, propsList),\n    linkTags: getTagsFromPropsList(_HelmetConstants.TAG_NAMES.LINK, [_HelmetConstants.TAG_PROPERTIES.REL, _HelmetConstants.TAG_PROPERTIES.HREF], propsList),\n    metaTags: getTagsFromPropsList(_HelmetConstants.TAG_NAMES.META, [_HelmetConstants.TAG_PROPERTIES.NAME, _HelmetConstants.TAG_PROPERTIES.CHARSET, _HelmetConstants.TAG_PROPERTIES.HTTPEQUIV, _HelmetConstants.TAG_PROPERTIES.PROPERTY, _HelmetConstants.TAG_PROPERTIES.ITEM_PROP], propsList),\n    noscriptTags: getTagsFromPropsList(_HelmetConstants.TAG_NAMES.NOSCRIPT, [_HelmetConstants.TAG_PROPERTIES.INNER_HTML], propsList),\n    onChangeClientState: getOnChangeClientState(propsList),\n    scriptTags: getTagsFromPropsList(_HelmetConstants.TAG_NAMES.SCRIPT, [_HelmetConstants.TAG_PROPERTIES.SRC, _HelmetConstants.TAG_PROPERTIES.INNER_HTML], propsList),\n    styleTags: getTagsFromPropsList(_HelmetConstants.TAG_NAMES.STYLE, [_HelmetConstants.TAG_PROPERTIES.CSS_TEXT], propsList),\n    title: getTitleFromPropsList(propsList),\n    titleAttributes: getAttributesFromPropsList(_HelmetConstants.ATTRIBUTE_NAMES.TITLE, propsList)\n  };\n};\n\nvar rafPolyfill = function () {\n  var clock = Date.now();\n  return function (callback) {\n    var currentTime = Date.now();\n\n    if (currentTime - clock > 16) {\n      clock = currentTime;\n      callback(currentTime);\n    } else {\n      setTimeout(function () {\n        rafPolyfill(callback);\n      }, 0);\n    }\n  };\n}();\n\nvar cafPolyfill = function cafPolyfill(id) {\n  return clearTimeout(id);\n};\n\nvar requestAnimationFrame = typeof window !== \"undefined\" ? window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || rafPolyfill : global.requestAnimationFrame || rafPolyfill;\nvar cancelAnimationFrame = typeof window !== \"undefined\" ? window.cancelAnimationFrame || window.webkitCancelAnimationFrame || window.mozCancelAnimationFrame || cafPolyfill : global.cancelAnimationFrame || cafPolyfill;\n\nvar warn = function warn(msg) {\n  return console && typeof console.warn === \"function\" && console.warn(msg);\n};\n\nvar _helmetCallback = null;\n\nvar handleClientStateChange = function handleClientStateChange(newState) {\n  if (_helmetCallback) {\n    cancelAnimationFrame(_helmetCallback);\n  }\n\n  if (newState.defer) {\n    _helmetCallback = requestAnimationFrame(function () {\n      commitTagChanges(newState, function () {\n        _helmetCallback = null;\n      });\n    });\n  } else {\n    commitTagChanges(newState);\n    _helmetCallback = null;\n  }\n};\n\nvar commitTagChanges = function commitTagChanges(newState, cb) {\n  var baseTag = newState.baseTag,\n      bodyAttributes = newState.bodyAttributes,\n      htmlAttributes = newState.htmlAttributes,\n      linkTags = newState.linkTags,\n      metaTags = newState.metaTags,\n      noscriptTags = newState.noscriptTags,\n      onChangeClientState = newState.onChangeClientState,\n      scriptTags = newState.scriptTags,\n      styleTags = newState.styleTags,\n      title = newState.title,\n      titleAttributes = newState.titleAttributes;\n  updateAttributes(_HelmetConstants.TAG_NAMES.BODY, bodyAttributes);\n  updateAttributes(_HelmetConstants.TAG_NAMES.HTML, htmlAttributes);\n  updateTitle(title, titleAttributes);\n  var tagUpdates = {\n    baseTag: updateTags(_HelmetConstants.TAG_NAMES.BASE, baseTag),\n    linkTags: updateTags(_HelmetConstants.TAG_NAMES.LINK, linkTags),\n    metaTags: updateTags(_HelmetConstants.TAG_NAMES.META, metaTags),\n    noscriptTags: updateTags(_HelmetConstants.TAG_NAMES.NOSCRIPT, noscriptTags),\n    scriptTags: updateTags(_HelmetConstants.TAG_NAMES.SCRIPT, scriptTags),\n    styleTags: updateTags(_HelmetConstants.TAG_NAMES.STYLE, styleTags)\n  };\n  var addedTags = {};\n  var removedTags = {};\n  Object.keys(tagUpdates).forEach(function (tagType) {\n    var _tagUpdates$tagType = tagUpdates[tagType],\n        newTags = _tagUpdates$tagType.newTags,\n        oldTags = _tagUpdates$tagType.oldTags;\n\n    if (newTags.length) {\n      addedTags[tagType] = newTags;\n    }\n\n    if (oldTags.length) {\n      removedTags[tagType] = tagUpdates[tagType].oldTags;\n    }\n  });\n  cb && cb();\n  onChangeClientState(newState, addedTags, removedTags);\n};\n\nvar flattenArray = function flattenArray(possibleArray) {\n  return Array.isArray(possibleArray) ? possibleArray.join(\"\") : possibleArray;\n};\n\nvar updateTitle = function updateTitle(title, attributes) {\n  if (typeof title !== \"undefined\" && document.title !== title) {\n    document.title = flattenArray(title);\n  }\n\n  updateAttributes(_HelmetConstants.TAG_NAMES.TITLE, attributes);\n};\n\nvar updateAttributes = function updateAttributes(tagName, attributes) {\n  var elementTag = document.getElementsByTagName(tagName)[0];\n\n  if (!elementTag) {\n    return;\n  }\n\n  var helmetAttributeString = elementTag.getAttribute(_HelmetConstants.HELMET_ATTRIBUTE);\n  var helmetAttributes = helmetAttributeString ? helmetAttributeString.split(\",\") : [];\n  var attributesToRemove = [].concat(helmetAttributes);\n  var attributeKeys = Object.keys(attributes);\n\n  for (var i = 0; i < attributeKeys.length; i++) {\n    var attribute = attributeKeys[i];\n    var value = attributes[attribute] || \"\";\n\n    if (elementTag.getAttribute(attribute) !== value) {\n      elementTag.setAttribute(attribute, value);\n    }\n\n    if (helmetAttributes.indexOf(attribute) === -1) {\n      helmetAttributes.push(attribute);\n    }\n\n    var indexToSave = attributesToRemove.indexOf(attribute);\n\n    if (indexToSave !== -1) {\n      attributesToRemove.splice(indexToSave, 1);\n    }\n  }\n\n  for (var _i = attributesToRemove.length - 1; _i >= 0; _i--) {\n    elementTag.removeAttribute(attributesToRemove[_i]);\n  }\n\n  if (helmetAttributes.length === attributesToRemove.length) {\n    elementTag.removeAttribute(_HelmetConstants.HELMET_ATTRIBUTE);\n  } else if (elementTag.getAttribute(_HelmetConstants.HELMET_ATTRIBUTE) !== attributeKeys.join(\",\")) {\n    elementTag.setAttribute(_HelmetConstants.HELMET_ATTRIBUTE, attributeKeys.join(\",\"));\n  }\n};\n\nvar updateTags = function updateTags(type, tags) {\n  var headElement = document.head || document.querySelector(_HelmetConstants.TAG_NAMES.HEAD);\n  var tagNodes = headElement.querySelectorAll(type + \"[\" + _HelmetConstants.HELMET_ATTRIBUTE + \"]\");\n  var oldTags = Array.prototype.slice.call(tagNodes);\n  var newTags = [];\n  var indexToDelete = void 0;\n\n  if (tags && tags.length) {\n    tags.forEach(function (tag) {\n      var newElement = document.createElement(type);\n\n      for (var attribute in tag) {\n        if (tag.hasOwnProperty(attribute)) {\n          if (attribute === _HelmetConstants.TAG_PROPERTIES.INNER_HTML) {\n            newElement.innerHTML = tag.innerHTML;\n          } else if (attribute === _HelmetConstants.TAG_PROPERTIES.CSS_TEXT) {\n            if (newElement.styleSheet) {\n              newElement.styleSheet.cssText = tag.cssText;\n            } else {\n              newElement.appendChild(document.createTextNode(tag.cssText));\n            }\n          } else {\n            var value = typeof tag[attribute] === \"undefined\" ? \"\" : tag[attribute];\n            newElement.setAttribute(attribute, value);\n          }\n        }\n      }\n\n      newElement.setAttribute(_HelmetConstants.HELMET_ATTRIBUTE, \"true\"); // Remove a duplicate tag from domTagstoRemove, so it isn't cleared.\n\n      if (oldTags.some(function (existingTag, index) {\n        indexToDelete = index;\n        return newElement.isEqualNode(existingTag);\n      })) {\n        oldTags.splice(indexToDelete, 1);\n      } else {\n        newTags.push(newElement);\n      }\n    });\n  }\n\n  oldTags.forEach(function (tag) {\n    return tag.parentNode.removeChild(tag);\n  });\n  newTags.forEach(function (tag) {\n    return headElement.appendChild(tag);\n  });\n  return {\n    oldTags: oldTags,\n    newTags: newTags\n  };\n};\n\nvar generateElementAttributesAsString = function generateElementAttributesAsString(attributes) {\n  return Object.keys(attributes).reduce(function (str, key) {\n    var attr = typeof attributes[key] !== \"undefined\" ? key + \"=\\\"\" + attributes[key] + \"\\\"\" : \"\" + key;\n    return str ? str + \" \" + attr : attr;\n  }, \"\");\n};\n\nvar generateTitleAsString = function generateTitleAsString(type, title, attributes, encode) {\n  var attributeString = generateElementAttributesAsString(attributes);\n  var flattenedTitle = flattenArray(title);\n  return attributeString ? \"<\" + type + \" \" + _HelmetConstants.HELMET_ATTRIBUTE + \"=\\\"true\\\" \" + attributeString + \">\" + encodeSpecialCharacters(flattenedTitle, encode) + \"</\" + type + \">\" : \"<\" + type + \" \" + _HelmetConstants.HELMET_ATTRIBUTE + \"=\\\"true\\\">\" + encodeSpecialCharacters(flattenedTitle, encode) + \"</\" + type + \">\";\n};\n\nvar generateTagsAsString = function generateTagsAsString(type, tags, encode) {\n  return tags.reduce(function (str, tag) {\n    var attributeHtml = Object.keys(tag).filter(function (attribute) {\n      return !(attribute === _HelmetConstants.TAG_PROPERTIES.INNER_HTML || attribute === _HelmetConstants.TAG_PROPERTIES.CSS_TEXT);\n    }).reduce(function (string, attribute) {\n      var attr = typeof tag[attribute] === \"undefined\" ? attribute : attribute + \"=\\\"\" + encodeSpecialCharacters(tag[attribute], encode) + \"\\\"\";\n      return string ? string + \" \" + attr : attr;\n    }, \"\");\n    var tagContent = tag.innerHTML || tag.cssText || \"\";\n    var isSelfClosing = _HelmetConstants.SELF_CLOSING_TAGS.indexOf(type) === -1;\n    return str + \"<\" + type + \" \" + _HelmetConstants.HELMET_ATTRIBUTE + \"=\\\"true\\\" \" + attributeHtml + (isSelfClosing ? \"/>\" : \">\" + tagContent + \"</\" + type + \">\");\n  }, \"\");\n};\n\nvar convertElementAttributestoReactProps = function convertElementAttributestoReactProps(attributes) {\n  var initProps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  return Object.keys(attributes).reduce(function (obj, key) {\n    obj[_HelmetConstants.REACT_TAG_MAP[key] || key] = attributes[key];\n    return obj;\n  }, initProps);\n};\n\nvar convertReactPropstoHtmlAttributes = function convertReactPropstoHtmlAttributes(props) {\n  var initAttributes = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  return Object.keys(props).reduce(function (obj, key) {\n    obj[_HelmetConstants.HTML_TAG_MAP[key] || key] = props[key];\n    return obj;\n  }, initAttributes);\n};\n\nvar generateTitleAsReactComponent = function generateTitleAsReactComponent(type, title, attributes) {\n  var _initProps; // assigning into an array to define toString function on it\n\n\n  var initProps = (_initProps = {\n    key: title\n  }, _initProps[_HelmetConstants.HELMET_ATTRIBUTE] = true, _initProps);\n  var props = convertElementAttributestoReactProps(attributes, initProps);\n  return [_react2[\"default\"].createElement(_HelmetConstants.TAG_NAMES.TITLE, props, title)];\n};\n\nvar generateTagsAsReactComponent = function generateTagsAsReactComponent(type, tags) {\n  return tags.map(function (tag, i) {\n    var _mappedTag;\n\n    var mappedTag = (_mappedTag = {\n      key: i\n    }, _mappedTag[_HelmetConstants.HELMET_ATTRIBUTE] = true, _mappedTag);\n    Object.keys(tag).forEach(function (attribute) {\n      var mappedAttribute = _HelmetConstants.REACT_TAG_MAP[attribute] || attribute;\n\n      if (mappedAttribute === _HelmetConstants.TAG_PROPERTIES.INNER_HTML || mappedAttribute === _HelmetConstants.TAG_PROPERTIES.CSS_TEXT) {\n        var content = tag.innerHTML || tag.cssText;\n        mappedTag.dangerouslySetInnerHTML = {\n          __html: content\n        };\n      } else {\n        mappedTag[mappedAttribute] = tag[attribute];\n      }\n    });\n    return _react2[\"default\"].createElement(type, mappedTag);\n  });\n};\n\nvar getMethodsForTag = function getMethodsForTag(type, tags, encode) {\n  switch (type) {\n    case _HelmetConstants.TAG_NAMES.TITLE:\n      return {\n        toComponent: function toComponent() {\n          return generateTitleAsReactComponent(type, tags.title, tags.titleAttributes, encode);\n        },\n        toString: function toString() {\n          return generateTitleAsString(type, tags.title, tags.titleAttributes, encode);\n        }\n      };\n\n    case _HelmetConstants.ATTRIBUTE_NAMES.BODY:\n    case _HelmetConstants.ATTRIBUTE_NAMES.HTML:\n      return {\n        toComponent: function toComponent() {\n          return convertElementAttributestoReactProps(tags);\n        },\n        toString: function toString() {\n          return generateElementAttributesAsString(tags);\n        }\n      };\n\n    default:\n      return {\n        toComponent: function toComponent() {\n          return generateTagsAsReactComponent(type, tags);\n        },\n        toString: function toString() {\n          return generateTagsAsString(type, tags, encode);\n        }\n      };\n  }\n};\n\nvar mapStateOnServer = function mapStateOnServer(_ref) {\n  var baseTag = _ref.baseTag,\n      bodyAttributes = _ref.bodyAttributes,\n      encode = _ref.encode,\n      htmlAttributes = _ref.htmlAttributes,\n      linkTags = _ref.linkTags,\n      metaTags = _ref.metaTags,\n      noscriptTags = _ref.noscriptTags,\n      scriptTags = _ref.scriptTags,\n      styleTags = _ref.styleTags,\n      _ref$title = _ref.title,\n      title = _ref$title === undefined ? \"\" : _ref$title,\n      titleAttributes = _ref.titleAttributes;\n  return {\n    base: getMethodsForTag(_HelmetConstants.TAG_NAMES.BASE, baseTag, encode),\n    bodyAttributes: getMethodsForTag(_HelmetConstants.ATTRIBUTE_NAMES.BODY, bodyAttributes, encode),\n    htmlAttributes: getMethodsForTag(_HelmetConstants.ATTRIBUTE_NAMES.HTML, htmlAttributes, encode),\n    link: getMethodsForTag(_HelmetConstants.TAG_NAMES.LINK, linkTags, encode),\n    meta: getMethodsForTag(_HelmetConstants.TAG_NAMES.META, metaTags, encode),\n    noscript: getMethodsForTag(_HelmetConstants.TAG_NAMES.NOSCRIPT, noscriptTags, encode),\n    script: getMethodsForTag(_HelmetConstants.TAG_NAMES.SCRIPT, scriptTags, encode),\n    style: getMethodsForTag(_HelmetConstants.TAG_NAMES.STYLE, styleTags, encode),\n    title: getMethodsForTag(_HelmetConstants.TAG_NAMES.TITLE, {\n      title: title,\n      titleAttributes: titleAttributes\n    }, encode)\n  };\n};\n\nexports.convertReactPropstoHtmlAttributes = convertReactPropstoHtmlAttributes;\nexports.handleClientStateChange = handleClientStateChange;\nexports.mapStateOnServer = mapStateOnServer;\nexports.reducePropsToState = reducePropsToState;\nexports.requestAnimationFrame = requestAnimationFrame;\nexports.warn = warn;","/** @license React v16.12.0\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';\n\nrequire(\"core-js/modules/es6.function.bind\");\n\nrequire(\"core-js/modules/es6.regexp.to-string\");\n\nrequire(\"core-js/modules/es6.date.to-string\");\n\nrequire(\"core-js/modules/web.dom.iterable\");\n\nrequire(\"core-js/modules/es6.array.iterator\");\n\nrequire(\"core-js/modules/es6.object.to-string\");\n\nrequire(\"core-js/modules/es6.object.keys\");\n\nrequire(\"core-js/modules/es6.array.is-array\");\n\nrequire(\"core-js/modules/es6.regexp.replace\");\n\nrequire(\"core-js/modules/es7.symbol.async-iterator\");\n\nrequire(\"core-js/modules/es6.symbol\");\n\nvar h = require(\"object-assign\"),\n    n = \"function\" === typeof Symbol && Symbol[\"for\"],\n    p = n ? Symbol[\"for\"](\"react.element\") : 60103,\n    q = n ? Symbol[\"for\"](\"react.portal\") : 60106,\n    r = n ? Symbol[\"for\"](\"react.fragment\") : 60107,\n    t = n ? Symbol[\"for\"](\"react.strict_mode\") : 60108,\n    u = n ? Symbol[\"for\"](\"react.profiler\") : 60114,\n    v = n ? Symbol[\"for\"](\"react.provider\") : 60109,\n    w = n ? Symbol[\"for\"](\"react.context\") : 60110,\n    x = n ? Symbol[\"for\"](\"react.forward_ref\") : 60112,\n    y = n ? Symbol[\"for\"](\"react.suspense\") : 60113;\n\nn && Symbol[\"for\"](\"react.suspense_list\");\nvar z = n ? Symbol[\"for\"](\"react.memo\") : 60115,\n    aa = n ? Symbol[\"for\"](\"react.lazy\") : 60116;\nn && Symbol[\"for\"](\"react.fundamental\");\nn && Symbol[\"for\"](\"react.responder\");\nn && Symbol[\"for\"](\"react.scope\");\nvar A = \"function\" === typeof Symbol && Symbol.iterator;\n\nfunction B(a) {\n  for (var b = \"https://reactjs.org/docs/error-decoder.html?invariant=\" + a, c = 1; c < arguments.length; c++) {\n    b += \"&args[]=\" + encodeURIComponent(arguments[c]);\n  }\n\n  return \"Minified React error #\" + a + \"; visit \" + b + \" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\";\n}\n\nvar C = {\n  isMounted: function isMounted() {\n    return !1;\n  },\n  enqueueForceUpdate: function enqueueForceUpdate() {},\n  enqueueReplaceState: function enqueueReplaceState() {},\n  enqueueSetState: function enqueueSetState() {}\n},\n    D = {};\n\nfunction E(a, b, c) {\n  this.props = a;\n  this.context = b;\n  this.refs = D;\n  this.updater = c || C;\n}\n\nE.prototype.isReactComponent = {};\n\nE.prototype.setState = function (a, b) {\n  if (\"object\" !== typeof a && \"function\" !== typeof a && null != a) throw Error(B(85));\n  this.updater.enqueueSetState(this, a, b, \"setState\");\n};\n\nE.prototype.forceUpdate = function (a) {\n  this.updater.enqueueForceUpdate(this, a, \"forceUpdate\");\n};\n\nfunction F() {}\n\nF.prototype = E.prototype;\n\nfunction G(a, b, c) {\n  this.props = a;\n  this.context = b;\n  this.refs = D;\n  this.updater = c || C;\n}\n\nvar H = G.prototype = new F();\nH.constructor = G;\nh(H, E.prototype);\nH.isPureReactComponent = !0;\nvar I = {\n  current: null\n},\n    J = {\n  current: null\n},\n    K = Object.prototype.hasOwnProperty,\n    L = {\n  key: !0,\n  ref: !0,\n  __self: !0,\n  __source: !0\n};\n\nfunction M(a, b, c) {\n  var e,\n      d = {},\n      g = null,\n      l = null;\n  if (null != b) for (e in void 0 !== b.ref && (l = b.ref), void 0 !== b.key && (g = \"\" + b.key), b) {\n    K.call(b, e) && !L.hasOwnProperty(e) && (d[e] = b[e]);\n  }\n  var f = arguments.length - 2;\n  if (1 === f) d.children = c;else if (1 < f) {\n    for (var k = Array(f), m = 0; m < f; m++) {\n      k[m] = arguments[m + 2];\n    }\n\n    d.children = k;\n  }\n  if (a && a.defaultProps) for (e in f = a.defaultProps, f) {\n    void 0 === d[e] && (d[e] = f[e]);\n  }\n  return {\n    $$typeof: p,\n    type: a,\n    key: g,\n    ref: l,\n    props: d,\n    _owner: J.current\n  };\n}\n\nfunction ba(a, b) {\n  return {\n    $$typeof: p,\n    type: a.type,\n    key: b,\n    ref: a.ref,\n    props: a.props,\n    _owner: a._owner\n  };\n}\n\nfunction N(a) {\n  return \"object\" === typeof a && null !== a && a.$$typeof === p;\n}\n\nfunction escape(a) {\n  var b = {\n    \"=\": \"=0\",\n    \":\": \"=2\"\n  };\n  return \"$\" + (\"\" + a).replace(/[=:]/g, function (a) {\n    return b[a];\n  });\n}\n\nvar O = /\\/+/g,\n    P = [];\n\nfunction Q(a, b, c, e) {\n  if (P.length) {\n    var d = P.pop();\n    d.result = a;\n    d.keyPrefix = b;\n    d.func = c;\n    d.context = e;\n    d.count = 0;\n    return d;\n  }\n\n  return {\n    result: a,\n    keyPrefix: b,\n    func: c,\n    context: e,\n    count: 0\n  };\n}\n\nfunction R(a) {\n  a.result = null;\n  a.keyPrefix = null;\n  a.func = null;\n  a.context = null;\n  a.count = 0;\n  10 > P.length && P.push(a);\n}\n\nfunction S(a, b, c, e) {\n  var d = typeof a;\n  if (\"undefined\" === d || \"boolean\" === d) a = null;\n  var g = !1;\n  if (null === a) g = !0;else switch (d) {\n    case \"string\":\n    case \"number\":\n      g = !0;\n      break;\n\n    case \"object\":\n      switch (a.$$typeof) {\n        case p:\n        case q:\n          g = !0;\n      }\n\n  }\n  if (g) return c(e, a, \"\" === b ? \".\" + T(a, 0) : b), 1;\n  g = 0;\n  b = \"\" === b ? \".\" : b + \":\";\n  if (Array.isArray(a)) for (var l = 0; l < a.length; l++) {\n    d = a[l];\n    var f = b + T(d, l);\n    g += S(d, f, c, e);\n  } else if (null === a || \"object\" !== typeof a ? f = null : (f = A && a[A] || a[\"@@iterator\"], f = \"function\" === typeof f ? f : null), \"function\" === typeof f) for (a = f.call(a), l = 0; !(d = a.next()).done;) {\n    d = d.value, f = b + T(d, l++), g += S(d, f, c, e);\n  } else if (\"object\" === d) throw c = \"\" + a, Error(B(31, \"[object Object]\" === c ? \"object with keys {\" + Object.keys(a).join(\", \") + \"}\" : c, \"\"));\n  return g;\n}\n\nfunction U(a, b, c) {\n  return null == a ? 0 : S(a, \"\", b, c);\n}\n\nfunction T(a, b) {\n  return \"object\" === typeof a && null !== a && null != a.key ? escape(a.key) : b.toString(36);\n}\n\nfunction ca(a, b) {\n  a.func.call(a.context, b, a.count++);\n}\n\nfunction da(a, b, c) {\n  var e = a.result,\n      d = a.keyPrefix;\n  a = a.func.call(a.context, b, a.count++);\n  Array.isArray(a) ? V(a, e, c, function (a) {\n    return a;\n  }) : null != a && (N(a) && (a = ba(a, d + (!a.key || b && b.key === a.key ? \"\" : (\"\" + a.key).replace(O, \"$&/\") + \"/\") + c)), e.push(a));\n}\n\nfunction V(a, b, c, e, d) {\n  var g = \"\";\n  null != c && (g = (\"\" + c).replace(O, \"$&/\") + \"/\");\n  b = Q(b, g, e, d);\n  U(a, da, b);\n  R(b);\n}\n\nfunction W() {\n  var a = I.current;\n  if (null === a) throw Error(B(321));\n  return a;\n}\n\nvar X = {\n  Children: {\n    map: function map(a, b, c) {\n      if (null == a) return a;\n      var e = [];\n      V(a, e, null, b, c);\n      return e;\n    },\n    forEach: function forEach(a, b, c) {\n      if (null == a) return a;\n      b = Q(null, null, b, c);\n      U(a, ca, b);\n      R(b);\n    },\n    count: function count(a) {\n      return U(a, function () {\n        return null;\n      }, null);\n    },\n    toArray: function toArray(a) {\n      var b = [];\n      V(a, b, null, function (a) {\n        return a;\n      });\n      return b;\n    },\n    only: function only(a) {\n      if (!N(a)) throw Error(B(143));\n      return a;\n    }\n  },\n  createRef: function createRef() {\n    return {\n      current: null\n    };\n  },\n  Component: E,\n  PureComponent: G,\n  createContext: function createContext(a, b) {\n    void 0 === b && (b = null);\n    a = {\n      $$typeof: w,\n      _calculateChangedBits: b,\n      _currentValue: a,\n      _currentValue2: a,\n      _threadCount: 0,\n      Provider: null,\n      Consumer: null\n    };\n    a.Provider = {\n      $$typeof: v,\n      _context: a\n    };\n    return a.Consumer = a;\n  },\n  forwardRef: function forwardRef(a) {\n    return {\n      $$typeof: x,\n      render: a\n    };\n  },\n  lazy: function lazy(a) {\n    return {\n      $$typeof: aa,\n      _ctor: a,\n      _status: -1,\n      _result: null\n    };\n  },\n  memo: function memo(a, b) {\n    return {\n      $$typeof: z,\n      type: a,\n      compare: void 0 === b ? null : b\n    };\n  },\n  useCallback: function useCallback(a, b) {\n    return W().useCallback(a, b);\n  },\n  useContext: function useContext(a, b) {\n    return W().useContext(a, b);\n  },\n  useEffect: function useEffect(a, b) {\n    return W().useEffect(a, b);\n  },\n  useImperativeHandle: function useImperativeHandle(a, b, c) {\n    return W().useImperativeHandle(a, b, c);\n  },\n  useDebugValue: function useDebugValue() {},\n  useLayoutEffect: function useLayoutEffect(a, b) {\n    return W().useLayoutEffect(a, b);\n  },\n  useMemo: function useMemo(a, b) {\n    return W().useMemo(a, b);\n  },\n  useReducer: function useReducer(a, b, c) {\n    return W().useReducer(a, b, c);\n  },\n  useRef: function useRef(a) {\n    return W().useRef(a);\n  },\n  useState: function useState(a) {\n    return W().useState(a);\n  },\n  Fragment: r,\n  Profiler: u,\n  StrictMode: t,\n  Suspense: y,\n  createElement: M,\n  cloneElement: function cloneElement(a, b, c) {\n    if (null === a || void 0 === a) throw Error(B(267, a));\n    var e = h({}, a.props),\n        d = a.key,\n        g = a.ref,\n        l = a._owner;\n\n    if (null != b) {\n      void 0 !== b.ref && (g = b.ref, l = J.current);\n      void 0 !== b.key && (d = \"\" + b.key);\n      if (a.type && a.type.defaultProps) var f = a.type.defaultProps;\n\n      for (k in b) {\n        K.call(b, k) && !L.hasOwnProperty(k) && (e[k] = void 0 === b[k] && void 0 !== f ? f[k] : b[k]);\n      }\n    }\n\n    var k = arguments.length - 2;\n    if (1 === k) e.children = c;else if (1 < k) {\n      f = Array(k);\n\n      for (var m = 0; m < k; m++) {\n        f[m] = arguments[m + 2];\n      }\n\n      e.children = f;\n    }\n    return {\n      $$typeof: p,\n      type: a.type,\n      key: d,\n      ref: g,\n      props: e,\n      _owner: l\n    };\n  },\n  createFactory: function createFactory(a) {\n    var b = M.bind(null, a);\n    b.type = a;\n    return b;\n  },\n  isValidElement: N,\n  version: \"16.12.0\",\n  __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED: {\n    ReactCurrentDispatcher: I,\n    ReactCurrentBatchConfig: {\n      suspense: null\n    },\n    ReactCurrentOwner: J,\n    IsSomeRendererActing: {\n      current: !1\n    },\n    assign: h\n  }\n},\n    Y = {\n  \"default\": X\n},\n    Z = Y && X || Y;\nmodule.exports = Z[\"default\"] || Z;","var g; // This works in non-strict mode\n\ng = function () {\n  return this;\n}();\n\ntry {\n  // This works if eval is allowed (see CSP)\n  g = g || new Function(\"return this\")();\n} catch (e) {\n  // This works if the window reference is available\n  if (typeof window === \"object\") g = window;\n} // g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\n\nmodule.exports = g;","/** @license React v16.12.0\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';\n\nrequire(\"core-js/modules/es6.weak-set\");\n\nrequire(\"core-js/modules/es6.object.is\");\n\nrequire(\"core-js/modules/es6.string.trim\");\n\nrequire(\"core-js/modules/es6.object.keys\");\n\nrequire(\"core-js/modules/es6.set\");\n\nrequire(\"core-js/modules/es6.weak-map\");\n\nrequire(\"core-js/modules/es6.function.bind\");\n\nrequire(\"core-js/modules/es6.date.now\");\n\nrequire(\"core-js/modules/es6.regexp.to-string\");\n\nrequire(\"core-js/modules/es6.date.to-string\");\n\nrequire(\"core-js/modules/es6.object.define-property\");\n\nrequire(\"core-js/modules/es6.regexp.split\");\n\nrequire(\"core-js/modules/web.dom.iterable\");\n\nrequire(\"core-js/modules/es6.array.iterator\");\n\nrequire(\"core-js/modules/es6.object.to-string\");\n\nrequire(\"core-js/modules/es6.string.iterator\");\n\nrequire(\"core-js/modules/es6.map\");\n\nrequire(\"core-js/modules/es6.regexp.replace\");\n\nrequire(\"core-js/modules/es6.function.name\");\n\nrequire(\"core-js/modules/es7.symbol.async-iterator\");\n\nrequire(\"core-js/modules/es6.symbol\");\n\nrequire(\"core-js/modules/es6.array.for-each\");\n\nrequire(\"core-js/modules/es6.array.is-array\");\n\nrequire(\"core-js/modules/es6.array.index-of\");\n\nvar aa = require(\"react\"),\n    n = require(\"object-assign\"),\n    q = require(\"scheduler\");\n\nfunction u(a) {\n  for (var b = \"https://reactjs.org/docs/error-decoder.html?invariant=\" + a, c = 1; c < arguments.length; c++) {\n    b += \"&args[]=\" + encodeURIComponent(arguments[c]);\n  }\n\n  return \"Minified React error #\" + a + \"; visit \" + b + \" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\";\n}\n\nif (!aa) throw Error(u(227));\nvar ba = null,\n    ca = {};\n\nfunction da() {\n  if (ba) for (var a in ca) {\n    var b = ca[a],\n        c = ba.indexOf(a);\n    if (!(-1 < c)) throw Error(u(96, a));\n\n    if (!ea[c]) {\n      if (!b.extractEvents) throw Error(u(97, a));\n      ea[c] = b;\n      c = b.eventTypes;\n\n      for (var d in c) {\n        var e = void 0;\n        var f = c[d],\n            g = b,\n            h = d;\n        if (fa.hasOwnProperty(h)) throw Error(u(99, h));\n        fa[h] = f;\n        var k = f.phasedRegistrationNames;\n\n        if (k) {\n          for (e in k) {\n            k.hasOwnProperty(e) && ha(k[e], g, h);\n          }\n\n          e = !0;\n        } else f.registrationName ? (ha(f.registrationName, g, h), e = !0) : e = !1;\n\n        if (!e) throw Error(u(98, d, a));\n      }\n    }\n  }\n}\n\nfunction ha(a, b, c) {\n  if (ia[a]) throw Error(u(100, a));\n  ia[a] = b;\n  ja[a] = b.eventTypes[c].dependencies;\n}\n\nvar ea = [],\n    fa = {},\n    ia = {},\n    ja = {};\n\nfunction ka(a, b, c, d, e, f, g, h, k) {\n  var l = Array.prototype.slice.call(arguments, 3);\n\n  try {\n    b.apply(c, l);\n  } catch (m) {\n    this.onError(m);\n  }\n}\n\nvar la = !1,\n    ma = null,\n    na = !1,\n    oa = null,\n    pa = {\n  onError: function onError(a) {\n    la = !0;\n    ma = a;\n  }\n};\n\nfunction qa(a, b, c, d, e, f, g, h, k) {\n  la = !1;\n  ma = null;\n  ka.apply(pa, arguments);\n}\n\nfunction ra(a, b, c, d, e, f, g, h, k) {\n  qa.apply(this, arguments);\n\n  if (la) {\n    if (la) {\n      var l = ma;\n      la = !1;\n      ma = null;\n    } else throw Error(u(198));\n\n    na || (na = !0, oa = l);\n  }\n}\n\nvar sa = null,\n    ua = null,\n    va = null;\n\nfunction wa(a, b, c) {\n  var d = a.type || \"unknown-event\";\n  a.currentTarget = va(c);\n  ra(d, b, void 0, a);\n  a.currentTarget = null;\n}\n\nfunction xa(a, b) {\n  if (null == b) throw Error(u(30));\n  if (null == a) return b;\n\n  if (Array.isArray(a)) {\n    if (Array.isArray(b)) return a.push.apply(a, b), a;\n    a.push(b);\n    return a;\n  }\n\n  return Array.isArray(b) ? [a].concat(b) : [a, b];\n}\n\nfunction ya(a, b, c) {\n  Array.isArray(a) ? a.forEach(b, c) : a && b.call(c, a);\n}\n\nvar za = null;\n\nfunction Aa(a) {\n  if (a) {\n    var b = a._dispatchListeners,\n        c = a._dispatchInstances;\n    if (Array.isArray(b)) for (var d = 0; d < b.length && !a.isPropagationStopped(); d++) {\n      wa(a, b[d], c[d]);\n    } else b && wa(a, b, c);\n    a._dispatchListeners = null;\n    a._dispatchInstances = null;\n    a.isPersistent() || a.constructor.release(a);\n  }\n}\n\nfunction Ba(a) {\n  null !== a && (za = xa(za, a));\n  a = za;\n  za = null;\n\n  if (a) {\n    ya(a, Aa);\n    if (za) throw Error(u(95));\n    if (na) throw a = oa, na = !1, oa = null, a;\n  }\n}\n\nvar Ca = {\n  injectEventPluginOrder: function injectEventPluginOrder(a) {\n    if (ba) throw Error(u(101));\n    ba = Array.prototype.slice.call(a);\n    da();\n  },\n  injectEventPluginsByName: function injectEventPluginsByName(a) {\n    var b = !1,\n        c;\n\n    for (c in a) {\n      if (a.hasOwnProperty(c)) {\n        var d = a[c];\n\n        if (!ca.hasOwnProperty(c) || ca[c] !== d) {\n          if (ca[c]) throw Error(u(102, c));\n          ca[c] = d;\n          b = !0;\n        }\n      }\n    }\n\n    b && da();\n  }\n};\n\nfunction Da(a, b) {\n  var c = a.stateNode;\n  if (!c) return null;\n  var d = sa(c);\n  if (!d) return null;\n  c = d[b];\n\n  a: switch (b) {\n    case \"onClick\":\n    case \"onClickCapture\":\n    case \"onDoubleClick\":\n    case \"onDoubleClickCapture\":\n    case \"onMouseDown\":\n    case \"onMouseDownCapture\":\n    case \"onMouseMove\":\n    case \"onMouseMoveCapture\":\n    case \"onMouseUp\":\n    case \"onMouseUpCapture\":\n      (d = !d.disabled) || (a = a.type, d = !(\"button\" === a || \"input\" === a || \"select\" === a || \"textarea\" === a));\n      a = !d;\n      break a;\n\n    default:\n      a = !1;\n  }\n\n  if (a) return null;\n  if (c && \"function\" !== typeof c) throw Error(u(231, b, typeof c));\n  return c;\n}\n\nvar Ea = aa.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\nEa.hasOwnProperty(\"ReactCurrentDispatcher\") || (Ea.ReactCurrentDispatcher = {\n  current: null\n});\nEa.hasOwnProperty(\"ReactCurrentBatchConfig\") || (Ea.ReactCurrentBatchConfig = {\n  suspense: null\n});\nvar Fa = /^(.*)[\\\\\\/]/,\n    w = \"function\" === typeof Symbol && Symbol[\"for\"],\n    Ga = w ? Symbol[\"for\"](\"react.element\") : 60103,\n    Ha = w ? Symbol[\"for\"](\"react.portal\") : 60106,\n    Ia = w ? Symbol[\"for\"](\"react.fragment\") : 60107,\n    Ja = w ? Symbol[\"for\"](\"react.strict_mode\") : 60108,\n    Ka = w ? Symbol[\"for\"](\"react.profiler\") : 60114,\n    La = w ? Symbol[\"for\"](\"react.provider\") : 60109,\n    Ma = w ? Symbol[\"for\"](\"react.context\") : 60110,\n    Na = w ? Symbol[\"for\"](\"react.concurrent_mode\") : 60111,\n    Oa = w ? Symbol[\"for\"](\"react.forward_ref\") : 60112,\n    Pa = w ? Symbol[\"for\"](\"react.suspense\") : 60113,\n    Qa = w ? Symbol[\"for\"](\"react.suspense_list\") : 60120,\n    Ra = w ? Symbol[\"for\"](\"react.memo\") : 60115,\n    Sa = w ? Symbol[\"for\"](\"react.lazy\") : 60116;\nw && Symbol[\"for\"](\"react.fundamental\");\nw && Symbol[\"for\"](\"react.responder\");\nw && Symbol[\"for\"](\"react.scope\");\nvar Ta = \"function\" === typeof Symbol && Symbol.iterator;\n\nfunction Ua(a) {\n  if (null === a || \"object\" !== typeof a) return null;\n  a = Ta && a[Ta] || a[\"@@iterator\"];\n  return \"function\" === typeof a ? a : null;\n}\n\nfunction Va(a) {\n  if (-1 === a._status) {\n    a._status = 0;\n    var b = a._ctor;\n    b = b();\n    a._result = b;\n    b.then(function (b) {\n      0 === a._status && (b = b[\"default\"], a._status = 1, a._result = b);\n    }, function (b) {\n      0 === a._status && (a._status = 2, a._result = b);\n    });\n  }\n}\n\nfunction Wa(a) {\n  if (null == a) return null;\n  if (\"function\" === typeof a) return a.displayName || a.name || null;\n  if (\"string\" === typeof a) return a;\n\n  switch (a) {\n    case Ia:\n      return \"Fragment\";\n\n    case Ha:\n      return \"Portal\";\n\n    case Ka:\n      return \"Profiler\";\n\n    case Ja:\n      return \"StrictMode\";\n\n    case Pa:\n      return \"Suspense\";\n\n    case Qa:\n      return \"SuspenseList\";\n  }\n\n  if (\"object\" === typeof a) switch (a.$$typeof) {\n    case Ma:\n      return \"Context.Consumer\";\n\n    case La:\n      return \"Context.Provider\";\n\n    case Oa:\n      var b = a.render;\n      b = b.displayName || b.name || \"\";\n      return a.displayName || (\"\" !== b ? \"ForwardRef(\" + b + \")\" : \"ForwardRef\");\n\n    case Ra:\n      return Wa(a.type);\n\n    case Sa:\n      if (a = 1 === a._status ? a._result : null) return Wa(a);\n  }\n  return null;\n}\n\nfunction Xa(a) {\n  var b = \"\";\n\n  do {\n    a: switch (a.tag) {\n      case 3:\n      case 4:\n      case 6:\n      case 7:\n      case 10:\n      case 9:\n        var c = \"\";\n        break a;\n\n      default:\n        var d = a._debugOwner,\n            e = a._debugSource,\n            f = Wa(a.type);\n        c = null;\n        d && (c = Wa(d.type));\n        d = f;\n        f = \"\";\n        e ? f = \" (at \" + e.fileName.replace(Fa, \"\") + \":\" + e.lineNumber + \")\" : c && (f = \" (created by \" + c + \")\");\n        c = \"\\n    in \" + (d || \"Unknown\") + f;\n    }\n\n    b += c;\n    a = a[\"return\"];\n  } while (a);\n\n  return b;\n}\n\nvar Ya = !(\"undefined\" === typeof window || \"undefined\" === typeof window.document || \"undefined\" === typeof window.document.createElement),\n    Za = null,\n    $a = null,\n    ab = null;\n\nfunction bb(a) {\n  if (a = ua(a)) {\n    if (\"function\" !== typeof Za) throw Error(u(280));\n    var b = sa(a.stateNode);\n    Za(a.stateNode, a.type, b);\n  }\n}\n\nfunction cb(a) {\n  $a ? ab ? ab.push(a) : ab = [a] : $a = a;\n}\n\nfunction db() {\n  if ($a) {\n    var a = $a,\n        b = ab;\n    ab = $a = null;\n    bb(a);\n    if (b) for (a = 0; a < b.length; a++) {\n      bb(b[a]);\n    }\n  }\n}\n\nfunction eb(a, b) {\n  return a(b);\n}\n\nfunction fb(a, b, c, d) {\n  return a(b, c, d);\n}\n\nfunction gb() {}\n\nvar hb = eb,\n    ib = !1,\n    jb = !1;\n\nfunction kb() {\n  if (null !== $a || null !== ab) gb(), db();\n}\n\nnew Map();\nvar lb = /^[: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][: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\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$/,\n    mb = Object.prototype.hasOwnProperty,\n    nb = {},\n    ob = {};\n\nfunction pb(a) {\n  if (mb.call(ob, a)) return !0;\n  if (mb.call(nb, a)) return !1;\n  if (lb.test(a)) return ob[a] = !0;\n  nb[a] = !0;\n  return !1;\n}\n\nfunction qb(a, b, c, d) {\n  if (null !== c && 0 === c.type) return !1;\n\n  switch (typeof b) {\n    case \"function\":\n    case \"symbol\":\n      return !0;\n\n    case \"boolean\":\n      if (d) return !1;\n      if (null !== c) return !c.acceptsBooleans;\n      a = a.toLowerCase().slice(0, 5);\n      return \"data-\" !== a && \"aria-\" !== a;\n\n    default:\n      return !1;\n  }\n}\n\nfunction rb(a, b, c, d) {\n  if (null === b || \"undefined\" === typeof b || qb(a, b, c, d)) return !0;\n  if (d) return !1;\n  if (null !== c) switch (c.type) {\n    case 3:\n      return !b;\n\n    case 4:\n      return !1 === b;\n\n    case 5:\n      return isNaN(b);\n\n    case 6:\n      return isNaN(b) || 1 > b;\n  }\n  return !1;\n}\n\nfunction B(a, b, c, d, e, f) {\n  this.acceptsBooleans = 2 === b || 3 === b || 4 === b;\n  this.attributeName = d;\n  this.attributeNamespace = e;\n  this.mustUseProperty = c;\n  this.propertyName = a;\n  this.type = b;\n  this.sanitizeURL = f;\n}\n\nvar D = {};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function (a) {\n  D[a] = new B(a, 0, !1, a, null, !1);\n});\n[[\"acceptCharset\", \"accept-charset\"], [\"className\", \"class\"], [\"htmlFor\", \"for\"], [\"httpEquiv\", \"http-equiv\"]].forEach(function (a) {\n  var b = a[0];\n  D[b] = new B(b, 1, !1, a[1], null, !1);\n});\n[\"contentEditable\", \"draggable\", \"spellCheck\", \"value\"].forEach(function (a) {\n  D[a] = new B(a, 2, !1, a.toLowerCase(), null, !1);\n});\n[\"autoReverse\", \"externalResourcesRequired\", \"focusable\", \"preserveAlpha\"].forEach(function (a) {\n  D[a] = new B(a, 2, !1, a, null, !1);\n});\n\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function (a) {\n  D[a] = new B(a, 3, !1, a.toLowerCase(), null, !1);\n});\n[\"checked\", \"multiple\", \"muted\", \"selected\"].forEach(function (a) {\n  D[a] = new B(a, 3, !0, a, null, !1);\n});\n[\"capture\", \"download\"].forEach(function (a) {\n  D[a] = new B(a, 4, !1, a, null, !1);\n});\n[\"cols\", \"rows\", \"size\", \"span\"].forEach(function (a) {\n  D[a] = new B(a, 6, !1, a, null, !1);\n});\n[\"rowSpan\", \"start\"].forEach(function (a) {\n  D[a] = new B(a, 5, !1, a.toLowerCase(), null, !1);\n});\nvar sb = /[\\-:]([a-z])/g;\n\nfunction tb(a) {\n  return a[1].toUpperCase();\n}\n\n\"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\".split(\" \").forEach(function (a) {\n  var b = a.replace(sb, tb);\n  D[b] = new B(b, 1, !1, a, null, !1);\n});\n\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function (a) {\n  var b = a.replace(sb, tb);\n  D[b] = new B(b, 1, !1, a, \"http://www.w3.org/1999/xlink\", !1);\n});\n[\"xml:base\", \"xml:lang\", \"xml:space\"].forEach(function (a) {\n  var b = a.replace(sb, tb);\n  D[b] = new B(b, 1, !1, a, \"http://www.w3.org/XML/1998/namespace\", !1);\n});\n[\"tabIndex\", \"crossOrigin\"].forEach(function (a) {\n  D[a] = new B(a, 1, !1, a.toLowerCase(), null, !1);\n});\nD.xlinkHref = new B(\"xlinkHref\", 1, !1, \"xlink:href\", \"http://www.w3.org/1999/xlink\", !0);\n[\"src\", \"href\", \"action\", \"formAction\"].forEach(function (a) {\n  D[a] = new B(a, 1, !1, a.toLowerCase(), null, !0);\n});\n\nfunction ub(a) {\n  switch (typeof a) {\n    case \"boolean\":\n    case \"number\":\n    case \"object\":\n    case \"string\":\n    case \"undefined\":\n      return a;\n\n    default:\n      return \"\";\n  }\n}\n\nfunction vb(a, b, c, d) {\n  var e = D.hasOwnProperty(b) ? D[b] : null;\n  var f = null !== e ? 0 === e.type : d ? !1 : !(2 < b.length) || \"o\" !== b[0] && \"O\" !== b[0] || \"n\" !== b[1] && \"N\" !== b[1] ? !1 : !0;\n  f || (rb(b, c, e, d) && (c = null), d || null === e ? pb(b) && (null === c ? a.removeAttribute(b) : a.setAttribute(b, \"\" + c)) : e.mustUseProperty ? a[e.propertyName] = null === c ? 3 === e.type ? !1 : \"\" : c : (b = e.attributeName, d = e.attributeNamespace, null === c ? a.removeAttribute(b) : (e = e.type, c = 3 === e || 4 === e && !0 === c ? \"\" : \"\" + c, d ? a.setAttributeNS(d, b, c) : a.setAttribute(b, c))));\n}\n\nfunction wb(a) {\n  var b = a.type;\n  return (a = a.nodeName) && \"input\" === a.toLowerCase() && (\"checkbox\" === b || \"radio\" === b);\n}\n\nfunction xb(a) {\n  var b = wb(a) ? \"checked\" : \"value\",\n      c = Object.getOwnPropertyDescriptor(a.constructor.prototype, b),\n      d = \"\" + a[b];\n\n  if (!a.hasOwnProperty(b) && \"undefined\" !== typeof c && \"function\" === typeof c.get && \"function\" === typeof c.set) {\n    var e = c.get,\n        f = c.set;\n    Object.defineProperty(a, b, {\n      configurable: !0,\n      get: function get() {\n        return e.call(this);\n      },\n      set: function set(a) {\n        d = \"\" + a;\n        f.call(this, a);\n      }\n    });\n    Object.defineProperty(a, b, {\n      enumerable: c.enumerable\n    });\n    return {\n      getValue: function getValue() {\n        return d;\n      },\n      setValue: function setValue(a) {\n        d = \"\" + a;\n      },\n      stopTracking: function stopTracking() {\n        a._valueTracker = null;\n        delete a[b];\n      }\n    };\n  }\n}\n\nfunction yb(a) {\n  a._valueTracker || (a._valueTracker = xb(a));\n}\n\nfunction zb(a) {\n  if (!a) return !1;\n  var b = a._valueTracker;\n  if (!b) return !0;\n  var c = b.getValue();\n  var d = \"\";\n  a && (d = wb(a) ? a.checked ? \"true\" : \"false\" : a.value);\n  a = d;\n  return a !== c ? (b.setValue(a), !0) : !1;\n}\n\nfunction Ab(a, b) {\n  var c = b.checked;\n  return n({}, b, {\n    defaultChecked: void 0,\n    defaultValue: void 0,\n    value: void 0,\n    checked: null != c ? c : a._wrapperState.initialChecked\n  });\n}\n\nfunction Bb(a, b) {\n  var c = null == b.defaultValue ? \"\" : b.defaultValue,\n      d = null != b.checked ? b.checked : b.defaultChecked;\n  c = ub(null != b.value ? b.value : c);\n  a._wrapperState = {\n    initialChecked: d,\n    initialValue: c,\n    controlled: \"checkbox\" === b.type || \"radio\" === b.type ? null != b.checked : null != b.value\n  };\n}\n\nfunction Cb(a, b) {\n  b = b.checked;\n  null != b && vb(a, \"checked\", b, !1);\n}\n\nfunction Eb(a, b) {\n  Cb(a, b);\n  var c = ub(b.value),\n      d = b.type;\n  if (null != c) {\n    if (\"number\" === d) {\n      if (0 === c && \"\" === a.value || a.value != c) a.value = \"\" + c;\n    } else a.value !== \"\" + c && (a.value = \"\" + c);\n  } else if (\"submit\" === d || \"reset\" === d) {\n    a.removeAttribute(\"value\");\n    return;\n  }\n  b.hasOwnProperty(\"value\") ? Fb(a, b.type, c) : b.hasOwnProperty(\"defaultValue\") && Fb(a, b.type, ub(b.defaultValue));\n  null == b.checked && null != b.defaultChecked && (a.defaultChecked = !!b.defaultChecked);\n}\n\nfunction Gb(a, b, c) {\n  if (b.hasOwnProperty(\"value\") || b.hasOwnProperty(\"defaultValue\")) {\n    var d = b.type;\n    if (!(\"submit\" !== d && \"reset\" !== d || void 0 !== b.value && null !== b.value)) return;\n    b = \"\" + a._wrapperState.initialValue;\n    c || b === a.value || (a.value = b);\n    a.defaultValue = b;\n  }\n\n  c = a.name;\n  \"\" !== c && (a.name = \"\");\n  a.defaultChecked = !a.defaultChecked;\n  a.defaultChecked = !!a._wrapperState.initialChecked;\n  \"\" !== c && (a.name = c);\n}\n\nfunction Fb(a, b, c) {\n  if (\"number\" !== b || a.ownerDocument.activeElement !== a) null == c ? a.defaultValue = \"\" + a._wrapperState.initialValue : a.defaultValue !== \"\" + c && (a.defaultValue = \"\" + c);\n}\n\nfunction Hb(a) {\n  var b = \"\";\n  aa.Children.forEach(a, function (a) {\n    null != a && (b += a);\n  });\n  return b;\n}\n\nfunction Ib(a, b) {\n  a = n({\n    children: void 0\n  }, b);\n  if (b = Hb(b.children)) a.children = b;\n  return a;\n}\n\nfunction Jb(a, b, c, d) {\n  a = a.options;\n\n  if (b) {\n    b = {};\n\n    for (var e = 0; e < c.length; e++) {\n      b[\"$\" + c[e]] = !0;\n    }\n\n    for (c = 0; c < a.length; c++) {\n      e = b.hasOwnProperty(\"$\" + a[c].value), a[c].selected !== e && (a[c].selected = e), e && d && (a[c].defaultSelected = !0);\n    }\n  } else {\n    c = \"\" + ub(c);\n    b = null;\n\n    for (e = 0; e < a.length; e++) {\n      if (a[e].value === c) {\n        a[e].selected = !0;\n        d && (a[e].defaultSelected = !0);\n        return;\n      }\n\n      null !== b || a[e].disabled || (b = a[e]);\n    }\n\n    null !== b && (b.selected = !0);\n  }\n}\n\nfunction Kb(a, b) {\n  if (null != b.dangerouslySetInnerHTML) throw Error(u(91));\n  return n({}, b, {\n    value: void 0,\n    defaultValue: void 0,\n    children: \"\" + a._wrapperState.initialValue\n  });\n}\n\nfunction Lb(a, b) {\n  var c = b.value;\n\n  if (null == c) {\n    c = b.defaultValue;\n    b = b.children;\n\n    if (null != b) {\n      if (null != c) throw Error(u(92));\n\n      if (Array.isArray(b)) {\n        if (!(1 >= b.length)) throw Error(u(93));\n        b = b[0];\n      }\n\n      c = b;\n    }\n\n    null == c && (c = \"\");\n  }\n\n  a._wrapperState = {\n    initialValue: ub(c)\n  };\n}\n\nfunction Mb(a, b) {\n  var c = ub(b.value),\n      d = ub(b.defaultValue);\n  null != c && (c = \"\" + c, c !== a.value && (a.value = c), null == b.defaultValue && a.defaultValue !== c && (a.defaultValue = c));\n  null != d && (a.defaultValue = \"\" + d);\n}\n\nfunction Nb(a) {\n  var b = a.textContent;\n  b === a._wrapperState.initialValue && \"\" !== b && null !== b && (a.value = b);\n}\n\nvar Ob = {\n  html: \"http://www.w3.org/1999/xhtml\",\n  mathml: \"http://www.w3.org/1998/Math/MathML\",\n  svg: \"http://www.w3.org/2000/svg\"\n};\n\nfunction Pb(a) {\n  switch (a) {\n    case \"svg\":\n      return \"http://www.w3.org/2000/svg\";\n\n    case \"math\":\n      return \"http://www.w3.org/1998/Math/MathML\";\n\n    default:\n      return \"http://www.w3.org/1999/xhtml\";\n  }\n}\n\nfunction Qb(a, b) {\n  return null == a || \"http://www.w3.org/1999/xhtml\" === a ? Pb(b) : \"http://www.w3.org/2000/svg\" === a && \"foreignObject\" === b ? \"http://www.w3.org/1999/xhtml\" : a;\n}\n\nvar Rb,\n    Sb = function (a) {\n  return \"undefined\" !== typeof MSApp && MSApp.execUnsafeLocalFunction ? function (b, c, d, e) {\n    MSApp.execUnsafeLocalFunction(function () {\n      return a(b, c, d, e);\n    });\n  } : a;\n}(function (a, b) {\n  if (a.namespaceURI !== Ob.svg || \"innerHTML\" in a) a.innerHTML = b;else {\n    Rb = Rb || document.createElement(\"div\");\n    Rb.innerHTML = \"<svg>\" + b.valueOf().toString() + \"</svg>\";\n\n    for (b = Rb.firstChild; a.firstChild;) {\n      a.removeChild(a.firstChild);\n    }\n\n    for (; b.firstChild;) {\n      a.appendChild(b.firstChild);\n    }\n  }\n});\n\nfunction Tb(a, b) {\n  if (b) {\n    var c = a.firstChild;\n\n    if (c && c === a.lastChild && 3 === c.nodeType) {\n      c.nodeValue = b;\n      return;\n    }\n  }\n\n  a.textContent = b;\n}\n\nfunction Ub(a, b) {\n  var c = {};\n  c[a.toLowerCase()] = b.toLowerCase();\n  c[\"Webkit\" + a] = \"webkit\" + b;\n  c[\"Moz\" + a] = \"moz\" + b;\n  return c;\n}\n\nvar Vb = {\n  animationend: Ub(\"Animation\", \"AnimationEnd\"),\n  animationiteration: Ub(\"Animation\", \"AnimationIteration\"),\n  animationstart: Ub(\"Animation\", \"AnimationStart\"),\n  transitionend: Ub(\"Transition\", \"TransitionEnd\")\n},\n    Wb = {},\n    Xb = {};\nYa && (Xb = document.createElement(\"div\").style, \"AnimationEvent\" in window || (delete Vb.animationend.animation, delete Vb.animationiteration.animation, delete Vb.animationstart.animation), \"TransitionEvent\" in window || delete Vb.transitionend.transition);\n\nfunction Yb(a) {\n  if (Wb[a]) return Wb[a];\n  if (!Vb[a]) return a;\n  var b = Vb[a],\n      c;\n\n  for (c in b) {\n    if (b.hasOwnProperty(c) && c in Xb) return Wb[a] = b[c];\n  }\n\n  return a;\n}\n\nvar Zb = Yb(\"animationend\"),\n    $b = Yb(\"animationiteration\"),\n    ac = Yb(\"animationstart\"),\n    bc = Yb(\"transitionend\"),\n    cc = \"abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange seeked seeking stalled suspend timeupdate volumechange waiting\".split(\" \");\n\nfunction ec(a) {\n  var b = a,\n      c = a;\n  if (a.alternate) for (; b[\"return\"];) {\n    b = b[\"return\"];\n  } else {\n    a = b;\n\n    do {\n      b = a, 0 !== (b.effectTag & 1026) && (c = b[\"return\"]), a = b[\"return\"];\n    } while (a);\n  }\n  return 3 === b.tag ? c : null;\n}\n\nfunction fc(a) {\n  if (13 === a.tag) {\n    var b = a.memoizedState;\n    null === b && (a = a.alternate, null !== a && (b = a.memoizedState));\n    if (null !== b) return b.dehydrated;\n  }\n\n  return null;\n}\n\nfunction gc(a) {\n  if (ec(a) !== a) throw Error(u(188));\n}\n\nfunction hc(a) {\n  var b = a.alternate;\n\n  if (!b) {\n    b = ec(a);\n    if (null === b) throw Error(u(188));\n    return b !== a ? null : a;\n  }\n\n  for (var c = a, d = b;;) {\n    var e = c[\"return\"];\n    if (null === e) break;\n    var f = e.alternate;\n\n    if (null === f) {\n      d = e[\"return\"];\n\n      if (null !== d) {\n        c = d;\n        continue;\n      }\n\n      break;\n    }\n\n    if (e.child === f.child) {\n      for (f = e.child; f;) {\n        if (f === c) return gc(e), a;\n        if (f === d) return gc(e), b;\n        f = f.sibling;\n      }\n\n      throw Error(u(188));\n    }\n\n    if (c[\"return\"] !== d[\"return\"]) c = e, d = f;else {\n      for (var g = !1, h = e.child; h;) {\n        if (h === c) {\n          g = !0;\n          c = e;\n          d = f;\n          break;\n        }\n\n        if (h === d) {\n          g = !0;\n          d = e;\n          c = f;\n          break;\n        }\n\n        h = h.sibling;\n      }\n\n      if (!g) {\n        for (h = f.child; h;) {\n          if (h === c) {\n            g = !0;\n            c = f;\n            d = e;\n            break;\n          }\n\n          if (h === d) {\n            g = !0;\n            d = f;\n            c = e;\n            break;\n          }\n\n          h = h.sibling;\n        }\n\n        if (!g) throw Error(u(189));\n      }\n    }\n    if (c.alternate !== d) throw Error(u(190));\n  }\n\n  if (3 !== c.tag) throw Error(u(188));\n  return c.stateNode.current === c ? a : b;\n}\n\nfunction ic(a) {\n  a = hc(a);\n  if (!a) return null;\n\n  for (var b = a;;) {\n    if (5 === b.tag || 6 === b.tag) return b;\n    if (b.child) b.child[\"return\"] = b, b = b.child;else {\n      if (b === a) break;\n\n      for (; !b.sibling;) {\n        if (!b[\"return\"] || b[\"return\"] === a) return null;\n        b = b[\"return\"];\n      }\n\n      b.sibling[\"return\"] = b[\"return\"];\n      b = b.sibling;\n    }\n  }\n\n  return null;\n}\n\nvar jc,\n    kc,\n    lc,\n    mc = !1,\n    nc = [],\n    oc = null,\n    pc = null,\n    qc = null,\n    rc = new Map(),\n    sc = new Map(),\n    tc = [],\n    uc = \"mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput close cancel copy cut paste click change contextmenu reset submit\".split(\" \"),\n    vc = \"focus blur dragenter dragleave mouseover mouseout pointerover pointerout gotpointercapture lostpointercapture\".split(\" \");\n\nfunction wc(a) {\n  var b = xc(a);\n  uc.forEach(function (c) {\n    yc(c, a, b);\n  });\n  vc.forEach(function (c) {\n    yc(c, a, b);\n  });\n}\n\nfunction zc(a, b, c, d) {\n  return {\n    blockedOn: a,\n    topLevelType: b,\n    eventSystemFlags: c | 32,\n    nativeEvent: d\n  };\n}\n\nfunction Ac(a, b) {\n  switch (a) {\n    case \"focus\":\n    case \"blur\":\n      oc = null;\n      break;\n\n    case \"dragenter\":\n    case \"dragleave\":\n      pc = null;\n      break;\n\n    case \"mouseover\":\n    case \"mouseout\":\n      qc = null;\n      break;\n\n    case \"pointerover\":\n    case \"pointerout\":\n      rc[\"delete\"](b.pointerId);\n      break;\n\n    case \"gotpointercapture\":\n    case \"lostpointercapture\":\n      sc[\"delete\"](b.pointerId);\n  }\n}\n\nfunction Bc(a, b, c, d, e) {\n  if (null === a || a.nativeEvent !== e) return a = zc(b, c, d, e), null !== b && (b = Cc(b), null !== b && kc(b)), a;\n  a.eventSystemFlags |= d;\n  return a;\n}\n\nfunction Dc(a, b, c, d) {\n  switch (b) {\n    case \"focus\":\n      return oc = Bc(oc, a, b, c, d), !0;\n\n    case \"dragenter\":\n      return pc = Bc(pc, a, b, c, d), !0;\n\n    case \"mouseover\":\n      return qc = Bc(qc, a, b, c, d), !0;\n\n    case \"pointerover\":\n      var e = d.pointerId;\n      rc.set(e, Bc(rc.get(e) || null, a, b, c, d));\n      return !0;\n\n    case \"gotpointercapture\":\n      return e = d.pointerId, sc.set(e, Bc(sc.get(e) || null, a, b, c, d)), !0;\n  }\n\n  return !1;\n}\n\nfunction Ec(a) {\n  var b = Fc(a.target);\n\n  if (null !== b) {\n    var c = ec(b);\n    if (null !== c) if (b = c.tag, 13 === b) {\n      if (b = fc(c), null !== b) {\n        a.blockedOn = b;\n        q.unstable_runWithPriority(a.priority, function () {\n          lc(c);\n        });\n        return;\n      }\n    } else if (3 === b && c.stateNode.hydrate) {\n      a.blockedOn = 3 === c.tag ? c.stateNode.containerInfo : null;\n      return;\n    }\n  }\n\n  a.blockedOn = null;\n}\n\nfunction Gc(a) {\n  if (null !== a.blockedOn) return !1;\n  var b = Hc(a.topLevelType, a.eventSystemFlags, a.nativeEvent);\n\n  if (null !== b) {\n    var c = Cc(b);\n    null !== c && kc(c);\n    a.blockedOn = b;\n    return !1;\n  }\n\n  return !0;\n}\n\nfunction Ic(a, b, c) {\n  Gc(a) && c[\"delete\"](b);\n}\n\nfunction Jc() {\n  for (mc = !1; 0 < nc.length;) {\n    var a = nc[0];\n\n    if (null !== a.blockedOn) {\n      a = Cc(a.blockedOn);\n      null !== a && jc(a);\n      break;\n    }\n\n    var b = Hc(a.topLevelType, a.eventSystemFlags, a.nativeEvent);\n    null !== b ? a.blockedOn = b : nc.shift();\n  }\n\n  null !== oc && Gc(oc) && (oc = null);\n  null !== pc && Gc(pc) && (pc = null);\n  null !== qc && Gc(qc) && (qc = null);\n  rc.forEach(Ic);\n  sc.forEach(Ic);\n}\n\nfunction Kc(a, b) {\n  a.blockedOn === b && (a.blockedOn = null, mc || (mc = !0, q.unstable_scheduleCallback(q.unstable_NormalPriority, Jc)));\n}\n\nfunction Lc(a) {\n  function b(b) {\n    return Kc(b, a);\n  }\n\n  if (0 < nc.length) {\n    Kc(nc[0], a);\n\n    for (var c = 1; c < nc.length; c++) {\n      var d = nc[c];\n      d.blockedOn === a && (d.blockedOn = null);\n    }\n  }\n\n  null !== oc && Kc(oc, a);\n  null !== pc && Kc(pc, a);\n  null !== qc && Kc(qc, a);\n  rc.forEach(b);\n  sc.forEach(b);\n\n  for (c = 0; c < tc.length; c++) {\n    d = tc[c], d.blockedOn === a && (d.blockedOn = null);\n  }\n\n  for (; 0 < tc.length && (c = tc[0], null === c.blockedOn);) {\n    Ec(c), null === c.blockedOn && tc.shift();\n  }\n}\n\nfunction Mc(a) {\n  a = a.target || a.srcElement || window;\n  a.correspondingUseElement && (a = a.correspondingUseElement);\n  return 3 === a.nodeType ? a.parentNode : a;\n}\n\nfunction Nc(a) {\n  do {\n    a = a[\"return\"];\n  } while (a && 5 !== a.tag);\n\n  return a ? a : null;\n}\n\nfunction Oc(a, b, c) {\n  if (b = Da(a, c.dispatchConfig.phasedRegistrationNames[b])) c._dispatchListeners = xa(c._dispatchListeners, b), c._dispatchInstances = xa(c._dispatchInstances, a);\n}\n\nfunction Pc(a) {\n  if (a && a.dispatchConfig.phasedRegistrationNames) {\n    for (var b = a._targetInst, c = []; b;) {\n      c.push(b), b = Nc(b);\n    }\n\n    for (b = c.length; 0 < b--;) {\n      Oc(c[b], \"captured\", a);\n    }\n\n    for (b = 0; b < c.length; b++) {\n      Oc(c[b], \"bubbled\", a);\n    }\n  }\n}\n\nfunction Qc(a, b, c) {\n  a && c && c.dispatchConfig.registrationName && (b = Da(a, c.dispatchConfig.registrationName)) && (c._dispatchListeners = xa(c._dispatchListeners, b), c._dispatchInstances = xa(c._dispatchInstances, a));\n}\n\nfunction Rc(a) {\n  a && a.dispatchConfig.registrationName && Qc(a._targetInst, null, a);\n}\n\nfunction Sc(a) {\n  ya(a, Pc);\n}\n\nfunction Tc() {\n  return !0;\n}\n\nfunction Uc() {\n  return !1;\n}\n\nfunction E(a, b, c, d) {\n  this.dispatchConfig = a;\n  this._targetInst = b;\n  this.nativeEvent = c;\n  a = this.constructor.Interface;\n\n  for (var e in a) {\n    a.hasOwnProperty(e) && ((b = a[e]) ? this[e] = b(c) : \"target\" === e ? this.target = d : this[e] = c[e]);\n  }\n\n  this.isDefaultPrevented = (null != c.defaultPrevented ? c.defaultPrevented : !1 === c.returnValue) ? Tc : Uc;\n  this.isPropagationStopped = Uc;\n  return this;\n}\n\nn(E.prototype, {\n  preventDefault: function preventDefault() {\n    this.defaultPrevented = !0;\n    var a = this.nativeEvent;\n    a && (a.preventDefault ? a.preventDefault() : \"unknown\" !== typeof a.returnValue && (a.returnValue = !1), this.isDefaultPrevented = Tc);\n  },\n  stopPropagation: function stopPropagation() {\n    var a = this.nativeEvent;\n    a && (a.stopPropagation ? a.stopPropagation() : \"unknown\" !== typeof a.cancelBubble && (a.cancelBubble = !0), this.isPropagationStopped = Tc);\n  },\n  persist: function persist() {\n    this.isPersistent = Tc;\n  },\n  isPersistent: Uc,\n  destructor: function destructor() {\n    var a = this.constructor.Interface,\n        b;\n\n    for (b in a) {\n      this[b] = null;\n    }\n\n    this.nativeEvent = this._targetInst = this.dispatchConfig = null;\n    this.isPropagationStopped = this.isDefaultPrevented = Uc;\n    this._dispatchInstances = this._dispatchListeners = null;\n  }\n});\nE.Interface = {\n  type: null,\n  target: null,\n  currentTarget: function currentTarget() {\n    return null;\n  },\n  eventPhase: null,\n  bubbles: null,\n  cancelable: null,\n  timeStamp: function timeStamp(a) {\n    return a.timeStamp || Date.now();\n  },\n  defaultPrevented: null,\n  isTrusted: null\n};\n\nE.extend = function (a) {\n  function b() {}\n\n  function c() {\n    return d.apply(this, arguments);\n  }\n\n  var d = this;\n  b.prototype = d.prototype;\n  var e = new b();\n  n(e, c.prototype);\n  c.prototype = e;\n  c.prototype.constructor = c;\n  c.Interface = n({}, d.Interface, a);\n  c.extend = d.extend;\n  Vc(c);\n  return c;\n};\n\nVc(E);\n\nfunction Wc(a, b, c, d) {\n  if (this.eventPool.length) {\n    var e = this.eventPool.pop();\n    this.call(e, a, b, c, d);\n    return e;\n  }\n\n  return new this(a, b, c, d);\n}\n\nfunction Xc(a) {\n  if (!(a instanceof this)) throw Error(u(279));\n  a.destructor();\n  10 > this.eventPool.length && this.eventPool.push(a);\n}\n\nfunction Vc(a) {\n  a.eventPool = [];\n  a.getPooled = Wc;\n  a.release = Xc;\n}\n\nvar Yc = E.extend({\n  animationName: null,\n  elapsedTime: null,\n  pseudoElement: null\n}),\n    Zc = E.extend({\n  clipboardData: function clipboardData(a) {\n    return \"clipboardData\" in a ? a.clipboardData : window.clipboardData;\n  }\n}),\n    $c = E.extend({\n  view: null,\n  detail: null\n}),\n    ad = $c.extend({\n  relatedTarget: null\n});\n\nfunction bd(a) {\n  var b = a.keyCode;\n  \"charCode\" in a ? (a = a.charCode, 0 === a && 13 === b && (a = 13)) : a = b;\n  10 === a && (a = 13);\n  return 32 <= a || 13 === a ? a : 0;\n}\n\nvar cd = {\n  Esc: \"Escape\",\n  Spacebar: \" \",\n  Left: \"ArrowLeft\",\n  Up: \"ArrowUp\",\n  Right: \"ArrowRight\",\n  Down: \"ArrowDown\",\n  Del: \"Delete\",\n  Win: \"OS\",\n  Menu: \"ContextMenu\",\n  Apps: \"ContextMenu\",\n  Scroll: \"ScrollLock\",\n  MozPrintableKey: \"Unidentified\"\n},\n    dd = {\n  8: \"Backspace\",\n  9: \"Tab\",\n  12: \"Clear\",\n  13: \"Enter\",\n  16: \"Shift\",\n  17: \"Control\",\n  18: \"Alt\",\n  19: \"Pause\",\n  20: \"CapsLock\",\n  27: \"Escape\",\n  32: \" \",\n  33: \"PageUp\",\n  34: \"PageDown\",\n  35: \"End\",\n  36: \"Home\",\n  37: \"ArrowLeft\",\n  38: \"ArrowUp\",\n  39: \"ArrowRight\",\n  40: \"ArrowDown\",\n  45: \"Insert\",\n  46: \"Delete\",\n  112: \"F1\",\n  113: \"F2\",\n  114: \"F3\",\n  115: \"F4\",\n  116: \"F5\",\n  117: \"F6\",\n  118: \"F7\",\n  119: \"F8\",\n  120: \"F9\",\n  121: \"F10\",\n  122: \"F11\",\n  123: \"F12\",\n  144: \"NumLock\",\n  145: \"ScrollLock\",\n  224: \"Meta\"\n},\n    ed = {\n  Alt: \"altKey\",\n  Control: \"ctrlKey\",\n  Meta: \"metaKey\",\n  Shift: \"shiftKey\"\n};\n\nfunction gd(a) {\n  var b = this.nativeEvent;\n  return b.getModifierState ? b.getModifierState(a) : (a = ed[a]) ? !!b[a] : !1;\n}\n\nfunction hd() {\n  return gd;\n}\n\nvar id = $c.extend({\n  key: function key(a) {\n    if (a.key) {\n      var b = cd[a.key] || a.key;\n      if (\"Unidentified\" !== b) return b;\n    }\n\n    return \"keypress\" === a.type ? (a = bd(a), 13 === a ? \"Enter\" : String.fromCharCode(a)) : \"keydown\" === a.type || \"keyup\" === a.type ? dd[a.keyCode] || \"Unidentified\" : \"\";\n  },\n  location: null,\n  ctrlKey: null,\n  shiftKey: null,\n  altKey: null,\n  metaKey: null,\n  repeat: null,\n  locale: null,\n  getModifierState: hd,\n  charCode: function charCode(a) {\n    return \"keypress\" === a.type ? bd(a) : 0;\n  },\n  keyCode: function keyCode(a) {\n    return \"keydown\" === a.type || \"keyup\" === a.type ? a.keyCode : 0;\n  },\n  which: function which(a) {\n    return \"keypress\" === a.type ? bd(a) : \"keydown\" === a.type || \"keyup\" === a.type ? a.keyCode : 0;\n  }\n}),\n    jd = 0,\n    kd = 0,\n    ld = !1,\n    md = !1,\n    nd = $c.extend({\n  screenX: null,\n  screenY: null,\n  clientX: null,\n  clientY: null,\n  pageX: null,\n  pageY: null,\n  ctrlKey: null,\n  shiftKey: null,\n  altKey: null,\n  metaKey: null,\n  getModifierState: hd,\n  button: null,\n  buttons: null,\n  relatedTarget: function relatedTarget(a) {\n    return a.relatedTarget || (a.fromElement === a.srcElement ? a.toElement : a.fromElement);\n  },\n  movementX: function movementX(a) {\n    if (\"movementX\" in a) return a.movementX;\n    var b = jd;\n    jd = a.screenX;\n    return ld ? \"mousemove\" === a.type ? a.screenX - b : 0 : (ld = !0, 0);\n  },\n  movementY: function movementY(a) {\n    if (\"movementY\" in a) return a.movementY;\n    var b = kd;\n    kd = a.screenY;\n    return md ? \"mousemove\" === a.type ? a.screenY - b : 0 : (md = !0, 0);\n  }\n}),\n    od = nd.extend({\n  pointerId: null,\n  width: null,\n  height: null,\n  pressure: null,\n  tangentialPressure: null,\n  tiltX: null,\n  tiltY: null,\n  twist: null,\n  pointerType: null,\n  isPrimary: null\n}),\n    pd = nd.extend({\n  dataTransfer: null\n}),\n    qd = $c.extend({\n  touches: null,\n  targetTouches: null,\n  changedTouches: null,\n  altKey: null,\n  metaKey: null,\n  ctrlKey: null,\n  shiftKey: null,\n  getModifierState: hd\n}),\n    rd = E.extend({\n  propertyName: null,\n  elapsedTime: null,\n  pseudoElement: null\n}),\n    sd = nd.extend({\n  deltaX: function deltaX(a) {\n    return \"deltaX\" in a ? a.deltaX : \"wheelDeltaX\" in a ? -a.wheelDeltaX : 0;\n  },\n  deltaY: function deltaY(a) {\n    return \"deltaY\" in a ? a.deltaY : \"wheelDeltaY\" in a ? -a.wheelDeltaY : \"wheelDelta\" in a ? -a.wheelDelta : 0;\n  },\n  deltaZ: null,\n  deltaMode: null\n}),\n    td = [[\"blur\", \"blur\", 0], [\"cancel\", \"cancel\", 0], [\"click\", \"click\", 0], [\"close\", \"close\", 0], [\"contextmenu\", \"contextMenu\", 0], [\"copy\", \"copy\", 0], [\"cut\", \"cut\", 0], [\"auxclick\", \"auxClick\", 0], [\"dblclick\", \"doubleClick\", 0], [\"dragend\", \"dragEnd\", 0], [\"dragstart\", \"dragStart\", 0], [\"drop\", \"drop\", 0], [\"focus\", \"focus\", 0], [\"input\", \"input\", 0], [\"invalid\", \"invalid\", 0], [\"keydown\", \"keyDown\", 0], [\"keypress\", \"keyPress\", 0], [\"keyup\", \"keyUp\", 0], [\"mousedown\", \"mouseDown\", 0], [\"mouseup\", \"mouseUp\", 0], [\"paste\", \"paste\", 0], [\"pause\", \"pause\", 0], [\"play\", \"play\", 0], [\"pointercancel\", \"pointerCancel\", 0], [\"pointerdown\", \"pointerDown\", 0], [\"pointerup\", \"pointerUp\", 0], [\"ratechange\", \"rateChange\", 0], [\"reset\", \"reset\", 0], [\"seeked\", \"seeked\", 0], [\"submit\", \"submit\", 0], [\"touchcancel\", \"touchCancel\", 0], [\"touchend\", \"touchEnd\", 0], [\"touchstart\", \"touchStart\", 0], [\"volumechange\", \"volumeChange\", 0], [\"drag\", \"drag\", 1], [\"dragenter\", \"dragEnter\", 1], [\"dragexit\", \"dragExit\", 1], [\"dragleave\", \"dragLeave\", 1], [\"dragover\", \"dragOver\", 1], [\"mousemove\", \"mouseMove\", 1], [\"mouseout\", \"mouseOut\", 1], [\"mouseover\", \"mouseOver\", 1], [\"pointermove\", \"pointerMove\", 1], [\"pointerout\", \"pointerOut\", 1], [\"pointerover\", \"pointerOver\", 1], [\"scroll\", \"scroll\", 1], [\"toggle\", \"toggle\", 1], [\"touchmove\", \"touchMove\", 1], [\"wheel\", \"wheel\", 1], [\"abort\", \"abort\", 2], [Zb, \"animationEnd\", 2], [$b, \"animationIteration\", 2], [ac, \"animationStart\", 2], [\"canplay\", \"canPlay\", 2], [\"canplaythrough\", \"canPlayThrough\", 2], [\"durationchange\", \"durationChange\", 2], [\"emptied\", \"emptied\", 2], [\"encrypted\", \"encrypted\", 2], [\"ended\", \"ended\", 2], [\"error\", \"error\", 2], [\"gotpointercapture\", \"gotPointerCapture\", 2], [\"load\", \"load\", 2], [\"loadeddata\", \"loadedData\", 2], [\"loadedmetadata\", \"loadedMetadata\", 2], [\"loadstart\", \"loadStart\", 2], [\"lostpointercapture\", \"lostPointerCapture\", 2], [\"playing\", \"playing\", 2], [\"progress\", \"progress\", 2], [\"seeking\", \"seeking\", 2], [\"stalled\", \"stalled\", 2], [\"suspend\", \"suspend\", 2], [\"timeupdate\", \"timeUpdate\", 2], [bc, \"transitionEnd\", 2], [\"waiting\", \"waiting\", 2]],\n    ud = {},\n    vd = {},\n    wd = 0;\n\nfor (; wd < td.length; wd++) {\n  var yd = td[wd],\n      zd = yd[0],\n      Ad = yd[1],\n      Bd = yd[2],\n      Cd = \"on\" + (Ad[0].toUpperCase() + Ad.slice(1)),\n      Dd = {\n    phasedRegistrationNames: {\n      bubbled: Cd,\n      captured: Cd + \"Capture\"\n    },\n    dependencies: [zd],\n    eventPriority: Bd\n  };\n  ud[Ad] = Dd;\n  vd[zd] = Dd;\n}\n\nvar Ed = {\n  eventTypes: ud,\n  getEventPriority: function getEventPriority(a) {\n    a = vd[a];\n    return void 0 !== a ? a.eventPriority : 2;\n  },\n  extractEvents: function extractEvents(a, b, c, d) {\n    var e = vd[a];\n    if (!e) return null;\n\n    switch (a) {\n      case \"keypress\":\n        if (0 === bd(c)) return null;\n\n      case \"keydown\":\n      case \"keyup\":\n        a = id;\n        break;\n\n      case \"blur\":\n      case \"focus\":\n        a = ad;\n        break;\n\n      case \"click\":\n        if (2 === c.button) return null;\n\n      case \"auxclick\":\n      case \"dblclick\":\n      case \"mousedown\":\n      case \"mousemove\":\n      case \"mouseup\":\n      case \"mouseout\":\n      case \"mouseover\":\n      case \"contextmenu\":\n        a = nd;\n        break;\n\n      case \"drag\":\n      case \"dragend\":\n      case \"dragenter\":\n      case \"dragexit\":\n      case \"dragleave\":\n      case \"dragover\":\n      case \"dragstart\":\n      case \"drop\":\n        a = pd;\n        break;\n\n      case \"touchcancel\":\n      case \"touchend\":\n      case \"touchmove\":\n      case \"touchstart\":\n        a = qd;\n        break;\n\n      case Zb:\n      case $b:\n      case ac:\n        a = Yc;\n        break;\n\n      case bc:\n        a = rd;\n        break;\n\n      case \"scroll\":\n        a = $c;\n        break;\n\n      case \"wheel\":\n        a = sd;\n        break;\n\n      case \"copy\":\n      case \"cut\":\n      case \"paste\":\n        a = Zc;\n        break;\n\n      case \"gotpointercapture\":\n      case \"lostpointercapture\":\n      case \"pointercancel\":\n      case \"pointerdown\":\n      case \"pointermove\":\n      case \"pointerout\":\n      case \"pointerover\":\n      case \"pointerup\":\n        a = od;\n        break;\n\n      default:\n        a = E;\n    }\n\n    b = a.getPooled(e, b, c, d);\n    Sc(b);\n    return b;\n  }\n},\n    Fd = q.unstable_UserBlockingPriority,\n    Gd = q.unstable_runWithPriority,\n    Hd = Ed.getEventPriority,\n    Id = 10,\n    Jd = [];\n\nfunction Kd(a) {\n  var b = a.targetInst,\n      c = b;\n\n  do {\n    if (!c) {\n      a.ancestors.push(c);\n      break;\n    }\n\n    var d = c;\n    if (3 === d.tag) d = d.stateNode.containerInfo;else {\n      for (; d[\"return\"];) {\n        d = d[\"return\"];\n      }\n\n      d = 3 !== d.tag ? null : d.stateNode.containerInfo;\n    }\n    if (!d) break;\n    b = c.tag;\n    5 !== b && 6 !== b || a.ancestors.push(c);\n    c = Fc(d);\n  } while (c);\n\n  for (c = 0; c < a.ancestors.length; c++) {\n    b = a.ancestors[c];\n    var e = Mc(a.nativeEvent);\n    d = a.topLevelType;\n\n    for (var f = a.nativeEvent, g = a.eventSystemFlags, h = null, k = 0; k < ea.length; k++) {\n      var l = ea[k];\n      l && (l = l.extractEvents(d, b, f, e, g)) && (h = xa(h, l));\n    }\n\n    Ba(h);\n  }\n}\n\nvar Ld = !0;\n\nfunction F(a, b) {\n  Md(b, a, !1);\n}\n\nfunction Md(a, b, c) {\n  switch (Hd(b)) {\n    case 0:\n      var d = Nd.bind(null, b, 1);\n      break;\n\n    case 1:\n      d = Od.bind(null, b, 1);\n      break;\n\n    default:\n      d = Pd.bind(null, b, 1);\n  }\n\n  c ? a.addEventListener(b, d, !0) : a.addEventListener(b, d, !1);\n}\n\nfunction Nd(a, b, c) {\n  ib || gb();\n  var d = Pd,\n      e = ib;\n  ib = !0;\n\n  try {\n    fb(d, a, b, c);\n  } finally {\n    (ib = e) || kb();\n  }\n}\n\nfunction Od(a, b, c) {\n  Gd(Fd, Pd.bind(null, a, b, c));\n}\n\nfunction Qd(a, b, c, d) {\n  if (Jd.length) {\n    var e = Jd.pop();\n    e.topLevelType = a;\n    e.eventSystemFlags = b;\n    e.nativeEvent = c;\n    e.targetInst = d;\n    a = e;\n  } else a = {\n    topLevelType: a,\n    eventSystemFlags: b,\n    nativeEvent: c,\n    targetInst: d,\n    ancestors: []\n  };\n\n  try {\n    if (b = Kd, c = a, jb) b(c, void 0);else {\n      jb = !0;\n\n      try {\n        hb(b, c, void 0);\n      } finally {\n        jb = !1, kb();\n      }\n    }\n  } finally {\n    a.topLevelType = null, a.nativeEvent = null, a.targetInst = null, a.ancestors.length = 0, Jd.length < Id && Jd.push(a);\n  }\n}\n\nfunction Pd(a, b, c) {\n  if (Ld) if (0 < nc.length && -1 < uc.indexOf(a)) a = zc(null, a, b, c), nc.push(a);else {\n    var d = Hc(a, b, c);\n    null === d ? Ac(a, c) : -1 < uc.indexOf(a) ? (a = zc(d, a, b, c), nc.push(a)) : Dc(d, a, b, c) || (Ac(a, c), Qd(a, b, c, null));\n  }\n}\n\nfunction Hc(a, b, c) {\n  var d = Mc(c);\n  d = Fc(d);\n\n  if (null !== d) {\n    var e = ec(d);\n    if (null === e) d = null;else {\n      var f = e.tag;\n\n      if (13 === f) {\n        d = fc(e);\n        if (null !== d) return d;\n        d = null;\n      } else if (3 === f) {\n        if (e.stateNode.hydrate) return 3 === e.tag ? e.stateNode.containerInfo : null;\n        d = null;\n      } else e !== d && (d = null);\n    }\n  }\n\n  Qd(a, b, c, d);\n  return null;\n}\n\nfunction Rd(a) {\n  if (!Ya) return !1;\n  a = \"on\" + a;\n  var b = a in document;\n  b || (b = document.createElement(\"div\"), b.setAttribute(a, \"return;\"), b = \"function\" === typeof b[a]);\n  return b;\n}\n\nvar Sd = new (\"function\" === typeof WeakMap ? WeakMap : Map)();\n\nfunction xc(a) {\n  var b = Sd.get(a);\n  void 0 === b && (b = new Set(), Sd.set(a, b));\n  return b;\n}\n\nfunction yc(a, b, c) {\n  if (!c.has(a)) {\n    switch (a) {\n      case \"scroll\":\n        Md(b, \"scroll\", !0);\n        break;\n\n      case \"focus\":\n      case \"blur\":\n        Md(b, \"focus\", !0);\n        Md(b, \"blur\", !0);\n        c.add(\"blur\");\n        c.add(\"focus\");\n        break;\n\n      case \"cancel\":\n      case \"close\":\n        Rd(a) && Md(b, a, !0);\n        break;\n\n      case \"invalid\":\n      case \"submit\":\n      case \"reset\":\n        break;\n\n      default:\n        -1 === cc.indexOf(a) && F(a, b);\n    }\n\n    c.add(a);\n  }\n}\n\nvar Td = {\n  animationIterationCount: !0,\n  borderImageOutset: !0,\n  borderImageSlice: !0,\n  borderImageWidth: !0,\n  boxFlex: !0,\n  boxFlexGroup: !0,\n  boxOrdinalGroup: !0,\n  columnCount: !0,\n  columns: !0,\n  flex: !0,\n  flexGrow: !0,\n  flexPositive: !0,\n  flexShrink: !0,\n  flexNegative: !0,\n  flexOrder: !0,\n  gridArea: !0,\n  gridRow: !0,\n  gridRowEnd: !0,\n  gridRowSpan: !0,\n  gridRowStart: !0,\n  gridColumn: !0,\n  gridColumnEnd: !0,\n  gridColumnSpan: !0,\n  gridColumnStart: !0,\n  fontWeight: !0,\n  lineClamp: !0,\n  lineHeight: !0,\n  opacity: !0,\n  order: !0,\n  orphans: !0,\n  tabSize: !0,\n  widows: !0,\n  zIndex: !0,\n  zoom: !0,\n  fillOpacity: !0,\n  floodOpacity: !0,\n  stopOpacity: !0,\n  strokeDasharray: !0,\n  strokeDashoffset: !0,\n  strokeMiterlimit: !0,\n  strokeOpacity: !0,\n  strokeWidth: !0\n},\n    Ud = [\"Webkit\", \"ms\", \"Moz\", \"O\"];\nObject.keys(Td).forEach(function (a) {\n  Ud.forEach(function (b) {\n    b = b + a.charAt(0).toUpperCase() + a.substring(1);\n    Td[b] = Td[a];\n  });\n});\n\nfunction Vd(a, b, c) {\n  return null == b || \"boolean\" === typeof b || \"\" === b ? \"\" : c || \"number\" !== typeof b || 0 === b || Td.hasOwnProperty(a) && Td[a] ? (\"\" + b).trim() : b + \"px\";\n}\n\nfunction Wd(a, b) {\n  a = a.style;\n\n  for (var c in b) {\n    if (b.hasOwnProperty(c)) {\n      var d = 0 === c.indexOf(\"--\"),\n          e = Vd(c, b[c], d);\n      \"float\" === c && (c = \"cssFloat\");\n      d ? a.setProperty(c, e) : a[c] = e;\n    }\n  }\n}\n\nvar Xd = n({\n  menuitem: !0\n}, {\n  area: !0,\n  base: !0,\n  br: !0,\n  col: !0,\n  embed: !0,\n  hr: !0,\n  img: !0,\n  input: !0,\n  keygen: !0,\n  link: !0,\n  meta: !0,\n  param: !0,\n  source: !0,\n  track: !0,\n  wbr: !0\n});\n\nfunction Yd(a, b) {\n  if (b) {\n    if (Xd[a] && (null != b.children || null != b.dangerouslySetInnerHTML)) throw Error(u(137, a, \"\"));\n\n    if (null != b.dangerouslySetInnerHTML) {\n      if (null != b.children) throw Error(u(60));\n      if (!(\"object\" === typeof b.dangerouslySetInnerHTML && \"__html\" in b.dangerouslySetInnerHTML)) throw Error(u(61));\n    }\n\n    if (null != b.style && \"object\" !== typeof b.style) throw Error(u(62, \"\"));\n  }\n}\n\nfunction Zd(a, b) {\n  if (-1 === a.indexOf(\"-\")) return \"string\" === typeof b.is;\n\n  switch (a) {\n    case \"annotation-xml\":\n    case \"color-profile\":\n    case \"font-face\":\n    case \"font-face-src\":\n    case \"font-face-uri\":\n    case \"font-face-format\":\n    case \"font-face-name\":\n    case \"missing-glyph\":\n      return !1;\n\n    default:\n      return !0;\n  }\n}\n\nfunction $d(a, b) {\n  a = 9 === a.nodeType || 11 === a.nodeType ? a : a.ownerDocument;\n  var c = xc(a);\n  b = ja[b];\n\n  for (var d = 0; d < b.length; d++) {\n    yc(b[d], a, c);\n  }\n}\n\nfunction ae() {}\n\nfunction be(a) {\n  a = a || (\"undefined\" !== typeof document ? document : void 0);\n  if (\"undefined\" === typeof a) return null;\n\n  try {\n    return a.activeElement || a.body;\n  } catch (b) {\n    return a.body;\n  }\n}\n\nfunction ce(a) {\n  for (; a && a.firstChild;) {\n    a = a.firstChild;\n  }\n\n  return a;\n}\n\nfunction de(a, b) {\n  var c = ce(a);\n  a = 0;\n\n  for (var d; c;) {\n    if (3 === c.nodeType) {\n      d = a + c.textContent.length;\n      if (a <= b && d >= b) return {\n        node: c,\n        offset: b - a\n      };\n      a = d;\n    }\n\n    a: {\n      for (; c;) {\n        if (c.nextSibling) {\n          c = c.nextSibling;\n          break a;\n        }\n\n        c = c.parentNode;\n      }\n\n      c = void 0;\n    }\n\n    c = ce(c);\n  }\n}\n\nfunction ee(a, b) {\n  return a && b ? a === b ? !0 : a && 3 === a.nodeType ? !1 : b && 3 === b.nodeType ? ee(a, b.parentNode) : \"contains\" in a ? a.contains(b) : a.compareDocumentPosition ? !!(a.compareDocumentPosition(b) & 16) : !1 : !1;\n}\n\nfunction fe() {\n  for (var a = window, b = be(); b instanceof a.HTMLIFrameElement;) {\n    try {\n      var c = \"string\" === typeof b.contentWindow.location.href;\n    } catch (d) {\n      c = !1;\n    }\n\n    if (c) a = b.contentWindow;else break;\n    b = be(a.document);\n  }\n\n  return b;\n}\n\nfunction ge(a) {\n  var b = a && a.nodeName && a.nodeName.toLowerCase();\n  return b && (\"input\" === b && (\"text\" === a.type || \"search\" === a.type || \"tel\" === a.type || \"url\" === a.type || \"password\" === a.type) || \"textarea\" === b || \"true\" === a.contentEditable);\n}\n\nvar he = \"$\",\n    ie = \"/$\",\n    je = \"$?\",\n    ke = \"$!\",\n    le = null,\n    me = null;\n\nfunction ne(a, b) {\n  switch (a) {\n    case \"button\":\n    case \"input\":\n    case \"select\":\n    case \"textarea\":\n      return !!b.autoFocus;\n  }\n\n  return !1;\n}\n\nfunction oe(a, b) {\n  return \"textarea\" === a || \"option\" === a || \"noscript\" === a || \"string\" === typeof b.children || \"number\" === typeof b.children || \"object\" === typeof b.dangerouslySetInnerHTML && null !== b.dangerouslySetInnerHTML && null != b.dangerouslySetInnerHTML.__html;\n}\n\nvar pe = \"function\" === typeof setTimeout ? setTimeout : void 0,\n    qe = \"function\" === typeof clearTimeout ? clearTimeout : void 0;\n\nfunction re(a) {\n  for (; null != a; a = a.nextSibling) {\n    var b = a.nodeType;\n    if (1 === b || 3 === b) break;\n  }\n\n  return a;\n}\n\nfunction se(a) {\n  a = a.previousSibling;\n\n  for (var b = 0; a;) {\n    if (8 === a.nodeType) {\n      var c = a.data;\n\n      if (c === he || c === ke || c === je) {\n        if (0 === b) return a;\n        b--;\n      } else c === ie && b++;\n    }\n\n    a = a.previousSibling;\n  }\n\n  return null;\n}\n\nvar te = Math.random().toString(36).slice(2),\n    ue = \"__reactInternalInstance$\" + te,\n    ve = \"__reactEventHandlers$\" + te,\n    we = \"__reactContainere$\" + te;\n\nfunction Fc(a) {\n  var b = a[ue];\n  if (b) return b;\n\n  for (var c = a.parentNode; c;) {\n    if (b = c[we] || c[ue]) {\n      c = b.alternate;\n      if (null !== b.child || null !== c && null !== c.child) for (a = se(a); null !== a;) {\n        if (c = a[ue]) return c;\n        a = se(a);\n      }\n      return b;\n    }\n\n    a = c;\n    c = a.parentNode;\n  }\n\n  return null;\n}\n\nfunction Cc(a) {\n  a = a[ue] || a[we];\n  return !a || 5 !== a.tag && 6 !== a.tag && 13 !== a.tag && 3 !== a.tag ? null : a;\n}\n\nfunction xe(a) {\n  if (5 === a.tag || 6 === a.tag) return a.stateNode;\n  throw Error(u(33));\n}\n\nfunction ye(a) {\n  return a[ve] || null;\n}\n\nvar ze = null,\n    Ae = null,\n    Be = null;\n\nfunction Ce() {\n  if (Be) return Be;\n  var a,\n      b = Ae,\n      c = b.length,\n      d,\n      e = \"value\" in ze ? ze.value : ze.textContent,\n      f = e.length;\n\n  for (a = 0; a < c && b[a] === e[a]; a++) {\n    ;\n  }\n\n  var g = c - a;\n\n  for (d = 1; d <= g && b[c - d] === e[f - d]; d++) {\n    ;\n  }\n\n  return Be = e.slice(a, 1 < d ? 1 - d : void 0);\n}\n\nvar De = E.extend({\n  data: null\n}),\n    Ee = E.extend({\n  data: null\n}),\n    Fe = [9, 13, 27, 32],\n    Ge = Ya && \"CompositionEvent\" in window,\n    He = null;\nYa && \"documentMode\" in document && (He = document.documentMode);\nvar Ie = Ya && \"TextEvent\" in window && !He,\n    Je = Ya && (!Ge || He && 8 < He && 11 >= He),\n    Ke = String.fromCharCode(32),\n    Le = {\n  beforeInput: {\n    phasedRegistrationNames: {\n      bubbled: \"onBeforeInput\",\n      captured: \"onBeforeInputCapture\"\n    },\n    dependencies: [\"compositionend\", \"keypress\", \"textInput\", \"paste\"]\n  },\n  compositionEnd: {\n    phasedRegistrationNames: {\n      bubbled: \"onCompositionEnd\",\n      captured: \"onCompositionEndCapture\"\n    },\n    dependencies: \"blur compositionend keydown keypress keyup mousedown\".split(\" \")\n  },\n  compositionStart: {\n    phasedRegistrationNames: {\n      bubbled: \"onCompositionStart\",\n      captured: \"onCompositionStartCapture\"\n    },\n    dependencies: \"blur compositionstart keydown keypress keyup mousedown\".split(\" \")\n  },\n  compositionUpdate: {\n    phasedRegistrationNames: {\n      bubbled: \"onCompositionUpdate\",\n      captured: \"onCompositionUpdateCapture\"\n    },\n    dependencies: \"blur compositionupdate keydown keypress keyup mousedown\".split(\" \")\n  }\n},\n    Me = !1;\n\nfunction Ne(a, b) {\n  switch (a) {\n    case \"keyup\":\n      return -1 !== Fe.indexOf(b.keyCode);\n\n    case \"keydown\":\n      return 229 !== b.keyCode;\n\n    case \"keypress\":\n    case \"mousedown\":\n    case \"blur\":\n      return !0;\n\n    default:\n      return !1;\n  }\n}\n\nfunction Oe(a) {\n  a = a.detail;\n  return \"object\" === typeof a && \"data\" in a ? a.data : null;\n}\n\nvar Pe = !1;\n\nfunction Qe(a, b) {\n  switch (a) {\n    case \"compositionend\":\n      return Oe(b);\n\n    case \"keypress\":\n      if (32 !== b.which) return null;\n      Me = !0;\n      return Ke;\n\n    case \"textInput\":\n      return a = b.data, a === Ke && Me ? null : a;\n\n    default:\n      return null;\n  }\n}\n\nfunction Re(a, b) {\n  if (Pe) return \"compositionend\" === a || !Ge && Ne(a, b) ? (a = Ce(), Be = Ae = ze = null, Pe = !1, a) : null;\n\n  switch (a) {\n    case \"paste\":\n      return null;\n\n    case \"keypress\":\n      if (!(b.ctrlKey || b.altKey || b.metaKey) || b.ctrlKey && b.altKey) {\n        if (b[\"char\"] && 1 < b[\"char\"].length) return b[\"char\"];\n        if (b.which) return String.fromCharCode(b.which);\n      }\n\n      return null;\n\n    case \"compositionend\":\n      return Je && \"ko\" !== b.locale ? null : b.data;\n\n    default:\n      return null;\n  }\n}\n\nvar Se = {\n  eventTypes: Le,\n  extractEvents: function extractEvents(a, b, c, d) {\n    var e;\n    if (Ge) b: {\n      switch (a) {\n        case \"compositionstart\":\n          var f = Le.compositionStart;\n          break b;\n\n        case \"compositionend\":\n          f = Le.compositionEnd;\n          break b;\n\n        case \"compositionupdate\":\n          f = Le.compositionUpdate;\n          break b;\n      }\n\n      f = void 0;\n    } else Pe ? Ne(a, c) && (f = Le.compositionEnd) : \"keydown\" === a && 229 === c.keyCode && (f = Le.compositionStart);\n    f ? (Je && \"ko\" !== c.locale && (Pe || f !== Le.compositionStart ? f === Le.compositionEnd && Pe && (e = Ce()) : (ze = d, Ae = \"value\" in ze ? ze.value : ze.textContent, Pe = !0)), f = De.getPooled(f, b, c, d), e ? f.data = e : (e = Oe(c), null !== e && (f.data = e)), Sc(f), e = f) : e = null;\n    (a = Ie ? Qe(a, c) : Re(a, c)) ? (b = Ee.getPooled(Le.beforeInput, b, c, d), b.data = a, Sc(b)) : b = null;\n    return null === e ? b : null === b ? e : [e, b];\n  }\n},\n    Te = {\n  color: !0,\n  date: !0,\n  datetime: !0,\n  \"datetime-local\": !0,\n  email: !0,\n  month: !0,\n  number: !0,\n  password: !0,\n  range: !0,\n  search: !0,\n  tel: !0,\n  text: !0,\n  time: !0,\n  url: !0,\n  week: !0\n};\n\nfunction Ue(a) {\n  var b = a && a.nodeName && a.nodeName.toLowerCase();\n  return \"input\" === b ? !!Te[a.type] : \"textarea\" === b ? !0 : !1;\n}\n\nvar Ve = {\n  change: {\n    phasedRegistrationNames: {\n      bubbled: \"onChange\",\n      captured: \"onChangeCapture\"\n    },\n    dependencies: \"blur change click focus input keydown keyup selectionchange\".split(\" \")\n  }\n};\n\nfunction We(a, b, c) {\n  a = E.getPooled(Ve.change, a, b, c);\n  a.type = \"change\";\n  cb(c);\n  Sc(a);\n  return a;\n}\n\nvar Xe = null,\n    Ye = null;\n\nfunction Ze(a) {\n  Ba(a);\n}\n\nfunction $e(a) {\n  var b = xe(a);\n  if (zb(b)) return a;\n}\n\nfunction af(a, b) {\n  if (\"change\" === a) return b;\n}\n\nvar bf = !1;\nYa && (bf = Rd(\"input\") && (!document.documentMode || 9 < document.documentMode));\n\nfunction cf() {\n  Xe && (Xe.detachEvent(\"onpropertychange\", df), Ye = Xe = null);\n}\n\nfunction df(a) {\n  if (\"value\" === a.propertyName && $e(Ye)) if (a = We(Ye, a, Mc(a)), ib) Ba(a);else {\n    ib = !0;\n\n    try {\n      eb(Ze, a);\n    } finally {\n      ib = !1, kb();\n    }\n  }\n}\n\nfunction ef(a, b, c) {\n  \"focus\" === a ? (cf(), Xe = b, Ye = c, Xe.attachEvent(\"onpropertychange\", df)) : \"blur\" === a && cf();\n}\n\nfunction ff(a) {\n  if (\"selectionchange\" === a || \"keyup\" === a || \"keydown\" === a) return $e(Ye);\n}\n\nfunction gf(a, b) {\n  if (\"click\" === a) return $e(b);\n}\n\nfunction hf(a, b) {\n  if (\"input\" === a || \"change\" === a) return $e(b);\n}\n\nvar jf = {\n  eventTypes: Ve,\n  _isInputEventSupported: bf,\n  extractEvents: function extractEvents(a, b, c, d) {\n    var e = b ? xe(b) : window,\n        f = e.nodeName && e.nodeName.toLowerCase();\n    if (\"select\" === f || \"input\" === f && \"file\" === e.type) var g = af;else if (Ue(e)) {\n      if (bf) g = hf;else {\n        g = ff;\n        var h = ef;\n      }\n    } else (f = e.nodeName) && \"input\" === f.toLowerCase() && (\"checkbox\" === e.type || \"radio\" === e.type) && (g = gf);\n    if (g && (g = g(a, b))) return We(g, c, d);\n    h && h(a, e, b);\n    \"blur\" === a && (a = e._wrapperState) && a.controlled && \"number\" === e.type && Fb(e, \"number\", e.value);\n  }\n},\n    kf = {\n  mouseEnter: {\n    registrationName: \"onMouseEnter\",\n    dependencies: [\"mouseout\", \"mouseover\"]\n  },\n  mouseLeave: {\n    registrationName: \"onMouseLeave\",\n    dependencies: [\"mouseout\", \"mouseover\"]\n  },\n  pointerEnter: {\n    registrationName: \"onPointerEnter\",\n    dependencies: [\"pointerout\", \"pointerover\"]\n  },\n  pointerLeave: {\n    registrationName: \"onPointerLeave\",\n    dependencies: [\"pointerout\", \"pointerover\"]\n  }\n},\n    lf,\n    mf = {\n  eventTypes: kf,\n  extractEvents: function extractEvents(a, b, c, d, e) {\n    var f = \"mouseover\" === a || \"pointerover\" === a,\n        g = \"mouseout\" === a || \"pointerout\" === a;\n    if (f && 0 === (e & 32) && (c.relatedTarget || c.fromElement) || !g && !f) return null;\n    e = d.window === d ? d : (e = d.ownerDocument) ? e.defaultView || e.parentWindow : window;\n\n    if (g) {\n      if (g = b, b = (b = c.relatedTarget || c.toElement) ? Fc(b) : null, null !== b && (f = ec(b), b !== f || 5 !== b.tag && 6 !== b.tag)) b = null;\n    } else g = null;\n\n    if (g === b) return null;\n\n    if (\"mouseout\" === a || \"mouseover\" === a) {\n      var h = nd;\n      var k = kf.mouseLeave;\n      var l = kf.mouseEnter;\n      var m = \"mouse\";\n    } else if (\"pointerout\" === a || \"pointerover\" === a) h = od, k = kf.pointerLeave, l = kf.pointerEnter, m = \"pointer\";\n\n    a = null == g ? e : xe(g);\n    e = null == b ? e : xe(b);\n    k = h.getPooled(k, g, c, d);\n    k.type = m + \"leave\";\n    k.target = a;\n    k.relatedTarget = e;\n    d = h.getPooled(l, b, c, d);\n    d.type = m + \"enter\";\n    d.target = e;\n    d.relatedTarget = a;\n    h = g;\n    m = b;\n    if (h && m) a: {\n      l = h;\n      a = m;\n      g = 0;\n\n      for (b = l; b; b = Nc(b)) {\n        g++;\n      }\n\n      b = 0;\n\n      for (e = a; e; e = Nc(e)) {\n        b++;\n      }\n\n      for (; 0 < g - b;) {\n        l = Nc(l), g--;\n      }\n\n      for (; 0 < b - g;) {\n        a = Nc(a), b--;\n      }\n\n      for (; g--;) {\n        if (l === a || l === a.alternate) break a;\n        l = Nc(l);\n        a = Nc(a);\n      }\n\n      l = null;\n    } else l = null;\n    a = l;\n\n    for (l = []; h && h !== a;) {\n      g = h.alternate;\n      if (null !== g && g === a) break;\n      l.push(h);\n      h = Nc(h);\n    }\n\n    for (h = []; m && m !== a;) {\n      g = m.alternate;\n      if (null !== g && g === a) break;\n      h.push(m);\n      m = Nc(m);\n    }\n\n    for (m = 0; m < l.length; m++) {\n      Qc(l[m], \"bubbled\", k);\n    }\n\n    for (m = h.length; 0 < m--;) {\n      Qc(h[m], \"captured\", d);\n    }\n\n    if (c === lf) return lf = null, [k];\n    lf = c;\n    return [k, d];\n  }\n};\n\nfunction nf(a, b) {\n  return a === b && (0 !== a || 1 / a === 1 / b) || a !== a && b !== b;\n}\n\nvar of = \"function\" === typeof Object.is ? Object.is : nf,\n    pf = Object.prototype.hasOwnProperty;\n\nfunction qf(a, b) {\n  if (of(a, b)) return !0;\n  if (\"object\" !== typeof a || null === a || \"object\" !== typeof b || null === b) return !1;\n  var c = Object.keys(a),\n      d = Object.keys(b);\n  if (c.length !== d.length) return !1;\n\n  for (d = 0; d < c.length; d++) {\n    if (!pf.call(b, c[d]) || !of(a[c[d]], b[c[d]])) return !1;\n  }\n\n  return !0;\n}\n\nvar rf = Ya && \"documentMode\" in document && 11 >= document.documentMode,\n    sf = {\n  select: {\n    phasedRegistrationNames: {\n      bubbled: \"onSelect\",\n      captured: \"onSelectCapture\"\n    },\n    dependencies: \"blur contextmenu dragend focus keydown keyup mousedown mouseup selectionchange\".split(\" \")\n  }\n},\n    tf = null,\n    uf = null,\n    vf = null,\n    wf = !1;\n\nfunction xf(a, b) {\n  var c = b.window === b ? b.document : 9 === b.nodeType ? b : b.ownerDocument;\n  if (wf || null == tf || tf !== be(c)) return null;\n  c = tf;\n  \"selectionStart\" in c && ge(c) ? c = {\n    start: c.selectionStart,\n    end: c.selectionEnd\n  } : (c = (c.ownerDocument && c.ownerDocument.defaultView || window).getSelection(), c = {\n    anchorNode: c.anchorNode,\n    anchorOffset: c.anchorOffset,\n    focusNode: c.focusNode,\n    focusOffset: c.focusOffset\n  });\n  return vf && qf(vf, c) ? null : (vf = c, a = E.getPooled(sf.select, uf, a, b), a.type = \"select\", a.target = tf, Sc(a), a);\n}\n\nvar yf = {\n  eventTypes: sf,\n  extractEvents: function extractEvents(a, b, c, d) {\n    var e = d.window === d ? d.document : 9 === d.nodeType ? d : d.ownerDocument,\n        f;\n\n    if (!(f = !e)) {\n      a: {\n        e = xc(e);\n        f = ja.onSelect;\n\n        for (var g = 0; g < f.length; g++) {\n          if (!e.has(f[g])) {\n            e = !1;\n            break a;\n          }\n        }\n\n        e = !0;\n      }\n\n      f = !e;\n    }\n\n    if (f) return null;\n    e = b ? xe(b) : window;\n\n    switch (a) {\n      case \"focus\":\n        if (Ue(e) || \"true\" === e.contentEditable) tf = e, uf = b, vf = null;\n        break;\n\n      case \"blur\":\n        vf = uf = tf = null;\n        break;\n\n      case \"mousedown\":\n        wf = !0;\n        break;\n\n      case \"contextmenu\":\n      case \"mouseup\":\n      case \"dragend\":\n        return wf = !1, xf(c, d);\n\n      case \"selectionchange\":\n        if (rf) break;\n\n      case \"keydown\":\n      case \"keyup\":\n        return xf(c, d);\n    }\n\n    return null;\n  }\n};\nCa.injectEventPluginOrder(\"ResponderEventPlugin SimpleEventPlugin EnterLeaveEventPlugin ChangeEventPlugin SelectEventPlugin BeforeInputEventPlugin\".split(\" \"));\nvar zf = Cc;\nsa = ye;\nua = zf;\nva = xe;\nCa.injectEventPluginsByName({\n  SimpleEventPlugin: Ed,\n  EnterLeaveEventPlugin: mf,\n  ChangeEventPlugin: jf,\n  SelectEventPlugin: yf,\n  BeforeInputEventPlugin: Se\n});\nnew Set();\nvar Af = [],\n    Bf = -1;\n\nfunction G(a) {\n  0 > Bf || (a.current = Af[Bf], Af[Bf] = null, Bf--);\n}\n\nfunction I(a, b) {\n  Bf++;\n  Af[Bf] = a.current;\n  a.current = b;\n}\n\nvar Cf = {},\n    J = {\n  current: Cf\n},\n    K = {\n  current: !1\n},\n    Df = Cf;\n\nfunction Ef(a, b) {\n  var c = a.type.contextTypes;\n  if (!c) return Cf;\n  var d = a.stateNode;\n  if (d && d.__reactInternalMemoizedUnmaskedChildContext === b) return d.__reactInternalMemoizedMaskedChildContext;\n  var e = {},\n      f;\n\n  for (f in c) {\n    e[f] = b[f];\n  }\n\n  d && (a = a.stateNode, a.__reactInternalMemoizedUnmaskedChildContext = b, a.__reactInternalMemoizedMaskedChildContext = e);\n  return e;\n}\n\nfunction L(a) {\n  a = a.childContextTypes;\n  return null !== a && void 0 !== a;\n}\n\nfunction Ff(a) {\n  G(K, a);\n  G(J, a);\n}\n\nfunction Gf(a) {\n  G(K, a);\n  G(J, a);\n}\n\nfunction Hf(a, b, c) {\n  if (J.current !== Cf) throw Error(u(168));\n  I(J, b, a);\n  I(K, c, a);\n}\n\nfunction If(a, b, c) {\n  var d = a.stateNode;\n  a = b.childContextTypes;\n  if (\"function\" !== typeof d.getChildContext) return c;\n  d = d.getChildContext();\n\n  for (var e in d) {\n    if (!(e in a)) throw Error(u(108, Wa(b) || \"Unknown\", e));\n  }\n\n  return n({}, c, {}, d);\n}\n\nfunction Jf(a) {\n  var b = a.stateNode;\n  b = b && b.__reactInternalMemoizedMergedChildContext || Cf;\n  Df = J.current;\n  I(J, b, a);\n  I(K, K.current, a);\n  return !0;\n}\n\nfunction Kf(a, b, c) {\n  var d = a.stateNode;\n  if (!d) throw Error(u(169));\n  c ? (b = If(a, b, Df), d.__reactInternalMemoizedMergedChildContext = b, G(K, a), G(J, a), I(J, b, a)) : G(K, a);\n  I(K, c, a);\n}\n\nvar Lf = q.unstable_runWithPriority,\n    Mf = q.unstable_scheduleCallback,\n    Nf = q.unstable_cancelCallback,\n    Of = q.unstable_shouldYield,\n    Pf = q.unstable_requestPaint,\n    Qf = q.unstable_now,\n    Rf = q.unstable_getCurrentPriorityLevel,\n    Sf = q.unstable_ImmediatePriority,\n    Tf = q.unstable_UserBlockingPriority,\n    Uf = q.unstable_NormalPriority,\n    Vf = q.unstable_LowPriority,\n    Wf = q.unstable_IdlePriority,\n    Xf = {},\n    Yf = void 0 !== Pf ? Pf : function () {},\n    Zf = null,\n    $f = null,\n    ag = !1,\n    bg = Qf(),\n    cg = 1E4 > bg ? Qf : function () {\n  return Qf() - bg;\n};\n\nfunction dg() {\n  switch (Rf()) {\n    case Sf:\n      return 99;\n\n    case Tf:\n      return 98;\n\n    case Uf:\n      return 97;\n\n    case Vf:\n      return 96;\n\n    case Wf:\n      return 95;\n\n    default:\n      throw Error(u(332));\n  }\n}\n\nfunction eg(a) {\n  switch (a) {\n    case 99:\n      return Sf;\n\n    case 98:\n      return Tf;\n\n    case 97:\n      return Uf;\n\n    case 96:\n      return Vf;\n\n    case 95:\n      return Wf;\n\n    default:\n      throw Error(u(332));\n  }\n}\n\nfunction fg(a, b) {\n  a = eg(a);\n  return Lf(a, b);\n}\n\nfunction gg(a, b, c) {\n  a = eg(a);\n  return Mf(a, b, c);\n}\n\nfunction hg(a) {\n  null === Zf ? (Zf = [a], $f = Mf(Sf, ig)) : Zf.push(a);\n  return Xf;\n}\n\nfunction jg() {\n  if (null !== $f) {\n    var a = $f;\n    $f = null;\n    Nf(a);\n  }\n\n  ig();\n}\n\nfunction ig() {\n  if (!ag && null !== Zf) {\n    ag = !0;\n    var a = 0;\n\n    try {\n      var b = Zf;\n      fg(99, function () {\n        for (; a < b.length; a++) {\n          var c = b[a];\n\n          do {\n            c = c(!0);\n          } while (null !== c);\n        }\n      });\n      Zf = null;\n    } catch (c) {\n      throw null !== Zf && (Zf = Zf.slice(a + 1)), Mf(Sf, jg), c;\n    } finally {\n      ag = !1;\n    }\n  }\n}\n\nvar kg = 3;\n\nfunction lg(a, b, c) {\n  c /= 10;\n  return 1073741821 - (((1073741821 - a + b / 10) / c | 0) + 1) * c;\n}\n\nfunction mg(a, b) {\n  if (a && a.defaultProps) {\n    b = n({}, b);\n    a = a.defaultProps;\n\n    for (var c in a) {\n      void 0 === b[c] && (b[c] = a[c]);\n    }\n  }\n\n  return b;\n}\n\nvar ng = {\n  current: null\n},\n    og = null,\n    pg = null,\n    qg = null;\n\nfunction rg() {\n  qg = pg = og = null;\n}\n\nfunction sg(a, b) {\n  var c = a.type._context;\n  I(ng, c._currentValue, a);\n  c._currentValue = b;\n}\n\nfunction tg(a) {\n  var b = ng.current;\n  G(ng, a);\n  a.type._context._currentValue = b;\n}\n\nfunction ug(a, b) {\n  for (; null !== a;) {\n    var c = a.alternate;\n    if (a.childExpirationTime < b) a.childExpirationTime = b, null !== c && c.childExpirationTime < b && (c.childExpirationTime = b);else if (null !== c && c.childExpirationTime < b) c.childExpirationTime = b;else break;\n    a = a[\"return\"];\n  }\n}\n\nfunction vg(a, b) {\n  og = a;\n  qg = pg = null;\n  a = a.dependencies;\n  null !== a && null !== a.firstContext && (a.expirationTime >= b && (wg = !0), a.firstContext = null);\n}\n\nfunction xg(a, b) {\n  if (qg !== a && !1 !== b && 0 !== b) {\n    if (\"number\" !== typeof b || 1073741823 === b) qg = a, b = 1073741823;\n    b = {\n      context: a,\n      observedBits: b,\n      next: null\n    };\n\n    if (null === pg) {\n      if (null === og) throw Error(u(308));\n      pg = b;\n      og.dependencies = {\n        expirationTime: 0,\n        firstContext: b,\n        responders: null\n      };\n    } else pg = pg.next = b;\n  }\n\n  return a._currentValue;\n}\n\nvar yg = !1;\n\nfunction zg(a) {\n  return {\n    baseState: a,\n    firstUpdate: null,\n    lastUpdate: null,\n    firstCapturedUpdate: null,\n    lastCapturedUpdate: null,\n    firstEffect: null,\n    lastEffect: null,\n    firstCapturedEffect: null,\n    lastCapturedEffect: null\n  };\n}\n\nfunction Ag(a) {\n  return {\n    baseState: a.baseState,\n    firstUpdate: a.firstUpdate,\n    lastUpdate: a.lastUpdate,\n    firstCapturedUpdate: null,\n    lastCapturedUpdate: null,\n    firstEffect: null,\n    lastEffect: null,\n    firstCapturedEffect: null,\n    lastCapturedEffect: null\n  };\n}\n\nfunction Bg(a, b) {\n  return {\n    expirationTime: a,\n    suspenseConfig: b,\n    tag: 0,\n    payload: null,\n    callback: null,\n    next: null,\n    nextEffect: null\n  };\n}\n\nfunction Cg(a, b) {\n  null === a.lastUpdate ? a.firstUpdate = a.lastUpdate = b : (a.lastUpdate.next = b, a.lastUpdate = b);\n}\n\nfunction Dg(a, b) {\n  var c = a.alternate;\n\n  if (null === c) {\n    var d = a.updateQueue;\n    var e = null;\n    null === d && (d = a.updateQueue = zg(a.memoizedState));\n  } else d = a.updateQueue, e = c.updateQueue, null === d ? null === e ? (d = a.updateQueue = zg(a.memoizedState), e = c.updateQueue = zg(c.memoizedState)) : d = a.updateQueue = Ag(e) : null === e && (e = c.updateQueue = Ag(d));\n\n  null === e || d === e ? Cg(d, b) : null === d.lastUpdate || null === e.lastUpdate ? (Cg(d, b), Cg(e, b)) : (Cg(d, b), e.lastUpdate = b);\n}\n\nfunction Eg(a, b) {\n  var c = a.updateQueue;\n  c = null === c ? a.updateQueue = zg(a.memoizedState) : Fg(a, c);\n  null === c.lastCapturedUpdate ? c.firstCapturedUpdate = c.lastCapturedUpdate = b : (c.lastCapturedUpdate.next = b, c.lastCapturedUpdate = b);\n}\n\nfunction Fg(a, b) {\n  var c = a.alternate;\n  null !== c && b === c.updateQueue && (b = a.updateQueue = Ag(b));\n  return b;\n}\n\nfunction Gg(a, b, c, d, e, f) {\n  switch (c.tag) {\n    case 1:\n      return a = c.payload, \"function\" === typeof a ? a.call(f, d, e) : a;\n\n    case 3:\n      a.effectTag = a.effectTag & -4097 | 64;\n\n    case 0:\n      a = c.payload;\n      e = \"function\" === typeof a ? a.call(f, d, e) : a;\n      if (null === e || void 0 === e) break;\n      return n({}, d, e);\n\n    case 2:\n      yg = !0;\n  }\n\n  return d;\n}\n\nfunction Hg(a, b, c, d, e) {\n  yg = !1;\n  b = Fg(a, b);\n\n  for (var f = b.baseState, g = null, h = 0, k = b.firstUpdate, l = f; null !== k;) {\n    var m = k.expirationTime;\n    m < e ? (null === g && (g = k, f = l), h < m && (h = m)) : (Ig(m, k.suspenseConfig), l = Gg(a, b, k, l, c, d), null !== k.callback && (a.effectTag |= 32, k.nextEffect = null, null === b.lastEffect ? b.firstEffect = b.lastEffect = k : (b.lastEffect.nextEffect = k, b.lastEffect = k)));\n    k = k.next;\n  }\n\n  m = null;\n\n  for (k = b.firstCapturedUpdate; null !== k;) {\n    var C = k.expirationTime;\n    C < e ? (null === m && (m = k, null === g && (f = l)), h < C && (h = C)) : (l = Gg(a, b, k, l, c, d), null !== k.callback && (a.effectTag |= 32, k.nextEffect = null, null === b.lastCapturedEffect ? b.firstCapturedEffect = b.lastCapturedEffect = k : (b.lastCapturedEffect.nextEffect = k, b.lastCapturedEffect = k)));\n    k = k.next;\n  }\n\n  null === g && (b.lastUpdate = null);\n  null === m ? b.lastCapturedUpdate = null : a.effectTag |= 32;\n  null === g && null === m && (f = l);\n  b.baseState = f;\n  b.firstUpdate = g;\n  b.firstCapturedUpdate = m;\n  Jg(h);\n  a.expirationTime = h;\n  a.memoizedState = l;\n}\n\nfunction Kg(a, b, c) {\n  null !== b.firstCapturedUpdate && (null !== b.lastUpdate && (b.lastUpdate.next = b.firstCapturedUpdate, b.lastUpdate = b.lastCapturedUpdate), b.firstCapturedUpdate = b.lastCapturedUpdate = null);\n  Lg(b.firstEffect, c);\n  b.firstEffect = b.lastEffect = null;\n  Lg(b.firstCapturedEffect, c);\n  b.firstCapturedEffect = b.lastCapturedEffect = null;\n}\n\nfunction Lg(a, b) {\n  for (; null !== a;) {\n    var c = a.callback;\n\n    if (null !== c) {\n      a.callback = null;\n      var d = b;\n      if (\"function\" !== typeof c) throw Error(u(191, c));\n      c.call(d);\n    }\n\n    a = a.nextEffect;\n  }\n}\n\nvar Mg = Ea.ReactCurrentBatchConfig,\n    Ng = new aa.Component().refs;\n\nfunction Og(a, b, c, d) {\n  b = a.memoizedState;\n  c = c(d, b);\n  c = null === c || void 0 === c ? b : n({}, b, c);\n  a.memoizedState = c;\n  d = a.updateQueue;\n  null !== d && 0 === a.expirationTime && (d.baseState = c);\n}\n\nvar Sg = {\n  isMounted: function isMounted(a) {\n    return (a = a._reactInternalFiber) ? ec(a) === a : !1;\n  },\n  enqueueSetState: function enqueueSetState(a, b, c) {\n    a = a._reactInternalFiber;\n    var d = Pg(),\n        e = Mg.suspense;\n    d = Qg(d, a, e);\n    e = Bg(d, e);\n    e.payload = b;\n    void 0 !== c && null !== c && (e.callback = c);\n    Dg(a, e);\n    Rg(a, d);\n  },\n  enqueueReplaceState: function enqueueReplaceState(a, b, c) {\n    a = a._reactInternalFiber;\n    var d = Pg(),\n        e = Mg.suspense;\n    d = Qg(d, a, e);\n    e = Bg(d, e);\n    e.tag = 1;\n    e.payload = b;\n    void 0 !== c && null !== c && (e.callback = c);\n    Dg(a, e);\n    Rg(a, d);\n  },\n  enqueueForceUpdate: function enqueueForceUpdate(a, b) {\n    a = a._reactInternalFiber;\n    var c = Pg(),\n        d = Mg.suspense;\n    c = Qg(c, a, d);\n    d = Bg(c, d);\n    d.tag = 2;\n    void 0 !== b && null !== b && (d.callback = b);\n    Dg(a, d);\n    Rg(a, c);\n  }\n};\n\nfunction Tg(a, b, c, d, e, f, g) {\n  a = a.stateNode;\n  return \"function\" === typeof a.shouldComponentUpdate ? a.shouldComponentUpdate(d, f, g) : b.prototype && b.prototype.isPureReactComponent ? !qf(c, d) || !qf(e, f) : !0;\n}\n\nfunction Ug(a, b, c) {\n  var d = !1,\n      e = Cf;\n  var f = b.contextType;\n  \"object\" === typeof f && null !== f ? f = xg(f) : (e = L(b) ? Df : J.current, d = b.contextTypes, f = (d = null !== d && void 0 !== d) ? Ef(a, e) : Cf);\n  b = new b(c, f);\n  a.memoizedState = null !== b.state && void 0 !== b.state ? b.state : null;\n  b.updater = Sg;\n  a.stateNode = b;\n  b._reactInternalFiber = a;\n  d && (a = a.stateNode, a.__reactInternalMemoizedUnmaskedChildContext = e, a.__reactInternalMemoizedMaskedChildContext = f);\n  return b;\n}\n\nfunction Vg(a, b, c, d) {\n  a = b.state;\n  \"function\" === typeof b.componentWillReceiveProps && b.componentWillReceiveProps(c, d);\n  \"function\" === typeof b.UNSAFE_componentWillReceiveProps && b.UNSAFE_componentWillReceiveProps(c, d);\n  b.state !== a && Sg.enqueueReplaceState(b, b.state, null);\n}\n\nfunction Wg(a, b, c, d) {\n  var e = a.stateNode;\n  e.props = c;\n  e.state = a.memoizedState;\n  e.refs = Ng;\n  var f = b.contextType;\n  \"object\" === typeof f && null !== f ? e.context = xg(f) : (f = L(b) ? Df : J.current, e.context = Ef(a, f));\n  f = a.updateQueue;\n  null !== f && (Hg(a, f, c, e, d), e.state = a.memoizedState);\n  f = b.getDerivedStateFromProps;\n  \"function\" === typeof f && (Og(a, b, f, c), e.state = a.memoizedState);\n  \"function\" === typeof b.getDerivedStateFromProps || \"function\" === typeof e.getSnapshotBeforeUpdate || \"function\" !== typeof e.UNSAFE_componentWillMount && \"function\" !== typeof e.componentWillMount || (b = e.state, \"function\" === typeof e.componentWillMount && e.componentWillMount(), \"function\" === typeof e.UNSAFE_componentWillMount && e.UNSAFE_componentWillMount(), b !== e.state && Sg.enqueueReplaceState(e, e.state, null), f = a.updateQueue, null !== f && (Hg(a, f, c, e, d), e.state = a.memoizedState));\n  \"function\" === typeof e.componentDidMount && (a.effectTag |= 4);\n}\n\nvar Xg = Array.isArray;\n\nfunction Yg(a, b, c) {\n  a = c.ref;\n\n  if (null !== a && \"function\" !== typeof a && \"object\" !== typeof a) {\n    if (c._owner) {\n      c = c._owner;\n\n      if (c) {\n        if (1 !== c.tag) throw Error(u(309));\n        var d = c.stateNode;\n      }\n\n      if (!d) throw Error(u(147, a));\n      var e = \"\" + a;\n      if (null !== b && null !== b.ref && \"function\" === typeof b.ref && b.ref._stringRef === e) return b.ref;\n\n      b = function b(a) {\n        var b = d.refs;\n        b === Ng && (b = d.refs = {});\n        null === a ? delete b[e] : b[e] = a;\n      };\n\n      b._stringRef = e;\n      return b;\n    }\n\n    if (\"string\" !== typeof a) throw Error(u(284));\n    if (!c._owner) throw Error(u(290, a));\n  }\n\n  return a;\n}\n\nfunction Zg(a, b) {\n  if (\"textarea\" !== a.type) throw Error(u(31, \"[object Object]\" === Object.prototype.toString.call(b) ? \"object with keys {\" + Object.keys(b).join(\", \") + \"}\" : b, \"\"));\n}\n\nfunction $g(a) {\n  function b(b, c) {\n    if (a) {\n      var d = b.lastEffect;\n      null !== d ? (d.nextEffect = c, b.lastEffect = c) : b.firstEffect = b.lastEffect = c;\n      c.nextEffect = null;\n      c.effectTag = 8;\n    }\n  }\n\n  function c(c, d) {\n    if (!a) return null;\n\n    for (; null !== d;) {\n      b(c, d), d = d.sibling;\n    }\n\n    return null;\n  }\n\n  function d(a, b) {\n    for (a = new Map(); null !== b;) {\n      null !== b.key ? a.set(b.key, b) : a.set(b.index, b), b = b.sibling;\n    }\n\n    return a;\n  }\n\n  function e(a, b, c) {\n    a = ah(a, b, c);\n    a.index = 0;\n    a.sibling = null;\n    return a;\n  }\n\n  function f(b, c, d) {\n    b.index = d;\n    if (!a) return c;\n    d = b.alternate;\n    if (null !== d) return d = d.index, d < c ? (b.effectTag = 2, c) : d;\n    b.effectTag = 2;\n    return c;\n  }\n\n  function g(b) {\n    a && null === b.alternate && (b.effectTag = 2);\n    return b;\n  }\n\n  function h(a, b, c, d) {\n    if (null === b || 6 !== b.tag) return b = bh(c, a.mode, d), b[\"return\"] = a, b;\n    b = e(b, c, d);\n    b[\"return\"] = a;\n    return b;\n  }\n\n  function k(a, b, c, d) {\n    if (null !== b && b.elementType === c.type) return d = e(b, c.props, d), d.ref = Yg(a, b, c), d[\"return\"] = a, d;\n    d = ch(c.type, c.key, c.props, null, a.mode, d);\n    d.ref = Yg(a, b, c);\n    d[\"return\"] = a;\n    return d;\n  }\n\n  function l(a, b, c, d) {\n    if (null === b || 4 !== b.tag || b.stateNode.containerInfo !== c.containerInfo || b.stateNode.implementation !== c.implementation) return b = dh(c, a.mode, d), b[\"return\"] = a, b;\n    b = e(b, c.children || [], d);\n    b[\"return\"] = a;\n    return b;\n  }\n\n  function m(a, b, c, d, f) {\n    if (null === b || 7 !== b.tag) return b = eh(c, a.mode, d, f), b[\"return\"] = a, b;\n    b = e(b, c, d);\n    b[\"return\"] = a;\n    return b;\n  }\n\n  function C(a, b, c) {\n    if (\"string\" === typeof b || \"number\" === typeof b) return b = bh(\"\" + b, a.mode, c), b[\"return\"] = a, b;\n\n    if (\"object\" === typeof b && null !== b) {\n      switch (b.$$typeof) {\n        case Ga:\n          return c = ch(b.type, b.key, b.props, null, a.mode, c), c.ref = Yg(a, null, b), c[\"return\"] = a, c;\n\n        case Ha:\n          return b = dh(b, a.mode, c), b[\"return\"] = a, b;\n      }\n\n      if (Xg(b) || Ua(b)) return b = eh(b, a.mode, c, null), b[\"return\"] = a, b;\n      Zg(a, b);\n    }\n\n    return null;\n  }\n\n  function y(a, b, c, d) {\n    var e = null !== b ? b.key : null;\n    if (\"string\" === typeof c || \"number\" === typeof c) return null !== e ? null : h(a, b, \"\" + c, d);\n\n    if (\"object\" === typeof c && null !== c) {\n      switch (c.$$typeof) {\n        case Ga:\n          return c.key === e ? c.type === Ia ? m(a, b, c.props.children, d, e) : k(a, b, c, d) : null;\n\n        case Ha:\n          return c.key === e ? l(a, b, c, d) : null;\n      }\n\n      if (Xg(c) || Ua(c)) return null !== e ? null : m(a, b, c, d, null);\n      Zg(a, c);\n    }\n\n    return null;\n  }\n\n  function H(a, b, c, d, e) {\n    if (\"string\" === typeof d || \"number\" === typeof d) return a = a.get(c) || null, h(b, a, \"\" + d, e);\n\n    if (\"object\" === typeof d && null !== d) {\n      switch (d.$$typeof) {\n        case Ga:\n          return a = a.get(null === d.key ? c : d.key) || null, d.type === Ia ? m(b, a, d.props.children, e, d.key) : k(b, a, d, e);\n\n        case Ha:\n          return a = a.get(null === d.key ? c : d.key) || null, l(b, a, d, e);\n      }\n\n      if (Xg(d) || Ua(d)) return a = a.get(c) || null, m(b, a, d, e, null);\n      Zg(b, d);\n    }\n\n    return null;\n  }\n\n  function z(e, g, h, k) {\n    for (var l = null, m = null, r = g, x = g = 0, A = null; null !== r && x < h.length; x++) {\n      r.index > x ? (A = r, r = null) : A = r.sibling;\n      var p = y(e, r, h[x], k);\n\n      if (null === p) {\n        null === r && (r = A);\n        break;\n      }\n\n      a && r && null === p.alternate && b(e, r);\n      g = f(p, g, x);\n      null === m ? l = p : m.sibling = p;\n      m = p;\n      r = A;\n    }\n\n    if (x === h.length) return c(e, r), l;\n\n    if (null === r) {\n      for (; x < h.length; x++) {\n        r = C(e, h[x], k), null !== r && (g = f(r, g, x), null === m ? l = r : m.sibling = r, m = r);\n      }\n\n      return l;\n    }\n\n    for (r = d(e, r); x < h.length; x++) {\n      A = H(r, e, x, h[x], k), null !== A && (a && null !== A.alternate && r[\"delete\"](null === A.key ? x : A.key), g = f(A, g, x), null === m ? l = A : m.sibling = A, m = A);\n    }\n\n    a && r.forEach(function (a) {\n      return b(e, a);\n    });\n    return l;\n  }\n\n  function ta(e, g, h, k) {\n    var l = Ua(h);\n    if (\"function\" !== typeof l) throw Error(u(150));\n    h = l.call(h);\n    if (null == h) throw Error(u(151));\n\n    for (var m = l = null, r = g, x = g = 0, A = null, p = h.next(); null !== r && !p.done; x++, p = h.next()) {\n      r.index > x ? (A = r, r = null) : A = r.sibling;\n      var z = y(e, r, p.value, k);\n\n      if (null === z) {\n        null === r && (r = A);\n        break;\n      }\n\n      a && r && null === z.alternate && b(e, r);\n      g = f(z, g, x);\n      null === m ? l = z : m.sibling = z;\n      m = z;\n      r = A;\n    }\n\n    if (p.done) return c(e, r), l;\n\n    if (null === r) {\n      for (; !p.done; x++, p = h.next()) {\n        p = C(e, p.value, k), null !== p && (g = f(p, g, x), null === m ? l = p : m.sibling = p, m = p);\n      }\n\n      return l;\n    }\n\n    for (r = d(e, r); !p.done; x++, p = h.next()) {\n      p = H(r, e, x, p.value, k), null !== p && (a && null !== p.alternate && r[\"delete\"](null === p.key ? x : p.key), g = f(p, g, x), null === m ? l = p : m.sibling = p, m = p);\n    }\n\n    a && r.forEach(function (a) {\n      return b(e, a);\n    });\n    return l;\n  }\n\n  return function (a, d, f, h) {\n    var k = \"object\" === typeof f && null !== f && f.type === Ia && null === f.key;\n    k && (f = f.props.children);\n    var l = \"object\" === typeof f && null !== f;\n    if (l) switch (f.$$typeof) {\n      case Ga:\n        a: {\n          l = f.key;\n\n          for (k = d; null !== k;) {\n            if (k.key === l) {\n              if (7 === k.tag ? f.type === Ia : k.elementType === f.type) {\n                c(a, k.sibling);\n                d = e(k, f.type === Ia ? f.props.children : f.props, h);\n                d.ref = Yg(a, k, f);\n                d[\"return\"] = a;\n                a = d;\n                break a;\n              } else {\n                c(a, k);\n                break;\n              }\n            } else b(a, k);\n            k = k.sibling;\n          }\n\n          f.type === Ia ? (d = eh(f.props.children, a.mode, h, f.key), d[\"return\"] = a, a = d) : (h = ch(f.type, f.key, f.props, null, a.mode, h), h.ref = Yg(a, d, f), h[\"return\"] = a, a = h);\n        }\n\n        return g(a);\n\n      case Ha:\n        a: {\n          for (k = f.key; null !== d;) {\n            if (d.key === k) {\n              if (4 === d.tag && d.stateNode.containerInfo === f.containerInfo && d.stateNode.implementation === f.implementation) {\n                c(a, d.sibling);\n                d = e(d, f.children || [], h);\n                d[\"return\"] = a;\n                a = d;\n                break a;\n              } else {\n                c(a, d);\n                break;\n              }\n            } else b(a, d);\n            d = d.sibling;\n          }\n\n          d = dh(f, a.mode, h);\n          d[\"return\"] = a;\n          a = d;\n        }\n\n        return g(a);\n    }\n    if (\"string\" === typeof f || \"number\" === typeof f) return f = \"\" + f, null !== d && 6 === d.tag ? (c(a, d.sibling), d = e(d, f, h), d[\"return\"] = a, a = d) : (c(a, d), d = bh(f, a.mode, h), d[\"return\"] = a, a = d), g(a);\n    if (Xg(f)) return z(a, d, f, h);\n    if (Ua(f)) return ta(a, d, f, h);\n    l && Zg(a, f);\n    if (\"undefined\" === typeof f && !k) switch (a.tag) {\n      case 1:\n      case 0:\n        throw a = a.type, Error(u(152, a.displayName || a.name || \"Component\"));\n    }\n    return c(a, d);\n  };\n}\n\nvar fh = $g(!0),\n    gh = $g(!1),\n    hh = {},\n    ih = {\n  current: hh\n},\n    jh = {\n  current: hh\n},\n    kh = {\n  current: hh\n};\n\nfunction lh(a) {\n  if (a === hh) throw Error(u(174));\n  return a;\n}\n\nfunction mh(a, b) {\n  I(kh, b, a);\n  I(jh, a, a);\n  I(ih, hh, a);\n  var c = b.nodeType;\n\n  switch (c) {\n    case 9:\n    case 11:\n      b = (b = b.documentElement) ? b.namespaceURI : Qb(null, \"\");\n      break;\n\n    default:\n      c = 8 === c ? b.parentNode : b, b = c.namespaceURI || null, c = c.tagName, b = Qb(b, c);\n  }\n\n  G(ih, a);\n  I(ih, b, a);\n}\n\nfunction nh(a) {\n  G(ih, a);\n  G(jh, a);\n  G(kh, a);\n}\n\nfunction oh(a) {\n  lh(kh.current);\n  var b = lh(ih.current);\n  var c = Qb(b, a.type);\n  b !== c && (I(jh, a, a), I(ih, c, a));\n}\n\nfunction ph(a) {\n  jh.current === a && (G(ih, a), G(jh, a));\n}\n\nvar M = {\n  current: 0\n};\n\nfunction qh(a) {\n  for (var b = a; null !== b;) {\n    if (13 === b.tag) {\n      var c = b.memoizedState;\n      if (null !== c && (c = c.dehydrated, null === c || c.data === je || c.data === ke)) return b;\n    } else if (19 === b.tag && void 0 !== b.memoizedProps.revealOrder) {\n      if (0 !== (b.effectTag & 64)) return b;\n    } else if (null !== b.child) {\n      b.child[\"return\"] = b;\n      b = b.child;\n      continue;\n    }\n\n    if (b === a) break;\n\n    for (; null === b.sibling;) {\n      if (null === b[\"return\"] || b[\"return\"] === a) return null;\n      b = b[\"return\"];\n    }\n\n    b.sibling[\"return\"] = b[\"return\"];\n    b = b.sibling;\n  }\n\n  return null;\n}\n\nfunction rh(a, b) {\n  return {\n    responder: a,\n    props: b\n  };\n}\n\nvar sh = Ea.ReactCurrentDispatcher,\n    N = Ea.ReactCurrentBatchConfig,\n    th = 0,\n    uh = null,\n    O = null,\n    vh = null,\n    wh = null,\n    P = null,\n    xh = null,\n    yh = 0,\n    zh = null,\n    Ah = 0,\n    Bh = !1,\n    Ch = null,\n    Gh = 0;\n\nfunction Q() {\n  throw Error(u(321));\n}\n\nfunction Hh(a, b) {\n  if (null === b) return !1;\n\n  for (var c = 0; c < b.length && c < a.length; c++) {\n    if (!of(a[c], b[c])) return !1;\n  }\n\n  return !0;\n}\n\nfunction Ih(a, b, c, d, e, f) {\n  th = f;\n  uh = b;\n  vh = null !== a ? a.memoizedState : null;\n  sh.current = null === vh ? Jh : Kh;\n  b = c(d, e);\n\n  if (Bh) {\n    do {\n      Bh = !1, Gh += 1, vh = null !== a ? a.memoizedState : null, xh = wh, zh = P = O = null, sh.current = Kh, b = c(d, e);\n    } while (Bh);\n\n    Ch = null;\n    Gh = 0;\n  }\n\n  sh.current = Lh;\n  a = uh;\n  a.memoizedState = wh;\n  a.expirationTime = yh;\n  a.updateQueue = zh;\n  a.effectTag |= Ah;\n  a = null !== O && null !== O.next;\n  th = 0;\n  xh = P = wh = vh = O = uh = null;\n  yh = 0;\n  zh = null;\n  Ah = 0;\n  if (a) throw Error(u(300));\n  return b;\n}\n\nfunction Mh() {\n  sh.current = Lh;\n  th = 0;\n  xh = P = wh = vh = O = uh = null;\n  yh = 0;\n  zh = null;\n  Ah = 0;\n  Bh = !1;\n  Ch = null;\n  Gh = 0;\n}\n\nfunction Nh() {\n  var a = {\n    memoizedState: null,\n    baseState: null,\n    queue: null,\n    baseUpdate: null,\n    next: null\n  };\n  null === P ? wh = P = a : P = P.next = a;\n  return P;\n}\n\nfunction Oh() {\n  if (null !== xh) P = xh, xh = P.next, O = vh, vh = null !== O ? O.next : null;else {\n    if (null === vh) throw Error(u(310));\n    O = vh;\n    var a = {\n      memoizedState: O.memoizedState,\n      baseState: O.baseState,\n      queue: O.queue,\n      baseUpdate: O.baseUpdate,\n      next: null\n    };\n    P = null === P ? wh = a : P.next = a;\n    vh = O.next;\n  }\n  return P;\n}\n\nfunction Ph(a, b) {\n  return \"function\" === typeof b ? b(a) : b;\n}\n\nfunction Qh(a) {\n  var b = Oh(),\n      c = b.queue;\n  if (null === c) throw Error(u(311));\n  c.lastRenderedReducer = a;\n\n  if (0 < Gh) {\n    var d = c.dispatch;\n\n    if (null !== Ch) {\n      var e = Ch.get(c);\n\n      if (void 0 !== e) {\n        Ch[\"delete\"](c);\n        var f = b.memoizedState;\n\n        do {\n          f = a(f, e.action), e = e.next;\n        } while (null !== e);\n\n        of(f, b.memoizedState) || (wg = !0);\n        b.memoizedState = f;\n        b.baseUpdate === c.last && (b.baseState = f);\n        c.lastRenderedState = f;\n        return [f, d];\n      }\n    }\n\n    return [b.memoizedState, d];\n  }\n\n  d = c.last;\n  var g = b.baseUpdate;\n  f = b.baseState;\n  null !== g ? (null !== d && (d.next = null), d = g.next) : d = null !== d ? d.next : null;\n\n  if (null !== d) {\n    var h = e = null,\n        k = d,\n        l = !1;\n\n    do {\n      var m = k.expirationTime;\n      m < th ? (l || (l = !0, h = g, e = f), m > yh && (yh = m, Jg(yh))) : (Ig(m, k.suspenseConfig), f = k.eagerReducer === a ? k.eagerState : a(f, k.action));\n      g = k;\n      k = k.next;\n    } while (null !== k && k !== d);\n\n    l || (h = g, e = f);\n    of(f, b.memoizedState) || (wg = !0);\n    b.memoizedState = f;\n    b.baseUpdate = h;\n    b.baseState = e;\n    c.lastRenderedState = f;\n  }\n\n  return [b.memoizedState, c.dispatch];\n}\n\nfunction Rh(a) {\n  var b = Nh();\n  \"function\" === typeof a && (a = a());\n  b.memoizedState = b.baseState = a;\n  a = b.queue = {\n    last: null,\n    dispatch: null,\n    lastRenderedReducer: Ph,\n    lastRenderedState: a\n  };\n  a = a.dispatch = Sh.bind(null, uh, a);\n  return [b.memoizedState, a];\n}\n\nfunction Th(a) {\n  return Qh(Ph, a);\n}\n\nfunction Uh(a, b, c, d) {\n  a = {\n    tag: a,\n    create: b,\n    destroy: c,\n    deps: d,\n    next: null\n  };\n  null === zh ? (zh = {\n    lastEffect: null\n  }, zh.lastEffect = a.next = a) : (b = zh.lastEffect, null === b ? zh.lastEffect = a.next = a : (c = b.next, b.next = a, a.next = c, zh.lastEffect = a));\n  return a;\n}\n\nfunction Vh(a, b, c, d) {\n  var e = Nh();\n  Ah |= a;\n  e.memoizedState = Uh(b, c, void 0, void 0 === d ? null : d);\n}\n\nfunction Wh(a, b, c, d) {\n  var e = Oh();\n  d = void 0 === d ? null : d;\n  var f = void 0;\n\n  if (null !== O) {\n    var g = O.memoizedState;\n    f = g.destroy;\n\n    if (null !== d && Hh(d, g.deps)) {\n      Uh(0, c, f, d);\n      return;\n    }\n  }\n\n  Ah |= a;\n  e.memoizedState = Uh(b, c, f, d);\n}\n\nfunction Xh(a, b) {\n  return Vh(516, 192, a, b);\n}\n\nfunction Yh(a, b) {\n  return Wh(516, 192, a, b);\n}\n\nfunction Zh(a, b) {\n  if (\"function\" === typeof b) return a = a(), b(a), function () {\n    b(null);\n  };\n  if (null !== b && void 0 !== b) return a = a(), b.current = a, function () {\n    b.current = null;\n  };\n}\n\nfunction $h() {}\n\nfunction ai(a, b) {\n  Nh().memoizedState = [a, void 0 === b ? null : b];\n  return a;\n}\n\nfunction bi(a, b) {\n  var c = Oh();\n  b = void 0 === b ? null : b;\n  var d = c.memoizedState;\n  if (null !== d && null !== b && Hh(b, d[1])) return d[0];\n  c.memoizedState = [a, b];\n  return a;\n}\n\nfunction Sh(a, b, c) {\n  if (!(25 > Gh)) throw Error(u(301));\n  var d = a.alternate;\n  if (a === uh || null !== d && d === uh) {\n    if (Bh = !0, a = {\n      expirationTime: th,\n      suspenseConfig: null,\n      action: c,\n      eagerReducer: null,\n      eagerState: null,\n      next: null\n    }, null === Ch && (Ch = new Map()), c = Ch.get(b), void 0 === c) Ch.set(b, a);else {\n      for (b = c; null !== b.next;) {\n        b = b.next;\n      }\n\n      b.next = a;\n    }\n  } else {\n    var e = Pg(),\n        f = Mg.suspense;\n    e = Qg(e, a, f);\n    f = {\n      expirationTime: e,\n      suspenseConfig: f,\n      action: c,\n      eagerReducer: null,\n      eagerState: null,\n      next: null\n    };\n    var g = b.last;\n    if (null === g) f.next = f;else {\n      var h = g.next;\n      null !== h && (f.next = h);\n      g.next = f;\n    }\n    b.last = f;\n    if (0 === a.expirationTime && (null === d || 0 === d.expirationTime) && (d = b.lastRenderedReducer, null !== d)) try {\n      var k = b.lastRenderedState,\n          l = d(k, c);\n      f.eagerReducer = d;\n      f.eagerState = l;\n      if (of(l, k)) return;\n    } catch (m) {} finally {}\n    Rg(a, e);\n  }\n}\n\nvar Lh = {\n  readContext: xg,\n  useCallback: Q,\n  useContext: Q,\n  useEffect: Q,\n  useImperativeHandle: Q,\n  useLayoutEffect: Q,\n  useMemo: Q,\n  useReducer: Q,\n  useRef: Q,\n  useState: Q,\n  useDebugValue: Q,\n  useResponder: Q,\n  useDeferredValue: Q,\n  useTransition: Q\n},\n    Jh = {\n  readContext: xg,\n  useCallback: ai,\n  useContext: xg,\n  useEffect: Xh,\n  useImperativeHandle: function useImperativeHandle(a, b, c) {\n    c = null !== c && void 0 !== c ? c.concat([a]) : null;\n    return Vh(4, 36, Zh.bind(null, b, a), c);\n  },\n  useLayoutEffect: function useLayoutEffect(a, b) {\n    return Vh(4, 36, a, b);\n  },\n  useMemo: function useMemo(a, b) {\n    var c = Nh();\n    b = void 0 === b ? null : b;\n    a = a();\n    c.memoizedState = [a, b];\n    return a;\n  },\n  useReducer: function useReducer(a, b, c) {\n    var d = Nh();\n    b = void 0 !== c ? c(b) : b;\n    d.memoizedState = d.baseState = b;\n    a = d.queue = {\n      last: null,\n      dispatch: null,\n      lastRenderedReducer: a,\n      lastRenderedState: b\n    };\n    a = a.dispatch = Sh.bind(null, uh, a);\n    return [d.memoizedState, a];\n  },\n  useRef: function useRef(a) {\n    var b = Nh();\n    a = {\n      current: a\n    };\n    return b.memoizedState = a;\n  },\n  useState: Rh,\n  useDebugValue: $h,\n  useResponder: rh,\n  useDeferredValue: function useDeferredValue(a, b) {\n    var c = Rh(a),\n        d = c[0],\n        e = c[1];\n    Xh(function () {\n      q.unstable_next(function () {\n        var c = N.suspense;\n        N.suspense = void 0 === b ? null : b;\n\n        try {\n          e(a);\n        } finally {\n          N.suspense = c;\n        }\n      });\n    }, [a, b]);\n    return d;\n  },\n  useTransition: function useTransition(a) {\n    var b = Rh(!1),\n        c = b[0],\n        d = b[1];\n    return [ai(function (b) {\n      d(!0);\n      q.unstable_next(function () {\n        var c = N.suspense;\n        N.suspense = void 0 === a ? null : a;\n\n        try {\n          d(!1), b();\n        } finally {\n          N.suspense = c;\n        }\n      });\n    }, [a, c]), c];\n  }\n},\n    Kh = {\n  readContext: xg,\n  useCallback: bi,\n  useContext: xg,\n  useEffect: Yh,\n  useImperativeHandle: function useImperativeHandle(a, b, c) {\n    c = null !== c && void 0 !== c ? c.concat([a]) : null;\n    return Wh(4, 36, Zh.bind(null, b, a), c);\n  },\n  useLayoutEffect: function useLayoutEffect(a, b) {\n    return Wh(4, 36, a, b);\n  },\n  useMemo: function useMemo(a, b) {\n    var c = Oh();\n    b = void 0 === b ? null : b;\n    var d = c.memoizedState;\n    if (null !== d && null !== b && Hh(b, d[1])) return d[0];\n    a = a();\n    c.memoizedState = [a, b];\n    return a;\n  },\n  useReducer: Qh,\n  useRef: function useRef() {\n    return Oh().memoizedState;\n  },\n  useState: Th,\n  useDebugValue: $h,\n  useResponder: rh,\n  useDeferredValue: function useDeferredValue(a, b) {\n    var c = Th(a),\n        d = c[0],\n        e = c[1];\n    Yh(function () {\n      q.unstable_next(function () {\n        var c = N.suspense;\n        N.suspense = void 0 === b ? null : b;\n\n        try {\n          e(a);\n        } finally {\n          N.suspense = c;\n        }\n      });\n    }, [a, b]);\n    return d;\n  },\n  useTransition: function useTransition(a) {\n    var b = Th(!1),\n        c = b[0],\n        d = b[1];\n    return [bi(function (b) {\n      d(!0);\n      q.unstable_next(function () {\n        var c = N.suspense;\n        N.suspense = void 0 === a ? null : a;\n\n        try {\n          d(!1), b();\n        } finally {\n          N.suspense = c;\n        }\n      });\n    }, [a, c]), c];\n  }\n},\n    ci = null,\n    di = null,\n    ei = !1;\n\nfunction fi(a, b) {\n  var c = gi(5, null, null, 0);\n  c.elementType = \"DELETED\";\n  c.type = \"DELETED\";\n  c.stateNode = b;\n  c[\"return\"] = a;\n  c.effectTag = 8;\n  null !== a.lastEffect ? (a.lastEffect.nextEffect = c, a.lastEffect = c) : a.firstEffect = a.lastEffect = c;\n}\n\nfunction hi(a, b) {\n  switch (a.tag) {\n    case 5:\n      var c = a.type;\n      b = 1 !== b.nodeType || c.toLowerCase() !== b.nodeName.toLowerCase() ? null : b;\n      return null !== b ? (a.stateNode = b, !0) : !1;\n\n    case 6:\n      return b = \"\" === a.pendingProps || 3 !== b.nodeType ? null : b, null !== b ? (a.stateNode = b, !0) : !1;\n\n    case 13:\n      return !1;\n\n    default:\n      return !1;\n  }\n}\n\nfunction ii(a) {\n  if (ei) {\n    var b = di;\n\n    if (b) {\n      var c = b;\n\n      if (!hi(a, b)) {\n        b = re(c.nextSibling);\n\n        if (!b || !hi(a, b)) {\n          a.effectTag = a.effectTag & -1025 | 2;\n          ei = !1;\n          ci = a;\n          return;\n        }\n\n        fi(ci, c);\n      }\n\n      ci = a;\n      di = re(b.firstChild);\n    } else a.effectTag = a.effectTag & -1025 | 2, ei = !1, ci = a;\n  }\n}\n\nfunction ji(a) {\n  for (a = a[\"return\"]; null !== a && 5 !== a.tag && 3 !== a.tag && 13 !== a.tag;) {\n    a = a[\"return\"];\n  }\n\n  ci = a;\n}\n\nfunction ki(a) {\n  if (a !== ci) return !1;\n  if (!ei) return ji(a), ei = !0, !1;\n  var b = a.type;\n  if (5 !== a.tag || \"head\" !== b && \"body\" !== b && !oe(b, a.memoizedProps)) for (b = di; b;) {\n    fi(a, b), b = re(b.nextSibling);\n  }\n  ji(a);\n\n  if (13 === a.tag) {\n    a = a.memoizedState;\n    a = null !== a ? a.dehydrated : null;\n    if (!a) throw Error(u(317));\n\n    a: {\n      a = a.nextSibling;\n\n      for (b = 0; a;) {\n        if (8 === a.nodeType) {\n          var c = a.data;\n\n          if (c === ie) {\n            if (0 === b) {\n              di = re(a.nextSibling);\n              break a;\n            }\n\n            b--;\n          } else c !== he && c !== ke && c !== je || b++;\n        }\n\n        a = a.nextSibling;\n      }\n\n      di = null;\n    }\n  } else di = ci ? re(a.stateNode.nextSibling) : null;\n\n  return !0;\n}\n\nfunction li() {\n  di = ci = null;\n  ei = !1;\n}\n\nvar mi = Ea.ReactCurrentOwner,\n    wg = !1;\n\nfunction R(a, b, c, d) {\n  b.child = null === a ? gh(b, null, c, d) : fh(b, a.child, c, d);\n}\n\nfunction ni(a, b, c, d, e) {\n  c = c.render;\n  var f = b.ref;\n  vg(b, e);\n  d = Ih(a, b, c, d, f, e);\n  if (null !== a && !wg) return b.updateQueue = a.updateQueue, b.effectTag &= -517, a.expirationTime <= e && (a.expirationTime = 0), oi(a, b, e);\n  b.effectTag |= 1;\n  R(a, b, d, e);\n  return b.child;\n}\n\nfunction pi(a, b, c, d, e, f) {\n  if (null === a) {\n    var g = c.type;\n    if (\"function\" === typeof g && !qi(g) && void 0 === g.defaultProps && null === c.compare && void 0 === c.defaultProps) return b.tag = 15, b.type = g, ri(a, b, g, d, e, f);\n    a = ch(c.type, null, d, null, b.mode, f);\n    a.ref = b.ref;\n    a[\"return\"] = b;\n    return b.child = a;\n  }\n\n  g = a.child;\n  if (e < f && (e = g.memoizedProps, c = c.compare, c = null !== c ? c : qf, c(e, d) && a.ref === b.ref)) return oi(a, b, f);\n  b.effectTag |= 1;\n  a = ah(g, d, f);\n  a.ref = b.ref;\n  a[\"return\"] = b;\n  return b.child = a;\n}\n\nfunction ri(a, b, c, d, e, f) {\n  return null !== a && qf(a.memoizedProps, d) && a.ref === b.ref && (wg = !1, e < f) ? oi(a, b, f) : si(a, b, c, d, f);\n}\n\nfunction ti(a, b) {\n  var c = b.ref;\n  if (null === a && null !== c || null !== a && a.ref !== c) b.effectTag |= 128;\n}\n\nfunction si(a, b, c, d, e) {\n  var f = L(c) ? Df : J.current;\n  f = Ef(b, f);\n  vg(b, e);\n  c = Ih(a, b, c, d, f, e);\n  if (null !== a && !wg) return b.updateQueue = a.updateQueue, b.effectTag &= -517, a.expirationTime <= e && (a.expirationTime = 0), oi(a, b, e);\n  b.effectTag |= 1;\n  R(a, b, c, e);\n  return b.child;\n}\n\nfunction ui(a, b, c, d, e) {\n  if (L(c)) {\n    var f = !0;\n    Jf(b);\n  } else f = !1;\n\n  vg(b, e);\n  if (null === b.stateNode) null !== a && (a.alternate = null, b.alternate = null, b.effectTag |= 2), Ug(b, c, d, e), Wg(b, c, d, e), d = !0;else if (null === a) {\n    var g = b.stateNode,\n        h = b.memoizedProps;\n    g.props = h;\n    var k = g.context,\n        l = c.contextType;\n    \"object\" === typeof l && null !== l ? l = xg(l) : (l = L(c) ? Df : J.current, l = Ef(b, l));\n    var m = c.getDerivedStateFromProps,\n        C = \"function\" === typeof m || \"function\" === typeof g.getSnapshotBeforeUpdate;\n    C || \"function\" !== typeof g.UNSAFE_componentWillReceiveProps && \"function\" !== typeof g.componentWillReceiveProps || (h !== d || k !== l) && Vg(b, g, d, l);\n    yg = !1;\n    var y = b.memoizedState;\n    k = g.state = y;\n    var H = b.updateQueue;\n    null !== H && (Hg(b, H, d, g, e), k = b.memoizedState);\n    h !== d || y !== k || K.current || yg ? (\"function\" === typeof m && (Og(b, c, m, d), k = b.memoizedState), (h = yg || Tg(b, c, h, d, y, k, l)) ? (C || \"function\" !== typeof g.UNSAFE_componentWillMount && \"function\" !== typeof g.componentWillMount || (\"function\" === typeof g.componentWillMount && g.componentWillMount(), \"function\" === typeof g.UNSAFE_componentWillMount && g.UNSAFE_componentWillMount()), \"function\" === typeof g.componentDidMount && (b.effectTag |= 4)) : (\"function\" === typeof g.componentDidMount && (b.effectTag |= 4), b.memoizedProps = d, b.memoizedState = k), g.props = d, g.state = k, g.context = l, d = h) : (\"function\" === typeof g.componentDidMount && (b.effectTag |= 4), d = !1);\n  } else g = b.stateNode, h = b.memoizedProps, g.props = b.type === b.elementType ? h : mg(b.type, h), k = g.context, l = c.contextType, \"object\" === typeof l && null !== l ? l = xg(l) : (l = L(c) ? Df : J.current, l = Ef(b, l)), m = c.getDerivedStateFromProps, (C = \"function\" === typeof m || \"function\" === typeof g.getSnapshotBeforeUpdate) || \"function\" !== typeof g.UNSAFE_componentWillReceiveProps && \"function\" !== typeof g.componentWillReceiveProps || (h !== d || k !== l) && Vg(b, g, d, l), yg = !1, k = b.memoizedState, y = g.state = k, H = b.updateQueue, null !== H && (Hg(b, H, d, g, e), y = b.memoizedState), h !== d || k !== y || K.current || yg ? (\"function\" === typeof m && (Og(b, c, m, d), y = b.memoizedState), (m = yg || Tg(b, c, h, d, k, y, l)) ? (C || \"function\" !== typeof g.UNSAFE_componentWillUpdate && \"function\" !== typeof g.componentWillUpdate || (\"function\" === typeof g.componentWillUpdate && g.componentWillUpdate(d, y, l), \"function\" === typeof g.UNSAFE_componentWillUpdate && g.UNSAFE_componentWillUpdate(d, y, l)), \"function\" === typeof g.componentDidUpdate && (b.effectTag |= 4), \"function\" === typeof g.getSnapshotBeforeUpdate && (b.effectTag |= 256)) : (\"function\" !== typeof g.componentDidUpdate || h === a.memoizedProps && k === a.memoizedState || (b.effectTag |= 4), \"function\" !== typeof g.getSnapshotBeforeUpdate || h === a.memoizedProps && k === a.memoizedState || (b.effectTag |= 256), b.memoizedProps = d, b.memoizedState = y), g.props = d, g.state = y, g.context = l, d = m) : (\"function\" !== typeof g.componentDidUpdate || h === a.memoizedProps && k === a.memoizedState || (b.effectTag |= 4), \"function\" !== typeof g.getSnapshotBeforeUpdate || h === a.memoizedProps && k === a.memoizedState || (b.effectTag |= 256), d = !1);\n  return vi(a, b, c, d, f, e);\n}\n\nfunction vi(a, b, c, d, e, f) {\n  ti(a, b);\n  var g = 0 !== (b.effectTag & 64);\n  if (!d && !g) return e && Kf(b, c, !1), oi(a, b, f);\n  d = b.stateNode;\n  mi.current = b;\n  var h = g && \"function\" !== typeof c.getDerivedStateFromError ? null : d.render();\n  b.effectTag |= 1;\n  null !== a && g ? (b.child = fh(b, a.child, null, f), b.child = fh(b, null, h, f)) : R(a, b, h, f);\n  b.memoizedState = d.state;\n  e && Kf(b, c, !0);\n  return b.child;\n}\n\nfunction wi(a) {\n  var b = a.stateNode;\n  b.pendingContext ? Hf(a, b.pendingContext, b.pendingContext !== b.context) : b.context && Hf(a, b.context, !1);\n  mh(a, b.containerInfo);\n}\n\nvar xi = {\n  dehydrated: null,\n  retryTime: 0\n};\n\nfunction yi(a, b, c) {\n  var d = b.mode,\n      e = b.pendingProps,\n      f = M.current,\n      g = !1,\n      h;\n  (h = 0 !== (b.effectTag & 64)) || (h = 0 !== (f & 2) && (null === a || null !== a.memoizedState));\n  h ? (g = !0, b.effectTag &= -65) : null !== a && null === a.memoizedState || void 0 === e.fallback || !0 === e.unstable_avoidThisFallback || (f |= 1);\n  I(M, f & 1, b);\n\n  if (null === a) {\n    void 0 !== e.fallback && ii(b);\n\n    if (g) {\n      g = e.fallback;\n      e = eh(null, d, 0, null);\n      e[\"return\"] = b;\n      if (0 === (b.mode & 2)) for (a = null !== b.memoizedState ? b.child.child : b.child, e.child = a; null !== a;) {\n        a[\"return\"] = e, a = a.sibling;\n      }\n      c = eh(g, d, c, null);\n      c[\"return\"] = b;\n      e.sibling = c;\n      b.memoizedState = xi;\n      b.child = e;\n      return c;\n    }\n\n    d = e.children;\n    b.memoizedState = null;\n    return b.child = gh(b, null, d, c);\n  }\n\n  if (null !== a.memoizedState) {\n    a = a.child;\n    d = a.sibling;\n\n    if (g) {\n      e = e.fallback;\n      c = ah(a, a.pendingProps, 0);\n      c[\"return\"] = b;\n      if (0 === (b.mode & 2) && (g = null !== b.memoizedState ? b.child.child : b.child, g !== a.child)) for (c.child = g; null !== g;) {\n        g[\"return\"] = c, g = g.sibling;\n      }\n      d = ah(d, e, d.expirationTime);\n      d[\"return\"] = b;\n      c.sibling = d;\n      c.childExpirationTime = 0;\n      b.memoizedState = xi;\n      b.child = c;\n      return d;\n    }\n\n    c = fh(b, a.child, e.children, c);\n    b.memoizedState = null;\n    return b.child = c;\n  }\n\n  a = a.child;\n\n  if (g) {\n    g = e.fallback;\n    e = eh(null, d, 0, null);\n    e[\"return\"] = b;\n    e.child = a;\n    null !== a && (a[\"return\"] = e);\n    if (0 === (b.mode & 2)) for (a = null !== b.memoizedState ? b.child.child : b.child, e.child = a; null !== a;) {\n      a[\"return\"] = e, a = a.sibling;\n    }\n    c = eh(g, d, c, null);\n    c[\"return\"] = b;\n    e.sibling = c;\n    c.effectTag |= 2;\n    e.childExpirationTime = 0;\n    b.memoizedState = xi;\n    b.child = e;\n    return c;\n  }\n\n  b.memoizedState = null;\n  return b.child = fh(b, a, e.children, c);\n}\n\nfunction zi(a, b) {\n  a.expirationTime < b && (a.expirationTime = b);\n  var c = a.alternate;\n  null !== c && c.expirationTime < b && (c.expirationTime = b);\n  ug(a[\"return\"], b);\n}\n\nfunction Ai(a, b, c, d, e, f) {\n  var g = a.memoizedState;\n  null === g ? a.memoizedState = {\n    isBackwards: b,\n    rendering: null,\n    last: d,\n    tail: c,\n    tailExpiration: 0,\n    tailMode: e,\n    lastEffect: f\n  } : (g.isBackwards = b, g.rendering = null, g.last = d, g.tail = c, g.tailExpiration = 0, g.tailMode = e, g.lastEffect = f);\n}\n\nfunction Bi(a, b, c) {\n  var d = b.pendingProps,\n      e = d.revealOrder,\n      f = d.tail;\n  R(a, b, d.children, c);\n  d = M.current;\n  if (0 !== (d & 2)) d = d & 1 | 2, b.effectTag |= 64;else {\n    if (null !== a && 0 !== (a.effectTag & 64)) a: for (a = b.child; null !== a;) {\n      if (13 === a.tag) null !== a.memoizedState && zi(a, c);else if (19 === a.tag) zi(a, c);else if (null !== a.child) {\n        a.child[\"return\"] = a;\n        a = a.child;\n        continue;\n      }\n      if (a === b) break a;\n\n      for (; null === a.sibling;) {\n        if (null === a[\"return\"] || a[\"return\"] === b) break a;\n        a = a[\"return\"];\n      }\n\n      a.sibling[\"return\"] = a[\"return\"];\n      a = a.sibling;\n    }\n    d &= 1;\n  }\n  I(M, d, b);\n  if (0 === (b.mode & 2)) b.memoizedState = null;else switch (e) {\n    case \"forwards\":\n      c = b.child;\n\n      for (e = null; null !== c;) {\n        a = c.alternate, null !== a && null === qh(a) && (e = c), c = c.sibling;\n      }\n\n      c = e;\n      null === c ? (e = b.child, b.child = null) : (e = c.sibling, c.sibling = null);\n      Ai(b, !1, e, c, f, b.lastEffect);\n      break;\n\n    case \"backwards\":\n      c = null;\n      e = b.child;\n\n      for (b.child = null; null !== e;) {\n        a = e.alternate;\n\n        if (null !== a && null === qh(a)) {\n          b.child = e;\n          break;\n        }\n\n        a = e.sibling;\n        e.sibling = c;\n        c = e;\n        e = a;\n      }\n\n      Ai(b, !0, c, null, f, b.lastEffect);\n      break;\n\n    case \"together\":\n      Ai(b, !1, null, null, void 0, b.lastEffect);\n      break;\n\n    default:\n      b.memoizedState = null;\n  }\n  return b.child;\n}\n\nfunction oi(a, b, c) {\n  null !== a && (b.dependencies = a.dependencies);\n  var d = b.expirationTime;\n  0 !== d && Jg(d);\n  if (b.childExpirationTime < c) return null;\n  if (null !== a && b.child !== a.child) throw Error(u(153));\n\n  if (null !== b.child) {\n    a = b.child;\n    c = ah(a, a.pendingProps, a.expirationTime);\n    b.child = c;\n\n    for (c[\"return\"] = b; null !== a.sibling;) {\n      a = a.sibling, c = c.sibling = ah(a, a.pendingProps, a.expirationTime), c[\"return\"] = b;\n    }\n\n    c.sibling = null;\n  }\n\n  return b.child;\n}\n\nfunction Ci(a) {\n  a.effectTag |= 4;\n}\n\nvar Hi, Ii, Ji, Ki;\n\nHi = function Hi(a, b) {\n  for (var c = b.child; null !== c;) {\n    if (5 === c.tag || 6 === c.tag) a.appendChild(c.stateNode);else if (4 !== c.tag && null !== c.child) {\n      c.child[\"return\"] = c;\n      c = c.child;\n      continue;\n    }\n    if (c === b) break;\n\n    for (; null === c.sibling;) {\n      if (null === c[\"return\"] || c[\"return\"] === b) return;\n      c = c[\"return\"];\n    }\n\n    c.sibling[\"return\"] = c[\"return\"];\n    c = c.sibling;\n  }\n};\n\nIi = function Ii() {};\n\nJi = function Ji(a, b, c, d, e) {\n  var f = a.memoizedProps;\n\n  if (f !== d) {\n    var g = b.stateNode;\n    lh(ih.current);\n    a = null;\n\n    switch (c) {\n      case \"input\":\n        f = Ab(g, f);\n        d = Ab(g, d);\n        a = [];\n        break;\n\n      case \"option\":\n        f = Ib(g, f);\n        d = Ib(g, d);\n        a = [];\n        break;\n\n      case \"select\":\n        f = n({}, f, {\n          value: void 0\n        });\n        d = n({}, d, {\n          value: void 0\n        });\n        a = [];\n        break;\n\n      case \"textarea\":\n        f = Kb(g, f);\n        d = Kb(g, d);\n        a = [];\n        break;\n\n      default:\n        \"function\" !== typeof f.onClick && \"function\" === typeof d.onClick && (g.onclick = ae);\n    }\n\n    Yd(c, d);\n    var h, k;\n    c = null;\n\n    for (h in f) {\n      if (!d.hasOwnProperty(h) && f.hasOwnProperty(h) && null != f[h]) if (\"style\" === h) for (k in g = f[h], g) {\n        g.hasOwnProperty(k) && (c || (c = {}), c[k] = \"\");\n      } else \"dangerouslySetInnerHTML\" !== h && \"children\" !== h && \"suppressContentEditableWarning\" !== h && \"suppressHydrationWarning\" !== h && \"autoFocus\" !== h && (ia.hasOwnProperty(h) ? a || (a = []) : (a = a || []).push(h, null));\n    }\n\n    for (h in d) {\n      var l = d[h];\n      g = null != f ? f[h] : void 0;\n      if (d.hasOwnProperty(h) && l !== g && (null != l || null != g)) if (\"style\" === h) {\n        if (g) {\n          for (k in g) {\n            !g.hasOwnProperty(k) || l && l.hasOwnProperty(k) || (c || (c = {}), c[k] = \"\");\n          }\n\n          for (k in l) {\n            l.hasOwnProperty(k) && g[k] !== l[k] && (c || (c = {}), c[k] = l[k]);\n          }\n        } else c || (a || (a = []), a.push(h, c)), c = l;\n      } else \"dangerouslySetInnerHTML\" === h ? (l = l ? l.__html : void 0, g = g ? g.__html : void 0, null != l && g !== l && (a = a || []).push(h, \"\" + l)) : \"children\" === h ? g === l || \"string\" !== typeof l && \"number\" !== typeof l || (a = a || []).push(h, \"\" + l) : \"suppressContentEditableWarning\" !== h && \"suppressHydrationWarning\" !== h && (ia.hasOwnProperty(h) ? (null != l && $d(e, h), a || g === l || (a = [])) : (a = a || []).push(h, l));\n    }\n\n    c && (a = a || []).push(\"style\", c);\n    e = a;\n    (b.updateQueue = e) && Ci(b);\n  }\n};\n\nKi = function Ki(a, b, c, d) {\n  c !== d && Ci(b);\n};\n\nfunction Li(a, b) {\n  switch (a.tailMode) {\n    case \"hidden\":\n      b = a.tail;\n\n      for (var c = null; null !== b;) {\n        null !== b.alternate && (c = b), b = b.sibling;\n      }\n\n      null === c ? a.tail = null : c.sibling = null;\n      break;\n\n    case \"collapsed\":\n      c = a.tail;\n\n      for (var d = null; null !== c;) {\n        null !== c.alternate && (d = c), c = c.sibling;\n      }\n\n      null === d ? b || null === a.tail ? a.tail = null : a.tail.sibling = null : d.sibling = null;\n  }\n}\n\nfunction Mi(a) {\n  switch (a.tag) {\n    case 1:\n      L(a.type) && Ff(a);\n      var b = a.effectTag;\n      return b & 4096 ? (a.effectTag = b & -4097 | 64, a) : null;\n\n    case 3:\n      nh(a);\n      Gf(a);\n      b = a.effectTag;\n      if (0 !== (b & 64)) throw Error(u(285));\n      a.effectTag = b & -4097 | 64;\n      return a;\n\n    case 5:\n      return ph(a), null;\n\n    case 13:\n      return G(M, a), b = a.effectTag, b & 4096 ? (a.effectTag = b & -4097 | 64, a) : null;\n\n    case 19:\n      return G(M, a), null;\n\n    case 4:\n      return nh(a), null;\n\n    case 10:\n      return tg(a), null;\n\n    default:\n      return null;\n  }\n}\n\nfunction Ni(a, b) {\n  return {\n    value: a,\n    source: b,\n    stack: Xa(b)\n  };\n}\n\nvar Oi = \"function\" === typeof WeakSet ? WeakSet : Set;\n\nfunction Pi(a, b) {\n  var c = b.source,\n      d = b.stack;\n  null === d && null !== c && (d = Xa(c));\n  null !== c && Wa(c.type);\n  b = b.value;\n  null !== a && 1 === a.tag && Wa(a.type);\n\n  try {\n    console.error(b);\n  } catch (e) {\n    setTimeout(function () {\n      throw e;\n    });\n  }\n}\n\nfunction Qi(a, b) {\n  try {\n    b.props = a.memoizedProps, b.state = a.memoizedState, b.componentWillUnmount();\n  } catch (c) {\n    Ri(a, c);\n  }\n}\n\nfunction Si(a) {\n  var b = a.ref;\n  if (null !== b) if (\"function\" === typeof b) try {\n    b(null);\n  } catch (c) {\n    Ri(a, c);\n  } else b.current = null;\n}\n\nfunction Ti(a, b) {\n  switch (b.tag) {\n    case 0:\n    case 11:\n    case 15:\n      Ui(2, 0, b);\n      break;\n\n    case 1:\n      if (b.effectTag & 256 && null !== a) {\n        var c = a.memoizedProps,\n            d = a.memoizedState;\n        a = b.stateNode;\n        b = a.getSnapshotBeforeUpdate(b.elementType === b.type ? c : mg(b.type, c), d);\n        a.__reactInternalSnapshotBeforeUpdate = b;\n      }\n\n      break;\n\n    case 3:\n    case 5:\n    case 6:\n    case 4:\n    case 17:\n      break;\n\n    default:\n      throw Error(u(163));\n  }\n}\n\nfunction Ui(a, b, c) {\n  c = c.updateQueue;\n  c = null !== c ? c.lastEffect : null;\n\n  if (null !== c) {\n    var d = c = c.next;\n\n    do {\n      if (0 !== (d.tag & a)) {\n        var e = d.destroy;\n        d.destroy = void 0;\n        void 0 !== e && e();\n      }\n\n      0 !== (d.tag & b) && (e = d.create, d.destroy = e());\n      d = d.next;\n    } while (d !== c);\n  }\n}\n\nfunction Vi(a, b, c) {\n  \"function\" === typeof Wi && Wi(b);\n\n  switch (b.tag) {\n    case 0:\n    case 11:\n    case 14:\n    case 15:\n      a = b.updateQueue;\n\n      if (null !== a && (a = a.lastEffect, null !== a)) {\n        var d = a.next;\n        fg(97 < c ? 97 : c, function () {\n          var a = d;\n\n          do {\n            var c = a.destroy;\n\n            if (void 0 !== c) {\n              var g = b;\n\n              try {\n                c();\n              } catch (h) {\n                Ri(g, h);\n              }\n            }\n\n            a = a.next;\n          } while (a !== d);\n        });\n      }\n\n      break;\n\n    case 1:\n      Si(b);\n      c = b.stateNode;\n      \"function\" === typeof c.componentWillUnmount && Qi(b, c);\n      break;\n\n    case 5:\n      Si(b);\n      break;\n\n    case 4:\n      Xi(a, b, c);\n  }\n}\n\nfunction Yi(a) {\n  var b = a.alternate;\n  a[\"return\"] = null;\n  a.child = null;\n  a.memoizedState = null;\n  a.updateQueue = null;\n  a.dependencies = null;\n  a.alternate = null;\n  a.firstEffect = null;\n  a.lastEffect = null;\n  a.pendingProps = null;\n  a.memoizedProps = null;\n  null !== b && Yi(b);\n}\n\nfunction Zi(a) {\n  return 5 === a.tag || 3 === a.tag || 4 === a.tag;\n}\n\nfunction $i(a) {\n  a: {\n    for (var b = a[\"return\"]; null !== b;) {\n      if (Zi(b)) {\n        var c = b;\n        break a;\n      }\n\n      b = b[\"return\"];\n    }\n\n    throw Error(u(160));\n  }\n\n  b = c.stateNode;\n\n  switch (c.tag) {\n    case 5:\n      var d = !1;\n      break;\n\n    case 3:\n      b = b.containerInfo;\n      d = !0;\n      break;\n\n    case 4:\n      b = b.containerInfo;\n      d = !0;\n      break;\n\n    default:\n      throw Error(u(161));\n  }\n\n  c.effectTag & 16 && (Tb(b, \"\"), c.effectTag &= -17);\n\n  a: b: for (c = a;;) {\n    for (; null === c.sibling;) {\n      if (null === c[\"return\"] || Zi(c[\"return\"])) {\n        c = null;\n        break a;\n      }\n\n      c = c[\"return\"];\n    }\n\n    c.sibling[\"return\"] = c[\"return\"];\n\n    for (c = c.sibling; 5 !== c.tag && 6 !== c.tag && 18 !== c.tag;) {\n      if (c.effectTag & 2) continue b;\n      if (null === c.child || 4 === c.tag) continue b;else c.child[\"return\"] = c, c = c.child;\n    }\n\n    if (!(c.effectTag & 2)) {\n      c = c.stateNode;\n      break a;\n    }\n  }\n\n  for (var e = a;;) {\n    var f = 5 === e.tag || 6 === e.tag;\n\n    if (f) {\n      var g = f ? e.stateNode : e.stateNode.instance;\n      if (c) {\n        if (d) {\n          f = b;\n          var h = g;\n          g = c;\n          8 === f.nodeType ? f.parentNode.insertBefore(h, g) : f.insertBefore(h, g);\n        } else b.insertBefore(g, c);\n      } else d ? (h = b, 8 === h.nodeType ? (f = h.parentNode, f.insertBefore(g, h)) : (f = h, f.appendChild(g)), h = h._reactRootContainer, null !== h && void 0 !== h || null !== f.onclick || (f.onclick = ae)) : b.appendChild(g);\n    } else if (4 !== e.tag && null !== e.child) {\n      e.child[\"return\"] = e;\n      e = e.child;\n      continue;\n    }\n\n    if (e === a) break;\n\n    for (; null === e.sibling;) {\n      if (null === e[\"return\"] || e[\"return\"] === a) return;\n      e = e[\"return\"];\n    }\n\n    e.sibling[\"return\"] = e[\"return\"];\n    e = e.sibling;\n  }\n}\n\nfunction Xi(a, b, c) {\n  for (var d = b, e = !1, f, g;;) {\n    if (!e) {\n      e = d[\"return\"];\n\n      a: for (;;) {\n        if (null === e) throw Error(u(160));\n        f = e.stateNode;\n\n        switch (e.tag) {\n          case 5:\n            g = !1;\n            break a;\n\n          case 3:\n            f = f.containerInfo;\n            g = !0;\n            break a;\n\n          case 4:\n            f = f.containerInfo;\n            g = !0;\n            break a;\n        }\n\n        e = e[\"return\"];\n      }\n\n      e = !0;\n    }\n\n    if (5 === d.tag || 6 === d.tag) {\n      a: for (var h = a, k = d, l = c, m = k;;) {\n        if (Vi(h, m, l), null !== m.child && 4 !== m.tag) m.child[\"return\"] = m, m = m.child;else {\n          if (m === k) break;\n\n          for (; null === m.sibling;) {\n            if (null === m[\"return\"] || m[\"return\"] === k) break a;\n            m = m[\"return\"];\n          }\n\n          m.sibling[\"return\"] = m[\"return\"];\n          m = m.sibling;\n        }\n      }\n\n      g ? (h = f, k = d.stateNode, 8 === h.nodeType ? h.parentNode.removeChild(k) : h.removeChild(k)) : f.removeChild(d.stateNode);\n    } else if (4 === d.tag) {\n      if (null !== d.child) {\n        f = d.stateNode.containerInfo;\n        g = !0;\n        d.child[\"return\"] = d;\n        d = d.child;\n        continue;\n      }\n    } else if (Vi(a, d, c), null !== d.child) {\n      d.child[\"return\"] = d;\n      d = d.child;\n      continue;\n    }\n\n    if (d === b) break;\n\n    for (; null === d.sibling;) {\n      if (null === d[\"return\"] || d[\"return\"] === b) return;\n      d = d[\"return\"];\n      4 === d.tag && (e = !1);\n    }\n\n    d.sibling[\"return\"] = d[\"return\"];\n    d = d.sibling;\n  }\n}\n\nfunction aj(a, b) {\n  switch (b.tag) {\n    case 0:\n    case 11:\n    case 14:\n    case 15:\n      Ui(4, 8, b);\n      break;\n\n    case 1:\n      break;\n\n    case 5:\n      var c = b.stateNode;\n\n      if (null != c) {\n        var d = b.memoizedProps,\n            e = null !== a ? a.memoizedProps : d;\n        a = b.type;\n        var f = b.updateQueue;\n        b.updateQueue = null;\n\n        if (null !== f) {\n          c[ve] = d;\n          \"input\" === a && \"radio\" === d.type && null != d.name && Cb(c, d);\n          Zd(a, e);\n          b = Zd(a, d);\n\n          for (e = 0; e < f.length; e += 2) {\n            var g = f[e],\n                h = f[e + 1];\n            \"style\" === g ? Wd(c, h) : \"dangerouslySetInnerHTML\" === g ? Sb(c, h) : \"children\" === g ? Tb(c, h) : vb(c, g, h, b);\n          }\n\n          switch (a) {\n            case \"input\":\n              Eb(c, d);\n              break;\n\n            case \"textarea\":\n              Mb(c, d);\n              break;\n\n            case \"select\":\n              b = c._wrapperState.wasMultiple, c._wrapperState.wasMultiple = !!d.multiple, a = d.value, null != a ? Jb(c, !!d.multiple, a, !1) : b !== !!d.multiple && (null != d.defaultValue ? Jb(c, !!d.multiple, d.defaultValue, !0) : Jb(c, !!d.multiple, d.multiple ? [] : \"\", !1));\n          }\n        }\n      }\n\n      break;\n\n    case 6:\n      if (null === b.stateNode) throw Error(u(162));\n      b.stateNode.nodeValue = b.memoizedProps;\n      break;\n\n    case 3:\n      b = b.stateNode;\n      b.hydrate && (b.hydrate = !1, Lc(b.containerInfo));\n      break;\n\n    case 12:\n      break;\n\n    case 13:\n      c = b;\n      null === b.memoizedState ? d = !1 : (d = !0, c = b.child, bj = cg());\n      if (null !== c) a: for (a = c;;) {\n        if (5 === a.tag) f = a.stateNode, d ? (f = f.style, \"function\" === typeof f.setProperty ? f.setProperty(\"display\", \"none\", \"important\") : f.display = \"none\") : (f = a.stateNode, e = a.memoizedProps.style, e = void 0 !== e && null !== e && e.hasOwnProperty(\"display\") ? e.display : null, f.style.display = Vd(\"display\", e));else if (6 === a.tag) a.stateNode.nodeValue = d ? \"\" : a.memoizedProps;else if (13 === a.tag && null !== a.memoizedState && null === a.memoizedState.dehydrated) {\n          f = a.child.sibling;\n          f[\"return\"] = a;\n          a = f;\n          continue;\n        } else if (null !== a.child) {\n          a.child[\"return\"] = a;\n          a = a.child;\n          continue;\n        }\n        if (a === c) break a;\n\n        for (; null === a.sibling;) {\n          if (null === a[\"return\"] || a[\"return\"] === c) break a;\n          a = a[\"return\"];\n        }\n\n        a.sibling[\"return\"] = a[\"return\"];\n        a = a.sibling;\n      }\n      cj(b);\n      break;\n\n    case 19:\n      cj(b);\n      break;\n\n    case 17:\n      break;\n\n    case 20:\n      break;\n\n    case 21:\n      break;\n\n    default:\n      throw Error(u(163));\n  }\n}\n\nfunction cj(a) {\n  var b = a.updateQueue;\n\n  if (null !== b) {\n    a.updateQueue = null;\n    var c = a.stateNode;\n    null === c && (c = a.stateNode = new Oi());\n    b.forEach(function (b) {\n      var d = dj.bind(null, a, b);\n      c.has(b) || (c.add(b), b.then(d, d));\n    });\n  }\n}\n\nvar ej = \"function\" === typeof WeakMap ? WeakMap : Map;\n\nfunction fj(a, b, c) {\n  c = Bg(c, null);\n  c.tag = 3;\n  c.payload = {\n    element: null\n  };\n  var d = b.value;\n\n  c.callback = function () {\n    gj || (gj = !0, hj = d);\n    Pi(a, b);\n  };\n\n  return c;\n}\n\nfunction ij(a, b, c) {\n  c = Bg(c, null);\n  c.tag = 3;\n  var d = a.type.getDerivedStateFromError;\n\n  if (\"function\" === typeof d) {\n    var e = b.value;\n\n    c.payload = function () {\n      Pi(a, b);\n      return d(e);\n    };\n  }\n\n  var f = a.stateNode;\n  null !== f && \"function\" === typeof f.componentDidCatch && (c.callback = function () {\n    \"function\" !== typeof d && (null === jj ? jj = new Set([this]) : jj.add(this), Pi(a, b));\n    var c = b.stack;\n    this.componentDidCatch(b.value, {\n      componentStack: null !== c ? c : \"\"\n    });\n  });\n  return c;\n}\n\nvar kj = Math.ceil,\n    lj = Ea.ReactCurrentDispatcher,\n    mj = Ea.ReactCurrentOwner,\n    S = 0,\n    nj = 8,\n    oj = 16,\n    pj = 32,\n    qj = 0,\n    rj = 1,\n    sj = 2,\n    tj = 3,\n    uj = 4,\n    vj = 5,\n    T = S,\n    U = null,\n    V = null,\n    W = 0,\n    X = qj,\n    wj = null,\n    xj = 1073741823,\n    yj = 1073741823,\n    zj = null,\n    Aj = 0,\n    Bj = !1,\n    bj = 0,\n    Cj = 500,\n    Y = null,\n    gj = !1,\n    hj = null,\n    jj = null,\n    Dj = !1,\n    Ej = null,\n    Fj = 90,\n    Gj = null,\n    Hj = 0,\n    Ij = null,\n    Jj = 0;\n\nfunction Pg() {\n  return (T & (oj | pj)) !== S ? 1073741821 - (cg() / 10 | 0) : 0 !== Jj ? Jj : Jj = 1073741821 - (cg() / 10 | 0);\n}\n\nfunction Qg(a, b, c) {\n  b = b.mode;\n  if (0 === (b & 2)) return 1073741823;\n  var d = dg();\n  if (0 === (b & 4)) return 99 === d ? 1073741823 : 1073741822;\n  if ((T & oj) !== S) return W;\n  if (null !== c) a = lg(a, c.timeoutMs | 0 || 5E3, 250);else switch (d) {\n    case 99:\n      a = 1073741823;\n      break;\n\n    case 98:\n      a = lg(a, 150, 100);\n      break;\n\n    case 97:\n    case 96:\n      a = lg(a, 5E3, 250);\n      break;\n\n    case 95:\n      a = 2;\n      break;\n\n    default:\n      throw Error(u(326));\n  }\n  null !== U && a === W && --a;\n  return a;\n}\n\nfunction Rg(a, b) {\n  if (50 < Hj) throw Hj = 0, Ij = null, Error(u(185));\n  a = Kj(a, b);\n\n  if (null !== a) {\n    var c = dg();\n    1073741823 === b ? (T & nj) !== S && (T & (oj | pj)) === S ? Lj(a) : (Z(a), T === S && jg()) : Z(a);\n    (T & 4) === S || 98 !== c && 99 !== c || (null === Gj ? Gj = new Map([[a, b]]) : (c = Gj.get(a), (void 0 === c || c > b) && Gj.set(a, b)));\n  }\n}\n\nfunction Kj(a, b) {\n  a.expirationTime < b && (a.expirationTime = b);\n  var c = a.alternate;\n  null !== c && c.expirationTime < b && (c.expirationTime = b);\n  var d = a[\"return\"],\n      e = null;\n  if (null === d && 3 === a.tag) e = a.stateNode;else for (; null !== d;) {\n    c = d.alternate;\n    d.childExpirationTime < b && (d.childExpirationTime = b);\n    null !== c && c.childExpirationTime < b && (c.childExpirationTime = b);\n\n    if (null === d[\"return\"] && 3 === d.tag) {\n      e = d.stateNode;\n      break;\n    }\n\n    d = d[\"return\"];\n  }\n  null !== e && (U === e && (Jg(b), X === uj && Mj(e, W)), Nj(e, b));\n  return e;\n}\n\nfunction Oj(a) {\n  var b = a.lastExpiredTime;\n  if (0 !== b) return b;\n  b = a.firstPendingTime;\n  if (!Pj(a, b)) return b;\n  b = a.lastPingedTime;\n  a = a.nextKnownPendingLevel;\n  return b > a ? b : a;\n}\n\nfunction Z(a) {\n  if (0 !== a.lastExpiredTime) a.callbackExpirationTime = 1073741823, a.callbackPriority = 99, a.callbackNode = hg(Lj.bind(null, a));else {\n    var b = Oj(a),\n        c = a.callbackNode;\n    if (0 === b) null !== c && (a.callbackNode = null, a.callbackExpirationTime = 0, a.callbackPriority = 90);else {\n      var d = Pg();\n      1073741823 === b ? d = 99 : 1 === b || 2 === b ? d = 95 : (d = 10 * (1073741821 - b) - 10 * (1073741821 - d), d = 0 >= d ? 99 : 250 >= d ? 98 : 5250 >= d ? 97 : 95);\n\n      if (null !== c) {\n        var e = a.callbackPriority;\n        if (a.callbackExpirationTime === b && e >= d) return;\n        c !== Xf && Nf(c);\n      }\n\n      a.callbackExpirationTime = b;\n      a.callbackPriority = d;\n      b = 1073741823 === b ? hg(Lj.bind(null, a)) : gg(d, Qj.bind(null, a), {\n        timeout: 10 * (1073741821 - b) - cg()\n      });\n      a.callbackNode = b;\n    }\n  }\n}\n\nfunction Qj(a, b) {\n  Jj = 0;\n  if (b) return b = Pg(), Rj(a, b), Z(a), null;\n  var c = Oj(a);\n\n  if (0 !== c) {\n    b = a.callbackNode;\n    if ((T & (oj | pj)) !== S) throw Error(u(327));\n    Sj();\n    a === U && c === W || Tj(a, c);\n\n    if (null !== V) {\n      var d = T;\n      T |= oj;\n      var e = Uj(a);\n\n      do {\n        try {\n          Vj();\n          break;\n        } catch (h) {\n          Wj(a, h);\n        }\n      } while (1);\n\n      rg();\n      T = d;\n      lj.current = e;\n      if (X === rj) throw b = wj, Tj(a, c), Mj(a, c), Z(a), b;\n      if (null === V) switch (e = a.finishedWork = a.current.alternate, a.finishedExpirationTime = c, d = X, U = null, d) {\n        case qj:\n        case rj:\n          throw Error(u(345));\n\n        case sj:\n          Rj(a, 2 < c ? 2 : c);\n          break;\n\n        case tj:\n          Mj(a, c);\n          d = a.lastSuspendedTime;\n          c === d && (a.nextKnownPendingLevel = Xj(e));\n\n          if (1073741823 === xj && (e = bj + Cj - cg(), 10 < e)) {\n            if (Bj) {\n              var f = a.lastPingedTime;\n\n              if (0 === f || f >= c) {\n                a.lastPingedTime = c;\n                Tj(a, c);\n                break;\n              }\n            }\n\n            f = Oj(a);\n            if (0 !== f && f !== c) break;\n\n            if (0 !== d && d !== c) {\n              a.lastPingedTime = d;\n              break;\n            }\n\n            a.timeoutHandle = pe(Yj.bind(null, a), e);\n            break;\n          }\n\n          Yj(a);\n          break;\n\n        case uj:\n          Mj(a, c);\n          d = a.lastSuspendedTime;\n          c === d && (a.nextKnownPendingLevel = Xj(e));\n\n          if (Bj && (e = a.lastPingedTime, 0 === e || e >= c)) {\n            a.lastPingedTime = c;\n            Tj(a, c);\n            break;\n          }\n\n          e = Oj(a);\n          if (0 !== e && e !== c) break;\n\n          if (0 !== d && d !== c) {\n            a.lastPingedTime = d;\n            break;\n          }\n\n          1073741823 !== yj ? d = 10 * (1073741821 - yj) - cg() : 1073741823 === xj ? d = 0 : (d = 10 * (1073741821 - xj) - 5E3, e = cg(), c = 10 * (1073741821 - c) - e, d = e - d, 0 > d && (d = 0), d = (120 > d ? 120 : 480 > d ? 480 : 1080 > d ? 1080 : 1920 > d ? 1920 : 3E3 > d ? 3E3 : 4320 > d ? 4320 : 1960 * kj(d / 1960)) - d, c < d && (d = c));\n\n          if (10 < d) {\n            a.timeoutHandle = pe(Yj.bind(null, a), d);\n            break;\n          }\n\n          Yj(a);\n          break;\n\n        case vj:\n          if (1073741823 !== xj && null !== zj) {\n            f = xj;\n            var g = zj;\n            d = g.busyMinDurationMs | 0;\n            0 >= d ? d = 0 : (e = g.busyDelayMs | 0, f = cg() - (10 * (1073741821 - f) - (g.timeoutMs | 0 || 5E3)), d = f <= e ? 0 : e + d - f);\n\n            if (10 < d) {\n              Mj(a, c);\n              a.timeoutHandle = pe(Yj.bind(null, a), d);\n              break;\n            }\n          }\n\n          Yj(a);\n          break;\n\n        default:\n          throw Error(u(329));\n      }\n      Z(a);\n      if (a.callbackNode === b) return Qj.bind(null, a);\n    }\n  }\n\n  return null;\n}\n\nfunction Lj(a) {\n  var b = a.lastExpiredTime;\n  b = 0 !== b ? b : 1073741823;\n  if (a.finishedExpirationTime === b) Yj(a);else {\n    if ((T & (oj | pj)) !== S) throw Error(u(327));\n    Sj();\n    a === U && b === W || Tj(a, b);\n\n    if (null !== V) {\n      var c = T;\n      T |= oj;\n      var d = Uj(a);\n\n      do {\n        try {\n          Zj();\n          break;\n        } catch (e) {\n          Wj(a, e);\n        }\n      } while (1);\n\n      rg();\n      T = c;\n      lj.current = d;\n      if (X === rj) throw c = wj, Tj(a, b), Mj(a, b), Z(a), c;\n      if (null !== V) throw Error(u(261));\n      a.finishedWork = a.current.alternate;\n      a.finishedExpirationTime = b;\n      U = null;\n      Yj(a);\n      Z(a);\n    }\n  }\n  return null;\n}\n\nfunction ak() {\n  if (null !== Gj) {\n    var a = Gj;\n    Gj = null;\n    a.forEach(function (a, c) {\n      Rj(c, a);\n      Z(c);\n    });\n    jg();\n  }\n}\n\nfunction bk(a, b) {\n  var c = T;\n  T |= 1;\n\n  try {\n    return a(b);\n  } finally {\n    T = c, T === S && jg();\n  }\n}\n\nfunction ck(a, b) {\n  var c = T;\n  T &= -2;\n  T |= nj;\n\n  try {\n    return a(b);\n  } finally {\n    T = c, T === S && jg();\n  }\n}\n\nfunction Tj(a, b) {\n  a.finishedWork = null;\n  a.finishedExpirationTime = 0;\n  var c = a.timeoutHandle;\n  -1 !== c && (a.timeoutHandle = -1, qe(c));\n  if (null !== V) for (c = V[\"return\"]; null !== c;) {\n    var d = c;\n\n    switch (d.tag) {\n      case 1:\n        var e = d.type.childContextTypes;\n        null !== e && void 0 !== e && Ff(d);\n        break;\n\n      case 3:\n        nh(d);\n        Gf(d);\n        break;\n\n      case 5:\n        ph(d);\n        break;\n\n      case 4:\n        nh(d);\n        break;\n\n      case 13:\n        G(M, d);\n        break;\n\n      case 19:\n        G(M, d);\n        break;\n\n      case 10:\n        tg(d);\n    }\n\n    c = c[\"return\"];\n  }\n  U = a;\n  V = ah(a.current, null, b);\n  W = b;\n  X = qj;\n  wj = null;\n  yj = xj = 1073741823;\n  zj = null;\n  Aj = 0;\n  Bj = !1;\n}\n\nfunction Wj(a, b) {\n  do {\n    try {\n      rg();\n      Mh();\n      if (null === V || null === V[\"return\"]) return X = rj, wj = b, null;\n\n      a: {\n        var c = a,\n            d = V[\"return\"],\n            e = V,\n            f = b;\n        b = W;\n        e.effectTag |= 2048;\n        e.firstEffect = e.lastEffect = null;\n\n        if (null !== f && \"object\" === typeof f && \"function\" === typeof f.then) {\n          var g = f,\n              h = 0 !== (M.current & 1),\n              k = d;\n\n          do {\n            var l;\n\n            if (l = 13 === k.tag) {\n              var m = k.memoizedState;\n              if (null !== m) l = null !== m.dehydrated ? !0 : !1;else {\n                var C = k.memoizedProps;\n                l = void 0 === C.fallback ? !1 : !0 !== C.unstable_avoidThisFallback ? !0 : h ? !1 : !0;\n              }\n            }\n\n            if (l) {\n              var y = k.updateQueue;\n\n              if (null === y) {\n                var H = new Set();\n                H.add(g);\n                k.updateQueue = H;\n              } else y.add(g);\n\n              if (0 === (k.mode & 2)) {\n                k.effectTag |= 64;\n                e.effectTag &= -2981;\n                if (1 === e.tag) if (null === e.alternate) e.tag = 17;else {\n                  var z = Bg(1073741823, null);\n                  z.tag = 2;\n                  Dg(e, z);\n                }\n                e.expirationTime = 1073741823;\n                break a;\n              }\n\n              f = void 0;\n              e = b;\n              var ta = c.pingCache;\n              null === ta ? (ta = c.pingCache = new ej(), f = new Set(), ta.set(g, f)) : (f = ta.get(g), void 0 === f && (f = new Set(), ta.set(g, f)));\n\n              if (!f.has(e)) {\n                f.add(e);\n                var r = dk.bind(null, c, g, e);\n                g.then(r, r);\n              }\n\n              k.effectTag |= 4096;\n              k.expirationTime = b;\n              break a;\n            }\n\n            k = k[\"return\"];\n          } while (null !== k);\n\n          f = Error((Wa(e.type) || \"A React component\") + \" suspended while rendering, but no fallback UI was specified.\\n\\nAdd a <Suspense fallback=...> component higher in the tree to provide a loading indicator or placeholder to display.\" + Xa(e));\n        }\n\n        X !== vj && (X = sj);\n        f = Ni(f, e);\n        k = d;\n\n        do {\n          switch (k.tag) {\n            case 3:\n              g = f;\n              k.effectTag |= 4096;\n              k.expirationTime = b;\n              var x = fj(k, g, b);\n              Eg(k, x);\n              break a;\n\n            case 1:\n              g = f;\n              var A = k.type,\n                  p = k.stateNode;\n\n              if (0 === (k.effectTag & 64) && (\"function\" === typeof A.getDerivedStateFromError || null !== p && \"function\" === typeof p.componentDidCatch && (null === jj || !jj.has(p)))) {\n                k.effectTag |= 4096;\n                k.expirationTime = b;\n                var t = ij(k, g, b);\n                Eg(k, t);\n                break a;\n              }\n\n          }\n\n          k = k[\"return\"];\n        } while (null !== k);\n      }\n\n      V = ek(V);\n    } catch (v) {\n      b = v;\n      continue;\n    }\n\n    break;\n  } while (1);\n}\n\nfunction Uj() {\n  var a = lj.current;\n  lj.current = Lh;\n  return null === a ? Lh : a;\n}\n\nfunction Ig(a, b) {\n  a < xj && 2 < a && (xj = a);\n  null !== b && a < yj && 2 < a && (yj = a, zj = b);\n}\n\nfunction Jg(a) {\n  a > Aj && (Aj = a);\n}\n\nfunction Zj() {\n  for (; null !== V;) {\n    V = fk(V);\n  }\n}\n\nfunction Vj() {\n  for (; null !== V && !Of();) {\n    V = fk(V);\n  }\n}\n\nfunction fk(a) {\n  var b = gk(a.alternate, a, W);\n  a.memoizedProps = a.pendingProps;\n  null === b && (b = ek(a));\n  mj.current = null;\n  return b;\n}\n\nfunction ek(a) {\n  V = a;\n\n  do {\n    var b = V.alternate;\n    a = V[\"return\"];\n\n    if (0 === (V.effectTag & 2048)) {\n      a: {\n        var c = b;\n        b = V;\n        var d = W;\n        var e = b.pendingProps;\n\n        switch (b.tag) {\n          case 2:\n            break;\n\n          case 16:\n            break;\n\n          case 15:\n          case 0:\n            break;\n\n          case 1:\n            L(b.type) && Ff(b);\n            break;\n\n          case 3:\n            nh(b);\n            Gf(b);\n            e = b.stateNode;\n            e.pendingContext && (e.context = e.pendingContext, e.pendingContext = null);\n            (null === c || null === c.child) && ki(b) && Ci(b);\n            Ii(b);\n            break;\n\n          case 5:\n            ph(b);\n            d = lh(kh.current);\n            var f = b.type;\n            if (null !== c && null != b.stateNode) Ji(c, b, f, e, d), c.ref !== b.ref && (b.effectTag |= 128);else if (e) {\n              var g = lh(ih.current);\n\n              if (ki(b)) {\n                e = b;\n                var h = e.stateNode;\n                c = e.type;\n                var k = e.memoizedProps,\n                    l = d;\n                h[ue] = e;\n                h[ve] = k;\n                f = void 0;\n                d = h;\n\n                switch (c) {\n                  case \"iframe\":\n                  case \"object\":\n                  case \"embed\":\n                    F(\"load\", d);\n                    break;\n\n                  case \"video\":\n                  case \"audio\":\n                    for (h = 0; h < cc.length; h++) {\n                      F(cc[h], d);\n                    }\n\n                    break;\n\n                  case \"source\":\n                    F(\"error\", d);\n                    break;\n\n                  case \"img\":\n                  case \"image\":\n                  case \"link\":\n                    F(\"error\", d);\n                    F(\"load\", d);\n                    break;\n\n                  case \"form\":\n                    F(\"reset\", d);\n                    F(\"submit\", d);\n                    break;\n\n                  case \"details\":\n                    F(\"toggle\", d);\n                    break;\n\n                  case \"input\":\n                    Bb(d, k);\n                    F(\"invalid\", d);\n                    $d(l, \"onChange\");\n                    break;\n\n                  case \"select\":\n                    d._wrapperState = {\n                      wasMultiple: !!k.multiple\n                    };\n                    F(\"invalid\", d);\n                    $d(l, \"onChange\");\n                    break;\n\n                  case \"textarea\":\n                    Lb(d, k), F(\"invalid\", d), $d(l, \"onChange\");\n                }\n\n                Yd(c, k);\n                h = null;\n\n                for (f in k) {\n                  k.hasOwnProperty(f) && (g = k[f], \"children\" === f ? \"string\" === typeof g ? d.textContent !== g && (h = [\"children\", g]) : \"number\" === typeof g && d.textContent !== \"\" + g && (h = [\"children\", \"\" + g]) : ia.hasOwnProperty(f) && null != g && $d(l, f));\n                }\n\n                switch (c) {\n                  case \"input\":\n                    yb(d);\n                    Gb(d, k, !0);\n                    break;\n\n                  case \"textarea\":\n                    yb(d);\n                    Nb(d, k);\n                    break;\n\n                  case \"select\":\n                  case \"option\":\n                    break;\n\n                  default:\n                    \"function\" === typeof k.onClick && (d.onclick = ae);\n                }\n\n                f = h;\n                e.updateQueue = f;\n                e = null !== f ? !0 : !1;\n                e && Ci(b);\n              } else {\n                c = b;\n                l = f;\n                k = e;\n                h = 9 === d.nodeType ? d : d.ownerDocument;\n                g === Ob.html && (g = Pb(l));\n                g === Ob.html ? \"script\" === l ? (k = h.createElement(\"div\"), k.innerHTML = \"<script>\\x3c/script>\", h = k.removeChild(k.firstChild)) : \"string\" === typeof k.is ? h = h.createElement(l, {\n                  is: k.is\n                }) : (h = h.createElement(l), \"select\" === l && (l = h, k.multiple ? l.multiple = !0 : k.size && (l.size = k.size))) : h = h.createElementNS(g, l);\n                k = h;\n                k[ue] = c;\n                k[ve] = e;\n                Hi(k, b, !1, !1);\n                b.stateNode = k;\n                l = f;\n                c = e;\n                var m = d,\n                    C = Zd(l, c);\n\n                switch (l) {\n                  case \"iframe\":\n                  case \"object\":\n                  case \"embed\":\n                    F(\"load\", k);\n                    d = c;\n                    break;\n\n                  case \"video\":\n                  case \"audio\":\n                    for (d = 0; d < cc.length; d++) {\n                      F(cc[d], k);\n                    }\n\n                    d = c;\n                    break;\n\n                  case \"source\":\n                    F(\"error\", k);\n                    d = c;\n                    break;\n\n                  case \"img\":\n                  case \"image\":\n                  case \"link\":\n                    F(\"error\", k);\n                    F(\"load\", k);\n                    d = c;\n                    break;\n\n                  case \"form\":\n                    F(\"reset\", k);\n                    F(\"submit\", k);\n                    d = c;\n                    break;\n\n                  case \"details\":\n                    F(\"toggle\", k);\n                    d = c;\n                    break;\n\n                  case \"input\":\n                    Bb(k, c);\n                    d = Ab(k, c);\n                    F(\"invalid\", k);\n                    $d(m, \"onChange\");\n                    break;\n\n                  case \"option\":\n                    d = Ib(k, c);\n                    break;\n\n                  case \"select\":\n                    k._wrapperState = {\n                      wasMultiple: !!c.multiple\n                    };\n                    d = n({}, c, {\n                      value: void 0\n                    });\n                    F(\"invalid\", k);\n                    $d(m, \"onChange\");\n                    break;\n\n                  case \"textarea\":\n                    Lb(k, c);\n                    d = Kb(k, c);\n                    F(\"invalid\", k);\n                    $d(m, \"onChange\");\n                    break;\n\n                  default:\n                    d = c;\n                }\n\n                Yd(l, d);\n                h = void 0;\n                g = l;\n                var y = k,\n                    H = d;\n\n                for (h in H) {\n                  if (H.hasOwnProperty(h)) {\n                    var z = H[h];\n                    \"style\" === h ? Wd(y, z) : \"dangerouslySetInnerHTML\" === h ? (z = z ? z.__html : void 0, null != z && Sb(y, z)) : \"children\" === h ? \"string\" === typeof z ? (\"textarea\" !== g || \"\" !== z) && Tb(y, z) : \"number\" === typeof z && Tb(y, \"\" + z) : \"suppressContentEditableWarning\" !== h && \"suppressHydrationWarning\" !== h && \"autoFocus\" !== h && (ia.hasOwnProperty(h) ? null != z && $d(m, h) : null != z && vb(y, h, z, C));\n                  }\n                }\n\n                switch (l) {\n                  case \"input\":\n                    yb(k);\n                    Gb(k, c, !1);\n                    break;\n\n                  case \"textarea\":\n                    yb(k);\n                    Nb(k, c);\n                    break;\n\n                  case \"option\":\n                    null != c.value && k.setAttribute(\"value\", \"\" + ub(c.value));\n                    break;\n\n                  case \"select\":\n                    d = k;\n                    d.multiple = !!c.multiple;\n                    k = c.value;\n                    null != k ? Jb(d, !!c.multiple, k, !1) : null != c.defaultValue && Jb(d, !!c.multiple, c.defaultValue, !0);\n                    break;\n\n                  default:\n                    \"function\" === typeof d.onClick && (k.onclick = ae);\n                }\n\n                (e = ne(f, e)) && Ci(b);\n              }\n\n              null !== b.ref && (b.effectTag |= 128);\n            } else if (null === b.stateNode) throw Error(u(166));\n            break;\n\n          case 6:\n            if (c && null != b.stateNode) Ki(c, b, c.memoizedProps, e);else {\n              if (\"string\" !== typeof e && null === b.stateNode) throw Error(u(166));\n              d = lh(kh.current);\n              lh(ih.current);\n              ki(b) ? (e = b, f = e.stateNode, d = e.memoizedProps, f[ue] = e, (e = f.nodeValue !== d) && Ci(b)) : (f = b, e = (9 === d.nodeType ? d : d.ownerDocument).createTextNode(e), e[ue] = f, b.stateNode = e);\n            }\n            break;\n\n          case 11:\n            break;\n\n          case 13:\n            G(M, b);\n            e = b.memoizedState;\n\n            if (0 !== (b.effectTag & 64)) {\n              b.expirationTime = d;\n              break a;\n            }\n\n            e = null !== e;\n            f = !1;\n            null === c ? void 0 !== b.memoizedProps.fallback && ki(b) : (d = c.memoizedState, f = null !== d, e || null === d || (d = c.child.sibling, null !== d && (k = b.firstEffect, null !== k ? (b.firstEffect = d, d.nextEffect = k) : (b.firstEffect = b.lastEffect = d, d.nextEffect = null), d.effectTag = 8)));\n            if (e && !f && 0 !== (b.mode & 2)) if (null === c && !0 !== b.memoizedProps.unstable_avoidThisFallback || 0 !== (M.current & 1)) X === qj && (X = tj);else {\n              if (X === qj || X === tj) X = uj;\n              0 !== Aj && null !== U && (Mj(U, W), Nj(U, Aj));\n            }\n            if (e || f) b.effectTag |= 4;\n            break;\n\n          case 7:\n            break;\n\n          case 8:\n            break;\n\n          case 12:\n            break;\n\n          case 4:\n            nh(b);\n            Ii(b);\n            break;\n\n          case 10:\n            tg(b);\n            break;\n\n          case 9:\n            break;\n\n          case 14:\n            break;\n\n          case 17:\n            L(b.type) && Ff(b);\n            break;\n\n          case 19:\n            G(M, b);\n            e = b.memoizedState;\n            if (null === e) break;\n            f = 0 !== (b.effectTag & 64);\n            k = e.rendering;\n            if (null === k) {\n              if (f) Li(e, !1);else {\n                if (X !== qj || null !== c && 0 !== (c.effectTag & 64)) for (c = b.child; null !== c;) {\n                  k = qh(c);\n\n                  if (null !== k) {\n                    b.effectTag |= 64;\n                    Li(e, !1);\n                    f = k.updateQueue;\n                    null !== f && (b.updateQueue = f, b.effectTag |= 4);\n                    null === e.lastEffect && (b.firstEffect = null);\n                    b.lastEffect = e.lastEffect;\n                    e = d;\n\n                    for (f = b.child; null !== f;) {\n                      d = f, c = e, d.effectTag &= 2, d.nextEffect = null, d.firstEffect = null, d.lastEffect = null, k = d.alternate, null === k ? (d.childExpirationTime = 0, d.expirationTime = c, d.child = null, d.memoizedProps = null, d.memoizedState = null, d.updateQueue = null, d.dependencies = null) : (d.childExpirationTime = k.childExpirationTime, d.expirationTime = k.expirationTime, d.child = k.child, d.memoizedProps = k.memoizedProps, d.memoizedState = k.memoizedState, d.updateQueue = k.updateQueue, c = k.dependencies, d.dependencies = null === c ? null : {\n                        expirationTime: c.expirationTime,\n                        firstContext: c.firstContext,\n                        responders: c.responders\n                      }), f = f.sibling;\n                    }\n\n                    I(M, M.current & 1 | 2, b);\n                    b = b.child;\n                    break a;\n                  }\n\n                  c = c.sibling;\n                }\n              }\n            } else {\n              if (!f) if (c = qh(k), null !== c) {\n                if (b.effectTag |= 64, f = !0, d = c.updateQueue, null !== d && (b.updateQueue = d, b.effectTag |= 4), Li(e, !0), null === e.tail && \"hidden\" === e.tailMode && !k.alternate) {\n                  b = b.lastEffect = e.lastEffect;\n                  null !== b && (b.nextEffect = null);\n                  break;\n                }\n              } else cg() > e.tailExpiration && 1 < d && (b.effectTag |= 64, f = !0, Li(e, !1), b.expirationTime = b.childExpirationTime = d - 1);\n              e.isBackwards ? (k.sibling = b.child, b.child = k) : (d = e.last, null !== d ? d.sibling = k : b.child = k, e.last = k);\n            }\n\n            if (null !== e.tail) {\n              0 === e.tailExpiration && (e.tailExpiration = cg() + 500);\n              d = e.tail;\n              e.rendering = d;\n              e.tail = d.sibling;\n              e.lastEffect = b.lastEffect;\n              d.sibling = null;\n              e = M.current;\n              e = f ? e & 1 | 2 : e & 1;\n              I(M, e, b);\n              b = d;\n              break a;\n            }\n\n            break;\n\n          case 20:\n            break;\n\n          case 21:\n            break;\n\n          default:\n            throw Error(u(156, b.tag));\n        }\n\n        b = null;\n      }\n\n      e = V;\n\n      if (1 === W || 1 !== e.childExpirationTime) {\n        f = 0;\n\n        for (d = e.child; null !== d;) {\n          c = d.expirationTime, k = d.childExpirationTime, c > f && (f = c), k > f && (f = k), d = d.sibling;\n        }\n\n        e.childExpirationTime = f;\n      }\n\n      if (null !== b) return b;\n      null !== a && 0 === (a.effectTag & 2048) && (null === a.firstEffect && (a.firstEffect = V.firstEffect), null !== V.lastEffect && (null !== a.lastEffect && (a.lastEffect.nextEffect = V.firstEffect), a.lastEffect = V.lastEffect), 1 < V.effectTag && (null !== a.lastEffect ? a.lastEffect.nextEffect = V : a.firstEffect = V, a.lastEffect = V));\n    } else {\n      b = Mi(V, W);\n      if (null !== b) return b.effectTag &= 2047, b;\n      null !== a && (a.firstEffect = a.lastEffect = null, a.effectTag |= 2048);\n    }\n\n    b = V.sibling;\n    if (null !== b) return b;\n    V = a;\n  } while (null !== V);\n\n  X === qj && (X = vj);\n  return null;\n}\n\nfunction Xj(a) {\n  var b = a.expirationTime;\n  a = a.childExpirationTime;\n  return b > a ? b : a;\n}\n\nfunction Yj(a) {\n  var b = dg();\n  fg(99, ik.bind(null, a, b));\n  return null;\n}\n\nfunction ik(a, b) {\n  do {\n    Sj();\n  } while (null !== Ej);\n\n  if ((T & (oj | pj)) !== S) throw Error(u(327));\n  var c = a.finishedWork,\n      d = a.finishedExpirationTime;\n  if (null === c) return null;\n  a.finishedWork = null;\n  a.finishedExpirationTime = 0;\n  if (c === a.current) throw Error(u(177));\n  a.callbackNode = null;\n  a.callbackExpirationTime = 0;\n  a.callbackPriority = 90;\n  a.nextKnownPendingLevel = 0;\n  var e = Xj(c);\n  a.firstPendingTime = e;\n  d <= a.lastSuspendedTime ? a.firstSuspendedTime = a.lastSuspendedTime = a.nextKnownPendingLevel = 0 : d <= a.firstSuspendedTime && (a.firstSuspendedTime = d - 1);\n  d <= a.lastPingedTime && (a.lastPingedTime = 0);\n  d <= a.lastExpiredTime && (a.lastExpiredTime = 0);\n  a === U && (V = U = null, W = 0);\n  1 < c.effectTag ? null !== c.lastEffect ? (c.lastEffect.nextEffect = c, e = c.firstEffect) : e = c : e = c.firstEffect;\n\n  if (null !== e) {\n    var f = T;\n    T |= pj;\n    mj.current = null;\n    le = Ld;\n    var g = fe();\n\n    if (ge(g)) {\n      if (\"selectionStart\" in g) var h = {\n        start: g.selectionStart,\n        end: g.selectionEnd\n      };else a: {\n        h = (h = g.ownerDocument) && h.defaultView || window;\n        var k = h.getSelection && h.getSelection();\n\n        if (k && 0 !== k.rangeCount) {\n          h = k.anchorNode;\n          var l = k.anchorOffset,\n              m = k.focusNode;\n          k = k.focusOffset;\n\n          try {\n            h.nodeType, m.nodeType;\n          } catch (Db) {\n            h = null;\n            break a;\n          }\n\n          var C = 0,\n              y = -1,\n              H = -1,\n              z = 0,\n              ta = 0,\n              r = g,\n              x = null;\n\n          b: for (;;) {\n            for (var A;;) {\n              r !== h || 0 !== l && 3 !== r.nodeType || (y = C + l);\n              r !== m || 0 !== k && 3 !== r.nodeType || (H = C + k);\n              3 === r.nodeType && (C += r.nodeValue.length);\n              if (null === (A = r.firstChild)) break;\n              x = r;\n              r = A;\n            }\n\n            for (;;) {\n              if (r === g) break b;\n              x === h && ++z === l && (y = C);\n              x === m && ++ta === k && (H = C);\n              if (null !== (A = r.nextSibling)) break;\n              r = x;\n              x = r.parentNode;\n            }\n\n            r = A;\n          }\n\n          h = -1 === y || -1 === H ? null : {\n            start: y,\n            end: H\n          };\n        } else h = null;\n      }\n      h = h || {\n        start: 0,\n        end: 0\n      };\n    } else h = null;\n\n    me = {\n      focusedElem: g,\n      selectionRange: h\n    };\n    Ld = !1;\n    Y = e;\n\n    do {\n      try {\n        jk();\n      } catch (Db) {\n        if (null === Y) throw Error(u(330));\n        Ri(Y, Db);\n        Y = Y.nextEffect;\n      }\n    } while (null !== Y);\n\n    Y = e;\n\n    do {\n      try {\n        for (g = a, h = b; null !== Y;) {\n          var p = Y.effectTag;\n          p & 16 && Tb(Y.stateNode, \"\");\n\n          if (p & 128) {\n            var t = Y.alternate;\n\n            if (null !== t) {\n              var v = t.ref;\n              null !== v && (\"function\" === typeof v ? v(null) : v.current = null);\n            }\n          }\n\n          switch (p & 1038) {\n            case 2:\n              $i(Y);\n              Y.effectTag &= -3;\n              break;\n\n            case 6:\n              $i(Y);\n              Y.effectTag &= -3;\n              aj(Y.alternate, Y);\n              break;\n\n            case 1024:\n              Y.effectTag &= -1025;\n              break;\n\n            case 1028:\n              Y.effectTag &= -1025;\n              aj(Y.alternate, Y);\n              break;\n\n            case 4:\n              aj(Y.alternate, Y);\n              break;\n\n            case 8:\n              l = Y, Xi(g, l, h), Yi(l);\n          }\n\n          Y = Y.nextEffect;\n        }\n      } catch (Db) {\n        if (null === Y) throw Error(u(330));\n        Ri(Y, Db);\n        Y = Y.nextEffect;\n      }\n    } while (null !== Y);\n\n    v = me;\n    t = fe();\n    p = v.focusedElem;\n    h = v.selectionRange;\n\n    if (t !== p && p && p.ownerDocument && ee(p.ownerDocument.documentElement, p)) {\n      null !== h && ge(p) && (t = h.start, v = h.end, void 0 === v && (v = t), \"selectionStart\" in p ? (p.selectionStart = t, p.selectionEnd = Math.min(v, p.value.length)) : (v = (t = p.ownerDocument || document) && t.defaultView || window, v.getSelection && (v = v.getSelection(), l = p.textContent.length, g = Math.min(h.start, l), h = void 0 === h.end ? g : Math.min(h.end, l), !v.extend && g > h && (l = h, h = g, g = l), l = de(p, g), m = de(p, h), l && m && (1 !== v.rangeCount || v.anchorNode !== l.node || v.anchorOffset !== l.offset || v.focusNode !== m.node || v.focusOffset !== m.offset) && (t = t.createRange(), t.setStart(l.node, l.offset), v.removeAllRanges(), g > h ? (v.addRange(t), v.extend(m.node, m.offset)) : (t.setEnd(m.node, m.offset), v.addRange(t))))));\n      t = [];\n\n      for (v = p; v = v.parentNode;) {\n        1 === v.nodeType && t.push({\n          element: v,\n          left: v.scrollLeft,\n          top: v.scrollTop\n        });\n      }\n\n      \"function\" === typeof p.focus && p.focus();\n\n      for (p = 0; p < t.length; p++) {\n        v = t[p], v.element.scrollLeft = v.left, v.element.scrollTop = v.top;\n      }\n    }\n\n    me = null;\n    Ld = !!le;\n    le = null;\n    a.current = c;\n    Y = e;\n\n    do {\n      try {\n        for (p = d; null !== Y;) {\n          var Dh = Y.effectTag;\n\n          if (Dh & 36) {\n            var dc = Y.alternate;\n            t = Y;\n            v = p;\n\n            switch (t.tag) {\n              case 0:\n              case 11:\n              case 15:\n                Ui(16, 32, t);\n                break;\n\n              case 1:\n                var fd = t.stateNode;\n                if (t.effectTag & 4) if (null === dc) fd.componentDidMount();else {\n                  var hk = t.elementType === t.type ? dc.memoizedProps : mg(t.type, dc.memoizedProps);\n                  fd.componentDidUpdate(hk, dc.memoizedState, fd.__reactInternalSnapshotBeforeUpdate);\n                }\n                var Eh = t.updateQueue;\n                null !== Eh && Kg(t, Eh, fd, v);\n                break;\n\n              case 3:\n                var Fh = t.updateQueue;\n\n                if (null !== Fh) {\n                  g = null;\n                  if (null !== t.child) switch (t.child.tag) {\n                    case 5:\n                      g = t.child.stateNode;\n                      break;\n\n                    case 1:\n                      g = t.child.stateNode;\n                  }\n                  Kg(t, Fh, g, v);\n                }\n\n                break;\n\n              case 5:\n                var xk = t.stateNode;\n                null === dc && t.effectTag & 4 && ne(t.type, t.memoizedProps) && xk.focus();\n                break;\n\n              case 6:\n                break;\n\n              case 4:\n                break;\n\n              case 12:\n                break;\n\n              case 13:\n                if (null === t.memoizedState) {\n                  var Di = t.alternate;\n\n                  if (null !== Di) {\n                    var Ei = Di.memoizedState;\n\n                    if (null !== Ei) {\n                      var Fi = Ei.dehydrated;\n                      null !== Fi && Lc(Fi);\n                    }\n                  }\n                }\n\n                break;\n\n              case 19:\n              case 17:\n              case 20:\n              case 21:\n                break;\n\n              default:\n                throw Error(u(163));\n            }\n          }\n\n          if (Dh & 128) {\n            t = void 0;\n            var xd = Y.ref;\n\n            if (null !== xd) {\n              var Gi = Y.stateNode;\n\n              switch (Y.tag) {\n                case 5:\n                  t = Gi;\n                  break;\n\n                default:\n                  t = Gi;\n              }\n\n              \"function\" === typeof xd ? xd(t) : xd.current = t;\n            }\n          }\n\n          Y = Y.nextEffect;\n        }\n      } catch (Db) {\n        if (null === Y) throw Error(u(330));\n        Ri(Y, Db);\n        Y = Y.nextEffect;\n      }\n    } while (null !== Y);\n\n    Y = null;\n    Yf();\n    T = f;\n  } else a.current = c;\n\n  if (Dj) Dj = !1, Ej = a, Fj = b;else for (Y = e; null !== Y;) {\n    b = Y.nextEffect, Y.nextEffect = null, Y = b;\n  }\n  b = a.firstPendingTime;\n  0 === b && (jj = null);\n  1073741823 === b ? a === Ij ? Hj++ : (Hj = 0, Ij = a) : Hj = 0;\n  \"function\" === typeof kk && kk(c.stateNode, d);\n  Z(a);\n  if (gj) throw gj = !1, a = hj, hj = null, a;\n  if ((T & nj) !== S) return null;\n  jg();\n  return null;\n}\n\nfunction jk() {\n  for (; null !== Y;) {\n    var a = Y.effectTag;\n    0 !== (a & 256) && Ti(Y.alternate, Y);\n    0 === (a & 512) || Dj || (Dj = !0, gg(97, function () {\n      Sj();\n      return null;\n    }));\n    Y = Y.nextEffect;\n  }\n}\n\nfunction Sj() {\n  if (90 !== Fj) {\n    var a = 97 < Fj ? 97 : Fj;\n    Fj = 90;\n    return fg(a, lk);\n  }\n}\n\nfunction lk() {\n  if (null === Ej) return !1;\n  var a = Ej;\n  Ej = null;\n  if ((T & (oj | pj)) !== S) throw Error(u(331));\n  var b = T;\n  T |= pj;\n\n  for (a = a.current.firstEffect; null !== a;) {\n    try {\n      var c = a;\n      if (0 !== (c.effectTag & 512)) switch (c.tag) {\n        case 0:\n        case 11:\n        case 15:\n          Ui(128, 0, c), Ui(0, 64, c);\n      }\n    } catch (d) {\n      if (null === a) throw Error(u(330));\n      Ri(a, d);\n    }\n\n    c = a.nextEffect;\n    a.nextEffect = null;\n    a = c;\n  }\n\n  T = b;\n  jg();\n  return !0;\n}\n\nfunction mk(a, b, c) {\n  b = Ni(c, b);\n  b = fj(a, b, 1073741823);\n  Dg(a, b);\n  a = Kj(a, 1073741823);\n  null !== a && Z(a);\n}\n\nfunction Ri(a, b) {\n  if (3 === a.tag) mk(a, a, b);else for (var c = a[\"return\"]; null !== c;) {\n    if (3 === c.tag) {\n      mk(c, a, b);\n      break;\n    } else if (1 === c.tag) {\n      var d = c.stateNode;\n\n      if (\"function\" === typeof c.type.getDerivedStateFromError || \"function\" === typeof d.componentDidCatch && (null === jj || !jj.has(d))) {\n        a = Ni(b, a);\n        a = ij(c, a, 1073741823);\n        Dg(c, a);\n        c = Kj(c, 1073741823);\n        null !== c && Z(c);\n        break;\n      }\n    }\n\n    c = c[\"return\"];\n  }\n}\n\nfunction dk(a, b, c) {\n  var d = a.pingCache;\n  null !== d && d[\"delete\"](b);\n  U === a && W === c ? X === uj || X === tj && 1073741823 === xj && cg() - bj < Cj ? Tj(a, W) : Bj = !0 : Pj(a, c) && (b = a.lastPingedTime, 0 !== b && b < c || (a.lastPingedTime = c, a.finishedExpirationTime === c && (a.finishedExpirationTime = 0, a.finishedWork = null), Z(a)));\n}\n\nfunction dj(a, b) {\n  var c = a.stateNode;\n  null !== c && c[\"delete\"](b);\n  b = 0;\n  0 === b && (b = Pg(), b = Qg(b, a, null));\n  a = Kj(a, b);\n  null !== a && Z(a);\n}\n\nvar gk;\n\ngk = function gk(a, b, c) {\n  var d = b.expirationTime;\n\n  if (null !== a) {\n    var e = b.pendingProps;\n    if (a.memoizedProps !== e || K.current) wg = !0;else {\n      if (d < c) {\n        wg = !1;\n\n        switch (b.tag) {\n          case 3:\n            wi(b);\n            li();\n            break;\n\n          case 5:\n            oh(b);\n            if (b.mode & 4 && 1 !== c && e.hidden) return b.expirationTime = b.childExpirationTime = 1, null;\n            break;\n\n          case 1:\n            L(b.type) && Jf(b);\n            break;\n\n          case 4:\n            mh(b, b.stateNode.containerInfo);\n            break;\n\n          case 10:\n            sg(b, b.memoizedProps.value);\n            break;\n\n          case 13:\n            if (null !== b.memoizedState) {\n              d = b.child.childExpirationTime;\n              if (0 !== d && d >= c) return yi(a, b, c);\n              I(M, M.current & 1, b);\n              b = oi(a, b, c);\n              return null !== b ? b.sibling : null;\n            }\n\n            I(M, M.current & 1, b);\n            break;\n\n          case 19:\n            d = b.childExpirationTime >= c;\n\n            if (0 !== (a.effectTag & 64)) {\n              if (d) return Bi(a, b, c);\n              b.effectTag |= 64;\n            }\n\n            e = b.memoizedState;\n            null !== e && (e.rendering = null, e.tail = null);\n            I(M, M.current, b);\n            if (!d) return null;\n        }\n\n        return oi(a, b, c);\n      }\n\n      wg = !1;\n    }\n  } else wg = !1;\n\n  b.expirationTime = 0;\n\n  switch (b.tag) {\n    case 2:\n      d = b.type;\n      null !== a && (a.alternate = null, b.alternate = null, b.effectTag |= 2);\n      a = b.pendingProps;\n      e = Ef(b, J.current);\n      vg(b, c);\n      e = Ih(null, b, d, a, e, c);\n      b.effectTag |= 1;\n\n      if (\"object\" === typeof e && null !== e && \"function\" === typeof e.render && void 0 === e.$$typeof) {\n        b.tag = 1;\n        Mh();\n\n        if (L(d)) {\n          var f = !0;\n          Jf(b);\n        } else f = !1;\n\n        b.memoizedState = null !== e.state && void 0 !== e.state ? e.state : null;\n        var g = d.getDerivedStateFromProps;\n        \"function\" === typeof g && Og(b, d, g, a);\n        e.updater = Sg;\n        b.stateNode = e;\n        e._reactInternalFiber = b;\n        Wg(b, d, a, c);\n        b = vi(null, b, d, !0, f, c);\n      } else b.tag = 0, R(null, b, e, c), b = b.child;\n\n      return b;\n\n    case 16:\n      e = b.elementType;\n      null !== a && (a.alternate = null, b.alternate = null, b.effectTag |= 2);\n      a = b.pendingProps;\n      Va(e);\n      if (1 !== e._status) throw e._result;\n      e = e._result;\n      b.type = e;\n      f = b.tag = nk(e);\n      a = mg(e, a);\n\n      switch (f) {\n        case 0:\n          b = si(null, b, e, a, c);\n          break;\n\n        case 1:\n          b = ui(null, b, e, a, c);\n          break;\n\n        case 11:\n          b = ni(null, b, e, a, c);\n          break;\n\n        case 14:\n          b = pi(null, b, e, mg(e.type, a), d, c);\n          break;\n\n        default:\n          throw Error(u(306, e, \"\"));\n      }\n\n      return b;\n\n    case 0:\n      return d = b.type, e = b.pendingProps, e = b.elementType === d ? e : mg(d, e), si(a, b, d, e, c);\n\n    case 1:\n      return d = b.type, e = b.pendingProps, e = b.elementType === d ? e : mg(d, e), ui(a, b, d, e, c);\n\n    case 3:\n      wi(b);\n      d = b.updateQueue;\n      if (null === d) throw Error(u(282));\n      e = b.memoizedState;\n      e = null !== e ? e.element : null;\n      Hg(b, d, b.pendingProps, null, c);\n      d = b.memoizedState.element;\n      if (d === e) li(), b = oi(a, b, c);else {\n        if (e = b.stateNode.hydrate) di = re(b.stateNode.containerInfo.firstChild), ci = b, e = ei = !0;\n        if (e) for (c = gh(b, null, d, c), b.child = c; c;) {\n          c.effectTag = c.effectTag & -3 | 1024, c = c.sibling;\n        } else R(a, b, d, c), li();\n        b = b.child;\n      }\n      return b;\n\n    case 5:\n      return oh(b), null === a && ii(b), d = b.type, e = b.pendingProps, f = null !== a ? a.memoizedProps : null, g = e.children, oe(d, e) ? g = null : null !== f && oe(d, f) && (b.effectTag |= 16), ti(a, b), b.mode & 4 && 1 !== c && e.hidden ? (b.expirationTime = b.childExpirationTime = 1, b = null) : (R(a, b, g, c), b = b.child), b;\n\n    case 6:\n      return null === a && ii(b), null;\n\n    case 13:\n      return yi(a, b, c);\n\n    case 4:\n      return mh(b, b.stateNode.containerInfo), d = b.pendingProps, null === a ? b.child = fh(b, null, d, c) : R(a, b, d, c), b.child;\n\n    case 11:\n      return d = b.type, e = b.pendingProps, e = b.elementType === d ? e : mg(d, e), ni(a, b, d, e, c);\n\n    case 7:\n      return R(a, b, b.pendingProps, c), b.child;\n\n    case 8:\n      return R(a, b, b.pendingProps.children, c), b.child;\n\n    case 12:\n      return R(a, b, b.pendingProps.children, c), b.child;\n\n    case 10:\n      a: {\n        d = b.type._context;\n        e = b.pendingProps;\n        g = b.memoizedProps;\n        f = e.value;\n        sg(b, f);\n\n        if (null !== g) {\n          var h = g.value;\n          f = of(h, f) ? 0 : (\"function\" === typeof d._calculateChangedBits ? d._calculateChangedBits(h, f) : 1073741823) | 0;\n\n          if (0 === f) {\n            if (g.children === e.children && !K.current) {\n              b = oi(a, b, c);\n              break a;\n            }\n          } else for (h = b.child, null !== h && (h[\"return\"] = b); null !== h;) {\n            var k = h.dependencies;\n\n            if (null !== k) {\n              g = h.child;\n\n              for (var l = k.firstContext; null !== l;) {\n                if (l.context === d && 0 !== (l.observedBits & f)) {\n                  1 === h.tag && (l = Bg(c, null), l.tag = 2, Dg(h, l));\n                  h.expirationTime < c && (h.expirationTime = c);\n                  l = h.alternate;\n                  null !== l && l.expirationTime < c && (l.expirationTime = c);\n                  ug(h[\"return\"], c);\n                  k.expirationTime < c && (k.expirationTime = c);\n                  break;\n                }\n\n                l = l.next;\n              }\n            } else g = 10 === h.tag ? h.type === b.type ? null : h.child : h.child;\n\n            if (null !== g) g[\"return\"] = h;else for (g = h; null !== g;) {\n              if (g === b) {\n                g = null;\n                break;\n              }\n\n              h = g.sibling;\n\n              if (null !== h) {\n                h[\"return\"] = g[\"return\"];\n                g = h;\n                break;\n              }\n\n              g = g[\"return\"];\n            }\n            h = g;\n          }\n        }\n\n        R(a, b, e.children, c);\n        b = b.child;\n      }\n\n      return b;\n\n    case 9:\n      return e = b.type, f = b.pendingProps, d = f.children, vg(b, c), e = xg(e, f.unstable_observedBits), d = d(e), b.effectTag |= 1, R(a, b, d, c), b.child;\n\n    case 14:\n      return e = b.type, f = mg(e, b.pendingProps), f = mg(e.type, f), pi(a, b, e, f, d, c);\n\n    case 15:\n      return ri(a, b, b.type, b.pendingProps, d, c);\n\n    case 17:\n      return d = b.type, e = b.pendingProps, e = b.elementType === d ? e : mg(d, e), null !== a && (a.alternate = null, b.alternate = null, b.effectTag |= 2), b.tag = 1, L(d) ? (a = !0, Jf(b)) : a = !1, vg(b, c), Ug(b, d, e, c), Wg(b, d, e, c), vi(null, b, d, !0, a, c);\n\n    case 19:\n      return Bi(a, b, c);\n  }\n\n  throw Error(u(156, b.tag));\n};\n\nvar kk = null,\n    Wi = null;\n\nfunction ok(a) {\n  if (\"undefined\" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) return !1;\n  var b = __REACT_DEVTOOLS_GLOBAL_HOOK__;\n  if (b.isDisabled || !b.supportsFiber) return !0;\n\n  try {\n    var c = b.inject(a);\n\n    kk = function kk(a) {\n      try {\n        b.onCommitFiberRoot(c, a, void 0, 64 === (a.current.effectTag & 64));\n      } catch (e) {}\n    };\n\n    Wi = function Wi(a) {\n      try {\n        b.onCommitFiberUnmount(c, a);\n      } catch (e) {}\n    };\n  } catch (d) {}\n\n  return !0;\n}\n\nfunction pk(a, b, c, d) {\n  this.tag = a;\n  this.key = c;\n  this.sibling = this.child = this[\"return\"] = this.stateNode = this.type = this.elementType = null;\n  this.index = 0;\n  this.ref = null;\n  this.pendingProps = b;\n  this.dependencies = this.memoizedState = this.updateQueue = this.memoizedProps = null;\n  this.mode = d;\n  this.effectTag = 0;\n  this.lastEffect = this.firstEffect = this.nextEffect = null;\n  this.childExpirationTime = this.expirationTime = 0;\n  this.alternate = null;\n}\n\nfunction gi(a, b, c, d) {\n  return new pk(a, b, c, d);\n}\n\nfunction qi(a) {\n  a = a.prototype;\n  return !(!a || !a.isReactComponent);\n}\n\nfunction nk(a) {\n  if (\"function\" === typeof a) return qi(a) ? 1 : 0;\n\n  if (void 0 !== a && null !== a) {\n    a = a.$$typeof;\n    if (a === Oa) return 11;\n    if (a === Ra) return 14;\n  }\n\n  return 2;\n}\n\nfunction ah(a, b) {\n  var c = a.alternate;\n  null === c ? (c = gi(a.tag, b, a.key, a.mode), c.elementType = a.elementType, c.type = a.type, c.stateNode = a.stateNode, c.alternate = a, a.alternate = c) : (c.pendingProps = b, c.effectTag = 0, c.nextEffect = null, c.firstEffect = null, c.lastEffect = null);\n  c.childExpirationTime = a.childExpirationTime;\n  c.expirationTime = a.expirationTime;\n  c.child = a.child;\n  c.memoizedProps = a.memoizedProps;\n  c.memoizedState = a.memoizedState;\n  c.updateQueue = a.updateQueue;\n  b = a.dependencies;\n  c.dependencies = null === b ? null : {\n    expirationTime: b.expirationTime,\n    firstContext: b.firstContext,\n    responders: b.responders\n  };\n  c.sibling = a.sibling;\n  c.index = a.index;\n  c.ref = a.ref;\n  return c;\n}\n\nfunction ch(a, b, c, d, e, f) {\n  var g = 2;\n  d = a;\n  if (\"function\" === typeof a) qi(a) && (g = 1);else if (\"string\" === typeof a) g = 5;else a: switch (a) {\n    case Ia:\n      return eh(c.children, e, f, b);\n\n    case Na:\n      g = 8;\n      e |= 7;\n      break;\n\n    case Ja:\n      g = 8;\n      e |= 1;\n      break;\n\n    case Ka:\n      return a = gi(12, c, b, e | 8), a.elementType = Ka, a.type = Ka, a.expirationTime = f, a;\n\n    case Pa:\n      return a = gi(13, c, b, e), a.type = Pa, a.elementType = Pa, a.expirationTime = f, a;\n\n    case Qa:\n      return a = gi(19, c, b, e), a.elementType = Qa, a.expirationTime = f, a;\n\n    default:\n      if (\"object\" === typeof a && null !== a) switch (a.$$typeof) {\n        case La:\n          g = 10;\n          break a;\n\n        case Ma:\n          g = 9;\n          break a;\n\n        case Oa:\n          g = 11;\n          break a;\n\n        case Ra:\n          g = 14;\n          break a;\n\n        case Sa:\n          g = 16;\n          d = null;\n          break a;\n      }\n      throw Error(u(130, null == a ? a : typeof a, \"\"));\n  }\n  b = gi(g, c, b, e);\n  b.elementType = a;\n  b.type = d;\n  b.expirationTime = f;\n  return b;\n}\n\nfunction eh(a, b, c, d) {\n  a = gi(7, a, d, b);\n  a.expirationTime = c;\n  return a;\n}\n\nfunction bh(a, b, c) {\n  a = gi(6, a, null, b);\n  a.expirationTime = c;\n  return a;\n}\n\nfunction dh(a, b, c) {\n  b = gi(4, null !== a.children ? a.children : [], a.key, b);\n  b.expirationTime = c;\n  b.stateNode = {\n    containerInfo: a.containerInfo,\n    pendingChildren: null,\n    implementation: a.implementation\n  };\n  return b;\n}\n\nfunction qk(a, b, c) {\n  this.tag = b;\n  this.current = null;\n  this.containerInfo = a;\n  this.pingCache = this.pendingChildren = null;\n  this.finishedExpirationTime = 0;\n  this.finishedWork = null;\n  this.timeoutHandle = -1;\n  this.pendingContext = this.context = null;\n  this.hydrate = c;\n  this.callbackNode = null;\n  this.callbackPriority = 90;\n  this.lastExpiredTime = this.lastPingedTime = this.nextKnownPendingLevel = this.lastSuspendedTime = this.firstSuspendedTime = this.firstPendingTime = 0;\n}\n\nfunction Pj(a, b) {\n  var c = a.firstSuspendedTime;\n  a = a.lastSuspendedTime;\n  return 0 !== c && c >= b && a <= b;\n}\n\nfunction Mj(a, b) {\n  var c = a.firstSuspendedTime,\n      d = a.lastSuspendedTime;\n  c < b && (a.firstSuspendedTime = b);\n  if (d > b || 0 === c) a.lastSuspendedTime = b;\n  b <= a.lastPingedTime && (a.lastPingedTime = 0);\n  b <= a.lastExpiredTime && (a.lastExpiredTime = 0);\n}\n\nfunction Nj(a, b) {\n  b > a.firstPendingTime && (a.firstPendingTime = b);\n  var c = a.firstSuspendedTime;\n  0 !== c && (b >= c ? a.firstSuspendedTime = a.lastSuspendedTime = a.nextKnownPendingLevel = 0 : b >= a.lastSuspendedTime && (a.lastSuspendedTime = b + 1), b > a.nextKnownPendingLevel && (a.nextKnownPendingLevel = b));\n}\n\nfunction Rj(a, b) {\n  var c = a.lastExpiredTime;\n  if (0 === c || c > b) a.lastExpiredTime = b;\n}\n\nfunction rk(a, b, c, d) {\n  var e = b.current,\n      f = Pg(),\n      g = Mg.suspense;\n  f = Qg(f, e, g);\n\n  a: if (c) {\n    c = c._reactInternalFiber;\n\n    b: {\n      if (ec(c) !== c || 1 !== c.tag) throw Error(u(170));\n      var h = c;\n\n      do {\n        switch (h.tag) {\n          case 3:\n            h = h.stateNode.context;\n            break b;\n\n          case 1:\n            if (L(h.type)) {\n              h = h.stateNode.__reactInternalMemoizedMergedChildContext;\n              break b;\n            }\n\n        }\n\n        h = h[\"return\"];\n      } while (null !== h);\n\n      throw Error(u(171));\n    }\n\n    if (1 === c.tag) {\n      var k = c.type;\n\n      if (L(k)) {\n        c = If(c, k, h);\n        break a;\n      }\n    }\n\n    c = h;\n  } else c = Cf;\n\n  null === b.context ? b.context = c : b.pendingContext = c;\n  b = Bg(f, g);\n  b.payload = {\n    element: a\n  };\n  d = void 0 === d ? null : d;\n  null !== d && (b.callback = d);\n  Dg(e, b);\n  Rg(e, f);\n  return f;\n}\n\nfunction sk(a) {\n  a = a.current;\n  if (!a.child) return null;\n\n  switch (a.child.tag) {\n    case 5:\n      return a.child.stateNode;\n\n    default:\n      return a.child.stateNode;\n  }\n}\n\nfunction tk(a, b) {\n  a = a.memoizedState;\n  null !== a && null !== a.dehydrated && a.retryTime < b && (a.retryTime = b);\n}\n\nfunction uk(a, b) {\n  tk(a, b);\n  (a = a.alternate) && tk(a, b);\n}\n\nfunction vk(a, b, c) {\n  c = null != c && !0 === c.hydrate;\n  var d = new qk(a, b, c),\n      e = gi(3, null, null, 2 === b ? 7 : 1 === b ? 3 : 0);\n  d.current = e;\n  e.stateNode = d;\n  a[we] = d.current;\n  c && 0 !== b && wc(9 === a.nodeType ? a : a.ownerDocument);\n  this._internalRoot = d;\n}\n\nvk.prototype.render = function (a, b) {\n  rk(a, this._internalRoot, null, void 0 === b ? null : b);\n};\n\nvk.prototype.unmount = function (a) {\n  var b = this._internalRoot,\n      c = void 0 === a ? null : a,\n      d = b.containerInfo;\n  rk(null, b, null, function () {\n    d[we] = null;\n    null !== c && c();\n  });\n};\n\nfunction wk(a) {\n  return !(!a || 1 !== a.nodeType && 9 !== a.nodeType && 11 !== a.nodeType && (8 !== a.nodeType || \" react-mount-point-unstable \" !== a.nodeValue));\n}\n\nfunction yk(a, b) {\n  b || (b = a ? 9 === a.nodeType ? a.documentElement : a.firstChild : null, b = !(!b || 1 !== b.nodeType || !b.hasAttribute(\"data-reactroot\")));\n  if (!b) for (var c; c = a.lastChild;) {\n    a.removeChild(c);\n  }\n  return new vk(a, 0, b ? {\n    hydrate: !0\n  } : void 0);\n}\n\nfunction zk(a, b, c, d, e) {\n  var f = c._reactRootContainer;\n\n  if (f) {\n    var g = f._internalRoot;\n\n    if (\"function\" === typeof e) {\n      var h = e;\n\n      e = function e() {\n        var a = sk(g);\n        h.call(a);\n      };\n    }\n\n    rk(b, g, a, e);\n  } else {\n    f = c._reactRootContainer = yk(c, d);\n    g = f._internalRoot;\n\n    if (\"function\" === typeof e) {\n      var k = e;\n\n      e = function e() {\n        var a = sk(g);\n        k.call(a);\n      };\n    }\n\n    ck(function () {\n      rk(b, g, a, e);\n    });\n  }\n\n  return sk(g);\n}\n\nfunction Ak(a, b, c) {\n  var d = 3 < arguments.length && void 0 !== arguments[3] ? arguments[3] : null;\n  return {\n    $$typeof: Ha,\n    key: null == d ? null : \"\" + d,\n    children: a,\n    containerInfo: b,\n    implementation: c\n  };\n}\n\njc = function jc(a) {\n  if (13 === a.tag) {\n    var b = lg(Pg(), 150, 100);\n    Rg(a, b);\n    uk(a, b);\n  }\n};\n\nkc = function kc(a) {\n  if (13 === a.tag) {\n    Pg();\n    var b = kg++;\n    Rg(a, b);\n    uk(a, b);\n  }\n};\n\nlc = function lc(a) {\n  if (13 === a.tag) {\n    var b = Pg();\n    b = Qg(b, a, null);\n    Rg(a, b);\n    uk(a, b);\n  }\n};\n\nZa = function Za(a, b, c) {\n  switch (b) {\n    case \"input\":\n      Eb(a, c);\n      b = c.name;\n\n      if (\"radio\" === c.type && null != b) {\n        for (c = a; c.parentNode;) {\n          c = c.parentNode;\n        }\n\n        c = c.querySelectorAll(\"input[name=\" + JSON.stringify(\"\" + b) + '][type=\"radio\"]');\n\n        for (b = 0; b < c.length; b++) {\n          var d = c[b];\n\n          if (d !== a && d.form === a.form) {\n            var e = ye(d);\n            if (!e) throw Error(u(90));\n            zb(d);\n            Eb(d, e);\n          }\n        }\n      }\n\n      break;\n\n    case \"textarea\":\n      Mb(a, c);\n      break;\n\n    case \"select\":\n      b = c.value, null != b && Jb(a, !!c.multiple, b, !1);\n  }\n};\n\neb = bk;\n\nfb = function fb(a, b, c, d) {\n  var e = T;\n  T |= 4;\n\n  try {\n    return fg(98, a.bind(null, b, c, d));\n  } finally {\n    T = e, T === S && jg();\n  }\n};\n\ngb = function gb() {\n  (T & (1 | oj | pj)) === S && (ak(), Sj());\n};\n\nhb = function hb(a, b) {\n  var c = T;\n  T |= 2;\n\n  try {\n    return a(b);\n  } finally {\n    T = c, T === S && jg();\n  }\n};\n\nfunction Bk(a, b) {\n  var c = 2 < arguments.length && void 0 !== arguments[2] ? arguments[2] : null;\n  if (!wk(b)) throw Error(u(200));\n  return Ak(a, b, null, c);\n}\n\nvar Ck = {\n  createPortal: Bk,\n  findDOMNode: function findDOMNode(a) {\n    if (null == a) return null;\n    if (1 === a.nodeType) return a;\n    var b = a._reactInternalFiber;\n\n    if (void 0 === b) {\n      if (\"function\" === typeof a.render) throw Error(u(188));\n      throw Error(u(268, Object.keys(a)));\n    }\n\n    a = ic(b);\n    a = null === a ? null : a.stateNode;\n    return a;\n  },\n  hydrate: function hydrate(a, b, c) {\n    if (!wk(b)) throw Error(u(200));\n    return zk(null, a, b, !0, c);\n  },\n  render: function render(a, b, c) {\n    if (!wk(b)) throw Error(u(200));\n    return zk(null, a, b, !1, c);\n  },\n  unstable_renderSubtreeIntoContainer: function unstable_renderSubtreeIntoContainer(a, b, c, d) {\n    if (!wk(c)) throw Error(u(200));\n    if (null == a || void 0 === a._reactInternalFiber) throw Error(u(38));\n    return zk(a, b, c, !1, d);\n  },\n  unmountComponentAtNode: function unmountComponentAtNode(a) {\n    if (!wk(a)) throw Error(u(40));\n    return a._reactRootContainer ? (ck(function () {\n      zk(null, null, a, !1, function () {\n        a._reactRootContainer = null;\n        a[we] = null;\n      });\n    }), !0) : !1;\n  },\n  unstable_createPortal: function unstable_createPortal() {\n    return Bk.apply(void 0, arguments);\n  },\n  unstable_batchedUpdates: bk,\n  flushSync: function flushSync(a, b) {\n    if ((T & (oj | pj)) !== S) throw Error(u(187));\n    var c = T;\n    T |= 1;\n\n    try {\n      return fg(99, a.bind(null, b));\n    } finally {\n      T = c, jg();\n    }\n  },\n  __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED: {\n    Events: [Cc, xe, ye, Ca.injectEventPluginsByName, fa, Sc, function (a) {\n      ya(a, Rc);\n    }, cb, db, Pd, Ba, Sj, {\n      current: !1\n    }]\n  }\n};\n\n(function (a) {\n  var b = a.findFiberByHostInstance;\n  return ok(n({}, a, {\n    overrideHookState: null,\n    overrideProps: null,\n    setSuspenseHandler: null,\n    scheduleUpdate: null,\n    currentDispatcherRef: Ea.ReactCurrentDispatcher,\n    findHostInstanceByFiber: function findHostInstanceByFiber(a) {\n      a = ic(a);\n      return null === a ? null : a.stateNode;\n    },\n    findFiberByHostInstance: function findFiberByHostInstance(a) {\n      return b ? b(a) : null;\n    },\n    findHostInstancesForRefresh: null,\n    scheduleRefresh: null,\n    scheduleRoot: null,\n    setRefreshHandler: null,\n    getCurrentFiber: null\n  }));\n})({\n  findFiberByHostInstance: Fc,\n  bundleType: 0,\n  version: \"16.12.0\",\n  rendererPackageName: \"react-dom\"\n});\n\nvar Dk = {\n  \"default\": Ck\n},\n    Ek = Dk && Ck || Dk;\nmodule.exports = Ek[\"default\"] || Ek;"],"sourceRoot":""}
\ No newline at end of file
diff --git a/commons-b35008cb74c6abd7ace8.js b/commons-b35008cb74c6abd7ace8.js
new file mode 100644
index 0000000..fa5d6ff
--- /dev/null
+++ b/commons-b35008cb74c6abd7ace8.js
@@ -0,0 +1,2 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[0],{"+wdc":function(e,t,n){"use strict";var r,i,o,a,l;if(n("eM6i"),n("HAE/"),Object.defineProperty(t,"__esModule",{value:!0}),"undefined"==typeof window||"function"!=typeof MessageChannel){var u=null,c=null,s=function e(){if(null!==u)try{var n=t.unstable_now();u(!0,n),u=null}catch(r){throw setTimeout(e,0),r}},f=Date.now();t.unstable_now=function(){return Date.now()-f},r=function(e){null!==u?setTimeout(r,0,e):(u=e,setTimeout(s,0))},i=function(e,t){c=setTimeout(e,t)},o=function(){clearTimeout(c)},a=function(){return!1},l=t.unstable_forceFrameRate=function(){}}else{var d=window.performance,M=window.Date,g=window.setTimeout,p=window.clearTimeout;if("undefined"!=typeof console){var y=window.cancelAnimationFrame;"function"!=typeof window.requestAnimationFrame&&console.error("This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills"),"function"!=typeof y&&console.error("This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills")}if("object"==typeof d&&"function"==typeof d.now)t.unstable_now=function(){return d.now()};else{var N=M.now();t.unstable_now=function(){return M.now()-N}}var T=!1,D=null,m=-1,j=5,I=0;a=function(){return t.unstable_now()>=I},l=function(){},t.unstable_forceFrameRate=function(e){0>e||125<e?console.error("forceFrameRate takes a positive int between 0 and 125, forcing framerates higher than 125 fps is not unsupported"):j=0<e?Math.floor(1e3/e):5};var h=new MessageChannel,w=h.port2;h.port1.onmessage=function(){if(null!==D){var e=t.unstable_now();I=e+j;try{D(!0,e)?w.postMessage(null):(T=!1,D=null)}catch(n){throw w.postMessage(null),n}}else T=!1},r=function(e){D=e,T||(T=!0,w.postMessage(null))},i=function(e,n){m=g((function(){e(t.unstable_now())}),n)},o=function(){p(m),m=-1}}function E(e,t){var n=e.length;e.push(t);e:for(;;){var r=Math.floor((n-1)/2),i=e[r];if(!(void 0!==i&&0<z(i,t)))break e;e[r]=t,e[n]=i,n=r}}function b(e){return void 0===(e=e[0])?null:e}function L(e){var t=e[0];if(void 0!==t){var n=e.pop();if(n!==t){e[0]=n;e:for(var r=0,i=e.length;r<i;){var o=2*(r+1)-1,a=e[o],l=o+1,u=e[l];if(void 0!==a&&0>z(a,n))void 0!==u&&0>z(u,a)?(e[r]=u,e[l]=n,r=l):(e[r]=a,e[o]=n,r=o);else{if(!(void 0!==u&&0>z(u,n)))break e;e[r]=u,e[l]=n,r=l}}}return t}return null}function z(e,t){var n=e.sortIndex-t.sortIndex;return 0!==n?n:e.id-t.id}var x=[],O=[],v=1,A=null,C=3,S=!1,k=!1,U=!1;function P(e){for(var t=b(O);null!==t;){if(null===t.callback)L(O);else{if(!(t.startTime<=e))break;L(O),t.sortIndex=t.expirationTime,E(x,t)}t=b(O)}}function Q(e){if(U=!1,P(e),!k)if(null!==b(x))k=!0,r(Y);else{var t=b(O);null!==t&&i(Q,t.startTime-e)}}function Y(e,n){k=!1,U&&(U=!1,o()),S=!0;var r=C;try{for(P(n),A=b(x);null!==A&&(!(A.expirationTime>n)||e&&!a());){var l=A.callback;if(null!==l){A.callback=null,C=A.priorityLevel;var u=l(A.expirationTime<=n);n=t.unstable_now(),"function"==typeof u?A.callback=u:A===b(x)&&L(x),P(n)}else L(x);A=b(x)}if(null!==A)var c=!0;else{var s=b(O);null!==s&&i(Q,s.startTime-n),c=!1}return c}finally{A=null,C=r,S=!1}}function _(e){switch(e){case 1:return-1;case 2:return 250;case 5:return 1073741823;case 4:return 1e4;default:return 5e3}}var R=l;t.unstable_ImmediatePriority=1,t.unstable_UserBlockingPriority=2,t.unstable_NormalPriority=3,t.unstable_IdlePriority=5,t.unstable_LowPriority=4,t.unstable_runWithPriority=function(e,t){switch(e){case 1:case 2:case 3:case 4:case 5:break;default:e=3}var n=C;C=e;try{return t()}finally{C=n}},t.unstable_next=function(e){switch(C){case 1:case 2:case 3:var t=3;break;default:t=C}var n=C;C=t;try{return e()}finally{C=n}},t.unstable_scheduleCallback=function(e,n,a){var l=t.unstable_now();if("object"==typeof a&&null!==a){var u=a.delay;u="number"==typeof u&&0<u?l+u:l,a="number"==typeof a.timeout?a.timeout:_(e)}else a=_(e),u=l;return e={id:v++,callback:n,priorityLevel:e,startTime:u,expirationTime:a=u+a,sortIndex:-1},u>l?(e.sortIndex=u,E(O,e),null===b(x)&&e===b(O)&&(U?o():U=!0,i(Q,u-l))):(e.sortIndex=a,E(x,e),k||S||(k=!0,r(Y))),e},t.unstable_cancelCallback=function(e){e.callback=null},t.unstable_wrapCallback=function(e){var t=C;return function(){var n=C;C=t;try{return e.apply(this,arguments)}finally{C=n}}},t.unstable_getCurrentPriorityLevel=function(){return C},t.unstable_shouldYield=function(){var e=t.unstable_now();P(e);var n=b(x);return n!==A&&null!==A&&null!==n&&null!==n.callback&&n.startTime<=e&&n.expirationTime<A.expirationTime||a()},t.unstable_requestPaint=R,t.unstable_continueExecution=function(){k||S||(k=!0,r(Y))},t.unstable_pauseExecution=function(){},t.unstable_getFirstCallbackNode=function(){return b(x)},t.unstable_Profiling=null},"2A+t":function(e,t,n){"use strict";n.d(t,"c",(function(){return f})),n.d(t,"a",(function(){return d})),n.d(t,"e",(function(){return M})),n.d(t,"d",(function(){return D})),n.d(t,"b",(function(){return j}));n("91GP"),n("rE2o"),n("ioFf");var r=n("qKvR"),i=n("ZdEh"),o=n("q1tI"),a=n.n(o),l=n("PE4B"),u=n.n(l),c=n("ITVs"),s=function(e){if(!e)return null;var t={};for(var n in e)"sx"!==n&&(t[n]=e[n]);var r=function(e){if(e.sx||e.css)return function(t){return[Object(i.a)(e.sx)(t),"function"==typeof e.css?e.css(t):e.css]}}(e);return r&&(t.css=r),t},f=function(e,t){for(var n=[],i=arguments.length-2;i-- >0;)n[i]=arguments[i+2];return r.c.apply(void 0,[e,s(t)].concat(n))},d=a.a.createContext({__EMOTION_VERSION__:c.a,theme:null}),M=function(){return a.a.useContext(d)},g="function"==typeof Symbol&&Symbol.for,p=g?Symbol.for("react.element"):60103,y=g?Symbol.for("react.forward_ref"):60103,N=function(e){return!!e&&"object"==typeof e&&e.$$typeof!==p&&e.$$typeof!==y},T=function(e,t,n){return t},D=function(e,t){return u()(e,t,{isMergeableObject:N,arrayMerge:T})};D.all=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];return u.a.all(e,{isMergeableObject:N,arrayMerge:T})};var m=function(e){var t=e.context,n=e.children;return f(r.b.Provider,{value:t.theme},f(d.Provider,{value:t,children:n}))},j=function(e){var t=e.theme,n=e.children,r=M();var i="function"==typeof t?Object.assign({},r,{theme:t(r.theme)}):D.all({},r,{theme:t});return f(m,{context:i,children:n})}},"8+s/":function(e,t,n){"use strict";function r(e){return e&&"object"==typeof e&&"default"in e?e.default:e}n("V+eJ"),n("bWfx"),n("f3/d"),n("hHhE"),n("HAE/");var i=n("q1tI"),o=r(i),a=r(n("Gytx"));function l(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var u=!("undefined"==typeof window||!window.document||!window.document.createElement);e.exports=function(e,t,n){if("function"!=typeof e)throw new Error("Expected reducePropsToState to be a function.");if("function"!=typeof t)throw new Error("Expected handleStateChangeOnClient to be a function.");if(void 0!==n&&"function"!=typeof n)throw new Error("Expected mapStateOnServer to either be undefined or a function.");return function(r){if("function"!=typeof r)throw new Error("Expected WrappedComponent to be a React component.");var c,s=[];function f(){c=e(s.map((function(e){return e.props}))),d.canUseDOM?t(c):n&&(c=n(c))}var d=function(e){var t,n;function i(){return e.apply(this,arguments)||this}n=e,(t=i).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n,i.peek=function(){return c},i.rewind=function(){if(i.canUseDOM)throw new Error("You may only call rewind() on the server. Call peek() to read the current state.");var e=c;return c=void 0,s=[],e};var l=i.prototype;return l.shouldComponentUpdate=function(e){return!a(e,this.props)},l.componentWillMount=function(){s.push(this),f()},l.componentDidUpdate=function(){f()},l.componentWillUnmount=function(){var e=s.indexOf(this);s.splice(e,1),f()},l.render=function(){return o.createElement(r,this.props)},i}(i.Component);return l(d,"displayName","SideEffect("+function(e){return e.displayName||e.name||"Component"}(r)+")"),l(d,"canUseDOM",u),d}}},"9uj6":function(e,t,n){"use strict";var r=n("4qRI"),i=/^((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|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|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)-.*))$/,o=Object(r.a)((function(e){return i.test(e)||111===e.charCodeAt(0)&&110===e.charCodeAt(1)&&e.charCodeAt(2)<91}));t.a=o},Bl7J:function(e,t,n){"use strict";var r=n("q1tI"),i=n.n(r),o=(n("LK8F"),n("91GP"),n("DNiP"),n("bWfx"),n("KKXr"),n("2A+t")),a=(n("V+eJ"),n("rGqo"),n("yt8O"),n("Btvt"),n("RW0V"),n("8+KV"),n("0l/t"),n("qKvR")),l=n("ZdEh"),u=function(e){return"--theme-ui-"+e},c=function(e,t){return"var("+u(e)+", "+t+")"},s=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];return e.filter(Boolean).join("-")},f={fontWeights:!0,lineHeights:!0},d={useCustomProperties:!0,initialColorModeName:!0,initialColorMode:!0},M=function(e,t){return"number"!=typeof t?t:f[e]?t:t+"px"},g=function e(t,n){var r={};for(var i in n)if("modes"!==i){var o=s(t,i),a=n[i];a&&"object"==typeof a?r=Object.assign({},r,e(o,a)):r[u(o)]=a}return r},p=function(e){try{return window.localStorage.getItem("theme-ui-color-mode")||e}catch(t){console.warn("localStorage is disabled and color mode might not work as expected.","Please check your Site Settings.",t)}},y=function(e){try{window.localStorage.setItem("theme-ui-color-mode",e)}catch(t){console.warn("localStorage is disabled and color mode might not work as expected.","Please check your Site Settings.",t)}},N=function(e){void 0===e&&(e={});var t=i.a.useState(e.initialColorModeName||"default"),n=t[0],r=t[1];return i.a.useEffect((function(){var t=p();if(document.body.classList.remove("theme-ui-"+t),t||!e.useColorSchemeMediaQuery){var i,o,a;t&&t!==n&&r(t)}else{var l=(i="(prefers-color-scheme: dark)",o=window.matchMedia?window.matchMedia(i):{},a=window.matchMedia?window.matchMedia("(prefers-color-scheme: light)"):{},o.media===i&&o.matches?"dark":"(prefers-color-scheme: light)"===a.media&&a.matches?"light":"default");r(l)}}),[]),i.a.useEffect((function(){n&&y(n)}),[n]),[n,r]},T=function(){return Object(o.c)(a.a,{styles:function(e){return function(e){if(void 0===e&&(e={}),!e.colors||!1===e.useBodyStyles)return{};if(!1===e.useCustomProperties||!e.colors.modes)return Object(l.a)({body:{color:"text",bg:"background"}})(e);var t=e.rawColors||e.colors,n=t.modes,r=g("colors",t);return Object.keys(n).forEach((function(e){r["&.theme-ui-"+e]=g("colors",n[e])})),Object(l.a)({body:Object.assign({},r,{color:"text",bg:"background"})})(e)}(e)}})},D=function(e){var t=e.children,n=Object(o.e)(),r=N(n.theme),i=r[0],u=r[1],f=function(e,t){if(!t)return e;var n=Object(l.b)(e,"colors.modes",{});return o.d.all({},e,{colors:Object(l.b)(n,t,{})})}(n.theme||{},i),g=Object.assign({},f);!1!==f.useCustomProperties&&(g.colors=function e(t,n,r){var i=Array.isArray(t)?[]:{};for(var o in t){var a=t[o],l=s(n,o);if(a&&"object"==typeof a)i[o]=e(a,l,o);else if(d[o])i[o]=a;else{var u=M(r||o,a);i[o]=c(l,u)}}return i}(g.colors,"colors"));var p=Object.assign({},n,{theme:f,colorMode:i,setColorMode:u});return Object(o.c)(a.b.Provider,{value:g},Object(o.c)(o.a.Provider,{value:p},Object(o.c)(T,{key:"color-mode"}),t))},m=n("MXbp"),j=function(e,t,n,r,i){for(t=t&&t.split?t.split("."):[t],r=0;r<t.length;r++)e=e?e[t[r]]:i;return e===i?n:e},I=[40,52,64].map((function(e){return e+"em"})),h={space:[0,4,8,16,32,64,128,256,512],fontSizes:[12,14,16,20,24,32,48,64,72]},w={bg:"backgroundColor",m:"margin",mt:"marginTop",mr:"marginRight",mb:"marginBottom",ml:"marginLeft",mx:"marginX",my:"marginY",p:"padding",pt:"paddingTop",pr:"paddingRight",pb:"paddingBottom",pl:"paddingLeft",px:"paddingX",py:"paddingY"},E={marginX:["marginLeft","marginRight"],marginY:["marginTop","marginBottom"],paddingX:["paddingLeft","paddingRight"],paddingY:["paddingTop","paddingBottom"],size:["width","height"]},b={color:"colors",backgroundColor:"colors",borderColor:"colors",margin:"space",marginTop:"space",marginRight:"space",marginBottom:"space",marginLeft:"space",marginX:"space",marginY:"space",padding:"space",paddingTop:"space",paddingRight:"space",paddingBottom:"space",paddingLeft:"space",paddingX:"space",paddingY:"space",top:"space",right:"space",bottom:"space",left:"space",gridGap:"space",gridColumnGap:"space",gridRowGap:"space",gap:"space",columnGap:"space",rowGap:"space",fontFamily:"fonts",fontSize:"fontSizes",fontWeight:"fontWeights",lineHeight:"lineHeights",letterSpacing:"letterSpacings",border:"borders",borderTop:"borders",borderRight:"borders",borderBottom:"borders",borderLeft:"borders",borderWidth:"borderWidths",borderStyle:"borderStyles",borderRadius:"radii",borderTopRightRadius:"radii",borderTopLeftRadius:"radii",borderBottomRightRadius:"radii",borderBottomLeftRadius:"radii",borderTopWidth:"borderWidths",borderTopColor:"colors",borderTopStyle:"borderStyles",borderBottomWidth:"borderWidths",borderBottomColor:"colors",borderBottomStyle:"borderStyles",borderLeftWidth:"borderWidths",borderLeftColor:"colors",borderLeftStyle:"borderStyles",borderRightWidth:"borderWidths",borderRightColor:"colors",borderRightStyle:"borderStyles",outlineColor:"colors",boxShadow:"shadows",textShadow:"shadows",zIndex:"zIndices",width:"sizes",minWidth:"sizes",maxWidth:"sizes",height:"sizes",minHeight:"sizes",maxHeight:"sizes",flexBasis:"sizes",size:"sizes",fill:"colors",stroke:"colors"},L=function(e,t){if("number"!=typeof t||t>=0)return j(e,t,t);var n=Math.abs(t),r=j(e,n,n);return"string"==typeof r?"-"+r:-1*r},z=["margin","marginTop","marginRight","marginBottom","marginLeft","marginX","marginY","top","bottom","left","right"].reduce((function(e,t){var n;return Object.assign({},e,((n={})[t]=L,n))}),{}),x=function e(t){return function(n){void 0===n&&(n={});var r=Object.assign({},h,n.theme||n),i={},o=function(e){return function(t){var n={},r=j(t,"breakpoints",I),i=[null].concat(r.map((function(e){return"@media screen and (min-width: "+e+")"})));for(var o in e){var a="function"==typeof e[o]?e[o](t):e[o];if(null!=a)if(Array.isArray(a))for(var l=0;l<a.slice(0,i.length).length;l++){var u=i[l];u?(n[u]=n[u]||{},null!=a[l]&&(n[u][o]=a[l])):n[o]=a[l]}else n[o]=a}return n}}("function"==typeof t?t(r):t)(r);for(var a in o){var l=o[a],u="function"==typeof l?l(r):l;if("variant"!==a)if(u&&"object"==typeof u)i[a]=e(u)(r);else{var c=j(w,a,a),s=j(b,c),f=j(r,s,j(r,c,{})),d=j(z,c,j)(f,u,u);if(E[c])for(var M=E[c],g=0;g<M.length;g++)i[M[g]]=d;else i[c]=d}else{var p=e(j(r,u))(r);i=Object.assign({},i,p)}}return i}},O=function(){return Object(o.c)(a.a,{styles:function(e){if(!1===e.useBodyStyles||e.styles&&!e.styles.root)return!1;var t=!1===e.useBorderBox?null:"border-box";return x({"*":{boxSizing:t},body:{margin:0,variant:"styles.root"}})(e)}})},v=function(e){var t=e.theme,n=e.components,r=e.children;return"function"==typeof Object(o.e)().setColorMode?Object(o.c)(o.b,{theme:t},Object(o.c)(m.a,{components:n,children:r})):Object(o.c)(o.b,{theme:t},Object(o.c)(D,null,Object(o.c)(O),Object(o.c)(m.a,{components:n,children:r})))},A={fonts:{heading:"'Helvetica Neue', Helvetica, Arial, 'Lucida Grande'",body:"'Helvetica Neue', Helvetica, Arial, 'Lucida Grande'"},colors:{darkText:"#4d4f50",lightText:"#d8d8d8",links:"#5DA7A3",primary:"#434343",secondary:"#5DA7A3",secondaryDark:"#5d9da3",accent:"#F8D000",background:"#FFFFFF",lightGrey:"#F1F1F1"},radii:{button:"2.5rem",card:"0.5rem"},breakpoints:["35rem","62.5rem","85rem","120rem"],fontSizes:[16,18,20,24,28,36],space:[0,8,16,24,32,40],fontWeights:{body:400,heading:700},lineHeights:{body:1.5,heading:1.125},buttons:{primary:{backgroundColor:"secondary",color:"white",borderRadius:"button",height:"2rem",width:"10rem",border:"none",fontFamily:"body",fontSize:0,"&:hover":{cursor:"pointer",backgroundColor:"secondaryDark",borderColor:"secondaryDark",textDecoration:"none",color:"white"}},secondary:{variant:"buttons.primary",width:"12rem"}},text:{heading:{fontFamily:"heading",lineHeight:"heading",fontWeight:"heading",marginY:2}},styles:{root:{fontFamily:"body",lineHeight:"body",fontWeight:"body"},h1:{variant:"text.heading",fontSize:5},h2:{variant:"text.heading",fontSize:4},h3:{variant:"text.heading",fontSize:3},h4:{variant:"text.heading",fontSize:2},h5:{variant:"text.heading",fontSize:1},h6:{variant:"text.heading",fontSize:0},p:{marginBottom:5,fontSize:1}},lists:{navRow:{display:"flex",listStyle:"none",justifyContent:"flex-end",li:{padding:1,marginX:1,a:{color:"white",textDecoration:"none","&:hover":{color:"links"}}},"li:first-of-type":{marginLeft:0},"li:last-child":{marginRight:0,paddingRight:0}},navCol:{variant:"lists.navRow",flexDirection:"column",li:{padding:1,paddingLeft:0}}},borders:{cardBorder:"#5DA7A3 0.625rem solid"},shadows:{cardShadow:"#DADADA 0 0 1.25rem"}},C=n("Wbzz"),S=n("TwYP"),k=n.n(S),U=n("taE0"),P=n.n(U),Q=n("Q4rR"),Y=n.n(Q),_=n("JAXw"),R=n.n(_),B=n("Fy0m"),G=n.n(B),F=function(e){var t=e.isHome;return Object(o.c)("header",{sx:{display:["none","none","flex","flex"],backgroundColor:t?"#00000000":"primary",position:t?"absolute":null,width:"100%",color:"lightText",paddingX:5,paddingY:4,alignItems:"center"}},Object(o.c)("div",{sx:{flex:1,opacity:t?0:1,pointerEvents:t?"none":"all"}},Object(o.c)(C.Link,{to:"/"},Object(o.c)("img",{src:k.a,alt:"OpenJ9 Logo"}))),Object(o.c)("nav",{sx:{flex:2}},Object(o.c)("ul",{sx:{variant:"lists.navRow"}},Object(o.c)("li",null,Object(o.c)(C.Link,{to:"/"},"Home")),Object(o.c)("li",null,Object(o.c)(C.Link,{to:"/about"},"About")),Object(o.c)("li",null,Object(o.c)("a",{href:"https://www.eclipse.org/openj9/docs/",rel:"noopener noreferrer",target:"_blank"},"Docs")),Object(o.c)("li",null,Object(o.c)(C.Link,{to:"/performance"},"Performance")),Object(o.c)("li",null,Object(o.c)(C.Link,{to:"/news"},"News")))),Object(o.c)("nav",{sx:{flex:1}},Object(o.c)("ul",{sx:{variant:"lists.navRow"}},Object(o.c)("li",null,Object(o.c)("a",{href:"https://twitter.com/openj9/",rel:"noopener noreferrer",target:"_blank"}," ",Object(o.c)("img",{src:R.a,alt:"Twitter Logo"}))),Object(o.c)("li",null,Object(o.c)("a",{href:"https://github.com/eclipse/openj9",rel:"noopener noreferrer",target:"_blank"}," ",Object(o.c)("img",{src:Y.a,alt:"GitHub Logo"}))),Object(o.c)("li",null,Object(o.c)("a",{href:"https://openj9.slack.com/",rel:"noopener noreferrer",target:"_blank"},Object(o.c)("img",{src:P.a,alt:"Slack logo"}))),Object(o.c)("li",null,Object(o.c)("a",{href:"https://stackoverflow.com/search?q=%23OpenJ9",rel:"noopener noreferrer",target:"_blank"},Object(o.c)("img",{src:G.a,alt:"Stack Overflow logo"}))))))},W=n("fuUq"),H=n.n(W),Z=function(){return Object(o.c)("footer",{sx:{display:"flex",backgroundColor:"primary",color:"white",flexWrap:"wrap",padding:"1rem",paddingBottom:["3rem","3rem","0","0"],flexDirection:"reverse-column"}},Object(o.c)("section",{sx:{flex:"50%",display:["flex","none","none","none"],alignItems:["center","center","flex-end","flex-end"],flexDirection:"column"}},Object(o.c)("a",{href:"https://wiki.eclipse.org/Development_Resources/Process_Guidelines/What_is_Incubation",rel:"noopener noreferrer",target:"_blank"},Object(o.c)("img",{src:H.a,alt:"Eclipse Incubator Logo"})),Object(o.c)(m.b.h6,{sx:{fontSize:"0.9rem"}},"OpenJ9 is an Eclipse Incubator Project")),Object(o.c)("nav",{sx:{display:["flex","flex","flex","flex"],flex:["100%","50%","50%","50%"],flexDirection:["column","row","row","row"],justifyContent:"center",a:{color:"white",textDecoration:"none","&:hover":{color:"links"}}}},Object(o.c)("section",{sx:{flex:1,paddingLeft:["2rem","0.8rem","0.8rem","0.8rem"],marginRight:"1.1rem",padding:["1rem",0],fontSize:["1rem","0.9rem","1rem","1rem"]}},Object(o.c)(m.b.h4,{sx:{marginBottom:"0.2rem"}},"Docs"),Object(o.c)("ul",{sx:{variant:"lists.navCol",li:{padding:0}}},Object(o.c)("li",null,Object(o.c)("a",{sx:{textDecoration:"none",color:"white"},href:"https://www.eclipse.org/openj9/docs/openj9_newuser/",rel:"noopener noreferrer",target:"_blank"},"New to OpenJ9?")),Object(o.c)("li",null,Object(o.c)("a",{sx:{textDecoration:"none",color:"white"},href:"https://www.eclipse.org/openj9/docs/introduction/",rel:"noopener noreferrer",target:"_blank"},"Getting started")),Object(o.c)("li",null,Object(o.c)("a",{sx:{textDecoration:"none",color:"white"},href:"https://www.eclipse.org/openj9/docs/cmdline_specifying/",rel:"noopener noreferrer",target:"_blank"},"Command-line options")))),Object(o.c)("section",{sx:{flex:1,paddingLeft:["2rem","0.8rem",0,0],padding:["1rem",0],fontSize:["1rem","0.9rem","1rem","1rem"]}},Object(o.c)(m.b.h4,{sx:{marginBottom:"0.2rem"}},"Resources"),Object(o.c)("ul",{sx:{variant:"lists.navCol",li:{padding:0}}},Object(o.c)("li",null,Object(o.c)(C.Link,{sx:{textDecoration:"none",color:"white"},to:"/about"},"About")),Object(o.c)("li",null,Object(o.c)(C.Link,{sx:{textDecoration:"none",color:"white"},to:"/performance"},"Performance")))),Object(o.c)("section",{sx:{flex:1,paddingLeft:["2rem",0,0,0],padding:["1rem",0],fontSize:["1rem","0.9rem","1rem","1rem"],marginLeft:[0,"1rem"]}},Object(o.c)(m.b.h4,{sx:{marginBottom:"0.2rem"}},"Community"),Object(o.c)("ul",{sx:{variant:"lists.navCol",li:{padding:0}}},Object(o.c)("li",null,Object(o.c)(C.Link,{sx:{textDecoration:"none",color:"white"},to:"/news"},"News")),Object(o.c)("li",null,Object(o.c)("a",{sx:{textDecoration:"none",color:"white"},href:"https://blog.openj9.org/",rel:"noopener noreferrer",target:"_blank"},"Blogs"))))),Object(o.c)("section",{sx:{flex:"25%",display:["none","flex","flex","flex"],alignItems:["center","flex-end","flex-end","flex-end"],flexDirection:"column"}},Object(o.c)(m.b.h6,{sx:{fontSize:"0.9rem",marginTop:"1.3rem",marginLeft:"0.6rem"}},"OpenJ9 is an Eclipse Incubator Project"),Object(o.c)("a",{href:"https://wiki.eclipse.org/Development_Resources/Process_Guidelines/What_is_Incubation",rel:"noopener noreferrer",target:"_blank"},Object(o.c)("img",{src:H.a,alt:"Eclipse Incubator Logo"}))),Object(o.c)("div",{sx:{height:"0.15rem",backgroundColor:"secondary",width:"100%",marginY:2}}),Object(o.c)("nav",{sx:{width:"70%"}},Object(o.c)("ul",{sx:{display:"flex",flexDirection:["column","row","row","row"],li:{padding:"0.4rem",fontSize:["0.9rem","0.7rem","1rem","1rem"],listStyleType:"none",paddingLeft:"1rem",color:"white"},a:{color:"white",textDecoration:"none","&:hover":{color:"links"}}}},Object(o.c)("li",{sx:{paddingLeft:["1rem","0rem !important","0.5rem !important","0.5 !important"]}},Object(o.c)("a",{sx:{textDecoration:"none",color:"white"},href:"https://www.eclipse.org/",rel:"noopener noreferrer",target:"_blank"},"Eclipse Foundation Website ")),Object(o.c)("li",null,Object(o.c)("a",{sx:{textDecoration:"none",color:"white"},href:"https://www.eclipse.org/legal/privacy.php",rel:"noopener noreferrer",target:"_blank"},"Privacy Policy")),Object(o.c)("li",null,Object(o.c)("a",{sx:{textDecoration:"none",color:"white"},href:"https://www.eclipse.org/legal/termsofuse.php",rel:"noopener noreferrer",target:"_blank"},"Terms of Use")),Object(o.c)("li",null,Object(o.c)("a",{sx:{textDecoration:"none",color:"white"},href:"https://www.eclipse.org/legal/copyright.php",rel:"noopener noreferrer",target:"_blank"},"Copyright Agent")),Object(o.c)("li",null,Object(o.c)("a",{sx:{textDecoration:"none",color:"white"},href:"https://www.eclipse.org/legal/",rel:"noopener noreferrer",target:"_blank"},"Legal")))),Object(o.c)("nav",{sx:{display:["inline","inline","block","block"],flex:"30%"}},Object(o.c)("ul",{sx:{variant:"lists.navRow",justifyContent:["center","flex-end","flex-end","flex-end"]}},Object(o.c)("li",null,Object(o.c)("a",{href:"https://twitter.com/openj9/",rel:"noopener noreferrer",target:"_blank"}," ",Object(o.c)("img",{src:R.a,alt:"Twitter Logo"}))),Object(o.c)("li",null,Object(o.c)("a",{href:"https://github.com/eclipse/openj9",rel:"noopener noreferrer",target:"_blank"}," ",Object(o.c)("img",{src:Y.a,alt:"GitHub Logo"}))),Object(o.c)("li",null,Object(o.c)("a",{href:"https://openj9.slack.com/",rel:"noopener noreferrer",target:"_blank"},Object(o.c)("img",{src:P.a,alt:"Slack logo"}))),Object(o.c)("li",null,Object(o.c)("a",{href:"https://stackoverflow.com/search?q=%23OpenJ9",rel:"noopener noreferrer",target:"_blank"},Object(o.c)("img",{src:G.a,alt:"Stack Overflow logo"}))))))},V=n("cLBj"),X=n("TJpk"),K=function(e){var t=e.title,n=e.description,r=V.data.site.siteMetadata,i=r.defaultTitle,o=r.titleTemplate,l=r.defaultDescription,u=r.siteUrl,c=r.twitterUsername,s={title:t||i,description:n||l,image:r.defaultImage,url:""+u};return Object(a.c)(X.Helmet,{title:s.title,titleTemplate:o},Object(a.c)("meta",{name:"description",content:s.description}),Object(a.c)("meta",{name:"image",content:s.image}),s.url&&Object(a.c)("meta",{property:"og:url",content:s.url}),s.title&&Object(a.c)("meta",{property:"og:title",content:s.title}),s.description&&Object(a.c)("meta",{property:"og:description",content:s.description}),s.image&&Object(a.c)("meta",{property:"og:image",content:s.image}),Object(a.c)("meta",{name:"twitter:card",content:"summary_large_image"}),c&&Object(a.c)("meta",{name:"twitter:creator",content:c}),s.title&&Object(a.c)("meta",{name:"twitter:title",content:s.title}),s.description&&Object(a.c)("meta",{name:"twitter:description",content:s.description}),Object(a.c)("link",{rel:"stylesheet",type:"text/css",href:"//www.eclipse.org/eclipse.org-common/themes/solstice/public/stylesheets/vendor/cookieconsent/cookieconsent.min.css"}),Object(a.c)("script",{src:"//www.eclipse.org/eclipse.org-common/themes/solstice/public/javascript/vendor/cookieconsent/default.min.js"}))},J=K;K.defaultProps={title:null,description:null};var q=function(e){return Object(a.c)(J,{title:e.title,description:e.description})},$=function(){return Object(o.c)("nav",{sx:{display:["flex","flex","none","none"],justifyContent:"center",alignItems:"center",position:"fixed",width:"100%",bottom:"0",backgroundColor:"white",height:"3rem",boxShadow:"0 0.5rem 2rem grey",zIndex:"9999"}},Object(o.c)("ul",{sx:{variant:"lists.navRow",li:{a:{color:"black",textDecoration:"none"}},justifyContent:"space-evenly",width:"100%"}},Object(o.c)("li",null,Object(o.c)(C.Link,{to:"/"},"Home")),Object(o.c)("li",null,Object(o.c)(C.Link,{to:"/about"},"About")," "),Object(o.c)("li",null,Object(o.c)("a",{href:"https://www.eclipse.org/openj9/docs/",rel:"noopener noreferrer",target:"_blank"},"Docs")," "),Object(o.c)("li",null,Object(o.c)(C.Link,{to:"/performance"},"Performance")," "),Object(o.c)("li",null,Object(o.c)(C.Link,{to:"/news"},"News")," ")))};t.a=function(e){var t=e.children,n=e.isHome,r=e.title,i=e.description;return Object(a.c)(v,{theme:A},Object(a.c)(a.a,{styles:function(e){return{"*":{padding:0,margin:0}}}}),Object(a.c)(q,{title:r,description:i}),Object(a.c)(F,{isHome:n}),Object(a.c)($,null),t,Object(a.c)(Z,null))}},Fy0m:function(e,t){e.exports="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjRweCIgaGVpZ2h0PSIyNHB4IiB2aWV3Qm94PSIwIDAgNjUgNzAiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5zdGFja292ZXJmbG93LWxvZ288L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0iI0ZGRkZGRiIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0ic3RhY2tvdmVyZmxvdy1sb2dvIiBmaWxsLXJ1bGU9Im5vbnplcm8iPgogICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgZmlsbD0iI0ZGRkZGRiIgcG9pbnRzPSI1NC4yNDE3MjY2IDYzLjc3MDIyNjUgNTQuMjQxNzI2NiA0NSA2MSA0NSA2MSA3MCAwIDcwIDAgNDUgNi43NTgyNzMzOCA0NSA2Ljc1ODI3MzM4IDYzLjc3MDIyNjUiPjwvcG9seWdvbj4KICAgICAgICAgICAgPHBhdGggZD0iTTE0LjcwNzEwNTcsNDMuNjQyNzU2NyBMNDguMTE3ODUxLDUwLjA4NzIwMTEgTDQ5LjUzMjA2MjQsNDMuODg3NDgyNCBMMTYuMTIxMzE3MiwzNy40NDMwMzggTDE0LjcwNzEwNTcsNDMuNjQyNzU2NyBMMTQuNzA3MTA1Nyw0My42NDI3NTY3IFogTTE5LjEyNjUxNjUsMjguOTU5MjEyNCBMNTAuMDYyMzkxNyw0Mi4yNTU5Nzc1IEw1Mi44OTA4MTQ2LDM2LjU0NTcxMDMgTDIxLjk1NDkzOTMsMjMuMTY3MzY5OSBMMTkuMTI2NTE2NSwyOC45NTkyMTI0IFogTTI3LjcwMDE3MzMsMTQuOTI4MjcgTDUzLjk1MTQ3MzEsMzUuMDc3MzU1OCBMNTguMjgyNDk1NywzMC4yNjQ0MTYzIEwzMi4wMzExOTU4LDEwLjExNTMzMDUgTDI3LjcwMDE3MzMsMTQuOTI4MjcgTDI3LjcwMDE3MzMsMTQuOTI4MjcgWiBNNDQuNjcwNzEwNiwwIEwzOS4xOTA2NDEyLDMuNzUyNDYxMzIgTDU5LjUxOTkzMDcsMjkuMDQwNzg3NiBMNjUsMjUuMjg4MzI2MyBMNDQuNjcwNzEwNiwwIFogTTE0LDU4IEw0OC4xMTc4NTEsNTggTDQ4LjExNzg1MSw1MS43MTg3MDYgTDE0LDUxLjcxODcwNiBMMTQsNTggWiIgaWQ9IlNoYXBlIiBmaWxsPSIjRkZGRkZGIj48L3BhdGg+CiAgICAgICAgPC9nPgogICAgPC9nPgo8L3N2Zz4KCgo="},Gytx:function(e,t,n){n("2Spj"),n("rGqo"),n("yt8O"),n("Btvt"),n("RW0V"),e.exports=function(e,t,n,r){var i=n?n.call(r,e,t):void 0;if(void 0!==i)return!!i;if(e===t)return!0;if("object"!=typeof e||!e||"object"!=typeof t||!t)return!1;var o=Object.keys(e),a=Object.keys(t);if(o.length!==a.length)return!1;for(var l=Object.prototype.hasOwnProperty.bind(t),u=0;u<o.length;u++){var c=o[u];if(!l(c))return!1;var s=e[c],f=t[c];if(!1===(i=n?n.call(r,s,f,c):void 0)||void 0===i&&s!==f)return!1}return!0}},ITVs:function(e){e.exports=JSON.parse('{"a":"10.0.27"}')},JAXw:function(e,t){e.exports="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIyNXB4IiB2aWV3Qm94PSIwIDAgMjUgMjUiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5Ud2l0dGVyPC90aXRsZT4KICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPgogICAgPGcgaWQ9IlBhZ2UtMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9IlR3aXR0ZXIiIGZpbGwtcnVsZT0ibm9uemVybyI+CiAgICAgICAgICAgIDxnIGlkPSJ0d2l0dGVyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjAwMDAwMCwgMC4yOTg4NzkpIj4KICAgICAgICAgICAgICAgIDxlbGxpcHNlIGlkPSJPdmFsLXBhdGgiIGZpbGw9IiM0MzQzNDMiIGN4PSIxMi41MDAyMjEyIiBjeT0iMTIuMjcyNzI3MyIgcng9IjEyLjUiIHJ5PSIxMi4yNzI3MjczIj48L2VsbGlwc2U+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTIuNTAwMjIxMiwwIEMxOS40MDM3ODA2LDAgMjUuMDAwMjIxMiw1LjQ5NDY4NzE2IDI1LjAwMDIyMTIsMTIuMjcyNzI3MyBDMjUuMDAwMjIxMiwxOS4wNTA3Njc0IDE5LjQwMzc4MDYsMjQuNTQ1NDU0NSAxMi41MDAyMjEyLDI0LjU0NTQ1NDUgQzUuNTk2NjYxODcsMjQuNTQ1NDU0NSAwLjAwMDIyMTIzODkzOCwxOS4wNTA3Njc0IDAuMDAwMjIxMjM4OTM4LDEyLjI3MjcyNzMgQzAuMDAwMjIxMjM4OTM4LDUuNDk0Njg3MTYgNS41OTY2NjE4NywwIDEyLjUwMDIyMTIsMCBaIE0xNS4xMDM0MzMzLDYuODE4MTgxODIgQzEzLjQ2NTM4MDIsNi44MTgxODE4MiAxMi4xMzY4NDA0LDguMDkyMTI0MTEgMTIuMTM2ODQwNCw5LjY2Mjg1OTk2IEMxMi4xMzY4NDA0LDkuODg1ODI2MzggMTIuMTYzMTY3OCwxMC4xMDI4NTI3IDEyLjIxNDA1MjgsMTAuMzExMTgxIEM5Ljc0ODU2NjA0LDEwLjE5MjU5MDggNy41NjI1MDQxLDkuMDYwMTUwNTQgNi4wOTkyMjk3Niw3LjMzODU3ODIzIEM1Ljg0MzkyMDAzLDcuNzU4NjI5MTUgNS42OTc0NTk4NSw4LjI0NzYyNzgxIDUuNjk3NDU5ODUsOC43Njg4NzI4MSBDNS42OTc0NTk4NSw5Ljc1NTU2ODE3IDYuMjIxNTc0ODksMTAuNjI2NjQzNCA3LjAxNzE1MDExLDExLjEzNjY0NDcgQzYuNTMxMDg4MTcsMTEuMTIyMDA2NSA2LjA3MzM0NDgsMTAuOTk0MDgxOSA1LjY3MzU2NjA0LDEwLjc4MDQ1IEw1LjY3MzM0NDgsMTAuODE2NTE0OSBMNS42NzMzNDQ4LDEwLjgxNjUxNDkgQzUuNjczMzQ0OCwxMi4xOTQ4MzM1IDYuNjk2MzUzNjUsMTMuMzQ0NDU3NyA4LjA1MzIxMjA2LDEzLjYwNTYxMDYgQzcuODA0NTM5NSwxMy42NzA5NTE5IDcuNTQxOTI4ODgsMTMuNzA1NTMxOCA3LjI3MTc5NjEzLDEzLjcwNTUzMTggQzcuMDgwMjAzMjEsMTMuNzA1NTMxOCA2Ljg5NDU4Mzc0LDEzLjY4NzkyMzYgNi43MTM2MTAyOSwxMy42NTQ4Mjg3IEM3LjA5MTA0MzkyLDE0Ljc4NDcyMzIgOC4xODYzOTc5LDE1LjYwNzIxNjkgOS40ODQ4NDkyMywxNS42MzAzNDA5IEM4LjQ2OTM2MjUsMTYuMzkzNDMzNCA3LjE5MDM4MDIsMTYuODQ4MDY0MiA1LjgwMDExNDcyLDE2Ljg0ODA2NDIgQzUuNTYxMTc2NjYsMTYuODQ4MDY0MiA1LjMyNDQ1MSwxNi44MzQ2OTkgNS4wOTI4MTM4MywxNi44MDgxODA2IEM2LjQwNDk4MTk3LDE3LjYxNTYxMTggNy45NjQ3MTY0OSwxOC4wODYzNjU4IDkuNjM5OTM3NzMsMTguMDg2MzY1OCBDMTUuMDk2NTc0OSwxOC4wODYzNjU4IDE4LjA4MDY0NTcsMTMuNzUxNzc5OCAxOC4wODA2NDU3LDkuOTkyMzI0MTQgQzE4LjA4MDY0NTcsOS44NjkwNjY3NyAxOC4wNzc3Njk2LDkuNzQ2MjMzNyAxOC4wNzIwMTc0LDkuNjI0NDYxMzcgQzE4LjY1MjEwNTksOS4yMjM1MDM2OCAxOS4xNTQ5ODIsOC43MjI2MjQ3OCAxOS41NTI1NDgzLDguMTUyMTYxNjkgQzE5LjAyMDY4OTksOC4zNzgzMTAzMiAxOC40NDg1NjYsOC41MzEyNjgyNSAxNy44NDg1NjYsOC41OTk1Nzk1NiBDMTguNDYxMTc2Nyw4LjI0NzYyNzgxIDE4LjkzMTMwOTQsNy42OTA3NDIxMyAxOS4xNTMyMTIxLDcuMDI2MDg1ODEgQzE4LjU3OTk4Miw3LjM1MjE1NTYzIDE3Ljk0NDgwNSw3LjU4ODY5OTQ2IDE3LjI2OTM2MjUsNy43MTYxOTk3NiBDMTYuNzI4MjEyMSw3LjE2MzU1NzAyIDE1Ljk1NzE5NDQsNi44MTgxODE4MiAxNS4xMDM0MzMzLDYuODE4MTgxODIgWiIgaWQ9IkNvbWJpbmVkLVNoYXBlIiBmaWxsPSIjRkZGRkZGIj48L3BhdGg+CiAgICAgICAgICAgIDwvZz4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg=="},JMMV:function(e,t,n){"use strict";var r=n("2A+t");n("qKvR");t.a=function(e){var t=e.children,n=e.primary,i=e.width;return Object(r.c)("article",{sx:{minHeight:"12.5rem",boxShadow:n?"cardShadow":null,borderRadius:"card",backgroundColor:"white",color:"darkText",marginY:5,marginX:2,width:i,display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"center"}},t)}},MXbp:function(e,t,n){"use strict";n("rGqo"),n("yt8O"),n("Btvt"),n("RW0V"),n("91GP"),n("8+KV");var r=n("2A+t"),i=n("ZdEh"),o=n("q1tI"),a=n.n(o),l=n("qKvR"),u=(n("2Spj"),n("f3/d"),n("HAE/"),n("WLL4"),n("jm62"),n("0l/t"),n("ioFf"),n("lSNA")),c=n.n(u),s=n("9uj6"),f=n("SIPS"),d=n("MiSq"),M=s.a,g=function(e){return"theme"!==e&&"innerRef"!==e},p=function(e){return"string"==typeof e&&e.charCodeAt(0)>96?M:g};function y(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function N(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?y(n,!0).forEach((function(t){c()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):y(n).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var T=function e(t,n){var r,i,a;void 0!==n&&(r=n.label,a=n.target,i=t.__emotion_forwardProp&&n.shouldForwardProp?function(e){return t.__emotion_forwardProp(e)&&n.shouldForwardProp(e)}:n.shouldForwardProp);var u=t.__emotion_real===t,c=u&&t.__emotion_base||t;"function"!=typeof i&&u&&(i=t.__emotion_forwardProp);var s=i||p(c),M=!s("as");return function(){var g=arguments,y=u&&void 0!==t.__emotion_styles?t.__emotion_styles.slice(0):[];if(void 0!==r&&y.push("label:"+r+";"),null==g[0]||void 0===g[0].raw)y.push.apply(y,g);else{0,y.push(g[0][0]);for(var T=g.length,D=1;D<T;D++)y.push(g[D],g[0][D])}var m=Object(l.d)((function(e,t,n){return Object(o.createElement)(l.b.Consumer,null,(function(r){var l=M&&e.as||c,u="",g=[],N=e;if(null==e.theme){for(var T in N={},e)N[T]=e[T];N.theme=r}"string"==typeof e.className?u=Object(f.a)(t.registered,g,e.className):null!=e.className&&(u=e.className+" ");var D=Object(d.a)(y.concat(g),t.registered,N);Object(f.b)(t,D,"string"==typeof l);u+=t.key+"-"+D.name,void 0!==a&&(u+=" "+a);var m=M&&void 0===i?p(l):s,j={};for(var I in e)M&&"as"===I||m(I)&&(j[I]=e[I]);return j.className=u,j.ref=n||e.innerRef,Object(o.createElement)(l,j)}))}));return m.displayName=void 0!==r?r:"Styled("+("string"==typeof c?c:c.displayName||c.name||"Component")+")",m.defaultProps=t.defaultProps,m.__emotion_real=m,m.__emotion_base=c,m.__emotion_styles=y,m.__emotion_forwardProp=i,Object.defineProperty(m,"toString",{value:function(){return"."+a}}),m.withComponent=function(t,r){return e(t,void 0!==r?N({},n||{},{},r):n).apply(void 0,y)},m}}.bind();["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","circle","clipPath","defs","ellipse","foreignObject","g","image","line","linearGradient","mask","path","pattern","polygon","polyline","radialGradient","rect","stop","svg","text","tspan"].forEach((function(e){T[e]=T(e)}));var D=T;n("V+eJ");function m(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function j(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function I(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?j(Object(n),!0).forEach((function(t){m(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):j(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function h(e,t){if(null==e)return{};var n,r,i=function(e,t){if(null==e)return{};var n,r,i={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var w=a.a.createContext({}),E=function(e){var t=a.a.useContext(w),n=t;return e&&(n="function"==typeof e?e(t):I({},t,{},e)),n},b=function(e){var t=E(e.components);return a.a.createElement(w.Provider,{value:t},e.children)},L={inlineCode:"code",wrapper:function(e){var t=e.children;return a.a.createElement(a.a.Fragment,{},t)}},z=Object(o.forwardRef)((function(e,t){var n=e.components,r=e.mdxType,i=e.originalType,o=e.parentName,l=h(e,["components","mdxType","originalType","parentName"]),u=E(n),c=r,s=u["".concat(o,".").concat(c)]||u[c]||L[c]||i;return n?a.a.createElement(s,I({ref:t},l,{components:n})):a.a.createElement(s,I({ref:t},l))}));z.displayName="MDXCreateElement",n.d(t,"b",(function(){return v})),n.d(t,"a",(function(){return C}));var x={inlineCode:"code",thematicBreak:"hr",root:"div"},O=function(e){return function(t){return Object(i.a)(Object(i.b)(t.theme,"styles."+e))(t.theme)}},v=D("div")(O("div")),A={};["p","b","i","a","h1","h2","h3","h4","h5","h6","img","pre","code","ol","ul","li","blockquote","hr","em","table","tr","th","td","em","strong","del","inlineCode","thematicBreak","div","root"].forEach((function(e){var t;A[e]=D(x[t=e]||t)(O(e)),v[e]=A[e]}));var C=function(e){var t,n,i=e.components,o=e.children,a=E();return Object(r.c)(b,{components:(t=Object.assign({},a,i),n=Object.assign({},A),Object.keys(t).forEach((function(e){n[e]=D(t[e])(O(e))})),n),children:o})}},OGtf:function(e,t,n){var r=n("XKFU"),i=n("eeVq"),o=n("vhPU"),a=/"/g,l=function(e,t,n,r){var i=String(o(e)),l="<"+t;return""!==n&&(l+=" "+n+'="'+String(r).replace(a,"&quot;")+'"'),l+">"+i+"</"+t+">"};e.exports=function(e,t){var n={};n[e]=t(l),r(r.P+r.F*i((function(){var t=""[e]('"');return t!==t.toLowerCase()||t.split('"').length>3})),"String",n)}},PE4B:function(e,t,n){"use strict";n("DNiP"),n("8+KV"),n("rGqo"),n("yt8O"),n("RW0V"),n("0l/t"),n("bWfx"),n("LK8F"),n("rE2o"),n("ioFf"),n("a1Th"),n("h7Nl"),n("Btvt");var r=function(e){return function(e){return!!e&&"object"==typeof e}(e)&&!function(e){var t=Object.prototype.toString.call(e);return"[object RegExp]"===t||"[object Date]"===t||function(e){return e.$$typeof===i}(e)}(e)};var i="function"==typeof Symbol&&Symbol.for?Symbol.for("react.element"):60103;function o(e,t){return!1!==t.clone&&t.isMergeableObject(e)?s((n=e,Array.isArray(n)?[]:{}),e,t):e;var n}function a(e,t,n){return e.concat(t).map((function(e){return o(e,n)}))}function l(e){return Object.keys(e).concat(function(e){return Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(e).filter((function(t){return e.propertyIsEnumerable(t)})):[]}(e))}function u(e,t){try{return t in e}catch(n){return!1}}function c(e,t,n){var r={};return n.isMergeableObject(e)&&l(e).forEach((function(t){r[t]=o(e[t],n)})),l(t).forEach((function(i){(function(e,t){return u(e,t)&&!(Object.hasOwnProperty.call(e,t)&&Object.propertyIsEnumerable.call(e,t))})(e,i)||(u(e,i)&&n.isMergeableObject(t[i])?r[i]=function(e,t){if(!t.customMerge)return s;var n=t.customMerge(e);return"function"==typeof n?n:s}(i,n)(e[i],t[i],n):r[i]=o(t[i],n))})),r}function s(e,t,n){(n=n||{}).arrayMerge=n.arrayMerge||a,n.isMergeableObject=n.isMergeableObject||r,n.cloneUnlessOtherwiseSpecified=o;var i=Array.isArray(t);return i===Array.isArray(e)?i?n.arrayMerge(e,t,n):c(e,t,n):o(t,n)}s.all=function(e,t){if(!Array.isArray(e))throw new Error("first argument should be an array");return e.reduce((function(e,n){return s(e,n,t)}),{})};var f=s;e.exports=f},Q4rR:function(e,t){e.exports="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIyNXB4IiB2aWV3Qm94PSIwIDAgMjUgMjUiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5HaXRIdWI8L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0iR2l0SHViIiBmaWxsPSIjRkZGRkZGIiBmaWxsLXJ1bGU9Im5vbnplcm8iPgogICAgICAgICAgICA8ZyBpZD0iZ2l0aHViLWxvZ28iPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTIzLjMyMzIwOSw2LjM1NjM4NTg4IEMyMi4yMDU0MjQzLDQuNDI4ODY0OTMgMjAuNjg5MjIwNywyLjkwMjg0MzkxIDE4Ljc3NDE5OTMsMS43Nzc5Nzg1OCBDMTYuODU4ODkyOCwwLjY1MzA1NTg3MyAxNC43Njc5NDkxLDAuMDkwNzM3OTUzMyAxMi40OTk4ODYsMC4wOTA3Mzc5NTMzIEMxMC4yMzIxMDc5LDAuMDkwNzM3OTUzMyA4LjE0MDQ4MDEzLDAuNjUzMjI3OTkzIDYuMjI1NTcyNjksMS43Nzc5Nzg1OCBDNC4zMTAzODAyMSwyLjkwMjc4NjU0IDIuNzk0MjMzNjcsNC40Mjg4NjQ5MyAxLjY3NjQ0ODk5LDYuMzU2Mzg1ODggQzAuNTU4ODM1MzMzLDguMjgzODQ5NDUgMCwxMC4zODg2NTQ2IDAsMTIuNjcwNzQzOSBDMCwxNS40MTIwNTEgMC43OTQ2NzE0ODMsMTcuODc3MTA0NSAyLjM4NDQxMzQ5LDIwLjA2NjUzNTUgQzMuOTczOTg0NDksMjIuMjU2MTM4OCA2LjAyNzQ3NDg4LDIzLjc3MTI1ODggOC41NDQ3MTM2NywyNC42MTIwNjc4IEM4LjgzNzcyNzQsMjQuNjY2ODAyMiA5LjA1NDYzNzM3LDI0LjYyODMwNDUgOS4xOTU2NzE2MSwyNC40OTc1NTAzIEM5LjMzNjc2Mjg1LDI0LjM2NjYyMzkgOS40MDcyMjI5NiwyNC4yMDI2NTAzIDkuNDA3MjIyOTYsMjQuMDA2MzE4MSBDOS40MDcyMjI5NiwyMy45NzM1NTc5IDkuNDA0NDI5NjQsMjMuNjc4ODMwMSA5LjM5OTAxNDAxLDIzLjEyMTc5MDUgQzkuMzkzNDI3MzcsMjIuNTY0NzUxIDkuMzkwODA1MDcsMjIuMDc4Nzk3MiA5LjM5MDgwNTA3LDIxLjY2NDE1ODcgTDkuMDE2NDQyOTcsMjEuNzI5MzM1MSBDOC43Nzc3NTY1LDIxLjc3MzM0MDUgOC40NzY2NDc4MywyMS43OTE5ODY5IDguMTEzMTE2OTgsMjEuNzg2NzA4NiBDNy43NDk3NTcxNSwyMS43ODE2MDIzIDcuMzcyNTQ0NzMsMjEuNzQzMjc2OCA2Ljk4MTk5Mjc3LDIxLjY3MjAxODkgQzYuNTkxMjY5NzksMjEuNjAxMzkyMSA2LjIyNzg1Mjk1LDIxLjQzNzU5MDcgNS44OTE0NTcyMiwyMS4xODA5NTg5IEM1LjU1NTIzMjUyLDIwLjkyNDMyNzEgNS4zMTY1NDYwNCwyMC41ODg0MDUxIDUuMTc1NDU0OCwyMC4xNzM3MDkzIEw1LjAxMjcwMTA2LDE5Ljc5Njc2NTIgQzQuOTA0MjE3NTcsMTkuNTQ1ODEzNCA0LjczMzQyNTkxLDE5LjI2NzAzNTUgNC41MDAwOTgwNSwxOC45NjE0NjQxIEM0LjI2Njc3MDE5LDE4LjY1NTYwNTggNC4wMzA4MjAwMywxOC40NDgyNTc5IDMuNzkyMTMzNTUsMTguMzM5MDc2MSBMMy42NzgxNzc0MywxOC4yNTY5NzQ2IEMzLjYwMjI0NDY5LDE4LjIwMjQxMjMgMy41MzE3ODQ1OCwxOC4xMzY2MDQ5IDMuNDY2NjI2MDgsMTguMDYwMjQwOCBDMy40MDE1MjQ1OCwxNy45ODM4NzY2IDMuMzUyNzgzOTcsMTcuOTA3NDU1MSAzLjMyMDIzMzIzLDE3LjgzMDkxODggQzMuMjg3NjI1NDcsMTcuNzU0MzI1MSAzLjMxNDY0NjU4LDE3LjY5MTUwMTEgMy40MDE1ODE1OSwxNy42NDIyMTcyIEMzLjQ4ODUxNjYsMTcuNTkyOTMzNCAzLjY0NTYyNjY4LDE3LjU2OTAwODYgMy44NzM1OTU5MywxNy41NjkwMDg2IEw0LjE5ODk4OTM5LDE3LjYxNzk0ODIgQzQuNDE2MDEzMzcsMTcuNjYxNzI0MiA0LjY4NDQ1NzI3LDE3Ljc5MjQ3ODUgNS4wMDQ2NjMxNCwxOC4wMTEwMTQzIEM1LjMyNDY5Nzk4LDE4LjIyOTM3NzkgNS41ODc3ODMyNywxOC41MTMyNjIxIDUuNzkzOTc2LDE4Ljg2MjU1MjEgQzYuMDQzNjY0NzUsMTkuMzEwNDA5OSA2LjM0NDQ4ODM4LDE5LjY1MTY2NzYgNi42OTczMDE5OSwxOS44ODY0OTc0IEM3LjA0OTgzMDU4LDIwLjEyMTMyNzMgNy40MDUyNjY0OSwyMC4yMzg1NDE0IDcuNzYzMjY3NzEsMjAuMjM4NTQxNCBDOC4xMjEyNjg5MiwyMC4yMzg1NDE0IDguNDMwNDcyNTIsMjAuMjExMjMxNiA4LjY5MDk5MjUxLDIwLjE1Njg5ODkgQzguOTUxMjI3NDcsMjAuMTAyMjc5MyA5LjE5NTM4NjU3LDIwLjAyMDE3NzcgOS40MjMzNTU4MiwxOS45MTEwNTMzIEM5LjUyMTAwODA2LDE5LjE3OTA4MTkgOS43ODY4ODY2NywxOC42MTY3NjM5IDEwLjIyMDc2MzYsMTguMjIzNjk3OSBDOS42MDIzNTY0MiwxOC4xNTgyOTIxIDkuMDQ2MzcxNDIsMTguMDU5NzgxOCA4LjU1MjUyMzU3LDE3LjkyODc5OCBDOC4wNTg5NjA3NSwxNy43OTc2NDIxIDcuNTQ4OTIzMDMsMTcuNTg0Nzg2MyA3LjAyMjc1MjQ2LDE3LjI4OTY1NjkgQzYuNDk2Mjk2ODUsMTYuOTk0OTI5MSA2LjA1OTU2OTU4LDE2LjYyODk0MzQgNS43MTI0NTY2MiwxNi4xOTIzMzA5IEM1LjM2NTI4NjY1LDE1Ljc1NTQ4ODkgNS4wODAzNjc4NSwxNS4xODE5ODMxIDQuODU4MDk5MjYsMTQuNDcyMzMgQzQuNjM1NzE2NjYsMTMuNzYyMzkgNC41MjQ0OTY4NiwxMi45NDM0NDAzIDQuNTI0NDk2ODYsMTIuMDE1MjUxNCBDNC41MjQ0OTY4NiwxMC42OTM2NTIzIDQuOTUzMTg2MjEsOS41NjkwMTY0MiA1LjgxMDM5Mzg5LDguNjQwNzEyNzggQzUuNDA4ODM5NjcsNy42NDcxMTgwNyA1LjQ0Njc0OTAzLDYuNTMzMjY4NDYgNS45MjQyMzYsNS4yOTkyNzg2OCBDNi4yMzg5MTIyMiw1LjIwMDg4MzA4IDYuNzA1NTY3OTQsNS4yNzQ3MjI4MSA3LjMyMzk3NTE0LDUuNTIwMzM4ODcgQzcuOTQyNDk2MzQsNS43NjYwNjk2OCA4LjM5NTM1NjQ3LDUuOTc2NTczMTQgOC42ODMwMTE1OSw2LjE1MTEwMzQxIEM4Ljk3MDY2NjcsNi4zMjU1NzYzIDkuMjAxMTQ0MjQsNi40NzM0Mjc4NyA5LjM3NDc4NjIzLDYuNTkzMzM4NTQgQzEwLjM4NDA4NzQsNi4zMDk1MTE3MSAxMS40MjU2NTQzLDYuMTY3NTY5NjEgMTIuNDk5NzcyLDYuMTY3NTY5NjEgQzEzLjU3Mzg4OTYsNi4xNjc1Njk2MSAxNC42MTU2ODQ2LDYuMzA5NTExNzEgMTUuNjI1MDQyOCw2LjU5MzMzODU0IEwxNi4yNDM1MDcsNi4yMDAzODcyNiBDMTYuNjY2NDM4Niw1LjkzODE5MDI1IDE3LjE2NTg3MzEsNS42OTc5MDk5MyAxNy43NDA2MTMzLDUuNDc5NDg4OTIgQzE4LjMxNTY5NTUsNS4yNjExODI2NiAxOC43NTU0NDQxLDUuMjAxMDU1MiAxOS4wNTk0MDMxLDUuMjk5NDUwOCBDMTkuNTQ3NDkzMyw2LjUzMzQ5Nzk1IDE5LjU5MDk4OTMsNy42NDcyOTAxOSAxOS4xODkzMjExLDguNjQwODg0OSBDMjAuMDQ2NDcxNyw5LjU2OTE4ODU0IDIwLjQ3NTMzMjEsMTAuNjk0MTExMiAyMC40NzUzMzIxLDEyLjAxNTQyMzUgQzIwLjQ3NTMzMjEsMTIuOTQzNjEyNCAyMC4zNjM3MTMzLDEzLjc2NTE0MzkgMjAuMTQxNjcyNywxNC40ODA1MzQ0IEMxOS45MTkzNDcxLDE1LjE5NjAzOTYgMTkuNjMxOTc3LDE1Ljc2ODk3MTcgMTkuMjc5NDQ4NSwxNi4yMDA1MzUzIEMxOC45MjY1MjA4LDE2LjYzMjA0MTYgMTguNDg3MDAwMiwxNi45OTUxNTg2IDE3Ljk2MDgyOTcsMTcuMjg5ODI5MSBDMTcuNDM0NTQ1MSwxNy41ODQ3MjkgMTYuOTI0MzM2MywxNy43OTc1ODQ4IDE2LjQzMDc3MzUsMTcuOTI4NzQwNiBDMTUuOTM2OTgyNywxOC4wNTk4OTY1IDE1LjM4MDk5NzcsMTguMTU4NDY0MiAxNC43NjI1OTA1LDE4LjIyMzk4NDggQzE1LjMyNjYxMzQsMTguNzE1MjE2OSAxNS42MDg2ODE5LDE5LjQ5MDYyMDEgMTUuNjA4NjgxOSwyMC41NDk4NTAxIEwxNS42MDg2ODE5LDI0LjAwNTg1OTIgQzE1LjYwODY4MTksMjQuMjAyMTkxNCAxNS42NzY1MTk3LDI0LjM2NjEwNzUgMTUuODEyMzA5MywyNC40OTcwOTEzIEMxNS45NDc5Mjc5LDI0LjYyNzg0NTUgMTYuMTYyMTAxNiwyNC42NjYzNDMyIDE2LjQ1NTExNTMsMjQuNjExNTUxNSBDMTguOTcyNjk2MSwyMy43NzA4NTcyIDIxLjAyNjE4NjUsMjIuMjU1Njc5OCAyMi42MTU3MDA1LDIwLjA2NjA3NjYgQzI0LjIwNTA0MzUsMTcuODc2NjQ1NSAyNSwxNS40MTE1OTIgMjUsMTIuNjcwMjg0OSBDMjQuOTk5NDI5OSwxMC4zODg0ODI1IDI0LjQ0MDMwOTYsOC4yODM4NDk0NSAyMy4zMjMyMDksNi4zNTYzODU4OCBaIiBpZD0iU2hhcGUiPjwvcGF0aD4KICAgICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+"},QCnb:function(e,t,n){"use strict";e.exports=n("+wdc")},TJpk:function(e,t,n){n("LK8F"),n("dZ+Y"),n("rGqo"),n("yt8O"),n("Btvt"),n("RW0V"),n("8+KV"),n("/SS/"),n("hHhE"),n("V+eJ"),n("HAE/"),n("91GP"),t.__esModule=!0,t.Helmet=void 0;var r=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),o=f(n("q1tI")),a=f(n("17x9")),l=f(n("8+s/")),u=f(n("bmMU")),c=n("v1p5"),s=n("hFT/");function f(e){return e&&e.__esModule?e:{default:e}}function d(e,t){var n={};for(var r in e)t.indexOf(r)>=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}function M(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function g(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}var p,y,N,T=(0,l.default)(c.reducePropsToState,c.handleClientStateChange,c.mapStateOnServer)((function(){return null})),D=(p=T,N=y=function(e){function t(){return M(this,t),g(this,e.apply(this,arguments))}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),t.prototype.shouldComponentUpdate=function(e){return!(0,u.default)(this.props,e)},t.prototype.mapNestedChildrenToProps=function(e,t){if(!t)return null;switch(e.type){case s.TAG_NAMES.SCRIPT:case s.TAG_NAMES.NOSCRIPT:return{innerHTML:t};case s.TAG_NAMES.STYLE:return{cssText:t}}throw new Error("<"+e.type+" /> elements are self-closing and can not contain children. Refer to our API for more information.")},t.prototype.flattenArrayTypeChildren=function(e){var t,n=e.child,i=e.arrayTypeChildren,o=e.newChildProps,a=e.nestedChildren;return r({},i,((t={})[n.type]=[].concat(i[n.type]||[],[r({},o,this.mapNestedChildrenToProps(n,a))]),t))},t.prototype.mapObjectTypeChildren=function(e){var t,n,i=e.child,o=e.newProps,a=e.newChildProps,l=e.nestedChildren;switch(i.type){case s.TAG_NAMES.TITLE:return r({},o,((t={})[i.type]=l,t.titleAttributes=r({},a),t));case s.TAG_NAMES.BODY:return r({},o,{bodyAttributes:r({},a)});case s.TAG_NAMES.HTML:return r({},o,{htmlAttributes:r({},a)})}return r({},o,((n={})[i.type]=r({},a),n))},t.prototype.mapArrayTypeChildrenToProps=function(e,t){var n=r({},t);return Object.keys(e).forEach((function(t){var i;n=r({},n,((i={})[t]=e[t],i))})),n},t.prototype.warnOnInvalidChildren=function(e,t){return!0},t.prototype.mapChildrenToProps=function(e,t){var n=this,r={};return o.default.Children.forEach(e,(function(e){if(e&&e.props){var i=e.props,o=i.children,a=d(i,["children"]),l=(0,c.convertReactPropstoHtmlAttributes)(a);switch(n.warnOnInvalidChildren(e,o),e.type){case s.TAG_NAMES.LINK:case s.TAG_NAMES.META:case s.TAG_NAMES.NOSCRIPT:case s.TAG_NAMES.SCRIPT:case s.TAG_NAMES.STYLE:r=n.flattenArrayTypeChildren({child:e,arrayTypeChildren:r,newChildProps:l,nestedChildren:o});break;default:t=n.mapObjectTypeChildren({child:e,newProps:t,newChildProps:l,nestedChildren:o})}}})),t=this.mapArrayTypeChildrenToProps(r,t)},t.prototype.render=function(){var e=this.props,t=e.children,n=d(e,["children"]),i=r({},n);return t&&(i=this.mapChildrenToProps(t,i)),o.default.createElement(p,i)},i(t,null,[{key:"canUseDOM",set:function(e){p.canUseDOM=e}}]),t}(o.default.Component),y.propTypes={base:a.default.object,bodyAttributes:a.default.object,children:a.default.oneOfType([a.default.arrayOf(a.default.node),a.default.node]),defaultTitle:a.default.string,defer:a.default.bool,encodeSpecialCharacters:a.default.bool,htmlAttributes:a.default.object,link:a.default.arrayOf(a.default.object),meta:a.default.arrayOf(a.default.object),noscript:a.default.arrayOf(a.default.object),onChangeClientState:a.default.func,script:a.default.arrayOf(a.default.object),style:a.default.arrayOf(a.default.object),title:a.default.string,titleAttributes:a.default.object,titleTemplate:a.default.string},y.defaultProps={defer:!0,encodeSpecialCharacters:!0},y.peek=p.peek,y.rewind=function(){var e=p.rewind();return e||(e=(0,c.mapStateOnServer)({baseTag:[],bodyAttributes:{},encodeSpecialCharacters:!0,htmlAttributes:{},linkTags:[],metaTags:[],noscriptTags:[],scriptTags:[],styleTags:[],title:"",titleAttributes:{}})),e},N);D.renderStatic=D.rewind,t.Helmet=D,t.default=D},TwYP:function(e,t){e.exports="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNzlweCIgaGVpZ2h0PSIzM3B4IiB2aWV3Qm94PSIwIDAgNzkgMzMiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5Mb2dvPC90aXRsZT4KICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPgogICAgPGcgaWQ9IlBhZ2UtMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9IkxvZ28iIGZpbGwtcnVsZT0ibm9uemVybyI+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMC4wNDUyMzE4LDE5LjQ2MTIzMzcgQzkuMjQwNjc1MjUsMjAuNjk4NDMyOCA4LjEyNjE5NTA0LDIxLjMxNjY4NzggNi43MDA3Nzc4OSwyMS4zMTY2ODc4IEM1LjMxNTQ1ODI5LDIxLjMxNjY4NzggNC4yMDg2NTAxNywyMC43MTkxMTAzIDMuMzgwMjA4NzgsMTkuNTIzODE3NCBDMi41NTIyMDE2NiwxOC4zMjgyNDg5IDIuMTM4MDUzMzUsMTYuNzc4NDA3MSAyLjEzODA1MzM1LDE0Ljg3MzMyNzMgQzIuMTM4MDUzMzUsMTIuOTIyNzU3MSAyLjU0ODE0ODQ4LDExLjM0Mzk2NyAzLjM2ODMzODc1LDEwLjEzNzIzMjYgQzQuMTg4NjczNzgsOC45MzA2MzYxMiA1LjI5NTE5MjM4LDguMzI2OTkzMjQgNi42ODg3NjMxLDguMzI2OTkzMjQgQzguMDY2NTU1MzcsOC4zMjY5OTMyNCA5LjE3MTE5MjE0LDguODg1MjgzNjUgMTAuMDAzMzk3MiwxMC4wMDA0ODYgQzEwLjgzNTYwMjMsMTEuMTE2Mzc3NSAxMS4yNTE3NzcyLDEyLjY3NjI4MjIgMTEuMjUxNzc3MiwxNC42Nzk2NDg4IEMxMS4yNTE3NzcyLDE2LjYzMDM1NjggMTAuODQ5NDk4OSwxOC4yMjQxNzI1IDEwLjA0NTIzMTgsMTkuNDYxMjMzNyBNNi43MTI3OTI2OCw2LjczNDY5Mzg4IEM0LjY5MDExMDI1LDYuNzM0NjkzODggMy4wNjU2NTI5Myw3LjUwMTQxMjcgMS44MzkyNzU5NSw5LjAzNDAyMzI0IEMwLjYxMzE4ODQ4OSwxMC41NjY3NzE2IDAsMTIuNTA5NDg0NCAwLDE0Ljg2MTg4NTggQzAsMTcuMTE1NzI0OCAwLjU4NTM5NTI0MywxOS4wMTg1OTkxIDEuNzU2MDQwOTcsMjAuNTcwMDk1IEMyLjkyNjU0MTk1LDIyLjEyMjAwNDQgNC41NTg4MTYxMiwyMi44OTc5NTkyIDYuNjUzMDA4MjUsMjIuODk3OTU5MiBDOC43NzkxOTE1NywyMi44OTc5NTkyIDEwLjQzMzQ2ODcsMjIuMDgwMDk4MiAxMS42MTYyNzQsMjAuNDQ1MDY1NSBDMTIuNzk4NTAwMiwxOC44MDk3NTcxIDEzLjM4OTgzMDUsMTYuODkxNDQzNyAxMy4zODk4MzA1LDE0LjY5MTIyODEgQzEzLjM4OTgzMDUsMTIuMzk5NjE4MyAxMi43ODA1NTA0LDEwLjUwMDQ2NiAxMS41NjIyNzk4LDguOTkzOTA5MDQgQzEwLjM0Mzg2NDUsNy40ODgwNDEzIDguNzI3MzY4NzQsNi43MzQ2OTM4OCA2LjcxMjc5MjY4LDYuNzM0NjkzODgiIGlkPSJTaGFwZSIgZmlsbD0iIzVEQTdBMyI+PC9wYXRoPgogICAgICAgICAgICA8cGF0aCBkPSJNMjIuOTc0MzgxNywyMS4zNjc1NDcyIEMyMi4zMTQxOTk5LDIyLjA3MDg5MDkgMjEuNTU1MzY4NiwyMi40MjMxMzExIDIwLjY5OTU0OTUsMjIuNDIzMTMxMSBDMTkuOTYwMDU1MywyMi40MjMxMzExIDE5LjI1MDkyNjQsMjIuMTMwOTk0OCAxOC41Njk3NDU3LDIxLjU0NjU4MDEgQzE3Ljg4ODI2MjksMjAuOTYzMDE3OSAxNy41MTMzMDM4LDIwLjIyMzAxNTEgMTcuMzYyMjMyNSwxOS4zMjc5OTI0IEwxNy4zNjIyMzI1LDE1Ljk4NjA0NCBDMTcuNjY0Mzc1MiwxNS4xNzMxNDkxIDE3Ljk2OTM4ODIsMTQuNDgxNDU2OCAxOC41ODg0Nzg2LDEzLjkxMDk2NjggQzE5LjIwNzU2ODksMTMuMzQwNDc2OSAxOS45MDY3MjcxLDEzLjA1NTE2MDkgMjAuNjg3OTE3LDEzLjA1NTE2MDkgQzIxLjY3NjgzLDEzLjA1NTE2MDkgMjIuNDcwNDA3NywxMy40NTk2OTAxIDIzLjA2ODgwMTMsMTQuMjY4NjA2NSBDMjMuNjY2ODkyNywxNS4wNzc1MjI4IDIzLjk2NjAxNCwxNi4yMjg0NDg5IDIzLjk2NjAxNCwxNy43MjE1MjY5IEMyMy45NjYwMTQsMTkuNDQ4OTEwNyAyMy42MzUxNjc3LDIwLjY2NDYyOTcgMjIuOTc0MzgxNywyMS4zNjc1NDcyIE0yMS4xNjI3MzQyLDExLjQ0ODk3OTYgQzE5LjQwMzM1NzQsMTEuNDQ4OTc5NiAxOC4xMTc1ODkyLDEyLjMyNDUzNiAxNy4yMTExNjEyLDE0LjA3NDc5NjIgTDE3LjIxMTE2MTIsMTEuNjk4MjA0OCBMMTUuMzk4MzA1MSwxMS42OTgyMDQ4IEwxNS4zOTgzMDUxLDI3LjYxMjI0NDkgTDE3LjM2MjIzMjUsMjcuNjEyMjQ0OSBMMTcuMzYyMjMyNSwyMS44MjQ5MzM3IEMxOC4yNjg2NjA1LDIzLjIzOTQzNjEgMTkuNTA4OTU2MiwyMy45NDcwNDI1IDIxLjA4NzY1MTcsMjMuOTQ3MDQyNSBDMjIuNTU4OTM1NSwyMy45NDcwNDI1IDIzLjc2MjgyMywyMy4zNzk2Nzg2IDI0LjcwMjAzMzUsMjIuMjQ1NTE5MSBDMjUuNjQwNzkwOCwyMS4xMTA3OTEyIDI2LjExMDE2OTUsMTkuNTc3NTAxOCAyNi4xMTAxNjk1LDE3LjY0NTM2NjkgQzI2LjExMDE2OTUsMTUuODUzNDc0NCAyNS42NjI5OTgzLDE0LjM3MjkwMDMgMjQuNzUwNTI3NCwxMy4yMDMzNjA0IEMyMy44Mzc2MDMzLDEyLjAzMzY3ODUgMjIuNjQ4MDY3NiwxMS40NDg5Nzk2IDIxLjE2MjczNDIsMTEuNDQ4OTc5NiIgaWQ9IlNoYXBlIiBmaWxsPSIjNURBN0EzIj48L3BhdGg+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMC4yNjM1ODc2LDE2LjM2MzMzNjcgQzMwLjM0MTcwNzYsMTUuMjU4OTg2OCAzMC43MDEzMTY2LDE0LjQwODM2MTMgMzEuMzQxNzAwNiwxMy43NzA0NjExIEMzMS45ODE2NTYxLDEzLjEzMjQyMyAzMi43NjE0Mjc5LDEyLjgwNDAxNjkgMzMuNjgwNzMwMiwxMi44MDQwMTY5IEMzNC4zNjQxMDE2LDEyLjgwNDAxNjkgMzQuOTQ5MDczMiwxMi45NzU3NDMzIDM1LjQzNjUwMiwxMy4zMjkxMzUzIEMzNS45MjM1MDIzLDEzLjY4MTk3NTEgMzYuMjY5NDAxLDE0LjEyNTc4NTcgMzYuNDczNDg0MSwxNC42MjcwMjI1IEMzNi42NzgxMzg1LDE1LjEyODEyMTMgMzYuNzg3NTM1MSwxNS42NzMxMTggMzYuODAzMzg3NiwxNi4zNjMzMzY3IEwzMC4yNjM1ODc2LDE2LjM2MzMzNjcgWiBNMzcuMzc1MjIwMiwxMy4wMzA2ODQ4IEMzNi40MjgzNTQ1LDExLjk5MDI0OTEgMzUuMTc3NDM1LDExLjQ0ODk3OTYgMzMuNjIxNzQ3NSwxMS40NDg5Nzk2IEMzMi4wNDI5MjM5LDExLjQ0ODk3OTYgMzAuNzMwNTkzOCwxMi4wMDI1MzUgMjkuNjg2MDQyNCwxMy4xMzE0NTY3IEMyOC42NDEyMDU0LDE0LjI1OTgyNjIgMjguMTE4NjQ0MSwxNS43MzQ5NjE2IDI4LjExODY0NDEsMTcuNTY2OTQwMSBDMjguMTE4NjQ0MSwxOS4zNjA4MTg0IDI4LjYyMTA2ODQsMjAuODA3Mzc4OCAyOS42MjY5MTY4LDIxLjkxMzM4NTIgQzMwLjYzMjQ3OTYsMjMuMDE5OTQzOCAzMS45NDg1MjMsMjMuNTcxNDI4NiAzMy41NzQ5MDQsMjMuNTcxNDI4NiBDMzQuODA4MjU3MywyMy41NzE0Mjg2IDM1Ljg4MDIyOTIsMjMuMjQ4OTU4NCAzNi43OTE1MzM5LDIyLjYwNDcwODMgQzM3LjcwMzEyNDIsMjEuOTYwNzM0MiAzOC4zMTU4MDIsMjEuMTQ3MzgwNSAzOC42MzAxMzg2LDIwLjE2NDA5NSBMMzYuOTA5OTI3OCwxOS44MjI3MTI4IEMzNi4yODg5NjY3LDIxLjMzMzQ2MzUgMzUuMjIwNTY1MiwyMi4wODkyNTI5IDMzLjcwNDI5NDcsMjIuMDg5MjUyOSBDMzIuODYzNjgzNywyMi4wODkyNTI5IDMyLjA2NjM0NTYsMjEuODI4MDc0MiAzMS4zMTIyODA3LDIxLjIyMDY4MTcgQzMwLjU1ODA3MjksMjAuNjEzMDEzMiAzMC4xODA3NTQ3LDE5LjQwMDI5OSAzMC4xODA3NTQ3LDE3Ljc0Mzc3NDEgTDM4LjgzMDUwODUsMTcuNzQzNzc0MSBDMzguODA2OTQzOSwxNS41MzUwNzQzIDM4LjMyMTgwMDIsMTQuMDcwODQ0MyAzNy4zNzUyMjAyLDEzLjAzMDY4NDggTDM3LjM3NTIyMDIsMTMuMDMwNjg0OCBaIiBpZD0iU2hhcGUiIGZpbGw9IiM1REE3QTMiPjwvcGF0aD4KICAgICAgICAgICAgPHBhdGggZD0iTTQ4LjQzNjA2MzksMTIuMTMxMzMxIEM0Ny43NjA0NDM5LDExLjY3NjU3MTQgNDYuOTE5MzU2NiwxMS40NDg5Nzk2IDQ1Ljk1ODg0MjIsMTEuNDQ4OTc5NiBDNDQuMjkzMDQ0MywxMS40NDg5Nzk2IDQyLjk1MDQ1NjMsMTIuMjgxMTc0IDQxLjg2ODk3LDEzLjk0NTEzODggTDQxLjg2ODk3LDExLjY5NzA2ODggTDQwLjE2OTQ5MTUsMTEuNjk3MDY4OCBMNDAuMTY5NDkxNSwyMy41NzE0Mjg2IEw0Mi4wMjM0NjgxLDIzLjU3MTQyODYgTDQyLjAyMzQ2ODEsMTcuMDk0Mzg3NSBDNDIuMDIzNDY4MSwxNS44NzQwMTQ3IDQyLjM4NTkyMDUsMTQuODg5OTk4MiA0My4wNzg1MzUyLDE0LjE0MzE4NiBDNDMuNzcwNjg2NCwxMy4zOTY3OTggNDQuNjM1NDEyLDEzLjAyMzYwNCA0NS42NTUwOTkxLDEzLjAyMzYwNCBDNDYuMzk0NjgxMiwxMy4wMjM2MDQgNDcuMDQyODAwNSwxMy4yNDUyNTg2IDQ3LjU2MTE0MTUsMTMuNjg4NTY3OSBDNDguMDc5NjM2OSwxNC4xMzE1OTQ0IDQ4LjM1Nzg4NzksMTQuODk3NjMxNyA0OC4zNTc4ODc5LDE1Ljk4NjUzODQgTDQ4LjM1Nzg4NzksMjMuNTcxNDI4NiBMNTAuMjExODY0NCwyMy41NzE0Mjg2IEw1MC4yMTE4NjQ0LDE2Ljc0NDUxODEgQzUwLjIxMTg2NDQsMTUuMjU5Mzc1NSA1MC4wODE0NjgxLDE0LjIzMzA5MTkgNDkuODMwNDA4NywxMy42NjUyNDMyIEM0OS41Nzk2NTg0LDEzLjA5NzM5NDYgNDkuMTExODM4MywxMi41ODYwOTA1IDQ4LjQzNjA2MzksMTIuMTMxMzMxIFoiIGlkPSJTaGFwZSIgZmlsbD0iIzVEQTdBMyI+PC9wYXRoPgogICAgICAgICAgICA8cGF0aCBkPSJNNTcuNzMyOTYwNywxOS4zMjIyNzI0IEM1Ny43MzI5NjA3LDIwLjIxNjkxMjkgNTcuNjY0MDE3MywyMC44NjM1NjU5IDU3LjUyOTgzNDEsMjEuMjYzMjQ2NCBDNTcuMzk1MjIzNiwyMS42NjI0OTE5IDU3LjEzMTQxNTQsMjEuOTg3NjMxMSA1Ni43Mzk0MDY4LDIyLjIzOTM4OTIgQzU2LjM0NzY4MywyMi40OTA4NTczIDU1LjY5NjI4MiwyMi42MTYxNTYzIDU0Ljg2OTM4ODcsMjIuNjE2MTU2MyBDNTQuMjg4MDcwNywyMi42MTYxNTYzIDUzLjc0NDUwMDUsMjIuNTM4NTY5NSA1Mi44ODk4MzA1LDIyLjM4MzI1MSBMNTIuODg5ODMwNSwyMy45MzQ2OTYgQzUzLjc0NDUwMDUsMjQuMTQxMjA3MyA1NC4zNzg4MDgyLDI0LjI0NDg5OCA1NS4wOTc0NDMyLDI0LjI0NDg5OCBDNTYuNDM5NTYsMjQuMjQ0ODk4IDU3LjUzNTEwNDYsMjMuODgyNDg4MSA1OC4zNDc4OTU4LDIzLjE1ODM5MzQgQzU5LjE2MDQwMjEsMjIuNDMzODYzNyA1OS41ODQ3NDU4LDIxLjE1NDkxNSA1OS41ODQ3NDU4LDE5LjMyMTExMjMgTDU5LjU4NDc0NTgsOC43NTUxMDIwNCBMNTcuNzMyOTYwNyw4Ljc1NTEwMjA0IEw1Ny43MzI5NjA3LDE5LjMyMjI3MjQgWiIgaWQ9IlNoYXBlIiBmaWxsPSIjRkZGRkZGIj48L3BhdGg+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik02OS4yNDA4MTE5LDE2LjIyNTg5MDQgQzY4LjU2Njc1NzgsMTYuOTQyNzI2NiA2Ny43MzIxNTUyLDE3LjMwMTIxNiA2Ni43Mzc0MTk4LDE3LjMwMTIxNiBDNjUuODMzODMyNiwxNy4zMDEyMTYgNjUuMDQyMDMzNywxNi45OTE5NDIyIDY0LjM2MTA1MzQsMTYuMzczNTM3MyBDNjMuNjgwMjExNiwxNS43NTQ3MDQzIDYzLjMzOTcyMTUsMTQuOTE0MTg3MiA2My4zMzk3MjE1LDEzLjg1MTI3MjQgQzYzLjMzOTcyMTUsMTIuODYxOTY3MiA2My42NDY4Mjc1LDEyLjAyMjQ0ODUgNjQuMjYwNzYyNiwxMS4zMzQ5OTkxIEM2NC44NzQxNDM1LDEwLjY0NzEyMTYgNjUuNzEwNDA4NCwxMC4zMDMzMjU2IDY2Ljc2OTAwMzEsMTAuMzAzMzI1NiBDNjcuODEzMzI5OCwxMC4zMDMzMjU2IDY4LjY1NDk5NzEsMTAuNjM3ODQ5MSA2OS4yOTM0NTA4LDExLjMwNzYwOTUgQzY5LjkzMjE4MTUsMTEuOTc3MjI3MiA3MC4yNTE0Nzc2LDEyLjc3ODA4NjYgNzAuMjUxNDc3NiwxMy43MDkzMzE3IEM3MC4yNTE0Nzc2LDE0LjY3MDEwNjIgNjkuOTE0MzEyLDE1LjUwOTA1NDIgNjkuMjQwODExOSwxNi4yMjU4OTA0IE03MC44NTQ3NDYzLDEwLjcyNDE1NDggQzY5Ljg4ODI2OTYsOS40MTIwMjM1NyA2OC40OTgwNTAzLDguNzU1MTAyMDQgNjYuNjg0MjI2OCw4Ljc1NTEwMjA0IEM2NS4yMDI1ODIxLDguNzU1MTAyMDQgNjMuOTgzNDM5LDkuMjU3MjQ0MDEgNjMuMDI3NDkwMSwxMC4yNjExIEM2Mi4wNzA5ODcsMTEuMjY1MjQxMyA2MS41OTMyMjAzLDEyLjQ3MjgwNzEgNjEuNTkzMjIwMywxMy44ODQyMjU1IEM2MS41OTMyMjAzLDE1LjI3MzgxNzggNjIuMDQ3OTkyMiwxNi40Mzk1ODYgNjIuOTU4MzY3LDE3LjM4MTY3MjkgQzYzLjg2ODg4MDMsMTguMzIzNjE3IDY0Ljk5NDI0MzIsMTguNzk0ODAzMSA2Ni4zMzQ3MzI3LDE4Ljc5NDgwMzEgQzY4LjIzMzA1NTMsMTguNzk0ODAzMSA2OS42NTUxMzUsMTcuOTAwNzkwNiA3MC42MDA4MzMyLDE2LjExMzA1MTEgQzcwLjU3OTUwMDYsMTguMTU1MTQyNyA3MC4yMjEyNzk1LDE5Ljc3MjI2ODEgNjkuNTI2NTg1NCwyMC45NjM5OTkzIEM2OC44MzEzMzcyLDIyLjE1NjAxNTkgNjcuNzk1ODc1OSwyMi43NTE0NTM2IDY2LjQxOTUwODksMjIuNzUxNDUzNiBDNjUuMDAxNTg0OSwyMi43NTE0NTM2IDYzLjk5MjMwNDUsMjIuMDY1MDAyNyA2My4zOTIzNjAzLDIwLjY5MTM4NzYgTDYxLjk0MjI5ODksMjEuMjM2NjExMSBDNjIuNzA0MTc2OCwyMy4yNDIxODMyIDY0LjE4OTU2MTYsMjQuMjQ0ODk4IDY2LjM5ODczMDQsMjQuMjQ0ODk4IEM2OC4yODk0MzQyLDI0LjI0NDg5OCA2OS43NDY5NzU5LDIzLjQ5NzgxOTEgNzAuNzcwMTA4NiwyMi4wMDM1MTg4IEM3MS43OTMyNDEzLDIwLjUwOTA3NTggNzIuMzA1MDg0NywxOC41NTQ1NzM4IDcyLjMwNTA4NDcsMTYuMTQwMDEyNyBDNzIuMzA1MDg0NywxMy44NDIxNDI2IDcxLjgyMTYzODYsMTIuMDM2ODU2NiA3MC44NTQ3NDYzLDEwLjcyNDE1NDgiIGlkPSJTaGFwZSIgZmlsbD0iI0ZGRkZGRiI+PC9wYXRoPgogICAgICAgICAgICA8cGF0aCBkPSJNNDguODQzNzkwMSwyNC42NDQ3MTU3IEM0OS41NDM5Mzk0LDI1LjkwNTU0OTIgNTAuNDE5NDA5OCwyNy4wOTIxMjI5IDUxLjQ3MDIwMTMsMjguMTY3MjQ1MyBDNTcuNzY4MDE2NSwzNC42MTA5MTgyIDY3Ljk3ODc5MjcsMzQuNjEwOTE4MiA3NC4yNzY2MDc5LDI4LjE2NzI0NTMgQzgwLjU3NDQ2NCwyMS43MjM2MDAzIDgwLjU3NDQ2NCwxMS4yNzY0MDE4IDc0LjI3NjYwNzksNC44MzI3NTY4MyBDNjcuOTc4NzkyNywtMS42MTA5MTg5NCA1Ny43NjgwMTY1LC0xLjYxMDkxODk0IDUxLjQ3MDIwMTMsNC44MzI3NTY4MyBDNDkuNjA2NzAxNiw2LjczOTM5NzA0IDQ4LjI5NDU5ODMsOC45OTY1NjQ4MyA0Ny41MzM4OTgzLDExLjM5NjgyMjkgTDQ4LjM3MDI2NzIsMTEuNzc3ODE5NiBDNDkuMDgzNDMyNSw5LjQ3ODI5OTU2IDUwLjMzMTIyMjcsNy4zMTQ3NjEyMiA1Mi4xMTM2MzM1LDUuNDkxMDg4OTIgQzU4LjA1NjA5NDgsLTAuNTg4OTk5Mjg4IDY3LjY5MDcyMTIsLTAuNTg4OTk5Mjg4IDczLjYzMzE3NTcsNS40OTEwODg5MiBDNzkuNTc1NjcxMiwxMS41NzExNDM2IDc5LjU3NTY3MTIsMjEuNDI4ODU1NyA3My42MzMxNzU3LDI3LjUwODkxNDYgQzY3LjY5MDcyMTIsMzMuNTg4OTkzIDU4LjA1NjA5NDgsMzMuNTg4OTkzIDUyLjExMzYzMzUsMjcuNTA4OTE0NiBDNTEuMTQ0MDY3NywyNi41MTY4OTg3IDUwLjMzMjY5OTgsMjUuNDI0MzI2NyA0OS42Nzk1MTYxLDI0LjI2NDAwNzMgTDQ4Ljg0Mzc5MDEsMjQuNjQ0NzE1NyBaIiBpZD0iU2hhcGUiIGZpbGw9IiM1REE3QTMiPjwvcGF0aD4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg=="},VE45:function(e,t,n){e.exports=n.p+"static/adopt-open-jdk-7072a4c16b356c87671638dba5c860e9.png"},WLL4:function(e,t,n){var r=n("XKFU");r(r.S+r.F*!n("nh4g"),"Object",{defineProperties:n("FJW5")})},ZXdF:function(e,t,n){"use strict";n("tUrg");var r=n("2A+t");n("qKvR");t.a=function(e){var t=e.children,n=e.primary,i=e.link,o=e.target,a=e.widthChanged,l=n?"buttons.primary":"buttons.secondary";return o?Object(r.c)("a",{href:i,rel:"noopener noreferrer",target:"_blank",sx:{variant:l,display:"flex",alignItems:"center",justifyContent:"center",textDecoration:"none",width:a?"15rem":"12rem"}},t):Object(r.c)("a",{href:i,sx:{variant:l,display:"flex",alignItems:"center",justifyContent:"center",textDecoration:"none",width:a?"15rem":"12rem"}},t)}},ZdEh:function(e,t,n){"use strict";n.d(t,"b",(function(){return r})),n.d(t,"a",(function(){return f}));n("LK8F"),n("91GP"),n("DNiP"),n("bWfx"),n("KKXr");var r=function(e,t,n,r,i){for(t=t&&t.split?t.split("."):[t],r=0;r<t.length;r++)e=e?e[t[r]]:i;return e===i?n:e},i=[40,52,64].map((function(e){return e+"em"})),o={space:[0,4,8,16,32,64,128,256,512],fontSizes:[12,14,16,20,24,32,48,64,72]},a={bg:"backgroundColor",m:"margin",mt:"marginTop",mr:"marginRight",mb:"marginBottom",ml:"marginLeft",mx:"marginX",my:"marginY",p:"padding",pt:"paddingTop",pr:"paddingRight",pb:"paddingBottom",pl:"paddingLeft",px:"paddingX",py:"paddingY"},l={marginX:["marginLeft","marginRight"],marginY:["marginTop","marginBottom"],paddingX:["paddingLeft","paddingRight"],paddingY:["paddingTop","paddingBottom"],size:["width","height"]},u={color:"colors",backgroundColor:"colors",borderColor:"colors",margin:"space",marginTop:"space",marginRight:"space",marginBottom:"space",marginLeft:"space",marginX:"space",marginY:"space",padding:"space",paddingTop:"space",paddingRight:"space",paddingBottom:"space",paddingLeft:"space",paddingX:"space",paddingY:"space",top:"space",right:"space",bottom:"space",left:"space",gridGap:"space",gridColumnGap:"space",gridRowGap:"space",gap:"space",columnGap:"space",rowGap:"space",fontFamily:"fonts",fontSize:"fontSizes",fontWeight:"fontWeights",lineHeight:"lineHeights",letterSpacing:"letterSpacings",border:"borders",borderTop:"borders",borderRight:"borders",borderBottom:"borders",borderLeft:"borders",borderWidth:"borderWidths",borderStyle:"borderStyles",borderRadius:"radii",borderTopRightRadius:"radii",borderTopLeftRadius:"radii",borderBottomRightRadius:"radii",borderBottomLeftRadius:"radii",borderTopWidth:"borderWidths",borderTopColor:"colors",borderTopStyle:"borderStyles",borderBottomWidth:"borderWidths",borderBottomColor:"colors",borderBottomStyle:"borderStyles",borderLeftWidth:"borderWidths",borderLeftColor:"colors",borderLeftStyle:"borderStyles",borderRightWidth:"borderWidths",borderRightColor:"colors",borderRightStyle:"borderStyles",outlineColor:"colors",boxShadow:"shadows",textShadow:"shadows",zIndex:"zIndices",width:"sizes",minWidth:"sizes",maxWidth:"sizes",height:"sizes",minHeight:"sizes",maxHeight:"sizes",flexBasis:"sizes",size:"sizes",fill:"colors",stroke:"colors"},c=function(e,t){if("number"!=typeof t||t>=0)return r(e,t,t);var n=Math.abs(t),i=r(e,n,n);return"string"==typeof i?"-"+i:-1*i},s=["margin","marginTop","marginRight","marginBottom","marginLeft","marginX","marginY","top","bottom","left","right"].reduce((function(e,t){var n;return Object.assign({},e,((n={})[t]=c,n))}),{}),f=function e(t){return function(n){void 0===n&&(n={});var c=Object.assign({},o,n.theme||n),f={},d=function(e){return function(t){var n={},o=r(t,"breakpoints",i),a=[null].concat(o.map((function(e){return"@media screen and (min-width: "+e+")"})));for(var l in e){var u="function"==typeof e[l]?e[l](t):e[l];if(null!=u)if(Array.isArray(u))for(var c=0;c<u.slice(0,a.length).length;c++){var s=a[c];s?(n[s]=n[s]||{},null!=u[c]&&(n[s][l]=u[c])):n[l]=u[c]}else n[l]=u}return n}}("function"==typeof t?t(c):t)(c);for(var M in d){var g=d[M],p="function"==typeof g?g(c):g;if("variant"!==M)if(p&&"object"==typeof p)f[M]=e(p)(c);else{var y=r(a,M,M),N=r(u,y),T=r(c,N,r(c,y,{})),D=r(s,y,r)(T,p,p);if(l[y])for(var m=l[y],j=0;j<m.length;j++)f[m[j]]=D;else f[y]=D}else{var I=e(r(c,p))(c);f=Object.assign({},f,I)}}return f}}},bmMU:function(e,t,n){"use strict";n("f3/d"),n("SRfc"),n("a1Th"),n("h7Nl"),n("Oyvg"),n("rGqo"),n("yt8O"),n("Btvt"),n("RW0V"),n("LK8F");var r=Array.isArray,i=Object.keys,o=Object.prototype.hasOwnProperty,a="undefined"!=typeof Element;e.exports=function(e,t){try{return function e(t,n){if(t===n)return!0;if(t&&n&&"object"==typeof t&&"object"==typeof n){var l,u,c,s=r(t),f=r(n);if(s&&f){if((u=t.length)!=n.length)return!1;for(l=u;0!=l--;)if(!e(t[l],n[l]))return!1;return!0}if(s!=f)return!1;var d=t instanceof Date,M=n instanceof Date;if(d!=M)return!1;if(d&&M)return t.getTime()==n.getTime();var g=t instanceof RegExp,p=n instanceof RegExp;if(g!=p)return!1;if(g&&p)return t.toString()==n.toString();var y=i(t);if((u=y.length)!==i(n).length)return!1;for(l=u;0!=l--;)if(!o.call(n,y[l]))return!1;if(a&&t instanceof Element&&n instanceof Element)return t===n;for(l=u;0!=l--;)if(!("_owner"===(c=y[l])&&t.$$typeof||e(t[c],n[c])))return!1;return!0}return t!=t&&n!=n}(e,t)}catch(n){if(n.message&&n.message.match(/stack|recursion/i)||-2146828260===n.number)return console.warn("Warning: react-fast-compare does not handle circular references.",n.name,n.message),!1;throw n}}},cLBj:function(e){e.exports=JSON.parse('{"data":{"site":{"id":"Site","siteMetadata":{"defaultTitle":"Eclipse OpenJ9","defaultDescription":"A fast and efficient JVM to power the next generation of Java applications for the cloud.","siteUrl":"https://www.doe.com","twitterUsername":"@openj9","defaultImage":"openj9-logo.svg"}}}}')},fuUq:function(e,t){e.exports="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNTBweCIgaGVpZ2h0PSI3NXB4IiB2aWV3Qm94PSIwIDAgMTU3IDIzMSIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KICAgIDwhLS0gR2VuZXJhdG9yOiBTa2V0Y2ggNjEuMiAoODk2NTMpIC0gaHR0cHM6Ly9za2V0Y2guY29tIC0tPgogICAgPHRpdGxlPmVjbGlwc2VfaW5jdWJhdGlvbl92ZXJ0aWNhbF9zdmc8L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0iZWNsaXBzZV9pbmN1YmF0aW9uX3ZlcnRpY2FsX3N2ZyIgZmlsbC1ydWxlPSJub256ZXJvIj4KICAgICAgICAgICAgPGcgaWQ9Ikdyb3VwIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNy4wMDAwMDAsIDIxNC4wMDAwMDApIiBmaWxsPSIjRkZGRkZGIj4KICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJQYXRoIiBwb2ludHM9IjAuNzUgMC4zNCAxLjkyIDAuMzQgMS45MiAxNi4wMyAwLjc1IDE2LjAzIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSI1LjYyIDAuMzQgNi43MiAwLjM0IDE3LjU1IDEzLjk5IDE3LjU1IDAuMzQgMTguNjcgMC4zNCAxOC42NyAxNi4wMyAxNy44IDE2LjAzIDYuNzUgMi4wOSA2Ljc1IDE2LjAzIDUuNjMgMTYuMDMgNS42MyAwLjM0Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMjEuODYsOC4yMyBMMjEuODYsOC4xOSBDMjEuODYsMy43NSAyNS4xOCwwLjA4IDI5LjcxLDAuMDggQzMyLjUxLDAuMDggMzQuMTksMS4xMSAzNS44MSwyLjU5IEwzNC45OCwzLjQ0IEMzMy42MSwyLjEyIDMyLjA0LDEuMTMgMjkuNjksMS4xMyBDMjUuOTIsMS4xMyAyMy4wOCw0LjIgMjMuMDgsOC4xNSBMMjMuMDgsOC4xOSBDMjMuMDgsMTIuMTYgMjUuOTcsMTUuMjUgMjkuNzEsMTUuMjUgQzMxLjk3LDE1LjI1IDMzLjUyLDE0LjM3IDM1LjExLDEyLjgxIEwzNS44OSwxMy41NyBDMzQuMjMsMTUuMjEgMzIuNDQsMTYuMyAyOS42NiwxNi4zIEMyNS4xOCwxNi4zIDIxLjg2LDEyLjc0IDIxLjg2LDguMjMgWiIgaWQ9IlBhdGgiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0zOC40LDkuNTEgTDM4LjQsMC4zNCBMMzkuNTcsMC4zNCBMMzkuNTcsOS40IEMzOS41NywxMy4xIDQxLjU3LDE1LjIzIDQ0Ljg4LDE1LjIzIEM0OC4wNiwxNS4yMyA1MC4xLDEzLjMgNTAuMSw5LjUxIEw1MC4xLDAuMzQgTDUxLjI3LDAuMzQgTDUxLjI3LDkuMzcgQzUxLjI3LDEzLjg4IDQ4LjY1LDE2LjI3MDAzMTQgNDQuODQsMTYuMjcwMDMxNCBDNDEuMDcsMTYuMjggMzguNCwxMy45IDM4LjQsOS41MSBaIiBpZD0iUGF0aCI+PC9wYXRoPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTU0LjAyLDAuMzQgTDYwLjUsMC4zNCBDNjIuMjcsMC4zNCA2My43MSwwLjg2IDY0LjU4LDEuNzMgQzY1LjIzLDIuMzggNjUuNTksMy4yMSA2NS41OSw0LjIgTDY1LjU5LDQuMjQgQzY1LjU5LDYuMzcgNjQuMiw3LjQ1IDYyLjkyLDcuOTYgQzY0LjgsOC40NSA2Ni40Niw5LjUzIDY2LjQ2LDExLjcgTDY2LjQ2LDExLjc0IEM2Ni40NiwxNC4zNiA2NC4yMiwxNi4wMiA2MC44MywxNi4wMiBMNTQuMDIsMTYuMDIgTDU0LjAyLDAuMzQgTDU0LjAyLDAuMzQgWiBNNjQuNCw0LjMxIEM2NC40LDIuNTggNjIuOTksMS40MiA2MC40OCwxLjQyIEw1NS4xOSwxLjQyIEw1NS4xOSw3LjU4IEw2MC4zNyw3LjU4IEM2Mi43Miw3LjU4IDY0LjQsNi40NCA2NC40LDQuMzUgTDY0LjQsNC4zMSBaIE02MC41LDguNjYgTDU1LjE5LDguNjYgTDU1LjE5LDE0Ljk2IEw2MC44OCwxNC45NiBDNjMuNTcsMTQuOTYgNjUuMjcwMDQ0NCwxMy43MyA2NS4yNzAwNDQ0LDExLjc1IEw2NS4yNzAwNDQ0LDExLjcxIEM2NS4yOCw5Ljc4IDYzLjYsOC42NiA2MC41LDguNjYgWiIgaWQ9IlNoYXBlIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNzYuMjgsMC4yMyBMNzcuNCwwLjIzIEw4NC43MSwxNi4wMyBMODMuNDMsMTYuMDMgTDgxLjQ0LDExLjY0IEw3Mi4xOCwxMS42NCBMNzAuMTksMTYuMDMgTDY4Ljk4LDE2LjAzIEw3Ni4yOCwwLjIzIFogTTgwLjk0LDEwLjU5IEw3Ni44MiwxLjUxIEw3Mi42NywxMC41OSBMODAuOTQsMTAuNTkgWiIgaWQ9IlNoYXBlIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSI5MS4wNSAxLjQyIDg1LjU4IDEuNDIgODUuNTggMC4zNCA5Ny42OCAwLjM0IDk3LjY4IDEuNDIgOTIuMjEgMS40MiA5Mi4yMSAxNi4wMyA5MS4wNCAxNi4wMyA5MS4wNCAxLjQyIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSIxMDEuMjkgMC4zNCAxMDIuNDYgMC4zNCAxMDIuNDYgMTYuMDMgMTAxLjI5IDE2LjAzIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTA1LjkxLDguMjMgTDEwNS45MSw4LjE5IEMxMDUuOTEsMy45MSAxMDkuMDcsMC4wOCAxMTMuODIsMC4wOCBDMTE4LjU3LDAuMDggMTIxLjY5LDMuODcgMTIxLjY5LDguMTUgTDEyMS42OSw4LjE5IEMxMjEuNjksMTIuNDcgMTE4LjUzLDE2LjMgMTEzLjc4LDE2LjMgQzEwOS4wMywxNi4zIDEwNS45MSwxMi41MSAxMDUuOTEsOC4yMyBaIE0xMjAuNDgsOC4yMyBMMTIwLjQ4LDguMTkgQzEyMC40OCw0LjMxIDExNy42NiwxLjEzIDExMy43OCwxLjEzIEMxMDkuOSwxLjEzIDEwNy4xMiw0LjI3IDEwNy4xMiw4LjE1IEwxMDcuMTIsOC4xOSBDMTA3LjEyLDEyLjA3IDEwOS45NCwxNS4yNSAxMTMuODIsMTUuMjUgQzExNy43LDE1LjI1IDEyMC40OCwxMi4xMSAxMjAuNDgsOC4yMyBaIiBpZD0iU2hhcGUiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJQYXRoIiBwb2ludHM9IjEyNC44OSAwLjM0IDEyNS45OSAwLjM0IDEzNi44MiAxMy45OSAxMzYuODIgMC4zNCAxMzcuOTQgMC4zNCAxMzcuOTQgMTYuMDMgMTM3LjA3IDE2LjAzIDEyNi4wMiAyLjA5IDEyNi4wMiAxNi4wMyAxMjQuOSAxNi4wMyAxMjQuOSAwLjM0Ij48L3BvbHlnb24+CiAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgPHBhdGggZD0iTTU2LjY2LDE2Ni4yMyBDNTcuNTEsMTYzLjQ4IDYwLjQzLDE2MS40MyA2My45NCwxNjEuNDMgQzY1LjE0LDE2MS40MyA2Ni4yNSwxNjEuNjkgNjcuMjUsMTYyLjExIEM2OS40NiwxNjAuNjQgNzIuMTksMTU5Ljc2IDc1LjE3LDE1OS43NiBMNzUuMTksMTU5Ljc2IEM3Ni4xMSwxNTcuOSA3OC40OCwxNTYuNTcgODEuMywxNTYuNTcgQzgyLjA0LDE1Ni41NyA4Mi43NSwxNTYuNjcgODMuNDIsMTU2Ljg0IEM4My4zMywxNTQuNTYgODMuNjksMTUyLjE4IDg0LjU1LDE0OS42OCBDODUuNTUsMTQ2Ljc5IDg3LDE0NC4wMyA4OC41MiwxNDEuMjggQzg4LjE3LDEzNy4xNiA4Ny45LDEzMy41IDgyLjc0LDEzMiBDODAuODIsMTMxLjQ0IDc4LjgyLDEzMS4yNyA3Ni44NiwxMzEuMDQgTDc2Ljg1LDEzMS4wNCBMNzYuODUsMTMxLjAzIEM3Ni4wMSwxMzAuOTMgNzUuMTcsMTMwLjgxIDc0LjM1LDEzMC42NSBDNjAuMTgsMTQ1LjQxIDQwLjIsMTA5Ljk3IDQwLjIsMTA5Ljk3IEM4NC4zLDEwMy4xMyA3Ni4wMSwxMjUuNjEgNzYuMDEsMTI1LjYxIEM3Mi44MSwxMjQuMDUgNzEuOTMsMTIyLjA4IDY5LjQ5LDExOS43MyBDNjMuOTIsMTE0LjM4IDUwLjYyLDExMy40NCA1MC42MiwxMTMuNDQgQzY2LjU0LDExNy41MSA2OC43MSwxMjUuMjIgNzQuOTcsMTI3LjY5IEM3Ni4zOSwxMjguMDEgNzcuOSwxMjguMTMgNzkuMzUsMTI4LjI5IEM4Mi4xNSwxMjguNTkgODQuODksMTI5LjExIDg3LjIyLDEzMC42MSBDODkuNjMsMTMyLjE2IDkwLjcxLDEzNC4wOSA5MS4yNiwxMzYuMjYgQzkzLDEzMi45NCA5NC41LDEyOS41NiA5NS4wNywxMjUuOTIgQzk1LjgsMTIxLjI3IDk1LjEzLDExNS44OCA5MS44MywxMTIuMDcgQzg4Ljc4LDEwOC41NSA4NC42NiwxMDUuODkgODEuNCwxMDIuNTIgQzc3LjkyLDk4LjkxIDc1LjYxLDk0LjQ2IDc1LjUyLDg5LjcxIEM3My43Niw4NS44NiA3MC45LDgxLjM5IDY4LjI4LDc5LjY1IEM1Ni45LDkwLjM0IDQxLjksNjIuNTggNDEuOSw2Mi41OCBDNzYuODgsNTcuNyA3MS4xLDc1LjY3IDcxLjEsNzUuNjcgQzYyLjcsNjYuMjggNTIuMzEsNjcuMTIgNTIuMzEsNjcuMTIgQzYwLjcxLDY5Ljc5IDY3LjM0LDc1LjE1IDcxLjIsNzguODMgTDcxLjczLDc5LjM2IEM3My4zLDgxIDc0LjksODIuNzUgNzYuMjQsODQuNjMgQzc3LjYsNzkuNDggODAuNzcsNzIuMjcgODMuMjYsNjcuOTcgQzgzLjI2LDY3Ljk3IDkxLjY2LDUzLjE1IDEwNS44LDQzLjkgQzEwNS44LDQzLjkgOTUuMDIsNDUuMTQgODMuNDEsNjIuODkgQzgzLjQxLDYyLjg5IDY3Ljk5LDM4LjcgMTE3LjgzLDM0LjIzIEMxMTcuODMsMzQuMjMgMTE0LjQsNzguMTcgODcuNDUsNjkuNjMgQzgyLjc3LDc2LjY3IDc5LjcsODQuNzQgODAuMzMsOTAuNDIgQzgwLjk1LDk1Ljk2IDg0LjgzLDk5Ljg2IDg5LjExLDEwMy41IEM5MC4yNSw5Ny42NiA5NC40Niw5Mi42MyAxMDAuNjUsODkuODkgQzEwNS42LDg3LjkyIDExMi45LDg2LjAzIDExOS43Miw4NS42MiBDMTE5LjcyLDg1LjYyIDEwNi4zOSw4Mi41OCA5Ni4yNSw4OS41MSBDOTYuMjUsODkuNTEgOTYuNDIsNjkuMjIgMTMyLjM0LDgzLjk1IEMxMzIuMzQsODMuOTUgMTA2LjM0LDExMC4yOSA5Ny45OSw5NC41OSBDOTQuMDMsOTcuMiA5MS41MywxMDEuNTggOTIuMTgsMTA2LjExIEM5NC41LDEwOC4xNCA5Ni42NiwxMTAuMzMgOTcuOTcsMTEzLjAzIEM5OS44LDExNi44MiAxMDAuNDUsMTIxLjI0IDk5Ljk1LDEyNS4zNSBDOTguOTksMTMzLjI1IDk0LjA1LDEzOS45NyA5MC42NywxNDcuMTQgQzg5LjI5LDE1MC4wNiA4Ny45NywxNTMuMjcgODcuOTUsMTU2LjUxIEM4OS42NCwxNTYuMDQgOTEuNDcsMTU1Ljc4IDkzLjM5LDE1NS43OCBDMTAwLjYyLDE1NS43OCAxMDYuNzEsMTU5LjM3IDEwOC42OCwxNjQuMyBDMTExLjYxLDE2NC42MSAxMTMuOTIsMTY2LjMzIDExNC4zNCwxNjguNTEgQzExNi40NSwxNjkuODEgMTE4LjEyLDE3MS42MyAxMTkuMTMsMTczLjc1IEw1MC41NSwxNzMuNzUgQzUyLjAyLDE3MC42MiA1NC4xNCwxNjcuMTYgNTYuNjYsMTY2LjIzIiBpZD0iUGF0aCIgZmlsbD0iI0Y3OEQyQyI+PC9wYXRoPgogICAgICAgICAgICA8ZyBpZD0iR3JvdXAiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE3LjAwMDAwMCwgMTgyLjAwMDAwMCkiIGZpbGw9IiNGRkZGRkYiPgogICAgICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlBhdGgiIHBvaW50cz0iMC41NCAxLjM5IDE4LjU0IDEuMzkgMTguNTQgNS4yMSA0LjggNS4yMSA0LjggMTEuNTIgMTYuOTcgMTEuNTIgMTYuOTcgMTUuMzMgNC44IDE1LjMzIDQuOCAyMS44NSAxOC43MSAyMS44NSAxOC43MSAyNS42NyAwLjU0IDI1LjY3Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMjEuNTUsMTMuNiBMMjEuNTUsMTMuNTMgQzIxLjU1LDYuNjMgMjYuNzIsMC45NyAzNC4wNywwLjk3IEMzOC41NCwwLjk3IDQxLjI1LDIuNTMgNDMuNTcsNC43NSBMNDAuODMsNy45MSBDMzguODksNi4xMSAzNi44MSw0Ljg5IDM0LjAzLDQuODkgQzI5LjQyLDQuODkgMjYuMDIsOC43MSAyNi4wMiwxMy40NiBMMjYuMDIsMTMuNTMgQzI2LjAyLDE4LjI4IDI5LjM4LDIyLjEzIDM0LjAzLDIyLjEzIEMzNy4wMSwyMi4xMyAzOC45MiwyMC45NSA0MSwxOS4wMSBMNDMuNzQsMjEuNzggQzQxLjIxLDI0LjQyIDM4LjQzLDI2LjA4MDAxMzYgMzMuODksMjYuMDgwMDEzNiBDMjYuODMsMjYuMDkgMjEuNTUsMjAuNTcgMjEuNTUsMTMuNiBaIiBpZD0iUGF0aCI+PC9wYXRoPgogICAgICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlBhdGgiIHBvaW50cz0iNDcuMjIgMS4zOSA1MS40OSAxLjM5IDUxLjQ5IDIxLjc4IDY0LjI1IDIxLjc4IDY0LjI1IDI1LjY2IDQ3LjIyIDI1LjY2Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSI2Ny45MyAxLjM5IDcyLjIgMS4zOSA3Mi4yIDI1LjY3IDY3LjkzIDI1LjY3Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNzcuNjcsMS4zOSBMODcuMjQsMS4zOSBDOTIuOTMsMS4zOSA5Ni40Nyw0LjYyIDk2LjQ3LDkuNTEgTDk2LjQ3LDkuNTggQzk2LjQ3LDE1LjAzIDkyLjEsMTcuODcgODYuNzYsMTcuODcgTDgxLjk0LDE3Ljg3IEw4MS45NCwyNS42NyBMNzcuNjcsMjUuNjcgTDc3LjY3LDEuMzkgWiBNODYuOSwxNC4wMiBDOTAuMTMsMTQuMDIgOTIuMTQsMTIuMjIgOTIuMTQsOS42OCBMOTIuMTQsOS42MSBDOTIuMTQsNi43NyA5MC4wOSw1LjI4IDg2LjksNS4yOCBMODEuOTQsNS4yOCBMODEuOTQsMTQuMDIgTDg2LjksMTQuMDIgWiIgaWQ9IlNoYXBlIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNOTguMjEsMjIuMTMgTDEwMC43OCwxOS4wOCBDMTAzLjEsMjEuMDkgMTA1LjQ2LDIyLjI0IDEwOC40NSwyMi4yNCBDMTExLjA5LDIyLjI0IDExMi43NSwyMC45OSAxMTIuNzUsMTkuMTkgTDExMi43NSwxOS4xMiBDMTEyLjc1LDE3LjM5IDExMS43OCwxNi40NSAxMDcuMjcsMTUuNDEgQzEwMi4xLDE0LjE2IDk5LjE5LDEyLjY0IDk5LjE5LDguMTYgTDk5LjE5LDguMDkgQzk5LjE5LDMuOTMgMTAyLjY2LDEuMDUgMTA3LjQ4LDEuMDUgQzExMS4wMiwxLjA1IDExMy44MywyLjEzIDExNi4yOSw0LjEgTDExNCw3LjMzIEMxMTEuODEsNS43IDEwOS42Myw0LjgzIDEwNy40MSw0LjgzIEMxMDQuOTEsNC44MyAxMDMuNDYsNi4xMSAxMDMuNDYsNy43MSBMMTAzLjQ2LDcuNzggQzEwMy40Niw5LjY1IDEwNC41NywxMC40OSAxMDkuMjUsMTEuNiBDMTE0LjM4LDEyLjg1IDExNy4wMiwxNC42OSAxMTcuMDIsMTguNzEgTDExNy4wMiwxOC43OCBDMTE3LjAyLDIzLjMyIDExMy40NSwyNi4wMyAxMDguMzUsMjYuMDMgQzEwNC42MiwyNi4wMiAxMDEuMTIsMjQuNzMgOTguMjEsMjIuMTMgWiIgaWQ9IlBhdGgiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJQYXRoIiBwb2ludHM9IjEyMC45OSAxLjM5IDEzOC45OSAxLjM5IDEzOC45OSA1LjIxIDEyNS4yNiA1LjIxIDEyNS4yNiAxMS41MiAxMzcuNDMgMTEuNTIgMTM3LjQzIDE1LjMzIDEyNS4yNiAxNS4zMyAxMjUuMjYgMjEuODUgMTM5LjE3IDIxLjg1IDEzOS4xNyAyNS42NyAxMjEgMjUuNjcgMTIxIDEuMzkiPjwvcG9seWdvbj4KICAgICAgICAgICAgPC9nPgogICAgICAgICAgICA8cGF0aCBkPSJNMjEuNjYsMzkuOTkgQzQxLjI2LDkuNDIgODAuNSwtMS4yNSAxMTMuMjMsMTMuNDQgQzExMi41MSwxMi45NCAxMTEuNzgsMTIuNDMgMTExLjAzLDExLjk1IEM3Ny41MiwtOS41NCAzMi45OCwwLjExIDExLjU2LDMzLjUyIEMtOS44Nyw2Ni45MiAtMC4wNiwxMTEuNDMgMzMuNDUsMTMyLjkyIEMzNC4yLDEzMy40IDM0Ljk2LDEzMy44NSAzNS43MiwxMzQuMyBDOC43MywxMTAuNjggMi4wNiw3MC41NiAyMS42NiwzOS45OSIgaWQ9IlBhdGgiIGZpbGw9IiNGNzhEMkMiPjwvcGF0aD4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg=="},"hFT/":function(e,t,n){n("DNiP"),n("rGqo"),n("yt8O"),n("Btvt"),n("RW0V"),n("bWfx"),t.__esModule=!0;t.ATTRIBUTE_NAMES={BODY:"bodyAttributes",HTML:"htmlAttributes",TITLE:"titleAttributes"};var r=t.TAG_NAMES={BASE:"base",BODY:"body",HEAD:"head",HTML:"html",LINK:"link",META:"meta",NOSCRIPT:"noscript",SCRIPT:"script",STYLE:"style",TITLE:"title"},i=(t.VALID_TAG_NAMES=Object.keys(r).map((function(e){return r[e]})),t.TAG_PROPERTIES={CHARSET:"charset",CSS_TEXT:"cssText",HREF:"href",HTTPEQUIV:"http-equiv",INNER_HTML:"innerHTML",ITEM_PROP:"itemprop",NAME:"name",PROPERTY:"property",REL:"rel",SRC:"src"},t.REACT_TAG_MAP={accesskey:"accessKey",charset:"charSet",class:"className",contenteditable:"contentEditable",contextmenu:"contextMenu","http-equiv":"httpEquiv",itemprop:"itemProp",tabindex:"tabIndex"});t.HELMET_PROPS={DEFAULT_TITLE:"defaultTitle",DEFER:"defer",ENCODE_SPECIAL_CHARACTERS:"encodeSpecialCharacters",ON_CHANGE_CLIENT_STATE:"onChangeClientState",TITLE_TEMPLATE:"titleTemplate"},t.HTML_TAG_MAP=Object.keys(i).reduce((function(e,t){return e[i[t]]=t,e}),{}),t.SELF_CLOSING_TAGS=[r.NOSCRIPT,r.SCRIPT,r.STYLE],t.HELMET_ATTRIBUTE="data-react-helmet"},i8i4:function(e,t,n){"use strict";!function e(){if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE){0;try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(t){console.error(t)}}}(),e.exports=n("yl30")},jm62:function(e,t,n){var r=n("XKFU"),i=n("mQtv"),o=n("aCFj"),a=n("EemH"),l=n("8a7r");r(r.S,"Object",{getOwnPropertyDescriptors:function(e){for(var t,n,r=o(e),u=a.f,c=i(r),s={},f=0;c.length>f;)void 0!==(n=u(r,t=c[f++]))&&l(s,t,n);return s}})},mQtv:function(e,t,n){var r=n("kJMx"),i=n("JiEa"),o=n("y3w9"),a=n("dyZX").Reflect;e.exports=a&&a.ownKeys||function(e){var t=r.f(o(e)),n=i.f;return n?t.concat(n(e)):t}},q1tI:function(e,t,n){"use strict";e.exports=n("viRO")},tUrg:function(e,t,n){"use strict";n("OGtf")("link",(function(e){return function(t){return e(this,"a","href",t)}}))},taE0:function(e,t){e.exports="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIyNXB4IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgogPCEtLSBDcmVhdGVkIHdpdGggTWV0aG9kIERyYXcgLSBodHRwOi8vZ2l0aHViLmNvbS9kdW9waXhlbC9NZXRob2QtRHJhdy8gLS0+CgogPGc+CiAgPHRpdGxlPmJhY2tncm91bmQ8L3RpdGxlPgogIDxyZWN0IGZpbGw9Im5vbmUiIGlkPSJjYW52YXNfYmFja2dyb3VuZCIgaGVpZ2h0PSIyNiIgd2lkdGg9IjI2IiB5PSItMSIgeD0iLTEiLz4KICA8ZyBkaXNwbGF5PSJub25lIiBvdmVyZmxvdz0idmlzaWJsZSIgeT0iMCIgeD0iMCIgaGVpZ2h0PSIxMDAlIiB3aWR0aD0iMTAwJSIgaWQ9ImNhbnZhc0dyaWQiPgogICA8cmVjdCBmaWxsPSJ1cmwoI2dyaWRwYXR0ZXJuKSIgc3Ryb2tlLXdpZHRoPSIwIiB5PSIxIiB4PSIxIiBoZWlnaHQ9IjIyIiB3aWR0aD0iMjIiLz4KICA8L2c+CiA8L2c+CiA8Zz4KICA8dGl0bGU+TGF5ZXIgMTwvdGl0bGU+CiAgPGVsbGlwc2Ugcnk9IjExIiByeD0iMTEiIGlkPSJzdmdfMSIgY3k9IjEyIiBjeD0iMTIiIHN0cm9rZT0iI0ZGRiIgZmlsbD0iI0ZGRkZGRiIvPgogIDxzdHlsZSB0cmFuc2Zvcm09Im1hdHJpeCgwLjA2NTE4MjQ5NTU3MzI1MzYyLDAsMCwwLjA2NTE4MjQ5NTU3MzI1MzYyLDAsMCkgIiB0eXBlPSJ0ZXh0L2NzcyI+LnN0MHtmaWxsOiM0MzQzNDM7fTwvc3R5bGU+CiAgPGcgc3Ryb2tlPSJudWxsIiBpZD0ic3ZnXzE5Ij4KICAgPGcgc3Ryb2tlPSJudWxsIiB0cmFuc2Zvcm09Im1hdHJpeCgwLjEzMDE1NTgwODUxODA5NDg2LDAsMCwwLjEzMDE1NTgwODUxODA5NDg2LC02Ljg0OTAwNjQ1MDQwNTQ5OSwtNi44MzE1MDczOTEwMjE5MjQpICIgaWQ9InN2Z182Ij4KICAgIDxnIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z183Ij4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfOCIgZD0ibTExMC4yOTgyOTIsMTYxLjI5MzAxMWMwLDcuMSAtNS44LDEyLjkgLTEyLjksMTIuOXMtMTIuOSwtNS44IC0xMi45LC0xMi45YzAsLTcuMSA1LjgsLTEyLjkgMTIuOSwtMTIuOWwxMi45LDBsMCwxMi45eiIgY2xhc3M9InN0MCIvPgogICAgIDxwYXRoIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z185IiBkPSJtMTE2Ljc5ODI5MiwxNjEuMjkzMDExYzAsLTcuMSA1LjgsLTEyLjkgMTIuOSwtMTIuOXMxMi45LDUuOCAxMi45LDEyLjlsMCwzMi4zYzAsNy4xIC01LjgsMTIuOSAtMTIuOSwxMi45cy0xMi45LC01LjggLTEyLjksLTEyLjljMCwwIDAsLTMyLjMgMCwtMzIuM3oiIGNsYXNzPSJzdDAiLz4KICAgIDwvZz4KICAgIDxnIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z18xMCI+CiAgICAgPHBhdGggc3Ryb2tlPSJudWxsIiBpZD0ic3ZnXzExIiBkPSJtMTI5LjY5ODI5MiwxMDkuNDkzMDExYy03LjEsMCAtMTIuOSwtNS44IC0xMi45LC0xMi45czUuOCwtMTIuOSAxMi45LC0xMi45czEyLjksNS44IDEyLjksMTIuOWwwLDEyLjlsLTEyLjksMHoiIGNsYXNzPSJzdDAiLz4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTIiIGQ9Im0xMjkuNjk4MjkyLDExNS45OTMwMTFjNy4xLDAgMTIuOSw1LjggMTIuOSwxMi45cy01LjgsMTIuOSAtMTIuOSwxMi45bC0zMi4zLDBjLTcuMSwwIC0xMi45LC01LjggLTEyLjksLTEyLjlzNS44LC0xMi45IDEyLjksLTEyLjljMCwwIDMyLjMsMCAzMi4zLDB6IiBjbGFzcz0ic3QwIi8+CiAgICA8L2c+CiAgICA8ZyBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTMiPgogICAgIDxwYXRoIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z18xNCIgZD0ibTE4MS40OTgyOTIsMTI4Ljg5MzAxMWMwLC03LjEgNS44LC0xMi45IDEyLjksLTEyLjljNy4xLDAgMTIuOSw1LjggMTIuOSwxMi45cy01LjgsMTIuOSAtMTIuOSwxMi45bC0xMi45LDBsMCwtMTIuOXoiIGNsYXNzPSJzdDAiLz4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTUiIGQ9Im0xNzQuOTk4MjkyLDEyOC44OTMwMTFjMCw3LjEgLTUuOCwxMi45IC0xMi45LDEyLjljLTcuMSwwIC0xMi45LC01LjggLTEyLjksLTEyLjlsMCwtMzIuM2MwLC03LjEgNS44LC0xMi45IDEyLjksLTEyLjljNy4xLDAgMTIuOSw1LjggMTIuOSwxMi45bDAsMzIuM3oiIGNsYXNzPSJzdDAiLz4KICAgIDwvZz4KICAgIDxnIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z18xNiI+CiAgICAgPHBhdGggc3Ryb2tlPSJudWxsIiBpZD0ic3ZnXzE3IiBkPSJtMTYyLjA5ODI5MiwxODAuNjkzMDExYzcuMSwwIDEyLjksNS44IDEyLjksMTIuOWMwLDcuMSAtNS44LDEyLjkgLTEyLjksMTIuOWMtNy4xLDAgLTEyLjksLTUuOCAtMTIuOSwtMTIuOWwwLC0xMi45bDEyLjksMHoiIGNsYXNzPSJzdDAiLz4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTgiIGQ9Im0xNjIuMDk4MjkyLDE3NC4xOTMwMTFjLTcuMSwwIC0xMi45LC01LjggLTEyLjksLTEyLjljMCwtNy4xIDUuOCwtMTIuOSAxMi45LC0xMi45bDMyLjMsMGM3LjEsMCAxMi45LDUuOCAxMi45LDEyLjljMCw3LjEgLTUuOCwxMi45IC0xMi45LDEyLjlsLTMyLjMsMHoiIGNsYXNzPSJzdDAiLz4KICAgIDwvZz4KICAgPC9nPgogIDwvZz4KIDwvZz4KPC9zdmc+"},v1p5:function(e,t,n){(function(e){n("dZ+Y"),n("KKXr"),n("eM6i"),n("8+KV"),n("LK8F"),n("V+eJ"),n("rGqo"),n("yt8O"),n("Btvt"),n("RW0V"),n("0l/t"),n("bWfx"),n("DNiP"),n("pIFo"),n("91GP"),n("rE2o"),n("ioFf"),t.__esModule=!0,t.warn=t.requestAnimationFrame=t.reducePropsToState=t.mapStateOnServer=t.handleClientStateChange=t.convertReactPropstoHtmlAttributes=void 0;var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},o=u(n("q1tI")),a=u(n("MgzW")),l=n("hFT/");function u(e){return e&&e.__esModule?e:{default:e}}var c,s=function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return!1===t?String(e):String(e).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#x27;")},f=function(e){var t=y(e,l.TAG_NAMES.TITLE),n=y(e,l.HELMET_PROPS.TITLE_TEMPLATE);if(n&&t)return n.replace(/%s/g,(function(){return t}));var r=y(e,l.HELMET_PROPS.DEFAULT_TITLE);return t||r||void 0},d=function(e){return y(e,l.HELMET_PROPS.ON_CHANGE_CLIENT_STATE)||function(){}},M=function(e,t){return t.filter((function(t){return void 0!==t[e]})).map((function(t){return t[e]})).reduce((function(e,t){return i({},e,t)}),{})},g=function(e,t){return t.filter((function(e){return void 0!==e[l.TAG_NAMES.BASE]})).map((function(e){return e[l.TAG_NAMES.BASE]})).reverse().reduce((function(t,n){if(!t.length)for(var r=Object.keys(n),i=0;i<r.length;i++){var o=r[i].toLowerCase();if(-1!==e.indexOf(o)&&n[o])return t.concat(n)}return t}),[])},p=function(e,t,n){var i={};return n.filter((function(t){return!!Array.isArray(t[e])||(void 0!==t[e]&&j("Helmet: "+e+' should be of type "Array". Instead found type "'+r(t[e])+'"'),!1)})).map((function(t){return t[e]})).reverse().reduce((function(e,n){var r={};n.filter((function(e){for(var n=void 0,o=Object.keys(e),a=0;a<o.length;a++){var u=o[a],c=u.toLowerCase();-1===t.indexOf(c)||n===l.TAG_PROPERTIES.REL&&"canonical"===e[n].toLowerCase()||c===l.TAG_PROPERTIES.REL&&"stylesheet"===e[c].toLowerCase()||(n=c),-1===t.indexOf(u)||u!==l.TAG_PROPERTIES.INNER_HTML&&u!==l.TAG_PROPERTIES.CSS_TEXT&&u!==l.TAG_PROPERTIES.ITEM_PROP||(n=u)}if(!n||!e[n])return!1;var s=e[n].toLowerCase();return i[n]||(i[n]={}),r[n]||(r[n]={}),!i[n][s]&&(r[n][s]=!0,!0)})).reverse().forEach((function(t){return e.push(t)}));for(var o=Object.keys(r),u=0;u<o.length;u++){var c=o[u],s=(0,a.default)({},i[c],r[c]);i[c]=s}return e}),[]).reverse()},y=function(e,t){for(var n=e.length-1;n>=0;n--){var r=e[n];if(r.hasOwnProperty(t))return r[t]}return null},N=(c=Date.now(),function(e){var t=Date.now();t-c>16?(c=t,e(t)):setTimeout((function(){N(e)}),0)}),T=function(e){return clearTimeout(e)},D="undefined"!=typeof window?window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||N:e.requestAnimationFrame||N,m="undefined"!=typeof window?window.cancelAnimationFrame||window.webkitCancelAnimationFrame||window.mozCancelAnimationFrame||T:e.cancelAnimationFrame||T,j=function(e){return console&&"function"==typeof console.warn&&console.warn(e)},I=null,h=function(e,t){var n=e.baseTag,r=e.bodyAttributes,i=e.htmlAttributes,o=e.linkTags,a=e.metaTags,u=e.noscriptTags,c=e.onChangeClientState,s=e.scriptTags,f=e.styleTags,d=e.title,M=e.titleAttributes;b(l.TAG_NAMES.BODY,r),b(l.TAG_NAMES.HTML,i),E(d,M);var g={baseTag:L(l.TAG_NAMES.BASE,n),linkTags:L(l.TAG_NAMES.LINK,o),metaTags:L(l.TAG_NAMES.META,a),noscriptTags:L(l.TAG_NAMES.NOSCRIPT,u),scriptTags:L(l.TAG_NAMES.SCRIPT,s),styleTags:L(l.TAG_NAMES.STYLE,f)},p={},y={};Object.keys(g).forEach((function(e){var t=g[e],n=t.newTags,r=t.oldTags;n.length&&(p[e]=n),r.length&&(y[e]=g[e].oldTags)})),t&&t(),c(e,p,y)},w=function(e){return Array.isArray(e)?e.join(""):e},E=function(e,t){void 0!==e&&document.title!==e&&(document.title=w(e)),b(l.TAG_NAMES.TITLE,t)},b=function(e,t){var n=document.getElementsByTagName(e)[0];if(n){for(var r=n.getAttribute(l.HELMET_ATTRIBUTE),i=r?r.split(","):[],o=[].concat(i),a=Object.keys(t),u=0;u<a.length;u++){var c=a[u],s=t[c]||"";n.getAttribute(c)!==s&&n.setAttribute(c,s),-1===i.indexOf(c)&&i.push(c);var f=o.indexOf(c);-1!==f&&o.splice(f,1)}for(var d=o.length-1;d>=0;d--)n.removeAttribute(o[d]);i.length===o.length?n.removeAttribute(l.HELMET_ATTRIBUTE):n.getAttribute(l.HELMET_ATTRIBUTE)!==a.join(",")&&n.setAttribute(l.HELMET_ATTRIBUTE,a.join(","))}},L=function(e,t){var n=document.head||document.querySelector(l.TAG_NAMES.HEAD),r=n.querySelectorAll(e+"["+l.HELMET_ATTRIBUTE+"]"),i=Array.prototype.slice.call(r),o=[],a=void 0;return t&&t.length&&t.forEach((function(t){var n=document.createElement(e);for(var r in t)if(t.hasOwnProperty(r))if(r===l.TAG_PROPERTIES.INNER_HTML)n.innerHTML=t.innerHTML;else if(r===l.TAG_PROPERTIES.CSS_TEXT)n.styleSheet?n.styleSheet.cssText=t.cssText:n.appendChild(document.createTextNode(t.cssText));else{var u=void 0===t[r]?"":t[r];n.setAttribute(r,u)}n.setAttribute(l.HELMET_ATTRIBUTE,"true"),i.some((function(e,t){return a=t,n.isEqualNode(e)}))?i.splice(a,1):o.push(n)})),i.forEach((function(e){return e.parentNode.removeChild(e)})),o.forEach((function(e){return n.appendChild(e)})),{oldTags:i,newTags:o}},z=function(e){return Object.keys(e).reduce((function(t,n){var r=void 0!==e[n]?n+'="'+e[n]+'"':""+n;return t?t+" "+r:r}),"")},x=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return Object.keys(e).reduce((function(t,n){return t[l.REACT_TAG_MAP[n]||n]=e[n],t}),t)},O=function(e,t,n){switch(e){case l.TAG_NAMES.TITLE:return{toComponent:function(){return e=t.title,n=t.titleAttributes,(r={key:e})[l.HELMET_ATTRIBUTE]=!0,i=x(n,r),[o.default.createElement(l.TAG_NAMES.TITLE,i,e)];var e,n,r,i},toString:function(){return function(e,t,n,r){var i=z(n),o=w(t);return i?"<"+e+" "+l.HELMET_ATTRIBUTE+'="true" '+i+">"+s(o,r)+"</"+e+">":"<"+e+" "+l.HELMET_ATTRIBUTE+'="true">'+s(o,r)+"</"+e+">"}(e,t.title,t.titleAttributes,n)}};case l.ATTRIBUTE_NAMES.BODY:case l.ATTRIBUTE_NAMES.HTML:return{toComponent:function(){return x(t)},toString:function(){return z(t)}};default:return{toComponent:function(){return function(e,t){return t.map((function(t,n){var r,i=((r={key:n})[l.HELMET_ATTRIBUTE]=!0,r);return Object.keys(t).forEach((function(e){var n=l.REACT_TAG_MAP[e]||e;if(n===l.TAG_PROPERTIES.INNER_HTML||n===l.TAG_PROPERTIES.CSS_TEXT){var r=t.innerHTML||t.cssText;i.dangerouslySetInnerHTML={__html:r}}else i[n]=t[e]})),o.default.createElement(e,i)}))}(e,t)},toString:function(){return function(e,t,n){return t.reduce((function(t,r){var i=Object.keys(r).filter((function(e){return!(e===l.TAG_PROPERTIES.INNER_HTML||e===l.TAG_PROPERTIES.CSS_TEXT)})).reduce((function(e,t){var i=void 0===r[t]?t:t+'="'+s(r[t],n)+'"';return e?e+" "+i:i}),""),o=r.innerHTML||r.cssText||"",a=-1===l.SELF_CLOSING_TAGS.indexOf(e);return t+"<"+e+" "+l.HELMET_ATTRIBUTE+'="true" '+i+(a?"/>":">"+o+"</"+e+">")}),"")}(e,t,n)}}}};t.convertReactPropstoHtmlAttributes=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return Object.keys(e).reduce((function(t,n){return t[l.HTML_TAG_MAP[n]||n]=e[n],t}),t)},t.handleClientStateChange=function(e){I&&m(I),e.defer?I=D((function(){h(e,(function(){I=null}))})):(h(e),I=null)},t.mapStateOnServer=function(e){var t=e.baseTag,n=e.bodyAttributes,r=e.encode,i=e.htmlAttributes,o=e.linkTags,a=e.metaTags,u=e.noscriptTags,c=e.scriptTags,s=e.styleTags,f=e.title,d=void 0===f?"":f,M=e.titleAttributes;return{base:O(l.TAG_NAMES.BASE,t,r),bodyAttributes:O(l.ATTRIBUTE_NAMES.BODY,n,r),htmlAttributes:O(l.ATTRIBUTE_NAMES.HTML,i,r),link:O(l.TAG_NAMES.LINK,o,r),meta:O(l.TAG_NAMES.META,a,r),noscript:O(l.TAG_NAMES.NOSCRIPT,u,r),script:O(l.TAG_NAMES.SCRIPT,c,r),style:O(l.TAG_NAMES.STYLE,s,r),title:O(l.TAG_NAMES.TITLE,{title:d,titleAttributes:M},r)}},t.reducePropsToState=function(e){return{baseTag:g([l.TAG_PROPERTIES.HREF],e),bodyAttributes:M(l.ATTRIBUTE_NAMES.BODY,e),defer:y(e,l.HELMET_PROPS.DEFER),encode:y(e,l.HELMET_PROPS.ENCODE_SPECIAL_CHARACTERS),htmlAttributes:M(l.ATTRIBUTE_NAMES.HTML,e),linkTags:p(l.TAG_NAMES.LINK,[l.TAG_PROPERTIES.REL,l.TAG_PROPERTIES.HREF],e),metaTags:p(l.TAG_NAMES.META,[l.TAG_PROPERTIES.NAME,l.TAG_PROPERTIES.CHARSET,l.TAG_PROPERTIES.HTTPEQUIV,l.TAG_PROPERTIES.PROPERTY,l.TAG_PROPERTIES.ITEM_PROP],e),noscriptTags:p(l.TAG_NAMES.NOSCRIPT,[l.TAG_PROPERTIES.INNER_HTML],e),onChangeClientState:d(e),scriptTags:p(l.TAG_NAMES.SCRIPT,[l.TAG_PROPERTIES.SRC,l.TAG_PROPERTIES.INNER_HTML],e),styleTags:p(l.TAG_NAMES.STYLE,[l.TAG_PROPERTIES.CSS_TEXT],e),title:f(e),titleAttributes:M(l.ATTRIBUTE_NAMES.TITLE,e)}},t.requestAnimationFrame=D,t.warn=j}).call(this,n("yLpj"))},viRO:function(e,t,n){"use strict";n("2Spj"),n("a1Th"),n("h7Nl"),n("rGqo"),n("yt8O"),n("Btvt"),n("RW0V"),n("LK8F"),n("pIFo"),n("rE2o"),n("ioFf");var r=n("MgzW"),i="function"==typeof Symbol&&Symbol.for,o=i?Symbol.for("react.element"):60103,a=i?Symbol.for("react.portal"):60106,l=i?Symbol.for("react.fragment"):60107,u=i?Symbol.for("react.strict_mode"):60108,c=i?Symbol.for("react.profiler"):60114,s=i?Symbol.for("react.provider"):60109,f=i?Symbol.for("react.context"):60110,d=i?Symbol.for("react.forward_ref"):60112,M=i?Symbol.for("react.suspense"):60113;i&&Symbol.for("react.suspense_list");var g=i?Symbol.for("react.memo"):60115,p=i?Symbol.for("react.lazy"):60116;i&&Symbol.for("react.fundamental"),i&&Symbol.for("react.responder"),i&&Symbol.for("react.scope");var y="function"==typeof Symbol&&Symbol.iterator;function N(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n<arguments.length;n++)t+="&args[]="+encodeURIComponent(arguments[n]);return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}var T={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},D={};function m(e,t,n){this.props=e,this.context=t,this.refs=D,this.updater=n||T}function j(){}function I(e,t,n){this.props=e,this.context=t,this.refs=D,this.updater=n||T}m.prototype.isReactComponent={},m.prototype.setState=function(e,t){if("object"!=typeof e&&"function"!=typeof e&&null!=e)throw Error(N(85));this.updater.enqueueSetState(this,e,t,"setState")},m.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")},j.prototype=m.prototype;var h=I.prototype=new j;h.constructor=I,r(h,m.prototype),h.isPureReactComponent=!0;var w={current:null},E={current:null},b=Object.prototype.hasOwnProperty,L={key:!0,ref:!0,__self:!0,__source:!0};function z(e,t,n){var r,i={},a=null,l=null;if(null!=t)for(r in void 0!==t.ref&&(l=t.ref),void 0!==t.key&&(a=""+t.key),t)b.call(t,r)&&!L.hasOwnProperty(r)&&(i[r]=t[r]);var u=arguments.length-2;if(1===u)i.children=n;else if(1<u){for(var c=Array(u),s=0;s<u;s++)c[s]=arguments[s+2];i.children=c}if(e&&e.defaultProps)for(r in u=e.defaultProps)void 0===i[r]&&(i[r]=u[r]);return{$$typeof:o,type:e,key:a,ref:l,props:i,_owner:E.current}}function x(e){return"object"==typeof e&&null!==e&&e.$$typeof===o}var O=/\/+/g,v=[];function A(e,t,n,r){if(v.length){var i=v.pop();return i.result=e,i.keyPrefix=t,i.func=n,i.context=r,i.count=0,i}return{result:e,keyPrefix:t,func:n,context:r,count:0}}function C(e){e.result=null,e.keyPrefix=null,e.func=null,e.context=null,e.count=0,10>v.length&&v.push(e)}function S(e,t,n){return null==e?0:function e(t,n,r,i){var l=typeof t;"undefined"!==l&&"boolean"!==l||(t=null);var u=!1;if(null===t)u=!0;else switch(l){case"string":case"number":u=!0;break;case"object":switch(t.$$typeof){case o:case a:u=!0}}if(u)return r(i,t,""===n?"."+k(t,0):n),1;if(u=0,n=""===n?".":n+":",Array.isArray(t))for(var c=0;c<t.length;c++){var s=n+k(l=t[c],c);u+=e(l,s,r,i)}else if(null===t||"object"!=typeof t?s=null:s="function"==typeof(s=y&&t[y]||t["@@iterator"])?s:null,"function"==typeof s)for(t=s.call(t),c=0;!(l=t.next()).done;)u+=e(l=l.value,s=n+k(l,c++),r,i);else if("object"===l)throw r=""+t,Error(N(31,"[object Object]"===r?"object with keys {"+Object.keys(t).join(", ")+"}":r,""));return u}(e,"",t,n)}function k(e,t){return"object"==typeof e&&null!==e&&null!=e.key?function(e){var t={"=":"=0",":":"=2"};return"$"+(""+e).replace(/[=:]/g,(function(e){return t[e]}))}(e.key):t.toString(36)}function U(e,t){e.func.call(e.context,t,e.count++)}function P(e,t,n){var r=e.result,i=e.keyPrefix;e=e.func.call(e.context,t,e.count++),Array.isArray(e)?Q(e,r,n,(function(e){return e})):null!=e&&(x(e)&&(e=function(e,t){return{$$typeof:o,type:e.type,key:t,ref:e.ref,props:e.props,_owner:e._owner}}(e,i+(!e.key||t&&t.key===e.key?"":(""+e.key).replace(O,"$&/")+"/")+n)),r.push(e))}function Q(e,t,n,r,i){var o="";null!=n&&(o=(""+n).replace(O,"$&/")+"/"),S(e,P,t=A(t,o,r,i)),C(t)}function Y(){var e=w.current;if(null===e)throw Error(N(321));return e}var _={Children:{map:function(e,t,n){if(null==e)return e;var r=[];return Q(e,r,null,t,n),r},forEach:function(e,t,n){if(null==e)return e;S(e,U,t=A(null,null,t,n)),C(t)},count:function(e){return S(e,(function(){return null}),null)},toArray:function(e){var t=[];return Q(e,t,null,(function(e){return e})),t},only:function(e){if(!x(e))throw Error(N(143));return e}},createRef:function(){return{current:null}},Component:m,PureComponent:I,createContext:function(e,t){return void 0===t&&(t=null),(e={$$typeof:f,_calculateChangedBits:t,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null}).Provider={$$typeof:s,_context:e},e.Consumer=e},forwardRef:function(e){return{$$typeof:d,render:e}},lazy:function(e){return{$$typeof:p,_ctor:e,_status:-1,_result:null}},memo:function(e,t){return{$$typeof:g,type:e,compare:void 0===t?null:t}},useCallback:function(e,t){return Y().useCallback(e,t)},useContext:function(e,t){return Y().useContext(e,t)},useEffect:function(e,t){return Y().useEffect(e,t)},useImperativeHandle:function(e,t,n){return Y().useImperativeHandle(e,t,n)},useDebugValue:function(){},useLayoutEffect:function(e,t){return Y().useLayoutEffect(e,t)},useMemo:function(e,t){return Y().useMemo(e,t)},useReducer:function(e,t,n){return Y().useReducer(e,t,n)},useRef:function(e){return Y().useRef(e)},useState:function(e){return Y().useState(e)},Fragment:l,Profiler:c,StrictMode:u,Suspense:M,createElement:z,cloneElement:function(e,t,n){if(null==e)throw Error(N(267,e));var i=r({},e.props),a=e.key,l=e.ref,u=e._owner;if(null!=t){if(void 0!==t.ref&&(l=t.ref,u=E.current),void 0!==t.key&&(a=""+t.key),e.type&&e.type.defaultProps)var c=e.type.defaultProps;for(s in t)b.call(t,s)&&!L.hasOwnProperty(s)&&(i[s]=void 0===t[s]&&void 0!==c?c[s]:t[s])}var s=arguments.length-2;if(1===s)i.children=n;else if(1<s){c=Array(s);for(var f=0;f<s;f++)c[f]=arguments[f+2];i.children=c}return{$$typeof:o,type:e.type,key:a,ref:l,props:i,_owner:u}},createFactory:function(e){var t=z.bind(null,e);return t.type=e,t},isValidElement:x,version:"16.12.0",__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:{ReactCurrentDispatcher:w,ReactCurrentBatchConfig:{suspense:null},ReactCurrentOwner:E,IsSomeRendererActing:{current:!1},assign:r}},R={default:_},B=R&&_||R;e.exports=B.default||B},yLpj:function(e,t){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(r){"object"==typeof window&&(n=window)}e.exports=n},yl30:function(e,t,n){"use strict";n("wCsR"),n("25dN"),n("Tze0"),n("RW0V"),n("T39b"),n("EK0E"),n("2Spj"),n("eM6i"),n("a1Th"),n("h7Nl"),n("HAE/"),n("KKXr"),n("rGqo"),n("yt8O"),n("Btvt"),n("XfO3"),n("9AAn"),n("pIFo"),n("f3/d"),n("rE2o"),n("ioFf"),n("8+KV"),n("LK8F"),n("V+eJ");var r=n("q1tI"),i=n("MgzW"),o=n("QCnb");function a(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n<arguments.length;n++)t+="&args[]="+encodeURIComponent(arguments[n]);return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}if(!r)throw Error(a(227));var l=null,u={};function c(){if(l)for(var e in u){var t=u[e],n=l.indexOf(e);if(!(-1<n))throw Error(a(96,e));if(!f[n]){if(!t.extractEvents)throw Error(a(97,e));for(var r in f[n]=t,n=t.eventTypes){var i=void 0,o=n[r],c=t,M=r;if(d.hasOwnProperty(M))throw Error(a(99,M));d[M]=o;var g=o.phasedRegistrationNames;if(g){for(i in g)g.hasOwnProperty(i)&&s(g[i],c,M);i=!0}else o.registrationName?(s(o.registrationName,c,M),i=!0):i=!1;if(!i)throw Error(a(98,r,e))}}}}function s(e,t,n){if(M[e])throw Error(a(100,e));M[e]=t,g[e]=t.eventTypes[n].dependencies}var f=[],d={},M={},g={};function p(e,t,n,r,i,o,a,l,u){var c=Array.prototype.slice.call(arguments,3);try{t.apply(n,c)}catch(s){this.onError(s)}}var y=!1,N=null,T=!1,D=null,m={onError:function(e){y=!0,N=e}};function j(e,t,n,r,i,o,a,l,u){y=!1,N=null,p.apply(m,arguments)}var I=null,h=null,w=null;function E(e,t,n){var r=e.type||"unknown-event";e.currentTarget=w(n),function(e,t,n,r,i,o,l,u,c){if(j.apply(this,arguments),y){if(!y)throw Error(a(198));var s=N;y=!1,N=null,T||(T=!0,D=s)}}(r,t,void 0,e),e.currentTarget=null}function b(e,t){if(null==t)throw Error(a(30));return null==e?t:Array.isArray(e)?Array.isArray(t)?(e.push.apply(e,t),e):(e.push(t),e):Array.isArray(t)?[e].concat(t):[e,t]}function L(e,t,n){Array.isArray(e)?e.forEach(t,n):e&&t.call(n,e)}var z=null;function x(e){if(e){var t=e._dispatchListeners,n=e._dispatchInstances;if(Array.isArray(t))for(var r=0;r<t.length&&!e.isPropagationStopped();r++)E(e,t[r],n[r]);else t&&E(e,t,n);e._dispatchListeners=null,e._dispatchInstances=null,e.isPersistent()||e.constructor.release(e)}}function O(e){if(null!==e&&(z=b(z,e)),e=z,z=null,e){if(L(e,x),z)throw Error(a(95));if(T)throw e=D,T=!1,D=null,e}}var v={injectEventPluginOrder:function(e){if(l)throw Error(a(101));l=Array.prototype.slice.call(e),c()},injectEventPluginsByName:function(e){var t,n=!1;for(t in e)if(e.hasOwnProperty(t)){var r=e[t];if(!u.hasOwnProperty(t)||u[t]!==r){if(u[t])throw Error(a(102,t));u[t]=r,n=!0}}n&&c()}};function A(e,t){var n=e.stateNode;if(!n)return null;var r=I(n);if(!r)return null;n=r[t];e:switch(t){case"onClick":case"onClickCapture":case"onDoubleClick":case"onDoubleClickCapture":case"onMouseDown":case"onMouseDownCapture":case"onMouseMove":case"onMouseMoveCapture":case"onMouseUp":case"onMouseUpCapture":(r=!r.disabled)||(r=!("button"===(e=e.type)||"input"===e||"select"===e||"textarea"===e)),e=!r;break e;default:e=!1}if(e)return null;if(n&&"function"!=typeof n)throw Error(a(231,t,typeof n));return n}var C=r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;C.hasOwnProperty("ReactCurrentDispatcher")||(C.ReactCurrentDispatcher={current:null}),C.hasOwnProperty("ReactCurrentBatchConfig")||(C.ReactCurrentBatchConfig={suspense:null});var S=/^(.*)[\\\/]/,k="function"==typeof Symbol&&Symbol.for,U=k?Symbol.for("react.element"):60103,P=k?Symbol.for("react.portal"):60106,Q=k?Symbol.for("react.fragment"):60107,Y=k?Symbol.for("react.strict_mode"):60108,_=k?Symbol.for("react.profiler"):60114,R=k?Symbol.for("react.provider"):60109,B=k?Symbol.for("react.context"):60110,G=k?Symbol.for("react.concurrent_mode"):60111,F=k?Symbol.for("react.forward_ref"):60112,W=k?Symbol.for("react.suspense"):60113,H=k?Symbol.for("react.suspense_list"):60120,Z=k?Symbol.for("react.memo"):60115,V=k?Symbol.for("react.lazy"):60116;k&&Symbol.for("react.fundamental"),k&&Symbol.for("react.responder"),k&&Symbol.for("react.scope");var X="function"==typeof Symbol&&Symbol.iterator;function K(e){return null===e||"object"!=typeof e?null:"function"==typeof(e=X&&e[X]||e["@@iterator"])?e:null}function J(e){if(null==e)return null;if("function"==typeof e)return e.displayName||e.name||null;if("string"==typeof e)return e;switch(e){case Q:return"Fragment";case P:return"Portal";case _:return"Profiler";case Y:return"StrictMode";case W:return"Suspense";case H:return"SuspenseList"}if("object"==typeof e)switch(e.$$typeof){case B:return"Context.Consumer";case R:return"Context.Provider";case F:var t=e.render;return t=t.displayName||t.name||"",e.displayName||(""!==t?"ForwardRef("+t+")":"ForwardRef");case Z:return J(e.type);case V:if(e=1===e._status?e._result:null)return J(e)}return null}function q(e){var t="";do{e:switch(e.tag){case 3:case 4:case 6:case 7:case 10:case 9:var n="";break e;default:var r=e._debugOwner,i=e._debugSource,o=J(e.type);n=null,r&&(n=J(r.type)),r=o,o="",i?o=" (at "+i.fileName.replace(S,"")+":"+i.lineNumber+")":n&&(o=" (created by "+n+")"),n="\n    in "+(r||"Unknown")+o}t+=n,e=e.return}while(e);return t}var $=!("undefined"==typeof window||void 0===window.document||void 0===window.document.createElement),ee=null,te=null,ne=null;function re(e){if(e=h(e)){if("function"!=typeof ee)throw Error(a(280));var t=I(e.stateNode);ee(e.stateNode,e.type,t)}}function ie(e){te?ne?ne.push(e):ne=[e]:te=e}function oe(){if(te){var e=te,t=ne;if(ne=te=null,re(e),t)for(e=0;e<t.length;e++)re(t[e])}}function ae(e,t){return e(t)}function le(e,t,n,r){return e(t,n,r)}function ue(){}var ce=ae,se=!1,fe=!1;function de(){null===te&&null===ne||(ue(),oe())}new Map;var Me=/^[: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][: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\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,ge=Object.prototype.hasOwnProperty,pe={},ye={};function Ne(e,t,n,r,i,o){this.acceptsBooleans=2===t||3===t||4===t,this.attributeName=r,this.attributeNamespace=i,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=o}var Te={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach((function(e){Te[e]=new Ne(e,0,!1,e,null,!1)})),[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach((function(e){var t=e[0];Te[t]=new Ne(t,1,!1,e[1],null,!1)})),["contentEditable","draggable","spellCheck","value"].forEach((function(e){Te[e]=new Ne(e,2,!1,e.toLowerCase(),null,!1)})),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach((function(e){Te[e]=new Ne(e,2,!1,e,null,!1)})),"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach((function(e){Te[e]=new Ne(e,3,!1,e.toLowerCase(),null,!1)})),["checked","multiple","muted","selected"].forEach((function(e){Te[e]=new Ne(e,3,!0,e,null,!1)})),["capture","download"].forEach((function(e){Te[e]=new Ne(e,4,!1,e,null,!1)})),["cols","rows","size","span"].forEach((function(e){Te[e]=new Ne(e,6,!1,e,null,!1)})),["rowSpan","start"].forEach((function(e){Te[e]=new Ne(e,5,!1,e.toLowerCase(),null,!1)}));var De=/[\-:]([a-z])/g;function me(e){return e[1].toUpperCase()}function je(e){switch(typeof e){case"boolean":case"number":case"object":case"string":case"undefined":return e;default:return""}}function Ie(e,t,n,r){var i=Te.hasOwnProperty(t)?Te[t]:null;(null!==i?0===i.type:!r&&(2<t.length&&("o"===t[0]||"O"===t[0])&&("n"===t[1]||"N"===t[1])))||(function(e,t,n,r){if(null==t||function(e,t,n,r){if(null!==n&&0===n.type)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return!r&&(null!==n?!n.acceptsBooleans:"data-"!==(e=e.toLowerCase().slice(0,5))&&"aria-"!==e);default:return!1}}(e,t,n,r))return!0;if(r)return!1;if(null!==n)switch(n.type){case 3:return!t;case 4:return!1===t;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}(t,n,i,r)&&(n=null),r||null===i?function(e){return!!ge.call(ye,e)||!ge.call(pe,e)&&(Me.test(e)?ye[e]=!0:(pe[e]=!0,!1))}(t)&&(null===n?e.removeAttribute(t):e.setAttribute(t,""+n)):i.mustUseProperty?e[i.propertyName]=null===n?3!==i.type&&"":n:(t=i.attributeName,r=i.attributeNamespace,null===n?e.removeAttribute(t):(n=3===(i=i.type)||4===i&&!0===n?"":""+n,r?e.setAttributeNS(r,t,n):e.setAttribute(t,n))))}function he(e){var t=e.type;return(e=e.nodeName)&&"input"===e.toLowerCase()&&("checkbox"===t||"radio"===t)}function we(e){e._valueTracker||(e._valueTracker=function(e){var t=he(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),r=""+e[t];if(!e.hasOwnProperty(t)&&void 0!==n&&"function"==typeof n.get&&"function"==typeof n.set){var i=n.get,o=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return i.call(this)},set:function(e){r=""+e,o.call(this,e)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return r},setValue:function(e){r=""+e},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}(e))}function Ee(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=he(e)?e.checked?"true":"false":e.value),(e=r)!==n&&(t.setValue(e),!0)}function be(e,t){var n=t.checked;return i({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=n?n:e._wrapperState.initialChecked})}function Le(e,t){var n=null==t.defaultValue?"":t.defaultValue,r=null!=t.checked?t.checked:t.defaultChecked;n=je(null!=t.value?t.value:n),e._wrapperState={initialChecked:r,initialValue:n,controlled:"checkbox"===t.type||"radio"===t.type?null!=t.checked:null!=t.value}}function ze(e,t){null!=(t=t.checked)&&Ie(e,"checked",t,!1)}function xe(e,t){ze(e,t);var n=je(t.value),r=t.type;if(null!=n)"number"===r?(0===n&&""===e.value||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if("submit"===r||"reset"===r)return void e.removeAttribute("value");t.hasOwnProperty("value")?ve(e,t.type,n):t.hasOwnProperty("defaultValue")&&ve(e,t.type,je(t.defaultValue)),null==t.checked&&null!=t.defaultChecked&&(e.defaultChecked=!!t.defaultChecked)}function Oe(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var r=t.type;if(!("submit"!==r&&"reset"!==r||void 0!==t.value&&null!==t.value))return;t=""+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}""!==(n=e.name)&&(e.name=""),e.defaultChecked=!e.defaultChecked,e.defaultChecked=!!e._wrapperState.initialChecked,""!==n&&(e.name=n)}function ve(e,t,n){"number"===t&&e.ownerDocument.activeElement===e||(null==n?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}function Ae(e,t){return e=i({children:void 0},t),(t=function(e){var t="";return r.Children.forEach(e,(function(e){null!=e&&(t+=e)})),t}(t.children))&&(e.children=t),e}function Ce(e,t,n,r){if(e=e.options,t){t={};for(var i=0;i<n.length;i++)t["$"+n[i]]=!0;for(n=0;n<e.length;n++)i=t.hasOwnProperty("$"+e[n].value),e[n].selected!==i&&(e[n].selected=i),i&&r&&(e[n].defaultSelected=!0)}else{for(n=""+je(n),t=null,i=0;i<e.length;i++){if(e[i].value===n)return e[i].selected=!0,void(r&&(e[i].defaultSelected=!0));null!==t||e[i].disabled||(t=e[i])}null!==t&&(t.selected=!0)}}function Se(e,t){if(null!=t.dangerouslySetInnerHTML)throw Error(a(91));return i({},t,{value:void 0,defaultValue:void 0,children:""+e._wrapperState.initialValue})}function ke(e,t){var n=t.value;if(null==n){if(n=t.defaultValue,null!=(t=t.children)){if(null!=n)throw Error(a(92));if(Array.isArray(t)){if(!(1>=t.length))throw Error(a(93));t=t[0]}n=t}null==n&&(n="")}e._wrapperState={initialValue:je(n)}}function Ue(e,t){var n=je(t.value),r=je(t.defaultValue);null!=n&&((n=""+n)!==e.value&&(e.value=n),null==t.defaultValue&&e.defaultValue!==n&&(e.defaultValue=n)),null!=r&&(e.defaultValue=""+r)}function Pe(e){var t=e.textContent;t===e._wrapperState.initialValue&&""!==t&&null!==t&&(e.value=t)}"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".split(" ").forEach((function(e){var t=e.replace(De,me);Te[t]=new Ne(t,1,!1,e,null,!1)})),"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach((function(e){var t=e.replace(De,me);Te[t]=new Ne(t,1,!1,e,"http://www.w3.org/1999/xlink",!1)})),["xml:base","xml:lang","xml:space"].forEach((function(e){var t=e.replace(De,me);Te[t]=new Ne(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1)})),["tabIndex","crossOrigin"].forEach((function(e){Te[e]=new Ne(e,1,!1,e.toLowerCase(),null,!1)})),Te.xlinkHref=new Ne("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0),["src","href","action","formAction"].forEach((function(e){Te[e]=new Ne(e,1,!1,e.toLowerCase(),null,!0)}));var Qe="http://www.w3.org/1999/xhtml",Ye="http://www.w3.org/2000/svg";function _e(e){switch(e){case"svg":return"http://www.w3.org/2000/svg";case"math":return"http://www.w3.org/1998/Math/MathML";default:return"http://www.w3.org/1999/xhtml"}}function Re(e,t){return null==e||"http://www.w3.org/1999/xhtml"===e?_e(t):"http://www.w3.org/2000/svg"===e&&"foreignObject"===t?"http://www.w3.org/1999/xhtml":e}var Be,Ge=function(e){return"undefined"!=typeof MSApp&&MSApp.execUnsafeLocalFunction?function(t,n,r,i){MSApp.execUnsafeLocalFunction((function(){return e(t,n)}))}:e}((function(e,t){if(e.namespaceURI!==Ye||"innerHTML"in e)e.innerHTML=t;else{for((Be=Be||document.createElement("div")).innerHTML="<svg>"+t.valueOf().toString()+"</svg>",t=Be.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}}));function Fe(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&3===n.nodeType)return void(n.nodeValue=t)}e.textContent=t}function We(e,t){var n={};return n[e.toLowerCase()]=t.toLowerCase(),n["Webkit"+e]="webkit"+t,n["Moz"+e]="moz"+t,n}var He={animationend:We("Animation","AnimationEnd"),animationiteration:We("Animation","AnimationIteration"),animationstart:We("Animation","AnimationStart"),transitionend:We("Transition","TransitionEnd")},Ze={},Ve={};function Xe(e){if(Ze[e])return Ze[e];if(!He[e])return e;var t,n=He[e];for(t in n)if(n.hasOwnProperty(t)&&t in Ve)return Ze[e]=n[t];return e}$&&(Ve=document.createElement("div").style,"AnimationEvent"in window||(delete He.animationend.animation,delete He.animationiteration.animation,delete He.animationstart.animation),"TransitionEvent"in window||delete He.transitionend.transition);var Ke=Xe("animationend"),Je=Xe("animationiteration"),qe=Xe("animationstart"),$e=Xe("transitionend"),et="abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange seeked seeking stalled suspend timeupdate volumechange waiting".split(" ");function tt(e){var t=e,n=e;if(e.alternate)for(;t.return;)t=t.return;else{e=t;do{0!=(1026&(t=e).effectTag)&&(n=t.return),e=t.return}while(e)}return 3===t.tag?n:null}function nt(e){if(13===e.tag){var t=e.memoizedState;if(null===t&&(null!==(e=e.alternate)&&(t=e.memoizedState)),null!==t)return t.dehydrated}return null}function rt(e){if(tt(e)!==e)throw Error(a(188))}function it(e){if(!(e=function(e){var t=e.alternate;if(!t){if(null===(t=tt(e)))throw Error(a(188));return t!==e?null:e}for(var n=e,r=t;;){var i=n.return;if(null===i)break;var o=i.alternate;if(null===o){if(null!==(r=i.return)){n=r;continue}break}if(i.child===o.child){for(o=i.child;o;){if(o===n)return rt(i),e;if(o===r)return rt(i),t;o=o.sibling}throw Error(a(188))}if(n.return!==r.return)n=i,r=o;else{for(var l=!1,u=i.child;u;){if(u===n){l=!0,n=i,r=o;break}if(u===r){l=!0,r=i,n=o;break}u=u.sibling}if(!l){for(u=o.child;u;){if(u===n){l=!0,n=o,r=i;break}if(u===r){l=!0,r=o,n=i;break}u=u.sibling}if(!l)throw Error(a(189))}}if(n.alternate!==r)throw Error(a(190))}if(3!==n.tag)throw Error(a(188));return n.stateNode.current===n?e:t}(e)))return null;for(var t=e;;){if(5===t.tag||6===t.tag)return t;if(t.child)t.child.return=t,t=t.child;else{if(t===e)break;for(;!t.sibling;){if(!t.return||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}}return null}var ot,at,lt,ut=!1,ct=[],st=null,ft=null,dt=null,Mt=new Map,gt=new Map,pt=[],yt="mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput close cancel copy cut paste click change contextmenu reset submit".split(" "),Nt="focus blur dragenter dragleave mouseover mouseout pointerover pointerout gotpointercapture lostpointercapture".split(" ");function Tt(e,t,n,r){return{blockedOn:e,topLevelType:t,eventSystemFlags:32|n,nativeEvent:r}}function Dt(e,t){switch(e){case"focus":case"blur":st=null;break;case"dragenter":case"dragleave":ft=null;break;case"mouseover":case"mouseout":dt=null;break;case"pointerover":case"pointerout":Mt.delete(t.pointerId);break;case"gotpointercapture":case"lostpointercapture":gt.delete(t.pointerId)}}function mt(e,t,n,r,i){return null===e||e.nativeEvent!==i?(e=Tt(t,n,r,i),null!==t&&(null!==(t=cr(t))&&at(t)),e):(e.eventSystemFlags|=r,e)}function jt(e){var t=ur(e.target);if(null!==t){var n=tt(t);if(null!==n)if(13===(t=n.tag)){if(null!==(t=nt(n)))return e.blockedOn=t,void o.unstable_runWithPriority(e.priority,(function(){lt(n)}))}else if(3===t&&n.stateNode.hydrate)return void(e.blockedOn=3===n.tag?n.stateNode.containerInfo:null)}e.blockedOn=null}function It(e){if(null!==e.blockedOn)return!1;var t=vn(e.topLevelType,e.eventSystemFlags,e.nativeEvent);if(null!==t){var n=cr(t);return null!==n&&at(n),e.blockedOn=t,!1}return!0}function ht(e,t,n){It(e)&&n.delete(t)}function wt(){for(ut=!1;0<ct.length;){var e=ct[0];if(null!==e.blockedOn){null!==(e=cr(e.blockedOn))&&ot(e);break}var t=vn(e.topLevelType,e.eventSystemFlags,e.nativeEvent);null!==t?e.blockedOn=t:ct.shift()}null!==st&&It(st)&&(st=null),null!==ft&&It(ft)&&(ft=null),null!==dt&&It(dt)&&(dt=null),Mt.forEach(ht),gt.forEach(ht)}function Et(e,t){e.blockedOn===t&&(e.blockedOn=null,ut||(ut=!0,o.unstable_scheduleCallback(o.unstable_NormalPriority,wt)))}function bt(e){function t(t){return Et(t,e)}if(0<ct.length){Et(ct[0],e);for(var n=1;n<ct.length;n++){var r=ct[n];r.blockedOn===e&&(r.blockedOn=null)}}for(null!==st&&Et(st,e),null!==ft&&Et(ft,e),null!==dt&&Et(dt,e),Mt.forEach(t),gt.forEach(t),n=0;n<pt.length;n++)(r=pt[n]).blockedOn===e&&(r.blockedOn=null);for(;0<pt.length&&null===(n=pt[0]).blockedOn;)jt(n),null===n.blockedOn&&pt.shift()}function Lt(e){return(e=e.target||e.srcElement||window).correspondingUseElement&&(e=e.correspondingUseElement),3===e.nodeType?e.parentNode:e}function zt(e){do{e=e.return}while(e&&5!==e.tag);return e||null}function xt(e,t,n){(t=A(e,n.dispatchConfig.phasedRegistrationNames[t]))&&(n._dispatchListeners=b(n._dispatchListeners,t),n._dispatchInstances=b(n._dispatchInstances,e))}function Ot(e){if(e&&e.dispatchConfig.phasedRegistrationNames){for(var t=e._targetInst,n=[];t;)n.push(t),t=zt(t);for(t=n.length;0<t--;)xt(n[t],"captured",e);for(t=0;t<n.length;t++)xt(n[t],"bubbled",e)}}function vt(e,t,n){e&&n&&n.dispatchConfig.registrationName&&(t=A(e,n.dispatchConfig.registrationName))&&(n._dispatchListeners=b(n._dispatchListeners,t),n._dispatchInstances=b(n._dispatchInstances,e))}function At(e){e&&e.dispatchConfig.registrationName&&vt(e._targetInst,null,e)}function Ct(e){L(e,Ot)}function St(){return!0}function kt(){return!1}function Ut(e,t,n,r){for(var i in this.dispatchConfig=e,this._targetInst=t,this.nativeEvent=n,e=this.constructor.Interface)e.hasOwnProperty(i)&&((t=e[i])?this[i]=t(n):"target"===i?this.target=r:this[i]=n[i]);return this.isDefaultPrevented=(null!=n.defaultPrevented?n.defaultPrevented:!1===n.returnValue)?St:kt,this.isPropagationStopped=kt,this}function Pt(e,t,n,r){if(this.eventPool.length){var i=this.eventPool.pop();return this.call(i,e,t,n,r),i}return new this(e,t,n,r)}function Qt(e){if(!(e instanceof this))throw Error(a(279));e.destructor(),10>this.eventPool.length&&this.eventPool.push(e)}function Yt(e){e.eventPool=[],e.getPooled=Pt,e.release=Qt}i(Ut.prototype,{preventDefault:function(){this.defaultPrevented=!0;var e=this.nativeEvent;e&&(e.preventDefault?e.preventDefault():"unknown"!=typeof e.returnValue&&(e.returnValue=!1),this.isDefaultPrevented=St)},stopPropagation:function(){var e=this.nativeEvent;e&&(e.stopPropagation?e.stopPropagation():"unknown"!=typeof e.cancelBubble&&(e.cancelBubble=!0),this.isPropagationStopped=St)},persist:function(){this.isPersistent=St},isPersistent:kt,destructor:function(){var e,t=this.constructor.Interface;for(e in t)this[e]=null;this.nativeEvent=this._targetInst=this.dispatchConfig=null,this.isPropagationStopped=this.isDefaultPrevented=kt,this._dispatchInstances=this._dispatchListeners=null}}),Ut.Interface={type:null,target:null,currentTarget:function(){return null},eventPhase:null,bubbles:null,cancelable:null,timeStamp:function(e){return e.timeStamp||Date.now()},defaultPrevented:null,isTrusted:null},Ut.extend=function(e){function t(){}function n(){return r.apply(this,arguments)}var r=this;t.prototype=r.prototype;var o=new t;return i(o,n.prototype),n.prototype=o,n.prototype.constructor=n,n.Interface=i({},r.Interface,e),n.extend=r.extend,Yt(n),n},Yt(Ut);var _t=Ut.extend({animationName:null,elapsedTime:null,pseudoElement:null}),Rt=Ut.extend({clipboardData:function(e){return"clipboardData"in e?e.clipboardData:window.clipboardData}}),Bt=Ut.extend({view:null,detail:null}),Gt=Bt.extend({relatedTarget:null});function Ft(e){var t=e.keyCode;return"charCode"in e?0===(e=e.charCode)&&13===t&&(e=13):e=t,10===e&&(e=13),32<=e||13===e?e:0}var Wt={Esc:"Escape",Spacebar:" ",Left:"ArrowLeft",Up:"ArrowUp",Right:"ArrowRight",Down:"ArrowDown",Del:"Delete",Win:"OS",Menu:"ContextMenu",Apps:"ContextMenu",Scroll:"ScrollLock",MozPrintableKey:"Unidentified"},Ht={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"},Zt={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};function Vt(e){var t=this.nativeEvent;return t.getModifierState?t.getModifierState(e):!!(e=Zt[e])&&!!t[e]}function Xt(){return Vt}for(var Kt=Bt.extend({key:function(e){if(e.key){var t=Wt[e.key]||e.key;if("Unidentified"!==t)return t}return"keypress"===e.type?13===(e=Ft(e))?"Enter":String.fromCharCode(e):"keydown"===e.type||"keyup"===e.type?Ht[e.keyCode]||"Unidentified":""},location:null,ctrlKey:null,shiftKey:null,altKey:null,metaKey:null,repeat:null,locale:null,getModifierState:Xt,charCode:function(e){return"keypress"===e.type?Ft(e):0},keyCode:function(e){return"keydown"===e.type||"keyup"===e.type?e.keyCode:0},which:function(e){return"keypress"===e.type?Ft(e):"keydown"===e.type||"keyup"===e.type?e.keyCode:0}}),Jt=0,qt=0,$t=!1,en=!1,tn=Bt.extend({screenX:null,screenY:null,clientX:null,clientY:null,pageX:null,pageY:null,ctrlKey:null,shiftKey:null,altKey:null,metaKey:null,getModifierState:Xt,button:null,buttons:null,relatedTarget:function(e){return e.relatedTarget||(e.fromElement===e.srcElement?e.toElement:e.fromElement)},movementX:function(e){if("movementX"in e)return e.movementX;var t=Jt;return Jt=e.screenX,$t?"mousemove"===e.type?e.screenX-t:0:($t=!0,0)},movementY:function(e){if("movementY"in e)return e.movementY;var t=qt;return qt=e.screenY,en?"mousemove"===e.type?e.screenY-t:0:(en=!0,0)}}),nn=tn.extend({pointerId:null,width:null,height:null,pressure:null,tangentialPressure:null,tiltX:null,tiltY:null,twist:null,pointerType:null,isPrimary:null}),rn=tn.extend({dataTransfer:null}),on=Bt.extend({touches:null,targetTouches:null,changedTouches:null,altKey:null,metaKey:null,ctrlKey:null,shiftKey:null,getModifierState:Xt}),an=Ut.extend({propertyName:null,elapsedTime:null,pseudoElement:null}),ln=tn.extend({deltaX:function(e){return"deltaX"in e?e.deltaX:"wheelDeltaX"in e?-e.wheelDeltaX:0},deltaY:function(e){return"deltaY"in e?e.deltaY:"wheelDeltaY"in e?-e.wheelDeltaY:"wheelDelta"in e?-e.wheelDelta:0},deltaZ:null,deltaMode:null}),un=[["blur","blur",0],["cancel","cancel",0],["click","click",0],["close","close",0],["contextmenu","contextMenu",0],["copy","copy",0],["cut","cut",0],["auxclick","auxClick",0],["dblclick","doubleClick",0],["dragend","dragEnd",0],["dragstart","dragStart",0],["drop","drop",0],["focus","focus",0],["input","input",0],["invalid","invalid",0],["keydown","keyDown",0],["keypress","keyPress",0],["keyup","keyUp",0],["mousedown","mouseDown",0],["mouseup","mouseUp",0],["paste","paste",0],["pause","pause",0],["play","play",0],["pointercancel","pointerCancel",0],["pointerdown","pointerDown",0],["pointerup","pointerUp",0],["ratechange","rateChange",0],["reset","reset",0],["seeked","seeked",0],["submit","submit",0],["touchcancel","touchCancel",0],["touchend","touchEnd",0],["touchstart","touchStart",0],["volumechange","volumeChange",0],["drag","drag",1],["dragenter","dragEnter",1],["dragexit","dragExit",1],["dragleave","dragLeave",1],["dragover","dragOver",1],["mousemove","mouseMove",1],["mouseout","mouseOut",1],["mouseover","mouseOver",1],["pointermove","pointerMove",1],["pointerout","pointerOut",1],["pointerover","pointerOver",1],["scroll","scroll",1],["toggle","toggle",1],["touchmove","touchMove",1],["wheel","wheel",1],["abort","abort",2],[Ke,"animationEnd",2],[Je,"animationIteration",2],[qe,"animationStart",2],["canplay","canPlay",2],["canplaythrough","canPlayThrough",2],["durationchange","durationChange",2],["emptied","emptied",2],["encrypted","encrypted",2],["ended","ended",2],["error","error",2],["gotpointercapture","gotPointerCapture",2],["load","load",2],["loadeddata","loadedData",2],["loadedmetadata","loadedMetadata",2],["loadstart","loadStart",2],["lostpointercapture","lostPointerCapture",2],["playing","playing",2],["progress","progress",2],["seeking","seeking",2],["stalled","stalled",2],["suspend","suspend",2],["timeupdate","timeUpdate",2],[$e,"transitionEnd",2],["waiting","waiting",2]],cn={},sn={},fn=0;fn<un.length;fn++){var dn=un[fn],Mn=dn[0],gn=dn[1],pn=dn[2],yn="on"+(gn[0].toUpperCase()+gn.slice(1)),Nn={phasedRegistrationNames:{bubbled:yn,captured:yn+"Capture"},dependencies:[Mn],eventPriority:pn};cn[gn]=Nn,sn[Mn]=Nn}var Tn={eventTypes:cn,getEventPriority:function(e){return void 0!==(e=sn[e])?e.eventPriority:2},extractEvents:function(e,t,n,r){var i=sn[e];if(!i)return null;switch(e){case"keypress":if(0===Ft(n))return null;case"keydown":case"keyup":e=Kt;break;case"blur":case"focus":e=Gt;break;case"click":if(2===n.button)return null;case"auxclick":case"dblclick":case"mousedown":case"mousemove":case"mouseup":case"mouseout":case"mouseover":case"contextmenu":e=tn;break;case"drag":case"dragend":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"dragstart":case"drop":e=rn;break;case"touchcancel":case"touchend":case"touchmove":case"touchstart":e=on;break;case Ke:case Je:case qe:e=_t;break;case $e:e=an;break;case"scroll":e=Bt;break;case"wheel":e=ln;break;case"copy":case"cut":case"paste":e=Rt;break;case"gotpointercapture":case"lostpointercapture":case"pointercancel":case"pointerdown":case"pointermove":case"pointerout":case"pointerover":case"pointerup":e=nn;break;default:e=Ut}return Ct(t=e.getPooled(i,t,n,r)),t}},Dn=o.unstable_UserBlockingPriority,mn=o.unstable_runWithPriority,jn=Tn.getEventPriority,In=[];function hn(e){var t=e.targetInst,n=t;do{if(!n){e.ancestors.push(n);break}var r=n;if(3===r.tag)r=r.stateNode.containerInfo;else{for(;r.return;)r=r.return;r=3!==r.tag?null:r.stateNode.containerInfo}if(!r)break;5!==(t=n.tag)&&6!==t||e.ancestors.push(n),n=ur(r)}while(n);for(n=0;n<e.ancestors.length;n++){t=e.ancestors[n];var i=Lt(e.nativeEvent);r=e.topLevelType;for(var o=e.nativeEvent,a=e.eventSystemFlags,l=null,u=0;u<f.length;u++){var c=f[u];c&&(c=c.extractEvents(r,t,o,i,a))&&(l=b(l,c))}O(l)}}var wn=!0;function En(e,t){bn(t,e,!1)}function bn(e,t,n){switch(jn(t)){case 0:var r=Ln.bind(null,t,1);break;case 1:r=zn.bind(null,t,1);break;default:r=On.bind(null,t,1)}n?e.addEventListener(t,r,!0):e.addEventListener(t,r,!1)}function Ln(e,t,n){se||ue();var r=On,i=se;se=!0;try{le(r,e,t,n)}finally{(se=i)||de()}}function zn(e,t,n){mn(Dn,On.bind(null,e,t,n))}function xn(e,t,n,r){if(In.length){var i=In.pop();i.topLevelType=e,i.eventSystemFlags=t,i.nativeEvent=n,i.targetInst=r,e=i}else e={topLevelType:e,eventSystemFlags:t,nativeEvent:n,targetInst:r,ancestors:[]};try{if(t=hn,n=e,fe)t(n,void 0);else{fe=!0;try{ce(t,n,void 0)}finally{fe=!1,de()}}}finally{e.topLevelType=null,e.nativeEvent=null,e.targetInst=null,e.ancestors.length=0,In.length<10&&In.push(e)}}function On(e,t,n){if(wn)if(0<ct.length&&-1<yt.indexOf(e))e=Tt(null,e,t,n),ct.push(e);else{var r=vn(e,t,n);null===r?Dt(e,n):-1<yt.indexOf(e)?(e=Tt(r,e,t,n),ct.push(e)):function(e,t,n,r){switch(t){case"focus":return st=mt(st,e,t,n,r),!0;case"dragenter":return ft=mt(ft,e,t,n,r),!0;case"mouseover":return dt=mt(dt,e,t,n,r),!0;case"pointerover":var i=r.pointerId;return Mt.set(i,mt(Mt.get(i)||null,e,t,n,r)),!0;case"gotpointercapture":return i=r.pointerId,gt.set(i,mt(gt.get(i)||null,e,t,n,r)),!0}return!1}(r,e,t,n)||(Dt(e,n),xn(e,t,n,null))}}function vn(e,t,n){var r=Lt(n);if(null!==(r=ur(r))){var i=tt(r);if(null===i)r=null;else{var o=i.tag;if(13===o){if(null!==(r=nt(i)))return r;r=null}else if(3===o){if(i.stateNode.hydrate)return 3===i.tag?i.stateNode.containerInfo:null;r=null}else i!==r&&(r=null)}}return xn(e,t,n,r),null}function An(e){if(!$)return!1;var t=(e="on"+e)in document;return t||((t=document.createElement("div")).setAttribute(e,"return;"),t="function"==typeof t[e]),t}var Cn=new("function"==typeof WeakMap?WeakMap:Map);function Sn(e){var t=Cn.get(e);return void 0===t&&(t=new Set,Cn.set(e,t)),t}function kn(e,t,n){if(!n.has(e)){switch(e){case"scroll":bn(t,"scroll",!0);break;case"focus":case"blur":bn(t,"focus",!0),bn(t,"blur",!0),n.add("blur"),n.add("focus");break;case"cancel":case"close":An(e)&&bn(t,e,!0);break;case"invalid":case"submit":case"reset":break;default:-1===et.indexOf(e)&&En(e,t)}n.add(e)}}var Un={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},Pn=["Webkit","ms","Moz","O"];function Qn(e,t,n){return null==t||"boolean"==typeof t||""===t?"":n||"number"!=typeof t||0===t||Un.hasOwnProperty(e)&&Un[e]?(""+t).trim():t+"px"}function Yn(e,t){for(var n in e=e.style,t)if(t.hasOwnProperty(n)){var r=0===n.indexOf("--"),i=Qn(n,t[n],r);"float"===n&&(n="cssFloat"),r?e.setProperty(n,i):e[n]=i}}Object.keys(Un).forEach((function(e){Pn.forEach((function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),Un[t]=Un[e]}))}));var _n=i({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function Rn(e,t){if(t){if(_n[e]&&(null!=t.children||null!=t.dangerouslySetInnerHTML))throw Error(a(137,e,""));if(null!=t.dangerouslySetInnerHTML){if(null!=t.children)throw Error(a(60));if(!("object"==typeof t.dangerouslySetInnerHTML&&"__html"in t.dangerouslySetInnerHTML))throw Error(a(61))}if(null!=t.style&&"object"!=typeof t.style)throw Error(a(62,""))}}function Bn(e,t){if(-1===e.indexOf("-"))return"string"==typeof t.is;switch(e){case"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!1;default:return!0}}function Gn(e,t){var n=Sn(e=9===e.nodeType||11===e.nodeType?e:e.ownerDocument);t=g[t];for(var r=0;r<t.length;r++)kn(t[r],e,n)}function Fn(){}function Wn(e){if(void 0===(e=e||("undefined"!=typeof document?document:void 0)))return null;try{return e.activeElement||e.body}catch(qu){return e.body}}function Hn(e){for(;e&&e.firstChild;)e=e.firstChild;return e}function Zn(e,t){var n,r=Hn(e);for(e=0;r;){if(3===r.nodeType){if(n=e+r.textContent.length,e<=t&&n>=t)return{node:r,offset:t-e};e=n}e:{for(;r;){if(r.nextSibling){r=r.nextSibling;break e}r=r.parentNode}r=void 0}r=Hn(r)}}function Vn(){for(var e=window,t=Wn();t instanceof e.HTMLIFrameElement;){try{var n="string"==typeof t.contentWindow.location.href}catch(r){n=!1}if(!n)break;t=Wn((e=t.contentWindow).document)}return t}function Xn(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&("input"===t&&("text"===e.type||"search"===e.type||"tel"===e.type||"url"===e.type||"password"===e.type)||"textarea"===t||"true"===e.contentEditable)}var Kn=null,Jn=null;function qn(e,t){switch(e){case"button":case"input":case"select":case"textarea":return!!t.autoFocus}return!1}function $n(e,t){return"textarea"===e||"option"===e||"noscript"===e||"string"==typeof t.children||"number"==typeof t.children||"object"==typeof t.dangerouslySetInnerHTML&&null!==t.dangerouslySetInnerHTML&&null!=t.dangerouslySetInnerHTML.__html}var er="function"==typeof setTimeout?setTimeout:void 0,tr="function"==typeof clearTimeout?clearTimeout:void 0;function nr(e){for(;null!=e;e=e.nextSibling){var t=e.nodeType;if(1===t||3===t)break}return e}function rr(e){e=e.previousSibling;for(var t=0;e;){if(8===e.nodeType){var n=e.data;if("$"===n||"$!"===n||"$?"===n){if(0===t)return e;t--}else"/$"===n&&t++}e=e.previousSibling}return null}var ir=Math.random().toString(36).slice(2),or="__reactInternalInstance$"+ir,ar="__reactEventHandlers$"+ir,lr="__reactContainere$"+ir;function ur(e){var t=e[or];if(t)return t;for(var n=e.parentNode;n;){if(t=n[lr]||n[or]){if(n=t.alternate,null!==t.child||null!==n&&null!==n.child)for(e=rr(e);null!==e;){if(n=e[or])return n;e=rr(e)}return t}n=(e=n).parentNode}return null}function cr(e){return!(e=e[or]||e[lr])||5!==e.tag&&6!==e.tag&&13!==e.tag&&3!==e.tag?null:e}function sr(e){if(5===e.tag||6===e.tag)return e.stateNode;throw Error(a(33))}function fr(e){return e[ar]||null}var dr=null,Mr=null,gr=null;function pr(){if(gr)return gr;var e,t,n=Mr,r=n.length,i="value"in dr?dr.value:dr.textContent,o=i.length;for(e=0;e<r&&n[e]===i[e];e++);var a=r-e;for(t=1;t<=a&&n[r-t]===i[o-t];t++);return gr=i.slice(e,1<t?1-t:void 0)}var yr=Ut.extend({data:null}),Nr=Ut.extend({data:null}),Tr=[9,13,27,32],Dr=$&&"CompositionEvent"in window,mr=null;$&&"documentMode"in document&&(mr=document.documentMode);var jr=$&&"TextEvent"in window&&!mr,Ir=$&&(!Dr||mr&&8<mr&&11>=mr),hr=String.fromCharCode(32),wr={beforeInput:{phasedRegistrationNames:{bubbled:"onBeforeInput",captured:"onBeforeInputCapture"},dependencies:["compositionend","keypress","textInput","paste"]},compositionEnd:{phasedRegistrationNames:{bubbled:"onCompositionEnd",captured:"onCompositionEndCapture"},dependencies:"blur compositionend keydown keypress keyup mousedown".split(" ")},compositionStart:{phasedRegistrationNames:{bubbled:"onCompositionStart",captured:"onCompositionStartCapture"},dependencies:"blur compositionstart keydown keypress keyup mousedown".split(" ")},compositionUpdate:{phasedRegistrationNames:{bubbled:"onCompositionUpdate",captured:"onCompositionUpdateCapture"},dependencies:"blur compositionupdate keydown keypress keyup mousedown".split(" ")}},Er=!1;function br(e,t){switch(e){case"keyup":return-1!==Tr.indexOf(t.keyCode);case"keydown":return 229!==t.keyCode;case"keypress":case"mousedown":case"blur":return!0;default:return!1}}function Lr(e){return"object"==typeof(e=e.detail)&&"data"in e?e.data:null}var zr=!1;var xr={eventTypes:wr,extractEvents:function(e,t,n,r){var i;if(Dr)e:{switch(e){case"compositionstart":var o=wr.compositionStart;break e;case"compositionend":o=wr.compositionEnd;break e;case"compositionupdate":o=wr.compositionUpdate;break e}o=void 0}else zr?br(e,n)&&(o=wr.compositionEnd):"keydown"===e&&229===n.keyCode&&(o=wr.compositionStart);return o?(Ir&&"ko"!==n.locale&&(zr||o!==wr.compositionStart?o===wr.compositionEnd&&zr&&(i=pr()):(Mr="value"in(dr=r)?dr.value:dr.textContent,zr=!0)),o=yr.getPooled(o,t,n,r),i?o.data=i:null!==(i=Lr(n))&&(o.data=i),Ct(o),i=o):i=null,(e=jr?function(e,t){switch(e){case"compositionend":return Lr(t);case"keypress":return 32!==t.which?null:(Er=!0,hr);case"textInput":return(e=t.data)===hr&&Er?null:e;default:return null}}(e,n):function(e,t){if(zr)return"compositionend"===e||!Dr&&br(e,t)?(e=pr(),gr=Mr=dr=null,zr=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1<t.char.length)return t.char;if(t.which)return String.fromCharCode(t.which)}return null;case"compositionend":return Ir&&"ko"!==t.locale?null:t.data;default:return null}}(e,n))?((t=Nr.getPooled(wr.beforeInput,t,n,r)).data=e,Ct(t)):t=null,null===i?t:null===t?i:[i,t]}},Or={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function vr(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return"input"===t?!!Or[e.type]:"textarea"===t}var Ar={change:{phasedRegistrationNames:{bubbled:"onChange",captured:"onChangeCapture"},dependencies:"blur change click focus input keydown keyup selectionchange".split(" ")}};function Cr(e,t,n){return(e=Ut.getPooled(Ar.change,e,t,n)).type="change",ie(n),Ct(e),e}var Sr=null,kr=null;function Ur(e){O(e)}function Pr(e){if(Ee(sr(e)))return e}function Qr(e,t){if("change"===e)return t}var Yr=!1;function _r(){Sr&&(Sr.detachEvent("onpropertychange",Rr),kr=Sr=null)}function Rr(e){if("value"===e.propertyName&&Pr(kr))if(e=Cr(kr,e,Lt(e)),se)O(e);else{se=!0;try{ae(Ur,e)}finally{se=!1,de()}}}function Br(e,t,n){"focus"===e?(_r(),kr=n,(Sr=t).attachEvent("onpropertychange",Rr)):"blur"===e&&_r()}function Gr(e){if("selectionchange"===e||"keyup"===e||"keydown"===e)return Pr(kr)}function Fr(e,t){if("click"===e)return Pr(t)}function Wr(e,t){if("input"===e||"change"===e)return Pr(t)}$&&(Yr=An("input")&&(!document.documentMode||9<document.documentMode));var Hr,Zr={eventTypes:Ar,_isInputEventSupported:Yr,extractEvents:function(e,t,n,r){var i=t?sr(t):window,o=i.nodeName&&i.nodeName.toLowerCase();if("select"===o||"input"===o&&"file"===i.type)var a=Qr;else if(vr(i))if(Yr)a=Wr;else{a=Gr;var l=Br}else(o=i.nodeName)&&"input"===o.toLowerCase()&&("checkbox"===i.type||"radio"===i.type)&&(a=Fr);if(a&&(a=a(e,t)))return Cr(a,n,r);l&&l(e,i,t),"blur"===e&&(e=i._wrapperState)&&e.controlled&&"number"===i.type&&ve(i,"number",i.value)}},Vr={mouseEnter:{registrationName:"onMouseEnter",dependencies:["mouseout","mouseover"]},mouseLeave:{registrationName:"onMouseLeave",dependencies:["mouseout","mouseover"]},pointerEnter:{registrationName:"onPointerEnter",dependencies:["pointerout","pointerover"]},pointerLeave:{registrationName:"onPointerLeave",dependencies:["pointerout","pointerover"]}},Xr={eventTypes:Vr,extractEvents:function(e,t,n,r,i){var o="mouseover"===e||"pointerover"===e,a="mouseout"===e||"pointerout"===e;if(o&&0==(32&i)&&(n.relatedTarget||n.fromElement)||!a&&!o)return null;if(i=r.window===r?r:(i=r.ownerDocument)?i.defaultView||i.parentWindow:window,a?(a=t,null!==(t=(t=n.relatedTarget||n.toElement)?ur(t):null)&&(t!==(o=tt(t))||5!==t.tag&&6!==t.tag)&&(t=null)):a=null,a===t)return null;if("mouseout"===e||"mouseover"===e)var l=tn,u=Vr.mouseLeave,c=Vr.mouseEnter,s="mouse";else"pointerout"!==e&&"pointerover"!==e||(l=nn,u=Vr.pointerLeave,c=Vr.pointerEnter,s="pointer");if(e=null==a?i:sr(a),i=null==t?i:sr(t),(u=l.getPooled(u,a,n,r)).type=s+"leave",u.target=e,u.relatedTarget=i,(r=l.getPooled(c,t,n,r)).type=s+"enter",r.target=i,r.relatedTarget=e,s=t,(l=a)&&s)e:{for(e=s,a=0,t=c=l;t;t=zt(t))a++;for(t=0,i=e;i;i=zt(i))t++;for(;0<a-t;)c=zt(c),a--;for(;0<t-a;)e=zt(e),t--;for(;a--;){if(c===e||c===e.alternate)break e;c=zt(c),e=zt(e)}c=null}else c=null;for(e=c,c=[];l&&l!==e&&(null===(a=l.alternate)||a!==e);)c.push(l),l=zt(l);for(l=[];s&&s!==e&&(null===(a=s.alternate)||a!==e);)l.push(s),s=zt(s);for(s=0;s<c.length;s++)vt(c[s],"bubbled",u);for(s=l.length;0<s--;)vt(l[s],"captured",r);return n===Hr?(Hr=null,[u]):(Hr=n,[u,r])}};var Kr="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},Jr=Object.prototype.hasOwnProperty;function qr(e,t){if(Kr(e,t))return!0;if("object"!=typeof e||null===e||"object"!=typeof t||null===t)return!1;var n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(r=0;r<n.length;r++)if(!Jr.call(t,n[r])||!Kr(e[n[r]],t[n[r]]))return!1;return!0}var $r=$&&"documentMode"in document&&11>=document.documentMode,ei={select:{phasedRegistrationNames:{bubbled:"onSelect",captured:"onSelectCapture"},dependencies:"blur contextmenu dragend focus keydown keyup mousedown mouseup selectionchange".split(" ")}},ti=null,ni=null,ri=null,ii=!1;function oi(e,t){var n=t.window===t?t.document:9===t.nodeType?t:t.ownerDocument;return ii||null==ti||ti!==Wn(n)?null:("selectionStart"in(n=ti)&&Xn(n)?n={start:n.selectionStart,end:n.selectionEnd}:n={anchorNode:(n=(n.ownerDocument&&n.ownerDocument.defaultView||window).getSelection()).anchorNode,anchorOffset:n.anchorOffset,focusNode:n.focusNode,focusOffset:n.focusOffset},ri&&qr(ri,n)?null:(ri=n,(e=Ut.getPooled(ei.select,ni,e,t)).type="select",e.target=ti,Ct(e),e))}var ai={eventTypes:ei,extractEvents:function(e,t,n,r){var i,o=r.window===r?r.document:9===r.nodeType?r:r.ownerDocument;if(!(i=!o)){e:{o=Sn(o),i=g.onSelect;for(var a=0;a<i.length;a++)if(!o.has(i[a])){o=!1;break e}o=!0}i=!o}if(i)return null;switch(o=t?sr(t):window,e){case"focus":(vr(o)||"true"===o.contentEditable)&&(ti=o,ni=t,ri=null);break;case"blur":ri=ni=ti=null;break;case"mousedown":ii=!0;break;case"contextmenu":case"mouseup":case"dragend":return ii=!1,oi(n,r);case"selectionchange":if($r)break;case"keydown":case"keyup":return oi(n,r)}return null}};v.injectEventPluginOrder("ResponderEventPlugin SimpleEventPlugin EnterLeaveEventPlugin ChangeEventPlugin SelectEventPlugin BeforeInputEventPlugin".split(" ")),I=fr,h=cr,w=sr,v.injectEventPluginsByName({SimpleEventPlugin:Tn,EnterLeaveEventPlugin:Xr,ChangeEventPlugin:Zr,SelectEventPlugin:ai,BeforeInputEventPlugin:xr}),new Set;var li=[],ui=-1;function ci(e){0>ui||(e.current=li[ui],li[ui]=null,ui--)}function si(e,t){ui++,li[ui]=e.current,e.current=t}var fi={},di={current:fi},Mi={current:!1},gi=fi;function pi(e,t){var n=e.type.contextTypes;if(!n)return fi;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var i,o={};for(i in n)o[i]=t[i];return r&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=o),o}function yi(e){return null!=(e=e.childContextTypes)}function Ni(e){ci(Mi),ci(di)}function Ti(e){ci(Mi),ci(di)}function Di(e,t,n){if(di.current!==fi)throw Error(a(168));si(di,t),si(Mi,n)}function mi(e,t,n){var r=e.stateNode;if(e=t.childContextTypes,"function"!=typeof r.getChildContext)return n;for(var o in r=r.getChildContext())if(!(o in e))throw Error(a(108,J(t)||"Unknown",o));return i({},n,{},r)}function ji(e){var t=e.stateNode;return t=t&&t.__reactInternalMemoizedMergedChildContext||fi,gi=di.current,si(di,t),si(Mi,Mi.current),!0}function Ii(e,t,n){var r=e.stateNode;if(!r)throw Error(a(169));n?(t=mi(e,t,gi),r.__reactInternalMemoizedMergedChildContext=t,ci(Mi),ci(di),si(di,t)):ci(Mi),si(Mi,n)}var hi=o.unstable_runWithPriority,wi=o.unstable_scheduleCallback,Ei=o.unstable_cancelCallback,bi=o.unstable_shouldYield,Li=o.unstable_requestPaint,zi=o.unstable_now,xi=o.unstable_getCurrentPriorityLevel,Oi=o.unstable_ImmediatePriority,vi=o.unstable_UserBlockingPriority,Ai=o.unstable_NormalPriority,Ci=o.unstable_LowPriority,Si=o.unstable_IdlePriority,ki={},Ui=void 0!==Li?Li:function(){},Pi=null,Qi=null,Yi=!1,_i=zi(),Ri=1e4>_i?zi:function(){return zi()-_i};function Bi(){switch(xi()){case Oi:return 99;case vi:return 98;case Ai:return 97;case Ci:return 96;case Si:return 95;default:throw Error(a(332))}}function Gi(e){switch(e){case 99:return Oi;case 98:return vi;case 97:return Ai;case 96:return Ci;case 95:return Si;default:throw Error(a(332))}}function Fi(e,t){return e=Gi(e),hi(e,t)}function Wi(e,t,n){return e=Gi(e),wi(e,t,n)}function Hi(e){return null===Pi?(Pi=[e],Qi=wi(Oi,Vi)):Pi.push(e),ki}function Zi(){if(null!==Qi){var e=Qi;Qi=null,Ei(e)}Vi()}function Vi(){if(!Yi&&null!==Pi){Yi=!0;var e=0;try{var t=Pi;Fi(99,(function(){for(;e<t.length;e++){var n=t[e];do{n=n(!0)}while(null!==n)}})),Pi=null}catch(n){throw null!==Pi&&(Pi=Pi.slice(e+1)),wi(Oi,Zi),n}finally{Yi=!1}}}var Xi=3;function Ki(e,t,n){return 1073741821-(1+((1073741821-e+t/10)/(n/=10)|0))*n}function Ji(e,t){if(e&&e.defaultProps)for(var n in t=i({},t),e=e.defaultProps)void 0===t[n]&&(t[n]=e[n]);return t}var qi={current:null},$i=null,eo=null,to=null;function no(){to=eo=$i=null}function ro(e,t){var n=e.type._context;si(qi,n._currentValue),n._currentValue=t}function io(e){var t=qi.current;ci(qi),e.type._context._currentValue=t}function oo(e,t){for(;null!==e;){var n=e.alternate;if(e.childExpirationTime<t)e.childExpirationTime=t,null!==n&&n.childExpirationTime<t&&(n.childExpirationTime=t);else{if(!(null!==n&&n.childExpirationTime<t))break;n.childExpirationTime=t}e=e.return}}function ao(e,t){$i=e,to=eo=null,null!==(e=e.dependencies)&&null!==e.firstContext&&(e.expirationTime>=t&&(Ra=!0),e.firstContext=null)}function lo(e,t){if(to!==e&&!1!==t&&0!==t)if("number"==typeof t&&1073741823!==t||(to=e,t=1073741823),t={context:e,observedBits:t,next:null},null===eo){if(null===$i)throw Error(a(308));eo=t,$i.dependencies={expirationTime:0,firstContext:t,responders:null}}else eo=eo.next=t;return e._currentValue}var uo=!1;function co(e){return{baseState:e,firstUpdate:null,lastUpdate:null,firstCapturedUpdate:null,lastCapturedUpdate:null,firstEffect:null,lastEffect:null,firstCapturedEffect:null,lastCapturedEffect:null}}function so(e){return{baseState:e.baseState,firstUpdate:e.firstUpdate,lastUpdate:e.lastUpdate,firstCapturedUpdate:null,lastCapturedUpdate:null,firstEffect:null,lastEffect:null,firstCapturedEffect:null,lastCapturedEffect:null}}function fo(e,t){return{expirationTime:e,suspenseConfig:t,tag:0,payload:null,callback:null,next:null,nextEffect:null}}function Mo(e,t){null===e.lastUpdate?e.firstUpdate=e.lastUpdate=t:(e.lastUpdate.next=t,e.lastUpdate=t)}function go(e,t){var n=e.alternate;if(null===n){var r=e.updateQueue,i=null;null===r&&(r=e.updateQueue=co(e.memoizedState))}else r=e.updateQueue,i=n.updateQueue,null===r?null===i?(r=e.updateQueue=co(e.memoizedState),i=n.updateQueue=co(n.memoizedState)):r=e.updateQueue=so(i):null===i&&(i=n.updateQueue=so(r));null===i||r===i?Mo(r,t):null===r.lastUpdate||null===i.lastUpdate?(Mo(r,t),Mo(i,t)):(Mo(r,t),i.lastUpdate=t)}function po(e,t){var n=e.updateQueue;null===(n=null===n?e.updateQueue=co(e.memoizedState):yo(e,n)).lastCapturedUpdate?n.firstCapturedUpdate=n.lastCapturedUpdate=t:(n.lastCapturedUpdate.next=t,n.lastCapturedUpdate=t)}function yo(e,t){var n=e.alternate;return null!==n&&t===n.updateQueue&&(t=e.updateQueue=so(t)),t}function No(e,t,n,r,o,a){switch(n.tag){case 1:return"function"==typeof(e=n.payload)?e.call(a,r,o):e;case 3:e.effectTag=-4097&e.effectTag|64;case 0:if(null==(o="function"==typeof(e=n.payload)?e.call(a,r,o):e))break;return i({},r,o);case 2:uo=!0}return r}function To(e,t,n,r,i){uo=!1;for(var o=(t=yo(e,t)).baseState,a=null,l=0,u=t.firstUpdate,c=o;null!==u;){var s=u.expirationTime;s<i?(null===a&&(a=u,o=c),l<s&&(l=s)):(fu(s,u.suspenseConfig),c=No(e,0,u,c,n,r),null!==u.callback&&(e.effectTag|=32,u.nextEffect=null,null===t.lastEffect?t.firstEffect=t.lastEffect=u:(t.lastEffect.nextEffect=u,t.lastEffect=u))),u=u.next}for(s=null,u=t.firstCapturedUpdate;null!==u;){var f=u.expirationTime;f<i?(null===s&&(s=u,null===a&&(o=c)),l<f&&(l=f)):(c=No(e,0,u,c,n,r),null!==u.callback&&(e.effectTag|=32,u.nextEffect=null,null===t.lastCapturedEffect?t.firstCapturedEffect=t.lastCapturedEffect=u:(t.lastCapturedEffect.nextEffect=u,t.lastCapturedEffect=u))),u=u.next}null===a&&(t.lastUpdate=null),null===s?t.lastCapturedUpdate=null:e.effectTag|=32,null===a&&null===s&&(o=c),t.baseState=o,t.firstUpdate=a,t.firstCapturedUpdate=s,du(l),e.expirationTime=l,e.memoizedState=c}function Do(e,t,n){null!==t.firstCapturedUpdate&&(null!==t.lastUpdate&&(t.lastUpdate.next=t.firstCapturedUpdate,t.lastUpdate=t.lastCapturedUpdate),t.firstCapturedUpdate=t.lastCapturedUpdate=null),mo(t.firstEffect,n),t.firstEffect=t.lastEffect=null,mo(t.firstCapturedEffect,n),t.firstCapturedEffect=t.lastCapturedEffect=null}function mo(e,t){for(;null!==e;){var n=e.callback;if(null!==n){e.callback=null;var r=t;if("function"!=typeof n)throw Error(a(191,n));n.call(r)}e=e.nextEffect}}var jo=C.ReactCurrentBatchConfig,Io=(new r.Component).refs;function ho(e,t,n,r){n=null==(n=n(r,t=e.memoizedState))?t:i({},t,n),e.memoizedState=n,null!==(r=e.updateQueue)&&0===e.expirationTime&&(r.baseState=n)}var wo={isMounted:function(e){return!!(e=e._reactInternalFiber)&&tt(e)===e},enqueueSetState:function(e,t,n){e=e._reactInternalFiber;var r=ql(),i=jo.suspense;(i=fo(r=$l(r,e,i),i)).payload=t,null!=n&&(i.callback=n),go(e,i),eu(e,r)},enqueueReplaceState:function(e,t,n){e=e._reactInternalFiber;var r=ql(),i=jo.suspense;(i=fo(r=$l(r,e,i),i)).tag=1,i.payload=t,null!=n&&(i.callback=n),go(e,i),eu(e,r)},enqueueForceUpdate:function(e,t){e=e._reactInternalFiber;var n=ql(),r=jo.suspense;(r=fo(n=$l(n,e,r),r)).tag=2,null!=t&&(r.callback=t),go(e,r),eu(e,n)}};function Eo(e,t,n,r,i,o,a){return"function"==typeof(e=e.stateNode).shouldComponentUpdate?e.shouldComponentUpdate(r,o,a):!t.prototype||!t.prototype.isPureReactComponent||(!qr(n,r)||!qr(i,o))}function bo(e,t,n){var r=!1,i=fi,o=t.contextType;return"object"==typeof o&&null!==o?o=lo(o):(i=yi(t)?gi:di.current,o=(r=null!=(r=t.contextTypes))?pi(e,i):fi),t=new t(n,o),e.memoizedState=null!==t.state&&void 0!==t.state?t.state:null,t.updater=wo,e.stateNode=t,t._reactInternalFiber=e,r&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=i,e.__reactInternalMemoizedMaskedChildContext=o),t}function Lo(e,t,n,r){e=t.state,"function"==typeof t.componentWillReceiveProps&&t.componentWillReceiveProps(n,r),"function"==typeof t.UNSAFE_componentWillReceiveProps&&t.UNSAFE_componentWillReceiveProps(n,r),t.state!==e&&wo.enqueueReplaceState(t,t.state,null)}function zo(e,t,n,r){var i=e.stateNode;i.props=n,i.state=e.memoizedState,i.refs=Io;var o=t.contextType;"object"==typeof o&&null!==o?i.context=lo(o):(o=yi(t)?gi:di.current,i.context=pi(e,o)),null!==(o=e.updateQueue)&&(To(e,o,n,i,r),i.state=e.memoizedState),"function"==typeof(o=t.getDerivedStateFromProps)&&(ho(e,t,o,n),i.state=e.memoizedState),"function"==typeof t.getDerivedStateFromProps||"function"==typeof i.getSnapshotBeforeUpdate||"function"!=typeof i.UNSAFE_componentWillMount&&"function"!=typeof i.componentWillMount||(t=i.state,"function"==typeof i.componentWillMount&&i.componentWillMount(),"function"==typeof i.UNSAFE_componentWillMount&&i.UNSAFE_componentWillMount(),t!==i.state&&wo.enqueueReplaceState(i,i.state,null),null!==(o=e.updateQueue)&&(To(e,o,n,i,r),i.state=e.memoizedState)),"function"==typeof i.componentDidMount&&(e.effectTag|=4)}var xo=Array.isArray;function Oo(e,t,n){if(null!==(e=n.ref)&&"function"!=typeof e&&"object"!=typeof e){if(n._owner){if(n=n._owner){if(1!==n.tag)throw Error(a(309));var r=n.stateNode}if(!r)throw Error(a(147,e));var i=""+e;return null!==t&&null!==t.ref&&"function"==typeof t.ref&&t.ref._stringRef===i?t.ref:((t=function(e){var t=r.refs;t===Io&&(t=r.refs={}),null===e?delete t[i]:t[i]=e})._stringRef=i,t)}if("string"!=typeof e)throw Error(a(284));if(!n._owner)throw Error(a(290,e))}return e}function vo(e,t){if("textarea"!==e.type)throw Error(a(31,"[object Object]"===Object.prototype.toString.call(t)?"object with keys {"+Object.keys(t).join(", ")+"}":t,""))}function Ao(e){function t(t,n){if(e){var r=t.lastEffect;null!==r?(r.nextEffect=n,t.lastEffect=n):t.firstEffect=t.lastEffect=n,n.nextEffect=null,n.effectTag=8}}function n(n,r){if(!e)return null;for(;null!==r;)t(n,r),r=r.sibling;return null}function r(e,t){for(e=new Map;null!==t;)null!==t.key?e.set(t.key,t):e.set(t.index,t),t=t.sibling;return e}function i(e,t,n){return(e=Au(e,t)).index=0,e.sibling=null,e}function o(t,n,r){return t.index=r,e?null!==(r=t.alternate)?(r=r.index)<n?(t.effectTag=2,n):r:(t.effectTag=2,n):n}function l(t){return e&&null===t.alternate&&(t.effectTag=2),t}function u(e,t,n,r){return null===t||6!==t.tag?((t=ku(n,e.mode,r)).return=e,t):((t=i(t,n)).return=e,t)}function c(e,t,n,r){return null!==t&&t.elementType===n.type?((r=i(t,n.props)).ref=Oo(e,t,n),r.return=e,r):((r=Cu(n.type,n.key,n.props,null,e.mode,r)).ref=Oo(e,t,n),r.return=e,r)}function s(e,t,n,r){return null===t||4!==t.tag||t.stateNode.containerInfo!==n.containerInfo||t.stateNode.implementation!==n.implementation?((t=Uu(n,e.mode,r)).return=e,t):((t=i(t,n.children||[])).return=e,t)}function f(e,t,n,r,o){return null===t||7!==t.tag?((t=Su(n,e.mode,r,o)).return=e,t):((t=i(t,n)).return=e,t)}function d(e,t,n){if("string"==typeof t||"number"==typeof t)return(t=ku(""+t,e.mode,n)).return=e,t;if("object"==typeof t&&null!==t){switch(t.$$typeof){case U:return(n=Cu(t.type,t.key,t.props,null,e.mode,n)).ref=Oo(e,null,t),n.return=e,n;case P:return(t=Uu(t,e.mode,n)).return=e,t}if(xo(t)||K(t))return(t=Su(t,e.mode,n,null)).return=e,t;vo(e,t)}return null}function M(e,t,n,r){var i=null!==t?t.key:null;if("string"==typeof n||"number"==typeof n)return null!==i?null:u(e,t,""+n,r);if("object"==typeof n&&null!==n){switch(n.$$typeof){case U:return n.key===i?n.type===Q?f(e,t,n.props.children,r,i):c(e,t,n,r):null;case P:return n.key===i?s(e,t,n,r):null}if(xo(n)||K(n))return null!==i?null:f(e,t,n,r,null);vo(e,n)}return null}function g(e,t,n,r,i){if("string"==typeof r||"number"==typeof r)return u(t,e=e.get(n)||null,""+r,i);if("object"==typeof r&&null!==r){switch(r.$$typeof){case U:return e=e.get(null===r.key?n:r.key)||null,r.type===Q?f(t,e,r.props.children,i,r.key):c(t,e,r,i);case P:return s(t,e=e.get(null===r.key?n:r.key)||null,r,i)}if(xo(r)||K(r))return f(t,e=e.get(n)||null,r,i,null);vo(t,r)}return null}function p(i,a,l,u){for(var c=null,s=null,f=a,p=a=0,y=null;null!==f&&p<l.length;p++){f.index>p?(y=f,f=null):y=f.sibling;var N=M(i,f,l[p],u);if(null===N){null===f&&(f=y);break}e&&f&&null===N.alternate&&t(i,f),a=o(N,a,p),null===s?c=N:s.sibling=N,s=N,f=y}if(p===l.length)return n(i,f),c;if(null===f){for(;p<l.length;p++)null!==(f=d(i,l[p],u))&&(a=o(f,a,p),null===s?c=f:s.sibling=f,s=f);return c}for(f=r(i,f);p<l.length;p++)null!==(y=g(f,i,p,l[p],u))&&(e&&null!==y.alternate&&f.delete(null===y.key?p:y.key),a=o(y,a,p),null===s?c=y:s.sibling=y,s=y);return e&&f.forEach((function(e){return t(i,e)})),c}function y(i,l,u,c){var s=K(u);if("function"!=typeof s)throw Error(a(150));if(null==(u=s.call(u)))throw Error(a(151));for(var f=s=null,p=l,y=l=0,N=null,T=u.next();null!==p&&!T.done;y++,T=u.next()){p.index>y?(N=p,p=null):N=p.sibling;var D=M(i,p,T.value,c);if(null===D){null===p&&(p=N);break}e&&p&&null===D.alternate&&t(i,p),l=o(D,l,y),null===f?s=D:f.sibling=D,f=D,p=N}if(T.done)return n(i,p),s;if(null===p){for(;!T.done;y++,T=u.next())null!==(T=d(i,T.value,c))&&(l=o(T,l,y),null===f?s=T:f.sibling=T,f=T);return s}for(p=r(i,p);!T.done;y++,T=u.next())null!==(T=g(p,i,y,T.value,c))&&(e&&null!==T.alternate&&p.delete(null===T.key?y:T.key),l=o(T,l,y),null===f?s=T:f.sibling=T,f=T);return e&&p.forEach((function(e){return t(i,e)})),s}return function(e,r,o,u){var c="object"==typeof o&&null!==o&&o.type===Q&&null===o.key;c&&(o=o.props.children);var s="object"==typeof o&&null!==o;if(s)switch(o.$$typeof){case U:e:{for(s=o.key,c=r;null!==c;){if(c.key===s){if(7===c.tag?o.type===Q:c.elementType===o.type){n(e,c.sibling),(r=i(c,o.type===Q?o.props.children:o.props)).ref=Oo(e,c,o),r.return=e,e=r;break e}n(e,c);break}t(e,c),c=c.sibling}o.type===Q?((r=Su(o.props.children,e.mode,u,o.key)).return=e,e=r):((u=Cu(o.type,o.key,o.props,null,e.mode,u)).ref=Oo(e,r,o),u.return=e,e=u)}return l(e);case P:e:{for(c=o.key;null!==r;){if(r.key===c){if(4===r.tag&&r.stateNode.containerInfo===o.containerInfo&&r.stateNode.implementation===o.implementation){n(e,r.sibling),(r=i(r,o.children||[])).return=e,e=r;break e}n(e,r);break}t(e,r),r=r.sibling}(r=Uu(o,e.mode,u)).return=e,e=r}return l(e)}if("string"==typeof o||"number"==typeof o)return o=""+o,null!==r&&6===r.tag?(n(e,r.sibling),(r=i(r,o)).return=e,e=r):(n(e,r),(r=ku(o,e.mode,u)).return=e,e=r),l(e);if(xo(o))return p(e,r,o,u);if(K(o))return y(e,r,o,u);if(s&&vo(e,o),void 0===o&&!c)switch(e.tag){case 1:case 0:throw e=e.type,Error(a(152,e.displayName||e.name||"Component"))}return n(e,r)}}var Co=Ao(!0),So=Ao(!1),ko={},Uo={current:ko},Po={current:ko},Qo={current:ko};function Yo(e){if(e===ko)throw Error(a(174));return e}function _o(e,t){si(Qo,t),si(Po,e),si(Uo,ko);var n=t.nodeType;switch(n){case 9:case 11:t=(t=t.documentElement)?t.namespaceURI:Re(null,"");break;default:t=Re(t=(n=8===n?t.parentNode:t).namespaceURI||null,n=n.tagName)}ci(Uo),si(Uo,t)}function Ro(e){ci(Uo),ci(Po),ci(Qo)}function Bo(e){Yo(Qo.current);var t=Yo(Uo.current),n=Re(t,e.type);t!==n&&(si(Po,e),si(Uo,n))}function Go(e){Po.current===e&&(ci(Uo),ci(Po))}var Fo={current:0};function Wo(e){for(var t=e;null!==t;){if(13===t.tag){var n=t.memoizedState;if(null!==n&&(null===(n=n.dehydrated)||"$?"===n.data||"$!"===n.data))return t}else if(19===t.tag&&void 0!==t.memoizedProps.revealOrder){if(0!=(64&t.effectTag))return t}else if(null!==t.child){t.child.return=t,t=t.child;continue}if(t===e)break;for(;null===t.sibling;){if(null===t.return||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}function Ho(e,t){return{responder:e,props:t}}var Zo=C.ReactCurrentDispatcher,Vo=C.ReactCurrentBatchConfig,Xo=0,Ko=null,Jo=null,qo=null,$o=null,ea=null,ta=null,na=0,ra=null,ia=0,oa=!1,aa=null,la=0;function ua(){throw Error(a(321))}function ca(e,t){if(null===t)return!1;for(var n=0;n<t.length&&n<e.length;n++)if(!Kr(e[n],t[n]))return!1;return!0}function sa(e,t,n,r,i,o){if(Xo=o,Ko=t,qo=null!==e?e.memoizedState:null,Zo.current=null===qo?xa:Oa,t=n(r,i),oa){do{oa=!1,la+=1,qo=null!==e?e.memoizedState:null,ta=$o,ra=ea=Jo=null,Zo.current=Oa,t=n(r,i)}while(oa);aa=null,la=0}if(Zo.current=za,(e=Ko).memoizedState=$o,e.expirationTime=na,e.updateQueue=ra,e.effectTag|=ia,e=null!==Jo&&null!==Jo.next,Xo=0,ta=ea=$o=qo=Jo=Ko=null,na=0,ra=null,ia=0,e)throw Error(a(300));return t}function fa(){Zo.current=za,Xo=0,ta=ea=$o=qo=Jo=Ko=null,na=0,ra=null,ia=0,oa=!1,aa=null,la=0}function da(){var e={memoizedState:null,baseState:null,queue:null,baseUpdate:null,next:null};return null===ea?$o=ea=e:ea=ea.next=e,ea}function Ma(){if(null!==ta)ta=(ea=ta).next,qo=null!==(Jo=qo)?Jo.next:null;else{if(null===qo)throw Error(a(310));var e={memoizedState:(Jo=qo).memoizedState,baseState:Jo.baseState,queue:Jo.queue,baseUpdate:Jo.baseUpdate,next:null};ea=null===ea?$o=e:ea.next=e,qo=Jo.next}return ea}function ga(e,t){return"function"==typeof t?t(e):t}function pa(e){var t=Ma(),n=t.queue;if(null===n)throw Error(a(311));if(n.lastRenderedReducer=e,0<la){var r=n.dispatch;if(null!==aa){var i=aa.get(n);if(void 0!==i){aa.delete(n);var o=t.memoizedState;do{o=e(o,i.action),i=i.next}while(null!==i);return Kr(o,t.memoizedState)||(Ra=!0),t.memoizedState=o,t.baseUpdate===n.last&&(t.baseState=o),n.lastRenderedState=o,[o,r]}}return[t.memoizedState,r]}r=n.last;var l=t.baseUpdate;if(o=t.baseState,null!==l?(null!==r&&(r.next=null),r=l.next):r=null!==r?r.next:null,null!==r){var u=i=null,c=r,s=!1;do{var f=c.expirationTime;f<Xo?(s||(s=!0,u=l,i=o),f>na&&du(na=f)):(fu(f,c.suspenseConfig),o=c.eagerReducer===e?c.eagerState:e(o,c.action)),l=c,c=c.next}while(null!==c&&c!==r);s||(u=l,i=o),Kr(o,t.memoizedState)||(Ra=!0),t.memoizedState=o,t.baseUpdate=u,t.baseState=i,n.lastRenderedState=o}return[t.memoizedState,n.dispatch]}function ya(e){var t=da();return"function"==typeof e&&(e=e()),t.memoizedState=t.baseState=e,e=(e=t.queue={last:null,dispatch:null,lastRenderedReducer:ga,lastRenderedState:e}).dispatch=La.bind(null,Ko,e),[t.memoizedState,e]}function Na(e){return pa(ga)}function Ta(e,t,n,r){return e={tag:e,create:t,destroy:n,deps:r,next:null},null===ra?(ra={lastEffect:null}).lastEffect=e.next=e:null===(t=ra.lastEffect)?ra.lastEffect=e.next=e:(n=t.next,t.next=e,e.next=n,ra.lastEffect=e),e}function Da(e,t,n,r){var i=da();ia|=e,i.memoizedState=Ta(t,n,void 0,void 0===r?null:r)}function ma(e,t,n,r){var i=Ma();r=void 0===r?null:r;var o=void 0;if(null!==Jo){var a=Jo.memoizedState;if(o=a.destroy,null!==r&&ca(r,a.deps))return void Ta(0,n,o,r)}ia|=e,i.memoizedState=Ta(t,n,o,r)}function ja(e,t){return Da(516,192,e,t)}function Ia(e,t){return ma(516,192,e,t)}function ha(e,t){return"function"==typeof t?(e=e(),t(e),function(){t(null)}):null!=t?(e=e(),t.current=e,function(){t.current=null}):void 0}function wa(){}function Ea(e,t){return da().memoizedState=[e,void 0===t?null:t],e}function ba(e,t){var n=Ma();t=void 0===t?null:t;var r=n.memoizedState;return null!==r&&null!==t&&ca(t,r[1])?r[0]:(n.memoizedState=[e,t],e)}function La(e,t,n){if(!(25>la))throw Error(a(301));var r=e.alternate;if(e===Ko||null!==r&&r===Ko)if(oa=!0,e={expirationTime:Xo,suspenseConfig:null,action:n,eagerReducer:null,eagerState:null,next:null},null===aa&&(aa=new Map),void 0===(n=aa.get(t)))aa.set(t,e);else{for(t=n;null!==t.next;)t=t.next;t.next=e}else{var i=ql(),o=jo.suspense;o={expirationTime:i=$l(i,e,o),suspenseConfig:o,action:n,eagerReducer:null,eagerState:null,next:null};var l=t.last;if(null===l)o.next=o;else{var u=l.next;null!==u&&(o.next=u),l.next=o}if(t.last=o,0===e.expirationTime&&(null===r||0===r.expirationTime)&&null!==(r=t.lastRenderedReducer))try{var c=t.lastRenderedState,s=r(c,n);if(o.eagerReducer=r,o.eagerState=s,Kr(s,c))return}catch(f){}eu(e,i)}}var za={readContext:lo,useCallback:ua,useContext:ua,useEffect:ua,useImperativeHandle:ua,useLayoutEffect:ua,useMemo:ua,useReducer:ua,useRef:ua,useState:ua,useDebugValue:ua,useResponder:ua,useDeferredValue:ua,useTransition:ua},xa={readContext:lo,useCallback:Ea,useContext:lo,useEffect:ja,useImperativeHandle:function(e,t,n){return n=null!=n?n.concat([e]):null,Da(4,36,ha.bind(null,t,e),n)},useLayoutEffect:function(e,t){return Da(4,36,e,t)},useMemo:function(e,t){var n=da();return t=void 0===t?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var r=da();return t=void 0!==n?n(t):t,r.memoizedState=r.baseState=t,e=(e=r.queue={last:null,dispatch:null,lastRenderedReducer:e,lastRenderedState:t}).dispatch=La.bind(null,Ko,e),[r.memoizedState,e]},useRef:function(e){return e={current:e},da().memoizedState=e},useState:ya,useDebugValue:wa,useResponder:Ho,useDeferredValue:function(e,t){var n=ya(e),r=n[0],i=n[1];return ja((function(){o.unstable_next((function(){var n=Vo.suspense;Vo.suspense=void 0===t?null:t;try{i(e)}finally{Vo.suspense=n}}))}),[e,t]),r},useTransition:function(e){var t=ya(!1),n=t[0],r=t[1];return[Ea((function(t){r(!0),o.unstable_next((function(){var n=Vo.suspense;Vo.suspense=void 0===e?null:e;try{r(!1),t()}finally{Vo.suspense=n}}))}),[e,n]),n]}},Oa={readContext:lo,useCallback:ba,useContext:lo,useEffect:Ia,useImperativeHandle:function(e,t,n){return n=null!=n?n.concat([e]):null,ma(4,36,ha.bind(null,t,e),n)},useLayoutEffect:function(e,t){return ma(4,36,e,t)},useMemo:function(e,t){var n=Ma();t=void 0===t?null:t;var r=n.memoizedState;return null!==r&&null!==t&&ca(t,r[1])?r[0]:(e=e(),n.memoizedState=[e,t],e)},useReducer:pa,useRef:function(){return Ma().memoizedState},useState:Na,useDebugValue:wa,useResponder:Ho,useDeferredValue:function(e,t){var n=Na(),r=n[0],i=n[1];return Ia((function(){o.unstable_next((function(){var n=Vo.suspense;Vo.suspense=void 0===t?null:t;try{i(e)}finally{Vo.suspense=n}}))}),[e,t]),r},useTransition:function(e){var t=Na(),n=t[0],r=t[1];return[ba((function(t){r(!0),o.unstable_next((function(){var n=Vo.suspense;Vo.suspense=void 0===e?null:e;try{r(!1),t()}finally{Vo.suspense=n}}))}),[e,n]),n]}},va=null,Aa=null,Ca=!1;function Sa(e,t){var n=Ou(5,null,null,0);n.elementType="DELETED",n.type="DELETED",n.stateNode=t,n.return=e,n.effectTag=8,null!==e.lastEffect?(e.lastEffect.nextEffect=n,e.lastEffect=n):e.firstEffect=e.lastEffect=n}function ka(e,t){switch(e.tag){case 5:var n=e.type;return null!==(t=1!==t.nodeType||n.toLowerCase()!==t.nodeName.toLowerCase()?null:t)&&(e.stateNode=t,!0);case 6:return null!==(t=""===e.pendingProps||3!==t.nodeType?null:t)&&(e.stateNode=t,!0);case 13:default:return!1}}function Ua(e){if(Ca){var t=Aa;if(t){var n=t;if(!ka(e,t)){if(!(t=nr(n.nextSibling))||!ka(e,t))return e.effectTag=-1025&e.effectTag|2,Ca=!1,void(va=e);Sa(va,n)}va=e,Aa=nr(t.firstChild)}else e.effectTag=-1025&e.effectTag|2,Ca=!1,va=e}}function Pa(e){for(e=e.return;null!==e&&5!==e.tag&&3!==e.tag&&13!==e.tag;)e=e.return;va=e}function Qa(e){if(e!==va)return!1;if(!Ca)return Pa(e),Ca=!0,!1;var t=e.type;if(5!==e.tag||"head"!==t&&"body"!==t&&!$n(t,e.memoizedProps))for(t=Aa;t;)Sa(e,t),t=nr(t.nextSibling);if(Pa(e),13===e.tag){if(!(e=null!==(e=e.memoizedState)?e.dehydrated:null))throw Error(a(317));e:{for(e=e.nextSibling,t=0;e;){if(8===e.nodeType){var n=e.data;if("/$"===n){if(0===t){Aa=nr(e.nextSibling);break e}t--}else"$"!==n&&"$!"!==n&&"$?"!==n||t++}e=e.nextSibling}Aa=null}}else Aa=va?nr(e.stateNode.nextSibling):null;return!0}function Ya(){Aa=va=null,Ca=!1}var _a=C.ReactCurrentOwner,Ra=!1;function Ba(e,t,n,r){t.child=null===e?So(t,null,n,r):Co(t,e.child,n,r)}function Ga(e,t,n,r,i){n=n.render;var o=t.ref;return ao(t,i),r=sa(e,t,n,r,o,i),null===e||Ra?(t.effectTag|=1,Ba(e,t,r,i),t.child):(t.updateQueue=e.updateQueue,t.effectTag&=-517,e.expirationTime<=i&&(e.expirationTime=0),ol(e,t,i))}function Fa(e,t,n,r,i,o){if(null===e){var a=n.type;return"function"!=typeof a||vu(a)||void 0!==a.defaultProps||null!==n.compare||void 0!==n.defaultProps?((e=Cu(n.type,null,r,null,t.mode,o)).ref=t.ref,e.return=t,t.child=e):(t.tag=15,t.type=a,Wa(e,t,a,r,i,o))}return a=e.child,i<o&&(i=a.memoizedProps,(n=null!==(n=n.compare)?n:qr)(i,r)&&e.ref===t.ref)?ol(e,t,o):(t.effectTag|=1,(e=Au(a,r)).ref=t.ref,e.return=t,t.child=e)}function Wa(e,t,n,r,i,o){return null!==e&&qr(e.memoizedProps,r)&&e.ref===t.ref&&(Ra=!1,i<o)?ol(e,t,o):Za(e,t,n,r,o)}function Ha(e,t){var n=t.ref;(null===e&&null!==n||null!==e&&e.ref!==n)&&(t.effectTag|=128)}function Za(e,t,n,r,i){var o=yi(n)?gi:di.current;return o=pi(t,o),ao(t,i),n=sa(e,t,n,r,o,i),null===e||Ra?(t.effectTag|=1,Ba(e,t,n,i),t.child):(t.updateQueue=e.updateQueue,t.effectTag&=-517,e.expirationTime<=i&&(e.expirationTime=0),ol(e,t,i))}function Va(e,t,n,r,i){if(yi(n)){var o=!0;ji(t)}else o=!1;if(ao(t,i),null===t.stateNode)null!==e&&(e.alternate=null,t.alternate=null,t.effectTag|=2),bo(t,n,r),zo(t,n,r,i),r=!0;else if(null===e){var a=t.stateNode,l=t.memoizedProps;a.props=l;var u=a.context,c=n.contextType;"object"==typeof c&&null!==c?c=lo(c):c=pi(t,c=yi(n)?gi:di.current);var s=n.getDerivedStateFromProps,f="function"==typeof s||"function"==typeof a.getSnapshotBeforeUpdate;f||"function"!=typeof a.UNSAFE_componentWillReceiveProps&&"function"!=typeof a.componentWillReceiveProps||(l!==r||u!==c)&&Lo(t,a,r,c),uo=!1;var d=t.memoizedState;u=a.state=d;var M=t.updateQueue;null!==M&&(To(t,M,r,a,i),u=t.memoizedState),l!==r||d!==u||Mi.current||uo?("function"==typeof s&&(ho(t,n,s,r),u=t.memoizedState),(l=uo||Eo(t,n,l,r,d,u,c))?(f||"function"!=typeof a.UNSAFE_componentWillMount&&"function"!=typeof a.componentWillMount||("function"==typeof a.componentWillMount&&a.componentWillMount(),"function"==typeof a.UNSAFE_componentWillMount&&a.UNSAFE_componentWillMount()),"function"==typeof a.componentDidMount&&(t.effectTag|=4)):("function"==typeof a.componentDidMount&&(t.effectTag|=4),t.memoizedProps=r,t.memoizedState=u),a.props=r,a.state=u,a.context=c,r=l):("function"==typeof a.componentDidMount&&(t.effectTag|=4),r=!1)}else a=t.stateNode,l=t.memoizedProps,a.props=t.type===t.elementType?l:Ji(t.type,l),u=a.context,"object"==typeof(c=n.contextType)&&null!==c?c=lo(c):c=pi(t,c=yi(n)?gi:di.current),(f="function"==typeof(s=n.getDerivedStateFromProps)||"function"==typeof a.getSnapshotBeforeUpdate)||"function"!=typeof a.UNSAFE_componentWillReceiveProps&&"function"!=typeof a.componentWillReceiveProps||(l!==r||u!==c)&&Lo(t,a,r,c),uo=!1,u=t.memoizedState,d=a.state=u,null!==(M=t.updateQueue)&&(To(t,M,r,a,i),d=t.memoizedState),l!==r||u!==d||Mi.current||uo?("function"==typeof s&&(ho(t,n,s,r),d=t.memoizedState),(s=uo||Eo(t,n,l,r,u,d,c))?(f||"function"!=typeof a.UNSAFE_componentWillUpdate&&"function"!=typeof a.componentWillUpdate||("function"==typeof a.componentWillUpdate&&a.componentWillUpdate(r,d,c),"function"==typeof a.UNSAFE_componentWillUpdate&&a.UNSAFE_componentWillUpdate(r,d,c)),"function"==typeof a.componentDidUpdate&&(t.effectTag|=4),"function"==typeof a.getSnapshotBeforeUpdate&&(t.effectTag|=256)):("function"!=typeof a.componentDidUpdate||l===e.memoizedProps&&u===e.memoizedState||(t.effectTag|=4),"function"!=typeof a.getSnapshotBeforeUpdate||l===e.memoizedProps&&u===e.memoizedState||(t.effectTag|=256),t.memoizedProps=r,t.memoizedState=d),a.props=r,a.state=d,a.context=c,r=s):("function"!=typeof a.componentDidUpdate||l===e.memoizedProps&&u===e.memoizedState||(t.effectTag|=4),"function"!=typeof a.getSnapshotBeforeUpdate||l===e.memoizedProps&&u===e.memoizedState||(t.effectTag|=256),r=!1);return Xa(e,t,n,r,o,i)}function Xa(e,t,n,r,i,o){Ha(e,t);var a=0!=(64&t.effectTag);if(!r&&!a)return i&&Ii(t,n,!1),ol(e,t,o);r=t.stateNode,_a.current=t;var l=a&&"function"!=typeof n.getDerivedStateFromError?null:r.render();return t.effectTag|=1,null!==e&&a?(t.child=Co(t,e.child,null,o),t.child=Co(t,null,l,o)):Ba(e,t,l,o),t.memoizedState=r.state,i&&Ii(t,n,!0),t.child}function Ka(e){var t=e.stateNode;t.pendingContext?Di(0,t.pendingContext,t.pendingContext!==t.context):t.context&&Di(0,t.context,!1),_o(e,t.containerInfo)}var Ja,qa,$a,el={dehydrated:null,retryTime:0};function tl(e,t,n){var r,i=t.mode,o=t.pendingProps,a=Fo.current,l=!1;if((r=0!=(64&t.effectTag))||(r=0!=(2&a)&&(null===e||null!==e.memoizedState)),r?(l=!0,t.effectTag&=-65):null!==e&&null===e.memoizedState||void 0===o.fallback||!0===o.unstable_avoidThisFallback||(a|=1),si(Fo,1&a),null===e){if(void 0!==o.fallback&&Ua(t),l){if(l=o.fallback,(o=Su(null,i,0,null)).return=t,0==(2&t.mode))for(e=null!==t.memoizedState?t.child.child:t.child,o.child=e;null!==e;)e.return=o,e=e.sibling;return(n=Su(l,i,n,null)).return=t,o.sibling=n,t.memoizedState=el,t.child=o,n}return i=o.children,t.memoizedState=null,t.child=So(t,null,i,n)}if(null!==e.memoizedState){if(i=(e=e.child).sibling,l){if(o=o.fallback,(n=Au(e,e.pendingProps)).return=t,0==(2&t.mode)&&(l=null!==t.memoizedState?t.child.child:t.child)!==e.child)for(n.child=l;null!==l;)l.return=n,l=l.sibling;return(i=Au(i,o,i.expirationTime)).return=t,n.sibling=i,n.childExpirationTime=0,t.memoizedState=el,t.child=n,i}return n=Co(t,e.child,o.children,n),t.memoizedState=null,t.child=n}if(e=e.child,l){if(l=o.fallback,(o=Su(null,i,0,null)).return=t,o.child=e,null!==e&&(e.return=o),0==(2&t.mode))for(e=null!==t.memoizedState?t.child.child:t.child,o.child=e;null!==e;)e.return=o,e=e.sibling;return(n=Su(l,i,n,null)).return=t,o.sibling=n,n.effectTag|=2,o.childExpirationTime=0,t.memoizedState=el,t.child=o,n}return t.memoizedState=null,t.child=Co(t,e,o.children,n)}function nl(e,t){e.expirationTime<t&&(e.expirationTime=t);var n=e.alternate;null!==n&&n.expirationTime<t&&(n.expirationTime=t),oo(e.return,t)}function rl(e,t,n,r,i,o){var a=e.memoizedState;null===a?e.memoizedState={isBackwards:t,rendering:null,last:r,tail:n,tailExpiration:0,tailMode:i,lastEffect:o}:(a.isBackwards=t,a.rendering=null,a.last=r,a.tail=n,a.tailExpiration=0,a.tailMode=i,a.lastEffect=o)}function il(e,t,n){var r=t.pendingProps,i=r.revealOrder,o=r.tail;if(Ba(e,t,r.children,n),0!=(2&(r=Fo.current)))r=1&r|2,t.effectTag|=64;else{if(null!==e&&0!=(64&e.effectTag))e:for(e=t.child;null!==e;){if(13===e.tag)null!==e.memoizedState&&nl(e,n);else if(19===e.tag)nl(e,n);else if(null!==e.child){e.child.return=e,e=e.child;continue}if(e===t)break e;for(;null===e.sibling;){if(null===e.return||e.return===t)break e;e=e.return}e.sibling.return=e.return,e=e.sibling}r&=1}if(si(Fo,r),0==(2&t.mode))t.memoizedState=null;else switch(i){case"forwards":for(n=t.child,i=null;null!==n;)null!==(e=n.alternate)&&null===Wo(e)&&(i=n),n=n.sibling;null===(n=i)?(i=t.child,t.child=null):(i=n.sibling,n.sibling=null),rl(t,!1,i,n,o,t.lastEffect);break;case"backwards":for(n=null,i=t.child,t.child=null;null!==i;){if(null!==(e=i.alternate)&&null===Wo(e)){t.child=i;break}e=i.sibling,i.sibling=n,n=i,i=e}rl(t,!0,n,null,o,t.lastEffect);break;case"together":rl(t,!1,null,null,void 0,t.lastEffect);break;default:t.memoizedState=null}return t.child}function ol(e,t,n){null!==e&&(t.dependencies=e.dependencies);var r=t.expirationTime;if(0!==r&&du(r),t.childExpirationTime<n)return null;if(null!==e&&t.child!==e.child)throw Error(a(153));if(null!==t.child){for(n=Au(e=t.child,e.pendingProps,e.expirationTime),t.child=n,n.return=t;null!==e.sibling;)e=e.sibling,(n=n.sibling=Au(e,e.pendingProps,e.expirationTime)).return=t;n.sibling=null}return t.child}function al(e){e.effectTag|=4}function ll(e,t){switch(e.tailMode){case"hidden":t=e.tail;for(var n=null;null!==t;)null!==t.alternate&&(n=t),t=t.sibling;null===n?e.tail=null:n.sibling=null;break;case"collapsed":n=e.tail;for(var r=null;null!==n;)null!==n.alternate&&(r=n),n=n.sibling;null===r?t||null===e.tail?e.tail=null:e.tail.sibling=null:r.sibling=null}}function ul(e){switch(e.tag){case 1:yi(e.type)&&Ni();var t=e.effectTag;return 4096&t?(e.effectTag=-4097&t|64,e):null;case 3:if(Ro(),Ti(),0!=(64&(t=e.effectTag)))throw Error(a(285));return e.effectTag=-4097&t|64,e;case 5:return Go(e),null;case 13:return ci(Fo),4096&(t=e.effectTag)?(e.effectTag=-4097&t|64,e):null;case 19:return ci(Fo),null;case 4:return Ro(),null;case 10:return io(e),null;default:return null}}function cl(e,t){return{value:e,source:t,stack:q(t)}}Ja=function(e,t){for(var n=t.child;null!==n;){if(5===n.tag||6===n.tag)e.appendChild(n.stateNode);else if(4!==n.tag&&null!==n.child){n.child.return=n,n=n.child;continue}if(n===t)break;for(;null===n.sibling;){if(null===n.return||n.return===t)return;n=n.return}n.sibling.return=n.return,n=n.sibling}},qa=function(e,t,n,r,o){var a=e.memoizedProps;if(a!==r){var l,u,c=t.stateNode;switch(Yo(Uo.current),e=null,n){case"input":a=be(c,a),r=be(c,r),e=[];break;case"option":a=Ae(c,a),r=Ae(c,r),e=[];break;case"select":a=i({},a,{value:void 0}),r=i({},r,{value:void 0}),e=[];break;case"textarea":a=Se(c,a),r=Se(c,r),e=[];break;default:"function"!=typeof a.onClick&&"function"==typeof r.onClick&&(c.onclick=Fn)}for(l in Rn(n,r),n=null,a)if(!r.hasOwnProperty(l)&&a.hasOwnProperty(l)&&null!=a[l])if("style"===l)for(u in c=a[l])c.hasOwnProperty(u)&&(n||(n={}),n[u]="");else"dangerouslySetInnerHTML"!==l&&"children"!==l&&"suppressContentEditableWarning"!==l&&"suppressHydrationWarning"!==l&&"autoFocus"!==l&&(M.hasOwnProperty(l)?e||(e=[]):(e=e||[]).push(l,null));for(l in r){var s=r[l];if(c=null!=a?a[l]:void 0,r.hasOwnProperty(l)&&s!==c&&(null!=s||null!=c))if("style"===l)if(c){for(u in c)!c.hasOwnProperty(u)||s&&s.hasOwnProperty(u)||(n||(n={}),n[u]="");for(u in s)s.hasOwnProperty(u)&&c[u]!==s[u]&&(n||(n={}),n[u]=s[u])}else n||(e||(e=[]),e.push(l,n)),n=s;else"dangerouslySetInnerHTML"===l?(s=s?s.__html:void 0,c=c?c.__html:void 0,null!=s&&c!==s&&(e=e||[]).push(l,""+s)):"children"===l?c===s||"string"!=typeof s&&"number"!=typeof s||(e=e||[]).push(l,""+s):"suppressContentEditableWarning"!==l&&"suppressHydrationWarning"!==l&&(M.hasOwnProperty(l)?(null!=s&&Gn(o,l),e||c===s||(e=[])):(e=e||[]).push(l,s))}n&&(e=e||[]).push("style",n),o=e,(t.updateQueue=o)&&al(t)}},$a=function(e,t,n,r){n!==r&&al(t)};var sl="function"==typeof WeakSet?WeakSet:Set;function fl(e,t){var n=t.source,r=t.stack;null===r&&null!==n&&(r=q(n)),null!==n&&J(n.type),t=t.value,null!==e&&1===e.tag&&J(e.type);try{console.error(t)}catch(i){setTimeout((function(){throw i}))}}function dl(e){var t=e.ref;if(null!==t)if("function"==typeof t)try{t(null)}catch(n){wu(e,n)}else t.current=null}function Ml(e,t){switch(t.tag){case 0:case 11:case 15:gl(2,0,t);break;case 1:if(256&t.effectTag&&null!==e){var n=e.memoizedProps,r=e.memoizedState;t=(e=t.stateNode).getSnapshotBeforeUpdate(t.elementType===t.type?n:Ji(t.type,n),r),e.__reactInternalSnapshotBeforeUpdate=t}break;case 3:case 5:case 6:case 4:case 17:break;default:throw Error(a(163))}}function gl(e,t,n){if(null!==(n=null!==(n=n.updateQueue)?n.lastEffect:null)){var r=n=n.next;do{if(0!=(r.tag&e)){var i=r.destroy;r.destroy=void 0,void 0!==i&&i()}0!=(r.tag&t)&&(i=r.create,r.destroy=i()),r=r.next}while(r!==n)}}function pl(e,t,n){switch("function"==typeof zu&&zu(t),t.tag){case 0:case 11:case 14:case 15:if(null!==(e=t.updateQueue)&&null!==(e=e.lastEffect)){var r=e.next;Fi(97<n?97:n,(function(){var e=r;do{var n=e.destroy;if(void 0!==n){var i=t;try{n()}catch(o){wu(i,o)}}e=e.next}while(e!==r)}))}break;case 1:dl(t),"function"==typeof(n=t.stateNode).componentWillUnmount&&function(e,t){try{t.props=e.memoizedProps,t.state=e.memoizedState,t.componentWillUnmount()}catch(n){wu(e,n)}}(t,n);break;case 5:dl(t);break;case 4:Dl(e,t,n)}}function yl(e){var t=e.alternate;e.return=null,e.child=null,e.memoizedState=null,e.updateQueue=null,e.dependencies=null,e.alternate=null,e.firstEffect=null,e.lastEffect=null,e.pendingProps=null,e.memoizedProps=null,null!==t&&yl(t)}function Nl(e){return 5===e.tag||3===e.tag||4===e.tag}function Tl(e){e:{for(var t=e.return;null!==t;){if(Nl(t)){var n=t;break e}t=t.return}throw Error(a(160))}switch(t=n.stateNode,n.tag){case 5:var r=!1;break;case 3:case 4:t=t.containerInfo,r=!0;break;default:throw Error(a(161))}16&n.effectTag&&(Fe(t,""),n.effectTag&=-17);e:t:for(n=e;;){for(;null===n.sibling;){if(null===n.return||Nl(n.return)){n=null;break e}n=n.return}for(n.sibling.return=n.return,n=n.sibling;5!==n.tag&&6!==n.tag&&18!==n.tag;){if(2&n.effectTag)continue t;if(null===n.child||4===n.tag)continue t;n.child.return=n,n=n.child}if(!(2&n.effectTag)){n=n.stateNode;break e}}for(var i=e;;){var o=5===i.tag||6===i.tag;if(o){var l=o?i.stateNode:i.stateNode.instance;if(n)if(r){var u=l;l=n,8===(o=t).nodeType?o.parentNode.insertBefore(u,l):o.insertBefore(u,l)}else t.insertBefore(l,n);else r?(8===(u=t).nodeType?(o=u.parentNode).insertBefore(l,u):(o=u).appendChild(l),null!=(u=u._reactRootContainer)||null!==o.onclick||(o.onclick=Fn)):t.appendChild(l)}else if(4!==i.tag&&null!==i.child){i.child.return=i,i=i.child;continue}if(i===e)break;for(;null===i.sibling;){if(null===i.return||i.return===e)return;i=i.return}i.sibling.return=i.return,i=i.sibling}}function Dl(e,t,n){for(var r,i,o=t,l=!1;;){if(!l){l=o.return;e:for(;;){if(null===l)throw Error(a(160));switch(r=l.stateNode,l.tag){case 5:i=!1;break e;case 3:case 4:r=r.containerInfo,i=!0;break e}l=l.return}l=!0}if(5===o.tag||6===o.tag){e:for(var u=e,c=o,s=n,f=c;;)if(pl(u,f,s),null!==f.child&&4!==f.tag)f.child.return=f,f=f.child;else{if(f===c)break;for(;null===f.sibling;){if(null===f.return||f.return===c)break e;f=f.return}f.sibling.return=f.return,f=f.sibling}i?(u=r,c=o.stateNode,8===u.nodeType?u.parentNode.removeChild(c):u.removeChild(c)):r.removeChild(o.stateNode)}else if(4===o.tag){if(null!==o.child){r=o.stateNode.containerInfo,i=!0,o.child.return=o,o=o.child;continue}}else if(pl(e,o,n),null!==o.child){o.child.return=o,o=o.child;continue}if(o===t)break;for(;null===o.sibling;){if(null===o.return||o.return===t)return;4===(o=o.return).tag&&(l=!1)}o.sibling.return=o.return,o=o.sibling}}function ml(e,t){switch(t.tag){case 0:case 11:case 14:case 15:gl(4,8,t);break;case 1:break;case 5:var n=t.stateNode;if(null!=n){var r=t.memoizedProps,i=null!==e?e.memoizedProps:r;e=t.type;var o=t.updateQueue;if(t.updateQueue=null,null!==o){for(n[ar]=r,"input"===e&&"radio"===r.type&&null!=r.name&&ze(n,r),Bn(e,i),t=Bn(e,r),i=0;i<o.length;i+=2){var l=o[i],u=o[i+1];"style"===l?Yn(n,u):"dangerouslySetInnerHTML"===l?Ge(n,u):"children"===l?Fe(n,u):Ie(n,l,u,t)}switch(e){case"input":xe(n,r);break;case"textarea":Ue(n,r);break;case"select":t=n._wrapperState.wasMultiple,n._wrapperState.wasMultiple=!!r.multiple,null!=(e=r.value)?Ce(n,!!r.multiple,e,!1):t!==!!r.multiple&&(null!=r.defaultValue?Ce(n,!!r.multiple,r.defaultValue,!0):Ce(n,!!r.multiple,r.multiple?[]:"",!1))}}}break;case 6:if(null===t.stateNode)throw Error(a(162));t.stateNode.nodeValue=t.memoizedProps;break;case 3:(t=t.stateNode).hydrate&&(t.hydrate=!1,bt(t.containerInfo));break;case 12:break;case 13:if(n=t,null===t.memoizedState?r=!1:(r=!0,n=t.child,_l=Ri()),null!==n)e:for(e=n;;){if(5===e.tag)o=e.stateNode,r?"function"==typeof(o=o.style).setProperty?o.setProperty("display","none","important"):o.display="none":(o=e.stateNode,i=null!=(i=e.memoizedProps.style)&&i.hasOwnProperty("display")?i.display:null,o.style.display=Qn("display",i));else if(6===e.tag)e.stateNode.nodeValue=r?"":e.memoizedProps;else{if(13===e.tag&&null!==e.memoizedState&&null===e.memoizedState.dehydrated){(o=e.child.sibling).return=e,e=o;continue}if(null!==e.child){e.child.return=e,e=e.child;continue}}if(e===n)break e;for(;null===e.sibling;){if(null===e.return||e.return===n)break e;e=e.return}e.sibling.return=e.return,e=e.sibling}jl(t);break;case 19:jl(t);break;case 17:case 20:case 21:break;default:throw Error(a(163))}}function jl(e){var t=e.updateQueue;if(null!==t){e.updateQueue=null;var n=e.stateNode;null===n&&(n=e.stateNode=new sl),t.forEach((function(t){var r=bu.bind(null,e,t);n.has(t)||(n.add(t),t.then(r,r))}))}}var Il="function"==typeof WeakMap?WeakMap:Map;function hl(e,t,n){(n=fo(n,null)).tag=3,n.payload={element:null};var r=t.value;return n.callback=function(){Bl||(Bl=!0,Gl=r),fl(e,t)},n}function wl(e,t,n){(n=fo(n,null)).tag=3;var r=e.type.getDerivedStateFromError;if("function"==typeof r){var i=t.value;n.payload=function(){return fl(e,t),r(i)}}var o=e.stateNode;return null!==o&&"function"==typeof o.componentDidCatch&&(n.callback=function(){"function"!=typeof r&&(null===Fl?Fl=new Set([this]):Fl.add(this),fl(e,t));var n=t.stack;this.componentDidCatch(t.value,{componentStack:null!==n?n:""})}),n}var El,bl=Math.ceil,Ll=C.ReactCurrentDispatcher,zl=C.ReactCurrentOwner,xl=0,Ol=null,vl=null,Al=0,Cl=0,Sl=null,kl=1073741823,Ul=1073741823,Pl=null,Ql=0,Yl=!1,_l=0,Rl=null,Bl=!1,Gl=null,Fl=null,Wl=!1,Hl=null,Zl=90,Vl=null,Xl=0,Kl=null,Jl=0;function ql(){return 0!=(48&xl)?1073741821-(Ri()/10|0):0!==Jl?Jl:Jl=1073741821-(Ri()/10|0)}function $l(e,t,n){if(0==(2&(t=t.mode)))return 1073741823;var r=Bi();if(0==(4&t))return 99===r?1073741823:1073741822;if(0!=(16&xl))return Al;if(null!==n)e=Ki(e,0|n.timeoutMs||5e3,250);else switch(r){case 99:e=1073741823;break;case 98:e=Ki(e,150,100);break;case 97:case 96:e=Ki(e,5e3,250);break;case 95:e=2;break;default:throw Error(a(326))}return null!==Ol&&e===Al&&--e,e}function eu(e,t){if(50<Xl)throw Xl=0,Kl=null,Error(a(185));if(null!==(e=tu(e,t))){var n=Bi();1073741823===t?0!=(8&xl)&&0==(48&xl)?ou(e):(ru(e),0===xl&&Zi()):ru(e),0==(4&xl)||98!==n&&99!==n||(null===Vl?Vl=new Map([[e,t]]):(void 0===(n=Vl.get(e))||n>t)&&Vl.set(e,t))}}function tu(e,t){e.expirationTime<t&&(e.expirationTime=t);var n=e.alternate;null!==n&&n.expirationTime<t&&(n.expirationTime=t);var r=e.return,i=null;if(null===r&&3===e.tag)i=e.stateNode;else for(;null!==r;){if(n=r.alternate,r.childExpirationTime<t&&(r.childExpirationTime=t),null!==n&&n.childExpirationTime<t&&(n.childExpirationTime=t),null===r.return&&3===r.tag){i=r.stateNode;break}r=r.return}return null!==i&&(Ol===i&&(du(t),4===Cl&&Yu(i,Al)),_u(i,t)),i}function nu(e){var t=e.lastExpiredTime;return 0!==t?t:Qu(e,t=e.firstPendingTime)?(t=e.lastPingedTime)>(e=e.nextKnownPendingLevel)?t:e:t}function ru(e){if(0!==e.lastExpiredTime)e.callbackExpirationTime=1073741823,e.callbackPriority=99,e.callbackNode=Hi(ou.bind(null,e));else{var t=nu(e),n=e.callbackNode;if(0===t)null!==n&&(e.callbackNode=null,e.callbackExpirationTime=0,e.callbackPriority=90);else{var r=ql();if(1073741823===t?r=99:1===t||2===t?r=95:r=0>=(r=10*(1073741821-t)-10*(1073741821-r))?99:250>=r?98:5250>=r?97:95,null!==n){var i=e.callbackPriority;if(e.callbackExpirationTime===t&&i>=r)return;n!==ki&&Ei(n)}e.callbackExpirationTime=t,e.callbackPriority=r,t=1073741823===t?Hi(ou.bind(null,e)):Wi(r,iu.bind(null,e),{timeout:10*(1073741821-t)-Ri()}),e.callbackNode=t}}}function iu(e,t){if(Jl=0,t)return Ru(e,t=ql()),ru(e),null;var n=nu(e);if(0!==n){if(t=e.callbackNode,0!=(48&xl))throw Error(a(327));if(ju(),e===Ol&&n===Al||uu(e,n),null!==vl){var r=xl;xl|=16;for(var i=su();;)try{gu();break}catch(u){cu(e,u)}if(no(),xl=r,Ll.current=i,1===Cl)throw t=Sl,uu(e,n),Yu(e,n),ru(e),t;if(null===vl)switch(i=e.finishedWork=e.current.alternate,e.finishedExpirationTime=n,r=Cl,Ol=null,r){case 0:case 1:throw Error(a(345));case 2:Ru(e,2<n?2:n);break;case 3:if(Yu(e,n),n===(r=e.lastSuspendedTime)&&(e.nextKnownPendingLevel=Nu(i)),1073741823===kl&&10<(i=_l+500-Ri())){if(Yl){var o=e.lastPingedTime;if(0===o||o>=n){e.lastPingedTime=n,uu(e,n);break}}if(0!==(o=nu(e))&&o!==n)break;if(0!==r&&r!==n){e.lastPingedTime=r;break}e.timeoutHandle=er(Tu.bind(null,e),i);break}Tu(e);break;case 4:if(Yu(e,n),n===(r=e.lastSuspendedTime)&&(e.nextKnownPendingLevel=Nu(i)),Yl&&(0===(i=e.lastPingedTime)||i>=n)){e.lastPingedTime=n,uu(e,n);break}if(0!==(i=nu(e))&&i!==n)break;if(0!==r&&r!==n){e.lastPingedTime=r;break}if(1073741823!==Ul?r=10*(1073741821-Ul)-Ri():1073741823===kl?r=0:(r=10*(1073741821-kl)-5e3,0>(r=(i=Ri())-r)&&(r=0),(n=10*(1073741821-n)-i)<(r=(120>r?120:480>r?480:1080>r?1080:1920>r?1920:3e3>r?3e3:4320>r?4320:1960*bl(r/1960))-r)&&(r=n)),10<r){e.timeoutHandle=er(Tu.bind(null,e),r);break}Tu(e);break;case 5:if(1073741823!==kl&&null!==Pl){o=kl;var l=Pl;if(0>=(r=0|l.busyMinDurationMs)?r=0:(i=0|l.busyDelayMs,r=(o=Ri()-(10*(1073741821-o)-(0|l.timeoutMs||5e3)))<=i?0:i+r-o),10<r){Yu(e,n),e.timeoutHandle=er(Tu.bind(null,e),r);break}}Tu(e);break;default:throw Error(a(329))}if(ru(e),e.callbackNode===t)return iu.bind(null,e)}}return null}function ou(e){var t=e.lastExpiredTime;if(t=0!==t?t:1073741823,e.finishedExpirationTime===t)Tu(e);else{if(0!=(48&xl))throw Error(a(327));if(ju(),e===Ol&&t===Al||uu(e,t),null!==vl){var n=xl;xl|=16;for(var r=su();;)try{Mu();break}catch(i){cu(e,i)}if(no(),xl=n,Ll.current=r,1===Cl)throw n=Sl,uu(e,t),Yu(e,t),ru(e),n;if(null!==vl)throw Error(a(261));e.finishedWork=e.current.alternate,e.finishedExpirationTime=t,Ol=null,Tu(e),ru(e)}}return null}function au(e,t){var n=xl;xl|=1;try{return e(t)}finally{0===(xl=n)&&Zi()}}function lu(e,t){var n=xl;xl&=-2,xl|=8;try{return e(t)}finally{0===(xl=n)&&Zi()}}function uu(e,t){e.finishedWork=null,e.finishedExpirationTime=0;var n=e.timeoutHandle;if(-1!==n&&(e.timeoutHandle=-1,tr(n)),null!==vl)for(n=vl.return;null!==n;){var r=n;switch(r.tag){case 1:var i=r.type.childContextTypes;null!=i&&Ni();break;case 3:Ro(),Ti();break;case 5:Go(r);break;case 4:Ro();break;case 13:case 19:ci(Fo);break;case 10:io(r)}n=n.return}Ol=e,vl=Au(e.current,null),Al=t,Cl=0,Sl=null,Ul=kl=1073741823,Pl=null,Ql=0,Yl=!1}function cu(e,t){for(;;){try{if(no(),fa(),null===vl||null===vl.return)return Cl=1,Sl=t,null;e:{var n=e,r=vl.return,i=vl,o=t;if(t=Al,i.effectTag|=2048,i.firstEffect=i.lastEffect=null,null!==o&&"object"==typeof o&&"function"==typeof o.then){var a=o,l=0!=(1&Fo.current),u=r;do{var c;if(c=13===u.tag){var s=u.memoizedState;if(null!==s)c=null!==s.dehydrated;else{var f=u.memoizedProps;c=void 0!==f.fallback&&(!0!==f.unstable_avoidThisFallback||!l)}}if(c){var d=u.updateQueue;if(null===d){var M=new Set;M.add(a),u.updateQueue=M}else d.add(a);if(0==(2&u.mode)){if(u.effectTag|=64,i.effectTag&=-2981,1===i.tag)if(null===i.alternate)i.tag=17;else{var g=fo(1073741823,null);g.tag=2,go(i,g)}i.expirationTime=1073741823;break e}o=void 0,i=t;var p=n.pingCache;if(null===p?(p=n.pingCache=new Il,o=new Set,p.set(a,o)):void 0===(o=p.get(a))&&(o=new Set,p.set(a,o)),!o.has(i)){o.add(i);var y=Eu.bind(null,n,a,i);a.then(y,y)}u.effectTag|=4096,u.expirationTime=t;break e}u=u.return}while(null!==u);o=Error((J(i.type)||"A React component")+" suspended while rendering, but no fallback UI was specified.\n\nAdd a <Suspense fallback=...> component higher in the tree to provide a loading indicator or placeholder to display."+q(i))}5!==Cl&&(Cl=2),o=cl(o,i),u=r;do{switch(u.tag){case 3:a=o,u.effectTag|=4096,u.expirationTime=t,po(u,hl(u,a,t));break e;case 1:a=o;var N=u.type,T=u.stateNode;if(0==(64&u.effectTag)&&("function"==typeof N.getDerivedStateFromError||null!==T&&"function"==typeof T.componentDidCatch&&(null===Fl||!Fl.has(T)))){u.effectTag|=4096,u.expirationTime=t,po(u,wl(u,a,t));break e}}u=u.return}while(null!==u)}vl=yu(vl)}catch(D){t=D;continue}break}}function su(){var e=Ll.current;return Ll.current=za,null===e?za:e}function fu(e,t){e<kl&&2<e&&(kl=e),null!==t&&e<Ul&&2<e&&(Ul=e,Pl=t)}function du(e){e>Ql&&(Ql=e)}function Mu(){for(;null!==vl;)vl=pu(vl)}function gu(){for(;null!==vl&&!bi();)vl=pu(vl)}function pu(e){var t=El(e.alternate,e,Al);return e.memoizedProps=e.pendingProps,null===t&&(t=yu(e)),zl.current=null,t}function yu(e){vl=e;do{var t=vl.alternate;if(e=vl.return,0==(2048&vl.effectTag)){e:{var n=t,r=Al,o=(t=vl).pendingProps;switch(t.tag){case 2:case 16:break;case 15:case 0:break;case 1:yi(t.type)&&Ni();break;case 3:Ro(),Ti(),(o=t.stateNode).pendingContext&&(o.context=o.pendingContext,o.pendingContext=null),(null===n||null===n.child)&&Qa(t)&&al(t);break;case 5:Go(t),r=Yo(Qo.current);var l=t.type;if(null!==n&&null!=t.stateNode)qa(n,t,l,o,r),n.ref!==t.ref&&(t.effectTag|=128);else if(o){var u=Yo(Uo.current);if(Qa(t)){var c=(o=t).stateNode;n=o.type;var s=o.memoizedProps,f=r;switch(c[or]=o,c[ar]=s,l=void 0,r=c,n){case"iframe":case"object":case"embed":En("load",r);break;case"video":case"audio":for(c=0;c<et.length;c++)En(et[c],r);break;case"source":En("error",r);break;case"img":case"image":case"link":En("error",r),En("load",r);break;case"form":En("reset",r),En("submit",r);break;case"details":En("toggle",r);break;case"input":Le(r,s),En("invalid",r),Gn(f,"onChange");break;case"select":r._wrapperState={wasMultiple:!!s.multiple},En("invalid",r),Gn(f,"onChange");break;case"textarea":ke(r,s),En("invalid",r),Gn(f,"onChange")}for(l in Rn(n,s),c=null,s)s.hasOwnProperty(l)&&(u=s[l],"children"===l?"string"==typeof u?r.textContent!==u&&(c=["children",u]):"number"==typeof u&&r.textContent!==""+u&&(c=["children",""+u]):M.hasOwnProperty(l)&&null!=u&&Gn(f,l));switch(n){case"input":we(r),Oe(r,s,!0);break;case"textarea":we(r),Pe(r);break;case"select":case"option":break;default:"function"==typeof s.onClick&&(r.onclick=Fn)}l=c,o.updateQueue=l,(o=null!==l)&&al(t)}else{n=t,f=l,s=o,c=9===r.nodeType?r:r.ownerDocument,u===Qe&&(u=_e(f)),u===Qe?"script"===f?((s=c.createElement("div")).innerHTML="<script><\/script>",c=s.removeChild(s.firstChild)):"string"==typeof s.is?c=c.createElement(f,{is:s.is}):(c=c.createElement(f),"select"===f&&(f=c,s.multiple?f.multiple=!0:s.size&&(f.size=s.size))):c=c.createElementNS(u,f),(s=c)[or]=n,s[ar]=o,Ja(s,t),t.stateNode=s;var d=r,g=Bn(f=l,n=o);switch(f){case"iframe":case"object":case"embed":En("load",s),r=n;break;case"video":case"audio":for(r=0;r<et.length;r++)En(et[r],s);r=n;break;case"source":En("error",s),r=n;break;case"img":case"image":case"link":En("error",s),En("load",s),r=n;break;case"form":En("reset",s),En("submit",s),r=n;break;case"details":En("toggle",s),r=n;break;case"input":Le(s,n),r=be(s,n),En("invalid",s),Gn(d,"onChange");break;case"option":r=Ae(s,n);break;case"select":s._wrapperState={wasMultiple:!!n.multiple},r=i({},n,{value:void 0}),En("invalid",s),Gn(d,"onChange");break;case"textarea":ke(s,n),r=Se(s,n),En("invalid",s),Gn(d,"onChange");break;default:r=n}Rn(f,r),c=void 0,u=f;var p=s,y=r;for(c in y)if(y.hasOwnProperty(c)){var N=y[c];"style"===c?Yn(p,N):"dangerouslySetInnerHTML"===c?null!=(N=N?N.__html:void 0)&&Ge(p,N):"children"===c?"string"==typeof N?("textarea"!==u||""!==N)&&Fe(p,N):"number"==typeof N&&Fe(p,""+N):"suppressContentEditableWarning"!==c&&"suppressHydrationWarning"!==c&&"autoFocus"!==c&&(M.hasOwnProperty(c)?null!=N&&Gn(d,c):null!=N&&Ie(p,c,N,g))}switch(f){case"input":we(s),Oe(s,n,!1);break;case"textarea":we(s),Pe(s);break;case"option":null!=n.value&&s.setAttribute("value",""+je(n.value));break;case"select":(r=s).multiple=!!n.multiple,null!=(s=n.value)?Ce(r,!!n.multiple,s,!1):null!=n.defaultValue&&Ce(r,!!n.multiple,n.defaultValue,!0);break;default:"function"==typeof r.onClick&&(s.onclick=Fn)}(o=qn(l,o))&&al(t)}null!==t.ref&&(t.effectTag|=128)}else if(null===t.stateNode)throw Error(a(166));break;case 6:if(n&&null!=t.stateNode)$a(0,t,n.memoizedProps,o);else{if("string"!=typeof o&&null===t.stateNode)throw Error(a(166));r=Yo(Qo.current),Yo(Uo.current),Qa(t)?(l=(o=t).stateNode,r=o.memoizedProps,l[or]=o,(o=l.nodeValue!==r)&&al(t)):(l=t,(o=(9===r.nodeType?r:r.ownerDocument).createTextNode(o))[or]=l,t.stateNode=o)}break;case 11:break;case 13:if(ci(Fo),o=t.memoizedState,0!=(64&t.effectTag)){t.expirationTime=r;break e}o=null!==o,l=!1,null===n?void 0!==t.memoizedProps.fallback&&Qa(t):(l=null!==(r=n.memoizedState),o||null===r||null!==(r=n.child.sibling)&&(null!==(s=t.firstEffect)?(t.firstEffect=r,r.nextEffect=s):(t.firstEffect=t.lastEffect=r,r.nextEffect=null),r.effectTag=8)),o&&!l&&0!=(2&t.mode)&&(null===n&&!0!==t.memoizedProps.unstable_avoidThisFallback||0!=(1&Fo.current)?0===Cl&&(Cl=3):(0!==Cl&&3!==Cl||(Cl=4),0!==Ql&&null!==Ol&&(Yu(Ol,Al),_u(Ol,Ql)))),(o||l)&&(t.effectTag|=4);break;case 7:case 8:case 12:break;case 4:Ro();break;case 10:io(t);break;case 9:case 14:break;case 17:yi(t.type)&&Ni();break;case 19:if(ci(Fo),null===(o=t.memoizedState))break;if(l=0!=(64&t.effectTag),null===(s=o.rendering)){if(l)ll(o,!1);else if(0!==Cl||null!==n&&0!=(64&n.effectTag))for(n=t.child;null!==n;){if(null!==(s=Wo(n))){for(t.effectTag|=64,ll(o,!1),null!==(l=s.updateQueue)&&(t.updateQueue=l,t.effectTag|=4),null===o.lastEffect&&(t.firstEffect=null),t.lastEffect=o.lastEffect,o=r,l=t.child;null!==l;)n=o,(r=l).effectTag&=2,r.nextEffect=null,r.firstEffect=null,r.lastEffect=null,null===(s=r.alternate)?(r.childExpirationTime=0,r.expirationTime=n,r.child=null,r.memoizedProps=null,r.memoizedState=null,r.updateQueue=null,r.dependencies=null):(r.childExpirationTime=s.childExpirationTime,r.expirationTime=s.expirationTime,r.child=s.child,r.memoizedProps=s.memoizedProps,r.memoizedState=s.memoizedState,r.updateQueue=s.updateQueue,n=s.dependencies,r.dependencies=null===n?null:{expirationTime:n.expirationTime,firstContext:n.firstContext,responders:n.responders}),l=l.sibling;si(Fo,1&Fo.current|2),t=t.child;break e}n=n.sibling}}else{if(!l)if(null!==(n=Wo(s))){if(t.effectTag|=64,l=!0,null!==(r=n.updateQueue)&&(t.updateQueue=r,t.effectTag|=4),ll(o,!0),null===o.tail&&"hidden"===o.tailMode&&!s.alternate){null!==(t=t.lastEffect=o.lastEffect)&&(t.nextEffect=null);break}}else Ri()>o.tailExpiration&&1<r&&(t.effectTag|=64,l=!0,ll(o,!1),t.expirationTime=t.childExpirationTime=r-1);o.isBackwards?(s.sibling=t.child,t.child=s):(null!==(r=o.last)?r.sibling=s:t.child=s,o.last=s)}if(null!==o.tail){0===o.tailExpiration&&(o.tailExpiration=Ri()+500),r=o.tail,o.rendering=r,o.tail=r.sibling,o.lastEffect=t.lastEffect,r.sibling=null,o=Fo.current,si(Fo,o=l?1&o|2:1&o),t=r;break e}break;case 20:case 21:break;default:throw Error(a(156,t.tag))}t=null}if(o=vl,1===Al||1!==o.childExpirationTime){for(l=0,r=o.child;null!==r;)(n=r.expirationTime)>l&&(l=n),(s=r.childExpirationTime)>l&&(l=s),r=r.sibling;o.childExpirationTime=l}if(null!==t)return t;null!==e&&0==(2048&e.effectTag)&&(null===e.firstEffect&&(e.firstEffect=vl.firstEffect),null!==vl.lastEffect&&(null!==e.lastEffect&&(e.lastEffect.nextEffect=vl.firstEffect),e.lastEffect=vl.lastEffect),1<vl.effectTag&&(null!==e.lastEffect?e.lastEffect.nextEffect=vl:e.firstEffect=vl,e.lastEffect=vl))}else{if(null!==(t=ul(vl)))return t.effectTag&=2047,t;null!==e&&(e.firstEffect=e.lastEffect=null,e.effectTag|=2048)}if(null!==(t=vl.sibling))return t;vl=e}while(null!==vl);return 0===Cl&&(Cl=5),null}function Nu(e){var t=e.expirationTime;return t>(e=e.childExpirationTime)?t:e}function Tu(e){var t=Bi();return Fi(99,Du.bind(null,e,t)),null}function Du(e,t){do{ju()}while(null!==Hl);if(0!=(48&xl))throw Error(a(327));var n=e.finishedWork,r=e.finishedExpirationTime;if(null===n)return null;if(e.finishedWork=null,e.finishedExpirationTime=0,n===e.current)throw Error(a(177));e.callbackNode=null,e.callbackExpirationTime=0,e.callbackPriority=90,e.nextKnownPendingLevel=0;var i=Nu(n);if(e.firstPendingTime=i,r<=e.lastSuspendedTime?e.firstSuspendedTime=e.lastSuspendedTime=e.nextKnownPendingLevel=0:r<=e.firstSuspendedTime&&(e.firstSuspendedTime=r-1),r<=e.lastPingedTime&&(e.lastPingedTime=0),r<=e.lastExpiredTime&&(e.lastExpiredTime=0),e===Ol&&(vl=Ol=null,Al=0),1<n.effectTag?null!==n.lastEffect?(n.lastEffect.nextEffect=n,i=n.firstEffect):i=n:i=n.firstEffect,null!==i){var o=xl;xl|=32,zl.current=null,Kn=wn;var l=Vn();if(Xn(l)){if("selectionStart"in l)var u={start:l.selectionStart,end:l.selectionEnd};else e:{var c=(u=(u=l.ownerDocument)&&u.defaultView||window).getSelection&&u.getSelection();if(c&&0!==c.rangeCount){u=c.anchorNode;var s=c.anchorOffset,f=c.focusNode;c=c.focusOffset;try{u.nodeType,f.nodeType}catch(k){u=null;break e}var d=0,M=-1,g=-1,p=0,y=0,N=l,T=null;t:for(;;){for(var D;N!==u||0!==s&&3!==N.nodeType||(M=d+s),N!==f||0!==c&&3!==N.nodeType||(g=d+c),3===N.nodeType&&(d+=N.nodeValue.length),null!==(D=N.firstChild);)T=N,N=D;for(;;){if(N===l)break t;if(T===u&&++p===s&&(M=d),T===f&&++y===c&&(g=d),null!==(D=N.nextSibling))break;T=(N=T).parentNode}N=D}u=-1===M||-1===g?null:{start:M,end:g}}else u=null}u=u||{start:0,end:0}}else u=null;Jn={focusedElem:l,selectionRange:u},wn=!1,Rl=i;do{try{mu()}catch(k){if(null===Rl)throw Error(a(330));wu(Rl,k),Rl=Rl.nextEffect}}while(null!==Rl);Rl=i;do{try{for(l=e,u=t;null!==Rl;){var m=Rl.effectTag;if(16&m&&Fe(Rl.stateNode,""),128&m){var j=Rl.alternate;if(null!==j){var I=j.ref;null!==I&&("function"==typeof I?I(null):I.current=null)}}switch(1038&m){case 2:Tl(Rl),Rl.effectTag&=-3;break;case 6:Tl(Rl),Rl.effectTag&=-3,ml(Rl.alternate,Rl);break;case 1024:Rl.effectTag&=-1025;break;case 1028:Rl.effectTag&=-1025,ml(Rl.alternate,Rl);break;case 4:ml(Rl.alternate,Rl);break;case 8:Dl(l,s=Rl,u),yl(s)}Rl=Rl.nextEffect}}catch(k){if(null===Rl)throw Error(a(330));wu(Rl,k),Rl=Rl.nextEffect}}while(null!==Rl);if(I=Jn,j=Vn(),m=I.focusedElem,u=I.selectionRange,j!==m&&m&&m.ownerDocument&&function e(t,n){return!(!t||!n)&&(t===n||(!t||3!==t.nodeType)&&(n&&3===n.nodeType?e(t,n.parentNode):"contains"in t?t.contains(n):!!t.compareDocumentPosition&&!!(16&t.compareDocumentPosition(n))))}(m.ownerDocument.documentElement,m)){null!==u&&Xn(m)&&(j=u.start,void 0===(I=u.end)&&(I=j),"selectionStart"in m?(m.selectionStart=j,m.selectionEnd=Math.min(I,m.value.length)):(I=(j=m.ownerDocument||document)&&j.defaultView||window).getSelection&&(I=I.getSelection(),s=m.textContent.length,l=Math.min(u.start,s),u=void 0===u.end?l:Math.min(u.end,s),!I.extend&&l>u&&(s=u,u=l,l=s),s=Zn(m,l),f=Zn(m,u),s&&f&&(1!==I.rangeCount||I.anchorNode!==s.node||I.anchorOffset!==s.offset||I.focusNode!==f.node||I.focusOffset!==f.offset)&&((j=j.createRange()).setStart(s.node,s.offset),I.removeAllRanges(),l>u?(I.addRange(j),I.extend(f.node,f.offset)):(j.setEnd(f.node,f.offset),I.addRange(j))))),j=[];for(I=m;I=I.parentNode;)1===I.nodeType&&j.push({element:I,left:I.scrollLeft,top:I.scrollTop});for("function"==typeof m.focus&&m.focus(),m=0;m<j.length;m++)(I=j[m]).element.scrollLeft=I.left,I.element.scrollTop=I.top}Jn=null,wn=!!Kn,Kn=null,e.current=n,Rl=i;do{try{for(m=r;null!==Rl;){var h=Rl.effectTag;if(36&h){var w=Rl.alternate;switch(I=m,(j=Rl).tag){case 0:case 11:case 15:gl(16,32,j);break;case 1:var E=j.stateNode;if(4&j.effectTag)if(null===w)E.componentDidMount();else{var b=j.elementType===j.type?w.memoizedProps:Ji(j.type,w.memoizedProps);E.componentDidUpdate(b,w.memoizedState,E.__reactInternalSnapshotBeforeUpdate)}var L=j.updateQueue;null!==L&&Do(0,L,E);break;case 3:var z=j.updateQueue;if(null!==z){if(l=null,null!==j.child)switch(j.child.tag){case 5:l=j.child.stateNode;break;case 1:l=j.child.stateNode}Do(0,z,l)}break;case 5:var x=j.stateNode;null===w&&4&j.effectTag&&qn(j.type,j.memoizedProps)&&x.focus();break;case 6:case 4:case 12:break;case 13:if(null===j.memoizedState){var O=j.alternate;if(null!==O){var v=O.memoizedState;if(null!==v){var A=v.dehydrated;null!==A&&bt(A)}}}break;case 19:case 17:case 20:case 21:break;default:throw Error(a(163))}}if(128&h){j=void 0;var C=Rl.ref;if(null!==C){var S=Rl.stateNode;switch(Rl.tag){case 5:j=S;break;default:j=S}"function"==typeof C?C(j):C.current=j}}Rl=Rl.nextEffect}}catch(k){if(null===Rl)throw Error(a(330));wu(Rl,k),Rl=Rl.nextEffect}}while(null!==Rl);Rl=null,Ui(),xl=o}else e.current=n;if(Wl)Wl=!1,Hl=e,Zl=t;else for(Rl=i;null!==Rl;)t=Rl.nextEffect,Rl.nextEffect=null,Rl=t;if(0===(t=e.firstPendingTime)&&(Fl=null),1073741823===t?e===Kl?Xl++:(Xl=0,Kl=e):Xl=0,"function"==typeof Lu&&Lu(n.stateNode,r),ru(e),Bl)throw Bl=!1,e=Gl,Gl=null,e;return 0!=(8&xl)?null:(Zi(),null)}function mu(){for(;null!==Rl;){var e=Rl.effectTag;0!=(256&e)&&Ml(Rl.alternate,Rl),0==(512&e)||Wl||(Wl=!0,Wi(97,(function(){return ju(),null}))),Rl=Rl.nextEffect}}function ju(){if(90!==Zl){var e=97<Zl?97:Zl;return Zl=90,Fi(e,Iu)}}function Iu(){if(null===Hl)return!1;var e=Hl;if(Hl=null,0!=(48&xl))throw Error(a(331));var t=xl;for(xl|=32,e=e.current.firstEffect;null!==e;){try{var n=e;if(0!=(512&n.effectTag))switch(n.tag){case 0:case 11:case 15:gl(128,0,n),gl(0,64,n)}}catch(r){if(null===e)throw Error(a(330));wu(e,r)}n=e.nextEffect,e.nextEffect=null,e=n}return xl=t,Zi(),!0}function hu(e,t,n){go(e,t=hl(e,t=cl(n,t),1073741823)),null!==(e=tu(e,1073741823))&&ru(e)}function wu(e,t){if(3===e.tag)hu(e,e,t);else for(var n=e.return;null!==n;){if(3===n.tag){hu(n,e,t);break}if(1===n.tag){var r=n.stateNode;if("function"==typeof n.type.getDerivedStateFromError||"function"==typeof r.componentDidCatch&&(null===Fl||!Fl.has(r))){go(n,e=wl(n,e=cl(t,e),1073741823)),null!==(n=tu(n,1073741823))&&ru(n);break}}n=n.return}}function Eu(e,t,n){var r=e.pingCache;null!==r&&r.delete(t),Ol===e&&Al===n?4===Cl||3===Cl&&1073741823===kl&&Ri()-_l<500?uu(e,Al):Yl=!0:Qu(e,n)&&(0!==(t=e.lastPingedTime)&&t<n||(e.lastPingedTime=n,e.finishedExpirationTime===n&&(e.finishedExpirationTime=0,e.finishedWork=null),ru(e)))}function bu(e,t){var n=e.stateNode;null!==n&&n.delete(t),0===(t=0)&&(t=$l(t=ql(),e,null)),null!==(e=tu(e,t))&&ru(e)}El=function(e,t,n){var r=t.expirationTime;if(null!==e){var i=t.pendingProps;if(e.memoizedProps!==i||Mi.current)Ra=!0;else{if(r<n){switch(Ra=!1,t.tag){case 3:Ka(t),Ya();break;case 5:if(Bo(t),4&t.mode&&1!==n&&i.hidden)return t.expirationTime=t.childExpirationTime=1,null;break;case 1:yi(t.type)&&ji(t);break;case 4:_o(t,t.stateNode.containerInfo);break;case 10:ro(t,t.memoizedProps.value);break;case 13:if(null!==t.memoizedState)return 0!==(r=t.child.childExpirationTime)&&r>=n?tl(e,t,n):(si(Fo,1&Fo.current),null!==(t=ol(e,t,n))?t.sibling:null);si(Fo,1&Fo.current);break;case 19:if(r=t.childExpirationTime>=n,0!=(64&e.effectTag)){if(r)return il(e,t,n);t.effectTag|=64}if(null!==(i=t.memoizedState)&&(i.rendering=null,i.tail=null),si(Fo,Fo.current),!r)return null}return ol(e,t,n)}Ra=!1}}else Ra=!1;switch(t.expirationTime=0,t.tag){case 2:if(r=t.type,null!==e&&(e.alternate=null,t.alternate=null,t.effectTag|=2),e=t.pendingProps,i=pi(t,di.current),ao(t,n),i=sa(null,t,r,e,i,n),t.effectTag|=1,"object"==typeof i&&null!==i&&"function"==typeof i.render&&void 0===i.$$typeof){if(t.tag=1,fa(),yi(r)){var o=!0;ji(t)}else o=!1;t.memoizedState=null!==i.state&&void 0!==i.state?i.state:null;var l=r.getDerivedStateFromProps;"function"==typeof l&&ho(t,r,l,e),i.updater=wo,t.stateNode=i,i._reactInternalFiber=t,zo(t,r,e,n),t=Xa(null,t,r,!0,o,n)}else t.tag=0,Ba(null,t,i,n),t=t.child;return t;case 16:if(i=t.elementType,null!==e&&(e.alternate=null,t.alternate=null,t.effectTag|=2),e=t.pendingProps,function(e){if(-1===e._status){e._status=0;var t=e._ctor;t=t(),e._result=t,t.then((function(t){0===e._status&&(t=t.default,e._status=1,e._result=t)}),(function(t){0===e._status&&(e._status=2,e._result=t)}))}}(i),1!==i._status)throw i._result;switch(i=i._result,t.type=i,o=t.tag=function(e){if("function"==typeof e)return vu(e)?1:0;if(null!=e){if((e=e.$$typeof)===F)return 11;if(e===Z)return 14}return 2}(i),e=Ji(i,e),o){case 0:t=Za(null,t,i,e,n);break;case 1:t=Va(null,t,i,e,n);break;case 11:t=Ga(null,t,i,e,n);break;case 14:t=Fa(null,t,i,Ji(i.type,e),r,n);break;default:throw Error(a(306,i,""))}return t;case 0:return r=t.type,i=t.pendingProps,Za(e,t,r,i=t.elementType===r?i:Ji(r,i),n);case 1:return r=t.type,i=t.pendingProps,Va(e,t,r,i=t.elementType===r?i:Ji(r,i),n);case 3:if(Ka(t),null===(r=t.updateQueue))throw Error(a(282));if(i=null!==(i=t.memoizedState)?i.element:null,To(t,r,t.pendingProps,null,n),(r=t.memoizedState.element)===i)Ya(),t=ol(e,t,n);else{if((i=t.stateNode.hydrate)&&(Aa=nr(t.stateNode.containerInfo.firstChild),va=t,i=Ca=!0),i)for(n=So(t,null,r,n),t.child=n;n;)n.effectTag=-3&n.effectTag|1024,n=n.sibling;else Ba(e,t,r,n),Ya();t=t.child}return t;case 5:return Bo(t),null===e&&Ua(t),r=t.type,i=t.pendingProps,o=null!==e?e.memoizedProps:null,l=i.children,$n(r,i)?l=null:null!==o&&$n(r,o)&&(t.effectTag|=16),Ha(e,t),4&t.mode&&1!==n&&i.hidden?(t.expirationTime=t.childExpirationTime=1,t=null):(Ba(e,t,l,n),t=t.child),t;case 6:return null===e&&Ua(t),null;case 13:return tl(e,t,n);case 4:return _o(t,t.stateNode.containerInfo),r=t.pendingProps,null===e?t.child=Co(t,null,r,n):Ba(e,t,r,n),t.child;case 11:return r=t.type,i=t.pendingProps,Ga(e,t,r,i=t.elementType===r?i:Ji(r,i),n);case 7:return Ba(e,t,t.pendingProps,n),t.child;case 8:case 12:return Ba(e,t,t.pendingProps.children,n),t.child;case 10:e:{if(r=t.type._context,i=t.pendingProps,l=t.memoizedProps,ro(t,o=i.value),null!==l){var u=l.value;if(0===(o=Kr(u,o)?0:0|("function"==typeof r._calculateChangedBits?r._calculateChangedBits(u,o):1073741823))){if(l.children===i.children&&!Mi.current){t=ol(e,t,n);break e}}else for(null!==(u=t.child)&&(u.return=t);null!==u;){var c=u.dependencies;if(null!==c){l=u.child;for(var s=c.firstContext;null!==s;){if(s.context===r&&0!=(s.observedBits&o)){1===u.tag&&((s=fo(n,null)).tag=2,go(u,s)),u.expirationTime<n&&(u.expirationTime=n),null!==(s=u.alternate)&&s.expirationTime<n&&(s.expirationTime=n),oo(u.return,n),c.expirationTime<n&&(c.expirationTime=n);break}s=s.next}}else l=10===u.tag&&u.type===t.type?null:u.child;if(null!==l)l.return=u;else for(l=u;null!==l;){if(l===t){l=null;break}if(null!==(u=l.sibling)){u.return=l.return,l=u;break}l=l.return}u=l}}Ba(e,t,i.children,n),t=t.child}return t;case 9:return i=t.type,r=(o=t.pendingProps).children,ao(t,n),r=r(i=lo(i,o.unstable_observedBits)),t.effectTag|=1,Ba(e,t,r,n),t.child;case 14:return o=Ji(i=t.type,t.pendingProps),Fa(e,t,i,o=Ji(i.type,o),r,n);case 15:return Wa(e,t,t.type,t.pendingProps,r,n);case 17:return r=t.type,i=t.pendingProps,i=t.elementType===r?i:Ji(r,i),null!==e&&(e.alternate=null,t.alternate=null,t.effectTag|=2),t.tag=1,yi(r)?(e=!0,ji(t)):e=!1,ao(t,n),bo(t,r,i),zo(t,r,i,n),Xa(null,t,r,!0,e,n);case 19:return il(e,t,n)}throw Error(a(156,t.tag))};var Lu=null,zu=null;function xu(e,t,n,r){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.effectTag=0,this.lastEffect=this.firstEffect=this.nextEffect=null,this.childExpirationTime=this.expirationTime=0,this.alternate=null}function Ou(e,t,n,r){return new xu(e,t,n,r)}function vu(e){return!(!(e=e.prototype)||!e.isReactComponent)}function Au(e,t){var n=e.alternate;return null===n?((n=Ou(e.tag,t,e.key,e.mode)).elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.effectTag=0,n.nextEffect=null,n.firstEffect=null,n.lastEffect=null),n.childExpirationTime=e.childExpirationTime,n.expirationTime=e.expirationTime,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=null===t?null:{expirationTime:t.expirationTime,firstContext:t.firstContext,responders:t.responders},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function Cu(e,t,n,r,i,o){var l=2;if(r=e,"function"==typeof e)vu(e)&&(l=1);else if("string"==typeof e)l=5;else e:switch(e){case Q:return Su(n.children,i,o,t);case G:l=8,i|=7;break;case Y:l=8,i|=1;break;case _:return(e=Ou(12,n,t,8|i)).elementType=_,e.type=_,e.expirationTime=o,e;case W:return(e=Ou(13,n,t,i)).type=W,e.elementType=W,e.expirationTime=o,e;case H:return(e=Ou(19,n,t,i)).elementType=H,e.expirationTime=o,e;default:if("object"==typeof e&&null!==e)switch(e.$$typeof){case R:l=10;break e;case B:l=9;break e;case F:l=11;break e;case Z:l=14;break e;case V:l=16,r=null;break e}throw Error(a(130,null==e?e:typeof e,""))}return(t=Ou(l,n,t,i)).elementType=e,t.type=r,t.expirationTime=o,t}function Su(e,t,n,r){return(e=Ou(7,e,r,t)).expirationTime=n,e}function ku(e,t,n){return(e=Ou(6,e,null,t)).expirationTime=n,e}function Uu(e,t,n){return(t=Ou(4,null!==e.children?e.children:[],e.key,t)).expirationTime=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function Pu(e,t,n){this.tag=t,this.current=null,this.containerInfo=e,this.pingCache=this.pendingChildren=null,this.finishedExpirationTime=0,this.finishedWork=null,this.timeoutHandle=-1,this.pendingContext=this.context=null,this.hydrate=n,this.callbackNode=null,this.callbackPriority=90,this.lastExpiredTime=this.lastPingedTime=this.nextKnownPendingLevel=this.lastSuspendedTime=this.firstSuspendedTime=this.firstPendingTime=0}function Qu(e,t){var n=e.firstSuspendedTime;return e=e.lastSuspendedTime,0!==n&&n>=t&&e<=t}function Yu(e,t){var n=e.firstSuspendedTime,r=e.lastSuspendedTime;n<t&&(e.firstSuspendedTime=t),(r>t||0===n)&&(e.lastSuspendedTime=t),t<=e.lastPingedTime&&(e.lastPingedTime=0),t<=e.lastExpiredTime&&(e.lastExpiredTime=0)}function _u(e,t){t>e.firstPendingTime&&(e.firstPendingTime=t);var n=e.firstSuspendedTime;0!==n&&(t>=n?e.firstSuspendedTime=e.lastSuspendedTime=e.nextKnownPendingLevel=0:t>=e.lastSuspendedTime&&(e.lastSuspendedTime=t+1),t>e.nextKnownPendingLevel&&(e.nextKnownPendingLevel=t))}function Ru(e,t){var n=e.lastExpiredTime;(0===n||n>t)&&(e.lastExpiredTime=t)}function Bu(e,t,n,r){var i=t.current,o=ql(),l=jo.suspense;o=$l(o,i,l);e:if(n){t:{if(tt(n=n._reactInternalFiber)!==n||1!==n.tag)throw Error(a(170));var u=n;do{switch(u.tag){case 3:u=u.stateNode.context;break t;case 1:if(yi(u.type)){u=u.stateNode.__reactInternalMemoizedMergedChildContext;break t}}u=u.return}while(null!==u);throw Error(a(171))}if(1===n.tag){var c=n.type;if(yi(c)){n=mi(n,c,u);break e}}n=u}else n=fi;return null===t.context?t.context=n:t.pendingContext=n,(t=fo(o,l)).payload={element:e},null!==(r=void 0===r?null:r)&&(t.callback=r),go(i,t),eu(i,o),o}function Gu(e){if(!(e=e.current).child)return null;switch(e.child.tag){case 5:default:return e.child.stateNode}}function Fu(e,t){null!==(e=e.memoizedState)&&null!==e.dehydrated&&e.retryTime<t&&(e.retryTime=t)}function Wu(e,t){Fu(e,t),(e=e.alternate)&&Fu(e,t)}function Hu(e,t,n){var r=new Pu(e,t,n=null!=n&&!0===n.hydrate),i=Ou(3,null,null,2===t?7:1===t?3:0);r.current=i,i.stateNode=r,e[lr]=r.current,n&&0!==t&&function(e){var t=Sn(e);yt.forEach((function(n){kn(n,e,t)})),Nt.forEach((function(n){kn(n,e,t)}))}(9===e.nodeType?e:e.ownerDocument),this._internalRoot=r}function Zu(e){return!(!e||1!==e.nodeType&&9!==e.nodeType&&11!==e.nodeType&&(8!==e.nodeType||" react-mount-point-unstable "!==e.nodeValue))}function Vu(e,t,n,r,i){var o=n._reactRootContainer;if(o){var a=o._internalRoot;if("function"==typeof i){var l=i;i=function(){var e=Gu(a);l.call(e)}}Bu(t,a,e,i)}else{if(o=n._reactRootContainer=function(e,t){if(t||(t=!(!(t=e?9===e.nodeType?e.documentElement:e.firstChild:null)||1!==t.nodeType||!t.hasAttribute("data-reactroot"))),!t)for(var n;n=e.lastChild;)e.removeChild(n);return new Hu(e,0,t?{hydrate:!0}:void 0)}(n,r),a=o._internalRoot,"function"==typeof i){var u=i;i=function(){var e=Gu(a);u.call(e)}}lu((function(){Bu(t,a,e,i)}))}return Gu(a)}function Xu(e,t,n){var r=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:P,key:null==r?null:""+r,children:e,containerInfo:t,implementation:n}}function Ku(e,t){var n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!Zu(t))throw Error(a(200));return Xu(e,t,null,n)}Hu.prototype.render=function(e,t){Bu(e,this._internalRoot,null,void 0===t?null:t)},Hu.prototype.unmount=function(e){var t=this._internalRoot,n=void 0===e?null:e,r=t.containerInfo;Bu(null,t,null,(function(){r[lr]=null,null!==n&&n()}))},ot=function(e){if(13===e.tag){var t=Ki(ql(),150,100);eu(e,t),Wu(e,t)}},at=function(e){if(13===e.tag){ql();var t=Xi++;eu(e,t),Wu(e,t)}},lt=function(e){if(13===e.tag){var t=ql();eu(e,t=$l(t,e,null)),Wu(e,t)}},ee=function(e,t,n){switch(t){case"input":if(xe(e,n),t=n.name,"radio"===n.type&&null!=t){for(n=e;n.parentNode;)n=n.parentNode;for(n=n.querySelectorAll("input[name="+JSON.stringify(""+t)+'][type="radio"]'),t=0;t<n.length;t++){var r=n[t];if(r!==e&&r.form===e.form){var i=fr(r);if(!i)throw Error(a(90));Ee(r),xe(r,i)}}}break;case"textarea":Ue(e,n);break;case"select":null!=(t=n.value)&&Ce(e,!!n.multiple,t,!1)}},ae=au,le=function(e,t,n,r){var i=xl;xl|=4;try{return Fi(98,e.bind(null,t,n,r))}finally{0===(xl=i)&&Zi()}},ue=function(){0==(49&xl)&&(function(){if(null!==Vl){var e=Vl;Vl=null,e.forEach((function(e,t){Ru(t,e),ru(t)})),Zi()}}(),ju())},ce=function(e,t){var n=xl;xl|=2;try{return e(t)}finally{0===(xl=n)&&Zi()}};var Ju,qu,$u={createPortal:Ku,findDOMNode:function(e){if(null==e)return null;if(1===e.nodeType)return e;var t=e._reactInternalFiber;if(void 0===t){if("function"==typeof e.render)throw Error(a(188));throw Error(a(268,Object.keys(e)))}return e=null===(e=it(t))?null:e.stateNode},hydrate:function(e,t,n){if(!Zu(t))throw Error(a(200));return Vu(null,e,t,!0,n)},render:function(e,t,n){if(!Zu(t))throw Error(a(200));return Vu(null,e,t,!1,n)},unstable_renderSubtreeIntoContainer:function(e,t,n,r){if(!Zu(n))throw Error(a(200));if(null==e||void 0===e._reactInternalFiber)throw Error(a(38));return Vu(e,t,n,!1,r)},unmountComponentAtNode:function(e){if(!Zu(e))throw Error(a(40));return!!e._reactRootContainer&&(lu((function(){Vu(null,null,e,!1,(function(){e._reactRootContainer=null,e[lr]=null}))})),!0)},unstable_createPortal:function(){return Ku.apply(void 0,arguments)},unstable_batchedUpdates:au,flushSync:function(e,t){if(0!=(48&xl))throw Error(a(187));var n=xl;xl|=1;try{return Fi(99,e.bind(null,t))}finally{xl=n,Zi()}},__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:{Events:[cr,sr,fr,v.injectEventPluginsByName,d,Ct,function(e){L(e,At)},ie,oe,On,O,ju,{current:!1}]}};qu=(Ju={findFiberByHostInstance:ur,bundleType:0,version:"16.12.0",rendererPackageName:"react-dom"}).findFiberByHostInstance,function(e){if("undefined"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__)return!1;var t=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(t.isDisabled||!t.supportsFiber)return!0;try{var n=t.inject(e);Lu=function(e){try{t.onCommitFiberRoot(n,e,void 0,64==(64&e.current.effectTag))}catch(r){}},zu=function(e){try{t.onCommitFiberUnmount(n,e)}catch(r){}}}catch(r){}}(i({},Ju,{overrideHookState:null,overrideProps:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:C.ReactCurrentDispatcher,findHostInstanceByFiber:function(e){return null===(e=it(e))?null:e.stateNode},findFiberByHostInstance:function(e){return qu?qu(e):null},findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null}));var ec={default:$u},tc=ec&&$u||ec;e.exports=tc.default||tc}}]);
+//# sourceMappingURL=commons-b35008cb74c6abd7ace8.js.map
\ No newline at end of file
diff --git a/commons-b35008cb74c6abd7ace8.js.map b/commons-b35008cb74c6abd7ace8.js.map
new file mode 100644
index 0000000..3aab5fb
--- /dev/null
+++ b/commons-b35008cb74c6abd7ace8.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["webpack:///./node_modules/scheduler/cjs/scheduler.production.min.js","webpack:///./node_modules/@theme-ui/core/dist/index.esm.js","webpack:///./node_modules/react-side-effect/lib/index.js","webpack:///./node_modules/@emotion/is-prop-valid/dist/is-prop-valid.browser.esm.js","webpack:///./node_modules/@theme-ui/color-modes/dist/index.esm.js","webpack:///./node_modules/@theme-ui/theme-provider/dist/index.esm.js","webpack:///./src/theme.js","webpack:///./src/components/header.js","webpack:///./src/components/footer.js","webpack:///./src/components/seo.js","webpack:///./src/components/head.js","webpack:///./src/components/mobileNav.js","webpack:///./src/components/layout.js","webpack:///./src/images/stackoverflow-logo.svg","webpack:///./node_modules/shallowequal/index.js","webpack:///./src/images/twitter-logo.svg","webpack:///./src/components/card.js","webpack:///./node_modules/@emotion/styled-base/dist/styled-base.browser.esm.js","webpack:///./node_modules/@emotion/styled/dist/styled.browser.esm.js","webpack:///./node_modules/@mdx-js/react/dist/esm.js","webpack:///./node_modules/@theme-ui/mdx/dist/index.esm.js","webpack:///./node_modules/core-js/modules/_string-html.js","webpack:///./node_modules/deepmerge/dist/cjs.js","webpack:///./src/images/github-logo.svg","webpack:///./node_modules/scheduler/index.js","webpack:///./node_modules/react-helmet/lib/Helmet.js","webpack:///./src/images/openJ9-header-logo.svg","webpack:///./src/images/adopt-open-jdk.png","webpack:///./node_modules/core-js/modules/es6.object.define-properties.js","webpack:///./src/components/button.js","webpack:///./node_modules/@theme-ui/css/dist/index.esm.js","webpack:///./node_modules/react-fast-compare/index.js","webpack:///./src/images/incubator-logo.svg","webpack:///./node_modules/react-helmet/lib/HelmetConstants.js","webpack:///./node_modules/react-dom/index.js","webpack:///./node_modules/core-js/modules/es7.object.get-own-property-descriptors.js","webpack:///./node_modules/core-js/modules/_own-keys.js","webpack:///./node_modules/react/index.js","webpack:///./node_modules/core-js/modules/es6.string.link.js","webpack:///./src/images/slack-icon.svg","webpack:///./node_modules/react-helmet/lib/HelmetUtils.js","webpack:///./node_modules/react/cjs/react.production.min.js","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/react-dom/cjs/react-dom.production.min.js"],"names":["_f","g","h","k","l","Object","defineProperty","exports","value","window","MessageChannel","p","q","t","a","unstable_now","b","setTimeout","u","Date","now","clearTimeout","unstable_forceFrameRate","w","performance","x","y","z","console","A","cancelAnimationFrame","requestAnimationFrame","error","B","C","D","E","F","G","Math","floor","H","I","port2","port1","onmessage","postMessage","J","c","length","push","d","e","K","L","M","pop","m","n","v","r","sortIndex","id","N","O","P","Q","R","S","T","U","V","callback","startTime","expirationTime","W","X","priorityLevel","Y","Z","unstable_ImmediatePriority","unstable_UserBlockingPriority","unstable_NormalPriority","unstable_IdlePriority","unstable_LowPriority","unstable_runWithPriority","unstable_next","unstable_scheduleCallback","delay","timeout","unstable_cancelCallback","unstable_wrapCallback","apply","this","arguments","unstable_getCurrentPriorityLevel","unstable_shouldYield","unstable_requestPaint","unstable_continueExecution","unstable_pauseExecution","unstable_getFirstCallbackNode","unstable_Profiling","parseProps","props","next","key","css$$1","sx","css","theme","getCSS","jsx$1","type","children","len","undefined","concat","Context","createContext","__EMOTION_VERSION__","useThemeUI","useContext","canUseSymbol","Symbol","REACT_ELEMENT","FORWARD_REF","isMergeableObject","$$typeof","arrayMerge","destinationArray","sourceArray","options","merge","all","args","BaseProvider","ref","context","Provider","ThemeProvider","outer","assign","_interopDefault","ex","React","React__default","shallowEqual","_defineProperty","obj","enumerable","configurable","writable","canUseDOM","document","createElement","module","reducePropsToState","handleStateChangeOnClient","mapStateOnServer","Error","WrappedComponent","state","mountedInstances","emitChange","map","instance","SideEffect","_Component","subClass","superClass","prototype","create","constructor","__proto__","peek","rewind","recordedState","_proto","shouldComponentUpdate","nextProps","componentWillMount","componentDidUpdate","componentWillUnmount","index","indexOf","splice","render","Component","displayName","name","getDisplayName","reactPropsRegex","prop","test","charCodeAt","toVarName","toVarValue","join","filter","Boolean","numberScales","fontWeights","lineHeights","reservedKeys","useCustomProperties","initialColorModeName","initialColorMode","toPixel","objectToVars","parent","vars","storage","init","localStorage","getItem","warn","setItem","useState","mode","setMode","useEffect","stored","body","classList","remove","useColorSchemeMediaQuery","darkQuery","darkMQL","lightMQL","query","matchMedia","media","matches","styles","colors","useBodyStyles","modes","color","bg","rawColors","keys","forEach","ref$1","colorMode","setColorMode","emotionTheme","toCustomProperties","themeKey","Array","isArray","val","get","def","undef","split","defaultBreakpoints","defaultTheme","space","fontSizes","aliases","mt","mr","mb","ml","mx","my","pt","pr","pb","pl","px","py","multiples","marginX","marginY","paddingX","paddingY","size","scales","backgroundColor","borderColor","margin","marginTop","marginRight","marginBottom","marginLeft","padding","paddingTop","paddingRight","paddingBottom","paddingLeft","top","right","bottom","left","gridGap","gridColumnGap","gridRowGap","gap","columnGap","rowGap","fontFamily","fontSize","fontWeight","lineHeight","letterSpacing","border","borderTop","borderRight","borderBottom","borderLeft","borderWidth","borderStyle","borderRadius","borderTopRightRadius","borderTopLeftRadius","borderBottomRightRadius","borderBottomLeftRadius","borderTopWidth","borderTopColor","borderTopStyle","borderBottomWidth","borderBottomColor","borderBottomStyle","borderLeftWidth","borderLeftColor","borderLeftStyle","borderRightWidth","borderRightColor","borderRightStyle","outlineColor","boxShadow","textShadow","zIndex","width","minWidth","maxWidth","height","minHeight","maxHeight","flexBasis","fill","stroke","positiveOrNegative","scale","absolute","abs","transforms","reduce","acc","curr","result","breakpoints","mediaQueries","i","slice","responsive","scaleName","transform","dirs","variant","root","boxSizing","useBorderBox","components","fonts","heading","darkText","lightText","links","primary","secondary","secondaryDark","accent","background","lightGrey","radii","button","card","buttons","cursor","textDecoration","text","h1","h2","h3","h4","h5","h6","lists","navRow","display","listStyle","justifyContent","li","navCol","flexDirection","borders","cardBorder","shadows","cardShadow","isHome","position","alignItems","flex","opacity","pointerEvents","to","src","openJ9Logo","alt","href","rel","target","twitterLogo","githubLogo","slackIcon","stackoverflowLogo","flexWrap","incubatorLogo","listStyleType","SEO","title","description","site","siteMetadata","defaultTitle","titleTemplate","defaultDescription","siteUrl","twitterUsername","seo","image","defaultImage","url","Helmet","content","property","defaultProps","MobileNav","objA","objB","compare","compareContext","ret","call","keysA","keysB","bHasOwnProperty","hasOwnProperty","bind","idx","valueA","valueB","Card","testOmitPropsOnStringTag","testOmitPropsOnComponent","getDefaultShouldForwardProp","tag","ownKeys","object","enumerableOnly","getOwnPropertySymbols","symbols","sym","getOwnPropertyDescriptor","_objectSpread","source","getOwnPropertyDescriptors","defineProperties","newStyled","createStyled","identifierName","shouldForwardProp","targetClassName","label","__emotion_forwardProp","propName","isReal","__emotion_real","baseTag","__emotion_base","defaultShouldForwardProp","shouldUseAs","__emotion_styles","raw","Styled","Consumer","finalTag","as","className","classInterpolations","mergedProps","registered","serialized","finalShouldForwardProp","newProps","_key","innerRef","withComponent","nextTag","nextOptions","tagName","_objectSpread2","_objectWithoutProperties","excluded","sourceKeys","_objectWithoutPropertiesLoose","sourceSymbolKeys","propertyIsEnumerable","MDXContext","contextComponents","allComponents","DEFAULTS","inlineCode","wrapper","_ref","Fragment","MDXCreateElement","propComponents","mdxType","originalType","parentName","etc","thematicBreak","comps","$export","fails","defined","quot","createHTML","string","attribute","String","p1","replace","NAME","exec","toLowerCase","isNonNullObject","stringValue","toString","REACT_ELEMENT_TYPE","isReactElement","isSpecial","cloneUnlessOtherwiseSpecified","clone","deepmerge","defaultArrayMerge","element","getKeys","symbol","getEnumerableOwnPropertySymbols","propertyIsOnObject","_","mergeObject","destination","propertyIsUnsafe","customMerge","getMergeFunction","sourceIsArray","array","prev","deepmerge_1","__esModule","_extends","_createClass","descriptor","Constructor","protoProps","staticProps","_react2","_interopRequireDefault","_propTypes2","_reactSideEffect2","_reactFastCompare2","_HelmetUtils","_HelmetConstants","_classCallCheck","TypeError","_possibleConstructorReturn","self","ReferenceError","_class","_temp","HelmetSideEffects","handleClientStateChange","HelmetExport","_React$Component","HelmetWrapper","setPrototypeOf","_inherits","mapNestedChildrenToProps","child","nestedChildren","TAG_NAMES","SCRIPT","NOSCRIPT","innerHTML","STYLE","cssText","flattenArrayTypeChildren","_extends2","arrayTypeChildren","newChildProps","mapObjectTypeChildren","_ref2","_extends3","_extends4","TITLE","titleAttributes","BODY","bodyAttributes","HTML","htmlAttributes","mapArrayTypeChildrenToProps","newFlattenedProps","arrayChildName","_extends5","warnOnInvalidChildren","mapChildrenToProps","_this2","Children","_child$props","childProps","convertReactPropstoHtmlAttributes","LINK","META","_props","set","propTypes","base","oneOfType","arrayOf","node","defer","bool","encodeSpecialCharacters","link","meta","noscript","onChangeClientState","func","script","style","mappedState","linkTags","metaTags","noscriptTags","scriptTags","styleTags","renderStatic","Button","widthChanged","keyList","hasProp","hasElementType","Element","equal","arrA","arrB","dateA","dateB","getTime","regexpA","RegExp","regexpB","message","match","number","ATTRIBUTE_NAMES","BASE","HEAD","REACT_TAG_MAP","VALID_TAG_NAMES","TAG_PROPERTIES","CHARSET","CSS_TEXT","HREF","HTTPEQUIV","INNER_HTML","ITEM_PROP","PROPERTY","REL","SRC","accesskey","charset","contenteditable","contextmenu","itemprop","tabindex","HELMET_PROPS","DEFAULT_TITLE","DEFER","ENCODE_SPECIAL_CHARACTERS","ON_CHANGE_CLIENT_STATE","TITLE_TEMPLATE","HTML_TAG_MAP","SELF_CLOSING_TAGS","HELMET_ATTRIBUTE","checkDCE","__REACT_DEVTOOLS_GLOBAL_HOOK__","err","toIObject","gOPD","createProperty","desc","getDesc","f","gOPN","gOPS","anObject","Reflect","it","getSymbols","_typeof","iterator","_objectAssign2","clock","str","encode","getTitleFromPropsList","propsList","innermostTitle","getInnermostProperty","innermostTemplate","innermostDefaultTitle","getOnChangeClientState","getAttributesFromPropsList","tagType","tagAttrs","current","getBaseTagFromPropsList","primaryAttributes","reverse","innermostBaseTag","lowerCaseAttributeKey","getTagsFromPropsList","approvedSeenTags","approvedTags","instanceTags","instanceSeenTags","primaryAttributeKey","attributeKey","tagUnion","rafPolyfill","currentTime","cafPolyfill","webkitRequestAnimationFrame","mozRequestAnimationFrame","global","webkitCancelAnimationFrame","mozCancelAnimationFrame","msg","_helmetCallback","commitTagChanges","newState","cb","updateAttributes","updateTitle","tagUpdates","updateTags","addedTags","removedTags","_tagUpdates$tagType","newTags","oldTags","flattenArray","possibleArray","attributes","elementTag","getElementsByTagName","helmetAttributeString","getAttribute","helmetAttributes","attributesToRemove","attributeKeys","setAttribute","indexToSave","_i","removeAttribute","tags","headElement","head","querySelector","tagNodes","querySelectorAll","indexToDelete","newElement","styleSheet","appendChild","createTextNode","some","existingTag","isEqualNode","parentNode","removeChild","generateElementAttributesAsString","attr","convertElementAttributestoReactProps","initProps","getMethodsForTag","toComponent","_initProps","attributeString","flattenedTitle","generateTitleAsString","_mappedTag","mappedTag","mappedAttribute","dangerouslySetInnerHTML","__html","generateTagsAsReactComponent","attributeHtml","tagContent","isSelfClosing","generateTagsAsString","initAttributes","_ref$title","aa","encodeURIComponent","isMounted","enqueueForceUpdate","enqueueReplaceState","enqueueSetState","refs","updater","isReactComponent","setState","forceUpdate","isPureReactComponent","__self","__source","_owner","keyPrefix","count","done","escape","ca","da","ba","toArray","only","createRef","PureComponent","_calculateChangedBits","_currentValue","_currentValue2","_threadCount","_context","forwardRef","lazy","_ctor","_status","_result","memo","useCallback","useImperativeHandle","useDebugValue","useLayoutEffect","useMemo","useReducer","useRef","Profiler","StrictMode","Suspense","cloneElement","createFactory","isValidElement","version","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","ReactCurrentDispatcher","ReactCurrentBatchConfig","suspense","ReactCurrentOwner","IsSomeRendererActing","Function","ea","extractEvents","eventTypes","fa","phasedRegistrationNames","ha","registrationName","ia","ja","dependencies","ka","onError","la","ma","na","oa","pa","qa","sa","ua","va","wa","currentTarget","ra","xa","ya","za","Aa","_dispatchListeners","_dispatchInstances","isPropagationStopped","isPersistent","release","Ba","Ca","injectEventPluginOrder","injectEventPluginsByName","Da","stateNode","disabled","Ea","Fa","Ga","Ha","Ia","Ja","Ka","La","Ma","Na","Oa","Pa","Qa","Ra","Sa","Ta","Ua","Wa","Xa","_debugOwner","_debugSource","fileName","lineNumber","Ya","Za","$a","ab","bb","db","eb","fb","gb","hb","ib","jb","kb","Map","lb","nb","ob","acceptsBooleans","attributeName","attributeNamespace","mustUseProperty","propertyName","sanitizeURL","sb","tb","toUpperCase","ub","vb","qb","isNaN","rb","setAttributeNS","wb","nodeName","yb","_valueTracker","getValue","setValue","stopTracking","xb","zb","checked","Ab","defaultChecked","defaultValue","_wrapperState","initialChecked","Bb","initialValue","controlled","Cb","Eb","Fb","Gb","ownerDocument","activeElement","Ib","Hb","Jb","selected","defaultSelected","Kb","Lb","Mb","Nb","textContent","xlinkHref","Ob","Pb","Qb","Rb","Sb","MSApp","execUnsafeLocalFunction","namespaceURI","valueOf","firstChild","Tb","lastChild","nodeType","nodeValue","Ub","Vb","animationend","animationiteration","animationstart","transitionend","Wb","Xb","Yb","animation","transition","Zb","$b","ac","bc","cc","ec","alternate","effectTag","fc","memoizedState","dehydrated","gc","ic","sibling","hc","jc","kc","lc","mc","nc","oc","pc","qc","rc","sc","tc","uc","vc","zc","blockedOn","topLevelType","eventSystemFlags","nativeEvent","Ac","pointerId","Bc","Cc","Ec","Fc","priority","hydrate","containerInfo","Gc","Hc","Ic","Jc","shift","Kc","Lc","Mc","srcElement","correspondingUseElement","Nc","Oc","dispatchConfig","Pc","_targetInst","Qc","Rc","Sc","Tc","Uc","Interface","isDefaultPrevented","defaultPrevented","returnValue","Wc","eventPool","Xc","destructor","Vc","getPooled","preventDefault","stopPropagation","cancelBubble","persist","eventPhase","bubbles","cancelable","timeStamp","isTrusted","extend","Yc","animationName","elapsedTime","pseudoElement","Zc","clipboardData","$c","view","detail","ad","relatedTarget","bd","keyCode","charCode","cd","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","dd","8","9","12","13","16","17","18","19","20","27","32","33","34","35","36","37","38","39","40","45","46","112","113","114","115","116","117","118","119","120","121","122","123","144","145","224","ed","Alt","Control","Meta","Shift","gd","getModifierState","hd","fromCharCode","location","ctrlKey","shiftKey","altKey","metaKey","repeat","locale","which","jd","kd","ld","md","nd","screenX","screenY","clientX","clientY","pageX","pageY","fromElement","toElement","movementX","movementY","od","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","pd","dataTransfer","qd","touches","targetTouches","changedTouches","rd","sd","deltaX","wheelDeltaX","deltaY","wheelDeltaY","wheelDelta","deltaZ","deltaMode","td","ud","vd","wd","yd","zd","Ad","Bd","Cd","Dd","bubbled","captured","eventPriority","Ed","getEventPriority","Fd","Gd","Hd","Jd","Kd","targetInst","ancestors","Ld","Md","Nd","Od","Pd","addEventListener","Qd","Dc","Rd","Sd","WeakMap","xc","Set","yc","has","add","Td","animationIterationCount","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridArea","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","lineClamp","order","orphans","tabSize","widows","zoom","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","Ud","Vd","trim","Wd","setProperty","charAt","substring","Xd","menuitem","area","br","col","embed","hr","img","input","keygen","param","track","wbr","Yd","Zd","is","$d","ae","be","ce","de","offset","nextSibling","fe","HTMLIFrameElement","contentWindow","ge","contentEditable","le","me","ne","autoFocus","oe","pe","qe","re","se","previousSibling","data","te","random","ue","ve","we","xe","ye","ze","Ae","Be","Ce","De","Ee","Fe","Ge","He","documentMode","Ie","Je","Ke","Le","beforeInput","compositionEnd","compositionStart","compositionUpdate","Me","Ne","Oe","Pe","Se","Qe","Re","Te","date","datetime","email","month","password","range","search","tel","time","week","Ue","Ve","change","We","Xe","Ye","Ze","$e","af","bf","cf","detachEvent","df","ef","attachEvent","ff","gf","hf","lf","jf","_isInputEventSupported","kf","mouseEnter","mouseLeave","pointerEnter","pointerLeave","mf","defaultView","parentWindow","of","pf","qf","rf","sf","select","tf","uf","vf","wf","xf","start","selectionStart","end","selectionEnd","anchorNode","getSelection","anchorOffset","focusNode","focusOffset","yf","onSelect","SimpleEventPlugin","EnterLeaveEventPlugin","ChangeEventPlugin","SelectEventPlugin","BeforeInputEventPlugin","Af","Bf","Cf","Df","Ef","contextTypes","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","childContextTypes","Ff","Gf","Hf","If","getChildContext","Jf","__reactInternalMemoizedMergedChildContext","Kf","Lf","Mf","Nf","Of","Pf","Qf","Rf","Sf","Tf","Uf","Vf","Wf","Xf","Yf","Zf","$f","ag","cg","dg","eg","fg","gg","hg","ig","jg","kg","lg","mg","ng","og","pg","qg","rg","sg","tg","ug","childExpirationTime","vg","firstContext","wg","xg","observedBits","responders","yg","zg","baseState","firstUpdate","lastUpdate","firstCapturedUpdate","lastCapturedUpdate","firstEffect","lastEffect","firstCapturedEffect","lastCapturedEffect","Ag","Bg","suspenseConfig","payload","nextEffect","Cg","Dg","updateQueue","Eg","Fg","Gg","Hg","Ig","Jg","Kg","Lg","Mg","Ng","Og","Sg","_reactInternalFiber","Pg","Qg","Rg","Tg","Ug","contextType","Vg","componentWillReceiveProps","UNSAFE_componentWillReceiveProps","Wg","getDerivedStateFromProps","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentDidMount","Xg","Yg","_stringRef","Zg","$g","ah","bh","elementType","ch","implementation","dh","eh","ta","fh","gh","hh","ih","jh","kh","lh","mh","documentElement","nh","oh","ph","qh","memoizedProps","revealOrder","rh","responder","sh","th","uh","vh","wh","xh","yh","zh","Ah","Bh","Ch","Gh","Hh","Ih","Jh","Kh","Lh","Mh","Nh","queue","baseUpdate","Oh","Ph","Qh","lastRenderedReducer","dispatch","action","last","lastRenderedState","eagerReducer","eagerState","Rh","Sh","Th","Uh","destroy","deps","Vh","Wh","Xh","Yh","Zh","$h","ai","bi","readContext","useResponder","useDeferredValue","useTransition","ci","di","ei","fi","gi","hi","pendingProps","ii","ji","ki","mi","ni","oi","pi","qi","ri","si","ti","ui","UNSAFE_componentWillUpdate","componentWillUpdate","vi","getDerivedStateFromError","wi","pendingContext","Hi","Ji","Ki","xi","retryTime","yi","fallback","unstable_avoidThisFallback","zi","Ai","isBackwards","rendering","tail","tailExpiration","tailMode","Bi","Ci","Li","Mi","Ni","stack","onClick","onclick","Oi","WeakSet","Pi","Si","Ri","Ti","Ui","__reactInternalSnapshotBeforeUpdate","Vi","Wi","Qi","Xi","Yi","Zi","$i","insertBefore","_reactRootContainer","aj","wasMultiple","multiple","bj","cj","dj","then","ej","fj","gj","hj","ij","componentDidCatch","jj","componentStack","gk","kj","ceil","lj","mj","wj","xj","yj","zj","Aj","Bj","Dj","Ej","Fj","Gj","Hj","Ij","Jj","timeoutMs","Kj","Lj","Mj","Nj","Oj","lastExpiredTime","Pj","firstPendingTime","lastPingedTime","nextKnownPendingLevel","callbackExpirationTime","callbackPriority","callbackNode","Qj","Rj","Sj","Tj","Uj","Vj","Wj","finishedWork","finishedExpirationTime","lastSuspendedTime","Xj","timeoutHandle","Yj","busyMinDurationMs","busyDelayMs","Zj","bk","ck","pingCache","dk","ek","fk","createElementNS","ik","firstSuspendedTime","rangeCount","Db","focusedElem","selectionRange","jk","ee","contains","compareDocumentPosition","min","createRange","setStart","removeAllRanges","addRange","setEnd","scrollLeft","scrollTop","focus","Dh","dc","fd","hk","Eh","Fh","xk","Di","Ei","Fi","xd","Gi","kk","lk","mk","hidden","Va","nk","unstable_observedBits","pk","pendingChildren","qk","rk","sk","tk","uk","vk","wc","_internalRoot","wk","zk","hasAttribute","yk","Ak","Bk","unmount","JSON","stringify","form","ak","Ck","createPortal","findDOMNode","unstable_renderSubtreeIntoContainer","unmountComponentAtNode","unstable_createPortal","unstable_batchedUpdates","flushSync","Events","findFiberByHostInstance","bundleType","rendererPackageName","isDisabled","supportsFiber","inject","onCommitFiberRoot","onCommitFiberUnmount","ok","overrideHookState","overrideProps","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","Dk","Ek"],"mappings":"6FAkBA,IAAIA,EAAIC,EAAGC,EAAGC,EAAGC,EAEjB,GAVA,EAAQ,QAER,EAAQ,QAERC,OAAOC,eAAeC,EAAS,aAAc,CAC3CC,OAAO,IAKL,oBAAuBC,QAAU,mBAAsBC,eAAgB,CACzE,IAAIC,EAAI,KACJC,EAAI,KACJC,EAAI,SAASA,IACf,GAAI,OAASF,EAAG,IACd,IAAIG,EAAIP,EAAQQ,eAChBJ,GAAE,EAAIG,GACNH,EAAI,KACJ,MAAOK,GACP,MAAMC,WAAWJ,EAAG,GAAIG,IAGxBE,EAAIC,KAAKC,MAEbb,EAAQQ,aAAe,WACrB,OAAOI,KAAKC,MAAQF,GAGtBlB,EAAK,SAAWc,GACd,OAASH,EAAIM,WAAWjB,EAAI,EAAGc,IAAMH,EAAIG,EAAGG,WAAWJ,EAAG,KAG5DZ,EAAI,SAAWa,EAAGE,GAChBJ,EAAIK,WAAWH,EAAGE,IAGpBd,EAAI,WACFmB,aAAaT,IAGfT,EAAI,WACF,OAAO,GAGTC,EAAIG,EAAQe,wBAA0B,iBACjC,CACL,IAAIC,EAAId,OAAOe,YACXC,EAAIhB,OAAOU,KACXO,EAAIjB,OAAOQ,WACXU,EAAIlB,OAAOY,aAEf,GAAI,oBAAuBO,QAAS,CAClC,IAAIC,EAAIpB,OAAOqB,qBACf,mBAAsBrB,OAAOsB,uBAAyBH,QAAQI,MAAM,2IACpE,mBAAsBH,GAAKD,QAAQI,MAAM,0IAG3C,GAAI,iBAAoBT,GAAK,mBAAsBA,EAAEH,IAAKb,EAAQQ,aAAe,WAC/E,OAAOQ,EAAEH,WACJ,CACL,IAAIa,EAAIR,EAAEL,MAEVb,EAAQQ,aAAe,WACrB,OAAOU,EAAEL,MAAQa,GAGrB,IAAIC,GAAI,EACJC,EAAI,KACJC,GAAK,EACLC,EAAI,EACJC,EAAI,EAERnC,EAAI,WACF,OAAOI,EAAQQ,gBAAkBuB,GAGnClC,EAAI,aAEJG,EAAQe,wBAA0B,SAAUR,GAC1C,EAAIA,GAAK,IAAMA,EAAIc,QAAQI,MAAM,oHAAsHK,EAAI,EAAIvB,EAAIyB,KAAKC,MAAM,IAAM1B,GAAK,GAG3L,IAAI2B,EAAI,IAAI/B,eACRgC,EAAID,EAAEE,MAEVF,EAAEG,MAAMC,UAAY,WAClB,GAAI,OAASV,EAAG,CACd,IAAIrB,EAAIP,EAAQQ,eAChBuB,EAAIxB,EAAIuB,EAER,IACEF,GAAE,EAAIrB,GAAK4B,EAAEI,YAAY,OAASZ,GAAI,EAAIC,EAAI,MAC9C,MAAOnB,GACP,MAAM0B,EAAEI,YAAY,MAAO9B,QAExBkB,GAAI,GAGblC,EAAK,SAAYc,GACfqB,EAAIrB,EACJoB,IAAMA,GAAI,EAAIQ,EAAEI,YAAY,QAG9B7C,EAAI,SAAWa,EAAGE,GAChBoB,EAAIV,GAAE,WACJZ,EAAEP,EAAQQ,kBACTC,IAGLd,EAAI,WACFyB,EAAES,GACFA,GAAK,GAIT,SAASW,EAAEjC,EAAGE,GACZ,IAAIgC,EAAIlC,EAAEmC,OACVnC,EAAEoC,KAAKlC,GAEPF,EAAG,OAAS,CACV,IAAIqC,EAAIZ,KAAKC,OAAOQ,EAAI,GAAK,GACzBI,EAAItC,EAAEqC,GACV,UAAI,IAAWC,GAAK,EAAIC,EAAED,EAAGpC,IAAmC,MAAMF,EAArCA,EAAEqC,GAAKnC,EAAGF,EAAEkC,GAAKI,EAAGJ,EAAIG,GAI7D,SAASG,EAAExC,GAET,YAAO,KADPA,EAAIA,EAAE,IACgB,KAAOA,EAG/B,SAASyC,EAAEzC,GACT,IAAIE,EAAIF,EAAE,GAEV,QAAI,IAAWE,EAAG,CAChB,IAAIgC,EAAIlC,EAAE0C,MAEV,GAAIR,IAAMhC,EAAG,CACXF,EAAE,GAAKkC,EAEPlC,EAAG,IAAK,IAAIqC,EAAI,EAAGC,EAAItC,EAAEmC,OAAQE,EAAIC,GAAI,CACvC,IAAIK,EAAI,GAAKN,EAAI,GAAK,EAClBO,EAAI5C,EAAE2C,GACNE,EAAIF,EAAI,EACRG,EAAI9C,EAAE6C,GACV,QAAI,IAAWD,GAAK,EAAIL,EAAEK,EAAGV,QAAI,IAAWY,GAAK,EAAIP,EAAEO,EAAGF,IAAM5C,EAAEqC,GAAKS,EAAG9C,EAAE6C,GAAKX,EAAGG,EAAIQ,IAAM7C,EAAEqC,GAAKO,EAAG5C,EAAE2C,GAAKT,EAAGG,EAAIM,OAAQ,WAAI,IAAWG,GAAK,EAAIP,EAAEO,EAAGZ,IAAmC,MAAMlC,EAArCA,EAAEqC,GAAKS,EAAG9C,EAAE6C,GAAKX,EAAGG,EAAIQ,IAI3L,OAAO3C,EAGT,OAAO,KAGT,SAASqC,EAAEvC,EAAGE,GACZ,IAAIgC,EAAIlC,EAAE+C,UAAY7C,EAAE6C,UACxB,OAAO,IAAMb,EAAIA,EAAIlC,EAAEgD,GAAK9C,EAAE8C,GAGhC,IAAIC,EAAI,GACJC,EAAI,GACJC,EAAI,EACJC,EAAI,KACJC,EAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EAER,SAASC,EAAEzD,GACT,IAAK,IAAIE,EAAIsC,EAAEU,GAAI,OAAShD,GAAI,CAC9B,GAAI,OAASA,EAAEwD,SAAUjB,EAAES,OAAQ,MAAIhD,EAAEyD,WAAa3D,GAAsD,MAAnDyC,EAAES,GAAIhD,EAAE6C,UAAY7C,EAAE0D,eAAgB3B,EAAEgB,EAAG/C,GACpGA,EAAIsC,EAAEU,IAIV,SAASW,EAAE7D,GAGT,GAFAwD,GAAI,EACJC,EAAEzD,IACGuD,EAAG,GAAI,OAASf,EAAES,GAAIM,GAAI,EAAIrE,EAAG4E,OAAQ,CAC5C,IAAI5D,EAAIsC,EAAEU,GACV,OAAShD,GAAKf,EAAE0E,EAAG3D,EAAEyD,UAAY3D,IAIrC,SAAS8D,EAAE9D,EAAGE,GACZqD,GAAI,EACJC,IAAMA,GAAI,EAAIpE,KACdkE,GAAI,EACJ,IAAIpB,EAAImB,EAER,IAGE,IAFAI,EAAEvD,GAEGkD,EAAIZ,EAAES,GAAI,OAASG,MAAQA,EAAEQ,eAAiB1D,IAAMF,IAAMX,MAAO,CACpE,IAAIgD,EAAIe,EAAEM,SAEV,GAAI,OAASrB,EAAG,CACde,EAAEM,SAAW,KACbL,EAAID,EAAEW,cACN,IAAIzB,EAAID,EAAEe,EAAEQ,gBAAkB1D,GAC9BA,EAAIT,EAAQQ,eACZ,mBAAsBqC,EAAIc,EAAEM,SAAWpB,EAAIc,IAAMZ,EAAES,IAAMR,EAAEQ,GAC3DQ,EAAEvD,QACGuC,EAAEQ,GAETG,EAAIZ,EAAES,GAGR,GAAI,OAASG,EAAG,IAAIT,GAAI,MAAQ,CAC9B,IAAIC,EAAIJ,EAAEU,GACV,OAASN,GAAKzD,EAAE0E,EAAGjB,EAAEe,UAAYzD,GACjCyC,GAAI,EAEN,OAAOA,EACP,QACAS,EAAI,KAAMC,EAAInB,EAAGoB,GAAI,GAIzB,SAASU,EAAEhE,GACT,OAAQA,GACN,KAAK,EACH,OAAQ,EAEV,KAAK,EACH,OAAO,IAET,KAAK,EACH,OAAO,WAET,KAAK,EACH,OAAO,IAET,QACE,OAAO,KAIb,IAAIiE,EAAI3E,EACRG,EAAQyE,2BAA6B,EACrCzE,EAAQ0E,8BAAgC,EACxC1E,EAAQ2E,wBAA0B,EAClC3E,EAAQ4E,sBAAwB,EAChC5E,EAAQ6E,qBAAuB,EAE/B7E,EAAQ8E,yBAA2B,SAAUvE,EAAGE,GAC9C,OAAQF,GACN,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACH,MAEF,QACEA,EAAI,EAGR,IAAIkC,EAAImB,EACRA,EAAIrD,EAEJ,IACE,OAAOE,IACP,QACAmD,EAAInB,IAIRzC,EAAQ+E,cAAgB,SAAUxE,GAChC,OAAQqD,GACN,KAAK,EACL,KAAK,EACL,KAAK,EACH,IAAInD,EAAI,EACR,MAEF,QACEA,EAAImD,EAGR,IAAInB,EAAImB,EACRA,EAAInD,EAEJ,IACE,OAAOF,IACP,QACAqD,EAAInB,IAIRzC,EAAQgF,0BAA4B,SAAUzE,EAAGE,EAAGgC,GAClD,IAAIG,EAAI5C,EAAQQ,eAEhB,GAAI,iBAAoBiC,GAAK,OAASA,EAAG,CACvC,IAAII,EAAIJ,EAAEwC,MACVpC,EAAI,iBAAoBA,GAAK,EAAIA,EAAID,EAAIC,EAAID,EAC7CH,EAAI,iBAAoBA,EAAEyC,QAAUzC,EAAEyC,QAAUX,EAAEhE,QAC7CkC,EAAI8B,EAAEhE,GAAIsC,EAAID,EAYrB,OATArC,EAAI,CACFgD,GAAIG,IACJO,SAAUxD,EACV6D,cAAe/D,EACf2D,UAAWrB,EACXsB,eANF1B,EAAII,EAAIJ,EAONa,WAAY,GAEdT,EAAID,GAAKrC,EAAE+C,UAAYT,EAAGL,EAAEiB,EAAGlD,GAAI,OAASwC,EAAES,IAAMjD,IAAMwC,EAAEU,KAAOM,EAAIpE,IAAMoE,GAAI,EAAIrE,EAAE0E,EAAGvB,EAAID,MAAQrC,EAAE+C,UAAYb,EAAGD,EAAEgB,EAAGjD,GAAIuD,GAAKD,IAAMC,GAAI,EAAIrE,EAAG4E,KAC/I9D,GAGTP,EAAQmF,wBAA0B,SAAU5E,GAC1CA,EAAE0D,SAAW,MAGfjE,EAAQoF,sBAAwB,SAAU7E,GACxC,IAAIE,EAAImD,EACR,OAAO,WACL,IAAInB,EAAImB,EACRA,EAAInD,EAEJ,IACE,OAAOF,EAAE8E,MAAMC,KAAMC,WACrB,QACA3B,EAAInB,KAKVzC,EAAQwF,iCAAmC,WACzC,OAAO5B,GAGT5D,EAAQyF,qBAAuB,WAC7B,IAAIlF,EAAIP,EAAQQ,eAChBwD,EAAEzD,GACF,IAAIE,EAAIsC,EAAES,GACV,OAAO/C,IAAMkD,GAAK,OAASA,GAAK,OAASlD,GAAK,OAASA,EAAEwD,UAAYxD,EAAEyD,WAAa3D,GAAKE,EAAE0D,eAAiBR,EAAEQ,gBAAkBvE,KAGlII,EAAQ0F,sBAAwBlB,EAEhCxE,EAAQ2F,2BAA6B,WACnC7B,GAAKD,IAAMC,GAAI,EAAIrE,EAAG4E,KAGxBrE,EAAQ4F,wBAA0B,aAElC5F,EAAQ6F,8BAAgC,WACtC,OAAO9C,EAAES,IAGXxD,EAAQ8F,mBAAqB,M,oCC5W7B,0RAqBIC,EAAa,SAAoBC,GACnC,IAAKA,EACH,OAAO,KAGT,IAAIC,EAAO,GAEX,IAAK,IAAIC,KAAOF,EACF,OAARE,IAIJD,EAAKC,GAAOF,EAAME,IAGpB,IAAIC,EA3BO,SAAgBH,GAC3B,GAAKA,EAAMI,IAAOJ,EAAMK,IAIxB,OAAO,SAAUC,GAGf,MAAO,CAFM,YAAIN,EAAMI,GAAV,CAAcE,GACI,mBAAdN,EAAMK,IAAqBL,EAAMK,IAAIC,GAASN,EAAMK,MAoB1DE,CAAOP,GAMpB,OAJIG,IACFF,EAAKI,IAAMF,GAGNF,GAGLO,EAAQ,SAAeC,EAAMT,GAI/B,IAHA,IAAIU,EAAW,GACXC,EAAMpB,UAAU7C,OAAS,EAEtBiE,KAAQ,GACbD,EAASC,GAAOpB,UAAUoB,EAAM,GAGlC,OAAO,IAAItB,WAAMuB,EAAW,CAACH,EAAMV,EAAWC,IAAQa,OAAOH,KAG3DI,EAAU,IAAMC,cAAc,CAChCC,oBAAqB,IACrBV,MAAO,OAGLW,EAAa,WACf,OAAO,IAAMC,WAAWJ,IAGtBK,EAAiC,mBAAXC,QAAyBA,OAAY,IAC3DC,EAAgBF,EAAeC,OAAY,IAAE,iBAAmB,MAChEE,EAAcH,EAAeC,OAAY,IAAE,qBAAuB,MAElEG,EAAoB,SAA2BpE,GACjD,QAASA,GAAkB,iBAANA,GAAkBA,EAAEqE,WAAaH,GAAiBlE,EAAEqE,WAAaF,GAGpFG,EAAa,SAAoBC,EAAkBC,EAAaC,GAClE,OAAOD,GAGLE,EAAQ,SAAetH,EAAGE,GAC5B,OAAO,IAAUF,EAAGE,EAAG,CACrB8G,kBAAmBA,EACnBE,WAAYA,KAIhBI,EAAMC,IAAM,WAIV,IAHA,IAAIC,EAAO,GACPpB,EAAMpB,UAAU7C,OAEbiE,KACLoB,EAAKpB,GAAOpB,UAAUoB,GAGxB,OAAO,IAAUmB,IAAIC,EAAM,CACzBR,kBAAmBA,EACnBE,WAAYA,KAIhB,IAAIO,EAAe,SAAsBC,GACvC,IAAIC,EAAUD,EAAIC,QACdxB,EAAWuB,EAAIvB,SACnB,OAAOF,EAAM,IAAa2B,SAAU,CAClClI,MAAOiI,EAAQ5B,OACdE,EAAMM,EAAQqB,SAAU,CACzBlI,MAAOiI,EACPxB,SAAUA,MAIV0B,EAAgB,SAAuBH,GACzC,IAAI3B,EAAQ2B,EAAI3B,MACZI,EAAWuB,EAAIvB,SACf2B,EAAQpB,IAQZ,IAAIiB,EAA2B,mBAAV5B,EAAuBxG,OAAOwI,OAAO,GAAID,EAAO,CACnE/B,MAAOA,EAAM+B,EAAM/B,SAChBuB,EAAMC,IAAI,GAAIO,EAAO,CACxB/B,MAAOA,IAET,OAAOE,EAAMwB,EAAc,CACzBE,QAASA,EACTxB,SAAUA,M,oCCnHd,SAAS6B,EAAgBC,GACvB,OAAOA,GAAoB,iBAAPA,GAAmB,YAAaA,EAAKA,EAAY,QAAIA,EAX3E,EAAQ,QAER,EAAQ,QAER,EAAQ,QAER,EAAQ,QAER,EAAQ,QAMR,IAAIC,EAAQ,EAAQ,QAEhBC,EAAiBH,EAAgBE,GAEjCE,EAAeJ,EAAgB,EAAQ,SAE3C,SAASK,EAAgBC,EAAK3C,EAAKjG,GAYjC,OAXIiG,KAAO2C,EACT/I,OAAOC,eAAe8I,EAAK3C,EAAK,CAC9BjG,MAAOA,EACP6I,YAAY,EACZC,cAAc,EACdC,UAAU,IAGZH,EAAI3C,GAAOjG,EAGN4I,EAST,IAAII,IAAiC,oBAAX/I,SAA0BA,OAAOgJ,WAAYhJ,OAAOgJ,SAASC,eAqGvFC,EAAOpJ,QAnGP,SAAwBqJ,EAAoBC,EAA2BC,GACrE,GAAkC,mBAAvBF,EACT,MAAM,IAAIG,MAAM,iDAGlB,GAAyC,mBAA9BF,EACT,MAAM,IAAIE,MAAM,wDAGlB,QAAgC,IAArBD,GAAgE,mBAArBA,EACpD,MAAM,IAAIC,MAAM,mEAOlB,OAAO,SAAcC,GACnB,GAAgC,mBAArBA,EACT,MAAM,IAAID,MAAM,sDAGlB,IACIE,EADAC,EAAmB,GAGvB,SAASC,IACPF,EAAQL,EAAmBM,EAAiBE,KAAI,SAAUC,GACxD,OAAOA,EAAS9D,UAGd+D,EAAWd,UACbK,EAA0BI,GACjBH,IACTG,EAAQH,EAAiBG,IAI7B,IAAIK,EAEJ,SAAUC,GA/Cd,IAAwBC,EAAUC,EAkD5B,SAASH,IACP,OAAOC,EAAW3E,MAAMC,KAAMC,YAAcD,KAnDlB4E,EAgDDF,GAhDTC,EAgDHF,GA/CVI,UAAYrK,OAAOsK,OAAOF,EAAWC,WAC9CF,EAASE,UAAUE,YAAcJ,EACjCA,EAASK,UAAYJ,EAqDjBH,EAAWQ,KAAO,WAChB,OAAOb,GAGTK,EAAWS,OAAS,WAClB,GAAIT,EAAWd,UACb,MAAM,IAAIO,MAAM,oFAGlB,IAAIiB,EAAgBf,EAGpB,OAFAA,OAAQ9C,EACR+C,EAAmB,GACZc,GAGT,IAAIC,EAASX,EAAWI,UAyBxB,OAvBAO,EAAOC,sBAAwB,SAA+BC,GAC5D,OAAQjC,EAAaiC,EAAWtF,KAAKU,QAGvC0E,EAAOG,mBAAqB,WAC1BlB,EAAiBhH,KAAK2C,MACtBsE,KAGFc,EAAOI,mBAAqB,WAC1BlB,KAGFc,EAAOK,qBAAuB,WAC5B,IAAIC,EAAQrB,EAAiBsB,QAAQ3F,MACrCqE,EAAiBuB,OAAOF,EAAO,GAC/BpB,KAGFc,EAAOS,OAAS,WACd,OAAOzC,EAAeS,cAAcM,EAAkBnE,KAAKU,QAGtD+D,EAjDT,CAkDEtB,EAAM2C,WAMR,OAJAxC,EAAgBmB,EAAY,cAAe,cA9E7C,SAAwBN,GACtB,OAAOA,EAAiB4B,aAAe5B,EAAiB6B,MAAQ,YA6ELC,CAAe9B,GAAoB,KAE9Fb,EAAgBmB,EAAY,YAAad,GAElCc,K,oCC5IX,gBACIyB,EAAkB,83HAElBR,EAAQ,aAAQ,SAAUS,GAC5B,OAAOD,EAAgBE,KAAKD,IAAgC,MAAvBA,EAAKE,WAAW,IAE3B,MAAvBF,EAAKE,WAAW,IAEhBF,EAAKE,WAAW,GAAK,MAIX,O,2NCEXC,EAAY,SAAmB1F,GACjC,MAAO,cAAgBA,GAGrB2F,EAAa,SAAoB3F,EAAKjG,GACxC,MAAO,OAAS2L,EAAU1F,GAAO,KAAOjG,EAAQ,KAG9C6L,EAAO,WAIT,IAHA,IAAI/D,EAAO,GACPpB,EAAMpB,UAAU7C,OAEbiE,KACLoB,EAAKpB,GAAOpB,UAAUoB,GAGxB,OAAOoB,EAAKgE,OAAOC,SAASF,KAAK,MAG/BG,EAAe,CACjBC,aAAa,EACbC,aAAa,GAEXC,EAAe,CACjBC,qBAAqB,EACrBC,sBAAsB,EACtBC,kBAAkB,GAGhBC,EAAU,SAAiBtG,EAAKjG,GAClC,MAAqB,iBAAVA,EACFA,EAGLgM,EAAa/F,GACRjG,EAGFA,EAAQ,MA4BbwM,EAAe,SAASA,EAAaC,EAAQ7D,GAC/C,IAAI8D,EAAO,GAEX,IAAK,IAAIzG,KAAO2C,EACd,GAAY,UAAR3C,EAAJ,CAIA,IAAIoF,EAAOQ,EAAKY,EAAQxG,GACpBjG,EAAQ4I,EAAI3C,GAEZjG,GAA0B,iBAAVA,EAClB0M,EAAO7M,OAAOwI,OAAO,GAAIqE,EAAMF,EAAanB,EAAMrL,IAElD0M,EAAKf,EAAUN,IAASrL,EAI5B,OAAO0M,GAoCLC,EACG,SAAaC,GAChB,IACE,OAAO3M,OAAO4M,aAAaC,QAJf,wBAIuCF,EACnD,MAAOhK,GACPxB,QAAQ2L,KAAK,sEAAuE,mCAAoCnK,KAL1H+J,EAQG,SAAa3M,GAChB,IACEC,OAAO4M,aAAaG,QAXR,sBAW6BhN,GACzC,MAAO4C,GACPxB,QAAQ2L,KAAK,sEAAuE,mCAAoCnK,KAyB1H,EAAoB,SAA2ByD,QACnC,IAAVA,IAAkBA,EAAQ,IAC9B,IAAI2B,EAAM,IAAMiF,SAAS5G,EAAMgG,sBAAwB,WACnDa,EAAOlF,EAAI,GACXmF,EAAUnF,EAAI,GAgClB,OA9BA,IAAMoF,WAAU,WACd,IAAIC,EAASV,IAGb,GAFA1D,SAASqE,KAAKC,UAAUC,OAAO,YAAcH,GAExCA,IAAUhH,EAAMoH,yBAArB,CA9BgB,IACdC,EAEAC,EACAC,EAgCGP,GAAUA,IAAWH,GAI1BC,EAAQE,OAVR,CACE,IAAIQ,GA9BJH,EAAY,+BAEZC,EAAU1N,OAAO6N,WAAa7N,OAAO6N,WAAWJ,GAAa,GAC7DE,EAAW3N,OAAO6N,WAAa7N,OAAO6N,WAFzB,iCAEkD,GACxDH,EAAQI,QAAUL,GAAaC,EAAQK,QAGzC,OANQ,kCASLJ,EAASG,OAAwBH,EAASI,QAG7C,QAGF,WAeHb,EAAQU,MAST,IACH,IAAMT,WAAU,WACTF,GAILP,EAAYO,KACX,CAACA,IAQG,CAACA,EAAMC,IA0BZ,EAAa,WACf,OAAO,YAAI,IAAQ,CACjBc,OAAQ,SAAgB5H,GACtB,OAtIkB,SAA2BA,GAGjD,QAFc,IAAVA,IAAkBA,EAAQ,KAEzBA,EAAM6H,SAAkC,IAAxB7H,EAAM8H,cACzB,MAAO,GAGT,IAAkC,IAA9B9H,EAAM+F,sBAAkC/F,EAAM6H,OAAOE,MACvD,OAAO,YAAI,CACTd,KAAM,CACJe,MAAO,OACPC,GAAI,eAHD,CAKJjI,GAGL,IAAI6H,EAAS7H,EAAMkI,WAAalI,EAAM6H,OAClCE,EAAQF,EAAOE,MACfH,EAASzB,EAAa,SAAU0B,GAKpC,OAJArO,OAAO2O,KAAKJ,GAAOK,SAAQ,SAAUvB,GAEnCe,EADU,cAAgBf,GACZV,EAAa,SAAU4B,EAAMlB,OAEtC,YAAI,CACTI,KAAMzN,OAAOwI,OAAO,GAAI4F,EAAQ,CAC9BI,MAAO,OACPC,GAAI,gBAHD,CAKJjI,GA0GQ,CAAkBA,OAK3B,EAAoB,SAA2B2B,GACjD,IAAIvB,EAAWuB,EAAIvB,SACf2B,EAAQ,cACRsG,EAAQ,EAAkBtG,EAAM/B,OAChCsI,EAAYD,EAAM,GAClBE,EAAeF,EAAM,GACrBrI,EAzBe,SAAwBA,EAAO6G,GAClD,IAAKA,EACH,OAAO7G,EAGT,IAAI+H,EAAQ,YAAI/H,EAAO,eAAgB,IACvC,OAAO,IAAMwB,IAAI,GAAIxB,EAAO,CAC1B6H,OAAQ,YAAIE,EAAOlB,EAAM,MAkBf,CAAe9E,EAAM/B,OAAS,GAAIsI,GAC1CE,EAAehP,OAAOwI,OAAO,GAAIhC,IAEH,IAA9BA,EAAM+F,sBACRyC,EAAaX,OAnMQ,SAASY,EAAmBlG,EAAK6D,EAAQsC,GAChE,IAAI/I,EAAOgJ,MAAMC,QAAQrG,GAAO,GAAK,GAErC,IAAK,IAAI3C,KAAO2C,EAAK,CACnB,IAAI5I,EAAQ4I,EAAI3C,GACZoF,EAAOQ,EAAKY,EAAQxG,GAExB,GAAIjG,GAA0B,iBAAVA,EAClBgG,EAAKC,GAAO6I,EAAmB9O,EAAOqL,EAAMpF,QAI9C,GAAIkG,EAAalG,GACfD,EAAKC,GAAOjG,MADd,CAKA,IAAIkP,EAAM3C,EAAQwC,GAAY9I,EAAKjG,GACnCgG,EAAKC,GAAO2F,EAAWP,EAAM6D,IAG/B,OAAOlJ,EA8KiB8I,CAAmBD,EAAaX,OAAQ,WAGhE,IAAIjG,EAAUpI,OAAOwI,OAAO,GAAID,EAAO,CACrC/B,MAAOA,EACPsI,UAAWA,EACXC,aAAcA,IAEhB,OAAO,YAAI,IAAa1G,SAAU,CAChClI,MAAO6O,GACN,YAAI,IAAQ3G,SAAU,CACvBlI,MAAOiI,GACN,YAAI,EAAY,CACjBhC,IAAK,eACHQ,K,YC/PF0I,EAAM,SAAavG,EAAK3C,EAAKmJ,EAAKjP,EAAGkP,GAGvC,IAFApJ,EAAMA,GAAOA,EAAIqJ,MAAQrJ,EAAIqJ,MAAM,KAAO,CAACrJ,GAEtC9F,EAAI,EAAGA,EAAI8F,EAAIxD,OAAQtC,IAC1ByI,EAAMA,EAAMA,EAAI3C,EAAI9F,IAAMkP,EAG5B,OAAOzG,IAAQyG,EAAQD,EAAMxG,GAG3B2G,EAAqB,CAAC,GAAI,GAAI,IAAI3F,KAAI,SAAU1G,GAClD,OAAOA,EAAI,QAETsM,EAAe,CACjBC,MAAO,CAAC,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,IAAK,IAAK,KACvCC,UAAW,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,KAE1CC,EAAU,CACZrB,GAAI,kBACJrL,EAAG,SACH2M,GAAI,YACJC,GAAI,cACJC,GAAI,eACJC,GAAI,aACJC,GAAI,UACJC,GAAI,UACJ9P,EAAG,UACH+P,GAAI,aACJC,GAAI,eACJC,GAAI,gBACJC,GAAI,cACJC,GAAI,WACJC,GAAI,YAEFC,EAAY,CACdC,QAAS,CAAC,aAAc,eACxBC,QAAS,CAAC,YAAa,gBACvBC,SAAU,CAAC,cAAe,gBAC1BC,SAAU,CAAC,aAAc,iBACzBC,KAAM,CAAC,QAAS,WAEdC,EAAS,CACXzC,MAAO,SACP0C,gBAAiB,SACjBC,YAAa,SACbC,OAAQ,QACRC,UAAW,QACXC,YAAa,QACbC,aAAc,QACdC,WAAY,QACZZ,QAAS,QACTC,QAAS,QACTY,QAAS,QACTC,WAAY,QACZC,aAAc,QACdC,cAAe,QACfC,YAAa,QACbf,SAAU,QACVC,SAAU,QACVe,IAAK,QACLC,MAAO,QACPC,OAAQ,QACRC,KAAM,QACNC,QAAS,QACTC,cAAe,QACfC,WAAY,QACZC,IAAK,QACLC,UAAW,QACXC,OAAQ,QACRC,WAAY,QACZC,SAAU,YACVC,WAAY,cACZC,WAAY,cACZC,cAAe,iBACfC,OAAQ,UACRC,UAAW,UACXC,YAAa,UACbC,aAAc,UACdC,WAAY,UACZC,YAAa,eACbC,YAAa,eACbC,aAAc,QACdC,qBAAsB,QACtBC,oBAAqB,QACrBC,wBAAyB,QACzBC,uBAAwB,QACxBC,eAAgB,eAChBC,eAAgB,SAChBC,eAAgB,eAChBC,kBAAmB,eACnBC,kBAAmB,SACnBC,kBAAmB,eACnBC,gBAAiB,eACjBC,gBAAiB,SACjBC,gBAAiB,eACjBC,iBAAkB,eAClBC,iBAAkB,SAClBC,iBAAkB,eAClBC,aAAc,SACdC,UAAW,UACXC,WAAY,UACZC,OAAQ,WACRC,MAAO,QACPC,SAAU,QACVC,SAAU,QACVC,OAAQ,QACRC,UAAW,QACXC,UAAW,QACXC,UAAW,QACX/D,KAAM,QAENgE,KAAM,SACNC,OAAQ,UAGNC,EAAqB,SAA4BC,EAAOhV,GAC1D,GAAqB,iBAAVA,GAAsBA,GAAS,EACxC,OAAOmP,EAAI6F,EAAOhV,EAAOA,GAG3B,IAAIiV,EAAWlT,KAAKmT,IAAIlV,GACpBkD,EAAIiM,EAAI6F,EAAOC,EAAUA,GAE7B,MAAiB,iBAAN/R,EACF,IAAMA,GAGH,EAALA,GAGLiS,EAAa,CAAC,SAAU,YAAa,cAAe,eAAgB,aAAc,UAAW,UAAW,MAAO,SAAU,OAAQ,SAASC,QAAO,SAAUC,EAAKC,GAClK,IAAI1M,EACJ,OAAO/I,OAAOwI,OAAO,GAAIgN,IAAMzM,EAAM,IAAQ0M,GAAQP,EAAoBnM,MACxE,IA4CCxC,EAAM,SAASA,EAAI0B,GACrB,OAAO,SAAU/B,QACD,IAAVA,IACFA,EAAQ,IAGV,IAAIM,EAAQxG,OAAOwI,OAAO,GAAImH,EAAczJ,EAAMM,OAASN,GACvDwP,EAAS,GAETtH,EAnDS,SAAoBA,GACnC,OAAO,SAAU5H,GACf,IAAIL,EAAO,GACPwP,EAAcrG,EAAI9I,EAAO,cAAekJ,GACxCkG,EAAe,CAAC,MAAM7O,OAAO4O,EAAY5L,KAAI,SAAU1G,GACzD,MAAO,iCAAmCA,EAAI,QAGhD,IAAK,IAAI+C,KAAOgI,EAAQ,CACtB,IAAIjO,EAA+B,mBAAhBiO,EAAOhI,GAAsBgI,EAAOhI,GAAKI,GAAS4H,EAAOhI,GAE5E,GAAa,MAATjG,EAIJ,GAAKgP,MAAMC,QAAQjP,GAKnB,IAAK,IAAI0V,EAAI,EAAGA,EAAI1V,EAAM2V,MAAM,EAAGF,EAAahT,QAAQA,OAAQiT,IAAK,CACnE,IAAI3H,EAAQ0H,EAAaC,GAEpB3H,GAKL/H,EAAK+H,GAAS/H,EAAK+H,IAAU,GAEb,MAAZ/N,EAAM0V,KAIV1P,EAAK+H,GAAO9H,GAAOjG,EAAM0V,KAVvB1P,EAAKC,GAAOjG,EAAM0V,QARpB1P,EAAKC,GAAOjG,EAsBhB,OAAOgG,GAaM4P,CADa,mBAAT9N,EAAsBA,EAAKzB,GAASyB,EACxC8N,CAAgBvP,GAE7B,IAAK,IAAIJ,KAAOgI,EAAQ,CACtB,IAAIhN,EAAIgN,EAAOhI,GACXiJ,EAAmB,mBAANjO,EAAmBA,EAAEoF,GAASpF,EAE/C,GAAY,YAARgF,EAMJ,GAAIiJ,GAAsB,iBAARA,EAChBqG,EAAOtP,GAAOG,EAAI8I,EAAJ9I,CAASC,OADzB,CAKA,IAAImF,EAAO2D,EAAIQ,EAAS1J,EAAKA,GACzB4P,EAAY1G,EAAI2B,EAAQtF,GACxBwJ,EAAQ7F,EAAI9I,EAAOwP,EAAW1G,EAAI9I,EAAOmF,EAAM,KAE/CxL,EADYmP,EAAIgG,EAAY3J,EAAM2D,EAC1B2G,CAAUd,EAAO9F,EAAKA,GAElC,GAAIsB,EAAUhF,GAGZ,IAFA,IAAIuK,EAAOvF,EAAUhF,GAEZkK,EAAI,EAAGA,EAAIK,EAAKtT,OAAQiT,IAC/BH,EAAOQ,EAAKL,IAAM1V,OAGpBuV,EAAO/J,GAAQxL,MAxBjB,CACE,IAAIgW,EAAU5P,EAAI+I,EAAI9I,EAAO6I,GAAf9I,CAAqBC,GACnCkP,EAAS1V,OAAOwI,OAAO,GAAIkN,EAAQS,IA0BvC,OAAOT,IAIP,EAAa,WACf,OAAO,YAAI,IAAQ,CACjBtH,OAAQ,SAAgB5H,GACtB,IAA4B,IAAxBA,EAAM8H,eAA2B9H,EAAM4H,SAAW5H,EAAM4H,OAAOgI,KACjE,OAAO,EAGT,IAAIC,GAAmC,IAAvB7P,EAAM8P,aAAyB,KAAO,aACtD,OAAO/P,EAAI,CACT,IAAK,CACH8P,UAAWA,GAEb5I,KAAM,CACJ2D,OAAQ,EACR+E,QAAS,gBANN5P,CAQJC,OAKL,EAAkB,SAAyB2B,GAC7C,IAAI3B,EAAQ2B,EAAI3B,MACZ+P,EAAapO,EAAIoO,WACjB3P,EAAWuB,EAAIvB,SAGnB,MAAkC,mBAFtB,cAEKmI,aACR,YAAI,IAAe,CACxBvI,MAAOA,GACN,YAAI,IAAa,CAClB+P,WAAYA,EACZ3P,SAAUA,KAIP,YAAI,IAAe,CACxBJ,MAAOA,GACN,YAAI,EAAmB,KAAM,YAAI,GAAa,YAAI,IAAa,CAChE+P,WAAYA,EACZ3P,SAAUA,OC5PC,GACb4P,MAAO,CACLC,QAAS,sDACThJ,KAAM,uDAERY,OAAQ,CACNqI,SAAU,UACVC,UAAW,UACXC,MAAO,UACPC,QAAS,UACTC,UAAW,UACXC,cAAc,UACdC,OAAQ,UACRC,WAAY,UACZC,UAAW,WAEbC,MAAO,CACLC,OAAQ,SACRC,KAAM,UAER1B,YAAa,CAAC,QAAS,UAAW,QAAS,UAC3C9F,UAAW,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IAChCD,MAAO,CAAC,EAAG,EAAG,GAAI,GAAI,GAAI,IAC1BxD,YAAa,CACXqB,KAAM,IACNgJ,QAAS,KAEXpK,YAAa,CACXoB,KAAM,IACNgJ,QAAS,OAEXa,QAAS,CACPT,QAAS,CACP3F,gBAAiB,YACjB1C,MAAO,QACP4E,aAAc,SACdwB,OAAQ,OACRH,MAAO,QACP5B,OAAQ,OACRL,WAAY,OACZC,SAAU,EACV,UAAW,CACT8E,OAAQ,UACRrG,gBAAiB,gBACjBC,YAAa,gBACbqG,eAAe,OACfhJ,MAAM,UAGVsI,UAAW,CAAEX,QAAS,kBAAmB1B,MAAO,UAElDgD,KAAM,CACJhB,QAAS,CACPjE,WAAY,UACZG,WAAY,UACZD,WAAY,UACZ7B,QAAS,IAGbzC,OAAQ,CACNgI,KAAM,CACJ5D,WAAY,OACZG,WAAY,OACZD,WAAY,QAEdgF,GAAI,CACFvB,QAAS,eACT1D,SAAU,GAEZkF,GAAI,CACFxB,QAAS,eACT1D,SAAU,GAEZmF,GAAI,CACFzB,QAAS,eACT1D,SAAU,GAEZoF,GAAI,CACF1B,QAAS,eACT1D,SAAU,GAGZqF,GAAI,CACF3B,QAAS,eACT1D,SAAU,GAEZsF,GAAI,CACF5B,QAAS,eACT1D,SAAU,GAEZnS,EAAG,CACDiR,aAAc,EACdkB,SAAU,IAGduF,MAAO,CACLC,OAAQ,CACNC,QAAS,OACTC,UAAW,OACXC,eAAgB,WAChBC,GAAI,CACF5G,QAAS,EACTb,QAAS,EACTnQ,EAAG,CACD+N,MAAO,QACPgJ,eAAgB,OAChB,UAAW,CACThJ,MAAO,WAIb,mBAAoB,CAClBgD,WAAY,GAEd,gBAAiB,CACfF,YAAa,EACbK,aAAc,IAGlB2G,OAAQ,CACNnC,QAAS,eACToC,cAAe,SACfF,GAAI,CACF5G,QAAS,EACTI,YAAa,KAInB2G,QAAS,CACPC,WAAY,0BAEdC,QAAS,CACPC,WAAY,wB,qHCzHD,kBAAGC,EAAH,EAAGA,OAAH,OACb,sBACEtS,GAAI,CACF4R,QAAS,CAAC,OAAQ,OAAQ,OAAQ,QAClChH,gBAAiB0H,EAAS,YAAc,UACxCC,SAAUD,EAAS,WAAa,KAChCnE,MAAO,OACPjG,MAAO,YACPsC,SAAU,EACVC,SAAU,EACV+H,WAAY,WAGd,mBACExS,GAAI,CACFyS,KAAM,EACNC,QAASJ,EAAS,EAAI,EACtBK,cAAeL,EAAS,OAAS,QAGnC,YAAC,OAAD,CAAMM,GAAG,KACP,mBAAKC,IAAKC,IAAYC,IAAI,kBAG9B,mBAAK/S,GAAI,CAAEyS,KAAM,IACf,kBAAIzS,GAAI,CAAE6P,QAAS,iBACjB,sBACE,YAAC,OAAD,CAAM+C,GAAG,KAAT,SAEF,sBACE,YAAC,OAAD,CAAMA,GAAG,UAAT,UAEF,sBACE,iBAAGI,KAAK,uCAAuCC,IAAI,sBAAsBC,OAAO,UAAhF,SAEF,sBACE,YAAC,OAAD,CAAMN,GAAG,gBAAT,gBAEF,sBACE,YAAC,OAAD,CAAMA,GAAG,SAAT,WAIN,mBAAK5S,GAAI,CAAEyS,KAAM,IACf,kBAAIzS,GAAI,CAAE6P,QAAS,iBACjB,sBACE,iBAAGmD,KAAK,8BAA8BC,IAAI,sBAAsBC,OAAO,UAAvE,IAAiF,mBAAKL,IAAKM,IAAaJ,IAAI,mBAE9G,sBACE,iBAAGC,KAAK,oCAAoCC,IAAI,sBAAsBC,OAAO,UAA7E,IAAuF,mBAAKL,IAAKO,IAAYL,IAAI,kBAEnH,sBACE,iBAAGC,KAAK,4BAA4BC,IAAI,sBAAsBC,OAAO,UAAS,mBAAKL,IAAKQ,IAAWN,IAAI,iBAEzG,sBACE,iBAAGC,KAAK,+CAA+CC,IAAI,sBAAsBC,OAAO,UAAS,mBAAKL,IAAKS,IAAmBP,IAAI,8B,qBCzD7H,oBACb,sBACE/S,GAAI,CACF4R,QAAS,OACThH,gBAAiB,UACjB1C,MAAO,QACPqL,SAAU,OACVpI,QAAS,OACTG,cAAe,CAAC,OAAQ,OAAQ,IAAK,KACrC2G,cAAe,mBAGf,uBACAjS,GAAI,CACFyS,KAAM,MACNb,QAAS,CAAC,OAAQ,OAAQ,OAAQ,QAClCY,WAAY,CAAC,SAAU,SAAU,WAAY,YAC7CP,cAAe,WAGjB,iBAAGe,KAAK,uFAAuFC,IAAI,sBAAsBC,OAAO,UAAS,mBAAKL,IAAKW,IAAeT,IAAI,4BACtK,YAAC,IAAOtB,GAAR,CAAWzR,GAAI,CAACmM,SAAS,WAAzB,2CAIF,mBAAKnM,GAAI,CAAE4R,QAAS,CAAC,OAAQ,OAAQ,OAAQ,QACvCa,KAAM,CAAC,OAAQ,MAAO,MAAM,OAC5BR,cAAc,CAAC,SAAU,MAAO,MAAO,OACvCH,eAAe,SACf3X,EAAG,CACD+N,MAAO,QACPgJ,eAAgB,OAChB,UAAW,CACThJ,MAAO,YAGf,uBAASlI,GAAI,CAAEyS,KAAM,EAAGlH,YAAY,CAAC,OAAQ,SAAU,SAAU,UAAYP,YAAY,SAAUG,QAAQ,CAAC,OAAQ,GAAIgB,SAAS,CAAC,OAAQ,SAAU,OAAQ,UAC1J,YAAC,IAAOoF,GAAR,CAAWvR,GAAI,CAACiL,aAAa,WAA7B,QACA,kBAAIjL,GAAI,CACN6P,QAAS,eACTkC,GAAI,CACF5G,QAAS,KAGX,sBAAI,iBAAGnL,GAAI,CAACkR,eAAe,OAAQhJ,MAAM,SAAS8K,KAAK,sDAAsDC,IAAI,sBAAsBC,OAAO,UAA1I,mBACJ,sBAAI,iBAAGlT,GAAI,CAACkR,eAAe,OAAQhJ,MAAM,SAAS8K,KAAK,oDAAoDC,IAAI,sBAAsBC,OAAO,UAAxI,oBACJ,sBAAI,iBAAGlT,GAAI,CAACkR,eAAe,OAAQhJ,MAAM,SAAS8K,KAAK,0DAA0DC,IAAI,sBAAsBC,OAAO,UAA9I,2BAGR,uBAASlT,GAAI,CAAEyS,KAAM,EAAGlH,YAAY,CAAC,OAAQ,SAAU,EAAG,GAAIJ,QAAQ,CAAC,OAAQ,GAAIgB,SAAS,CAAC,OAAQ,SAAU,OAAQ,UACrH,YAAC,IAAOoF,GAAR,CAAWvR,GAAI,CAACiL,aAAa,WAA7B,aACA,kBAAIjL,GAAI,CAAE6P,QAAS,eACjBkC,GAAI,CACF5G,QAAS,KAGX,sBAAI,YAAC,OAAD,CAAMnL,GAAI,CAACkR,eAAe,OAAQhJ,MAAM,SAAU0K,GAAG,UAArD,UACJ,sBAAI,YAAC,OAAD,CAAM5S,GAAI,CAACkR,eAAe,OAAQhJ,MAAM,SAAU0K,GAAG,gBAArD,kBAGR,uBAAS5S,GAAI,CAAEyS,KAAM,EAAGlH,YAAY,CAAC,OAAQ,EAAG,EAAG,GAAIJ,QAAQ,CAAC,OAAQ,GAAIgB,SAAS,CAAC,OAAQ,SAAU,OAAQ,QAASjB,WAAW,CAAC,EAAE,UACrI,YAAC,IAAOqG,GAAR,CAAWvR,GAAI,CAACiL,aAAa,WAA7B,aACA,kBAAIjL,GAAI,CAAE6P,QAAS,eACjBkC,GAAI,CACF5G,QAAS,KAGX,sBAAI,YAAC,OAAD,CAAMnL,GAAI,CAACkR,eAAe,OAAQhJ,MAAM,SAAU0K,GAAG,SAArD,SACJ,sBAAI,iBAAG5S,GAAI,CAACkR,eAAe,OAAQhJ,MAAM,SAAS8K,KAAK,2BAA2BC,IAAI,sBAAsBC,OAAO,UAA/G,aAIV,uBACElT,GAAI,CACFyS,KAAM,MACNb,QAAS,CAAC,OAAO,OAAQ,OAAQ,QACjCY,WAAY,CAAC,SAAU,WAAY,WAAY,YAC/CP,cAAe,WAGjB,YAAC,IAAOR,GAAR,CAAWzR,GAAI,CAACmM,SAAS,SAAUpB,UAAU,SAAUG,WAAW,WAAlE,0CACA,iBAAG8H,KAAK,uFAAuFC,IAAI,sBAAsBC,OAAO,UAAS,mBAAKL,IAAKW,IAAeT,IAAI,6BAExK,mBACE/S,GAAI,CACFsO,OAAQ,UACR1D,gBAAiB,YACjBuD,MAAO,OACP5D,QAAS,KAGb,mBAAKvK,GAAI,CAACmO,MAAM,QACd,kBAAInO,GAAI,CACN4R,QAAS,OAAQK,cAAc,CAAC,SAAU,MAAO,MAAO,OACxDF,GAAI,CACF5G,QAAS,SACTgB,SAAU,CAAC,SAAU,SAAU,OAAQ,QACvCsH,cAAe,OACflI,YAAY,OACZrD,MAAM,SAEP/N,EAAG,CACF+N,MAAO,QACPgJ,eAAgB,OAChB,UAAW,CACThJ,MAAO,YAKX,kBAAIlI,GAAI,CAAEuL,YAAY,CAAC,OAAQ,kBAAmB,oBAAqB,oBAAoB,iBAAGvL,GAAI,CAACkR,eAAe,OAAQhJ,MAAM,SAAS8K,KAAK,2BAA2BC,IAAI,sBAAsBC,OAAO,UAA/G,gCAC3F,sBAAI,iBAAGlT,GAAI,CAACkR,eAAe,OAAQhJ,MAAM,SAAS8K,KAAK,4CAA4CC,IAAI,sBAAsBC,OAAO,UAAhI,mBACJ,sBAAI,iBAAGlT,GAAI,CAACkR,eAAe,OAAQhJ,MAAM,SAAS8K,KAAK,+CAA+CC,IAAI,sBAAsBC,OAAO,UAAnI,iBACJ,sBAAI,iBAAGlT,GAAI,CAACkR,eAAe,OAAQhJ,MAAM,SAAS8K,KAAK,8CAA8CC,IAAI,sBAAsBC,OAAO,UAAlI,oBACJ,sBAAI,iBAAGlT,GAAI,CAACkR,eAAe,OAAQhJ,MAAM,SAAS8K,KAAK,iCAAiCC,IAAI,sBAAsBC,OAAO,UAArH,YAGR,mBAAKlT,GAAI,CAAE4R,QAAS,CAAC,SAAU,SAAU,QAAS,SAAUa,KAAM,QAChE,kBAAIzS,GAAI,CAAE6P,QAAS,eAAgBiC,eAAgB,CAAC,SAAU,WAAW,WAAY,cACnF,sBACE,iBAAGkB,KAAK,8BAA8BC,IAAI,sBAAsBC,OAAO,UAAvE,IAAiF,mBAAKL,IAAKM,IAAaJ,IAAI,mBAE9G,sBACE,iBAAGC,KAAK,oCAAoCC,IAAI,sBAAsBC,OAAO,UAA7E,IAAuF,mBAAKL,IAAKO,IAAYL,IAAI,kBAEnH,sBACE,iBAAGC,KAAK,4BAA4BC,IAAI,sBAAsBC,OAAO,UAAS,mBAAKL,IAAKQ,IAAWN,IAAI,iBAEzG,sBACE,iBAAGC,KAAK,+CAA+CC,IAAI,sBAAsBC,OAAO,UAAS,mBAAKL,IAAKS,IAAmBP,IAAI,8B,wBC3JtIW,EAAM,SAAC,GAA4B,IAA1BC,EAAyB,EAAzBA,MAAOC,EAAkB,EAAlBA,YAAkB,SAC9BC,KASCC,aANPC,EAJoC,EAIpCA,aACAC,EALoC,EAKpCA,cACAC,EANoC,EAMpCA,mBACAC,EAPoC,EAOpCA,QACAC,EARoC,EAQpCA,gBAIIC,EAAM,CACVT,MAAOA,GAASI,EAChBH,YAAaA,GAAeK,EAC5BI,MAfoC,EASpCC,aAOAC,IAAI,GAAIL,GAEV,OACE,YAACM,EAAA,OAAD,CAAQb,MAAOS,EAAIT,MAAOK,cAAeA,GACvC,oBAAM9O,KAAK,cAAcuP,QAASL,EAAIR,cACtC,oBAAM1O,KAAK,QAAQuP,QAASL,EAAIC,QAE/BD,EAAIG,KAAO,oBAAMG,SAAS,SAASD,QAASL,EAAIG,MAEhDH,EAAIT,OAAS,oBAAMe,SAAS,WAAWD,QAASL,EAAIT,QAEpDS,EAAIR,aACH,oBAAMc,SAAS,iBAAiBD,QAASL,EAAIR,cAG9CQ,EAAIC,OAAS,oBAAMK,SAAS,WAAWD,QAASL,EAAIC,QAErD,oBAAMnP,KAAK,eAAeuP,QAAQ,wBAEjCN,GACC,oBAAMjP,KAAK,kBAAkBuP,QAASN,IAGvCC,EAAIT,OAAS,oBAAMzO,KAAK,gBAAgBuP,QAASL,EAAIT,QAErDS,EAAIR,aACH,oBAAM1O,KAAK,sBAAsBuP,QAASL,EAAIR,cAGhD,oBAAMX,IAAI,aAAa5S,KAAK,WAAW2S,KAAK,uHAC5C,sBAAQH,IAAI,iHAKHa,IAOfA,EAAIiB,aAAe,CACjBhB,MAAO,KACPC,YAAa,MCvCA,eAAChU,GACZ,OACI,YAAC,EAAD,CAAK+T,MAAO/T,EAAM+T,MAAOC,YAAahU,EAAMgU,eC+BrCgB,EAjCG,kBACd,mBAAK5U,GAAI,CACL4R,QAAS,CAAC,OAAQ,OAAQ,OAAQ,QAClCE,eAAgB,SAChBU,WAAY,SACZD,SAAS,QACTpE,MAAO,OACPzC,OAAQ,IACRd,gBAAiB,QACjB0D,OAAQ,OACRN,UAAW,qBACXE,OAAQ,SAER,kBAAIlO,GAAI,CACJ6P,QAAS,eACTkC,GAAI,CACA5X,EAAG,CACC+N,MAAO,QACPgJ,eAAgB,SAGxBY,eAAgB,eAChB3D,MAAO,SAEP,sBAAI,YAAC,OAAD,CAAMyE,GAAG,KAAT,SACJ,sBAAI,YAAC,OAAD,CAAMA,GAAG,UAAT,SAAJ,KACA,sBAAI,iBAAGI,KAAK,uCAAuCC,IAAI,sBAAsBC,OAAO,UAAhF,QAAJ,KACA,sBAAI,YAAC,OAAD,CAAMN,GAAG,gBAAT,eAAJ,KACA,sBAAI,YAAC,OAAD,CAAMA,GAAG,SAAT,QAAJ,QCvBG,oBAAGtS,EAAH,EAAGA,SAAUgS,EAAb,EAAaA,OAAQqB,EAArB,EAAqBA,MAAOC,EAA5B,EAA4BA,YAA5B,OACb,YAAC,EAAD,CAAe1T,MAAOA,GACpB,YAAC,IAAD,CACE4H,OAAQ,SAAA5H,GAAK,MAAK,CAChB,IAAK,CAAEiL,QAAS,EAAGL,OAAQ,OAG/B,YAAC,EAAD,CAAM6I,MAAOA,EAAOC,YAAaA,IACjC,YAAC,EAAD,CAAQtB,OAAQA,IAChB,YAAC,EAAD,MACChS,EAED,YAAC,EAAD,S,mBC3CJ0C,EAAOpJ,QAAU,8qD,qBCAjB,EAAQ,QAER,EAAQ,QAER,EAAQ,QAER,EAAQ,QAER,EAAQ,QAGRoJ,EAAOpJ,QAAU,SAAsBib,EAAMC,EAAMC,EAASC,GAC1D,IAAIC,EAAMF,EAAUA,EAAQG,KAAKF,EAAgBH,EAAMC,QAAQ,EAE/D,QAAY,IAARG,EACF,QAASA,EAGX,GAAIJ,IAASC,EACX,OAAO,EAGT,GAAoB,iBAATD,IAAsBA,GAAwB,iBAATC,IAAsBA,EACpE,OAAO,EAGT,IAAIK,EAAQzb,OAAO2O,KAAKwM,GACpBO,EAAQ1b,OAAO2O,KAAKyM,GAExB,GAAIK,EAAM7Y,SAAW8Y,EAAM9Y,OACzB,OAAO,EAKT,IAFA,IAAI+Y,EAAkB3b,OAAOqK,UAAUuR,eAAeC,KAAKT,GAElDU,EAAM,EAAGA,EAAML,EAAM7Y,OAAQkZ,IAAO,CAC3C,IAAI1V,EAAMqV,EAAMK,GAEhB,IAAKH,EAAgBvV,GACnB,OAAO,EAGT,IAAI2V,EAASZ,EAAK/U,GACd4V,EAASZ,EAAKhV,GAGlB,IAAY,KAFZmV,EAAMF,EAAUA,EAAQG,KAAKF,EAAgBS,EAAQC,EAAQ5V,QAAO,SAEvC,IAARmV,GAAkBQ,IAAWC,EAChD,OAAO,EAIX,OAAO,I,6ECnDT1S,EAAOpJ,QAAU,8qG,kCCCjB,0BAiDe+b,IAvBF,SAAC,GAAkC,IAAhCrV,EAA+B,EAA/BA,SAAUiQ,EAAqB,EAArBA,QAASpC,EAAY,EAAZA,MACjC,OACE,uBACEnO,GAAI,CACFuO,UAAW,UACXP,UAAWuC,EAAU,aAAe,KACpCzD,aAAc,OACdlC,gBAAiB,QACjB1C,MAAO,WACPqC,QAAS,EACTD,QAAS,EACT6D,MAAOA,EACPyD,QAAS,OACTK,cAAe,SACfH,eAAgB,SAChBU,WAAY,WAGblS,K,4RC5BHsV,EAA2B,IAE3BC,EAA2B,SAAkC/V,GAC/D,MAAe,UAARA,GAA2B,aAARA,GAGxBgW,EAA8B,SAAqCC,GACrE,MAAsB,iBAARA,GAGdA,EAAIxQ,WAAW,GAAK,GAAKqQ,EAA2BC,GAGtD,SAASG,EAAQC,EAAQC,GACvB,IAAI7N,EAAO3O,OAAO2O,KAAK4N,GAEvB,GAAIvc,OAAOyc,sBAAuB,CAChC,IAAIC,EAAU1c,OAAOyc,sBAAsBF,GACvCC,IAAgBE,EAAUA,EAAQzQ,QAAO,SAAU0Q,GACrD,OAAO3c,OAAO4c,yBAAyBL,EAAQI,GAAK3T,eAEtD2F,EAAK9L,KAAK0C,MAAMoJ,EAAM+N,GAGxB,OAAO/N,EAGT,SAASkO,EAAcrD,GACrB,IAAK,IAAI3D,EAAI,EAAGA,EAAIpQ,UAAU7C,OAAQiT,IAAK,CACzC,IAAIiH,EAAyB,MAAhBrX,UAAUoQ,GAAapQ,UAAUoQ,GAAK,GAE/CA,EAAI,EACNyG,EAAQQ,GAAQ,GAAMlO,SAAQ,SAAUxI,GACtC,IAAgBoT,EAAQpT,EAAK0W,EAAO1W,OAE7BpG,OAAO+c,0BAChB/c,OAAOgd,iBAAiBxD,EAAQxZ,OAAO+c,0BAA0BD,IAEjER,EAAQQ,GAAQlO,SAAQ,SAAUxI,GAChCpG,OAAOC,eAAeuZ,EAAQpT,EAAKpG,OAAO4c,yBAAyBE,EAAQ1W,OAKjF,OAAOoT,EAGT,IC3DIyD,ED6De,SAASC,EAAab,EAAKvU,GAO5C,IAAIqV,EACAC,EACAC,OAEYvW,IAAZgB,IACFqV,EAAiBrV,EAAQwV,MACzBD,EAAkBvV,EAAQ0R,OAC1B4D,EAAoBf,EAAIkB,uBAAyBzV,EAAQsV,kBAAoB,SAAUI,GACrF,OAAOnB,EAAIkB,sBAAsBC,IACjC1V,EAAQsV,kBAAkBI,IACxB1V,EAAQsV,mBAGd,IAAIK,EAASpB,EAAIqB,iBAAmBrB,EAChCsB,EAAUF,GAAUpB,EAAIuB,gBAAkBvB,EAEb,mBAAtBe,GAAoCK,IAC7CL,EAAoBf,EAAIkB,uBAG1B,IAAIM,EAA2BT,GAAqBhB,EAA4BuB,GAC5EG,GAAeD,EAAyB,MAC5C,OAAO,WACL,IAAI5V,EAAOxC,UACP2I,EAASqP,QAAmC3W,IAAzBuV,EAAI0B,iBAAiC1B,EAAI0B,iBAAiBjI,MAAM,GAAK,GAM5F,QAJuBhP,IAAnBqW,GACF/O,EAAOvL,KAAK,SAAWsa,EAAiB,KAG3B,MAAXlV,EAAK,SAA8BnB,IAAhBmB,EAAK,GAAG+V,IAC7B5P,EAAOvL,KAAK0C,MAAM6I,EAAQnG,OACrB,CACD,EAIJmG,EAAOvL,KAAKoF,EAAK,GAAG,IAIpB,IAHA,IAAIpB,EAAMoB,EAAKrF,OACXiT,EAAI,EAEDA,EAAIhP,EAAKgP,IAKdzH,EAAOvL,KAAKoF,EAAK4N,GAAI5N,EAAK,GAAG4N,IAKjC,IAAIoI,EAAS,aAAiB,SAAU/X,EAAOkC,EAASD,GACtD,OAAO,wBAAc,IAAa+V,SAAU,MAAM,SAAU1X,GAC1D,IAAI2X,EAAWL,GAAe5X,EAAMkY,IAAMT,EACtCU,EAAY,GACZC,EAAsB,GACtBC,EAAcrY,EAElB,GAAmB,MAAfA,EAAMM,MAAe,CAGvB,IAAK,IAAIJ,KAFTmY,EAAc,GAEErY,EACdqY,EAAYnY,GAAOF,EAAME,GAG3BmY,EAAY/X,MAAQA,EAGS,iBAApBN,EAAMmY,UACfA,EAAY,YAAoBjW,EAAQoW,WAAYF,EAAqBpY,EAAMmY,WACnD,MAAnBnY,EAAMmY,YACfA,EAAYnY,EAAMmY,UAAY,KAGhC,IAAII,EAAa,YAAgBrQ,EAAOrH,OAAOuX,GAAsBlW,EAAQoW,WAAYD,GAC7E,YAAanW,EAASqW,EAAgC,iBAAbN,GACrDE,GAAajW,EAAQhC,IAAM,IAAMqY,EAAWjT,UAEpB1E,IAApBuW,IACFgB,GAAa,IAAMhB,GAGrB,IAAIqB,EAAyBZ,QAAqChX,IAAtBsW,EAAkChB,EAA4B+B,GAAYN,EAClHc,EAAW,GAEf,IAAK,IAAIC,KAAQ1Y,EACX4X,GAAwB,OAATc,GAGnBF,EAAuBE,KACrBD,EAASC,GAAQ1Y,EAAM0Y,IAY3B,OARAD,EAASN,UAAYA,EACrBM,EAASxW,IAAMA,GAAOjC,EAAM2Y,SAMlB,wBAAcV,EAAUQ,SAyBtC,OArBAV,EAAO1S,iBAAiCzE,IAAnBqW,EAA+BA,EAAiB,WAAgC,iBAAZQ,EAAuBA,EAAUA,EAAQpS,aAAeoS,EAAQnS,MAAQ,aAAe,IAChLyS,EAAOhD,aAAeoB,EAAIpB,aAC1BgD,EAAOP,eAAiBO,EACxBA,EAAOL,eAAiBD,EACxBM,EAAOF,iBAAmB3P,EAC1B6P,EAAOV,sBAAwBH,EAC/Bpd,OAAOC,eAAege,EAAQ,WAAY,CACxC9d,MAAO,WAML,MAAO,IAAMkd,KAIjBY,EAAOa,cAAgB,SAAUC,EAASC,GACxC,OAAO9B,EAAa6B,OAAyBjY,IAAhBkY,EAA4BnC,EAAc,GAAI/U,GAAW,GAAI,GAAIkX,GAAelX,GAASvC,WAAM,EAAQ6I,IAG/H6P,IClMYpC,OAFZ,CAAC,IAAK,OAAQ,UAAW,OAAQ,UAAW,QAAS,QAAS,IAAK,OAAQ,MAAO,MAAO,MAAO,aAAc,OAAQ,KAAM,SAAU,SAAU,UAAW,OAAQ,OAAQ,MAAO,WAAY,OAAQ,WAAY,KAAM,MAAO,UAAW,MAAO,SAAU,MAAO,KAAM,KAAM,KAAM,QAAS,WAAY,aAAc,SAAU,SAAU,OAAQ,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,OAAQ,SAAU,SAAU,KAAM,OAAQ,IAAK,SAAU,MAAO,QAAS,MAAO,MAAO,SAAU,QAAS,SAAU,KAAM,OAAQ,OAAQ,MAAO,OAAQ,UAAW,OAAQ,WAAY,OAAQ,QAAS,MAAO,WAAY,SAAU,KAAM,WAAY,SAAU,SAAU,IAAK,QAAS,UAAW,MAAO,WAAY,IAAK,KAAM,KAAM,OAAQ,IAAK,OAAQ,SAAU,UAAW,SAAU,QAAS,SAAU,OAAQ,SAAU,QAAS,MAAO,UAAW,MAAO,QAAS,QAAS,KAAM,WAAY,QAAS,KAAM,QAAS,OAAQ,QAAS,KAAM,QAAS,IAAK,KAAM,MAAO,QAAS,MAC77B,SAAU,WAAY,OAAQ,UAAW,gBAAiB,IAAK,QAAS,OAAQ,iBAAkB,OAAQ,OAAQ,UAAW,UAAW,WAAY,iBAAkB,OAAQ,OAAQ,MAAO,OAAQ,SAEhMjN,SAAQ,SAAUqQ,GACrBhC,EAAUgC,GAAWhC,EAAUgC,MAElB,Q,UCKf,SAASnW,EAAgBC,EAAK3C,EAAKjG,GAYjC,OAXIiG,KAAO2C,EACT/I,OAAOC,eAAe8I,EAAK3C,EAAK,CAC9BjG,MAAOA,EACP6I,YAAY,EACZC,cAAc,EACdC,UAAU,IAGZH,EAAI3C,GAAOjG,EAGN4I,EAqBT,SAAS,EAAQwT,EAAQC,GACvB,IAAI7N,EAAO3O,OAAO2O,KAAK4N,GAEvB,GAAIvc,OAAOyc,sBAAuB,CAChC,IAAIC,EAAU1c,OAAOyc,sBAAsBF,GACvCC,IAAgBE,EAAUA,EAAQzQ,QAAO,SAAU0Q,GACrD,OAAO3c,OAAO4c,yBAAyBL,EAAQI,GAAK3T,eAEtD2F,EAAK9L,KAAK0C,MAAMoJ,EAAM+N,GAGxB,OAAO/N,EAGT,SAASuQ,EAAe1F,GACtB,IAAK,IAAI3D,EAAI,EAAGA,EAAIpQ,UAAU7C,OAAQiT,IAAK,CACzC,IAAIiH,EAAyB,MAAhBrX,UAAUoQ,GAAapQ,UAAUoQ,GAAK,GAE/CA,EAAI,EACN,EAAQ7V,OAAO8c,IAAS,GAAMlO,SAAQ,SAAUxI,GAC9C0C,EAAgB0Q,EAAQpT,EAAK0W,EAAO1W,OAE7BpG,OAAO+c,0BAChB/c,OAAOgd,iBAAiBxD,EAAQxZ,OAAO+c,0BAA0BD,IAEjE,EAAQ9c,OAAO8c,IAASlO,SAAQ,SAAUxI,GACxCpG,OAAOC,eAAeuZ,EAAQpT,EAAKpG,OAAO4c,yBAAyBE,EAAQ1W,OAKjF,OAAOoT,EAkBT,SAAS2F,EAAyBrC,EAAQsC,GACxC,GAAc,MAAVtC,EAAgB,MAAO,GAE3B,IAEI1W,EAAKyP,EAFL2D,EAlBN,SAAuCsD,EAAQsC,GAC7C,GAAc,MAAVtC,EAAgB,MAAO,GAC3B,IAEI1W,EAAKyP,EAFL2D,EAAS,GACT6F,EAAarf,OAAO2O,KAAKmO,GAG7B,IAAKjH,EAAI,EAAGA,EAAIwJ,EAAWzc,OAAQiT,IACjCzP,EAAMiZ,EAAWxJ,GACbuJ,EAASjU,QAAQ/E,IAAQ,IAC7BoT,EAAOpT,GAAO0W,EAAO1W,IAGvB,OAAOoT,EAMM8F,CAA8BxC,EAAQsC,GAInD,GAAIpf,OAAOyc,sBAAuB,CAChC,IAAI8C,EAAmBvf,OAAOyc,sBAAsBK,GAEpD,IAAKjH,EAAI,EAAGA,EAAI0J,EAAiB3c,OAAQiT,IACvCzP,EAAMmZ,EAAiB1J,GACnBuJ,EAASjU,QAAQ/E,IAAQ,GACxBpG,OAAOqK,UAAUmV,qBAAqBhE,KAAKsB,EAAQ1W,KACxDoT,EAAOpT,GAAO0W,EAAO1W,IAIzB,OAAOoT,EAGT,IAIIiG,EAAa,IAAMxY,cAAc,IAWjC,EAAmB,SAA0BsP,GAC/C,IAAImJ,EAAoB,IAAMtY,WAAWqY,GACrCE,EAAgBD,EAMpB,OAJInJ,IACFoJ,EAnBoB,mBAmBOpJ,EAAcA,EAAWmJ,GAAqBR,EAAe,GAAIQ,EAAmB,GAAInJ,IAG9GoJ,GAGL,EAAc,SAAqBzZ,GACrC,IAAIyZ,EAAgB,EAAiBzZ,EAAMqQ,YAC3C,OAAO,IAAMlN,cAAcoW,EAAWpX,SAAU,CAC9ClI,MAAOwf,GACNzZ,EAAMU,WAIPgZ,EAAW,CACbC,WAAY,OACZC,QAAS,SAAiBC,GACxB,IAAInZ,EAAWmZ,EAAKnZ,SACpB,OAAO,IAAMyC,cAAc,IAAM2W,SAAU,GAAIpZ,KAG/CqZ,EAAmB,sBAAW,SAAU/Z,EAAOiC,GACjD,IAAI+X,EAAiBha,EAAMqQ,WACvB4J,EAAUja,EAAMia,QAChBC,EAAela,EAAMka,aACrBC,EAAana,EAAMma,WACnBC,EAAMnB,EAAyBjZ,EAAO,CAAC,aAAc,UAAW,eAAgB,eAEhFqQ,EAAa,EAAiB2J,GAC9BvZ,EAAOwZ,EACP7U,EAAYiL,EAAW,GAAGxP,OAAOsZ,EAAY,KAAKtZ,OAAOJ,KAAU4P,EAAW5P,IAASiZ,EAASjZ,IAASyZ,EAE7G,OAAIF,EACK,IAAM7W,cAAciC,EAAW4T,EAAe,CACnD/W,IAAKA,GACJmY,EAAK,CACN/J,WAAY2J,KAIT,IAAM7W,cAAciC,EAAW4T,EAAe,CACnD/W,IAAKA,GACJmY,OAELL,EAAiB1U,YAAc,mBCrL/B,oEAYA,IAIIuE,EAAU,CACZ+P,WAAY,OACZU,cAAe,KACfnK,KAAM,OAOJ,EAAS,SAAgBhQ,GAC3B,OAAO,SAAUF,GACf,OAAO,YAAI,YAAIA,EAAMM,MAAO,UAAYJ,GAAjC,CAAuCF,EAAMM,SAIpD,EAAS,EAAO,MAAP,CAAc,EAAO,QAC9B,EAAa,GArBN,CAAC,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,MAAO,OAAQ,KAAM,KAAM,KAAM,aAAc,KAAM,KAAM,QAAS,KAAM,KAAM,KAAM,KAAM,SAAU,MACjL,aAAc,gBACd,MACA,QAmBKoI,SAAQ,SAAUyN,GAZX,IAAehZ,EAazB,EAAWgZ,GAAO,EAZXvM,EADkBzM,EAaMgZ,IAZVhZ,EAYH,CAAmB,EAAOgZ,IAC5C,EAAOA,GAAO,EAAWA,MAG3B,IAQI,EAAgB,SAAuBlU,GACzC,IAT+CqY,EAC3Cra,EAQAoQ,EAAapO,EAAIoO,WACjB3P,EAAWuB,EAAIvB,SACf2B,EAAQ,IACZ,OAAO,YAAI,EAAa,CACtBgO,YAb6CiK,EAahBxgB,OAAOwI,OAAO,GAAID,EAAOgO,GAZpDpQ,EAAOnG,OAAOwI,OAAO,GAAI,GAC7BxI,OAAO2O,KAAK6R,GAAO5R,SAAQ,SAAUxI,GACnCD,EAAKC,GAAO,EAAOoa,EAAMpa,GAAb,CAAmB,EAAOA,OAEjCD,GASLS,SAAUA,M,qBCrDd,IAAI6Z,EAAU,EAAQ,QAClBC,EAAQ,EAAQ,QAChBC,EAAU,EAAQ,QAClBC,EAAO,KAEPC,EAAa,SAAUC,EAAQzE,EAAK0E,EAAW5gB,GACjD,IAAI4D,EAAIid,OAAOL,EAAQG,IACnBG,EAAK,IAAM5E,EAEf,MADkB,KAAd0E,IAAkBE,GAAM,IAAMF,EAAY,KAAOC,OAAO7gB,GAAO+gB,QAAQN,EAAM,UAAY,KACtFK,EAAK,IAAMld,EAAI,KAAOsY,EAAM,KAErC/S,EAAOpJ,QAAU,SAAUihB,EAAMC,GAC/B,IAAIzd,EAAI,GACRA,EAAEwd,GAAQC,EAAKP,GACfJ,EAAQA,EAAQ7c,EAAI6c,EAAQze,EAAI0e,GAAM,WACpC,IAAI9U,EAAO,GAAGuV,GAAM,KACpB,OAAOvV,IAASA,EAAKyV,eAAiBzV,EAAK6D,MAAM,KAAK7M,OAAS,KAC7D,SAAUe,K,kCCfhB,EAAQ,QAER,EAAQ,QAER,EAAQ,QAER,EAAQ,QAER,EAAQ,QAER,EAAQ,QAER,EAAQ,QAER,EAAQ,QAER,EAAQ,QAER,EAAQ,QAER,EAAQ,QAER,EAAQ,QAER,EAAQ,QAER,IAAI8D,EAAoB,SAA2BtH,GACjD,OAGF,SAAyBA,GACvB,QAASA,GAA0B,iBAAVA,EAJlBmhB,CAAgBnhB,KAOzB,SAAmBA,GACjB,IAAIohB,EAAcvhB,OAAOqK,UAAUmX,SAAShG,KAAKrb,GACjD,MAAuB,oBAAhBohB,GAAqD,kBAAhBA,GAO9C,SAAwBphB,GACtB,OAAOA,EAAMuH,WAAa+Z,EARqDC,CAAevhB,GAT5DwhB,CAAUxhB,IAa9C,IACIshB,EADiC,mBAAXna,QAAyBA,OAAY,IACvBA,OAAY,IAAE,iBAAmB,MAUzE,SAASsa,EAA8BzhB,EAAO2H,GAC5C,OAAyB,IAAlBA,EAAQ+Z,OAAmB/Z,EAAQL,kBAAkBtH,GAAS2hB,GALlDzS,EAKwElP,EAJpFgP,MAAMC,QAAQC,GAAO,GAAK,IAIkElP,EAAO2H,GAAW3H,EALvH,IAAqBkP,EAQrB,SAAS0S,EAAkBvI,EAAQsD,EAAQhV,GACzC,OAAO0R,EAAOzS,OAAO+V,GAAQ/S,KAAI,SAAUiY,GACzC,OAAOJ,EAA8BI,EAASla,MAmBlD,SAASma,EAAQzI,GACf,OAAOxZ,OAAO2O,KAAK6K,GAAQzS,OAP7B,SAAyCyS,GACvC,OAAOxZ,OAAOyc,sBAAwBzc,OAAOyc,sBAAsBjD,GAAQvN,QAAO,SAAUiW,GAC1F,OAAO1I,EAAOgG,qBAAqB0C,MAChC,GAI6BC,CAAgC3I,IAGpE,SAAS4I,EAAmB7F,EAAQvB,GAClC,IACE,OAAOA,KAAYuB,EACnB,MAAO8F,GACP,OAAO,GAWX,SAASC,EAAY9I,EAAQsD,EAAQhV,GACnC,IAAIya,EAAc,GAmBlB,OAjBIza,EAAQL,kBAAkB+R,IAC5ByI,EAAQzI,GAAQ5K,SAAQ,SAAUxI,GAChCmc,EAAYnc,GAAOwb,EAA8BpI,EAAOpT,GAAM0B,MAIlEma,EAAQnF,GAAQlO,SAAQ,SAAUxI,IAfpC,SAA0BoT,EAAQpT,GAChC,OAAOgc,EAAmB5I,EAAQpT,MAC7BpG,OAAO4b,eAAeJ,KAAKhC,EAAQpT,IACrCpG,OAAOwf,qBAAqBhE,KAAKhC,EAAQpT,KAatCoc,CAAiBhJ,EAAQpT,KAIzBgc,EAAmB5I,EAAQpT,IAAQ0B,EAAQL,kBAAkBqV,EAAO1W,IACtEmc,EAAYnc,GAjDlB,SAA0BA,EAAK0B,GAC7B,IAAKA,EAAQ2a,YACX,OAAOX,EAGT,IAAIW,EAAc3a,EAAQ2a,YAAYrc,GACtC,MAA8B,mBAAhBqc,EAA6BA,EAAcX,EA2ClCY,CAAiBtc,EAAK0B,EAAtB4a,CAA+BlJ,EAAOpT,GAAM0W,EAAO1W,GAAM0B,GAE5Eya,EAAYnc,GAAOwb,EAA8B9E,EAAO1W,GAAM0B,OAG3Dya,EAGT,SAAST,EAAUtI,EAAQsD,EAAQhV,IACjCA,EAAUA,GAAW,IACbH,WAAaG,EAAQH,YAAcoa,EAC3Cja,EAAQL,kBAAoBK,EAAQL,mBAAqBA,EAGzDK,EAAQ8Z,8BAAgCA,EACxC,IAAIe,EAAgBxT,MAAMC,QAAQ0N,GAIlC,OAFgC6F,IADZxT,MAAMC,QAAQoK,GAKvBmJ,EACF7a,EAAQH,WAAW6R,EAAQsD,EAAQhV,GAEnCwa,EAAY9I,EAAQsD,EAAQhV,GAJ5B8Z,EAA8B9E,EAAQhV,GAQjDga,EAAU9Z,IAAM,SAAsB4a,EAAO9a,GAC3C,IAAKqH,MAAMC,QAAQwT,GACjB,MAAM,IAAIlZ,MAAM,qCAGlB,OAAOkZ,EAAMrN,QAAO,SAAUsN,EAAM1c,GAClC,OAAO2b,EAAUe,EAAM1c,EAAM2B,KAC5B,KAGL,IAAIgb,EAAchB,EAClBxY,EAAOpJ,QAAU4iB,G,mBCvJjBxZ,EAAOpJ,QAAU,0tL,kCCGfoJ,EAAOpJ,QAAU,EAAQ,S,qBCH3B,EAAQ,QAER,EAAQ,QAER,EAAQ,QAER,EAAQ,QAER,EAAQ,QAER,EAAQ,QAER,EAAQ,QAER,EAAQ,QAER,EAAQ,QAER,EAAQ,QAER,EAAQ,QAER,EAAQ,QAERA,EAAQ6iB,YAAa,EACrB7iB,EAAQ4a,YAAShU,EAEjB,IAAIkc,EAAWhjB,OAAOwI,QAAU,SAAUgR,GACxC,IAAK,IAAI3D,EAAI,EAAGA,EAAIpQ,UAAU7C,OAAQiT,IAAK,CACzC,IAAIiH,EAASrX,UAAUoQ,GAEvB,IAAK,IAAIzP,KAAO0W,EACV9c,OAAOqK,UAAUuR,eAAeJ,KAAKsB,EAAQ1W,KAC/CoT,EAAOpT,GAAO0W,EAAO1W,IAK3B,OAAOoT,GAGLyJ,EAAe,WACjB,SAASjG,EAAiBxD,EAAQtT,GAChC,IAAK,IAAI2P,EAAI,EAAGA,EAAI3P,EAAMtD,OAAQiT,IAAK,CACrC,IAAIqN,EAAahd,EAAM2P,GACvBqN,EAAWla,WAAaka,EAAWla,aAAc,EACjDka,EAAWja,cAAe,EACtB,UAAWia,IAAYA,EAAWha,UAAW,GACjDlJ,OAAOC,eAAeuZ,EAAQ0J,EAAW9c,IAAK8c,IAIlD,OAAO,SAAUC,EAAaC,EAAYC,GAGxC,OAFID,GAAYpG,EAAiBmG,EAAY9Y,UAAW+Y,GACpDC,GAAarG,EAAiBmG,EAAaE,GACxCF,GAdQ,GAoBfG,EAAUC,EAFD,EAAQ,SAMjBC,EAAcD,EAFD,EAAQ,SAMrBE,EAAoBF,EAFD,EAAQ,SAM3BG,EAAqBH,EAFD,EAAQ,SAI5BI,EAAe,EAAQ,QAEvBC,EAAmB,EAAQ,QAE/B,SAASL,EAAuBxa,GAC9B,OAAOA,GAAOA,EAAIga,WAAaha,EAAM,CACnC,QAAWA,GAIf,SAASoW,EAAyBpW,EAAK4F,GACrC,IAAI6K,EAAS,GAEb,IAAK,IAAI3D,KAAK9M,EACR4F,EAAKxD,QAAQ0K,IAAM,GAClB7V,OAAOqK,UAAUuR,eAAeJ,KAAKzS,EAAK8M,KAC/C2D,EAAO3D,GAAK9M,EAAI8M,IAGlB,OAAO2D,EAGT,SAASqK,EAAgB7Z,EAAUmZ,GACjC,KAAMnZ,aAAoBmZ,GACxB,MAAM,IAAIW,UAAU,qCAIxB,SAASC,EAA2BC,EAAMxI,GACxC,IAAKwI,EACH,MAAM,IAAIC,eAAe,6DAG3B,OAAOzI,GAAyB,iBAATA,GAAqC,mBAATA,EAA8BwI,EAAPxI,EAmB5E,IAA6BlQ,EACvB4Y,EAAQC,EAoPVC,GAAoB,EAAIX,EAA2B,SAAGE,EAAapa,mBAAoBoa,EAAaU,wBAAyBV,EAAala,iBAAtH,EAJJ,WAClB,OAAO,QAIL6a,GAtPyBhZ,EAsPH8Y,EAnPjBD,EAAQD,EAAS,SAAUK,GAGhC,SAASC,IAGP,OAFAX,EAAgBre,KAAMgf,GAEfT,EAA2Bve,KAAM+e,EAAiBhf,MAAMC,KAAMC,YA2LvE,OApNJ,SAAmB0E,EAAUC,GAC3B,GAA0B,mBAAfA,GAA4C,OAAfA,EACtC,MAAM,IAAI0Z,UAAU,kEAAoE1Z,GAG1FD,EAASE,UAAYrK,OAAOsK,OAAOF,GAAcA,EAAWC,UAAW,CACrEE,YAAa,CACXpK,MAAOgK,EACPnB,YAAY,EACZE,UAAU,EACVD,cAAc,KAGdmB,IAAYpK,OAAOykB,eAAiBzkB,OAAOykB,eAAeta,EAAUC,GAAcD,EAASK,UAAYJ,GAOzGsa,CAAUF,EAAeD,GAQzBC,EAAcna,UAAUQ,sBAAwB,SAA+BC,GAC7E,QAAQ,EAAI4Y,EAA4B,SAAGle,KAAKU,MAAO4E,IAGzD0Z,EAAcna,UAAUsa,yBAA2B,SAAkCC,EAAOC,GAC1F,IAAKA,EACH,OAAO,KAGT,OAAQD,EAAMje,MACZ,KAAKid,EAAiBkB,UAAUC,OAChC,KAAKnB,EAAiBkB,UAAUE,SAC9B,MAAO,CACLC,UAAWJ,GAGf,KAAKjB,EAAiBkB,UAAUI,MAC9B,MAAO,CACLC,QAASN,GAIf,MAAM,IAAInb,MAAM,IAAMkb,EAAMje,KAAO,uGAGrC6d,EAAcna,UAAU+a,yBAA2B,SAAkCrF,GACnF,IAAIsF,EAEAT,EAAQ7E,EAAK6E,MACbU,EAAoBvF,EAAKuF,kBACzBC,EAAgBxF,EAAKwF,cACrBV,EAAiB9E,EAAK8E,eAC1B,OAAO7B,EAAS,GAAIsC,IAAoBD,EAAY,IAAcT,EAAMje,MAAQ,GAAGI,OAAOue,EAAkBV,EAAMje,OAAS,GAAI,CAACqc,EAAS,GAAIuC,EAAe/f,KAAKmf,yBAAyBC,EAAOC,MAAoBQ,KAGvNb,EAAcna,UAAUmb,sBAAwB,SAA+BC,GAC7E,IAAIC,EAAWC,EAEXf,EAAQa,EAAMb,MACdjG,EAAW8G,EAAM9G,SACjB4G,EAAgBE,EAAMF,cACtBV,EAAiBY,EAAMZ,eAE3B,OAAQD,EAAMje,MACZ,KAAKid,EAAiBkB,UAAUc,MAC9B,OAAO5C,EAAS,GAAIrE,IAAW+G,EAAY,IAAcd,EAAMje,MAAQke,EAAgBa,EAAUG,gBAAkB7C,EAAS,GAAIuC,GAAgBG,IAElJ,KAAK9B,EAAiBkB,UAAUgB,KAC9B,OAAO9C,EAAS,GAAIrE,EAAU,CAC5BoH,eAAgB/C,EAAS,GAAIuC,KAGjC,KAAK3B,EAAiBkB,UAAUkB,KAC9B,OAAOhD,EAAS,GAAIrE,EAAU,CAC5BsH,eAAgBjD,EAAS,GAAIuC,KAInC,OAAOvC,EAAS,GAAIrE,IAAWgH,EAAY,IAAcf,EAAMje,MAAQqc,EAAS,GAAIuC,GAAgBI,KAGtGnB,EAAcna,UAAU6b,4BAA8B,SAAqCZ,EAAmB3G,GAC5G,IAAIwH,EAAoBnD,EAAS,GAAIrE,GAOrC,OALA3e,OAAO2O,KAAK2W,GAAmB1W,SAAQ,SAAUwX,GAC/C,IAAIC,EAEJF,EAAoBnD,EAAS,GAAImD,IAAoBE,EAAY,IAAcD,GAAkBd,EAAkBc,GAAiBC,OAE/HF,GAGT3B,EAAcna,UAAUic,sBAAwB,SAA+B1B,EAAOC,GAmBpF,OAAO,GAGTL,EAAcna,UAAUkc,mBAAqB,SAA4B3f,EAAU+X,GACjF,IAAI6H,EAAShhB,KAET8f,EAAoB,GAyCxB,OAvCAhC,EAAiB,QAAEmD,SAAS7X,QAAQhI,GAAU,SAAUge,GACtD,GAAKA,GAAUA,EAAM1e,MAArB,CAIA,IAAIwgB,EAAe9B,EAAM1e,MACrB2e,EAAiB6B,EAAa9f,SAC9B+f,EAAaxH,EAAyBuH,EAAc,CAAC,aAErDnB,GAAgB,EAAI5B,EAAaiD,mCAAmCD,GAIxE,OAFAH,EAAOF,sBAAsB1B,EAAOC,GAE5BD,EAAMje,MACZ,KAAKid,EAAiBkB,UAAU+B,KAChC,KAAKjD,EAAiBkB,UAAUgC,KAChC,KAAKlD,EAAiBkB,UAAUE,SAChC,KAAKpB,EAAiBkB,UAAUC,OAChC,KAAKnB,EAAiBkB,UAAUI,MAC9BI,EAAoBkB,EAAOpB,yBAAyB,CAClDR,MAAOA,EACPU,kBAAmBA,EACnBC,cAAeA,EACfV,eAAgBA,IAElB,MAEF,QACElG,EAAW6H,EAAOhB,sBAAsB,CACtCZ,MAAOA,EACPjG,SAAUA,EACV4G,cAAeA,EACfV,eAAgBA,SAMxBlG,EAAWnZ,KAAK0gB,4BAA4BZ,EAAmB3G,IAIjE6F,EAAcna,UAAUgB,OAAS,WAC/B,IAAI0b,EAASvhB,KAAKU,MACdU,EAAWmgB,EAAOngB,SAClBV,EAAQiZ,EAAyB4H,EAAQ,CAAC,aAE1CpI,EAAWqE,EAAS,GAAI9c,GAM5B,OAJIU,IACF+X,EAAWnZ,KAAK+gB,mBAAmB3f,EAAU+X,IAGxC2E,EAAiB,QAAEja,cAAciC,EAAWqT,IAGrDsE,EAAauB,EAAe,KAAM,CAAC,CACjCpe,IAAK,YAuBL4gB,IAAK,SAAa7d,GAChBmC,EAAUnC,UAAYA,MAInBqb,EAjMe,CAkMtBlB,EAAiB,QAAEhY,WAAY4Y,EAAO+C,UAAY,CAClDC,KAAM1D,EAAqB,QAAEjH,OAC7BwJ,eAAgBvC,EAAqB,QAAEjH,OACvC3V,SAAU4c,EAAqB,QAAE2D,UAAU,CAAC3D,EAAqB,QAAE4D,QAAQ5D,EAAqB,QAAE6D,MAAO7D,EAAqB,QAAE6D,OAChIhN,aAAcmJ,EAAqB,QAAE1C,OACrCwG,MAAO9D,EAAqB,QAAE+D,KAC9BC,wBAAyBhE,EAAqB,QAAE+D,KAChDtB,eAAgBzC,EAAqB,QAAEjH,OACvCkL,KAAMjE,EAAqB,QAAE4D,QAAQ5D,EAAqB,QAAEjH,QAC5DmL,KAAMlE,EAAqB,QAAE4D,QAAQ5D,EAAqB,QAAEjH,QAC5DoL,SAAUnE,EAAqB,QAAE4D,QAAQ5D,EAAqB,QAAEjH,QAChEqL,oBAAqBpE,EAAqB,QAAEqE,KAC5CC,OAAQtE,EAAqB,QAAE4D,QAAQ5D,EAAqB,QAAEjH,QAC9DwL,MAAOvE,EAAqB,QAAE4D,QAAQ5D,EAAqB,QAAEjH,QAC7DtC,MAAOuJ,EAAqB,QAAE1C,OAC9B+E,gBAAiBrC,EAAqB,QAAEjH,OACxCjC,cAAekJ,EAAqB,QAAE1C,QACrCoD,EAAOjJ,aAAe,CACvBqM,OAAO,EACPE,yBAAyB,GACxBtD,EAAOzZ,KAAOa,EAAUb,KAAMyZ,EAAOxZ,OAAS,WAC/C,IAAIsd,EAAc1c,EAAUZ,SAmB5B,OAjBKsd,IAEHA,GAAc,EAAIrE,EAAala,kBAAkB,CAC/CkU,QAAS,GACToI,eAAgB,GAChByB,yBAAyB,EACzBvB,eAAgB,GAChBgC,SAAU,GACVC,SAAU,GACVC,aAAc,GACdC,WAAY,GACZC,UAAW,GACXpO,MAAO,GACP4L,gBAAiB,MAIdmC,GACN7D,GASLG,EAAagE,aAAehE,EAAa5Z,OACzCxK,EAAQ4a,OAASwJ,EACjBpkB,EAAiB,QAAIokB,G,mBCxXrBhb,EAAOpJ,QAAU,spU,qBCAjBoJ,EAAOpJ,QAAU,IAA0B,8D,qBCA3C,IAAIugB,EAAU,EAAQ,QAEtBA,EAAQA,EAAQ1c,EAAI0c,EAAQze,GAAK,EAAQ,QAAmB,SAAU,CAAEgb,iBAAkB,EAAQ,W,sEC4DnFuL,IAnCA,SAAC,GAAsD,IAArD3hB,EAAoD,EAApDA,SAAUiQ,EAA0C,EAA1CA,QAAS4Q,EAAiC,EAAjCA,KAAMjO,EAA2B,EAA3BA,OAAQgP,EAAmB,EAAnBA,aAC1CrS,EAAUU,EAAU,kBAAoB,oBAC9C,OAAI2C,EAEA,iBAAGF,KAAOmO,EAAMlO,IAAI,sBAAsBC,OAAO,SAC/ClT,GAAI,CACF6P,QAASA,EACT+B,QAAS,OACTY,WAAY,SACZV,eAAgB,SAChBZ,eAAgB,OAChB/C,MAAO+T,EAAe,QAAU,UAGjC5hB,GAKH,iBAAG0S,KAAOmO,EACRnhB,GAAI,CACF6P,QAASA,EACT+B,QAAS,OACTY,WAAY,SACZV,eAAgB,SAChBZ,eAAgB,OAChB/C,MAAO+T,EAAe,QAAU,UAGjC5hB,K,kCCxDT,0HAMI0I,EAAM,SAAavG,EAAK3C,EAAKmJ,EAAKjP,EAAGkP,GAGvC,IAFApJ,EAAMA,GAAOA,EAAIqJ,MAAQrJ,EAAIqJ,MAAM,KAAO,CAACrJ,GAEtC9F,EAAI,EAAGA,EAAI8F,EAAIxD,OAAQtC,IAC1ByI,EAAMA,EAAMA,EAAI3C,EAAI9F,IAAMkP,EAG5B,OAAOzG,IAAQyG,EAAQD,EAAMxG,GAG3B2G,EAAqB,CAAC,GAAI,GAAI,IAAI3F,KAAI,SAAU1G,GAClD,OAAOA,EAAI,QAETsM,EAAe,CACjBC,MAAO,CAAC,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,IAAK,IAAK,KACvCC,UAAW,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,KAE1CC,EAAU,CACZrB,GAAI,kBACJrL,EAAG,SACH2M,GAAI,YACJC,GAAI,cACJC,GAAI,eACJC,GAAI,aACJC,GAAI,UACJC,GAAI,UACJ9P,EAAG,UACH+P,GAAI,aACJC,GAAI,eACJC,GAAI,gBACJC,GAAI,cACJC,GAAI,WACJC,GAAI,YAEFC,EAAY,CACdC,QAAS,CAAC,aAAc,eACxBC,QAAS,CAAC,YAAa,gBACvBC,SAAU,CAAC,cAAe,gBAC1BC,SAAU,CAAC,aAAc,iBACzBC,KAAM,CAAC,QAAS,WAEdC,EAAS,CACXzC,MAAO,SACP0C,gBAAiB,SACjBC,YAAa,SACbC,OAAQ,QACRC,UAAW,QACXC,YAAa,QACbC,aAAc,QACdC,WAAY,QACZZ,QAAS,QACTC,QAAS,QACTY,QAAS,QACTC,WAAY,QACZC,aAAc,QACdC,cAAe,QACfC,YAAa,QACbf,SAAU,QACVC,SAAU,QACVe,IAAK,QACLC,MAAO,QACPC,OAAQ,QACRC,KAAM,QACNC,QAAS,QACTC,cAAe,QACfC,WAAY,QACZC,IAAK,QACLC,UAAW,QACXC,OAAQ,QACRC,WAAY,QACZC,SAAU,YACVC,WAAY,cACZC,WAAY,cACZC,cAAe,iBACfC,OAAQ,UACRC,UAAW,UACXC,YAAa,UACbC,aAAc,UACdC,WAAY,UACZC,YAAa,eACbC,YAAa,eACbC,aAAc,QACdC,qBAAsB,QACtBC,oBAAqB,QACrBC,wBAAyB,QACzBC,uBAAwB,QACxBC,eAAgB,eAChBC,eAAgB,SAChBC,eAAgB,eAChBC,kBAAmB,eACnBC,kBAAmB,SACnBC,kBAAmB,eACnBC,gBAAiB,eACjBC,gBAAiB,SACjBC,gBAAiB,eACjBC,iBAAkB,eAClBC,iBAAkB,SAClBC,iBAAkB,eAClBC,aAAc,SACdC,UAAW,UACXC,WAAY,UACZC,OAAQ,WACRC,MAAO,QACPC,SAAU,QACVC,SAAU,QACVC,OAAQ,QACRC,UAAW,QACXC,UAAW,QACXC,UAAW,QACX/D,KAAM,QAENgE,KAAM,SACNC,OAAQ,UAGNC,EAAqB,SAA4BC,EAAOhV,GAC1D,GAAqB,iBAAVA,GAAsBA,GAAS,EACxC,OAAOmP,EAAI6F,EAAOhV,EAAOA,GAG3B,IAAIiV,EAAWlT,KAAKmT,IAAIlV,GACpBkD,EAAIiM,EAAI6F,EAAOC,EAAUA,GAE7B,MAAiB,iBAAN/R,EACF,IAAMA,GAGH,EAALA,GAGLiS,EAAa,CAAC,SAAU,YAAa,cAAe,eAAgB,aAAc,UAAW,UAAW,MAAO,SAAU,OAAQ,SAASC,QAAO,SAAUC,EAAKC,GAClK,IAAI1M,EACJ,OAAO/I,OAAOwI,OAAO,GAAIgN,IAAMzM,EAAM,IAAQ0M,GAAQP,EAAoBnM,MACxE,IA4CCxC,EAAM,SAASA,EAAI0B,GACrB,OAAO,SAAU/B,QACD,IAAVA,IAAkBA,EAAQ,IAC9B,IAAIM,EAAQxG,OAAOwI,OAAO,GAAImH,EAAczJ,EAAMM,OAASN,GACvDwP,EAAS,GAETtH,EAhDS,SAAoBA,GACnC,OAAO,SAAU5H,GACf,IAAIL,EAAO,GACPwP,EAAcrG,EAAI9I,EAAO,cAAekJ,GACxCkG,EAAe,CAAC,MAAM7O,OAAO4O,EAAY5L,KAAI,SAAU1G,GACzD,MAAO,iCAAmCA,EAAI,QAGhD,IAAK,IAAI+C,KAAOgI,EAAQ,CACtB,IAAIjO,EAA+B,mBAAhBiO,EAAOhI,GAAsBgI,EAAOhI,GAAKI,GAAS4H,EAAOhI,GAE5E,GAAa,MAATjG,EAIJ,GAAKgP,MAAMC,QAAQjP,GAKnB,IAAK,IAAI0V,EAAI,EAAGA,EAAI1V,EAAM2V,MAAM,EAAGF,EAAahT,QAAQA,OAAQiT,IAAK,CACnE,IAAI3H,EAAQ0H,EAAaC,GAEpB3H,GAKL/H,EAAK+H,GAAS/H,EAAK+H,IAAU,GAEb,MAAZ/N,EAAM0V,KAIV1P,EAAK+H,GAAO9H,GAAOjG,EAAM0V,KAVvB1P,EAAKC,GAAOjG,EAAM0V,QARpB1P,EAAKC,GAAOjG,EAsBhB,OAAOgG,GAUM4P,CADa,mBAAT9N,EAAsBA,EAAKzB,GAASyB,EACxC8N,CAAgBvP,GAE7B,IAAK,IAAIJ,KAAOgI,EAAQ,CACtB,IAAIhN,EAAIgN,EAAOhI,GACXiJ,EAAmB,mBAANjO,EAAmBA,EAAEoF,GAASpF,EAE/C,GAAY,YAARgF,EAMJ,GAAIiJ,GAAsB,iBAARA,EAChBqG,EAAOtP,GAAOG,EAAI8I,EAAJ9I,CAASC,OADzB,CAKA,IAAImF,EAAO2D,EAAIQ,EAAS1J,EAAKA,GACzB4P,EAAY1G,EAAI2B,EAAQtF,GACxBwJ,EAAQ7F,EAAI9I,EAAOwP,EAAW1G,EAAI9I,EAAOmF,EAAM,KAE/CxL,EADYmP,EAAIgG,EAAY3J,EAAM2D,EAC1B2G,CAAUd,EAAO9F,EAAKA,GAElC,GAAIsB,EAAUhF,GAGZ,IAFA,IAAIuK,EAAOvF,EAAUhF,GAEZkK,EAAI,EAAGA,EAAIK,EAAKtT,OAAQiT,IAC/BH,EAAOQ,EAAKL,IAAM1V,OAGpBuV,EAAO/J,GAAQxL,MAxBjB,CACE,IAAIgW,EAAU5P,EAAI+I,EAAI9I,EAAO6I,GAAf9I,CAAqBC,GACnCkP,EAAS1V,OAAOwI,OAAO,GAAIkN,EAAQS,IA0BvC,OAAOT,K,kCC7NX,EAAQ,QAER,EAAQ,QAER,EAAQ,QAER,EAAQ,QAER,EAAQ,QAER,EAAQ,QAER,EAAQ,QAER,EAAQ,QAER,EAAQ,QAER,EAAQ,QAER,IAAItG,EAAUD,MAAMC,QAChBqZ,EAAUzoB,OAAO2O,KACjB+Z,EAAU1oB,OAAOqK,UAAUuR,eAC3B+M,EAAoC,oBAAZC,QAsE5Btf,EAAOpJ,QAAU,SAAuBO,EAAGE,GACzC,IACE,OAtEJ,SAASkoB,EAAMpoB,EAAGE,GAEhB,GAAIF,IAAME,EAAG,OAAO,EAEpB,GAAIF,GAAKE,GAAiB,iBAALF,GAA6B,iBAALE,EAAe,CAC1D,IAEIkV,EACAjT,EACAwD,EAJA0iB,EAAO1Z,EAAQ3O,GACfsoB,EAAO3Z,EAAQzO,GAKnB,GAAImoB,GAAQC,EAAM,CAEhB,IADAnmB,EAASnC,EAAEmC,SACGjC,EAAEiC,OAAQ,OAAO,EAE/B,IAAKiT,EAAIjT,EAAgB,GAARiT,KACf,IAAKgT,EAAMpoB,EAAEoV,GAAIlV,EAAEkV,IAAK,OAAO,EAGjC,OAAO,EAGT,GAAIiT,GAAQC,EAAM,OAAO,EACzB,IAAIC,EAAQvoB,aAAaK,KACrBmoB,EAAQtoB,aAAaG,KACzB,GAAIkoB,GAASC,EAAO,OAAO,EAC3B,GAAID,GAASC,EAAO,OAAOxoB,EAAEyoB,WAAavoB,EAAEuoB,UAC5C,IAAIC,EAAU1oB,aAAa2oB,OACvBC,EAAU1oB,aAAayoB,OAC3B,GAAID,GAAWE,EAAS,OAAO,EAC/B,GAAIF,GAAWE,EAAS,OAAO5oB,EAAE+gB,YAAc7gB,EAAE6gB,WACjD,IAAI7S,EAAO8Z,EAAQhoB,GAEnB,IADAmC,EAAS+L,EAAK/L,UACC6lB,EAAQ9nB,GAAGiC,OAAQ,OAAO,EAEzC,IAAKiT,EAAIjT,EAAgB,GAARiT,KACf,IAAK6S,EAAQlN,KAAK7a,EAAGgO,EAAKkH,IAAK,OAAO,EAMxC,GAAI8S,GAAkBloB,aAAamoB,SAAWjoB,aAAaioB,QAAS,OAAOnoB,IAAME,EAEjF,IAAKkV,EAAIjT,EAAgB,GAARiT,KAGf,KAAY,YAFZzP,EAAMuI,EAAKkH,KAEapV,EAAEiH,UAQnBmhB,EAAMpoB,EAAE2F,GAAMzF,EAAEyF,KAAO,OAAO,EAMvC,OAAO,EAGT,OAAO3F,GAAMA,GAAKE,GAAMA,EAMfkoB,CAAMpoB,EAAGE,GAChB,MAAOgB,GACP,GAAIA,EAAM2nB,SAAW3nB,EAAM2nB,QAAQC,MAAM,sBAAyC,aAAlB5nB,EAAM6nB,OAOpE,OADAjoB,QAAQ2L,KAAK,mEAAoEvL,EAAM6J,KAAM7J,EAAM2nB,UAC5F,EAIT,MAAM3nB,K,4VC9GV2H,EAAOpJ,QAAU,09T,uBCAjB,EAAQ,QAER,EAAQ,QAER,EAAQ,QAER,EAAQ,QAER,EAAQ,QAER,EAAQ,QAERA,EAAQ6iB,YAAa,EACC7iB,EAAQupB,gBAAkB,CAC9C3D,KAAM,iBACNE,KAAM,iBACNJ,MAAO,mBAHT,IAKId,EAAY5kB,EAAQ4kB,UAAY,CAClC4E,KAAM,OACN5D,KAAM,OACN6D,KAAM,OACN3D,KAAM,OACNa,KAAM,OACNC,KAAM,OACN9B,SAAU,WACVD,OAAQ,SACRG,MAAO,QACPU,MAAO,SAiBLgE,GAfkB1pB,EAAQ2pB,gBAAkB7pB,OAAO2O,KAAKmW,GAAW/a,KAAI,SAAUyB,GACnF,OAAOsZ,EAAUtZ,MAEEtL,EAAQ4pB,eAAiB,CAC5CC,QAAS,UACTC,SAAU,UACVC,KAAM,OACNC,UAAW,aACXC,WAAY,YACZC,UAAW,WACXjJ,KAAM,OACNkJ,SAAU,WACVC,IAAK,MACLC,IAAK,OAEarqB,EAAQ0pB,cAAgB,CAC1CY,UAAW,YACXC,QAAS,UACT,MAAS,YACTC,gBAAiB,kBACjBC,YAAa,cACb,aAAc,YACdC,SAAU,WACVC,SAAU,aAEO3qB,EAAQ4qB,aAAe,CACxCC,cAAe,eACfC,MAAO,QACPC,0BAA2B,0BAC3BC,uBAAwB,sBACxBC,eAAgB,iBAECjrB,EAAQkrB,aAAeprB,OAAO2O,KAAKib,GAAerU,QAAO,SAAUxM,EAAK3C,GAEzF,OADA2C,EAAI6gB,EAAcxjB,IAAQA,EACnB2C,IACN,IACqB7I,EAAQmrB,kBAAoB,CAACvG,EAAUE,SAAUF,EAAUC,OAAQD,EAAUI,OAC9EhlB,EAAQorB,iBAAmB,qB,mCCjElD,SAASC,IAEP,GAA8C,oBAAnCC,gCAAqG,mBAA5CA,+BAA+BD,SAAnG,CAII,EAWJ,IAEEC,+BAA+BD,SAASA,GACxC,MAAOE,GAGPlqB,QAAQI,MAAM8pB,KAOhBF,GACAjiB,EAAOpJ,QAAU,EAAQ,S,qBChC3B,IAAIugB,EAAU,EAAQ,QAClBnE,EAAU,EAAQ,QAClBoP,EAAY,EAAQ,QACpBC,EAAO,EAAQ,QACfC,EAAiB,EAAQ,QAE7BnL,EAAQA,EAAQ1c,EAAG,SAAU,CAC3BgZ,0BAA2B,SAAmCR,GAO5D,IANA,IAKInW,EAAKylB,EALLloB,EAAI+nB,EAAUnP,GACduP,EAAUH,EAAKI,EACfpd,EAAO2N,EAAQ3Y,GACf+R,EAAS,GACTG,EAAI,EAEDlH,EAAK/L,OAASiT,QAEN/O,KADb+kB,EAAOC,EAAQnoB,EAAGyC,EAAMuI,EAAKkH,QACL+V,EAAelW,EAAQtP,EAAKylB,GAEtD,OAAOnW,M,qBClBX,IAAIsW,EAAO,EAAQ,QACfC,EAAO,EAAQ,QACfC,EAAW,EAAQ,QACnBC,EAAU,EAAQ,QAAaA,QACnC7iB,EAAOpJ,QAAUisB,GAAWA,EAAQ7P,SAAW,SAAiB8P,GAC9D,IAAIzd,EAAOqd,EAAKD,EAAEG,EAASE,IACvBC,EAAaJ,EAAKF,EACtB,OAAOM,EAAa1d,EAAK5H,OAAOslB,EAAWD,IAAOzd,I,kCCLlDrF,EAAOpJ,QAAU,EAAQ,S,kCCD3B,EAAQ,OAAR,CAA0B,QAAQ,SAAU2gB,GAC1C,OAAO,SAAchG,GACnB,OAAOgG,EAAWrb,KAAM,IAAK,OAAQqV,Q,mBCJzCvR,EAAOpJ,QAAU,s2G,sBCAjB,cAAQ,QAER,EAAQ,QAER,EAAQ,QAER,EAAQ,QAER,EAAQ,QAER,EAAQ,QAER,EAAQ,QAER,EAAQ,QAER,EAAQ,QAER,EAAQ,QAER,EAAQ,QAER,EAAQ,QAER,EAAQ,QAER,EAAQ,QAER,EAAQ,QAER,EAAQ,QAER,EAAQ,QAERA,EAAQ6iB,YAAa,EACrB7iB,EAAQgN,KAAOhN,EAAQwB,sBAAwBxB,EAAQqJ,mBAAqBrJ,EAAQuJ,iBAAmBvJ,EAAQmkB,wBAA0BnkB,EAAQ0mB,uCAAoC9f,EAErL,IAAIwlB,EAA4B,mBAAXhlB,QAAoD,iBAApBA,OAAOilB,SAAwB,SAAUxjB,GAC5F,cAAcA,GACZ,SAAUA,GACZ,OAAOA,GAAyB,mBAAXzB,QAAyByB,EAAIwB,cAAgBjD,QAAUyB,IAAQzB,OAAO+C,UAAY,gBAAkBtB,GAGvHia,EAAWhjB,OAAOwI,QAAU,SAAUgR,GACxC,IAAK,IAAI3D,EAAI,EAAGA,EAAIpQ,UAAU7C,OAAQiT,IAAK,CACzC,IAAIiH,EAASrX,UAAUoQ,GAEvB,IAAK,IAAIzP,KAAO0W,EACV9c,OAAOqK,UAAUuR,eAAeJ,KAAKsB,EAAQ1W,KAC/CoT,EAAOpT,GAAO0W,EAAO1W,IAK3B,OAAOoT,GAKL8J,EAAUC,EAFD,EAAQ,SAMjBiJ,EAAiBjJ,EAFD,EAAQ,SAIxBK,EAAmB,EAAQ,QAE/B,SAASL,EAAuBxa,GAC9B,OAAOA,GAAOA,EAAIga,WAAaha,EAAM,CACnC,QAAWA,GAIf,IAoKM0jB,EApKFjF,EAA0B,SAAiCkF,GAC7D,IAAIC,IAASlnB,UAAU7C,OAAS,QAAsBkE,IAAjBrB,UAAU,KAAmBA,UAAU,GAE5E,OAAe,IAAXknB,EACK3L,OAAO0L,GAGT1L,OAAO0L,GAAKxL,QAAQ,KAAM,SAASA,QAAQ,KAAM,QAAQA,QAAQ,KAAM,QAAQA,QAAQ,KAAM,UAAUA,QAAQ,KAAM,WAG1H0L,EAAwB,SAA+BC,GACzD,IAAIC,EAAiBC,EAAqBF,EAAWjJ,EAAiBkB,UAAUc,OAC5EoH,EAAoBD,EAAqBF,EAAWjJ,EAAiBkH,aAAaK,gBAEtF,GAAI6B,GAAqBF,EAEvB,OAAOE,EAAkB9L,QAAQ,OAAO,WACtC,OAAO4L,KAIX,IAAIG,EAAwBF,EAAqBF,EAAWjJ,EAAiBkH,aAAaC,eAC1F,OAAO+B,GAAkBG,QAAyBnmB,GAGhDomB,EAAyB,SAAgCL,GAC3D,OAAOE,EAAqBF,EAAWjJ,EAAiBkH,aAAaI,yBAA2B,cAG9FiC,EAA6B,SAAoCC,EAASP,GAC5E,OAAOA,EAAU5gB,QAAO,SAAU/F,GAChC,YAAiC,IAAnBA,EAAMknB,MACnBrjB,KAAI,SAAU7D,GACf,OAAOA,EAAMknB,MACZ7X,QAAO,SAAU8X,EAAUC,GAC5B,OAAOtK,EAAS,GAAIqK,EAAUC,KAC7B,KAGDC,EAA0B,SAAiCC,EAAmBX,GAChF,OAAOA,EAAU5gB,QAAO,SAAU/F,GAChC,YAAyD,IAA3CA,EAAM0d,EAAiBkB,UAAU4E,SAC9C3f,KAAI,SAAU7D,GACf,OAAOA,EAAM0d,EAAiBkB,UAAU4E,SACvC+D,UAAUlY,QAAO,SAAUmY,EAAkBrR,GAC9C,IAAKqR,EAAiB9qB,OAGpB,IAFA,IAAI+L,EAAO3O,OAAO2O,KAAK0N,GAEdxG,EAAI,EAAGA,EAAIlH,EAAK/L,OAAQiT,IAAK,CACpC,IACI8X,EADehf,EAAKkH,GACiBwL,cAEzC,IAA0D,IAAtDmM,EAAkBriB,QAAQwiB,IAAiCtR,EAAIsR,GACjE,OAAOD,EAAiB3mB,OAAOsV,GAKrC,OAAOqR,IACN,KAGDE,EAAuB,SAA8B3O,EAASuO,EAAmBX,GAEnF,IAAIgB,EAAmB,GACvB,OAAOhB,EAAU5gB,QAAO,SAAU/F,GAChC,QAAIiJ,MAAMC,QAAQlJ,EAAM+Y,WAIM,IAAnB/Y,EAAM+Y,IACf/R,EAAK,WAAa+R,EAAU,mDAAwDqN,EAAQpmB,EAAM+Y,IAAY,MAGzG,MACNlV,KAAI,SAAU7D,GACf,OAAOA,EAAM+Y,MACZwO,UAAUlY,QAAO,SAAUuY,EAAcC,GAC1C,IAAIC,EAAmB,GACvBD,EAAa9hB,QAAO,SAAUoQ,GAI5B,IAHA,IAAI4R,OAAsB,EACtBtf,EAAO3O,OAAO2O,KAAK0N,GAEdxG,EAAI,EAAGA,EAAIlH,EAAK/L,OAAQiT,IAAK,CACpC,IAAIqY,EAAevf,EAAKkH,GACpB8X,EAAwBO,EAAa7M,eAEiB,IAAtDmM,EAAkBriB,QAAQwiB,IAAmCM,IAAwBrK,EAAiBkG,eAAeQ,KAAkD,cAA3CjO,EAAI4R,GAAqB5M,eAAoCsM,IAA0B/J,EAAiBkG,eAAeQ,KAAoD,eAA7CjO,EAAIsR,GAAuBtM,gBACvR4M,EAAsBN,IAIyB,IAA7CH,EAAkBriB,QAAQ+iB,IAAyBA,IAAiBtK,EAAiBkG,eAAeK,YAAc+D,IAAiBtK,EAAiBkG,eAAeE,UAAYkE,IAAiBtK,EAAiBkG,eAAeM,YAClO6D,EAAsBC,GAI1B,IAAKD,IAAwB5R,EAAI4R,GAC/B,OAAO,EAGT,IAAI9tB,EAAQkc,EAAI4R,GAAqB5M,cAUrC,OARKwM,EAAiBI,KACpBJ,EAAiBI,GAAuB,IAGrCD,EAAiBC,KACpBD,EAAiBC,GAAuB,KAGrCJ,EAAiBI,GAAqB9tB,KACzC6tB,EAAiBC,GAAqB9tB,IAAS,GACxC,MAIRstB,UAAU7e,SAAQ,SAAUyN,GAC7B,OAAOyR,EAAajrB,KAAKwZ,MAK3B,IAFA,IAAI1N,EAAO3O,OAAO2O,KAAKqf,GAEdnY,EAAI,EAAGA,EAAIlH,EAAK/L,OAAQiT,IAAK,CACpC,IAAIqY,EAAevf,EAAKkH,GACpBsY,GAAW,EAAI3B,EAAwB,SAAG,GAAIqB,EAAiBK,GAAeF,EAAiBE,IACnGL,EAAiBK,GAAgBC,EAGnC,OAAOL,IACN,IAAIL,WAGLV,EAAuB,SAA8BF,EAAW7R,GAClE,IAAK,IAAInF,EAAIgX,EAAUjqB,OAAS,EAAGiT,GAAK,EAAGA,IAAK,CAC9C,IAAI3P,EAAQ2mB,EAAUhX,GAEtB,GAAI3P,EAAM0V,eAAeZ,GACvB,OAAO9U,EAAM8U,GAIjB,OAAO,MAqBLoT,GACE3B,EAAQ3rB,KAAKC,MACV,SAAUoD,GACf,IAAIkqB,EAAcvtB,KAAKC,MAEnBstB,EAAc5B,EAAQ,IACxBA,EAAQ4B,EACRlqB,EAASkqB,IAETztB,YAAW,WACTwtB,EAAYjqB,KACX,KAKLmqB,EAAc,SAAqB7qB,GACrC,OAAOzC,aAAayC,IAGlB/B,EAA0C,oBAAXtB,OAAyBA,OAAOsB,uBAAyBtB,OAAOmuB,6BAA+BnuB,OAAOouB,0BAA4BJ,EAAcK,EAAO/sB,uBAAyB0sB,EAC/M3sB,EAAyC,oBAAXrB,OAAyBA,OAAOqB,sBAAwBrB,OAAOsuB,4BAA8BtuB,OAAOuuB,yBAA2BL,EAAcG,EAAOhtB,sBAAwB6sB,EAE1MphB,EAAO,SAAc0hB,GACvB,OAAOrtB,SAAmC,mBAAjBA,QAAQ2L,MAAuB3L,QAAQ2L,KAAK0hB,IAGnEC,EAAkB,KAmBlBC,EAAmB,SAA0BC,EAAUC,GACzD,IAAIrR,EAAUoR,EAASpR,QACnBoI,EAAiBgJ,EAAShJ,eAC1BE,EAAiB8I,EAAS9I,eAC1BgC,EAAW8G,EAAS9G,SACpBC,EAAW6G,EAAS7G,SACpBC,EAAe4G,EAAS5G,aACxBP,EAAsBmH,EAASnH,oBAC/BQ,EAAa2G,EAAS3G,WACtBC,EAAY0G,EAAS1G,UACrBpO,EAAQ8U,EAAS9U,MACjB4L,EAAkBkJ,EAASlJ,gBAC/BoJ,EAAiBrL,EAAiBkB,UAAUgB,KAAMC,GAClDkJ,EAAiBrL,EAAiBkB,UAAUkB,KAAMC,GAClDiJ,EAAYjV,EAAO4L,GACnB,IAAIsJ,EAAa,CACfxR,QAASyR,EAAWxL,EAAiBkB,UAAU4E,KAAM/L,GACrDsK,SAAUmH,EAAWxL,EAAiBkB,UAAU+B,KAAMoB,GACtDC,SAAUkH,EAAWxL,EAAiBkB,UAAUgC,KAAMoB,GACtDC,aAAciH,EAAWxL,EAAiBkB,UAAUE,SAAUmD,GAC9DC,WAAYgH,EAAWxL,EAAiBkB,UAAUC,OAAQqD,GAC1DC,UAAW+G,EAAWxL,EAAiBkB,UAAUI,MAAOmD,IAEtDgH,EAAY,GACZC,EAAc,GAClBtvB,OAAO2O,KAAKwgB,GAAYvgB,SAAQ,SAAUwe,GACxC,IAAImC,EAAsBJ,EAAW/B,GACjCoC,EAAUD,EAAoBC,QAC9BC,EAAUF,EAAoBE,QAE9BD,EAAQ5sB,SACVysB,EAAUjC,GAAWoC,GAGnBC,EAAQ7sB,SACV0sB,EAAYlC,GAAW+B,EAAW/B,GAASqC,YAG/CT,GAAMA,IACNpH,EAAoBmH,EAAUM,EAAWC,IAGvCI,EAAe,SAAsBC,GACvC,OAAOxgB,MAAMC,QAAQugB,GAAiBA,EAAc3jB,KAAK,IAAM2jB,GAG7DT,EAAc,SAAqBjV,EAAO2V,QACvB,IAAV3V,GAAyB7Q,SAAS6Q,QAAUA,IACrD7Q,SAAS6Q,MAAQyV,EAAazV,IAGhCgV,EAAiBrL,EAAiBkB,UAAUc,MAAOgK,IAGjDX,EAAmB,SAA0BhQ,EAAS2Q,GACxD,IAAIC,EAAazmB,SAAS0mB,qBAAqB7Q,GAAS,GAExD,GAAK4Q,EAAL,CASA,IALA,IAAIE,EAAwBF,EAAWG,aAAapM,EAAiB0H,kBACjE2E,EAAmBF,EAAwBA,EAAsBtgB,MAAM,KAAO,GAC9EygB,EAAqB,GAAGnpB,OAAOkpB,GAC/BE,EAAgBnwB,OAAO2O,KAAKihB,GAEvB/Z,EAAI,EAAGA,EAAIsa,EAAcvtB,OAAQiT,IAAK,CAC7C,IAAIkL,EAAYoP,EAActa,GAC1B1V,EAAQyvB,EAAW7O,IAAc,GAEjC8O,EAAWG,aAAajP,KAAe5gB,GACzC0vB,EAAWO,aAAarP,EAAW5gB,IAGQ,IAAzC8vB,EAAiB9kB,QAAQ4V,IAC3BkP,EAAiBptB,KAAKke,GAGxB,IAAIsP,EAAcH,EAAmB/kB,QAAQ4V,IAExB,IAAjBsP,GACFH,EAAmB9kB,OAAOilB,EAAa,GAI3C,IAAK,IAAIC,EAAKJ,EAAmBttB,OAAS,EAAG0tB,GAAM,EAAGA,IACpDT,EAAWU,gBAAgBL,EAAmBI,IAG5CL,EAAiBrtB,SAAWstB,EAAmBttB,OACjDitB,EAAWU,gBAAgB3M,EAAiB0H,kBACnCuE,EAAWG,aAAapM,EAAiB0H,oBAAsB6E,EAAcnkB,KAAK,MAC3F6jB,EAAWO,aAAaxM,EAAiB0H,iBAAkB6E,EAAcnkB,KAAK,QAI9EojB,EAAa,SAAoBzoB,EAAM6pB,GACzC,IAAIC,EAAcrnB,SAASsnB,MAAQtnB,SAASunB,cAAc/M,EAAiBkB,UAAU6E,MACjFiH,EAAWH,EAAYI,iBAAiBlqB,EAAO,IAAMid,EAAiB0H,iBAAmB,KACzFmE,EAAUtgB,MAAM9E,UAAUyL,MAAM0F,KAAKoV,GACrCpB,EAAU,GACVsB,OAAgB,EA0CpB,OAxCIN,GAAQA,EAAK5tB,QACf4tB,EAAK5hB,SAAQ,SAAUyN,GACrB,IAAI0U,EAAa3nB,SAASC,cAAc1C,GAExC,IAAK,IAAIoa,KAAa1E,EACpB,GAAIA,EAAIT,eAAemF,GACrB,GAAIA,IAAc6C,EAAiBkG,eAAeK,WAChD4G,EAAW9L,UAAY5I,EAAI4I,eACtB,GAAIlE,IAAc6C,EAAiBkG,eAAeE,SACnD+G,EAAWC,WACbD,EAAWC,WAAW7L,QAAU9I,EAAI8I,QAEpC4L,EAAWE,YAAY7nB,SAAS8nB,eAAe7U,EAAI8I,cAEhD,CACL,IAAIhlB,OAAkC,IAAnBkc,EAAI0E,GAA6B,GAAK1E,EAAI0E,GAC7DgQ,EAAWX,aAAarP,EAAW5gB,GAKzC4wB,EAAWX,aAAaxM,EAAiB0H,iBAAkB,QAEvDmE,EAAQ0B,MAAK,SAAUC,EAAalmB,GAEtC,OADA4lB,EAAgB5lB,EACT6lB,EAAWM,YAAYD,MAE9B3B,EAAQrkB,OAAO0lB,EAAe,GAE9BtB,EAAQ3sB,KAAKkuB,MAKnBtB,EAAQ7gB,SAAQ,SAAUyN,GACxB,OAAOA,EAAIiV,WAAWC,YAAYlV,MAEpCmT,EAAQ5gB,SAAQ,SAAUyN,GACxB,OAAOoU,EAAYQ,YAAY5U,MAE1B,CACLoT,QAASA,EACTD,QAASA,IAITgC,EAAoC,SAA2C5B,GACjF,OAAO5vB,OAAO2O,KAAKihB,GAAYra,QAAO,SAAUmX,EAAKtmB,GACnD,IAAIqrB,OAAkC,IAApB7B,EAAWxpB,GAAuBA,EAAM,KAAQwpB,EAAWxpB,GAAO,IAAO,GAAKA,EAChG,OAAOsmB,EAAMA,EAAM,IAAM+E,EAAOA,IAC/B,KAuBDC,EAAuC,SAA8C9B,GACvF,IAAI+B,EAAYlsB,UAAU7C,OAAS,QAAsBkE,IAAjBrB,UAAU,GAAmBA,UAAU,GAAK,GACpF,OAAOzF,OAAO2O,KAAKihB,GAAYra,QAAO,SAAUxM,EAAK3C,GAEnD,OADA2C,EAAI6a,EAAiBgG,cAAcxjB,IAAQA,GAAOwpB,EAAWxpB,GACtD2C,IACN4oB,IA6CDC,EAAmB,SAA0BjrB,EAAM6pB,EAAM7D,GAC3D,OAAQhmB,GACN,KAAKid,EAAiBkB,UAAUc,MAC9B,MAAO,CACLiM,YAAa,WACX,OAvCuE5X,EAuC5BuW,EAAKvW,MAvC8B2V,EAuCvBY,EAAK3K,iBAnCnDiM,EAAa,CAC5B1rB,IAAK6T,IACO2J,EAAiB0H,mBAAoB,EAC/CplB,EAAQwrB,EAAqC9B,EADQkC,GAElD,CAACxO,EAAiB,QAAEja,cAAcua,EAAiBkB,UAAUc,MAAO1f,EAAO+T,IARhD,IAA6CA,EAAO2V,EAClFkC,EAMA5rB,GAkCEsb,SAAU,WACR,OA9EkB,SAA+B7a,EAAMsT,EAAO2V,EAAYjD,GAClF,IAAIoF,EAAkBP,EAAkC5B,GACpDoC,EAAiBtC,EAAazV,GAClC,OAAO8X,EAAkB,IAAMprB,EAAO,IAAMid,EAAiB0H,iBAAmB,WAAeyG,EAAkB,IAAMvK,EAAwBwK,EAAgBrF,GAAU,KAAOhmB,EAAO,IAAM,IAAMA,EAAO,IAAMid,EAAiB0H,iBAAmB,WAAe9D,EAAwBwK,EAAgBrF,GAAU,KAAOhmB,EAAO,IA2EpTsrB,CAAsBtrB,EAAM6pB,EAAKvW,MAAOuW,EAAK3K,gBAAiB8G,KAI3E,KAAK/I,EAAiB6F,gBAAgB3D,KACtC,KAAKlC,EAAiB6F,gBAAgBzD,KACpC,MAAO,CACL6L,YAAa,WACX,OAAOH,EAAqClB,IAE9ChP,SAAU,WACR,OAAOgQ,EAAkChB,KAI/C,QACE,MAAO,CACLqB,YAAa,WACX,OAjDyB,SAAsClrB,EAAM6pB,GAC7E,OAAOA,EAAKzmB,KAAI,SAAUsS,EAAKxG,GAC7B,IAAIqc,EAEAC,IAAaD,EAAa,CAC5B9rB,IAAKyP,IACO+N,EAAiB0H,mBAAoB,EAAM4G,GAazD,OAZAlyB,OAAO2O,KAAK0N,GAAKzN,SAAQ,SAAUmS,GACjC,IAAIqR,EAAkBxO,EAAiBgG,cAAc7I,IAAcA,EAEnE,GAAIqR,IAAoBxO,EAAiBkG,eAAeK,YAAciI,IAAoBxO,EAAiBkG,eAAeE,SAAU,CAClI,IAAIjP,EAAUsB,EAAI4I,WAAa5I,EAAI8I,QACnCgN,EAAUE,wBAA0B,CAClCC,OAAQvX,QAGVoX,EAAUC,GAAmB/V,EAAI0E,MAG9BuC,EAAiB,QAAEja,cAAc1C,EAAMwrB,MA8BjCI,CAA6B5rB,EAAM6pB,IAE5ChP,SAAU,WACR,OA7FiB,SAA8B7a,EAAM6pB,EAAM7D,GACnE,OAAO6D,EAAKjb,QAAO,SAAUmX,EAAKrQ,GAChC,IAAImW,EAAgBxyB,OAAO2O,KAAK0N,GAAKpQ,QAAO,SAAU8U,GACpD,QAASA,IAAc6C,EAAiBkG,eAAeK,YAAcpJ,IAAc6C,EAAiBkG,eAAeE,aAClHzU,QAAO,SAAUuL,EAAQC,GAC1B,IAAI0Q,OAAiC,IAAnBpV,EAAI0E,GAA6BA,EAAYA,EAAY,KAAQyG,EAAwBnL,EAAI0E,GAAY4L,GAAU,IACrI,OAAO7L,EAASA,EAAS,IAAM2Q,EAAOA,IACrC,IACCgB,EAAapW,EAAI4I,WAAa5I,EAAI8I,SAAW,GAC7CuN,GAAsE,IAAtD9O,EAAiByH,kBAAkBlgB,QAAQxE,GAC/D,OAAO+lB,EAAM,IAAM/lB,EAAO,IAAMid,EAAiB0H,iBAAmB,WAAekH,GAAiBE,EAAgB,KAAO,IAAMD,EAAa,KAAO9rB,EAAO,OAC3J,IAkFYgsB,CAAqBhsB,EAAM6pB,EAAM7D,OAmClDzsB,EAAQ0mB,kCA1GgC,SAA2C1gB,GACjF,IAAI0sB,EAAiBntB,UAAU7C,OAAS,QAAsBkE,IAAjBrB,UAAU,GAAmBA,UAAU,GAAK,GACzF,OAAOzF,OAAO2O,KAAKzI,GAAOqP,QAAO,SAAUxM,EAAK3C,GAE9C,OADA2C,EAAI6a,EAAiBwH,aAAahlB,IAAQA,GAAOF,EAAME,GAChD2C,IACN6pB,IAsGL1yB,EAAQmkB,wBApTsB,SAAiC0K,GACzDF,GACFptB,EAAqBotB,GAGnBE,EAASzH,MACXuH,EAAkBntB,GAAsB,WACtCotB,EAAiBC,GAAU,WACzBF,EAAkB,YAItBC,EAAiBC,GACjBF,EAAkB,OAwStB3uB,EAAQuJ,iBA/Be,SAA0BsW,GAC/C,IAAIpC,EAAUoC,EAAKpC,QACfoI,EAAiBhG,EAAKgG,eACtB4G,EAAS5M,EAAK4M,OACd1G,EAAiBlG,EAAKkG,eACtBgC,EAAWlI,EAAKkI,SAChBC,EAAWnI,EAAKmI,SAChBC,EAAepI,EAAKoI,aACpBC,EAAarI,EAAKqI,WAClBC,EAAYtI,EAAKsI,UACjBwK,EAAa9S,EAAK9F,MAClBA,OAAuBnT,IAAf+rB,EAA2B,GAAKA,EACxChN,EAAkB9F,EAAK8F,gBAC3B,MAAO,CACLqB,KAAM0K,EAAiBhO,EAAiBkB,UAAU4E,KAAM/L,EAASgP,GACjE5G,eAAgB6L,EAAiBhO,EAAiB6F,gBAAgB3D,KAAMC,EAAgB4G,GACxF1G,eAAgB2L,EAAiBhO,EAAiB6F,gBAAgBzD,KAAMC,EAAgB0G,GACxFlF,KAAMmK,EAAiBhO,EAAiBkB,UAAU+B,KAAMoB,EAAU0E,GAClEjF,KAAMkK,EAAiBhO,EAAiBkB,UAAUgC,KAAMoB,EAAUyE,GAClEhF,SAAUiK,EAAiBhO,EAAiBkB,UAAUE,SAAUmD,EAAcwE,GAC9E7E,OAAQ8J,EAAiBhO,EAAiBkB,UAAUC,OAAQqD,EAAYuE,GACxE5E,MAAO6J,EAAiBhO,EAAiBkB,UAAUI,MAAOmD,EAAWsE,GACrE1S,MAAO2X,EAAiBhO,EAAiBkB,UAAUc,MAAO,CACxD3L,MAAOA,EACP4L,gBAAiBA,GAChB8G,KAOPzsB,EAAQqJ,mBArWiB,SAA4BsjB,GACnD,MAAO,CACLlP,QAAS4P,EAAwB,CAAC3J,EAAiBkG,eAAeG,MAAO4C,GACzE9G,eAAgBoH,EAA2BvJ,EAAiB6F,gBAAgB3D,KAAM+G,GAClFvF,MAAOyF,EAAqBF,EAAWjJ,EAAiBkH,aAAaE,OACrE2B,OAAQI,EAAqBF,EAAWjJ,EAAiBkH,aAAaG,2BACtEhF,eAAgBkH,EAA2BvJ,EAAiB6F,gBAAgBzD,KAAM6G,GAClF5E,SAAU2F,EAAqBhK,EAAiBkB,UAAU+B,KAAM,CAACjD,EAAiBkG,eAAeQ,IAAK1G,EAAiBkG,eAAeG,MAAO4C,GAC7I3E,SAAU0F,EAAqBhK,EAAiBkB,UAAUgC,KAAM,CAAClD,EAAiBkG,eAAe3I,KAAMyC,EAAiBkG,eAAeC,QAASnG,EAAiBkG,eAAeI,UAAWtG,EAAiBkG,eAAeO,SAAUzG,EAAiBkG,eAAeM,WAAYyC,GACjR1E,aAAcyF,EAAqBhK,EAAiBkB,UAAUE,SAAU,CAACpB,EAAiBkG,eAAeK,YAAa0C,GACtHjF,oBAAqBsF,EAAuBL,GAC5CzE,WAAYwF,EAAqBhK,EAAiBkB,UAAUC,OAAQ,CAACnB,EAAiBkG,eAAeS,IAAK3G,EAAiBkG,eAAeK,YAAa0C,GACvJxE,UAAWuF,EAAqBhK,EAAiBkB,UAAUI,MAAO,CAACtB,EAAiBkG,eAAeE,UAAW6C,GAC9G5S,MAAO2S,EAAsBC,GAC7BhH,gBAAiBsH,EAA2BvJ,EAAiB6F,gBAAgB7D,MAAOiH,KAwVxF3sB,EAAQwB,sBAAwBA,EAChCxB,EAAQgN,KAAOA,I,wDCvjBf,EAAQ,QAER,EAAQ,QAER,EAAQ,QAER,EAAQ,QAER,EAAQ,QAER,EAAQ,QAER,EAAQ,QAER,EAAQ,QAER,EAAQ,QAER,EAAQ,QAER,EAAQ,QAER,IAAIrN,EAAI,EAAQ,QACZwD,EAAI,mBAAsBiE,QAAUA,OAAY,IAChDhH,EAAI+C,EAAIiE,OAAY,IAAE,iBAAmB,MACzC/G,EAAI8C,EAAIiE,OAAY,IAAE,gBAAkB,MACxC/D,EAAIF,EAAIiE,OAAY,IAAE,kBAAoB,MAC1C9G,EAAI6C,EAAIiE,OAAY,IAAE,qBAAuB,MAC7CzG,EAAIwC,EAAIiE,OAAY,IAAE,kBAAoB,MAC1ChE,EAAID,EAAIiE,OAAY,IAAE,kBAAoB,MAC1CpG,EAAImC,EAAIiE,OAAY,IAAE,iBAAmB,MACzClG,EAAIiC,EAAIiE,OAAY,IAAE,qBAAuB,MAC7CjG,EAAIgC,EAAIiE,OAAY,IAAE,kBAAoB,MAE9CjE,GAAKiE,OAAY,IAAE,uBACnB,IAAIhG,EAAI+B,EAAIiE,OAAY,IAAE,cAAgB,MACtCwrB,EAAKzvB,EAAIiE,OAAY,IAAE,cAAgB,MAC3CjE,GAAKiE,OAAY,IAAE,qBACnBjE,GAAKiE,OAAY,IAAE,mBACnBjE,GAAKiE,OAAY,IAAE,eACnB,IAAI9F,EAAI,mBAAsB8F,QAAUA,OAAOilB,SAE/C,SAAS3qB,EAAEnB,GACT,IAAK,IAAIE,EAAI,yDAA2DF,EAAGkC,EAAI,EAAGA,EAAI8C,UAAU7C,OAAQD,IACtGhC,GAAK,WAAaoyB,mBAAmBttB,UAAU9C,IAGjD,MAAO,yBAA2BlC,EAAI,WAAaE,EAAI,iHAGzD,IAAIkB,EAAI,CACNmxB,UAAW,WACT,OAAO,GAETC,mBAAoB,aACpBC,oBAAqB,aACrBC,gBAAiB,cAEfrxB,EAAI,GAER,SAASC,EAAEtB,EAAGE,EAAGgC,GACf6C,KAAKU,MAAQzF,EACb+E,KAAK4C,QAAUzH,EACf6E,KAAK4tB,KAAOtxB,EACZ0D,KAAK6tB,QAAU1wB,GAAKd,EActB,SAASG,KAIT,SAASC,EAAExB,EAAGE,EAAGgC,GACf6C,KAAKU,MAAQzF,EACb+E,KAAK4C,QAAUzH,EACf6E,KAAK4tB,KAAOtxB,EACZ0D,KAAK6tB,QAAU1wB,GAAKd,EAnBtBE,EAAEsI,UAAUipB,iBAAmB,GAE/BvxB,EAAEsI,UAAUkpB,SAAW,SAAU9yB,EAAGE,GAClC,GAAI,iBAAoBF,GAAK,mBAAsBA,GAAK,MAAQA,EAAG,MAAMiJ,MAAM9H,EAAE,KACjF4D,KAAK6tB,QAAQF,gBAAgB3tB,KAAM/E,EAAGE,EAAG,aAG3CoB,EAAEsI,UAAUmpB,YAAc,SAAU/yB,GAClC+E,KAAK6tB,QAAQJ,mBAAmBztB,KAAM/E,EAAG,gBAK3CuB,EAAEqI,UAAYtI,EAAEsI,UAShB,IAAIjI,EAAIH,EAAEoI,UAAY,IAAIrI,EAC1BI,EAAEmI,YAActI,EAChBpC,EAAEuC,EAAGL,EAAEsI,WACPjI,EAAEqxB,sBAAuB,EACzB,IAAIpxB,EAAI,CACNirB,QAAS,MAEP5qB,EAAI,CACN4qB,QAAS,MAEPtqB,EAAIhD,OAAOqK,UAAUuR,eACrB3Y,EAAI,CACNmD,KAAK,EACL+B,KAAK,EACLurB,QAAQ,EACRC,UAAU,GAGZ,SAASzwB,EAAEzC,EAAGE,EAAGgC,GACf,IAAII,EACAD,EAAI,GACJlD,EAAI,KACJG,EAAI,KACR,GAAI,MAAQY,EAAG,IAAKoC,UAAK,IAAWpC,EAAEwH,MAAQpI,EAAIY,EAAEwH,UAAM,IAAWxH,EAAEyF,MAAQxG,EAAI,GAAKe,EAAEyF,KAAMzF,EAC9FqC,EAAEwY,KAAK7a,EAAGoC,KAAOE,EAAE2Y,eAAe7Y,KAAOD,EAAEC,GAAKpC,EAAEoC,IAEpD,IAAIgpB,EAAItmB,UAAU7C,OAAS,EAC3B,GAAI,IAAMmpB,EAAGjpB,EAAE8D,SAAWjE,OAAO,GAAI,EAAIopB,EAAG,CAC1C,IAAK,IAAIjsB,EAAIqP,MAAM4c,GAAI3oB,EAAI,EAAGA,EAAI2oB,EAAG3oB,IACnCtD,EAAEsD,GAAKqC,UAAUrC,EAAI,GAGvBN,EAAE8D,SAAW9G,EAEf,GAAIW,GAAKA,EAAEwa,aAAc,IAAKlY,KAAKgpB,EAAItrB,EAAEwa,kBACvC,IAAWnY,EAAEC,KAAOD,EAAEC,GAAKgpB,EAAEhpB,IAE/B,MAAO,CACL2E,SAAUpH,EACVqG,KAAMlG,EACN2F,IAAKxG,EACLuI,IAAKpI,EACLmG,MAAOpD,EACP8wB,OAAQlxB,EAAE4qB,SAed,SAAS5pB,EAAEjD,GACT,MAAO,iBAAoBA,GAAK,OAASA,GAAKA,EAAEiH,WAAapH,EAa/D,IAAIqD,EAAI,OACJC,EAAI,GAER,SAASC,EAAEpD,EAAGE,EAAGgC,EAAGI,GAClB,GAAIa,EAAEhB,OAAQ,CACZ,IAAIE,EAAIc,EAAET,MAMV,OALAL,EAAE4S,OAASjV,EACXqC,EAAE+wB,UAAYlzB,EACdmC,EAAE+kB,KAAOllB,EACTG,EAAEsF,QAAUrF,EACZD,EAAEgxB,MAAQ,EACHhxB,EAGT,MAAO,CACL4S,OAAQjV,EACRozB,UAAWlzB,EACXknB,KAAMllB,EACNyF,QAASrF,EACT+wB,MAAO,GAIX,SAAShwB,EAAErD,GACTA,EAAEiV,OAAS,KACXjV,EAAEozB,UAAY,KACdpzB,EAAEonB,KAAO,KACTpnB,EAAE2H,QAAU,KACZ3H,EAAEqzB,MAAQ,EACV,GAAKlwB,EAAEhB,QAAUgB,EAAEf,KAAKpC,GAkC1B,SAASwD,EAAExD,EAAGE,EAAGgC,GACf,OAAO,MAAQlC,EAAI,EAhCrB,SAASsD,EAAEtD,EAAGE,EAAGgC,EAAGI,GAClB,IAAID,SAAWrC,EACX,cAAgBqC,GAAK,YAAcA,IAAGrC,EAAI,MAC9C,IAAIb,GAAI,EACR,GAAI,OAASa,EAAGb,GAAI,OAAQ,OAAQkD,GAClC,IAAK,SACL,IAAK,SACHlD,GAAI,EACJ,MAEF,IAAK,SACH,OAAQa,EAAEiH,UACR,KAAKpH,EACL,KAAKC,EACHX,GAAI,GAIZ,GAAIA,EAAG,OAAO+C,EAAEI,EAAGtC,EAAG,KAAOE,EAAI,IAAMqD,EAAEvD,EAAG,GAAKE,GAAI,EAGrD,GAFAf,EAAI,EACJe,EAAI,KAAOA,EAAI,IAAMA,EAAI,IACrBwO,MAAMC,QAAQ3O,GAAI,IAAK,IAAIV,EAAI,EAAGA,EAAIU,EAAEmC,OAAQ7C,IAAK,CAEvD,IAAIgsB,EAAIprB,EAAIqD,EADZlB,EAAIrC,EAAEV,GACWA,GACjBH,GAAKmE,EAAEjB,EAAGipB,EAAGppB,EAAGI,QACX,GAAI,OAAStC,GAAK,iBAAoBA,EAAIsrB,EAAI,KAA0CA,EAAI,mBAAtCA,EAAIvqB,GAAKf,EAAEe,IAAMf,EAAE,eAA6CsrB,EAAI,KAAO,mBAAsBA,EAAG,IAAKtrB,EAAIsrB,EAAEvQ,KAAK/a,GAAIV,EAAI,IAAK+C,EAAIrC,EAAE0F,QAAQ4tB,MAC1Kn0B,GAAKmE,EAArCjB,EAAIA,EAAE3C,MAAO4rB,EAAIprB,EAAIqD,EAAElB,EAAG/C,KAAmB4C,EAAGI,QAC3C,GAAI,WAAaD,EAAG,MAAMH,EAAI,GAAKlC,EAAGiJ,MAAM9H,EAAE,GAAI,oBAAsBe,EAAI,qBAAuB3C,OAAO2O,KAAKlO,GAAGuL,KAAK,MAAQ,IAAMrJ,EAAG,KAC/I,OAAO/C,EAIgBmE,CAAEtD,EAAG,GAAIE,EAAGgC,GAGrC,SAASqB,EAAEvD,EAAGE,GACZ,MAAO,iBAAoBF,GAAK,OAASA,GAAK,MAAQA,EAAE2F,IA9E1D,SAAgB3F,GACd,IAAIE,EAAI,CACN,IAAK,KACL,IAAK,MAEP,MAAO,KAAO,GAAKF,GAAGygB,QAAQ,SAAS,SAAUzgB,GAC/C,OAAOE,EAAEF,MAwEmDuzB,CAAOvzB,EAAE2F,KAAOzF,EAAE6gB,SAAS,IAG3F,SAASyS,EAAGxzB,EAAGE,GACbF,EAAEonB,KAAKrM,KAAK/a,EAAE2H,QAASzH,EAAGF,EAAEqzB,SAG9B,SAASI,EAAGzzB,EAAGE,EAAGgC,GAChB,IAAII,EAAItC,EAAEiV,OACN5S,EAAIrC,EAAEozB,UACVpzB,EAAIA,EAAEonB,KAAKrM,KAAK/a,EAAE2H,QAASzH,EAAGF,EAAEqzB,SAChC3kB,MAAMC,QAAQ3O,GAAKyD,EAAEzD,EAAGsC,EAAGJ,GAAG,SAAUlC,GACtC,OAAOA,KACJ,MAAQA,IAAMiD,EAAEjD,KAAOA,EA1G9B,SAAYA,EAAGE,GACb,MAAO,CACL+G,SAAUpH,EACVqG,KAAMlG,EAAEkG,KACRP,IAAKzF,EACLwH,IAAK1H,EAAE0H,IACPjC,MAAOzF,EAAEyF,MACT0tB,OAAQnzB,EAAEmzB,QAmGoBO,CAAG1zB,EAAGqC,IAAMrC,EAAE2F,KAAOzF,GAAKA,EAAEyF,MAAQ3F,EAAE2F,IAAM,IAAM,GAAK3F,EAAE2F,KAAK8a,QAAQvd,EAAG,OAAS,KAAOhB,IAAKI,EAAEF,KAAKpC,IAGvI,SAASyD,EAAEzD,EAAGE,EAAGgC,EAAGI,EAAGD,GACrB,IAAIlD,EAAI,GACR,MAAQ+C,IAAM/C,GAAK,GAAK+C,GAAGue,QAAQvd,EAAG,OAAS,KAE/CM,EAAExD,EAAGyzB,EADLvzB,EAAIkD,EAAElD,EAAGf,EAAGmD,EAAGD,IAEfgB,EAAEnD,GAGJ,SAAS2D,IACP,IAAI7D,EAAI4B,EAAEirB,QACV,GAAI,OAAS7sB,EAAG,MAAMiJ,MAAM9H,EAAE,MAC9B,OAAOnB,EAGT,IAAI8D,EAAI,CACNkiB,SAAU,CACR1c,IAAK,SAAatJ,EAAGE,EAAGgC,GACtB,GAAI,MAAQlC,EAAG,OAAOA,EACtB,IAAIsC,EAAI,GAER,OADAmB,EAAEzD,EAAGsC,EAAG,KAAMpC,EAAGgC,GACVI,GAET6L,QAAS,SAAiBnO,EAAGE,EAAGgC,GAC9B,GAAI,MAAQlC,EAAG,OAAOA,EAEtBwD,EAAExD,EAAGwzB,EADLtzB,EAAIkD,EAAE,KAAM,KAAMlD,EAAGgC,IAErBmB,EAAEnD,IAEJmzB,MAAO,SAAerzB,GACpB,OAAOwD,EAAExD,GAAG,WACV,OAAO,OACN,OAEL2zB,QAAS,SAAiB3zB,GACxB,IAAIE,EAAI,GAIR,OAHAuD,EAAEzD,EAAGE,EAAG,MAAM,SAAUF,GACtB,OAAOA,KAEFE,GAET0zB,KAAM,SAAc5zB,GAClB,IAAKiD,EAAEjD,GAAI,MAAMiJ,MAAM9H,EAAE,MACzB,OAAOnB,IAGX6zB,UAAW,WACT,MAAO,CACLhH,QAAS,OAGbhiB,UAAWvJ,EACXwyB,cAAetyB,EACfgF,cAAe,SAAuBxG,EAAGE,GAevC,YAdA,IAAWA,IAAMA,EAAI,OACrBF,EAAI,CACFiH,SAAUxG,EACVszB,sBAAuB7zB,EACvB8zB,cAAeh0B,EACfi0B,eAAgBj0B,EAChBk0B,aAAc,EACdtsB,SAAU,KACV6V,SAAU,OAEV7V,SAAW,CACXX,SAAUpE,EACVsxB,SAAUn0B,GAELA,EAAEyd,SAAWzd,GAEtBo0B,WAAY,SAAoBp0B,GAC9B,MAAO,CACLiH,SAAUtG,EACViK,OAAQ5K,IAGZq0B,KAAM,SAAcr0B,GAClB,MAAO,CACLiH,SAAUorB,EACViC,MAAOt0B,EACPu0B,SAAU,EACVC,QAAS,OAGbC,KAAM,SAAcz0B,EAAGE,GACrB,MAAO,CACL+G,SAAUpG,EACVqF,KAAMlG,EACN4a,aAAS,IAAW1a,EAAI,KAAOA,IAGnCw0B,YAAa,SAAqB10B,EAAGE,GACnC,OAAO2D,IAAI6wB,YAAY10B,EAAGE,IAE5ByG,WAAY,SAAoB3G,EAAGE,GACjC,OAAO2D,IAAI8C,WAAW3G,EAAGE,IAE3B4M,UAAW,SAAmB9M,EAAGE,GAC/B,OAAO2D,IAAIiJ,UAAU9M,EAAGE,IAE1By0B,oBAAqB,SAA6B30B,EAAGE,EAAGgC,GACtD,OAAO2B,IAAI8wB,oBAAoB30B,EAAGE,EAAGgC,IAEvC0yB,cAAe,aACfC,gBAAiB,SAAyB70B,EAAGE,GAC3C,OAAO2D,IAAIgxB,gBAAgB70B,EAAGE,IAEhC40B,QAAS,SAAiB90B,EAAGE,GAC3B,OAAO2D,IAAIixB,QAAQ90B,EAAGE,IAExB60B,WAAY,SAAoB/0B,EAAGE,EAAGgC,GACpC,OAAO2B,IAAIkxB,WAAW/0B,EAAGE,EAAGgC,IAE9B8yB,OAAQ,SAAgBh1B,GACtB,OAAO6D,IAAImxB,OAAOh1B,IAEpB2M,SAAU,SAAkB3M,GAC1B,OAAO6D,IAAI8I,SAAS3M,IAEtBuf,SAAUzc,EACVmyB,SAAU70B,EACV80B,WAAYn1B,EACZo1B,SAAUv0B,EACVgI,cAAenG,EACf2yB,aAAc,SAAsBp1B,EAAGE,EAAGgC,GACxC,GAAI,MAASlC,EAAmB,MAAMiJ,MAAM9H,EAAE,IAAKnB,IACnD,IAAIsC,EAAIlD,EAAE,GAAIY,EAAEyF,OACZpD,EAAIrC,EAAE2F,IACNxG,EAAIa,EAAE0H,IACNpI,EAAIU,EAAEmzB,OAEV,GAAI,MAAQjzB,EAAG,CAGb,QAFA,IAAWA,EAAEwH,MAAQvI,EAAIe,EAAEwH,IAAKpI,EAAI2C,EAAE4qB,cACtC,IAAW3sB,EAAEyF,MAAQtD,EAAI,GAAKnC,EAAEyF,KAC5B3F,EAAEkG,MAAQlG,EAAEkG,KAAKsU,aAAc,IAAI8Q,EAAItrB,EAAEkG,KAAKsU,aAElD,IAAKnb,KAAKa,EACRqC,EAAEwY,KAAK7a,EAAGb,KAAOmD,EAAE2Y,eAAe9b,KAAOiD,EAAEjD,QAAK,IAAWa,EAAEb,SAAM,IAAWisB,EAAIA,EAAEjsB,GAAKa,EAAEb,IAI/F,IAAIA,EAAI2F,UAAU7C,OAAS,EAC3B,GAAI,IAAM9C,EAAGiD,EAAE6D,SAAWjE,OAAO,GAAI,EAAI7C,EAAG,CAC1CisB,EAAI5c,MAAMrP,GAEV,IAAK,IAAIsD,EAAI,EAAGA,EAAItD,EAAGsD,IACrB2oB,EAAE3oB,GAAKqC,UAAUrC,EAAI,GAGvBL,EAAE6D,SAAWmlB,EAEf,MAAO,CACLrkB,SAAUpH,EACVqG,KAAMlG,EAAEkG,KACRP,IAAKtD,EACLqF,IAAKvI,EACLsG,MAAOnD,EACP6wB,OAAQ7zB,IAGZ+1B,cAAe,SAAuBr1B,GACpC,IAAIE,EAAIuC,EAAE2Y,KAAK,KAAMpb,GAErB,OADAE,EAAEgG,KAAOlG,EACFE,GAETo1B,eAAgBryB,EAChBsyB,QAAS,UACTC,mDAAoD,CAClDC,uBAAwB7zB,EACxB8zB,wBAAyB,CACvBC,SAAU,MAEZC,kBAAmB3zB,EACnB4zB,qBAAsB,CACpBhJ,SAAS,GAEX9kB,OAAQ3I,IAGR4E,EAAI,CACN,QAAWF,GAETG,EAAID,GAAKF,GAAKE,EAClB6E,EAAOpJ,QAAUwE,EAAW,SAAKA,G,mBCrbjC,IAAI9E,EAEJA,EAAI,WACF,OAAO4F,KADL,GAIJ,IAEE5F,EAAIA,GAAK,IAAI22B,SAAS,cAAb,GACT,MAAOxzB,GAEe,iBAAX3C,SAAqBR,EAAIQ,QAMtCkJ,EAAOpJ,QAAUN,G,kCCHjB,EAAQ,QAER,EAAQ,QAER,EAAQ,QAER,EAAQ,QAER,EAAQ,QAER,EAAQ,QAER,EAAQ,QAER,EAAQ,QAER,EAAQ,QAER,EAAQ,QAER,EAAQ,QAER,EAAQ,QAER,EAAQ,QAER,EAAQ,QAER,EAAQ,QAER,EAAQ,QAER,EAAQ,QAER,EAAQ,QAER,EAAQ,QAER,EAAQ,QAER,EAAQ,QAER,EAAQ,QAER,EAAQ,QAER,EAAQ,QAER,IAAIkzB,EAAK,EAAQ,QACbzvB,EAAI,EAAQ,QACZ9C,EAAI,EAAQ,QAEhB,SAASM,EAAEJ,GACT,IAAK,IAAIE,EAAI,yDAA2DF,EAAGkC,EAAI,EAAGA,EAAI8C,UAAU7C,OAAQD,IACtGhC,GAAK,WAAaoyB,mBAAmBttB,UAAU9C,IAGjD,MAAO,yBAA2BlC,EAAI,WAAaE,EAAI,iHAGzD,IAAKmyB,EAAI,MAAMppB,MAAM7I,EAAE,MACvB,IAAIszB,EAAK,KACLF,EAAK,GAET,SAASC,IACP,GAAIC,EAAI,IAAK,IAAI1zB,KAAKwzB,EAAI,CACxB,IAAItzB,EAAIszB,EAAGxzB,GACPkC,EAAIwxB,EAAGhpB,QAAQ1K,GACnB,MAAO,EAAIkC,GAAI,MAAM+G,MAAM7I,EAAE,GAAIJ,IAEjC,IAAK+1B,EAAG7zB,GAAI,CACV,IAAKhC,EAAE81B,cAAe,MAAM/sB,MAAM7I,EAAE,GAAIJ,IAIxC,IAAK,IAAIqC,KAHT0zB,EAAG7zB,GAAKhC,EACRgC,EAAIhC,EAAE+1B,WAEW,CACf,IAAI3zB,OAAI,EACJgpB,EAAIppB,EAAEG,GACNlD,EAAIe,EACJd,EAAIiD,EACR,GAAI6zB,EAAG/a,eAAe/b,GAAI,MAAM6J,MAAM7I,EAAE,GAAIhB,IAC5C82B,EAAG92B,GAAKksB,EACR,IAAIjsB,EAAIisB,EAAE6K,wBAEV,GAAI92B,EAAG,CACL,IAAKiD,KAAKjD,EACRA,EAAE8b,eAAe7Y,IAAM8zB,EAAG/2B,EAAEiD,GAAInD,EAAGC,GAGrCkD,GAAI,OACCgpB,EAAE+K,kBAAoBD,EAAG9K,EAAE+K,iBAAkBl3B,EAAGC,GAAIkD,GAAI,GAAMA,GAAI,EAEzE,IAAKA,EAAG,MAAM2G,MAAM7I,EAAE,GAAIiC,EAAGrC,OAMrC,SAASo2B,EAAGp2B,EAAGE,EAAGgC,GAChB,GAAIo0B,EAAGt2B,GAAI,MAAMiJ,MAAM7I,EAAE,IAAKJ,IAC9Bs2B,EAAGt2B,GAAKE,EACRq2B,EAAGv2B,GAAKE,EAAE+1B,WAAW/zB,GAAGs0B,aAG1B,IAAIT,EAAK,GACLG,EAAK,GACLI,EAAK,GACLC,EAAK,GAET,SAASE,EAAGz2B,EAAGE,EAAGgC,EAAGG,EAAGC,EAAGgpB,EAAGnsB,EAAGC,EAAGC,GAClC,IAAIC,EAAIoP,MAAM9E,UAAUyL,MAAM0F,KAAK/V,UAAW,GAE9C,IACE9E,EAAE4E,MAAM5C,EAAG5C,GACX,MAAOqD,GACPoC,KAAK2xB,QAAQ/zB,IAIjB,IAAIg0B,GAAK,EACLC,EAAK,KACLC,GAAK,EACLC,EAAK,KACLC,EAAK,CACPL,QAAS,SAAiB12B,GACxB22B,GAAK,EACLC,EAAK52B,IAIT,SAASg3B,EAAGh3B,EAAGE,EAAGgC,EAAGG,EAAGC,EAAGgpB,EAAGnsB,EAAGC,EAAGC,GAClCs3B,GAAK,EACLC,EAAK,KACLH,EAAG3xB,MAAMiyB,EAAI/xB,WAiBf,IAAIiyB,EAAK,KACLC,EAAK,KACLC,EAAK,KAET,SAASC,EAAGp3B,EAAGE,EAAGgC,GAChB,IAAIG,EAAIrC,EAAEkG,MAAQ,gBAClBlG,EAAEq3B,cAAgBF,EAAGj1B,GApBvB,SAAYlC,EAAGE,EAAGgC,EAAGG,EAAGC,EAAGgpB,EAAGnsB,EAAGC,EAAGC,GAGlC,GAFA23B,EAAGlyB,MAAMC,KAAMC,WAEX2xB,EAAI,CACN,IAAIA,EAIG,MAAM1tB,MAAM7I,EAAE,MAHnB,IAAId,EAAIs3B,EACRD,GAAK,EACLC,EAAK,KAGPC,IAAOA,GAAK,EAAIC,EAAKx3B,IAWvBg4B,CAAGj1B,EAAGnC,OAAG,EAAQF,GACjBA,EAAEq3B,cAAgB,KAGpB,SAASE,EAAGv3B,EAAGE,GACb,GAAI,MAAQA,EAAG,MAAM+I,MAAM7I,EAAE,KAC7B,OAAI,MAAQJ,EAAUE,EAElBwO,MAAMC,QAAQ3O,GACZ0O,MAAMC,QAAQzO,IAAWF,EAAEoC,KAAK0C,MAAM9E,EAAGE,GAAIF,IACjDA,EAAEoC,KAAKlC,GACAF,GAGF0O,MAAMC,QAAQzO,GAAK,CAACF,GAAGsG,OAAOpG,GAAK,CAACF,EAAGE,GAGhD,SAASs3B,EAAGx3B,EAAGE,EAAGgC,GAChBwM,MAAMC,QAAQ3O,GAAKA,EAAEmO,QAAQjO,EAAGgC,GAAKlC,GAAKE,EAAE6a,KAAK7Y,EAAGlC,GAGtD,IAAIy3B,EAAK,KAET,SAASC,EAAG13B,GACV,GAAIA,EAAG,CACL,IAAIE,EAAIF,EAAE23B,mBACNz1B,EAAIlC,EAAE43B,mBACV,GAAIlpB,MAAMC,QAAQzO,GAAI,IAAK,IAAImC,EAAI,EAAGA,EAAInC,EAAEiC,SAAWnC,EAAE63B,uBAAwBx1B,IAC/E+0B,EAAGp3B,EAAGE,EAAEmC,GAAIH,EAAEG,SACTnC,GAAKk3B,EAAGp3B,EAAGE,EAAGgC,GACrBlC,EAAE23B,mBAAqB,KACvB33B,EAAE43B,mBAAqB,KACvB53B,EAAE83B,gBAAkB93B,EAAE8J,YAAYiuB,QAAQ/3B,IAI9C,SAASg4B,EAAGh4B,GAKV,GAJA,OAASA,IAAMy3B,EAAKF,EAAGE,EAAIz3B,IAC3BA,EAAIy3B,EACJA,EAAK,KAEDz3B,EAAG,CAEL,GADAw3B,EAAGx3B,EAAG03B,GACFD,EAAI,MAAMxuB,MAAM7I,EAAE,KACtB,GAAIy2B,EAAI,MAAM72B,EAAI82B,EAAID,GAAK,EAAIC,EAAK,KAAM92B,GAI9C,IAAIi4B,EAAK,CACPC,uBAAwB,SAAgCl4B,GACtD,GAAI0zB,EAAI,MAAMzqB,MAAM7I,EAAE,MACtBszB,EAAKhlB,MAAM9E,UAAUyL,MAAM0F,KAAK/a,GAChCyzB,KAEF0E,yBAA0B,SAAkCn4B,GAC1D,IACIkC,EADAhC,GAAI,EAGR,IAAKgC,KAAKlC,EACR,GAAIA,EAAEmb,eAAejZ,GAAI,CACvB,IAAIG,EAAIrC,EAAEkC,GAEV,IAAKsxB,EAAGrY,eAAejZ,IAAMsxB,EAAGtxB,KAAOG,EAAG,CACxC,GAAImxB,EAAGtxB,GAAI,MAAM+G,MAAM7I,EAAE,IAAK8B,IAC9BsxB,EAAGtxB,GAAKG,EACRnC,GAAI,GAKVA,GAAKuzB,MAIT,SAAS2E,EAAGp4B,EAAGE,GACb,IAAIgC,EAAIlC,EAAEq4B,UACV,IAAKn2B,EAAG,OAAO,KACf,IAAIG,EAAI40B,EAAG/0B,GACX,IAAKG,EAAG,OAAO,KACfH,EAAIG,EAAEnC,GAENF,EAAG,OAAQE,GACT,IAAK,UACL,IAAK,iBACL,IAAK,gBACL,IAAK,uBACL,IAAK,cACL,IAAK,qBACL,IAAK,cACL,IAAK,qBACL,IAAK,YACL,IAAK,oBACFmC,GAAKA,EAAEi2B,YAA0Bj2B,IAAM,YAAlBrC,EAAIA,EAAEkG,OAA8B,UAAYlG,GAAK,WAAaA,GAAK,aAAeA,IAC5GA,GAAKqC,EACL,MAAMrC,EAER,QACEA,GAAI,EAGR,GAAIA,EAAG,OAAO,KACd,GAAIkC,GAAK,mBAAsBA,EAAG,MAAM+G,MAAM7I,EAAE,IAAKF,SAAUgC,IAC/D,OAAOA,EAGT,IAAIq2B,EAAKlG,EAAGmD,mDACZ+C,EAAGpd,eAAe,4BAA8Bod,EAAG9C,uBAAyB,CAC1E5I,QAAS,OAEX0L,EAAGpd,eAAe,6BAA+Bod,EAAG7C,wBAA0B,CAC5EC,SAAU,OAEZ,IAAI6C,EAAK,cACL/3B,EAAI,mBAAsBoG,QAAUA,OAAY,IAChD4xB,EAAKh4B,EAAIoG,OAAY,IAAE,iBAAmB,MAC1C6xB,EAAKj4B,EAAIoG,OAAY,IAAE,gBAAkB,MACzC8xB,EAAKl4B,EAAIoG,OAAY,IAAE,kBAAoB,MAC3C+xB,EAAKn4B,EAAIoG,OAAY,IAAE,qBAAuB,MAC9CgyB,EAAKp4B,EAAIoG,OAAY,IAAE,kBAAoB,MAC3CiyB,EAAKr4B,EAAIoG,OAAY,IAAE,kBAAoB,MAC3CkyB,EAAKt4B,EAAIoG,OAAY,IAAE,iBAAmB,MAC1CmyB,EAAKv4B,EAAIoG,OAAY,IAAE,yBAA2B,MAClDoyB,EAAKx4B,EAAIoG,OAAY,IAAE,qBAAuB,MAC9CqyB,EAAKz4B,EAAIoG,OAAY,IAAE,kBAAoB,MAC3CsyB,EAAK14B,EAAIoG,OAAY,IAAE,uBAAyB,MAChDuyB,EAAK34B,EAAIoG,OAAY,IAAE,cAAgB,MACvCwyB,EAAK54B,EAAIoG,OAAY,IAAE,cAAgB,MAC3CpG,GAAKoG,OAAY,IAAE,qBACnBpG,GAAKoG,OAAY,IAAE,mBACnBpG,GAAKoG,OAAY,IAAE,eACnB,IAAIyyB,EAAK,mBAAsBzyB,QAAUA,OAAOilB,SAEhD,SAASyN,EAAGv5B,GACV,OAAI,OAASA,GAAK,iBAAoBA,EAAU,KAEzC,mBADPA,EAAIs5B,GAAMt5B,EAAEs5B,IAAOt5B,EAAE,eACYA,EAAI,KAiBvC,SAASw5B,EAAGx5B,GACV,GAAI,MAAQA,EAAG,OAAO,KACtB,GAAI,mBAAsBA,EAAG,OAAOA,EAAE8K,aAAe9K,EAAE+K,MAAQ,KAC/D,GAAI,iBAAoB/K,EAAG,OAAOA,EAElC,OAAQA,GACN,KAAK24B,EACH,MAAO,WAET,KAAKD,EACH,MAAO,SAET,KAAKG,EACH,MAAO,WAET,KAAKD,EACH,MAAO,aAET,KAAKM,EACH,MAAO,WAET,KAAKC,EACH,MAAO,eAGX,GAAI,iBAAoBn5B,EAAG,OAAQA,EAAEiH,UACnC,KAAK8xB,EACH,MAAO,mBAET,KAAKD,EACH,MAAO,mBAET,KAAKG,EACH,IAAI/4B,EAAIF,EAAE4K,OAEV,OADA1K,EAAIA,EAAE4K,aAAe5K,EAAE6K,MAAQ,GACxB/K,EAAE8K,cAAgB,KAAO5K,EAAI,cAAgBA,EAAI,IAAM,cAEhE,KAAKk5B,EACH,OAAOI,EAAGx5B,EAAEkG,MAEd,KAAKmzB,EACH,GAAIr5B,EAAI,IAAMA,EAAEu0B,QAAUv0B,EAAEw0B,QAAU,KAAM,OAAOgF,EAAGx5B,GAE1D,OAAO,KAGT,SAASy5B,EAAGz5B,GACV,IAAIE,EAAI,GAER,EAAG,CACDF,EAAG,OAAQA,EAAE4b,KACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,GACL,KAAK,EACH,IAAI1Z,EAAI,GACR,MAAMlC,EAER,QACE,IAAIqC,EAAIrC,EAAE05B,YACNp3B,EAAItC,EAAE25B,aACNrO,EAAIkO,EAAGx5B,EAAEkG,MACbhE,EAAI,KACJG,IAAMH,EAAIs3B,EAAGn3B,EAAE6D,OACf7D,EAAIipB,EACJA,EAAI,GACJhpB,EAAIgpB,EAAI,QAAUhpB,EAAEs3B,SAASnZ,QAAQ+X,EAAI,IAAM,IAAMl2B,EAAEu3B,WAAa,IAAM33B,IAAMopB,EAAI,gBAAkBppB,EAAI,KAC1GA,EAAI,aAAeG,GAAK,WAAaipB,EAGzCprB,GAAKgC,EACLlC,EAAIA,EAAU,aACPA,GAET,OAAOE,EAGT,IAAI45B,IAAO,oBAAuBn6B,aAAU,IAAuBA,OAAOgJ,eAAY,IAAuBhJ,OAAOgJ,SAASC,eACzHmxB,GAAK,KACLC,GAAK,KACLC,GAAK,KAET,SAASC,GAAGl6B,GACV,GAAIA,EAAIk3B,EAAGl3B,GAAI,CACb,GAAI,mBAAsB+5B,GAAI,MAAM9wB,MAAM7I,EAAE,MAC5C,IAAIF,EAAI+2B,EAAGj3B,EAAEq4B,WACb0B,GAAG/5B,EAAEq4B,UAAWr4B,EAAEkG,KAAMhG,IAI5B,SAASquB,GAAGvuB,GACVg6B,GAAKC,GAAKA,GAAG73B,KAAKpC,GAAKi6B,GAAK,CAACj6B,GAAKg6B,GAAKh6B,EAGzC,SAASm6B,KACP,GAAIH,GAAI,CACN,IAAIh6B,EAAIg6B,GACJ95B,EAAI+5B,GAGR,GAFAA,GAAKD,GAAK,KACVE,GAAGl6B,GACCE,EAAG,IAAKF,EAAI,EAAGA,EAAIE,EAAEiC,OAAQnC,IAC/Bk6B,GAAGh6B,EAAEF,KAKX,SAASo6B,GAAGp6B,EAAGE,GACb,OAAOF,EAAEE,GAGX,SAASm6B,GAAGr6B,EAAGE,EAAGgC,EAAGG,GACnB,OAAOrC,EAAEE,EAAGgC,EAAGG,GAGjB,SAASi4B,MAET,IAAIC,GAAKH,GACLI,IAAK,EACLC,IAAK,EAET,SAASC,KACH,OAASV,IAAM,OAASC,KAAIK,KAAMH,MAGxC,IAAIQ,IACJ,IAAIC,GAAK,8VACLprB,GAAKjQ,OAAOqK,UAAUuR,eACtB0f,GAAK,GACLC,GAAK,GAgDT,SAAS35B,GAAEnB,EAAGE,EAAGgC,EAAGG,EAAGC,EAAGgpB,GACxBvmB,KAAKg2B,gBAAkB,IAAM76B,GAAK,IAAMA,GAAK,IAAMA,EACnD6E,KAAKi2B,cAAgB34B,EACrB0C,KAAKk2B,mBAAqB34B,EAC1ByC,KAAKm2B,gBAAkBh5B,EACvB6C,KAAKo2B,aAAen7B,EACpB+E,KAAKmB,KAAOhG,EACZ6E,KAAKq2B,YAAc9P,EAGrB,IAAIjqB,GAAI,GACR,uIAAuI2N,MAAM,KAAKb,SAAQ,SAAUnO,GAClKqB,GAAErB,GAAK,IAAImB,GAAEnB,EAAG,GAAG,EAAIA,EAAG,MAAM,MAElC,CAAC,CAAC,gBAAiB,kBAAmB,CAAC,YAAa,SAAU,CAAC,UAAW,OAAQ,CAAC,YAAa,eAAemO,SAAQ,SAAUnO,GAC/H,IAAIE,EAAIF,EAAE,GACVqB,GAAEnB,GAAK,IAAIiB,GAAEjB,EAAG,GAAG,EAAIF,EAAE,GAAI,MAAM,MAErC,CAAC,kBAAmB,YAAa,aAAc,SAASmO,SAAQ,SAAUnO,GACxEqB,GAAErB,GAAK,IAAImB,GAAEnB,EAAG,GAAG,EAAIA,EAAE4gB,cAAe,MAAM,MAEhD,CAAC,cAAe,4BAA6B,YAAa,iBAAiBzS,SAAQ,SAAUnO,GAC3FqB,GAAErB,GAAK,IAAImB,GAAEnB,EAAG,GAAG,EAAIA,EAAG,MAAM,MAElC,wNAAwNgP,MAAM,KAAKb,SAAQ,SAAUnO,GACnPqB,GAAErB,GAAK,IAAImB,GAAEnB,EAAG,GAAG,EAAIA,EAAE4gB,cAAe,MAAM,MAEhD,CAAC,UAAW,WAAY,QAAS,YAAYzS,SAAQ,SAAUnO,GAC7DqB,GAAErB,GAAK,IAAImB,GAAEnB,EAAG,GAAG,EAAIA,EAAG,MAAM,MAElC,CAAC,UAAW,YAAYmO,SAAQ,SAAUnO,GACxCqB,GAAErB,GAAK,IAAImB,GAAEnB,EAAG,GAAG,EAAIA,EAAG,MAAM,MAElC,CAAC,OAAQ,OAAQ,OAAQ,QAAQmO,SAAQ,SAAUnO,GACjDqB,GAAErB,GAAK,IAAImB,GAAEnB,EAAG,GAAG,EAAIA,EAAG,MAAM,MAElC,CAAC,UAAW,SAASmO,SAAQ,SAAUnO,GACrCqB,GAAErB,GAAK,IAAImB,GAAEnB,EAAG,GAAG,EAAIA,EAAE4gB,cAAe,MAAM,MAEhD,IAAIya,GAAK,gBAET,SAASC,GAAGt7B,GACV,OAAOA,EAAE,GAAGu7B,cAuBd,SAASC,GAAGx7B,GACV,cAAeA,GACb,IAAK,UACL,IAAK,SACL,IAAK,SACL,IAAK,SACL,IAAK,YACH,OAAOA,EAET,QACE,MAAO,IAIb,SAASy7B,GAAGz7B,EAAGE,EAAGgC,EAAGG,GACnB,IAAIC,EAAIjB,GAAE8Z,eAAejb,GAAKmB,GAAEnB,GAAK,MAC7B,OAASoC,EAAI,IAAMA,EAAE4D,MAAO7D,IAAW,EAAInC,EAAEiC,SAAW,MAAQjC,EAAE,IAAM,MAAQA,EAAE,MAAM,MAAQA,EAAE,IAAM,MAAQA,EAAE,QApG5H,SAAYF,EAAGE,EAAGgC,EAAGG,GACnB,GAAI,MAASnC,GApBf,SAAYF,EAAGE,EAAGgC,EAAGG,GACnB,GAAI,OAASH,GAAK,IAAMA,EAAEgE,KAAM,OAAO,EAEvC,cAAehG,GACb,IAAK,WACL,IAAK,SACH,OAAO,EAET,IAAK,UACH,OAAImC,IACA,OAASH,GAAWA,EAAE64B,gBAEnB,WADP/6B,EAAIA,EAAE4gB,cAAcvL,MAAM,EAAG,KACL,UAAYrV,GAEtC,QACE,OAAO,GAKmC07B,CAAG17B,EAAGE,EAAGgC,EAAGG,GAAI,OAAO,EACrE,GAAIA,EAAG,OAAO,EACd,GAAI,OAASH,EAAG,OAAQA,EAAEgE,MACxB,KAAK,EACH,OAAQhG,EAEV,KAAK,EACH,OAAO,IAAOA,EAEhB,KAAK,EACH,OAAOy7B,MAAMz7B,GAEf,KAAK,EACH,OAAOy7B,MAAMz7B,IAAM,EAAIA,EAE3B,OAAO,EAqFD07B,CAAG17B,EAAGgC,EAAGI,EAAGD,KAAOH,EAAI,MAAOG,GAAK,OAASC,EAhIpD,SAAYtC,GACV,QAAIwP,GAAGuL,KAAK+f,GAAI96B,KACZwP,GAAGuL,KAAK8f,GAAI76B,KACZ46B,GAAGzvB,KAAKnL,GAAW86B,GAAG96B,IAAK,GAC/B66B,GAAG76B,IAAK,GACD,IA2H+C8P,CAAG5P,KAAO,OAASgC,EAAIlC,EAAE8vB,gBAAgB5vB,GAAKF,EAAE2vB,aAAazvB,EAAG,GAAKgC,IAAMI,EAAE44B,gBAAkBl7B,EAAEsC,EAAE64B,cAAgB,OAASj5B,EAAI,IAAMI,EAAE4D,MAAY,GAAKhE,GAAKhC,EAAIoC,EAAE04B,cAAe34B,EAAIC,EAAE24B,mBAAoB,OAAS/4B,EAAIlC,EAAE8vB,gBAAgB5vB,IAAkBgC,EAAI,KAAhBI,EAAIA,EAAE4D,OAAqB,IAAM5D,IAAK,IAAOJ,EAAI,GAAK,GAAKA,EAAGG,EAAIrC,EAAE67B,eAAex5B,EAAGnC,EAAGgC,GAAKlC,EAAE2vB,aAAazvB,EAAGgC,MAG1Z,SAAS45B,GAAG97B,GACV,IAAIE,EAAIF,EAAEkG,KACV,OAAQlG,EAAIA,EAAE+7B,WAAa,UAAY/7B,EAAE4gB,gBAAkB,aAAe1gB,GAAK,UAAYA,GAuC7F,SAAS87B,GAAGh8B,GACVA,EAAEi8B,gBAAkBj8B,EAAEi8B,cArCxB,SAAYj8B,GACV,IAAIE,EAAI47B,GAAG97B,GAAK,UAAY,QACxBkC,EAAI3C,OAAO4c,yBAAyBnc,EAAE8J,YAAYF,UAAW1J,GAC7DmC,EAAI,GAAKrC,EAAEE,GAEf,IAAKF,EAAEmb,eAAejb,SAAM,IAAuBgC,GAAK,mBAAsBA,EAAE2M,KAAO,mBAAsB3M,EAAEqkB,IAAK,CAClH,IAAIjkB,EAAIJ,EAAE2M,IACNyc,EAAIppB,EAAEqkB,IAcV,OAbAhnB,OAAOC,eAAeQ,EAAGE,EAAG,CAC1BsI,cAAc,EACdqG,IAAK,WACH,OAAOvM,EAAEyY,KAAKhW,OAEhBwhB,IAAK,SAAavmB,GAChBqC,EAAI,GAAKrC,EACTsrB,EAAEvQ,KAAKhW,KAAM/E,MAGjBT,OAAOC,eAAeQ,EAAGE,EAAG,CAC1BqI,WAAYrG,EAAEqG,aAET,CACL2zB,SAAU,WACR,OAAO75B,GAET85B,SAAU,SAAkBn8B,GAC1BqC,EAAI,GAAKrC,GAEXo8B,aAAc,WACZp8B,EAAEi8B,cAAgB,YACXj8B,EAAEE,MAOuBm8B,CAAGr8B,IAG3C,SAASs8B,GAAGt8B,GACV,IAAKA,EAAG,OAAO,EACf,IAAIE,EAAIF,EAAEi8B,cACV,IAAK/7B,EAAG,OAAO,EACf,IAAIgC,EAAIhC,EAAEg8B,WACN75B,EAAI,GAGR,OAFArC,IAAMqC,EAAIy5B,GAAG97B,GAAKA,EAAEu8B,QAAU,OAAS,QAAUv8B,EAAEN,QACnDM,EAAIqC,KACSH,IAAKhC,EAAEi8B,SAASn8B,IAAI,GAGnC,SAASw8B,GAAGx8B,EAAGE,GACb,IAAIgC,EAAIhC,EAAEq8B,QACV,OAAO35B,EAAE,GAAI1C,EAAG,CACdu8B,oBAAgB,EAChBC,kBAAc,EACdh9B,WAAO,EACP68B,QAAS,MAAQr6B,EAAIA,EAAIlC,EAAE28B,cAAcC,iBAI7C,SAASC,GAAG78B,EAAGE,GACb,IAAIgC,EAAI,MAAQhC,EAAEw8B,aAAe,GAAKx8B,EAAEw8B,aACpCr6B,EAAI,MAAQnC,EAAEq8B,QAAUr8B,EAAEq8B,QAAUr8B,EAAEu8B,eAC1Cv6B,EAAIs5B,GAAG,MAAQt7B,EAAER,MAAQQ,EAAER,MAAQwC,GACnClC,EAAE28B,cAAgB,CAChBC,eAAgBv6B,EAChBy6B,aAAc56B,EACd66B,WAAY,aAAe78B,EAAEgG,MAAQ,UAAYhG,EAAEgG,KAAO,MAAQhG,EAAEq8B,QAAU,MAAQr8B,EAAER,OAI5F,SAASs9B,GAAGh9B,EAAGE,GAEb,OADAA,EAAIA,EAAEq8B,UACOd,GAAGz7B,EAAG,UAAWE,GAAG,GAGnC,SAAS+8B,GAAGj9B,EAAGE,GACb88B,GAAGh9B,EAAGE,GACN,IAAIgC,EAAIs5B,GAAGt7B,EAAER,OACT2C,EAAInC,EAAEgG,KACV,GAAI,MAAQhE,EACN,WAAaG,GACX,IAAMH,GAAK,KAAOlC,EAAEN,OAASM,EAAEN,OAASwC,KAAGlC,EAAEN,MAAQ,GAAKwC,GACzDlC,EAAEN,QAAU,GAAKwC,IAAMlC,EAAEN,MAAQ,GAAKwC,QACxC,GAAI,WAAaG,GAAK,UAAYA,EAEvC,YADArC,EAAE8vB,gBAAgB,SAGpB5vB,EAAEib,eAAe,SAAW+hB,GAAGl9B,EAAGE,EAAEgG,KAAMhE,GAAKhC,EAAEib,eAAe,iBAAmB+hB,GAAGl9B,EAAGE,EAAEgG,KAAMs1B,GAAGt7B,EAAEw8B,eACtG,MAAQx8B,EAAEq8B,SAAW,MAAQr8B,EAAEu8B,iBAAmBz8B,EAAEy8B,iBAAmBv8B,EAAEu8B,gBAG3E,SAASU,GAAGn9B,EAAGE,EAAGgC,GAChB,GAAIhC,EAAEib,eAAe,UAAYjb,EAAEib,eAAe,gBAAiB,CACjE,IAAI9Y,EAAInC,EAAEgG,KACV,KAAM,WAAa7D,GAAK,UAAYA,QAAK,IAAWnC,EAAER,OAAS,OAASQ,EAAER,OAAQ,OAClFQ,EAAI,GAAKF,EAAE28B,cAAcG,aACzB56B,GAAKhC,IAAMF,EAAEN,QAAUM,EAAEN,MAAQQ,GACjCF,EAAE08B,aAAex8B,EAInB,MADAgC,EAAIlC,EAAE+K,QACO/K,EAAE+K,KAAO,IACtB/K,EAAEy8B,gBAAkBz8B,EAAEy8B,eACtBz8B,EAAEy8B,iBAAmBz8B,EAAE28B,cAAcC,eACrC,KAAO16B,IAAMlC,EAAE+K,KAAO7I,GAGxB,SAASg7B,GAAGl9B,EAAGE,EAAGgC,GACZ,WAAahC,GAAKF,EAAEo9B,cAAcC,gBAAkBr9B,IAAG,MAAQkC,EAAIlC,EAAE08B,aAAe,GAAK18B,EAAE28B,cAAcG,aAAe98B,EAAE08B,eAAiB,GAAKx6B,IAAMlC,EAAE08B,aAAe,GAAKx6B,IAWlL,SAASo7B,GAAGt9B,EAAGE,GAKb,OAJAF,EAAI4C,EAAE,CACJuD,cAAU,GACTjG,IACCA,EAZN,SAAYF,GACV,IAAIE,EAAI,GAIR,OAHAmyB,EAAGrM,SAAS7X,QAAQnO,GAAG,SAAUA,GAC/B,MAAQA,IAAME,GAAKF,MAEdE,EAOCq9B,CAAGr9B,EAAEiG,aAAWnG,EAAEmG,SAAWjG,GAC9BF,EAGT,SAASw9B,GAAGx9B,EAAGE,EAAGgC,EAAGG,GAGnB,GAFArC,EAAIA,EAAEqH,QAEFnH,EAAG,CACLA,EAAI,GAEJ,IAAK,IAAIoC,EAAI,EAAGA,EAAIJ,EAAEC,OAAQG,IAC5BpC,EAAE,IAAMgC,EAAEI,KAAM,EAGlB,IAAKJ,EAAI,EAAGA,EAAIlC,EAAEmC,OAAQD,IACxBI,EAAIpC,EAAEib,eAAe,IAAMnb,EAAEkC,GAAGxC,OAAQM,EAAEkC,GAAGu7B,WAAan7B,IAAMtC,EAAEkC,GAAGu7B,SAAWn7B,GAAIA,GAAKD,IAAMrC,EAAEkC,GAAGw7B,iBAAkB,OAEnH,CAIL,IAHAx7B,EAAI,GAAKs5B,GAAGt5B,GACZhC,EAAI,KAECoC,EAAI,EAAGA,EAAItC,EAAEmC,OAAQG,IAAK,CAC7B,GAAItC,EAAEsC,GAAG5C,QAAUwC,EAGjB,OAFAlC,EAAEsC,GAAGm7B,UAAW,OAChBp7B,IAAMrC,EAAEsC,GAAGo7B,iBAAkB,IAI/B,OAASx9B,GAAKF,EAAEsC,GAAGg2B,WAAap4B,EAAIF,EAAEsC,IAGxC,OAASpC,IAAMA,EAAEu9B,UAAW,IAIhC,SAASE,GAAG39B,EAAGE,GACb,GAAI,MAAQA,EAAE0xB,wBAAyB,MAAM3oB,MAAM7I,EAAE,KACrD,OAAOwC,EAAE,GAAI1C,EAAG,CACdR,WAAO,EACPg9B,kBAAc,EACdv2B,SAAU,GAAKnG,EAAE28B,cAAcG,eAInC,SAASc,GAAG59B,EAAGE,GACb,IAAIgC,EAAIhC,EAAER,MAEV,GAAI,MAAQwC,EAAG,CAIb,GAHAA,EAAIhC,EAAEw8B,aAGF,OAFJx8B,EAAIA,EAAEiG,UAES,CACb,GAAI,MAAQjE,EAAG,MAAM+G,MAAM7I,EAAE,KAE7B,GAAIsO,MAAMC,QAAQzO,GAAI,CACpB,KAAM,GAAKA,EAAEiC,QAAS,MAAM8G,MAAM7I,EAAE,KACpCF,EAAIA,EAAE,GAGRgC,EAAIhC,EAGN,MAAQgC,IAAMA,EAAI,IAGpBlC,EAAE28B,cAAgB,CAChBG,aAActB,GAAGt5B,IAIrB,SAAS27B,GAAG79B,EAAGE,GACb,IAAIgC,EAAIs5B,GAAGt7B,EAAER,OACT2C,EAAIm5B,GAAGt7B,EAAEw8B,cACb,MAAQx6B,KAAMA,EAAI,GAAKA,KAASlC,EAAEN,QAAUM,EAAEN,MAAQwC,GAAI,MAAQhC,EAAEw8B,cAAgB18B,EAAE08B,eAAiBx6B,IAAMlC,EAAE08B,aAAex6B,IAC9H,MAAQG,IAAMrC,EAAE08B,aAAe,GAAKr6B,GAGtC,SAASy7B,GAAG99B,GACV,IAAIE,EAAIF,EAAE+9B,YACV79B,IAAMF,EAAE28B,cAAcG,cAAgB,KAAO58B,GAAK,OAASA,IAAMF,EAAEN,MAAQQ,GAzP7E,0jCAA0jC8O,MAAM,KAAKb,SAAQ,SAAUnO,GACrlC,IAAIE,EAAIF,EAAEygB,QAAQ4a,GAAIC,IACtBj6B,GAAEnB,GAAK,IAAIiB,GAAEjB,EAAG,GAAG,EAAIF,EAAG,MAAM,MAElC,2EAA2EgP,MAAM,KAAKb,SAAQ,SAAUnO,GACtG,IAAIE,EAAIF,EAAEygB,QAAQ4a,GAAIC,IACtBj6B,GAAEnB,GAAK,IAAIiB,GAAEjB,EAAG,GAAG,EAAIF,EAAG,gCAAgC,MAE5D,CAAC,WAAY,WAAY,aAAamO,SAAQ,SAAUnO,GACtD,IAAIE,EAAIF,EAAEygB,QAAQ4a,GAAIC,IACtBj6B,GAAEnB,GAAK,IAAIiB,GAAEjB,EAAG,GAAG,EAAIF,EAAG,wCAAwC,MAEpE,CAAC,WAAY,eAAemO,SAAQ,SAAUnO,GAC5CqB,GAAErB,GAAK,IAAImB,GAAEnB,EAAG,GAAG,EAAIA,EAAE4gB,cAAe,MAAM,MAEhDvf,GAAE28B,UAAY,IAAI78B,GAAE,YAAa,GAAG,EAAI,aAAc,gCAAgC,GACtF,CAAC,MAAO,OAAQ,SAAU,cAAcgN,SAAQ,SAAUnO,GACxDqB,GAAErB,GAAK,IAAImB,GAAEnB,EAAG,GAAG,EAAIA,EAAE4gB,cAAe,MAAM,MA2OhD,IAAIqd,GACI,+BADJA,GAGG,6BAGP,SAASC,GAAGl+B,GACV,OAAQA,GACN,IAAK,MACH,MAAO,6BAET,IAAK,OACH,MAAO,qCAET,QACE,MAAO,gCAIb,SAASm+B,GAAGn+B,EAAGE,GACb,OAAO,MAAQF,GAAK,iCAAmCA,EAAIk+B,GAAGh+B,GAAK,+BAAiCF,GAAK,kBAAoBE,EAAI,+BAAiCF,EAGpK,IAAIo+B,GACAC,GAAK,SAAUr+B,GACjB,MAAO,oBAAuBs+B,OAASA,MAAMC,wBAA0B,SAAUr+B,EAAGgC,EAAGG,EAAGC,GACxFg8B,MAAMC,yBAAwB,WAC5B,OAAOv+B,EAAEE,EAAGgC,OAEZlC,EALG,EAMP,SAAUA,EAAGE,GACb,GAAIF,EAAEw+B,eAAiBP,IAAU,cAAej+B,EAAGA,EAAEwkB,UAAYtkB,MAAO,CAItE,KAHAk+B,GAAKA,IAAMz1B,SAASC,cAAc,QAC/B4b,UAAY,QAAUtkB,EAAEu+B,UAAU1d,WAAa,SAE7C7gB,EAAIk+B,GAAGM,WAAY1+B,EAAE0+B,YACxB1+B,EAAE8wB,YAAY9wB,EAAE0+B,YAGlB,KAAOx+B,EAAEw+B,YACP1+B,EAAEwwB,YAAYtwB,EAAEw+B,gBAKtB,SAASC,GAAG3+B,EAAGE,GACb,GAAIA,EAAG,CACL,IAAIgC,EAAIlC,EAAE0+B,WAEV,GAAIx8B,GAAKA,IAAMlC,EAAE4+B,WAAa,IAAM18B,EAAE28B,SAEpC,YADA38B,EAAE48B,UAAY5+B,GAKlBF,EAAE+9B,YAAc79B,EAGlB,SAAS6+B,GAAG/+B,EAAGE,GACb,IAAIgC,EAAI,GAIR,OAHAA,EAAElC,EAAE4gB,eAAiB1gB,EAAE0gB,cACvB1e,EAAE,SAAWlC,GAAK,SAAWE,EAC7BgC,EAAE,MAAQlC,GAAK,MAAQE,EAChBgC,EAGT,IAAI88B,GAAK,CACPC,aAAcF,GAAG,YAAa,gBAC9BG,mBAAoBH,GAAG,YAAa,sBACpCI,eAAgBJ,GAAG,YAAa,kBAChCK,cAAeL,GAAG,aAAc,kBAE9BM,GAAK,GACLC,GAAK,GAGT,SAASC,GAAGv/B,GACV,GAAIq/B,GAAGr/B,GAAI,OAAOq/B,GAAGr/B,GACrB,IAAKg/B,GAAGh/B,GAAI,OAAOA,EACnB,IACIkC,EADAhC,EAAI8+B,GAAGh/B,GAGX,IAAKkC,KAAKhC,EACR,GAAIA,EAAEib,eAAejZ,IAAMA,KAAKo9B,GAAI,OAAOD,GAAGr/B,GAAKE,EAAEgC,GAGvD,OAAOlC,EAZT85B,IAAOwF,GAAK32B,SAASC,cAAc,OAAO0e,MAAO,mBAAoB3nB,gBAAkBq/B,GAAGC,aAAaO,iBAAkBR,GAAGE,mBAAmBM,iBAAkBR,GAAGG,eAAeK,WAAY,oBAAqB7/B,eAAiBq/B,GAAGI,cAAcK,YAetP,IAAIC,GAAKH,GAAG,gBACRI,GAAKJ,GAAG,sBACRK,GAAKL,GAAG,kBACRM,GAAKN,GAAG,iBACRO,GAAK,sNAAsN9wB,MAAM,KAErO,SAAS+wB,GAAG//B,GACV,IAAIE,EAAIF,EACJkC,EAAIlC,EACR,GAAIA,EAAEggC,UAAW,KAAO9/B,EAAU,QAChCA,EAAIA,EAAU,WACT,CACLF,EAAIE,EAEJ,GACS,IAAqB,MAA5BA,EAAIF,GAAYigC,aAAsB/9B,EAAIhC,EAAU,QAAIF,EAAIE,EAAU,aAC/DF,GAEX,OAAO,IAAME,EAAE0b,IAAM1Z,EAAI,KAG3B,SAASg+B,GAAGlgC,GACV,GAAI,KAAOA,EAAE4b,IAAK,CAChB,IAAI1b,EAAIF,EAAEmgC,cAEV,GADA,OAASjgC,IAAuB,QAAjBF,EAAIA,EAAEggC,aAA0B9/B,EAAIF,EAAEmgC,gBACjD,OAASjgC,EAAG,OAAOA,EAAEkgC,WAG3B,OAAO,KAGT,SAASC,GAAGrgC,GACV,GAAI+/B,GAAG//B,KAAOA,EAAG,MAAMiJ,MAAM7I,EAAE,MAsFjC,SAASkgC,GAAGtgC,GAEV,KADAA,EApFF,SAAYA,GACV,IAAIE,EAAIF,EAAEggC,UAEV,IAAK9/B,EAAG,CAEN,GAAI,QADJA,EAAI6/B,GAAG//B,IACS,MAAMiJ,MAAM7I,EAAE,MAC9B,OAAOF,IAAMF,EAAI,KAAOA,EAG1B,IAAK,IAAIkC,EAAIlC,EAAGqC,EAAInC,IAAK,CACvB,IAAIoC,EAAIJ,EAAU,OAClB,GAAI,OAASI,EAAG,MAChB,IAAIgpB,EAAIhpB,EAAE09B,UAEV,GAAI,OAAS1U,EAAG,CAGd,GAAI,QAFJjpB,EAAIC,EAAU,QAEE,CACdJ,EAAIG,EACJ,SAGF,MAGF,GAAIC,EAAE6hB,QAAUmH,EAAEnH,MAAO,CACvB,IAAKmH,EAAIhpB,EAAE6hB,MAAOmH,GAAI,CACpB,GAAIA,IAAMppB,EAAG,OAAOm+B,GAAG/9B,GAAItC,EAC3B,GAAIsrB,IAAMjpB,EAAG,OAAOg+B,GAAG/9B,GAAIpC,EAC3BorB,EAAIA,EAAEiV,QAGR,MAAMt3B,MAAM7I,EAAE,MAGhB,GAAI8B,EAAU,SAAMG,EAAU,OAAGH,EAAII,EAAGD,EAAIipB,MAAO,CACjD,IAAK,IAAInsB,GAAI,EAAIC,EAAIkD,EAAE6hB,MAAO/kB,GAAI,CAChC,GAAIA,IAAM8C,EAAG,CACX/C,GAAI,EACJ+C,EAAII,EACJD,EAAIipB,EACJ,MAGF,GAAIlsB,IAAMiD,EAAG,CACXlD,GAAI,EACJkD,EAAIC,EACJJ,EAAIopB,EACJ,MAGFlsB,EAAIA,EAAEmhC,QAGR,IAAKphC,EAAG,CACN,IAAKC,EAAIksB,EAAEnH,MAAO/kB,GAAI,CACpB,GAAIA,IAAM8C,EAAG,CACX/C,GAAI,EACJ+C,EAAIopB,EACJjpB,EAAIC,EACJ,MAGF,GAAIlD,IAAMiD,EAAG,CACXlD,GAAI,EACJkD,EAAIipB,EACJppB,EAAII,EACJ,MAGFlD,EAAIA,EAAEmhC,QAGR,IAAKphC,EAAG,MAAM8J,MAAM7I,EAAE,OAG1B,GAAI8B,EAAE89B,YAAc39B,EAAG,MAAM4G,MAAM7I,EAAE,MAGvC,GAAI,IAAM8B,EAAE0Z,IAAK,MAAM3S,MAAM7I,EAAE,MAC/B,OAAO8B,EAAEm2B,UAAUxL,UAAY3qB,EAAIlC,EAAIE,EAInCsgC,CAAGxgC,IACC,OAAO,KAEf,IAAK,IAAIE,EAAIF,IAAK,CAChB,GAAI,IAAME,EAAE0b,KAAO,IAAM1b,EAAE0b,IAAK,OAAO1b,EACvC,GAAIA,EAAEikB,MAAOjkB,EAAEikB,MAAc,OAAIjkB,EAAGA,EAAIA,EAAEikB,UAAW,CACnD,GAAIjkB,IAAMF,EAAG,MAEb,MAAQE,EAAEqgC,SAAU,CAClB,IAAKrgC,EAAU,QAAKA,EAAU,SAAMF,EAAG,OAAO,KAC9CE,EAAIA,EAAU,OAGhBA,EAAEqgC,QAAgB,OAAIrgC,EAAU,OAChCA,EAAIA,EAAEqgC,SAIV,OAAO,KAGT,IAAIE,GACAC,GACAC,GACAC,IAAK,EACLC,GAAK,GACLC,GAAK,KACLC,GAAK,KACLC,GAAK,KACLC,GAAK,IAAItG,IACTuG,GAAK,IAAIvG,IACTwG,GAAK,GACLC,GAAK,0QAA0QpyB,MAAM,KACrRqyB,GAAK,gHAAgHryB,MAAM,KAY/H,SAASsyB,GAAGthC,EAAGE,EAAGgC,EAAGG,GACnB,MAAO,CACLk/B,UAAWvhC,EACXwhC,aAActhC,EACduhC,iBAAsB,GAAJv/B,EAClBw/B,YAAar/B,GAIjB,SAASs/B,GAAG3hC,EAAGE,GACb,OAAQF,GACN,IAAK,QACL,IAAK,OACH8gC,GAAK,KACL,MAEF,IAAK,YACL,IAAK,YACHC,GAAK,KACL,MAEF,IAAK,YACL,IAAK,WACHC,GAAK,KACL,MAEF,IAAK,cACL,IAAK,aACHC,GAAW,OAAE/gC,EAAE0hC,WACf,MAEF,IAAK,oBACL,IAAK,qBACHV,GAAW,OAAEhhC,EAAE0hC,YAIrB,SAASC,GAAG7hC,EAAGE,EAAGgC,EAAGG,EAAGC,GACtB,OAAI,OAAStC,GAAKA,EAAE0hC,cAAgBp/B,GAAUtC,EAAIshC,GAAGphC,EAAGgC,EAAGG,EAAGC,GAAI,OAASpC,IAAiB,QAAXA,EAAI4hC,GAAG5hC,KAAkBwgC,GAAGxgC,IAAKF,IAClHA,EAAEyhC,kBAAoBp/B,EACfrC,GA0BT,SAAS+hC,GAAG/hC,GACV,IAAIE,EAAI8hC,GAAGhiC,EAAE+Y,QAEb,GAAI,OAAS7Y,EAAG,CACd,IAAIgC,EAAI69B,GAAG7/B,GACX,GAAI,OAASgC,EAAG,GAAe,MAAXhC,EAAIgC,EAAE0Z,MACxB,GAAe,QAAX1b,EAAIggC,GAAGh+B,IAKT,OAJAlC,EAAEuhC,UAAYrhC,OACdJ,EAAEyE,yBAAyBvE,EAAEiiC,UAAU,WACrCtB,GAAGz+B,WAIF,GAAI,IAAMhC,GAAKgC,EAAEm2B,UAAU6J,QAEhC,YADAliC,EAAEuhC,UAAY,IAAMr/B,EAAE0Z,IAAM1Z,EAAEm2B,UAAU8J,cAAgB,MAK5DniC,EAAEuhC,UAAY,KAGhB,SAASa,GAAGpiC,GACV,GAAI,OAASA,EAAEuhC,UAAW,OAAO,EACjC,IAAIrhC,EAAImiC,GAAGriC,EAAEwhC,aAAcxhC,EAAEyhC,iBAAkBzhC,EAAE0hC,aAEjD,GAAI,OAASxhC,EAAG,CACd,IAAIgC,EAAI4/B,GAAG5hC,GAGX,OAFA,OAASgC,GAAKw+B,GAAGx+B,GACjBlC,EAAEuhC,UAAYrhC,GACP,EAGT,OAAO,EAGT,SAASoiC,GAAGtiC,EAAGE,EAAGgC,GAChBkgC,GAAGpiC,IAAMkC,EAAU,OAAEhC,GAGvB,SAASqiC,KACP,IAAK3B,IAAK,EAAI,EAAIC,GAAG1+B,QAAS,CAC5B,IAAInC,EAAI6gC,GAAG,GAEX,GAAI,OAAS7gC,EAAEuhC,UAAW,CAExB,QADAvhC,EAAI8hC,GAAG9hC,EAAEuhC,aACKd,GAAGzgC,GACjB,MAGF,IAAIE,EAAImiC,GAAGriC,EAAEwhC,aAAcxhC,EAAEyhC,iBAAkBzhC,EAAE0hC,aACjD,OAASxhC,EAAIF,EAAEuhC,UAAYrhC,EAAI2gC,GAAG2B,QAGpC,OAAS1B,IAAMsB,GAAGtB,MAAQA,GAAK,MAC/B,OAASC,IAAMqB,GAAGrB,MAAQA,GAAK,MAC/B,OAASC,IAAMoB,GAAGpB,MAAQA,GAAK,MAC/BC,GAAG9yB,QAAQm0B,IACXpB,GAAG/yB,QAAQm0B,IAGb,SAASG,GAAGziC,EAAGE,GACbF,EAAEuhC,YAAcrhC,IAAMF,EAAEuhC,UAAY,KAAMX,KAAOA,IAAK,EAAI9gC,EAAE2E,0BAA0B3E,EAAEsE,wBAAyBm+B,MAGnH,SAASG,GAAG1iC,GACV,SAASE,EAAEA,GACT,OAAOuiC,GAAGviC,EAAGF,GAGf,GAAI,EAAI6gC,GAAG1+B,OAAQ,CACjBsgC,GAAG5B,GAAG,GAAI7gC,GAEV,IAAK,IAAIkC,EAAI,EAAGA,EAAI2+B,GAAG1+B,OAAQD,IAAK,CAClC,IAAIG,EAAIw+B,GAAG3+B,GACXG,EAAEk/B,YAAcvhC,IAAMqC,EAAEk/B,UAAY,OAUxC,IANA,OAAST,IAAM2B,GAAG3B,GAAI9gC,GACtB,OAAS+gC,IAAM0B,GAAG1B,GAAI/gC,GACtB,OAASghC,IAAMyB,GAAGzB,GAAIhhC,GACtBihC,GAAG9yB,QAAQjO,GACXghC,GAAG/yB,QAAQjO,GAENgC,EAAI,EAAGA,EAAIi/B,GAAGh/B,OAAQD,KACzBG,EAAI8+B,GAAGj/B,IAAMq/B,YAAcvhC,IAAMqC,EAAEk/B,UAAY,MAGjD,KAAO,EAAIJ,GAAGh/B,QAAsB,QAAXD,EAAIi/B,GAAG,IAAeI,WAC7CQ,GAAG7/B,GAAI,OAASA,EAAEq/B,WAAaJ,GAAGqB,QAItC,SAASG,GAAG3iC,GAGV,OAFAA,EAAIA,EAAE+Y,QAAU/Y,EAAE4iC,YAAcjjC,QAC9BkjC,0BAA4B7iC,EAAIA,EAAE6iC,yBAC7B,IAAM7iC,EAAE6+B,SAAW7+B,EAAE6wB,WAAa7wB,EAG3C,SAAS8iC,GAAG9iC,GACV,GACEA,EAAIA,EAAU,aACPA,GAAK,IAAMA,EAAE4b,KAEtB,OAAO5b,GAAQ,KAGjB,SAAS+iC,GAAG/iC,EAAGE,EAAGgC,IACZhC,EAAIk4B,EAAGp4B,EAAGkC,EAAE8gC,eAAe7M,wBAAwBj2B,OAAKgC,EAAEy1B,mBAAqBJ,EAAGr1B,EAAEy1B,mBAAoBz3B,GAAIgC,EAAE01B,mBAAqBL,EAAGr1B,EAAE01B,mBAAoB53B,IAGlK,SAASijC,GAAGjjC,GACV,GAAIA,GAAKA,EAAEgjC,eAAe7M,wBAAyB,CACjD,IAAK,IAAIj2B,EAAIF,EAAEkjC,YAAahhC,EAAI,GAAIhC,GAClCgC,EAAEE,KAAKlC,GAAIA,EAAI4iC,GAAG5iC,GAGpB,IAAKA,EAAIgC,EAAEC,OAAQ,EAAIjC,KACrB6iC,GAAG7gC,EAAEhC,GAAI,WAAYF,GAGvB,IAAKE,EAAI,EAAGA,EAAIgC,EAAEC,OAAQjC,IACxB6iC,GAAG7gC,EAAEhC,GAAI,UAAWF,IAK1B,SAASmjC,GAAGnjC,EAAGE,EAAGgC,GAChBlC,GAAKkC,GAAKA,EAAE8gC,eAAe3M,mBAAqBn2B,EAAIk4B,EAAGp4B,EAAGkC,EAAE8gC,eAAe3M,qBAAuBn0B,EAAEy1B,mBAAqBJ,EAAGr1B,EAAEy1B,mBAAoBz3B,GAAIgC,EAAE01B,mBAAqBL,EAAGr1B,EAAE01B,mBAAoB53B,IAGxM,SAASojC,GAAGpjC,GACVA,GAAKA,EAAEgjC,eAAe3M,kBAAoB8M,GAAGnjC,EAAEkjC,YAAa,KAAMljC,GAGpE,SAASqjC,GAAGrjC,GACVw3B,EAAGx3B,EAAGijC,IAGR,SAASK,KACP,OAAO,EAGT,SAASC,KACP,OAAO,EAGT,SAASjiC,GAAEtB,EAAGE,EAAGgC,EAAGG,GAMlB,IAAK,IAAIC,KALTyC,KAAKi+B,eAAiBhjC,EACtB+E,KAAKm+B,YAAchjC,EACnB6E,KAAK28B,YAAcx/B,EACnBlC,EAAI+E,KAAK+E,YAAY05B,UAGnBxjC,EAAEmb,eAAe7Y,MAAQpC,EAAIF,EAAEsC,IAAMyC,KAAKzC,GAAKpC,EAAEgC,GAAK,WAAaI,EAAIyC,KAAKgU,OAAS1W,EAAI0C,KAAKzC,GAAKJ,EAAEI,IAKvG,OAFAyC,KAAK0+B,oBAAsB,MAAQvhC,EAAEwhC,iBAAmBxhC,EAAEwhC,kBAAmB,IAAOxhC,EAAEyhC,aAAeL,GAAKC,GAC1Gx+B,KAAK8yB,qBAAuB0L,GACrBx+B,KAmET,SAAS6+B,GAAG5jC,EAAGE,EAAGgC,EAAGG,GACnB,GAAI0C,KAAK8+B,UAAU1hC,OAAQ,CACzB,IAAIG,EAAIyC,KAAK8+B,UAAUnhC,MAEvB,OADAqC,KAAKgW,KAAKzY,EAAGtC,EAAGE,EAAGgC,EAAGG,GACfC,EAGT,OAAO,IAAIyC,KAAK/E,EAAGE,EAAGgC,EAAGG,GAG3B,SAASyhC,GAAG9jC,GACV,KAAMA,aAAa+E,MAAO,MAAMkE,MAAM7I,EAAE,MACxCJ,EAAE+jC,aACF,GAAKh/B,KAAK8+B,UAAU1hC,QAAU4C,KAAK8+B,UAAUzhC,KAAKpC,GAGpD,SAASgkC,GAAGhkC,GACVA,EAAE6jC,UAAY,GACd7jC,EAAEikC,UAAYL,GACd5jC,EAAE+3B,QAAU+L,GAnFdlhC,EAAEtB,GAAEsI,UAAW,CACbs6B,eAAgB,WACdn/B,KAAK2+B,kBAAmB,EACxB,IAAI1jC,EAAI+E,KAAK28B,YACb1hC,IAAMA,EAAEkkC,eAAiBlkC,EAAEkkC,iBAAmB,kBAAqBlkC,EAAE2jC,cAAgB3jC,EAAE2jC,aAAc,GAAK5+B,KAAK0+B,mBAAqBH,KAEtIa,gBAAiB,WACf,IAAInkC,EAAI+E,KAAK28B,YACb1hC,IAAMA,EAAEmkC,gBAAkBnkC,EAAEmkC,kBAAoB,kBAAqBnkC,EAAEokC,eAAiBpkC,EAAEokC,cAAe,GAAKr/B,KAAK8yB,qBAAuByL,KAE5Ie,QAAS,WACPt/B,KAAK+yB,aAAewL,IAEtBxL,aAAcyL,GACdQ,WAAY,WACV,IACI7jC,EADAF,EAAI+E,KAAK+E,YAAY05B,UAGzB,IAAKtjC,KAAKF,EACR+E,KAAK7E,GAAK,KAGZ6E,KAAK28B,YAAc38B,KAAKm+B,YAAcn+B,KAAKi+B,eAAiB,KAC5Dj+B,KAAK8yB,qBAAuB9yB,KAAK0+B,mBAAqBF,GACtDx+B,KAAK6yB,mBAAqB7yB,KAAK4yB,mBAAqB,QAGxDr2B,GAAEkiC,UAAY,CACZt9B,KAAM,KACN6S,OAAQ,KACRse,cAAe,WACb,OAAO,MAETiN,WAAY,KACZC,QAAS,KACTC,WAAY,KACZC,UAAW,SAAmBzkC,GAC5B,OAAOA,EAAEykC,WAAapkC,KAAKC,OAE7BojC,iBAAkB,KAClBgB,UAAW,MAGbpjC,GAAEqjC,OAAS,SAAU3kC,GACnB,SAASE,KAET,SAASgC,IACP,OAAOG,EAAEyC,MAAMC,KAAMC,WAGvB,IAAI3C,EAAI0C,KACR7E,EAAE0J,UAAYvH,EAAEuH,UAChB,IAAItH,EAAI,IAAIpC,EAOZ,OANA0C,EAAEN,EAAGJ,EAAE0H,WACP1H,EAAE0H,UAAYtH,EACdJ,EAAE0H,UAAUE,YAAc5H,EAC1BA,EAAEshC,UAAY5gC,EAAE,GAAIP,EAAEmhC,UAAWxjC,GACjCkC,EAAEyiC,OAAStiC,EAAEsiC,OACbX,GAAG9hC,GACIA,GAGT8hC,GAAG1iC,IAwBH,IAAIsjC,GAAKtjC,GAAEqjC,OAAO,CAChBE,cAAe,KACfC,YAAa,KACbC,cAAe,OAEbC,GAAK1jC,GAAEqjC,OAAO,CAChBM,cAAe,SAAuBjlC,GACpC,MAAO,kBAAmBA,EAAIA,EAAEilC,cAAgBtlC,OAAOslC,iBAGvDC,GAAK5jC,GAAEqjC,OAAO,CAChBQ,KAAM,KACNC,OAAQ,OAENC,GAAKH,GAAGP,OAAO,CACjBW,cAAe,OAGjB,SAASC,GAAGvlC,GACV,IAAIE,EAAIF,EAAEwlC,QAGV,MAFA,aAAcxlC,EAAqB,KAAhBA,EAAIA,EAAEylC,WAAqB,KAAOvlC,IAAMF,EAAI,IAAOA,EAAIE,EAC1E,KAAOF,IAAMA,EAAI,IACV,IAAMA,GAAK,KAAOA,EAAIA,EAAI,EAGnC,IAAI0lC,GAAK,CACPC,IAAK,SACLC,SAAU,IACVC,KAAM,YACNC,GAAI,UACJC,MAAO,aACPC,KAAM,YACNC,IAAK,SACLC,IAAK,KACLC,KAAM,cACNC,KAAM,cACNC,OAAQ,aACRC,gBAAiB,gBAEfC,GAAK,CACPC,EAAG,YACHC,EAAG,MACHC,GAAI,QACJC,GAAI,QACJC,GAAI,QACJC,GAAI,UACJC,GAAI,MACJC,GAAI,QACJC,GAAI,WACJC,GAAI,SACJC,GAAI,IACJC,GAAI,SACJC,GAAI,WACJC,GAAI,MACJC,GAAI,OACJC,GAAI,YACJC,GAAI,UACJC,GAAI,aACJC,GAAI,YACJC,GAAI,SACJC,GAAI,SACJC,IAAK,KACLC,IAAK,KACLC,IAAK,KACLC,IAAK,KACLC,IAAK,KACLC,IAAK,KACLC,IAAK,KACLC,IAAK,KACLC,IAAK,KACLC,IAAK,MACLC,IAAK,MACLC,IAAK,MACLC,IAAK,UACLC,IAAK,aACLC,IAAK,QAEHC,GAAK,CACPC,IAAK,SACLC,QAAS,UACTC,KAAM,UACNC,MAAO,YAGT,SAASC,GAAGjpC,GACV,IAAIE,EAAI6E,KAAK28B,YACb,OAAOxhC,EAAEgpC,iBAAmBhpC,EAAEgpC,iBAAiBlpC,MAAMA,EAAI4oC,GAAG5oC,OAAQE,EAAEF,GAGxE,SAASmpC,KACP,OAAOF,GA6GT,IA1GA,IAAIjmC,GAAKkiC,GAAGP,OAAO,CACjBh/B,IAAK,SAAa3F,GAChB,GAAIA,EAAE2F,IAAK,CACT,IAAIzF,EAAIwlC,GAAG1lC,EAAE2F,MAAQ3F,EAAE2F,IACvB,GAAI,iBAAmBzF,EAAG,OAAOA,EAGnC,MAAO,aAAeF,EAAEkG,KAAmB,MAAXlG,EAAIulC,GAAGvlC,IAAe,QAAUugB,OAAO6oB,aAAappC,GAAM,YAAcA,EAAEkG,MAAQ,UAAYlG,EAAEkG,KAAOqgC,GAAGvmC,EAAEwlC,UAAY,eAAiB,IAE3K6D,SAAU,KACVC,QAAS,KACTC,SAAU,KACVC,OAAQ,KACRC,QAAS,KACTC,OAAQ,KACRC,OAAQ,KACRT,iBAAkBC,GAClB1D,SAAU,SAAkBzlC,GAC1B,MAAO,aAAeA,EAAEkG,KAAOq/B,GAAGvlC,GAAK,GAEzCwlC,QAAS,SAAiBxlC,GACxB,MAAO,YAAcA,EAAEkG,MAAQ,UAAYlG,EAAEkG,KAAOlG,EAAEwlC,QAAU,GAElEoE,MAAO,SAAe5pC,GACpB,MAAO,aAAeA,EAAEkG,KAAOq/B,GAAGvlC,GAAK,YAAcA,EAAEkG,MAAQ,UAAYlG,EAAEkG,KAAOlG,EAAEwlC,QAAU,KAGhGqE,GAAK,EACLC,GAAK,EACLC,IAAK,EACLC,IAAK,EACLC,GAAK/E,GAAGP,OAAO,CACjBuF,QAAS,KACTC,QAAS,KACTC,QAAS,KACTC,QAAS,KACTC,MAAO,KACPC,MAAO,KACPjB,QAAS,KACTC,SAAU,KACVC,OAAQ,KACRC,QAAS,KACTP,iBAAkBC,GAClBxyB,OAAQ,KACRE,QAAS,KACTyuB,cAAe,SAAuBtlC,GACpC,OAAOA,EAAEslC,gBAAkBtlC,EAAEwqC,cAAgBxqC,EAAE4iC,WAAa5iC,EAAEyqC,UAAYzqC,EAAEwqC,cAE9EE,UAAW,SAAmB1qC,GAC5B,GAAI,cAAeA,EAAG,OAAOA,EAAE0qC,UAC/B,IAAIxqC,EAAI2pC,GAER,OADAA,GAAK7pC,EAAEkqC,QACAH,GAAK,cAAgB/pC,EAAEkG,KAAOlG,EAAEkqC,QAAUhqC,EAAI,GAAK6pC,IAAK,EAAI,IAErEY,UAAW,SAAmB3qC,GAC5B,GAAI,cAAeA,EAAG,OAAOA,EAAE2qC,UAC/B,IAAIzqC,EAAI4pC,GAER,OADAA,GAAK9pC,EAAEmqC,QACAH,GAAK,cAAgBhqC,EAAEkG,KAAOlG,EAAEmqC,QAAUjqC,EAAI,GAAK8pC,IAAK,EAAI,MAGnEY,GAAKX,GAAGtF,OAAO,CACjB/C,UAAW,KACX5tB,MAAO,KACPG,OAAQ,KACR02B,SAAU,KACVC,mBAAoB,KACpBC,MAAO,KACPC,MAAO,KACPC,MAAO,KACPC,YAAa,KACbC,UAAW,OAETC,GAAKnB,GAAGtF,OAAO,CACjB0G,aAAc,OAEZC,GAAKpG,GAAGP,OAAO,CACjB4G,QAAS,KACTC,cAAe,KACfC,eAAgB,KAChBjC,OAAQ,KACRC,QAAS,KACTH,QAAS,KACTC,SAAU,KACVL,iBAAkBC,KAEhBuC,GAAKpqC,GAAEqjC,OAAO,CAChBxJ,aAAc,KACd2J,YAAa,KACbC,cAAe,OAEb4G,GAAK1B,GAAGtF,OAAO,CACjBiH,OAAQ,SAAgB5rC,GACtB,MAAO,WAAYA,EAAIA,EAAE4rC,OAAS,gBAAiB5rC,GAAKA,EAAE6rC,YAAc,GAE1EC,OAAQ,SAAgB9rC,GACtB,MAAO,WAAYA,EAAIA,EAAE8rC,OAAS,gBAAiB9rC,GAAKA,EAAE+rC,YAAc,eAAgB/rC,GAAKA,EAAEgsC,WAAa,GAE9GC,OAAQ,KACRC,UAAW,OAETC,GAAK,CAAC,CAAC,OAAQ,OAAQ,GAAI,CAAC,SAAU,SAAU,GAAI,CAAC,QAAS,QAAS,GAAI,CAAC,QAAS,QAAS,GAAI,CAAC,cAAe,cAAe,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,WAAY,WAAY,GAAI,CAAC,WAAY,cAAe,GAAI,CAAC,UAAW,UAAW,GAAI,CAAC,YAAa,YAAa,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,QAAS,QAAS,GAAI,CAAC,QAAS,QAAS,GAAI,CAAC,UAAW,UAAW,GAAI,CAAC,UAAW,UAAW,GAAI,CAAC,WAAY,WAAY,GAAI,CAAC,QAAS,QAAS,GAAI,CAAC,YAAa,YAAa,GAAI,CAAC,UAAW,UAAW,GAAI,CAAC,QAAS,QAAS,GAAI,CAAC,QAAS,QAAS,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,gBAAiB,gBAAiB,GAAI,CAAC,cAAe,cAAe,GAAI,CAAC,YAAa,YAAa,GAAI,CAAC,aAAc,aAAc,GAAI,CAAC,QAAS,QAAS,GAAI,CAAC,SAAU,SAAU,GAAI,CAAC,SAAU,SAAU,GAAI,CAAC,cAAe,cAAe,GAAI,CAAC,WAAY,WAAY,GAAI,CAAC,aAAc,aAAc,GAAI,CAAC,eAAgB,eAAgB,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,YAAa,YAAa,GAAI,CAAC,WAAY,WAAY,GAAI,CAAC,YAAa,YAAa,GAAI,CAAC,WAAY,WAAY,GAAI,CAAC,YAAa,YAAa,GAAI,CAAC,WAAY,WAAY,GAAI,CAAC,YAAa,YAAa,GAAI,CAAC,cAAe,cAAe,GAAI,CAAC,aAAc,aAAc,GAAI,CAAC,cAAe,cAAe,GAAI,CAAC,SAAU,SAAU,GAAI,CAAC,SAAU,SAAU,GAAI,CAAC,YAAa,YAAa,GAAI,CAAC,QAAS,QAAS,GAAI,CAAC,QAAS,QAAS,GAAI,CAACzM,GAAI,eAAgB,GAAI,CAACC,GAAI,qBAAsB,GAAI,CAACC,GAAI,iBAAkB,GAAI,CAAC,UAAW,UAAW,GAAI,CAAC,iBAAkB,iBAAkB,GAAI,CAAC,iBAAkB,iBAAkB,GAAI,CAAC,UAAW,UAAW,GAAI,CAAC,YAAa,YAAa,GAAI,CAAC,QAAS,QAAS,GAAI,CAAC,QAAS,QAAS,GAAI,CAAC,oBAAqB,oBAAqB,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,aAAc,aAAc,GAAI,CAAC,iBAAkB,iBAAkB,GAAI,CAAC,YAAa,YAAa,GAAI,CAAC,qBAAsB,qBAAsB,GAAI,CAAC,UAAW,UAAW,GAAI,CAAC,WAAY,WAAY,GAAI,CAAC,UAAW,UAAW,GAAI,CAAC,UAAW,UAAW,GAAI,CAAC,UAAW,UAAW,GAAI,CAAC,aAAc,aAAc,GAAI,CAACC,GAAI,gBAAiB,GAAI,CAAC,UAAW,UAAW,IACtlEuM,GAAK,GACLC,GAAK,GACLC,GAAK,EAEFA,GAAKH,GAAGhqC,OAAQmqC,KAAM,CAC3B,IAAIC,GAAKJ,GAAGG,IACRE,GAAKD,GAAG,GACRE,GAAKF,GAAG,GACRG,GAAKH,GAAG,GACRI,GAAK,MAAQF,GAAG,GAAGlR,cAAgBkR,GAAGp3B,MAAM,IAC5Cu3B,GAAK,CACPzW,wBAAyB,CACvB0W,QAASF,GACTG,SAAUH,GAAK,WAEjBnW,aAAc,CAACgW,IACfO,cAAeL,IAEjBN,GAAGK,IAAMG,GACTP,GAAGG,IAAMI,GAGX,IAAII,GAAK,CACP/W,WAAYmW,GACZa,iBAAkB,SAA0BjtC,GAE1C,YAAO,KADPA,EAAIqsC,GAAGrsC,IACeA,EAAE+sC,cAAgB,GAE1C/W,cAAe,SAAuBh2B,EAAGE,EAAGgC,EAAGG,GAC7C,IAAIC,EAAI+pC,GAAGrsC,GACX,IAAKsC,EAAG,OAAO,KAEf,OAAQtC,GACN,IAAK,WACH,GAAI,IAAMulC,GAAGrjC,GAAI,OAAO,KAE1B,IAAK,UACL,IAAK,QACHlC,EAAIgD,GACJ,MAEF,IAAK,OACL,IAAK,QACHhD,EAAIqlC,GACJ,MAEF,IAAK,QACH,GAAI,IAAMnjC,EAAEyU,OAAQ,OAAO,KAE7B,IAAK,WACL,IAAK,WACL,IAAK,YACL,IAAK,YACL,IAAK,UACL,IAAK,WACL,IAAK,YACL,IAAK,cACH3W,EAAIiqC,GACJ,MAEF,IAAK,OACL,IAAK,UACL,IAAK,YACL,IAAK,WACL,IAAK,YACL,IAAK,WACL,IAAK,YACL,IAAK,OACHjqC,EAAIorC,GACJ,MAEF,IAAK,cACL,IAAK,WACL,IAAK,YACL,IAAK,aACHprC,EAAIsrC,GACJ,MAEF,KAAK5L,GACL,KAAKC,GACL,KAAKC,GACH5/B,EAAI4kC,GACJ,MAEF,KAAK/E,GACH7/B,EAAI0rC,GACJ,MAEF,IAAK,SACH1rC,EAAIklC,GACJ,MAEF,IAAK,QACHllC,EAAI2rC,GACJ,MAEF,IAAK,OACL,IAAK,MACL,IAAK,QACH3rC,EAAIglC,GACJ,MAEF,IAAK,oBACL,IAAK,qBACL,IAAK,gBACL,IAAK,cACL,IAAK,cACL,IAAK,aACL,IAAK,cACL,IAAK,YACHhlC,EAAI4qC,GACJ,MAEF,QACE5qC,EAAIsB,GAKR,OADA+hC,GADAnjC,EAAIF,EAAEikC,UAAU3hC,EAAGpC,EAAGgC,EAAGG,IAElBnC,IAGPgtC,GAAKptC,EAAEqE,8BACPgpC,GAAKrtC,EAAEyE,yBACP6oC,GAAKJ,GAAGC,iBAERI,GAAK,GAET,SAASC,GAAGttC,GACV,IAAIE,EAAIF,EAAEutC,WACNrrC,EAAIhC,EAER,EAAG,CACD,IAAKgC,EAAG,CACNlC,EAAEwtC,UAAUprC,KAAKF,GACjB,MAGF,IAAIG,EAAIH,EACR,GAAI,IAAMG,EAAEuZ,IAAKvZ,EAAIA,EAAEg2B,UAAU8J,kBAAmB,CAClD,KAAO9/B,EAAU,QACfA,EAAIA,EAAU,OAGhBA,EAAI,IAAMA,EAAEuZ,IAAM,KAAOvZ,EAAEg2B,UAAU8J,cAEvC,IAAK9/B,EAAG,MAER,KADAnC,EAAIgC,EAAE0Z,MACK,IAAM1b,GAAKF,EAAEwtC,UAAUprC,KAAKF,GACvCA,EAAI8/B,GAAG3/B,SACAH,GAET,IAAKA,EAAI,EAAGA,EAAIlC,EAAEwtC,UAAUrrC,OAAQD,IAAK,CACvChC,EAAIF,EAAEwtC,UAAUtrC,GAChB,IAAII,EAAIqgC,GAAG3iC,EAAE0hC,aACbr/B,EAAIrC,EAAEwhC,aAEN,IAAK,IAAIlW,EAAItrB,EAAE0hC,YAAaviC,EAAIa,EAAEyhC,iBAAkBriC,EAAI,KAAMC,EAAI,EAAGA,EAAI02B,EAAG5zB,OAAQ9C,IAAK,CACvF,IAAIC,EAAIy2B,EAAG12B,GACXC,IAAMA,EAAIA,EAAE02B,cAAc3zB,EAAGnC,EAAGorB,EAAGhpB,EAAGnD,MAAQC,EAAIm4B,EAAGn4B,EAAGE,IAG1D04B,EAAG54B,IAIP,IAAIquC,IAAK,EAET,SAASlsC,GAAEvB,EAAGE,GACZwtC,GAAGxtC,EAAGF,GAAG,GAGX,SAAS0tC,GAAG1tC,EAAGE,EAAGgC,GAChB,OAAQkrC,GAAGltC,IACT,KAAK,EACH,IAAImC,EAAIsrC,GAAGvyB,KAAK,KAAMlb,EAAG,GACzB,MAEF,KAAK,EACHmC,EAAIurC,GAAGxyB,KAAK,KAAMlb,EAAG,GACrB,MAEF,QACEmC,EAAIwrC,GAAGzyB,KAAK,KAAMlb,EAAG,GAGzBgC,EAAIlC,EAAE8tC,iBAAiB5tC,EAAGmC,GAAG,GAAMrC,EAAE8tC,iBAAiB5tC,EAAGmC,GAAG,GAG9D,SAASsrC,GAAG3tC,EAAGE,EAAGgC,GAChBs4B,IAAMF,KACN,IAAIj4B,EAAIwrC,GACJvrC,EAAIk4B,GACRA,IAAK,EAEL,IACEH,GAAGh4B,EAAGrC,EAAGE,EAAGgC,GACZ,SACCs4B,GAAKl4B,IAAMo4B,MAIhB,SAASkT,GAAG5tC,EAAGE,EAAGgC,GAChBirC,GAAGD,GAAIW,GAAGzyB,KAAK,KAAMpb,EAAGE,EAAGgC,IAG7B,SAAS6rC,GAAG/tC,EAAGE,EAAGgC,EAAGG,GACnB,GAAIgrC,GAAGlrC,OAAQ,CACb,IAAIG,EAAI+qC,GAAG3qC,MACXJ,EAAEk/B,aAAexhC,EACjBsC,EAAEm/B,iBAAmBvhC,EACrBoC,EAAEo/B,YAAcx/B,EAChBI,EAAEirC,WAAalrC,EACfrC,EAAIsC,OACCtC,EAAI,CACTwhC,aAAcxhC,EACdyhC,iBAAkBvhC,EAClBwhC,YAAax/B,EACbqrC,WAAYlrC,EACZmrC,UAAW,IAGb,IACE,GAAIttC,EAAIotC,GAAIprC,EAAIlC,EAAGy6B,GAAIv6B,EAAEgC,OAAG,OAAa,CACvCu4B,IAAK,EAEL,IACEF,GAAGr6B,EAAGgC,OAAG,GACT,QACAu4B,IAAK,EAAIC,OAGb,QACA16B,EAAEwhC,aAAe,KAAMxhC,EAAE0hC,YAAc,KAAM1hC,EAAEutC,WAAa,KAAMvtC,EAAEwtC,UAAUrrC,OAAS,EAAGkrC,GAAGlrC,OA5GxF,IA4GuGkrC,GAAGjrC,KAAKpC,IAIxH,SAAS6tC,GAAG7tC,EAAGE,EAAGgC,GAChB,GAAIurC,GAAI,GAAI,EAAI5M,GAAG1+B,SAAW,EAAIi/B,GAAG12B,QAAQ1K,GAAIA,EAAIshC,GAAG,KAAMthC,EAAGE,EAAGgC,GAAI2+B,GAAGz+B,KAAKpC,OAAQ,CACtF,IAAIqC,EAAIggC,GAAGriC,EAAGE,EAAGgC,GACjB,OAASG,EAAIs/B,GAAG3hC,EAAGkC,IAAM,EAAIk/B,GAAG12B,QAAQ1K,IAAMA,EAAIshC,GAAGj/B,EAAGrC,EAAGE,EAAGgC,GAAI2+B,GAAGz+B,KAAKpC,IAnsB9E,SAAYA,EAAGE,EAAGgC,EAAGG,GACnB,OAAQnC,GACN,IAAK,QACH,OAAO4gC,GAAKe,GAAGf,GAAI9gC,EAAGE,EAAGgC,EAAGG,IAAI,EAElC,IAAK,YACH,OAAO0+B,GAAKc,GAAGd,GAAI/gC,EAAGE,EAAGgC,EAAGG,IAAI,EAElC,IAAK,YACH,OAAO2+B,GAAKa,GAAGb,GAAIhhC,EAAGE,EAAGgC,EAAGG,IAAI,EAElC,IAAK,cACH,IAAIC,EAAID,EAAEu/B,UAEV,OADAX,GAAG1a,IAAIjkB,EAAGu/B,GAAGZ,GAAGpyB,IAAIvM,IAAM,KAAMtC,EAAGE,EAAGgC,EAAGG,KAClC,EAET,IAAK,oBACH,OAAOC,EAAID,EAAEu/B,UAAWV,GAAG3a,IAAIjkB,EAAGu/B,GAAGX,GAAGryB,IAAIvM,IAAM,KAAMtC,EAAGE,EAAGgC,EAAGG,KAAK,EAG1E,OAAO,EA+qB2E2rC,CAAG3rC,EAAGrC,EAAGE,EAAGgC,KAAOy/B,GAAG3hC,EAAGkC,GAAI6rC,GAAG/tC,EAAGE,EAAGgC,EAAG,QAI7H,SAASmgC,GAAGriC,EAAGE,EAAGgC,GAChB,IAAIG,EAAIsgC,GAAGzgC,GAGX,GAAI,QAFJG,EAAI2/B,GAAG3/B,IAES,CACd,IAAIC,EAAIy9B,GAAG19B,GACX,GAAI,OAASC,EAAGD,EAAI,SAAU,CAC5B,IAAIipB,EAAIhpB,EAAEsZ,IAEV,GAAI,KAAO0P,EAAG,CAEZ,GAAI,QADJjpB,EAAI69B,GAAG59B,IACS,OAAOD,EACvBA,EAAI,UACC,GAAI,IAAMipB,EAAG,CAClB,GAAIhpB,EAAE+1B,UAAU6J,QAAS,OAAO,IAAM5/B,EAAEsZ,IAAMtZ,EAAE+1B,UAAU8J,cAAgB,KAC1E9/B,EAAI,UACCC,IAAMD,IAAMA,EAAI,OAK3B,OADA0rC,GAAG/tC,EAAGE,EAAGgC,EAAGG,GACL,KAGT,SAAS4rC,GAAGjuC,GACV,IAAK85B,EAAI,OAAO,EAEhB,IAAI55B,GADJF,EAAI,KAAOA,KACE2I,SAEb,OADAzI,KAAMA,EAAIyI,SAASC,cAAc,QAAU+mB,aAAa3vB,EAAG,WAAYE,EAAI,mBAAsBA,EAAEF,IAC5FE,EAGT,IAAIguC,GAAK,IAAK,mBAAsBC,QAAUA,QAAUxT,KAExD,SAASyT,GAAGpuC,GACV,IAAIE,EAAIguC,GAAGr/B,IAAI7O,GAEf,YADA,IAAWE,IAAMA,EAAI,IAAImuC,IAAOH,GAAG3nB,IAAIvmB,EAAGE,IACnCA,EAGT,SAASouC,GAAGtuC,EAAGE,EAAGgC,GAChB,IAAKA,EAAEqsC,IAAIvuC,GAAI,CACb,OAAQA,GACN,IAAK,SACH0tC,GAAGxtC,EAAG,UAAU,GAChB,MAEF,IAAK,QACL,IAAK,OACHwtC,GAAGxtC,EAAG,SAAS,GACfwtC,GAAGxtC,EAAG,QAAQ,GACdgC,EAAEssC,IAAI,QACNtsC,EAAEssC,IAAI,SACN,MAEF,IAAK,SACL,IAAK,QACHP,GAAGjuC,IAAM0tC,GAAGxtC,EAAGF,GAAG,GAClB,MAEF,IAAK,UACL,IAAK,SACL,IAAK,QACH,MAEF,SACG,IAAM8/B,GAAGp1B,QAAQ1K,IAAMuB,GAAEvB,EAAGE,GAGjCgC,EAAEssC,IAAIxuC,IAIV,IAAIyuC,GAAK,CACPC,yBAAyB,EACzBC,mBAAmB,EACnBC,kBAAkB,EAClBC,kBAAkB,EAClBC,SAAS,EACTC,cAAc,EACdC,iBAAiB,EACjBC,aAAa,EACbC,SAAS,EACT52B,MAAM,EACN62B,UAAU,EACVC,cAAc,EACdC,YAAY,EACZC,cAAc,EACdC,WAAW,EACXC,UAAU,EACVC,SAAS,EACTC,YAAY,EACZC,aAAa,EACbC,cAAc,EACdC,YAAY,EACZC,eAAe,EACfC,gBAAgB,EAChBC,iBAAiB,EACjB/9B,YAAY,EACZg+B,WAAW,EACX/9B,YAAY,EACZqG,SAAS,EACT23B,OAAO,EACPC,SAAS,EACTC,SAAS,EACTC,QAAQ,EACRt8B,QAAQ,EACRu8B,MAAM,EACNC,aAAa,EACbC,cAAc,EACdC,aAAa,EACbC,iBAAiB,EACjBC,kBAAkB,EAClBC,kBAAkB,EAClBC,eAAe,EACfC,aAAa,GAEXC,GAAK,CAAC,SAAU,KAAM,MAAO,KAQjC,SAASC,GAAGhxC,EAAGE,EAAGgC,GAChB,OAAO,MAAQhC,GAAK,kBAAqBA,GAAK,KAAOA,EAAI,GAAKgC,GAAK,iBAAoBhC,GAAK,IAAMA,GAAKuuC,GAAGtzB,eAAenb,IAAMyuC,GAAGzuC,IAAM,GAAKE,GAAG+wC,OAAS/wC,EAAI,KAG/J,SAASgxC,GAAGlxC,EAAGE,GAGb,IAAK,IAAIgC,KAFTlC,EAAIA,EAAEsnB,MAEQpnB,EACZ,GAAIA,EAAEib,eAAejZ,GAAI,CACvB,IAAIG,EAAI,IAAMH,EAAEwI,QAAQ,MACpBpI,EAAI0uC,GAAG9uC,EAAGhC,EAAEgC,GAAIG,GACpB,UAAYH,IAAMA,EAAI,YACtBG,EAAIrC,EAAEmxC,YAAYjvC,EAAGI,GAAKtC,EAAEkC,GAAKI,GAnBvC/C,OAAO2O,KAAKugC,IAAItgC,SAAQ,SAAUnO,GAChC+wC,GAAG5iC,SAAQ,SAAUjO,GACnBA,EAAIA,EAAIF,EAAEoxC,OAAO,GAAG7V,cAAgBv7B,EAAEqxC,UAAU,GAChD5C,GAAGvuC,GAAKuuC,GAAGzuC,SAqBf,IAAIsxC,GAAK1uC,EAAE,CACT2uC,UAAU,GACT,CACDC,MAAM,EACN/qB,MAAM,EACNgrB,IAAI,EACJC,KAAK,EACLC,OAAO,EACPC,IAAI,EACJC,KAAK,EACLC,OAAO,EACPC,QAAQ,EACR/qB,MAAM,EACNC,MAAM,EACN+qB,OAAO,EACP31B,QAAQ,EACR41B,OAAO,EACPC,KAAK,IAGP,SAASC,GAAGnyC,EAAGE,GACb,GAAIA,EAAG,CACL,GAAIoxC,GAAGtxC,KAAO,MAAQE,EAAEiG,UAAY,MAAQjG,EAAE0xB,yBAA0B,MAAM3oB,MAAM7I,EAAE,IAAKJ,EAAG,KAE9F,GAAI,MAAQE,EAAE0xB,wBAAyB,CACrC,GAAI,MAAQ1xB,EAAEiG,SAAU,MAAM8C,MAAM7I,EAAE,KACtC,KAAM,iBAAoBF,EAAE0xB,yBAA2B,WAAY1xB,EAAE0xB,yBAA0B,MAAM3oB,MAAM7I,EAAE,KAG/G,GAAI,MAAQF,EAAEonB,OAAS,iBAAoBpnB,EAAEonB,MAAO,MAAMre,MAAM7I,EAAE,GAAI,MAI1E,SAASgyC,GAAGpyC,EAAGE,GACb,IAAK,IAAMF,EAAE0K,QAAQ,KAAM,MAAO,iBAAoBxK,EAAEmyC,GAExD,OAAQryC,GACN,IAAK,iBACL,IAAK,gBACL,IAAK,YACL,IAAK,gBACL,IAAK,gBACL,IAAK,mBACL,IAAK,iBACL,IAAK,gBACH,OAAO,EAET,QACE,OAAO,GAIb,SAASsyC,GAAGtyC,EAAGE,GAEb,IAAIgC,EAAIksC,GADRpuC,EAAI,IAAMA,EAAE6+B,UAAY,KAAO7+B,EAAE6+B,SAAW7+B,EAAIA,EAAEo9B,eAElDl9B,EAAIq2B,EAAGr2B,GAEP,IAAK,IAAImC,EAAI,EAAGA,EAAInC,EAAEiC,OAAQE,IAC5BisC,GAAGpuC,EAAEmC,GAAIrC,EAAGkC,GAIhB,SAASqwC,MAET,SAASC,GAAGxyC,GAEV,QAAI,KADJA,EAAIA,IAAM,oBAAuB2I,SAAWA,cAAW,IACzB,OAAO,KAErC,IACE,OAAO3I,EAAEq9B,eAAiBr9B,EAAEgN,KAC5B,MAAO9M,IACP,OAAOF,EAAEgN,MAIb,SAASylC,GAAGzyC,GACV,KAAOA,GAAKA,EAAE0+B,YACZ1+B,EAAIA,EAAE0+B,WAGR,OAAO1+B,EAGT,SAAS0yC,GAAG1yC,EAAGE,GACb,IAGSmC,EAHLH,EAAIuwC,GAAGzyC,GAGX,IAFAA,EAAI,EAEQkC,GAAI,CACd,GAAI,IAAMA,EAAE28B,SAAU,CAEpB,GADAx8B,EAAIrC,EAAIkC,EAAE67B,YAAY57B,OAClBnC,GAAKE,GAAKmC,GAAKnC,EAAG,MAAO,CAC3B0mB,KAAM1kB,EACNywC,OAAQzyC,EAAIF,GAEdA,EAAIqC,EAGNrC,EAAG,CACD,KAAOkC,GAAI,CACT,GAAIA,EAAE0wC,YAAa,CACjB1wC,EAAIA,EAAE0wC,YACN,MAAM5yC,EAGRkC,EAAIA,EAAE2uB,WAGR3uB,OAAI,EAGNA,EAAIuwC,GAAGvwC,IAQX,SAAS2wC,KACP,IAAK,IAAI7yC,EAAIL,OAAQO,EAAIsyC,KAAMtyC,aAAaF,EAAE8yC,mBAAoB,CAChE,IACE,IAAI5wC,EAAI,iBAAoBhC,EAAE6yC,cAAc1J,SAASxwB,KACrD,MAAOxW,GACPH,GAAI,EAGN,IAAIA,EAA4B,MAChChC,EAAIsyC,IADGxyC,EAAIE,EAAE6yC,eACJpqC,UAGX,OAAOzI,EAGT,SAAS8yC,GAAGhzC,GACV,IAAIE,EAAIF,GAAKA,EAAE+7B,UAAY/7B,EAAE+7B,SAASnb,cACtC,OAAO1gB,IAAM,UAAYA,IAAM,SAAWF,EAAEkG,MAAQ,WAAalG,EAAEkG,MAAQ,QAAUlG,EAAEkG,MAAQ,QAAUlG,EAAEkG,MAAQ,aAAelG,EAAEkG,OAAS,aAAehG,GAAK,SAAWF,EAAEizC,iBAGhL,IAIIC,GAAK,KACLC,GAAK,KAET,SAASC,GAAGpzC,EAAGE,GACb,OAAQF,GACN,IAAK,SACL,IAAK,QACL,IAAK,SACL,IAAK,WACH,QAASE,EAAEmzC,UAGf,OAAO,EAGT,SAASC,GAAGtzC,EAAGE,GACb,MAAO,aAAeF,GAAK,WAAaA,GAAK,aAAeA,GAAK,iBAAoBE,EAAEiG,UAAY,iBAAoBjG,EAAEiG,UAAY,iBAAoBjG,EAAE0xB,yBAA2B,OAAS1xB,EAAE0xB,yBAA2B,MAAQ1xB,EAAE0xB,wBAAwBC,OAGhQ,IAAI0hB,GAAK,mBAAsBpzC,WAAaA,gBAAa,EACrDqzC,GAAK,mBAAsBjzC,aAAeA,kBAAe,EAE7D,SAASkzC,GAAGzzC,GACV,KAAO,MAAQA,EAAGA,EAAIA,EAAE4yC,YAAa,CACnC,IAAI1yC,EAAIF,EAAE6+B,SACV,GAAI,IAAM3+B,GAAK,IAAMA,EAAG,MAG1B,OAAOF,EAGT,SAAS0zC,GAAG1zC,GACVA,EAAIA,EAAE2zC,gBAEN,IAAK,IAAIzzC,EAAI,EAAGF,GAAI,CAClB,GAAI,IAAMA,EAAE6+B,SAAU,CACpB,IAAI38B,EAAIlC,EAAE4zC,KAEV,GA1CG,MA0CC1xC,GAvCD,OAuCaA,GAxCb,OAwCyBA,EAAU,CACpC,GAAI,IAAMhC,EAAG,OAAOF,EACpBE,QA3CC,OA4CIgC,GAAYhC,IAGrBF,EAAIA,EAAE2zC,gBAGR,OAAO,KAGT,IAAIE,GAAKpyC,KAAKqyC,SAAS/yB,SAAS,IAAI1L,MAAM,GACtC0+B,GAAK,2BAA6BF,GAClCG,GAAK,wBAA0BH,GAC/BI,GAAK,qBAAuBJ,GAEhC,SAAS7R,GAAGhiC,GACV,IAAIE,EAAIF,EAAE+zC,IACV,GAAI7zC,EAAG,OAAOA,EAEd,IAAK,IAAIgC,EAAIlC,EAAE6wB,WAAY3uB,GAAI,CAC7B,GAAIhC,EAAIgC,EAAE+xC,KAAO/xC,EAAE6xC,IAAK,CAEtB,GADA7xC,EAAIhC,EAAE8/B,UACF,OAAS9/B,EAAEikB,OAAS,OAASjiB,GAAK,OAASA,EAAEiiB,MAAO,IAAKnkB,EAAI0zC,GAAG1zC,GAAI,OAASA,GAAI,CACnF,GAAIkC,EAAIlC,EAAE+zC,IAAK,OAAO7xC,EACtBlC,EAAI0zC,GAAG1zC,GAET,OAAOE,EAITgC,GADAlC,EAAIkC,GACE2uB,WAGR,OAAO,KAGT,SAASiR,GAAG9hC,GAEV,QADAA,EAAIA,EAAE+zC,KAAO/zC,EAAEi0C,MACF,IAAMj0C,EAAE4b,KAAO,IAAM5b,EAAE4b,KAAO,KAAO5b,EAAE4b,KAAO,IAAM5b,EAAE4b,IAAM,KAAO5b,EAGlF,SAASk0C,GAAGl0C,GACV,GAAI,IAAMA,EAAE4b,KAAO,IAAM5b,EAAE4b,IAAK,OAAO5b,EAAEq4B,UACzC,MAAMpvB,MAAM7I,EAAE,KAGhB,SAAS+zC,GAAGn0C,GACV,OAAOA,EAAEg0C,KAAO,KAGlB,IAAII,GAAK,KACLC,GAAK,KACLC,GAAK,KAET,SAASC,KACP,GAAID,GAAI,OAAOA,GACf,IAAIt0C,EAGAqC,EAFAnC,EAAIm0C,GACJnyC,EAAIhC,EAAEiC,OAENG,EAAI,UAAW8xC,GAAKA,GAAG10C,MAAQ00C,GAAGrW,YAClCzS,EAAIhpB,EAAEH,OAEV,IAAKnC,EAAI,EAAGA,EAAIkC,GAAKhC,EAAEF,KAAOsC,EAAEtC,GAAIA,KAIpC,IAAIb,EAAI+C,EAAIlC,EAEZ,IAAKqC,EAAI,EAAGA,GAAKlD,GAAKe,EAAEgC,EAAIG,KAAOC,EAAEgpB,EAAIjpB,GAAIA,KAI7C,OAAOiyC,GAAKhyC,EAAE+S,MAAMrV,EAAG,EAAIqC,EAAI,EAAIA,OAAI,GAGzC,IAAImyC,GAAKlzC,GAAEqjC,OAAO,CAChBiP,KAAM,OAEJa,GAAKnzC,GAAEqjC,OAAO,CAChBiP,KAAM,OAEJc,GAAK,CAAC,EAAG,GAAI,GAAI,IACjBC,GAAK7a,GAAM,qBAAsBn6B,OACjCi1C,GAAK,KACT9a,GAAM,iBAAkBnxB,WAAaisC,GAAKjsC,SAASksC,cACnD,IAAIC,GAAKhb,GAAM,cAAen6B,SAAWi1C,GACrCG,GAAKjb,KAAQ6a,IAAMC,IAAM,EAAIA,IAAM,IAAMA,IACzCI,GAAKz0B,OAAO6oB,aAAa,IACzB6L,GAAK,CACPC,YAAa,CACX/e,wBAAyB,CACvB0W,QAAS,gBACTC,SAAU,wBAEZtW,aAAc,CAAC,iBAAkB,WAAY,YAAa,UAE5D2e,eAAgB,CACdhf,wBAAyB,CACvB0W,QAAS,mBACTC,SAAU,2BAEZtW,aAAc,uDAAuDxnB,MAAM,MAE7EomC,iBAAkB,CAChBjf,wBAAyB,CACvB0W,QAAS,qBACTC,SAAU,6BAEZtW,aAAc,yDAAyDxnB,MAAM,MAE/EqmC,kBAAmB,CACjBlf,wBAAyB,CACvB0W,QAAS,sBACTC,SAAU,8BAEZtW,aAAc,0DAA0DxnB,MAAM,OAG9EsmC,IAAK,EAET,SAASC,GAAGv1C,EAAGE,GACb,OAAQF,GACN,IAAK,QACH,OAAQ,IAAM00C,GAAGhqC,QAAQxK,EAAEslC,SAE7B,IAAK,UACH,OAAO,MAAQtlC,EAAEslC,QAEnB,IAAK,WACL,IAAK,YACL,IAAK,OACH,OAAO,EAET,QACE,OAAO,GAIb,SAASgQ,GAAGx1C,GAEV,MAAO,iBADPA,EAAIA,EAAEolC,SAC0B,SAAUplC,EAAIA,EAAE4zC,KAAO,KAGzD,IAAI6B,IAAK,EA2CT,IAAIC,GAAK,CACPzf,WAAYgf,GACZjf,cAAe,SAAuBh2B,EAAGE,EAAGgC,EAAGG,GAC7C,IAAIC,EACJ,GAAIqyC,GAAIz0C,EAAG,CACT,OAAQF,GACN,IAAK,mBACH,IAAIsrB,EAAI2pB,GAAGG,iBACX,MAAMl1C,EAER,IAAK,iBACHorB,EAAI2pB,GAAGE,eACP,MAAMj1C,EAER,IAAK,oBACHorB,EAAI2pB,GAAGI,kBACP,MAAMn1C,EAGVorB,OAAI,OACCmqB,GAAKF,GAAGv1C,EAAGkC,KAAOopB,EAAI2pB,GAAGE,gBAAkB,YAAcn1C,GAAK,MAAQkC,EAAEsjC,UAAYla,EAAI2pB,GAAGG,kBAGlG,OAFA9pB,GAAKypB,IAAM,OAAS7yC,EAAEynC,SAAW8L,IAAMnqB,IAAM2pB,GAAGG,iBAAmB9pB,IAAM2pB,GAAGE,gBAAkBM,KAAOnzC,EAAIiyC,OAAiBF,GAAK,UAAbD,GAAK/xC,GAAwB+xC,GAAG10C,MAAQ00C,GAAGrW,YAAa0X,IAAK,IAAMnqB,EAAIkpB,GAAGvQ,UAAU3Y,EAAGprB,EAAGgC,EAAGG,GAAIC,EAAIgpB,EAAEsoB,KAAOtxC,EAAgB,QAAXA,EAAIkzC,GAAGtzC,MAAmBopB,EAAEsoB,KAAOtxC,GAAK+gC,GAAG/X,GAAIhpB,EAAIgpB,GAAKhpB,EAAI,MAChStC,EAAI80C,GA/DT,SAAY90C,EAAGE,GACb,OAAQF,GACN,IAAK,iBACH,OAAOw1C,GAAGt1C,GAEZ,IAAK,WACH,OAAI,KAAOA,EAAE0pC,MAAc,MAC3B0L,IAAK,EACEN,IAET,IAAK,YACH,OAAOh1C,EAAIE,EAAE0zC,QAAYoB,IAAMM,GAAK,KAAOt1C,EAE7C,QACE,OAAO,MAiDC21C,CAAG31C,EAAGkC,GA7CpB,SAAYlC,EAAGE,GACb,GAAIu1C,GAAI,MAAO,mBAAqBz1C,IAAM20C,IAAMY,GAAGv1C,EAAGE,IAAMF,EAAIu0C,KAAMD,GAAKD,GAAKD,GAAK,KAAMqB,IAAK,EAAIz1C,GAAK,KAEzG,OAAQA,GACN,IAAK,QACH,OAAO,KAET,IAAK,WACH,KAAME,EAAEopC,SAAWppC,EAAEspC,QAAUtpC,EAAEupC,UAAYvpC,EAAEopC,SAAWppC,EAAEspC,OAAQ,CAClE,GAAItpC,EAAQ,MAAK,EAAIA,EAAQ,KAAEiC,OAAQ,OAAOjC,EAAQ,KACtD,GAAIA,EAAE0pC,MAAO,OAAOrpB,OAAO6oB,aAAalpC,EAAE0pC,OAG5C,OAAO,KAET,IAAK,iBACH,OAAOmL,IAAM,OAAS70C,EAAEypC,OAAS,KAAOzpC,EAAE0zC,KAE5C,QACE,OAAO,MA0BYgC,CAAG51C,EAAGkC,MAAOhC,EAAIu0C,GAAGxQ,UAAUgR,GAAGC,YAAah1C,EAAGgC,EAAGG,IAAMuxC,KAAO5zC,EAAGqjC,GAAGnjC,IAAMA,EAAI,KAC/F,OAASoC,EAAIpC,EAAI,OAASA,EAAIoC,EAAI,CAACA,EAAGpC,KAG7C21C,GAAK,CACP9nC,OAAO,EACP+nC,MAAM,EACNC,UAAU,EACV,kBAAkB,EAClBC,OAAO,EACPC,OAAO,EACPltB,QAAQ,EACRmtB,UAAU,EACVC,OAAO,EACPC,QAAQ,EACRC,KAAK,EACLr/B,MAAM,EACNs/B,MAAM,EACNl8B,KAAK,EACLm8B,MAAM,GAGR,SAASC,GAAGx2C,GACV,IAAIE,EAAIF,GAAKA,EAAE+7B,UAAY/7B,EAAE+7B,SAASnb,cACtC,MAAO,UAAY1gB,IAAM21C,GAAG71C,EAAEkG,MAAQ,aAAehG,EAGvD,IAAIu2C,GAAK,CACPC,OAAQ,CACNvgB,wBAAyB,CACvB0W,QAAS,WACTC,SAAU,mBAEZtW,aAAc,8DAA8DxnB,MAAM,OAItF,SAAS2nC,GAAG32C,EAAGE,EAAGgC,GAKhB,OAJAlC,EAAIsB,GAAE2iC,UAAUwS,GAAGC,OAAQ12C,EAAGE,EAAGgC,IAC/BgE,KAAO,SACTqoB,GAAGrsB,GACHmhC,GAAGrjC,GACIA,EAGT,IAAI42C,GAAK,KACLC,GAAK,KAET,SAASC,GAAG92C,GACVg4B,EAAGh4B,GAGL,SAAS+2C,GAAG/2C,GAEV,GAAIs8B,GADI4X,GAAGl0C,IACA,OAAOA,EAGpB,SAASg3C,GAAGh3C,EAAGE,GACb,GAAI,WAAaF,EAAG,OAAOE,EAG7B,IAAI+2C,IAAK,EAGT,SAASC,KACPN,KAAOA,GAAGO,YAAY,mBAAoBC,IAAKP,GAAKD,GAAK,MAG3D,SAASQ,GAAGp3C,GACV,GAAI,UAAYA,EAAEm7B,cAAgB4b,GAAGF,IAAK,GAAI72C,EAAI22C,GAAGE,GAAI72C,EAAG2iC,GAAG3iC,IAAKw6B,GAAIxC,EAAGh4B,OAAQ,CACjFw6B,IAAK,EAEL,IACEJ,GAAG0c,GAAI92C,GACP,QACAw6B,IAAK,EAAIE,OAKf,SAAS2c,GAAGr3C,EAAGE,EAAGgC,GAChB,UAAYlC,GAAKk3C,KAAcL,GAAK30C,GAAb00C,GAAK12C,GAAco3C,YAAY,mBAAoBF,KAAO,SAAWp3C,GAAKk3C,KAGnG,SAASK,GAAGv3C,GACV,GAAI,oBAAsBA,GAAK,UAAYA,GAAK,YAAcA,EAAG,OAAO+2C,GAAGF,IAG7E,SAASW,GAAGx3C,EAAGE,GACb,GAAI,UAAYF,EAAG,OAAO+2C,GAAG72C,GAG/B,SAASu3C,GAAGz3C,EAAGE,GACb,GAAI,UAAYF,GAAK,WAAaA,EAAG,OAAO+2C,GAAG72C,GA/BjD45B,IAAOmd,GAAKhJ,GAAG,YAActlC,SAASksC,cAAgB,EAAIlsC,SAASksC,eAkCnE,IAmCI6C,GAnCAC,GAAK,CACP1hB,WAAYwgB,GACZmB,uBAAwBX,GACxBjhB,cAAe,SAAuBh2B,EAAGE,EAAGgC,EAAGG,GAC7C,IAAIC,EAAIpC,EAAIg0C,GAAGh0C,GAAKP,OAChB2rB,EAAIhpB,EAAEy5B,UAAYz5B,EAAEy5B,SAASnb,cACjC,GAAI,WAAa0K,GAAK,UAAYA,GAAK,SAAWhpB,EAAE4D,KAAM,IAAI/G,EAAI63C,QAAQ,GAAIR,GAAGl0C,GAC/E,GAAI20C,GAAI93C,EAAIs4C,OAAQ,CAClBt4C,EAAIo4C,GACJ,IAAIn4C,EAAIi4C,QAEJ/rB,EAAIhpB,EAAEy5B,WAAa,UAAYzQ,EAAE1K,gBAAkB,aAAete,EAAE4D,MAAQ,UAAY5D,EAAE4D,QAAU/G,EAAIq4C,IAChH,GAAIr4C,IAAMA,EAAIA,EAAEa,EAAGE,IAAK,OAAOy2C,GAAGx3C,EAAG+C,EAAGG,GACxCjD,GAAKA,EAAEY,EAAGsC,EAAGpC,GACb,SAAWF,IAAMA,EAAIsC,EAAEq6B,gBAAkB38B,EAAE+8B,YAAc,WAAaz6B,EAAE4D,MAAQg3B,GAAG56B,EAAG,SAAUA,EAAE5C,SAGlGm4C,GAAK,CACPC,WAAY,CACVzhB,iBAAkB,eAClBG,aAAc,CAAC,WAAY,cAE7BuhB,WAAY,CACV1hB,iBAAkB,eAClBG,aAAc,CAAC,WAAY,cAE7BwhB,aAAc,CACZ3hB,iBAAkB,iBAClBG,aAAc,CAAC,aAAc,gBAE/ByhB,aAAc,CACZ5hB,iBAAkB,iBAClBG,aAAc,CAAC,aAAc,iBAI7B0hB,GAAK,CACPjiB,WAAY4hB,GACZ7hB,cAAe,SAAuBh2B,EAAGE,EAAGgC,EAAGG,EAAGC,GAChD,IAAIgpB,EAAI,cAAgBtrB,GAAK,gBAAkBA,EAC3Cb,EAAI,aAAea,GAAK,eAAiBA,EAC7C,GAAIsrB,GAAK,IAAW,GAAJhpB,KAAYJ,EAAEojC,eAAiBpjC,EAAEsoC,eAAiBrrC,IAAMmsB,EAAG,OAAO,KAOlF,GANAhpB,EAAID,EAAE1C,SAAW0C,EAAIA,GAAKC,EAAID,EAAE+6B,eAAiB96B,EAAE61C,aAAe71C,EAAE81C,aAAez4C,OAE/ER,GACEA,EAAIe,EAA4D,QAAzDA,GAAKA,EAAIgC,EAAEojC,eAAiBpjC,EAAEuoC,WAAazI,GAAG9hC,GAAK,QAAgCA,KAAXorB,EAAIyU,GAAG7/B,KAAe,IAAMA,EAAE0b,KAAO,IAAM1b,EAAE0b,OAAM1b,EAAI,OACrIf,EAAI,KAEPA,IAAMe,EAAG,OAAO,KAEpB,GAAI,aAAeF,GAAK,cAAgBA,EACtC,IAAIZ,EAAI6qC,GACJ5qC,EAAIw4C,GAAGE,WACPz4C,EAAIu4C,GAAGC,WACPn1C,EAAI,YACC,eAAiB3C,GAAK,gBAAkBA,IAAGZ,EAAIwrC,GAAIvrC,EAAIw4C,GAAGI,aAAc34C,EAAIu4C,GAAGG,aAAcr1C,EAAI,WAc5G,GAZA3C,EAAI,MAAQb,EAAImD,EAAI4xC,GAAG/0C,GACvBmD,EAAI,MAAQpC,EAAIoC,EAAI4xC,GAAGh0C,IACvBb,EAAID,EAAE6kC,UAAU5kC,EAAGF,EAAG+C,EAAGG,IACvB6D,KAAOvD,EAAI,QACbtD,EAAE0Z,OAAS/Y,EACXX,EAAEimC,cAAgBhjC,GAClBD,EAAIjD,EAAE6kC,UAAU3kC,EAAGY,EAAGgC,EAAGG,IACvB6D,KAAOvD,EAAI,QACbN,EAAE0W,OAASzW,EACXD,EAAEijC,cAAgBtlC,EAElB2C,EAAIzC,GADJd,EAAID,IAEKwD,EAAG3C,EAAG,CAKb,IAHAA,EAAI2C,EACJxD,EAAI,EAECe,EAJLZ,EAAIF,EAIQc,EAAGA,EAAI4iC,GAAG5iC,GACpBf,IAKF,IAFAe,EAAI,EAECoC,EAAItC,EAAGsC,EAAGA,EAAIwgC,GAAGxgC,GACpBpC,IAGF,KAAO,EAAIf,EAAIe,GACbZ,EAAIwjC,GAAGxjC,GAAIH,IAGb,KAAO,EAAIe,EAAIf,GACba,EAAI8iC,GAAG9iC,GAAIE,IAGb,KAAOf,KAAM,CACX,GAAIG,IAAMU,GAAKV,IAAMU,EAAEggC,UAAW,MAAMhgC,EACxCV,EAAIwjC,GAAGxjC,GACPU,EAAI8iC,GAAG9iC,GAGTV,EAAI,UACCA,EAAI,KAGX,IAFAU,EAAIV,EAECA,EAAI,GAAIF,GAAKA,IAAMY,IAElB,QADJb,EAAIC,EAAE4gC,YACY7gC,IAAMa,IACxBV,EAAE8C,KAAKhD,GACPA,EAAI0jC,GAAG1jC,GAGT,IAAKA,EAAI,GAAIuD,GAAKA,IAAM3C,IAElB,QADJb,EAAIwD,EAAEq9B,YACY7gC,IAAMa,IACxBZ,EAAEgD,KAAKO,GACPA,EAAImgC,GAAGngC,GAGT,IAAKA,EAAI,EAAGA,EAAIrD,EAAE6C,OAAQQ,IACxBwgC,GAAG7jC,EAAEqD,GAAI,UAAWtD,GAGtB,IAAKsD,EAAIvD,EAAE+C,OAAQ,EAAIQ,KACrBwgC,GAAG/jC,EAAEuD,GAAI,WAAYN,GAGvB,OAAIH,IAAMw1C,IAAWA,GAAK,KAAM,CAACr4C,KACjCq4C,GAAKx1C,EACE,CAAC7C,EAAGgD,MAQf,IAAIg2C,GAAK,mBAAsB94C,OAAO8yC,GAAK9yC,OAAO8yC,GAJlD,SAAYryC,EAAGE,GACb,OAAOF,IAAME,IAAM,IAAMF,GAAK,EAAIA,GAAM,EAAIE,IAAMF,GAAMA,GAAKE,GAAMA,GAIjEo4C,GAAK/4C,OAAOqK,UAAUuR,eAE1B,SAASo9B,GAAGv4C,EAAGE,GACb,GAAIm4C,GAAGr4C,EAAGE,GAAI,OAAO,EACrB,GAAI,iBAAoBF,GAAK,OAASA,GAAK,iBAAoBE,GAAK,OAASA,EAAG,OAAO,EACvF,IAAIgC,EAAI3C,OAAO2O,KAAKlO,GAChBqC,EAAI9C,OAAO2O,KAAKhO,GACpB,GAAIgC,EAAEC,SAAWE,EAAEF,OAAQ,OAAO,EAElC,IAAKE,EAAI,EAAGA,EAAIH,EAAEC,OAAQE,IACxB,IAAKi2C,GAAGv9B,KAAK7a,EAAGgC,EAAEG,MAAQg2C,GAAGr4C,EAAEkC,EAAEG,IAAKnC,EAAEgC,EAAEG,KAAM,OAAO,EAGzD,OAAO,EAGT,IAAIm2C,GAAK1e,GAAM,iBAAkBnxB,UAAY,IAAMA,SAASksC,aACxD4D,GAAK,CACPC,OAAQ,CACNviB,wBAAyB,CACvB0W,QAAS,WACTC,SAAU,mBAEZtW,aAAc,iFAAiFxnB,MAAM,OAGrG2pC,GAAK,KACLC,GAAK,KACLC,GAAK,KACLC,IAAK,EAET,SAASC,GAAG/4C,EAAGE,GACb,IAAIgC,EAAIhC,EAAEP,SAAWO,EAAIA,EAAEyI,SAAW,IAAMzI,EAAE2+B,SAAW3+B,EAAIA,EAAEk9B,cAC/D,OAAI0b,IAAM,MAAQH,IAAMA,KAAOnG,GAAGtwC,GAAW,MAE7C,mBADAA,EAAIy2C,KACqB3F,GAAG9wC,GAAKA,EAAI,CACnC82C,MAAO92C,EAAE+2C,eACTC,IAAKh3C,EAAEi3C,cAC2Ej3C,EAAI,CACtFk3C,YADGl3C,GAAKA,EAAEk7B,eAAiBl7B,EAAEk7B,cAAc+a,aAAex4C,QAAQ05C,gBACpDD,WACdE,aAAcp3C,EAAEo3C,aAChBC,UAAWr3C,EAAEq3C,UACbC,YAAat3C,EAAEs3C,aAEVX,IAAMN,GAAGM,GAAI32C,GAAK,MAAQ22C,GAAK32C,GAAGlC,EAAIsB,GAAE2iC,UAAUwU,GAAGC,OAAQE,GAAI54C,EAAGE,IAAMgG,KAAO,SAAUlG,EAAE+Y,OAAS4/B,GAAItV,GAAGrjC,GAAIA,IAG1H,IAAIy5C,GAAK,CACPxjB,WAAYwiB,GACZziB,cAAe,SAAuBh2B,EAAGE,EAAGgC,EAAGG,GAC7C,IACIipB,EADAhpB,EAAID,EAAE1C,SAAW0C,EAAIA,EAAEsG,SAAW,IAAMtG,EAAEw8B,SAAWx8B,EAAIA,EAAE+6B,cAG/D,KAAM9R,GAAKhpB,GAAI,CACbtC,EAAG,CACDsC,EAAI8rC,GAAG9rC,GACPgpB,EAAIiL,EAAGmjB,SAEP,IAAK,IAAIv6C,EAAI,EAAGA,EAAImsB,EAAEnpB,OAAQhD,IAC5B,IAAKmD,EAAEisC,IAAIjjB,EAAEnsB,IAAK,CAChBmD,GAAI,EACJ,MAAMtC,EAIVsC,GAAI,EAGNgpB,GAAKhpB,EAGP,GAAIgpB,EAAG,OAAO,KAGd,OAFAhpB,EAAIpC,EAAIg0C,GAAGh0C,GAAKP,OAERK,GACN,IAAK,SACCw2C,GAAGl0C,IAAM,SAAWA,EAAE2wC,mBAAiB0F,GAAKr2C,EAAGs2C,GAAK14C,EAAG24C,GAAK,MAChE,MAEF,IAAK,OACHA,GAAKD,GAAKD,GAAK,KACf,MAEF,IAAK,YACHG,IAAK,EACL,MAEF,IAAK,cACL,IAAK,UACL,IAAK,UACH,OAAOA,IAAK,EAAIC,GAAG72C,EAAGG,GAExB,IAAK,kBACH,GAAIm2C,GAAI,MAEV,IAAK,UACL,IAAK,QACH,OAAOO,GAAG72C,EAAGG,GAGjB,OAAO,OAGX41B,EAAGC,uBAAuB,0HAA0HlpB,MAAM,MAE1JioB,EAAKkd,GACLjd,EAFS4K,GAGT3K,EAAK+c,GACLjc,EAAGE,yBAAyB,CAC1BwhB,kBAAmB3M,GACnB4M,sBAAuB1B,GACvB2B,kBAAmBlC,GACnBmC,kBAAmBL,GACnBM,uBAAwBrE,KAE1B,IAAIrH,IACJ,IAAI2L,GAAK,GACLC,IAAM,EAEV,SAASz4C,GAAExB,GACT,EAAIi6C,KAAOj6C,EAAE6sB,QAAUmtB,GAAGC,IAAKD,GAAGC,IAAM,KAAMA,MAGhD,SAASr4C,GAAE5B,EAAGE,GACZ+5C,KACAD,GAAGC,IAAMj6C,EAAE6sB,QACX7sB,EAAE6sB,QAAU3sB,EAGd,IAAIg6C,GAAK,GACLj4C,GAAI,CACN4qB,QAASqtB,IAEP33C,GAAI,CACNsqB,SAAS,GAEPstB,GAAKD,GAET,SAASE,GAAGp6C,EAAGE,GACb,IAAIgC,EAAIlC,EAAEkG,KAAKm0C,aACf,IAAKn4C,EAAG,OAAOg4C,GACf,IAAI73C,EAAIrC,EAAEq4B,UACV,GAAIh2B,GAAKA,EAAEi4C,8CAAgDp6C,EAAG,OAAOmC,EAAEk4C,0CACvE,IACIjvB,EADAhpB,EAAI,GAGR,IAAKgpB,KAAKppB,EACRI,EAAEgpB,GAAKprB,EAAEorB,GAIX,OADAjpB,KAAMrC,EAAIA,EAAEq4B,WAAaiiB,4CAA8Cp6C,EAAGF,EAAEu6C,0CAA4Cj4C,GACjHA,EAGT,SAASE,GAAExC,GAET,OAAO,OADPA,EAAIA,EAAEw6C,mBAIR,SAASC,GAAGz6C,GACVwB,GAAEe,IACFf,GAAES,IAGJ,SAASy4C,GAAG16C,GACVwB,GAAEe,IACFf,GAAES,IAGJ,SAAS04C,GAAG36C,EAAGE,EAAGgC,GAChB,GAAID,GAAE4qB,UAAYqtB,GAAI,MAAMjxC,MAAM7I,EAAE,MACpCwB,GAAEK,GAAG/B,GACL0B,GAAEW,GAAGL,GAGP,SAAS04C,GAAG56C,EAAGE,EAAGgC,GAChB,IAAIG,EAAIrC,EAAEq4B,UAEV,GADAr4B,EAAIE,EAAEs6C,kBACF,mBAAsBn4C,EAAEw4C,gBAAiB,OAAO34C,EAGpD,IAAK,IAAII,KAFTD,EAAIA,EAAEw4C,kBAGJ,KAAMv4C,KAAKtC,GAAI,MAAMiJ,MAAM7I,EAAE,IAAKo5B,EAAGt5B,IAAM,UAAWoC,IAGxD,OAAOM,EAAE,GAAIV,EAAG,GAAIG,GAGtB,SAASy4C,GAAG96C,GACV,IAAIE,EAAIF,EAAEq4B,UAKV,OAJAn4B,EAAIA,GAAKA,EAAE66C,2CAA6Cb,GACxDC,GAAKl4C,GAAE4qB,QACPjrB,GAAEK,GAAG/B,GACL0B,GAAEW,GAAGA,GAAEsqB,UACA,EAGT,SAASmuB,GAAGh7C,EAAGE,EAAGgC,GAChB,IAAIG,EAAIrC,EAAEq4B,UACV,IAAKh2B,EAAG,MAAM4G,MAAM7I,EAAE,MACtB8B,GAAKhC,EAAI06C,GAAG56C,EAAGE,EAAGi6C,IAAK93C,EAAE04C,0CAA4C76C,EAAGsB,GAAEe,IAAOf,GAAES,IAAOL,GAAEK,GAAG/B,IAASsB,GAAEe,IAC1GX,GAAEW,GAAGL,GAGP,IAAI+4C,GAAKn7C,EAAEyE,yBACP22C,GAAKp7C,EAAE2E,0BACP02C,GAAKr7C,EAAE8E,wBACPw2C,GAAKt7C,EAAEoF,qBACPm2C,GAAKv7C,EAAEqF,sBACPm2C,GAAKx7C,EAAEG,aACPs7C,GAAKz7C,EAAEmF,iCACPu2C,GAAK17C,EAAEoE,2BACPu3C,GAAK37C,EAAEqE,8BACPu3C,GAAK57C,EAAEsE,wBACPu3C,GAAK77C,EAAEwE,qBACPs3C,GAAK97C,EAAEuE,sBACPw3C,GAAK,GACLC,QAAK,IAAWT,GAAKA,GAAK,aAC1BU,GAAK,KACLC,GAAK,KACLC,IAAK,EACLjuC,GAAKstC,KACLY,GAAK,IAAMluC,GAAKstC,GAAK,WACvB,OAAOA,KAAOttC,IAGhB,SAASmuC,KACP,OAAQZ,MACN,KAAKC,GACH,OAAO,GAET,KAAKC,GACH,OAAO,GAET,KAAKC,GACH,OAAO,GAET,KAAKC,GACH,OAAO,GAET,KAAKC,GACH,OAAO,GAET,QACE,MAAM3yC,MAAM7I,EAAE,OAIpB,SAASg8C,GAAGp8C,GACV,OAAQA,GACN,KAAK,GACH,OAAOw7C,GAET,KAAK,GACH,OAAOC,GAET,KAAK,GACH,OAAOC,GAET,KAAK,GACH,OAAOC,GAET,KAAK,GACH,OAAOC,GAET,QACE,MAAM3yC,MAAM7I,EAAE,OAIpB,SAASi8C,GAAGr8C,EAAGE,GAEb,OADAF,EAAIo8C,GAAGp8C,GACAi7C,GAAGj7C,EAAGE,GAGf,SAASo8C,GAAGt8C,EAAGE,EAAGgC,GAEhB,OADAlC,EAAIo8C,GAAGp8C,GACAk7C,GAAGl7C,EAAGE,EAAGgC,GAGlB,SAASq6C,GAAGv8C,GAEV,OADA,OAAS+7C,IAAMA,GAAK,CAAC/7C,GAAIg8C,GAAKd,GAAGM,GAAIgB,KAAOT,GAAG35C,KAAKpC,GAC7C67C,GAGT,SAASY,KACP,GAAI,OAAST,GAAI,CACf,IAAIh8C,EAAIg8C,GACRA,GAAK,KACLb,GAAGn7C,GAGLw8C,KAGF,SAASA,KACP,IAAKP,IAAM,OAASF,GAAI,CACtBE,IAAK,EACL,IAAIj8C,EAAI,EAER,IACE,IAAIE,EAAI67C,GACRM,GAAG,IAAI,WACL,KAAOr8C,EAAIE,EAAEiC,OAAQnC,IAAK,CACxB,IAAIkC,EAAIhC,EAAEF,GAEV,GACEkC,EAAIA,GAAE,SACC,OAASA,OAGtB65C,GAAK,KACL,MAAO75C,GACP,MAAM,OAAS65C,KAAOA,GAAKA,GAAG1mC,MAAMrV,EAAI,IAAKk7C,GAAGM,GAAIiB,IAAKv6C,EACzD,QACA+5C,IAAK,IAKX,IAAIS,GAAK,EAET,SAASC,GAAG38C,EAAGE,EAAGgC,GAEhB,OAAO,YAAoD,IAApC,WAAalC,EAAIE,EAAI,KAD5CgC,GAAK,IACiD,IAAUA,EAGlE,SAAS06C,GAAG58C,EAAGE,GACb,GAAIF,GAAKA,EAAEwa,aAIT,IAAK,IAAItY,KAHThC,EAAI0C,EAAE,GAAI1C,GACVF,EAAIA,EAAEwa,kBAGJ,IAAWta,EAAEgC,KAAOhC,EAAEgC,GAAKlC,EAAEkC,IAIjC,OAAOhC,EAGT,IAAI28C,GAAK,CACPhwB,QAAS,MAEPiwB,GAAK,KACLC,GAAK,KACLC,GAAK,KAET,SAASC,KACPD,GAAKD,GAAKD,GAAK,KAGjB,SAASI,GAAGl9C,EAAGE,GACb,IAAIgC,EAAIlC,EAAEkG,KAAKiuB,SACfvyB,GAAEi7C,GAAI36C,EAAE8xB,eACR9xB,EAAE8xB,cAAgB9zB,EAGpB,SAASi9C,GAAGn9C,GACV,IAAIE,EAAI28C,GAAGhwB,QACXrrB,GAAEq7C,IACF78C,EAAEkG,KAAKiuB,SAASH,cAAgB9zB,EAGlC,SAASk9C,GAAGp9C,EAAGE,GACb,KAAO,OAASF,GAAI,CAClB,IAAIkC,EAAIlC,EAAEggC,UACV,GAAIhgC,EAAEq9C,oBAAsBn9C,EAAGF,EAAEq9C,oBAAsBn9C,EAAG,OAASgC,GAAKA,EAAEm7C,oBAAsBn9C,IAAMgC,EAAEm7C,oBAAsBn9C,OAAQ,MAAI,OAASgC,GAAKA,EAAEm7C,oBAAsBn9C,GAAkC,MAA/BgC,EAAEm7C,oBAAsBn9C,EAC3MF,EAAIA,EAAU,QAIlB,SAASs9C,GAAGt9C,EAAGE,GACb48C,GAAK98C,EACLg9C,GAAKD,GAAK,KAEV,QADA/8C,EAAIA,EAAEw2B,eACQ,OAASx2B,EAAEu9C,eAAiBv9C,EAAE4D,gBAAkB1D,IAAMs9C,IAAK,GAAKx9C,EAAEu9C,aAAe,MAGjG,SAASE,GAAGz9C,EAAGE,GACb,GAAI88C,KAAOh9C,IAAK,IAAOE,GAAK,IAAMA,EAQhC,GAPI,iBAAoBA,GAAK,aAAeA,IAAG88C,GAAKh9C,EAAGE,EAAI,YAC3DA,EAAI,CACFyH,QAAS3H,EACT09C,aAAcx9C,EACdwF,KAAM,MAGJ,OAASq3C,GAAI,CACf,GAAI,OAASD,GAAI,MAAM7zC,MAAM7I,EAAE,MAC/B28C,GAAK78C,EACL48C,GAAGtmB,aAAe,CAChB5yB,eAAgB,EAChB25C,aAAcr9C,EACdy9C,WAAY,WAETZ,GAAKA,GAAGr3C,KAAOxF,EAGxB,OAAOF,EAAEg0B,cAGX,IAAI4pB,IAAK,EAET,SAASC,GAAG79C,GACV,MAAO,CACL89C,UAAW99C,EACX+9C,YAAa,KACbC,WAAY,KACZC,oBAAqB,KACrBC,mBAAoB,KACpBC,YAAa,KACbC,WAAY,KACZC,oBAAqB,KACrBC,mBAAoB,MAIxB,SAASC,GAAGv+C,GACV,MAAO,CACL89C,UAAW99C,EAAE89C,UACbC,YAAa/9C,EAAE+9C,YACfC,WAAYh+C,EAAEg+C,WACdC,oBAAqB,KACrBC,mBAAoB,KACpBC,YAAa,KACbC,WAAY,KACZC,oBAAqB,KACrBC,mBAAoB,MAIxB,SAASE,GAAGx+C,EAAGE,GACb,MAAO,CACL0D,eAAgB5D,EAChBy+C,eAAgBv+C,EAChB0b,IAAK,EACL8iC,QAAS,KACTh7C,SAAU,KACVgC,KAAM,KACNi5C,WAAY,MAIhB,SAASC,GAAG5+C,EAAGE,GACb,OAASF,EAAEg+C,WAAah+C,EAAE+9C,YAAc/9C,EAAEg+C,WAAa99C,GAAKF,EAAEg+C,WAAWt4C,KAAOxF,EAAGF,EAAEg+C,WAAa99C,GAGpG,SAAS2+C,GAAG7+C,EAAGE,GACb,IAAIgC,EAAIlC,EAAEggC,UAEV,GAAI,OAAS99B,EAAG,CACd,IAAIG,EAAIrC,EAAE8+C,YACNx8C,EAAI,KACR,OAASD,IAAMA,EAAIrC,EAAE8+C,YAAcjB,GAAG79C,EAAEmgC,qBACnC99B,EAAIrC,EAAE8+C,YAAax8C,EAAIJ,EAAE48C,YAAa,OAASz8C,EAAI,OAASC,GAAKD,EAAIrC,EAAE8+C,YAAcjB,GAAG79C,EAAEmgC,eAAgB79B,EAAIJ,EAAE48C,YAAcjB,GAAG37C,EAAEi+B,gBAAkB99B,EAAIrC,EAAE8+C,YAAcP,GAAGj8C,GAAK,OAASA,IAAMA,EAAIJ,EAAE48C,YAAcP,GAAGl8C,IAE9N,OAASC,GAAKD,IAAMC,EAAIs8C,GAAGv8C,EAAGnC,GAAK,OAASmC,EAAE27C,YAAc,OAAS17C,EAAE07C,YAAcY,GAAGv8C,EAAGnC,GAAI0+C,GAAGt8C,EAAGpC,KAAO0+C,GAAGv8C,EAAGnC,GAAIoC,EAAE07C,WAAa99C,GAGvI,SAAS6+C,GAAG/+C,EAAGE,GACb,IAAIgC,EAAIlC,EAAE8+C,YAEV,QADA58C,EAAI,OAASA,EAAIlC,EAAE8+C,YAAcjB,GAAG79C,EAAEmgC,eAAiB6e,GAAGh/C,EAAGkC,IAClDg8C,mBAAqBh8C,EAAE+7C,oBAAsB/7C,EAAEg8C,mBAAqBh+C,GAAKgC,EAAEg8C,mBAAmBx4C,KAAOxF,EAAGgC,EAAEg8C,mBAAqBh+C,GAG5I,SAAS8+C,GAAGh/C,EAAGE,GACb,IAAIgC,EAAIlC,EAAEggC,UAEV,OADA,OAAS99B,GAAKhC,IAAMgC,EAAE48C,cAAgB5+C,EAAIF,EAAE8+C,YAAcP,GAAGr+C,IACtDA,EAGT,SAAS++C,GAAGj/C,EAAGE,EAAGgC,EAAGG,EAAGC,EAAGgpB,GACzB,OAAQppB,EAAE0Z,KACR,KAAK,EACH,MAAsB,mBAAf5b,EAAIkC,EAAEw8C,SAAmC1+C,EAAE+a,KAAKuQ,EAAGjpB,EAAGC,GAAKtC,EAEpE,KAAK,EACHA,EAAEigC,WAA2B,KAAfjgC,EAAEigC,UAAoB,GAEtC,KAAK,EAGH,GAAI,OADJ39B,EAAI,mBADJtC,EAAIkC,EAAEw8C,SACwB1+C,EAAE+a,KAAKuQ,EAAGjpB,EAAGC,GAAKtC,GAChB,MAChC,OAAO4C,EAAE,GAAIP,EAAGC,GAElB,KAAK,EACHs7C,IAAK,EAGT,OAAOv7C,EAGT,SAAS68C,GAAGl/C,EAAGE,EAAGgC,EAAGG,EAAGC,GACtBs7C,IAAK,EAGL,IAAK,IAAItyB,GAFTprB,EAAI8+C,GAAGh/C,EAAGE,IAEK49C,UAAW3+C,EAAI,KAAMC,EAAI,EAAGC,EAAIa,EAAE69C,YAAaz+C,EAAIgsB,EAAG,OAASjsB,GAAI,CAChF,IAAIsD,EAAItD,EAAEuE,eACVjB,EAAIL,GAAK,OAASnD,IAAMA,EAAIE,EAAGisB,EAAIhsB,GAAIF,EAAIuD,IAAMvD,EAAIuD,KAAOw8C,GAAGx8C,EAAGtD,EAAEo/C,gBAAiBn/C,EAAI2/C,GAAGj/C,EAAGE,EAAGb,EAAGC,EAAG4C,EAAGG,GAAI,OAAShD,EAAEqE,WAAa1D,EAAEigC,WAAa,GAAI5gC,EAAEs/C,WAAa,KAAM,OAASz+C,EAAEk+C,WAAal+C,EAAEi+C,YAAcj+C,EAAEk+C,WAAa/+C,GAAKa,EAAEk+C,WAAWO,WAAat/C,EAAGa,EAAEk+C,WAAa/+C,KACvRA,EAAIA,EAAEqG,KAKR,IAFA/C,EAAI,KAECtD,EAAIa,EAAE+9C,oBAAqB,OAAS5+C,GAAI,CAC3C,IAAI+B,EAAI/B,EAAEuE,eACVxC,EAAIkB,GAAK,OAASK,IAAMA,EAAItD,EAAG,OAASF,IAAMmsB,EAAIhsB,IAAKF,EAAIgC,IAAMhC,EAAIgC,KAAO9B,EAAI2/C,GAAGj/C,EAAGE,EAAGb,EAAGC,EAAG4C,EAAGG,GAAI,OAAShD,EAAEqE,WAAa1D,EAAEigC,WAAa,GAAI5gC,EAAEs/C,WAAa,KAAM,OAASz+C,EAAEo+C,mBAAqBp+C,EAAEm+C,oBAAsBn+C,EAAEo+C,mBAAqBj/C,GAAKa,EAAEo+C,mBAAmBK,WAAat/C,EAAGa,EAAEo+C,mBAAqBj/C,KACtTA,EAAIA,EAAEqG,KAGR,OAASvG,IAAMe,EAAE89C,WAAa,MAC9B,OAASr7C,EAAIzC,EAAEg+C,mBAAqB,KAAOl+C,EAAEigC,WAAa,GAC1D,OAAS9gC,GAAK,OAASwD,IAAM2oB,EAAIhsB,GACjCY,EAAE49C,UAAYxyB,EACdprB,EAAE69C,YAAc5+C,EAChBe,EAAE+9C,oBAAsBt7C,EACxBy8C,GAAGhgD,GACHY,EAAE4D,eAAiBxE,EACnBY,EAAEmgC,cAAgB7gC,EAGpB,SAAS+/C,GAAGr/C,EAAGE,EAAGgC,GAChB,OAAShC,EAAE+9C,sBAAwB,OAAS/9C,EAAE89C,aAAe99C,EAAE89C,WAAWt4C,KAAOxF,EAAE+9C,oBAAqB/9C,EAAE89C,WAAa99C,EAAEg+C,oBAAqBh+C,EAAE+9C,oBAAsB/9C,EAAEg+C,mBAAqB,MAC7LoB,GAAGp/C,EAAEi+C,YAAaj8C,GAClBhC,EAAEi+C,YAAcj+C,EAAEk+C,WAAa,KAC/BkB,GAAGp/C,EAAEm+C,oBAAqBn8C,GAC1BhC,EAAEm+C,oBAAsBn+C,EAAEo+C,mBAAqB,KAGjD,SAASgB,GAAGt/C,EAAGE,GACb,KAAO,OAASF,GAAI,CAClB,IAAIkC,EAAIlC,EAAE0D,SAEV,GAAI,OAASxB,EAAG,CACdlC,EAAE0D,SAAW,KACb,IAAIrB,EAAInC,EACR,GAAI,mBAAsBgC,EAAG,MAAM+G,MAAM7I,EAAE,IAAK8B,IAChDA,EAAE6Y,KAAK1Y,GAGTrC,EAAIA,EAAE2+C,YAIV,IAAIY,GAAKhnB,EAAG7C,wBACR8pB,IAAK,IAAIntB,EAAGxnB,WAAY8nB,KAE5B,SAAS8sB,GAAGz/C,EAAGE,EAAGgC,EAAGG,GAGnBH,EAAI,OADJA,EAAIA,EAAEG,EADNnC,EAAIF,EAAEmgC,gBAE2BjgC,EAAI0C,EAAE,GAAI1C,EAAGgC,GAC9ClC,EAAEmgC,cAAgBj+B,EAElB,QADAG,EAAIrC,EAAE8+C,cACQ,IAAM9+C,EAAE4D,iBAAmBvB,EAAEy7C,UAAY57C,GAGzD,IAAIw9C,GAAK,CACPntB,UAAW,SAAmBvyB,GAC5B,SAAQA,EAAIA,EAAE2/C,sBAAuB5f,GAAG//B,KAAOA,GAEjD0yB,gBAAiB,SAAyB1yB,EAAGE,EAAGgC,GAC9ClC,EAAIA,EAAE2/C,oBACN,IAAIt9C,EAAIu9C,KACJt9C,EAAIi9C,GAAG5pB,UAEXrzB,EAAIk8C,GADJn8C,EAAIw9C,GAAGx9C,EAAGrC,EAAGsC,GACHA,IACRo8C,QAAUx+C,EACZ,MAAWgC,IAAoBI,EAAEoB,SAAWxB,GAC5C28C,GAAG7+C,EAAGsC,GACNw9C,GAAG9/C,EAAGqC,IAERowB,oBAAqB,SAA6BzyB,EAAGE,EAAGgC,GACtDlC,EAAIA,EAAE2/C,oBACN,IAAIt9C,EAAIu9C,KACJt9C,EAAIi9C,GAAG5pB,UAEXrzB,EAAIk8C,GADJn8C,EAAIw9C,GAAGx9C,EAAGrC,EAAGsC,GACHA,IACRsZ,IAAM,EACRtZ,EAAEo8C,QAAUx+C,EACZ,MAAWgC,IAAoBI,EAAEoB,SAAWxB,GAC5C28C,GAAG7+C,EAAGsC,GACNw9C,GAAG9/C,EAAGqC,IAERmwB,mBAAoB,SAA4BxyB,EAAGE,GACjDF,EAAIA,EAAE2/C,oBACN,IAAIz9C,EAAI09C,KACJv9C,EAAIk9C,GAAG5pB,UAEXtzB,EAAIm8C,GADJt8C,EAAI29C,GAAG39C,EAAGlC,EAAGqC,GACHA,IACRuZ,IAAM,EACR,MAAW1b,IAAoBmC,EAAEqB,SAAWxD,GAC5C2+C,GAAG7+C,EAAGqC,GACNy9C,GAAG9/C,EAAGkC,KAIV,SAAS69C,GAAG//C,EAAGE,EAAGgC,EAAGG,EAAGC,EAAGgpB,EAAGnsB,GAE5B,MAAO,mBADPa,EAAIA,EAAEq4B,WACyBjuB,sBAAwBpK,EAAEoK,sBAAsB/H,EAAGipB,EAAGnsB,IAAKe,EAAE0J,YAAa1J,EAAE0J,UAAUopB,wBAAwBulB,GAAGr2C,EAAGG,KAAOk2C,GAAGj2C,EAAGgpB,IAGlK,SAAS00B,GAAGhgD,EAAGE,EAAGgC,GAChB,IAAIG,GAAI,EACJC,EAAI43C,GACJ5uB,EAAIprB,EAAE+/C,YAQV,MAPA,iBAAoB30B,GAAK,OAASA,EAAIA,EAAImyB,GAAGnyB,IAAMhpB,EAAIE,GAAEtC,GAAKi6C,GAAKl4C,GAAE4qB,QAA6BvB,GAAKjpB,EAAI,OAA7BA,EAAInC,EAAEm6C,eAAqDD,GAAGp6C,EAAGsC,GAAK43C,IACpJh6C,EAAI,IAAIA,EAAEgC,EAAGopB,GACbtrB,EAAEmgC,cAAgB,OAASjgC,EAAEiJ,YAAS,IAAWjJ,EAAEiJ,MAAQjJ,EAAEiJ,MAAQ,KACrEjJ,EAAE0yB,QAAU8sB,GACZ1/C,EAAEq4B,UAAYn4B,EACdA,EAAEy/C,oBAAsB3/C,EACxBqC,KAAMrC,EAAIA,EAAEq4B,WAAaiiB,4CAA8Ch4C,EAAGtC,EAAEu6C,0CAA4CjvB,GACjHprB,EAGT,SAASggD,GAAGlgD,EAAGE,EAAGgC,EAAGG,GACnBrC,EAAIE,EAAEiJ,MACN,mBAAsBjJ,EAAEigD,2BAA6BjgD,EAAEigD,0BAA0Bj+C,EAAGG,GACpF,mBAAsBnC,EAAEkgD,kCAAoClgD,EAAEkgD,iCAAiCl+C,EAAGG,GAClGnC,EAAEiJ,QAAUnJ,GAAK0/C,GAAGjtB,oBAAoBvyB,EAAGA,EAAEiJ,MAAO,MAGtD,SAASk3C,GAAGrgD,EAAGE,EAAGgC,EAAGG,GACnB,IAAIC,EAAItC,EAAEq4B,UACV/1B,EAAEmD,MAAQvD,EACVI,EAAE6G,MAAQnJ,EAAEmgC,cACZ79B,EAAEqwB,KAAO6sB,GACT,IAAIl0B,EAAIprB,EAAE+/C,YACV,iBAAoB30B,GAAK,OAASA,EAAIhpB,EAAEqF,QAAU81C,GAAGnyB,IAAMA,EAAI9oB,GAAEtC,GAAKi6C,GAAKl4C,GAAE4qB,QAASvqB,EAAEqF,QAAUyyC,GAAGp6C,EAAGsrB,IAExG,QADAA,EAAItrB,EAAE8+C,eACSI,GAAGl/C,EAAGsrB,EAAGppB,EAAGI,EAAGD,GAAIC,EAAE6G,MAAQnJ,EAAEmgC,eAE9C,mBADA7U,EAAIprB,EAAEogD,4BACsBb,GAAGz/C,EAAGE,EAAGorB,EAAGppB,GAAII,EAAE6G,MAAQnJ,EAAEmgC,eACxD,mBAAsBjgC,EAAEogD,0BAA4B,mBAAsBh+C,EAAEi+C,yBAA2B,mBAAsBj+C,EAAEk+C,2BAA6B,mBAAsBl+C,EAAEgI,qBAAuBpK,EAAIoC,EAAE6G,MAAO,mBAAsB7G,EAAEgI,oBAAsBhI,EAAEgI,qBAAsB,mBAAsBhI,EAAEk+C,2BAA6Bl+C,EAAEk+C,4BAA6BtgD,IAAMoC,EAAE6G,OAASu2C,GAAGjtB,oBAAoBnwB,EAAGA,EAAE6G,MAAO,MAA0B,QAAnBmiB,EAAItrB,EAAE8+C,eAA4BI,GAAGl/C,EAAGsrB,EAAGppB,EAAGI,EAAGD,GAAIC,EAAE6G,MAAQnJ,EAAEmgC,gBAC9e,mBAAsB79B,EAAEm+C,oBAAsBzgD,EAAEigC,WAAa,GAG/D,IAAIygB,GAAKhyC,MAAMC,QAEf,SAASgyC,GAAG3gD,EAAGE,EAAGgC,GAGhB,GAAI,QAFJlC,EAAIkC,EAAEwF,MAEY,mBAAsB1H,GAAK,iBAAoBA,EAAG,CAClE,GAAIkC,EAAEixB,OAAQ,CAGZ,GAFAjxB,EAAIA,EAAEixB,OAEC,CACL,GAAI,IAAMjxB,EAAE0Z,IAAK,MAAM3S,MAAM7I,EAAE,MAC/B,IAAIiC,EAAIH,EAAEm2B,UAGZ,IAAKh2B,EAAG,MAAM4G,MAAM7I,EAAE,IAAKJ,IAC3B,IAAIsC,EAAI,GAAKtC,EACb,OAAI,OAASE,GAAK,OAASA,EAAEwH,KAAO,mBAAsBxH,EAAEwH,KAAOxH,EAAEwH,IAAIk5C,aAAet+C,EAAUpC,EAAEwH,MAEpGxH,EAAI,SAAWF,GACb,IAAIE,EAAImC,EAAEswB,KACVzyB,IAAMs/C,KAAOt/C,EAAImC,EAAEswB,KAAO,IAC1B,OAAS3yB,SAAWE,EAAEoC,GAAKpC,EAAEoC,GAAKtC,IAGlC4gD,WAAat+C,EACRpC,GAGT,GAAI,iBAAoBF,EAAG,MAAMiJ,MAAM7I,EAAE,MACzC,IAAK8B,EAAEixB,OAAQ,MAAMlqB,MAAM7I,EAAE,IAAKJ,IAGpC,OAAOA,EAGT,SAAS6gD,GAAG7gD,EAAGE,GACb,GAAI,aAAeF,EAAEkG,KAAM,MAAM+C,MAAM7I,EAAE,GAAI,oBAAsBb,OAAOqK,UAAUmX,SAAShG,KAAK7a,GAAK,qBAAuBX,OAAO2O,KAAKhO,GAAGqL,KAAK,MAAQ,IAAMrL,EAAG,KAGrK,SAAS4gD,GAAG9gD,GACV,SAASE,EAAEA,EAAGgC,GACZ,GAAIlC,EAAG,CACL,IAAIqC,EAAInC,EAAEk+C,WACV,OAAS/7C,GAAKA,EAAEs8C,WAAaz8C,EAAGhC,EAAEk+C,WAAal8C,GAAKhC,EAAEi+C,YAAcj+C,EAAEk+C,WAAal8C,EACnFA,EAAEy8C,WAAa,KACfz8C,EAAE+9B,UAAY,GAIlB,SAAS/9B,EAAEA,EAAGG,GACZ,IAAKrC,EAAG,OAAO,KAEf,KAAO,OAASqC,GACdnC,EAAEgC,EAAGG,GAAIA,EAAIA,EAAEk+B,QAGjB,OAAO,KAGT,SAASl+B,EAAErC,EAAGE,GACZ,IAAKF,EAAI,IAAI26B,IAAO,OAASz6B,GAC3B,OAASA,EAAEyF,IAAM3F,EAAEumB,IAAIrmB,EAAEyF,IAAKzF,GAAKF,EAAEumB,IAAIrmB,EAAEuK,MAAOvK,GAAIA,EAAIA,EAAEqgC,QAG9D,OAAOvgC,EAGT,SAASsC,EAAEtC,EAAGE,EAAGgC,GAIf,OAHAlC,EAAI+gD,GAAG/gD,EAAGE,IACRuK,MAAQ,EACVzK,EAAEugC,QAAU,KACLvgC,EAGT,SAASsrB,EAAEprB,EAAGgC,EAAGG,GAEf,OADAnC,EAAEuK,MAAQpI,EACLrC,EAED,QADJqC,EAAInC,EAAE8/B,YACiB39B,EAAIA,EAAEoI,OAAWvI,GAAKhC,EAAE+/B,UAAY,EAAG/9B,GAAKG,GACnEnC,EAAE+/B,UAAY,EACP/9B,GAJQA,EAOjB,SAAS/C,EAAEe,GAET,OADAF,GAAK,OAASE,EAAE8/B,YAAc9/B,EAAE+/B,UAAY,GACrC//B,EAGT,SAASd,EAAEY,EAAGE,EAAGgC,EAAGG,GAClB,OAAI,OAASnC,GAAK,IAAMA,EAAE0b,MAAY1b,EAAI8gD,GAAG9+C,EAAGlC,EAAE4M,KAAMvK,IAAc,OAAIrC,EAAGE,KAC7EA,EAAIoC,EAAEpC,EAAGgC,IACC,OAAIlC,EACPE,GAGT,SAASb,EAAEW,EAAGE,EAAGgC,EAAGG,GAClB,OAAI,OAASnC,GAAKA,EAAE+gD,cAAgB/+C,EAAEgE,OAAa7D,EAAIC,EAAEpC,EAAGgC,EAAEuD,QAAaiC,IAAMi5C,GAAG3gD,EAAGE,EAAGgC,GAAIG,EAAU,OAAIrC,EAAGqC,KAC/GA,EAAI6+C,GAAGh/C,EAAEgE,KAAMhE,EAAEyD,IAAKzD,EAAEuD,MAAO,KAAMzF,EAAE4M,KAAMvK,IAC3CqF,IAAMi5C,GAAG3gD,EAAGE,EAAGgC,GACjBG,EAAU,OAAIrC,EACPqC,GAGT,SAAS/C,EAAEU,EAAGE,EAAGgC,EAAGG,GAClB,OAAI,OAASnC,GAAK,IAAMA,EAAE0b,KAAO1b,EAAEm4B,UAAU8J,gBAAkBjgC,EAAEigC,eAAiBjiC,EAAEm4B,UAAU8oB,iBAAmBj/C,EAAEi/C,iBAAuBjhD,EAAIkhD,GAAGl/C,EAAGlC,EAAE4M,KAAMvK,IAAc,OAAIrC,EAAGE,KACjLA,EAAIoC,EAAEpC,EAAGgC,EAAEiE,UAAY,KACb,OAAInG,EACPE,GAGT,SAASyC,EAAE3C,EAAGE,EAAGgC,EAAGG,EAAGipB,GACrB,OAAI,OAASprB,GAAK,IAAMA,EAAE0b,MAAY1b,EAAImhD,GAAGn/C,EAAGlC,EAAE4M,KAAMvK,EAAGipB,IAAc,OAAItrB,EAAGE,KAChFA,EAAIoC,EAAEpC,EAAGgC,IACC,OAAIlC,EACPE,GAGT,SAASkB,EAAEpB,EAAGE,EAAGgC,GACf,GAAI,iBAAoBhC,GAAK,iBAAoBA,EAAG,OAAOA,EAAI8gD,GAAG,GAAK9gD,EAAGF,EAAE4M,KAAM1K,IAAc,OAAIlC,EAAGE,EAEvG,GAAI,iBAAoBA,GAAK,OAASA,EAAG,CACvC,OAAQA,EAAE+G,UACR,KAAKwxB,EACH,OAAOv2B,EAAIg/C,GAAGhhD,EAAEgG,KAAMhG,EAAEyF,IAAKzF,EAAEuF,MAAO,KAAMzF,EAAE4M,KAAM1K,IAAMwF,IAAMi5C,GAAG3gD,EAAG,KAAME,GAAIgC,EAAU,OAAIlC,EAAGkC,EAEnG,KAAKw2B,EACH,OAAOx4B,EAAIkhD,GAAGlhD,EAAGF,EAAE4M,KAAM1K,IAAc,OAAIlC,EAAGE,EAGlD,GAAIwgD,GAAGxgD,IAAMq5B,EAAGr5B,GAAI,OAAOA,EAAImhD,GAAGnhD,EAAGF,EAAE4M,KAAM1K,EAAG,OAAiB,OAAIlC,EAAGE,EACxE2gD,GAAG7gD,EAAGE,GAGR,OAAO,KAGT,SAASU,EAAEZ,EAAGE,EAAGgC,EAAGG,GAClB,IAAIC,EAAI,OAASpC,EAAIA,EAAEyF,IAAM,KAC7B,GAAI,iBAAoBzD,GAAK,iBAAoBA,EAAG,OAAO,OAASI,EAAI,KAAOlD,EAAEY,EAAGE,EAAG,GAAKgC,EAAGG,GAE/F,GAAI,iBAAoBH,GAAK,OAASA,EAAG,CACvC,OAAQA,EAAE+E,UACR,KAAKwxB,EACH,OAAOv2B,EAAEyD,MAAQrD,EAAIJ,EAAEgE,OAASyyB,EAAKh2B,EAAE3C,EAAGE,EAAGgC,EAAEuD,MAAMU,SAAU9D,EAAGC,GAAKjD,EAAEW,EAAGE,EAAGgC,EAAGG,GAAK,KAEzF,KAAKq2B,EACH,OAAOx2B,EAAEyD,MAAQrD,EAAIhD,EAAEU,EAAGE,EAAGgC,EAAGG,GAAK,KAGzC,GAAIq+C,GAAGx+C,IAAMq3B,EAAGr3B,GAAI,OAAO,OAASI,EAAI,KAAOK,EAAE3C,EAAGE,EAAGgC,EAAGG,EAAG,MAC7Dw+C,GAAG7gD,EAAGkC,GAGR,OAAO,KAGT,SAASP,EAAE3B,EAAGE,EAAGgC,EAAGG,EAAGC,GACrB,GAAI,iBAAoBD,GAAK,iBAAoBA,EAAG,OAA6BjD,EAAEc,EAAxBF,EAAIA,EAAE6O,IAAI3M,IAAM,KAAc,GAAKG,EAAGC,GAEjG,GAAI,iBAAoBD,GAAK,OAASA,EAAG,CACvC,OAAQA,EAAE4E,UACR,KAAKwxB,EACH,OAAOz4B,EAAIA,EAAE6O,IAAI,OAASxM,EAAEsD,IAAMzD,EAAIG,EAAEsD,MAAQ,KAAMtD,EAAE6D,OAASyyB,EAAKh2B,EAAEzC,EAAGF,EAAGqC,EAAEoD,MAAMU,SAAU7D,EAAGD,EAAEsD,KAAOtG,EAAEa,EAAGF,EAAGqC,EAAGC,GAEzH,KAAKo2B,EACH,OAAsDp5B,EAAEY,EAAjDF,EAAIA,EAAE6O,IAAI,OAASxM,EAAEsD,IAAMzD,EAAIG,EAAEsD,MAAQ,KAActD,EAAGC,GAGrE,GAAIo+C,GAAGr+C,IAAMk3B,EAAGl3B,GAAI,OAA6BM,EAAEzC,EAAxBF,EAAIA,EAAE6O,IAAI3M,IAAM,KAAcG,EAAGC,EAAG,MAC/Du+C,GAAG3gD,EAAGmC,GAGR,OAAO,KAGT,SAASxB,EAAEyB,EAAGnD,EAAGC,EAAGC,GAClB,IAAK,IAAIC,EAAI,KAAMqD,EAAI,KAAMG,EAAI3D,EAAGwB,EAAIxB,EAAI,EAAG4B,EAAI,KAAM,OAAS+B,GAAKnC,EAAIvB,EAAE+C,OAAQxB,IAAK,CACxFmC,EAAE2H,MAAQ9J,GAAKI,EAAI+B,EAAGA,EAAI,MAAQ/B,EAAI+B,EAAEy9B,QACxC,IAAI1gC,EAAIe,EAAE0B,EAAGQ,EAAG1D,EAAEuB,GAAItB,GAEtB,GAAI,OAASQ,EAAG,CACd,OAASiD,IAAMA,EAAI/B,GACnB,MAGFf,GAAK8C,GAAK,OAASjD,EAAEmgC,WAAa9/B,EAAEoC,EAAGQ,GACvC3D,EAAImsB,EAAEzrB,EAAGV,EAAGwB,GACZ,OAASgC,EAAIrD,EAAIO,EAAI8C,EAAE49B,QAAU1gC,EACjC8C,EAAI9C,EACJiD,EAAI/B,EAGN,GAAIJ,IAAMvB,EAAE+C,OAAQ,OAAOD,EAAEI,EAAGQ,GAAIxD,EAEpC,GAAI,OAASwD,EAAG,CACd,KAAOnC,EAAIvB,EAAE+C,OAAQxB,IACA,QAAnBmC,EAAI1B,EAAEkB,EAAGlD,EAAEuB,GAAItB,MAAmBF,EAAImsB,EAAExoB,EAAG3D,EAAGwB,GAAI,OAASgC,EAAIrD,EAAIwD,EAAIH,EAAE49B,QAAUz9B,EAAGH,EAAIG,GAG5F,OAAOxD,EAGT,IAAKwD,EAAIT,EAAEC,EAAGQ,GAAInC,EAAIvB,EAAE+C,OAAQxB,IACL,QAAzBI,EAAIY,EAAEmB,EAAGR,EAAG3B,EAAGvB,EAAEuB,GAAItB,MAAmBW,GAAK,OAASe,EAAEi/B,WAAal9B,EAAU,OAAE,OAAS/B,EAAE4E,IAAMhF,EAAII,EAAE4E,KAAMxG,EAAImsB,EAAEvqB,EAAG5B,EAAGwB,GAAI,OAASgC,EAAIrD,EAAIyB,EAAI4B,EAAE49B,QAAUx/B,EAAG4B,EAAI5B,GAMxK,OAHAf,GAAK8C,EAAEqL,SAAQ,SAAUnO,GACvB,OAAOE,EAAEoC,EAAGtC,MAEPV,EAGT,SAASgiD,EAAGh/C,EAAGnD,EAAGC,EAAGC,GACnB,IAAIC,EAAIi6B,EAAGn6B,GACX,GAAI,mBAAsBE,EAAG,MAAM2J,MAAM7I,EAAE,MAE3C,GAAI,OADJhB,EAAIE,EAAEyb,KAAK3b,IACI,MAAM6J,MAAM7I,EAAE,MAE7B,IAAK,IAAIuC,EAAIrD,EAAI,KAAMwD,EAAI3D,EAAGwB,EAAIxB,EAAI,EAAG4B,EAAI,KAAMlB,EAAIT,EAAEsG,OAAQ,OAAS5C,IAAMjD,EAAEyzB,KAAM3yB,IAAKd,EAAIT,EAAEsG,OAAQ,CACzG5C,EAAE2H,MAAQ9J,GAAKI,EAAI+B,EAAGA,EAAI,MAAQ/B,EAAI+B,EAAEy9B,QACxC,IAAI1/B,EAAID,EAAE0B,EAAGQ,EAAGjD,EAAEH,MAAOL,GAEzB,GAAI,OAASwB,EAAG,CACd,OAASiC,IAAMA,EAAI/B,GACnB,MAGFf,GAAK8C,GAAK,OAASjC,EAAEm/B,WAAa9/B,EAAEoC,EAAGQ,GACvC3D,EAAImsB,EAAEzqB,EAAG1B,EAAGwB,GACZ,OAASgC,EAAIrD,EAAIuB,EAAI8B,EAAE49B,QAAU1/B,EACjC8B,EAAI9B,EACJiC,EAAI/B,EAGN,GAAIlB,EAAEyzB,KAAM,OAAOpxB,EAAEI,EAAGQ,GAAIxD,EAE5B,GAAI,OAASwD,EAAG,CACd,MAAQjD,EAAEyzB,KAAM3yB,IAAKd,EAAIT,EAAEsG,OACH,QAAtB7F,EAAIuB,EAAEkB,EAAGzC,EAAEH,MAAOL,MAAmBF,EAAImsB,EAAEzrB,EAAGV,EAAGwB,GAAI,OAASgC,EAAIrD,EAAIO,EAAI8C,EAAE49B,QAAU1gC,EAAG8C,EAAI9C,GAG/F,OAAOP,EAGT,IAAKwD,EAAIT,EAAEC,EAAGQ,IAAKjD,EAAEyzB,KAAM3yB,IAAKd,EAAIT,EAAEsG,OACR,QAA5B7F,EAAI8B,EAAEmB,EAAGR,EAAG3B,EAAGd,EAAEH,MAAOL,MAAmBW,GAAK,OAASH,EAAEmgC,WAAal9B,EAAU,OAAE,OAASjD,EAAE8F,IAAMhF,EAAId,EAAE8F,KAAMxG,EAAImsB,EAAEzrB,EAAGV,EAAGwB,GAAI,OAASgC,EAAIrD,EAAIO,EAAI8C,EAAE49B,QAAU1gC,EAAG8C,EAAI9C,GAM3K,OAHAG,GAAK8C,EAAEqL,SAAQ,SAAUnO,GACvB,OAAOE,EAAEoC,EAAGtC,MAEPV,EAGT,OAAO,SAAUU,EAAGqC,EAAGipB,EAAGlsB,GACxB,IAAIC,EAAI,iBAAoBisB,GAAK,OAASA,GAAKA,EAAEplB,OAASyyB,GAAM,OAASrN,EAAE3lB,IAC3EtG,IAAMisB,EAAIA,EAAE7lB,MAAMU,UAClB,IAAI7G,EAAI,iBAAoBgsB,GAAK,OAASA,EAC1C,GAAIhsB,EAAG,OAAQgsB,EAAErkB,UACf,KAAKwxB,EACHz4B,EAAG,CAGD,IAFAV,EAAIgsB,EAAE3lB,IAEDtG,EAAIgD,EAAG,OAAShD,GAAI,CACvB,GAAIA,EAAEsG,MAAQrG,EAAG,CACf,GAAI,IAAMD,EAAEuc,IAAM0P,EAAEplB,OAASyyB,EAAKt5B,EAAE4hD,cAAgB31B,EAAEplB,KAAM,CAC1DhE,EAAElC,EAAGX,EAAEkhC,UACPl+B,EAAIC,EAAEjD,EAAGisB,EAAEplB,OAASyyB,EAAKrN,EAAE7lB,MAAMU,SAAWmlB,EAAE7lB,QAC5CiC,IAAMi5C,GAAG3gD,EAAGX,EAAGisB,GACjBjpB,EAAU,OAAIrC,EACdA,EAAIqC,EACJ,MAAMrC,EAENkC,EAAElC,EAAGX,GACL,MAEGa,EAAEF,EAAGX,GACZA,EAAIA,EAAEkhC,QAGRjV,EAAEplB,OAASyyB,IAAMt2B,EAAIg/C,GAAG/1B,EAAE7lB,MAAMU,SAAUnG,EAAE4M,KAAMxN,EAAGksB,EAAE3lB,MAAgB,OAAI3F,EAAGA,EAAIqC,KAAMjD,EAAI8hD,GAAG51B,EAAEplB,KAAMolB,EAAE3lB,IAAK2lB,EAAE7lB,MAAO,KAAMzF,EAAE4M,KAAMxN,IAAMsI,IAAMi5C,GAAG3gD,EAAGqC,EAAGipB,GAAIlsB,EAAU,OAAIY,EAAGA,EAAIZ,GAGrL,OAAOD,EAAEa,GAEX,KAAK04B,EACH14B,EAAG,CACD,IAAKX,EAAIisB,EAAE3lB,IAAK,OAAStD,GAAI,CAC3B,GAAIA,EAAEsD,MAAQtG,EAAG,CACf,GAAI,IAAMgD,EAAEuZ,KAAOvZ,EAAEg2B,UAAU8J,gBAAkB7W,EAAE6W,eAAiB9/B,EAAEg2B,UAAU8oB,iBAAmB71B,EAAE61B,eAAgB,CACnHj/C,EAAElC,EAAGqC,EAAEk+B,UACPl+B,EAAIC,EAAED,EAAGipB,EAAEnlB,UAAY,KACb,OAAInG,EACdA,EAAIqC,EACJ,MAAMrC,EAENkC,EAAElC,EAAGqC,GACL,MAEGnC,EAAEF,EAAGqC,GACZA,EAAIA,EAAEk+B,SAGRl+B,EAAI++C,GAAG91B,EAAGtrB,EAAE4M,KAAMxN,IACR,OAAIY,EACdA,EAAIqC,EAGN,OAAOlD,EAAEa,GAEb,GAAI,iBAAoBsrB,GAAK,iBAAoBA,EAAG,OAAOA,EAAI,GAAKA,EAAG,OAASjpB,GAAK,IAAMA,EAAEuZ,KAAO1Z,EAAElC,EAAGqC,EAAEk+B,UAAUl+B,EAAIC,EAAED,EAAGipB,IAAiB,OAAItrB,EAAGA,EAAIqC,IAAMH,EAAElC,EAAGqC,IAAIA,EAAI2+C,GAAG11B,EAAGtrB,EAAE4M,KAAMxN,IAAc,OAAIY,EAAGA,EAAIqC,GAAIlD,EAAEa,GAC1N,GAAI0gD,GAAGp1B,GAAI,OAAOzqB,EAAEb,EAAGqC,EAAGipB,EAAGlsB,GAC7B,GAAIm6B,EAAGjO,GAAI,OAAOg2B,EAAGthD,EAAGqC,EAAGipB,EAAGlsB,GAE9B,GADAE,GAAKuhD,GAAG7gD,EAAGsrB,QACP,IAAuBA,IAAMjsB,EAAG,OAAQW,EAAE4b,KAC5C,KAAK,EACL,KAAK,EACH,MAAM5b,EAAIA,EAAEkG,KAAM+C,MAAM7I,EAAE,IAAKJ,EAAE8K,aAAe9K,EAAE+K,MAAQ,cAE9D,OAAO7I,EAAElC,EAAGqC,IAIhB,IAAIk/C,GAAKT,IAAG,GACRU,GAAKV,IAAG,GACRW,GAAK,GACLC,GAAK,CACP70B,QAAS40B,IAEPE,GAAK,CACP90B,QAAS40B,IAEPG,GAAK,CACP/0B,QAAS40B,IAGX,SAASI,GAAG7hD,GACV,GAAIA,IAAMyhD,GAAI,MAAMx4C,MAAM7I,EAAE,MAC5B,OAAOJ,EAGT,SAAS8hD,GAAG9hD,EAAGE,GACb0B,GAAEggD,GAAI1hD,GACN0B,GAAE+/C,GAAI3hD,GACN4B,GAAE8/C,GAAID,IACN,IAAIv/C,EAAIhC,EAAE2+B,SAEV,OAAQ38B,GACN,KAAK,EACL,KAAK,GACHhC,GAAKA,EAAIA,EAAE6hD,iBAAmB7hD,EAAEs+B,aAAeL,GAAG,KAAM,IACxD,MAEF,QAC6Ej+B,EAAIi+B,GAA/Cj+B,GAAhCgC,EAAI,IAAMA,EAAIhC,EAAE2wB,WAAa3wB,GAASs+B,cAAgB,KAAMt8B,EAAIA,EAAEsc,SAGtEhd,GAAEkgD,IACF9/C,GAAE8/C,GAAIxhD,GAGR,SAAS8hD,GAAGhiD,GACVwB,GAAEkgD,IACFlgD,GAAEmgD,IACFngD,GAAEogD,IAGJ,SAASK,GAAGjiD,GACV6hD,GAAGD,GAAG/0B,SACN,IAAI3sB,EAAI2hD,GAAGH,GAAG70B,SACV3qB,EAAIi8B,GAAGj+B,EAAGF,EAAEkG,MAChBhG,IAAMgC,IAAMN,GAAE+/C,GAAI3hD,GAAO4B,GAAE8/C,GAAIx/C,IAGjC,SAASggD,GAAGliD,GACV2hD,GAAG90B,UAAY7sB,IAAMwB,GAAEkgD,IAAQlgD,GAAEmgD,KAGnC,IAAIl/C,GAAI,CACNoqB,QAAS,GAGX,SAASs1B,GAAGniD,GACV,IAAK,IAAIE,EAAIF,EAAG,OAASE,GAAI,CAC3B,GAAI,KAAOA,EAAE0b,IAAK,CAChB,IAAI1Z,EAAIhC,EAAEigC,cACV,GAAI,OAASj+B,IAAwB,QAAlBA,EAAIA,EAAEk+B,aAj+CtB,OAi+CgDl+B,EAAE0xC,MAh+ClD,OAg+CiE1xC,EAAE0xC,MAAc,OAAO1zC,OACtF,GAAI,KAAOA,EAAE0b,UAAO,IAAW1b,EAAEkiD,cAAcC,aACpD,GAAI,IAAqB,GAAdniD,EAAE+/B,WAAiB,OAAO//B,OAChC,GAAI,OAASA,EAAEikB,MAAO,CAC3BjkB,EAAEikB,MAAc,OAAIjkB,EACpBA,EAAIA,EAAEikB,MACN,SAGF,GAAIjkB,IAAMF,EAAG,MAEb,KAAO,OAASE,EAAEqgC,SAAU,CAC1B,GAAI,OAASrgC,EAAU,QAAKA,EAAU,SAAMF,EAAG,OAAO,KACtDE,EAAIA,EAAU,OAGhBA,EAAEqgC,QAAgB,OAAIrgC,EAAU,OAChCA,EAAIA,EAAEqgC,QAGR,OAAO,KAGT,SAAS+hB,GAAGtiD,EAAGE,GACb,MAAO,CACLqiD,UAAWviD,EACXyF,MAAOvF,GAIX,IAAIsiD,GAAKjqB,EAAG9C,uBACRxyB,GAAIs1B,EAAG7C,wBACP+sB,GAAK,EACLC,GAAK,KACLx/C,GAAI,KACJy/C,GAAK,KACLC,GAAK,KACLz/C,GAAI,KACJ0/C,GAAK,KACLC,GAAK,EACLC,GAAK,KACLC,GAAK,EACLC,IAAK,EACLC,GAAK,KACLC,GAAK,EAET,SAAS//C,KACP,MAAM6F,MAAM7I,EAAE,MAGhB,SAASgjD,GAAGpjD,EAAGE,GACb,GAAI,OAASA,EAAG,OAAO,EAEvB,IAAK,IAAIgC,EAAI,EAAGA,EAAIhC,EAAEiC,QAAUD,EAAIlC,EAAEmC,OAAQD,IAC5C,IAAKm2C,GAAGr4C,EAAEkC,GAAIhC,EAAEgC,IAAK,OAAO,EAG9B,OAAO,EAGT,SAASmhD,GAAGrjD,EAAGE,EAAGgC,EAAGG,EAAGC,EAAGgpB,GAOzB,GANAm3B,GAAKn3B,EACLo3B,GAAKxiD,EACLyiD,GAAK,OAAS3iD,EAAIA,EAAEmgC,cAAgB,KACpCqiB,GAAG31B,QAAU,OAAS81B,GAAKW,GAAKC,GAChCrjD,EAAIgC,EAAEG,EAAGC,GAEL2gD,GAAI,CACN,GACEA,IAAK,EAAIE,IAAM,EAAGR,GAAK,OAAS3iD,EAAIA,EAAEmgC,cAAgB,KAAM0iB,GAAKD,GAAIG,GAAK5/C,GAAID,GAAI,KAAMs/C,GAAG31B,QAAU02B,GAAIrjD,EAAIgC,EAAEG,EAAGC,SAC3G2gD,IAETC,GAAK,KACLC,GAAK,EAeP,GAZAX,GAAG31B,QAAU22B,IACbxjD,EAAI0iD,IACFviB,cAAgByiB,GAClB5iD,EAAE4D,eAAiBk/C,GACnB9iD,EAAE8+C,YAAciE,GAChB/iD,EAAEigC,WAAa+iB,GACfhjD,EAAI,OAASkD,IAAK,OAASA,GAAEwC,KAC7B+8C,GAAK,EACLI,GAAK1/C,GAAIy/C,GAAKD,GAAKz/C,GAAIw/C,GAAK,KAC5BI,GAAK,EACLC,GAAK,KACLC,GAAK,EACDhjD,EAAG,MAAMiJ,MAAM7I,EAAE,MACrB,OAAOF,EAGT,SAASujD,KACPjB,GAAG31B,QAAU22B,GACbf,GAAK,EACLI,GAAK1/C,GAAIy/C,GAAKD,GAAKz/C,GAAIw/C,GAAK,KAC5BI,GAAK,EACLC,GAAK,KACLC,GAAK,EACLC,IAAK,EACLC,GAAK,KACLC,GAAK,EAGP,SAASO,KACP,IAAI1jD,EAAI,CACNmgC,cAAe,KACf2d,UAAW,KACX6F,MAAO,KACPC,WAAY,KACZl+C,KAAM,MAGR,OADA,OAASvC,GAAIy/C,GAAKz/C,GAAInD,EAAImD,GAAIA,GAAEuC,KAAO1F,EAChCmD,GAGT,SAAS0gD,KACP,GAAI,OAAShB,GAAYA,IAAR1/C,GAAI0/C,IAAWn9C,KAAci9C,GAAK,QAAbz/C,GAAIy/C,IAAsBz/C,GAAEwC,KAAO,SAAU,CACjF,GAAI,OAASi9C,GAAI,MAAM15C,MAAM7I,EAAE,MAE/B,IAAIJ,EAAI,CACNmgC,eAFFj9B,GAAIy/C,IAEexiB,cACjB2d,UAAW56C,GAAE46C,UACb6F,MAAOzgD,GAAEygD,MACTC,WAAY1gD,GAAE0gD,WACdl+C,KAAM,MAERvC,GAAI,OAASA,GAAIy/C,GAAK5iD,EAAImD,GAAEuC,KAAO1F,EACnC2iD,GAAKz/C,GAAEwC,KAET,OAAOvC,GAGT,SAAS2gD,GAAG9jD,EAAGE,GACb,MAAO,mBAAsBA,EAAIA,EAAEF,GAAKE,EAG1C,SAAS6jD,GAAG/jD,GACV,IAAIE,EAAI2jD,KACJ3hD,EAAIhC,EAAEyjD,MACV,GAAI,OAASzhD,EAAG,MAAM+G,MAAM7I,EAAE,MAG9B,GAFA8B,EAAE8hD,oBAAsBhkD,EAEpB,EAAImjD,GAAI,CACV,IAAI9gD,EAAIH,EAAE+hD,SAEV,GAAI,OAASf,GAAI,CACf,IAAI5gD,EAAI4gD,GAAGr0C,IAAI3M,GAEf,QAAI,IAAWI,EAAG,CAChB4gD,GAAW,OAAEhhD,GACb,IAAIopB,EAAIprB,EAAEigC,cAEV,GACE7U,EAAItrB,EAAEsrB,EAAGhpB,EAAE4hD,QAAS5hD,EAAIA,EAAEoD,WACnB,OAASpD,GAMlB,OAJA+1C,GAAG/sB,EAAGprB,EAAEigC,iBAAmBqd,IAAK,GAChCt9C,EAAEigC,cAAgB7U,EAClBprB,EAAE0jD,aAAe1hD,EAAEiiD,OAASjkD,EAAE49C,UAAYxyB,GAC1CppB,EAAEkiD,kBAAoB94B,EACf,CAACA,EAAGjpB,IAIf,MAAO,CAACnC,EAAEigC,cAAe99B,GAG3BA,EAAIH,EAAEiiD,KACN,IAAIhlD,EAAIe,EAAE0jD,WAIV,GAHAt4B,EAAIprB,EAAE49C,UACN,OAAS3+C,GAAK,OAASkD,IAAMA,EAAEqD,KAAO,MAAOrD,EAAIlD,EAAEuG,MAAQrD,EAAI,OAASA,EAAIA,EAAEqD,KAAO,KAEjF,OAASrD,EAAG,CACd,IAAIjD,EAAIkD,EAAI,KACRjD,EAAIgD,EACJ/C,GAAI,EAER,EAAG,CACD,IAAIqD,EAAItD,EAAEuE,eACVjB,EAAI8/C,IAAMnjD,IAAMA,GAAI,EAAIF,EAAID,EAAGmD,EAAIgpB,GAAI3oB,EAAImgD,IAAe1D,GAAR0D,GAAKngD,KAAew8C,GAAGx8C,EAAGtD,EAAEo/C,gBAAiBnzB,EAAIjsB,EAAEglD,eAAiBrkD,EAAIX,EAAEilD,WAAatkD,EAAEsrB,EAAGjsB,EAAE6kD,SAChJ/kD,EAAIE,EACJA,EAAIA,EAAEqG,WACC,OAASrG,GAAKA,IAAMgD,GAE7B/C,IAAMF,EAAID,EAAGmD,EAAIgpB,GACjB+sB,GAAG/sB,EAAGprB,EAAEigC,iBAAmBqd,IAAK,GAChCt9C,EAAEigC,cAAgB7U,EAClBprB,EAAE0jD,WAAaxkD,EACfc,EAAE49C,UAAYx7C,EACdJ,EAAEkiD,kBAAoB94B,EAGxB,MAAO,CAACprB,EAAEigC,cAAej+B,EAAE+hD,UAG7B,SAASM,GAAGvkD,GACV,IAAIE,EAAIwjD,KAUR,MATA,mBAAsB1jD,IAAMA,EAAIA,KAChCE,EAAEigC,cAAgBjgC,EAAE49C,UAAY99C,EAOhCA,GANAA,EAAIE,EAAEyjD,MAAQ,CACZQ,KAAM,KACNF,SAAU,KACVD,oBAAqBF,GACrBM,kBAAmBpkD,IAEfikD,SAAWO,GAAGppC,KAAK,KAAMsnC,GAAI1iD,GAC5B,CAACE,EAAEigC,cAAengC,GAG3B,SAASykD,GAAGzkD,GACV,OAAO+jD,GAAGD,IAGZ,SAASY,GAAG1kD,EAAGE,EAAGgC,EAAGG,GAWnB,OAVArC,EAAI,CACF4b,IAAK5b,EACL6J,OAAQ3J,EACRykD,QAASziD,EACT0iD,KAAMviD,EACNqD,KAAM,MAER,OAASq9C,IAAMA,GAAK,CAClB3E,WAAY,OACRA,WAAap+C,EAAE0F,KAAO1F,EAAyB,QAAnBE,EAAI6iD,GAAG3E,YAAyB2E,GAAG3E,WAAap+C,EAAE0F,KAAO1F,GAAKkC,EAAIhC,EAAEwF,KAAMxF,EAAEwF,KAAO1F,EAAGA,EAAE0F,KAAOxD,EAAG6gD,GAAG3E,WAAap+C,GAC7IA,EAGT,SAAS6kD,GAAG7kD,EAAGE,EAAGgC,EAAGG,GACnB,IAAIC,EAAIohD,KACRV,IAAMhjD,EACNsC,EAAE69B,cAAgBukB,GAAGxkD,EAAGgC,OAAG,OAAQ,IAAWG,EAAI,KAAOA,GAG3D,SAASyiD,GAAG9kD,EAAGE,EAAGgC,EAAGG,GACnB,IAAIC,EAAIuhD,KACRxhD,OAAI,IAAWA,EAAI,KAAOA,EAC1B,IAAIipB,OAAI,EAER,GAAI,OAASpoB,GAAG,CACd,IAAI/D,EAAI+D,GAAEi9B,cAGV,GAFA7U,EAAInsB,EAAEwlD,QAEF,OAAStiD,GAAK+gD,GAAG/gD,EAAGlD,EAAEylD,MAExB,YADAF,GAAG,EAAGxiD,EAAGopB,EAAGjpB,GAKhB2gD,IAAMhjD,EACNsC,EAAE69B,cAAgBukB,GAAGxkD,EAAGgC,EAAGopB,EAAGjpB,GAGhC,SAAS0iD,GAAG/kD,EAAGE,GACb,OAAO2kD,GAAG,IAAK,IAAK7kD,EAAGE,GAGzB,SAAS8kD,GAAGhlD,EAAGE,GACb,OAAO4kD,GAAG,IAAK,IAAK9kD,EAAGE,GAGzB,SAAS+kD,GAAGjlD,EAAGE,GACb,MAAI,mBAAsBA,GAAUF,EAAIA,IAAKE,EAAEF,GAAI,WACjDE,EAAE,QAEA,MAASA,GAA0BF,EAAIA,IAAKE,EAAE2sB,QAAU7sB,EAAG,WAC7DE,EAAE2sB,QAAU,YADd,EAKF,SAASq4B,MAET,SAASC,GAAGnlD,EAAGE,GAEb,OADAwjD,KAAKvjB,cAAgB,CAACngC,OAAG,IAAWE,EAAI,KAAOA,GACxCF,EAGT,SAASolD,GAAGplD,EAAGE,GACb,IAAIgC,EAAI2hD,KACR3jD,OAAI,IAAWA,EAAI,KAAOA,EAC1B,IAAImC,EAAIH,EAAEi+B,cACV,OAAI,OAAS99B,GAAK,OAASnC,GAAKkjD,GAAGljD,EAAGmC,EAAE,IAAYA,EAAE,IACtDH,EAAEi+B,cAAgB,CAACngC,EAAGE,GACfF,GAGT,SAASwkD,GAAGxkD,EAAGE,EAAGgC,GAChB,KAAM,GAAKihD,IAAK,MAAMl6C,MAAM7I,EAAE,MAC9B,IAAIiC,EAAIrC,EAAEggC,UACV,GAAIhgC,IAAM0iD,IAAM,OAASrgD,GAAKA,IAAMqgD,GAClC,GAAIO,IAAK,EAAIjjD,EAAI,CACf4D,eAAgB6+C,GAChBhE,eAAgB,KAChByF,OAAQhiD,EACRmiD,aAAc,KACdC,WAAY,KACZ5+C,KAAM,MACL,OAASw9C,KAAOA,GAAK,IAAIvoB,UAAuB,KAAfz4B,EAAIghD,GAAGr0C,IAAI3O,IAAkBgjD,GAAG38B,IAAIrmB,EAAGF,OAAQ,CACjF,IAAKE,EAAIgC,EAAG,OAAShC,EAAEwF,MACrBxF,EAAIA,EAAEwF,KAGRxF,EAAEwF,KAAO1F,MAEN,CACL,IAAIsC,EAAIs9C,KACJt0B,EAAIi0B,GAAG5pB,SAEXrK,EAAI,CACF1nB,eAFFtB,EAAIu9C,GAAGv9C,EAAGtC,EAAGsrB,GAGXmzB,eAAgBnzB,EAChB44B,OAAQhiD,EACRmiD,aAAc,KACdC,WAAY,KACZ5+C,KAAM,MAER,IAAIvG,EAAIe,EAAEikD,KACV,GAAI,OAAShlD,EAAGmsB,EAAE5lB,KAAO4lB,MAAO,CAC9B,IAAIlsB,EAAID,EAAEuG,KACV,OAAStG,IAAMksB,EAAE5lB,KAAOtG,GACxBD,EAAEuG,KAAO4lB,EAGX,GADAprB,EAAEikD,KAAO74B,EACL,IAAMtrB,EAAE4D,iBAAmB,OAASvB,GAAK,IAAMA,EAAEuB,iBAA+C,QAA3BvB,EAAInC,EAAE8jD,qBAAkC,IAC/G,IAAI3kD,EAAIa,EAAEkkD,kBACN9kD,EAAI+C,EAAEhD,EAAG6C,GAGb,GAFAopB,EAAE+4B,aAAehiD,EACjBipB,EAAEg5B,WAAahlD,EACX+4C,GAAG/4C,EAAGD,GAAI,OACd,MAAOsD,IACTm9C,GAAG9/C,EAAGsC,IAIV,IAAIkhD,GAAK,CACP6B,YAAa5H,GACb/oB,YAAatxB,GACbuD,WAAYvD,GACZ0J,UAAW1J,GACXuxB,oBAAqBvxB,GACrByxB,gBAAiBzxB,GACjB0xB,QAAS1xB,GACT2xB,WAAY3xB,GACZ4xB,OAAQ5xB,GACRuJ,SAAUvJ,GACVwxB,cAAexxB,GACfkiD,aAAcliD,GACdmiD,iBAAkBniD,GAClBoiD,cAAepiD,IAEbkgD,GAAK,CACP+B,YAAa5H,GACb/oB,YAAaywB,GACbx+C,WAAY82C,GACZ3wC,UAAWi4C,GACXpwB,oBAAqB,SAA6B30B,EAAGE,EAAGgC,GAEtD,OADAA,EAAI,MAASA,EAAoBA,EAAEoE,OAAO,CAACtG,IAAM,KAC1C6kD,GAAG,EAAG,GAAII,GAAG7pC,KAAK,KAAMlb,EAAGF,GAAIkC,IAExC2yB,gBAAiB,SAAyB70B,EAAGE,GAC3C,OAAO2kD,GAAG,EAAG,GAAI7kD,EAAGE,IAEtB40B,QAAS,SAAiB90B,EAAGE,GAC3B,IAAIgC,EAAIwhD,KAIR,OAHAxjD,OAAI,IAAWA,EAAI,KAAOA,EAC1BF,EAAIA,IACJkC,EAAEi+B,cAAgB,CAACngC,EAAGE,GACfF,GAET+0B,WAAY,SAAoB/0B,EAAGE,EAAGgC,GACpC,IAAIG,EAAIqhD,KAUR,OATAxjD,OAAI,IAAWgC,EAAIA,EAAEhC,GAAKA,EAC1BmC,EAAE89B,cAAgB99B,EAAEy7C,UAAY59C,EAOhCF,GANAA,EAAIqC,EAAEshD,MAAQ,CACZQ,KAAM,KACNF,SAAU,KACVD,oBAAqBhkD,EACrBokD,kBAAmBlkD,IAEf+jD,SAAWO,GAAGppC,KAAK,KAAMsnC,GAAI1iD,GAC5B,CAACqC,EAAE89B,cAAengC,IAE3Bg1B,OAAQ,SAAgBh1B,GAKtB,OAHAA,EAAI,CACF6sB,QAAS7sB,GAFH0jD,KAICvjB,cAAgBngC,GAE3B2M,SAAU43C,GACV3vB,cAAeswB,GACfI,aAAchD,GACdiD,iBAAkB,SAA0BvlD,EAAGE,GAC7C,IAAIgC,EAAIqiD,GAAGvkD,GACPqC,EAAIH,EAAE,GACNI,EAAIJ,EAAE,GAaV,OAZA6iD,IAAG,WACDjlD,EAAE0E,eAAc,WACd,IAAItC,EAAIe,GAAE0yB,SACV1yB,GAAE0yB,cAAW,IAAWz1B,EAAI,KAAOA,EAEnC,IACEoC,EAAEtC,GACF,QACAiD,GAAE0yB,SAAWzzB,QAGhB,CAAClC,EAAGE,IACAmC,GAETmjD,cAAe,SAAuBxlD,GACpC,IAAIE,EAAIqkD,IAAG,GACPriD,EAAIhC,EAAE,GACNmC,EAAInC,EAAE,GACV,MAAO,CAACilD,IAAG,SAAUjlD,GACnBmC,GAAE,GACFvC,EAAE0E,eAAc,WACd,IAAItC,EAAIe,GAAE0yB,SACV1yB,GAAE0yB,cAAW,IAAW31B,EAAI,KAAOA,EAEnC,IACEqC,GAAE,GAAKnC,IACP,QACA+C,GAAE0yB,SAAWzzB,QAGhB,CAAClC,EAAGkC,IAAKA,KAGZqhD,GAAK,CACP8B,YAAa5H,GACb/oB,YAAa0wB,GACbz+C,WAAY82C,GACZ3wC,UAAWk4C,GACXrwB,oBAAqB,SAA6B30B,EAAGE,EAAGgC,GAEtD,OADAA,EAAI,MAASA,EAAoBA,EAAEoE,OAAO,CAACtG,IAAM,KAC1C8kD,GAAG,EAAG,GAAIG,GAAG7pC,KAAK,KAAMlb,EAAGF,GAAIkC,IAExC2yB,gBAAiB,SAAyB70B,EAAGE,GAC3C,OAAO4kD,GAAG,EAAG,GAAI9kD,EAAGE,IAEtB40B,QAAS,SAAiB90B,EAAGE,GAC3B,IAAIgC,EAAI2hD,KACR3jD,OAAI,IAAWA,EAAI,KAAOA,EAC1B,IAAImC,EAAIH,EAAEi+B,cACV,OAAI,OAAS99B,GAAK,OAASnC,GAAKkjD,GAAGljD,EAAGmC,EAAE,IAAYA,EAAE,IACtDrC,EAAIA,IACJkC,EAAEi+B,cAAgB,CAACngC,EAAGE,GACfF,IAET+0B,WAAYgvB,GACZ/uB,OAAQ,WACN,OAAO6uB,KAAK1jB,eAEdxzB,SAAU83C,GACV7vB,cAAeswB,GACfI,aAAchD,GACdiD,iBAAkB,SAA0BvlD,EAAGE,GAC7C,IAAIgC,EAAIuiD,KACJpiD,EAAIH,EAAE,GACNI,EAAIJ,EAAE,GAaV,OAZA8iD,IAAG,WACDllD,EAAE0E,eAAc,WACd,IAAItC,EAAIe,GAAE0yB,SACV1yB,GAAE0yB,cAAW,IAAWz1B,EAAI,KAAOA,EAEnC,IACEoC,EAAEtC,GACF,QACAiD,GAAE0yB,SAAWzzB,QAGhB,CAAClC,EAAGE,IACAmC,GAETmjD,cAAe,SAAuBxlD,GACpC,IAAIE,EAAIukD,KACJviD,EAAIhC,EAAE,GACNmC,EAAInC,EAAE,GACV,MAAO,CAACklD,IAAG,SAAUllD,GACnBmC,GAAE,GACFvC,EAAE0E,eAAc,WACd,IAAItC,EAAIe,GAAE0yB,SACV1yB,GAAE0yB,cAAW,IAAW31B,EAAI,KAAOA,EAEnC,IACEqC,GAAE,GAAKnC,IACP,QACA+C,GAAE0yB,SAAWzzB,QAGhB,CAAClC,EAAGkC,IAAKA,KAGZujD,GAAK,KACLC,GAAK,KACLC,IAAK,EAET,SAASC,GAAG5lD,EAAGE,GACb,IAAIgC,EAAI2jD,GAAG,EAAG,KAAM,KAAM,GAC1B3jD,EAAE++C,YAAc,UAChB/+C,EAAEgE,KAAO,UACThE,EAAEm2B,UAAYn4B,EACdgC,EAAU,OAAIlC,EACdkC,EAAE+9B,UAAY,EACd,OAASjgC,EAAEo+C,YAAcp+C,EAAEo+C,WAAWO,WAAaz8C,EAAGlC,EAAEo+C,WAAal8C,GAAKlC,EAAEm+C,YAAcn+C,EAAEo+C,WAAal8C,EAG3G,SAAS4jD,GAAG9lD,EAAGE,GACb,OAAQF,EAAE4b,KACR,KAAK,EACH,IAAI1Z,EAAIlC,EAAEkG,KAEV,OAAO,QADPhG,EAAI,IAAMA,EAAE2+B,UAAY38B,EAAE0e,gBAAkB1gB,EAAE67B,SAASnb,cAAgB,KAAO1gB,KACzDF,EAAEq4B,UAAYn4B,GAAG,GAExC,KAAK,EACH,OAAiE,QAA1DA,EAAI,KAAOF,EAAE+lD,cAAgB,IAAM7lD,EAAE2+B,SAAW,KAAO3+B,KAAiBF,EAAEq4B,UAAYn4B,GAAG,GAElG,KAAK,GAGL,QACE,OAAO,GAIb,SAAS8lD,GAAGhmD,GACV,GAAI2lD,GAAI,CACN,IAAIzlD,EAAIwlD,GAER,GAAIxlD,EAAG,CACL,IAAIgC,EAAIhC,EAER,IAAK4lD,GAAG9lD,EAAGE,GAAI,CAGb,KAFAA,EAAIuzC,GAAGvxC,EAAE0wC,gBAEEkT,GAAG9lD,EAAGE,GAIf,OAHAF,EAAEigC,WAA2B,KAAfjgC,EAAEigC,UAAoB,EACpC0lB,IAAK,OACLF,GAAKzlD,GAIP4lD,GAAGH,GAAIvjD,GAGTujD,GAAKzlD,EACL0lD,GAAKjS,GAAGvzC,EAAEw+B,iBACL1+B,EAAEigC,WAA2B,KAAfjgC,EAAEigC,UAAoB,EAAG0lB,IAAK,EAAIF,GAAKzlD,GAIhE,SAASimD,GAAGjmD,GACV,IAAKA,EAAIA,EAAU,OAAG,OAASA,GAAK,IAAMA,EAAE4b,KAAO,IAAM5b,EAAE4b,KAAO,KAAO5b,EAAE4b,KACzE5b,EAAIA,EAAU,OAGhBylD,GAAKzlD,EAGP,SAASkmD,GAAGlmD,GACV,GAAIA,IAAMylD,GAAI,OAAO,EACrB,IAAKE,GAAI,OAAOM,GAAGjmD,GAAI2lD,IAAK,GAAI,EAChC,IAAIzlD,EAAIF,EAAEkG,KACV,GAAI,IAAMlG,EAAE4b,KAAO,SAAW1b,GAAK,SAAWA,IAAMozC,GAAGpzC,EAAGF,EAAEoiD,eAAgB,IAAKliD,EAAIwlD,GAAIxlD,GACvF0lD,GAAG5lD,EAAGE,GAAIA,EAAIuzC,GAAGvzC,EAAE0yC,aAIrB,GAFAqT,GAAGjmD,GAEC,KAAOA,EAAE4b,IAAK,CAGhB,KADA5b,EAAI,QADJA,EAAIA,EAAEmgC,eACWngC,EAAEogC,WAAa,MACxB,MAAMn3B,MAAM7I,EAAE,MAEtBJ,EAAG,CAGD,IAFAA,EAAIA,EAAE4yC,YAED1yC,EAAI,EAAGF,GAAI,CACd,GAAI,IAAMA,EAAE6+B,SAAU,CACpB,IAAI38B,EAAIlC,EAAE4zC,KAEV,GAviED,OAuiEK1xC,EAAU,CACZ,GAAI,IAAMhC,EAAG,CACXwlD,GAAKjS,GAAGzzC,EAAE4yC,aACV,MAAM5yC,EAGRE,QA9iEH,MA+iEQgC,GA5iER,OA4iEoBA,GA7iEpB,OA6iEgCA,GAAYhC,IAG7CF,EAAIA,EAAE4yC,YAGR8S,GAAK,WAEFA,GAAKD,GAAKhS,GAAGzzC,EAAEq4B,UAAUua,aAAe,KAE/C,OAAO,EAGT,SAASh7B,KACP8tC,GAAKD,GAAK,KACVE,IAAK,EAGP,IAAIQ,GAAK5tB,EAAG3C,kBACR4nB,IAAK,EAET,SAASn6C,GAAErD,EAAGE,EAAGgC,EAAGG,GAClBnC,EAAEikB,MAAQ,OAASnkB,EAAIwhD,GAAGthD,EAAG,KAAMgC,EAAGG,GAAKk/C,GAAGrhD,EAAGF,EAAEmkB,MAAOjiB,EAAGG,GAG/D,SAAS+jD,GAAGpmD,EAAGE,EAAGgC,EAAGG,EAAGC,GACtBJ,EAAIA,EAAE0I,OACN,IAAI0gB,EAAIprB,EAAEwH,IAGV,OAFA41C,GAAGp9C,EAAGoC,GACND,EAAIghD,GAAGrjD,EAAGE,EAAGgC,EAAGG,EAAGipB,EAAGhpB,GAClB,OAAStC,GAAMw9C,IACnBt9C,EAAE+/B,WAAa,EACf58B,GAAErD,EAAGE,EAAGmC,EAAGC,GACJpC,EAAEikB,QAHqBjkB,EAAE4+C,YAAc9+C,EAAE8+C,YAAa5+C,EAAE+/B,YAAc,IAAKjgC,EAAE4D,gBAAkBtB,IAAMtC,EAAE4D,eAAiB,GAAIyiD,GAAGrmD,EAAGE,EAAGoC,IAM9I,SAASgkD,GAAGtmD,EAAGE,EAAGgC,EAAGG,EAAGC,EAAGgpB,GACzB,GAAI,OAAStrB,EAAG,CACd,IAAIb,EAAI+C,EAAEgE,KACV,MAAI,mBAAsB/G,GAAMonD,GAAGpnD,SAAM,IAAWA,EAAEqb,cAAgB,OAAStY,EAAE0Y,cAAW,IAAW1Y,EAAEsY,eACzGxa,EAAIkhD,GAAGh/C,EAAEgE,KAAM,KAAM7D,EAAG,KAAMnC,EAAE0M,KAAM0e,IACpC5jB,IAAMxH,EAAEwH,IACV1H,EAAU,OAAIE,EACPA,EAAEikB,MAAQnkB,IAJ6GE,EAAE0b,IAAM,GAAI1b,EAAEgG,KAAO/G,EAAGqnD,GAAGxmD,EAAGE,EAAGf,EAAGkD,EAAGC,EAAGgpB,IAQ1K,OADAnsB,EAAIa,EAAEmkB,MACF7hB,EAAIgpB,IAAMhpB,EAAInD,EAAEijD,eAA8BlgD,EAAI,QAAnBA,EAAIA,EAAE0Y,SAA0B1Y,EAAIq2C,IAAMj2C,EAAGD,IAAMrC,EAAE0H,MAAQxH,EAAEwH,KAAa2+C,GAAGrmD,EAAGE,EAAGorB,IACxHprB,EAAE+/B,WAAa,GACfjgC,EAAI+gD,GAAG5hD,EAAGkD,IACRqF,IAAMxH,EAAEwH,IACV1H,EAAU,OAAIE,EACPA,EAAEikB,MAAQnkB,GAGnB,SAASwmD,GAAGxmD,EAAGE,EAAGgC,EAAGG,EAAGC,EAAGgpB,GACzB,OAAO,OAAStrB,GAAKu4C,GAAGv4C,EAAEoiD,cAAe//C,IAAMrC,EAAE0H,MAAQxH,EAAEwH,MAAQ81C,IAAK,EAAIl7C,EAAIgpB,GAAK+6B,GAAGrmD,EAAGE,EAAGorB,GAAKm7B,GAAGzmD,EAAGE,EAAGgC,EAAGG,EAAGipB,GAGpH,SAASo7B,GAAG1mD,EAAGE,GACb,IAAIgC,EAAIhC,EAAEwH,KACN,OAAS1H,GAAK,OAASkC,GAAK,OAASlC,GAAKA,EAAE0H,MAAQxF,KAAGhC,EAAE+/B,WAAa,KAG5E,SAASwmB,GAAGzmD,EAAGE,EAAGgC,EAAGG,EAAGC,GACtB,IAAIgpB,EAAI9oB,GAAEN,GAAKi4C,GAAKl4C,GAAE4qB,QAItB,OAHAvB,EAAI8uB,GAAGl6C,EAAGorB,GACVgyB,GAAGp9C,EAAGoC,GACNJ,EAAImhD,GAAGrjD,EAAGE,EAAGgC,EAAGG,EAAGipB,EAAGhpB,GAClB,OAAStC,GAAMw9C,IACnBt9C,EAAE+/B,WAAa,EACf58B,GAAErD,EAAGE,EAAGgC,EAAGI,GACJpC,EAAEikB,QAHqBjkB,EAAE4+C,YAAc9+C,EAAE8+C,YAAa5+C,EAAE+/B,YAAc,IAAKjgC,EAAE4D,gBAAkBtB,IAAMtC,EAAE4D,eAAiB,GAAIyiD,GAAGrmD,EAAGE,EAAGoC,IAM9I,SAASqkD,GAAG3mD,EAAGE,EAAGgC,EAAGG,EAAGC,GACtB,GAAIE,GAAEN,GAAI,CACR,IAAIopB,GAAI,EACRwvB,GAAG56C,QACEorB,GAAI,EAGX,GADAgyB,GAAGp9C,EAAGoC,GACF,OAASpC,EAAEm4B,UAAW,OAASr4B,IAAMA,EAAEggC,UAAY,KAAM9/B,EAAE8/B,UAAY,KAAM9/B,EAAE+/B,WAAa,GAAI+f,GAAG9/C,EAAGgC,EAAGG,GAAOg+C,GAAGngD,EAAGgC,EAAGG,EAAGC,GAAID,GAAI,OAAQ,GAAI,OAASrC,EAAG,CAC9J,IAAIb,EAAIe,EAAEm4B,UACNj5B,EAAIc,EAAEkiD,cACVjjD,EAAEsG,MAAQrG,EACV,IAAIC,EAAIF,EAAEwI,QACNrI,EAAI4C,EAAE+9C,YACV,iBAAoB3gD,GAAK,OAASA,EAAIA,EAAIm+C,GAAGn+C,GAAiCA,EAAI86C,GAAGl6C,EAAlCZ,EAAIkD,GAAEN,GAAKi4C,GAAKl4C,GAAE4qB,SACrE,IAAIlqB,EAAIT,EAAEo+C,yBACNl/C,EAAI,mBAAsBuB,GAAK,mBAAsBxD,EAAEohD,wBAC3Dn/C,GAAK,mBAAsBjC,EAAEihD,kCAAoC,mBAAsBjhD,EAAEghD,4BAA8B/gD,IAAMiD,GAAKhD,IAAMC,IAAM4gD,GAAGhgD,EAAGf,EAAGkD,EAAG/C,GAC1Js+C,IAAK,EACL,IAAIh9C,EAAIV,EAAEigC,cACV9gC,EAAIF,EAAEgK,MAAQvI,EACd,IAAIe,EAAIzB,EAAE4+C,YACV,OAASn9C,IAAMu9C,GAAGh/C,EAAGyB,EAAGU,EAAGlD,EAAGmD,GAAIjD,EAAIa,EAAEigC,eACxC/gC,IAAMiD,GAAKzB,IAAMvB,GAAKkD,GAAEsqB,SAAW+wB,IAAM,mBAAsBj7C,IAAM88C,GAAGv/C,EAAGgC,EAAGS,EAAGN,GAAIhD,EAAIa,EAAEigC,gBAAiB/gC,EAAIw+C,IAAMmC,GAAG7/C,EAAGgC,EAAG9C,EAAGiD,EAAGzB,EAAGvB,EAAGC,KAAO8B,GAAK,mBAAsBjC,EAAEqhD,2BAA6B,mBAAsBrhD,EAAEmL,qBAAuB,mBAAsBnL,EAAEmL,oBAAsBnL,EAAEmL,qBAAsB,mBAAsBnL,EAAEqhD,2BAA6BrhD,EAAEqhD,6BAA8B,mBAAsBrhD,EAAEshD,oBAAsBvgD,EAAE+/B,WAAa,KAAO,mBAAsB9gC,EAAEshD,oBAAsBvgD,EAAE+/B,WAAa,GAAI//B,EAAEkiD,cAAgB//C,EAAGnC,EAAEigC,cAAgB9gC,GAAIF,EAAEsG,MAAQpD,EAAGlD,EAAEgK,MAAQ9J,EAAGF,EAAEwI,QAAUrI,EAAG+C,EAAIjD,IAAM,mBAAsBD,EAAEshD,oBAAsBvgD,EAAE+/B,WAAa,GAAI59B,GAAI,QACzrBlD,EAAIe,EAAEm4B,UAAWj5B,EAAIc,EAAEkiD,cAAejjD,EAAEsG,MAAQvF,EAAEgG,OAAShG,EAAE+gD,YAAc7hD,EAAIw9C,GAAG18C,EAAEgG,KAAM9G,GAAIC,EAAIF,EAAEwI,QAA4B,iBAAnBrI,EAAI4C,EAAE+9C,cAAsC,OAAS3gD,EAAIA,EAAIm+C,GAAGn+C,GAAiCA,EAAI86C,GAAGl6C,EAAlCZ,EAAIkD,GAAEN,GAAKi4C,GAAKl4C,GAAE4qB,UAAyDzrB,EAAI,mBAArCuB,EAAIT,EAAEo+C,2BAA0D,mBAAsBnhD,EAAEohD,0BAA4B,mBAAsBphD,EAAEihD,kCAAoC,mBAAsBjhD,EAAEghD,4BAA8B/gD,IAAMiD,GAAKhD,IAAMC,IAAM4gD,GAAGhgD,EAAGf,EAAGkD,EAAG/C,GAAIs+C,IAAK,EAAIv+C,EAAIa,EAAEigC,cAAev/B,EAAIzB,EAAEgK,MAAQ9J,EAAsB,QAAnBsC,EAAIzB,EAAE4+C,eAA4BI,GAAGh/C,EAAGyB,EAAGU,EAAGlD,EAAGmD,GAAI1B,EAAIV,EAAEigC,eAAgB/gC,IAAMiD,GAAKhD,IAAMuB,GAAK2B,GAAEsqB,SAAW+wB,IAAM,mBAAsBj7C,IAAM88C,GAAGv/C,EAAGgC,EAAGS,EAAGN,GAAIzB,EAAIV,EAAEigC,gBAAiBx9B,EAAIi7C,IAAMmC,GAAG7/C,EAAGgC,EAAG9C,EAAGiD,EAAGhD,EAAGuB,EAAGtB,KAAO8B,GAAK,mBAAsBjC,EAAEynD,4BAA8B,mBAAsBznD,EAAE0nD,sBAAwB,mBAAsB1nD,EAAE0nD,qBAAuB1nD,EAAE0nD,oBAAoBxkD,EAAGzB,EAAGtB,GAAI,mBAAsBH,EAAEynD,4BAA8BznD,EAAEynD,2BAA2BvkD,EAAGzB,EAAGtB,IAAK,mBAAsBH,EAAEoL,qBAAuBrK,EAAE+/B,WAAa,GAAI,mBAAsB9gC,EAAEohD,0BAA4BrgD,EAAE+/B,WAAa,OAAS,mBAAsB9gC,EAAEoL,oBAAsBnL,IAAMY,EAAEoiD,eAAiB/iD,IAAMW,EAAEmgC,gBAAkBjgC,EAAE+/B,WAAa,GAAI,mBAAsB9gC,EAAEohD,yBAA2BnhD,IAAMY,EAAEoiD,eAAiB/iD,IAAMW,EAAEmgC,gBAAkBjgC,EAAE+/B,WAAa,KAAM//B,EAAEkiD,cAAgB//C,EAAGnC,EAAEigC,cAAgBv/B,GAAIzB,EAAEsG,MAAQpD,EAAGlD,EAAEgK,MAAQvI,EAAGzB,EAAEwI,QAAUrI,EAAG+C,EAAIM,IAAM,mBAAsBxD,EAAEoL,oBAAsBnL,IAAMY,EAAEoiD,eAAiB/iD,IAAMW,EAAEmgC,gBAAkBjgC,EAAE+/B,WAAa,GAAI,mBAAsB9gC,EAAEohD,yBAA2BnhD,IAAMY,EAAEoiD,eAAiB/iD,IAAMW,EAAEmgC,gBAAkBjgC,EAAE+/B,WAAa,KAAM59B,GAAI,GACnuD,OAAOykD,GAAG9mD,EAAGE,EAAGgC,EAAGG,EAAGipB,EAAGhpB,GAG3B,SAASwkD,GAAG9mD,EAAGE,EAAGgC,EAAGG,EAAGC,EAAGgpB,GACzBo7B,GAAG1mD,EAAGE,GACN,IAAIf,EAAI,IAAqB,GAAde,EAAE+/B,WACjB,IAAK59B,IAAMlD,EAAG,OAAOmD,GAAK04C,GAAG96C,EAAGgC,GAAG,GAAKmkD,GAAGrmD,EAAGE,EAAGorB,GACjDjpB,EAAInC,EAAEm4B,UACN8tB,GAAGt5B,QAAU3sB,EACb,IAAId,EAAID,GAAK,mBAAsB+C,EAAE6kD,yBAA2B,KAAO1kD,EAAEuI,SAKzE,OAJA1K,EAAE+/B,WAAa,EACf,OAASjgC,GAAKb,GAAKe,EAAEikB,MAAQo9B,GAAGrhD,EAAGF,EAAEmkB,MAAO,KAAMmH,GAAIprB,EAAEikB,MAAQo9B,GAAGrhD,EAAG,KAAMd,EAAGksB,IAAMjoB,GAAErD,EAAGE,EAAGd,EAAGksB,GAChGprB,EAAEigC,cAAgB99B,EAAE8G,MACpB7G,GAAK04C,GAAG96C,EAAGgC,GAAG,GACPhC,EAAEikB,MAGX,SAAS6iC,GAAGhnD,GACV,IAAIE,EAAIF,EAAEq4B,UACVn4B,EAAE+mD,eAAiBtM,GAAG36C,EAAGE,EAAE+mD,eAAgB/mD,EAAE+mD,iBAAmB/mD,EAAEyH,SAAWzH,EAAEyH,SAAWgzC,GAAG36C,EAAGE,EAAEyH,SAAS,GAC3Gm6C,GAAG9hD,EAAGE,EAAEiiC,eAGV,IA4MI+kB,GAAQC,GAAIC,GA5MZC,GAAK,CACPjnB,WAAY,KACZknB,UAAW,GAGb,SAASC,GAAGvnD,EAAGE,EAAGgC,GAChB,IAII9C,EAJAiD,EAAInC,EAAE0M,KACNtK,EAAIpC,EAAE6lD,aACNz6B,EAAI7oB,GAAEoqB,QACN1tB,GAAI,EAMR,IAJCC,EAAI,IAAqB,GAAdc,EAAE+/B,cAAqB7gC,EAAI,IAAW,EAAJksB,KAAW,OAAStrB,GAAK,OAASA,EAAEmgC,gBAClF/gC,GAAKD,GAAI,EAAIe,EAAE+/B,YAAc,IAAM,OAASjgC,GAAK,OAASA,EAAEmgC,oBAAiB,IAAW79B,EAAEklD,WAAY,IAAOllD,EAAEmlD,6BAA+Bn8B,GAAK,GACnJ1pB,GAAEa,GAAO,EAAJ6oB,GAED,OAAStrB,EAAG,CAGd,QAFA,IAAWsC,EAAEklD,UAAYxB,GAAG9lD,GAExBf,EAAG,CAIL,GAHAA,EAAImD,EAAEklD,UACNllD,EAAI++C,GAAG,KAAMh/C,EAAG,EAAG,OACT,OAAInC,EACV,IAAgB,EAATA,EAAE0M,MAAW,IAAK5M,EAAI,OAASE,EAAEigC,cAAgBjgC,EAAEikB,MAAMA,MAAQjkB,EAAEikB,MAAO7hB,EAAE6hB,MAAQnkB,EAAG,OAASA,GACzGA,EAAU,OAAIsC,EAAGtC,EAAIA,EAAEugC,QAOzB,OALAr+B,EAAIm/C,GAAGliD,EAAGkD,EAAGH,EAAG,OACN,OAAIhC,EACdoC,EAAEi+B,QAAUr+B,EACZhC,EAAEigC,cAAgBknB,GAClBnnD,EAAEikB,MAAQ7hB,EACHJ,EAKT,OAFAG,EAAIC,EAAE6D,SACNjG,EAAEigC,cAAgB,KACXjgC,EAAEikB,MAAQq9B,GAAGthD,EAAG,KAAMmC,EAAGH,GAGlC,GAAI,OAASlC,EAAEmgC,cAAe,CAI5B,GAFA99B,GADArC,EAAIA,EAAEmkB,OACAoc,QAEFphC,EAAG,CAIL,GAHAmD,EAAIA,EAAEklD,UACNtlD,EAAI6+C,GAAG/gD,EAAGA,EAAE+lD,eACF,OAAI7lD,EACV,IAAgB,EAATA,EAAE0M,QAAczN,EAAI,OAASe,EAAEigC,cAAgBjgC,EAAEikB,MAAMA,MAAQjkB,EAAEikB,SAAankB,EAAEmkB,MAAQ,IAAKjiB,EAAEiiB,MAAQhlB,EAAG,OAASA,GAC5HA,EAAU,OAAI+C,EAAG/C,EAAIA,EAAEohC,QAQzB,OANAl+B,EAAI0+C,GAAG1+C,EAAGC,EAAGD,EAAEuB,iBACL,OAAI1D,EACdgC,EAAEq+B,QAAUl+B,EACZH,EAAEm7C,oBAAsB,EACxBn9C,EAAEigC,cAAgBknB,GAClBnnD,EAAEikB,MAAQjiB,EACHG,EAKT,OAFAH,EAAIq/C,GAAGrhD,EAAGF,EAAEmkB,MAAO7hB,EAAE6D,SAAUjE,GAC/BhC,EAAEigC,cAAgB,KACXjgC,EAAEikB,MAAQjiB,EAKnB,GAFAlC,EAAIA,EAAEmkB,MAEFhlB,EAAG,CAML,GALAA,EAAImD,EAAEklD,UACNllD,EAAI++C,GAAG,KAAMh/C,EAAG,EAAG,OACT,OAAInC,EACdoC,EAAE6hB,MAAQnkB,EACV,OAASA,IAAMA,EAAU,OAAIsC,GACzB,IAAgB,EAATpC,EAAE0M,MAAW,IAAK5M,EAAI,OAASE,EAAEigC,cAAgBjgC,EAAEikB,MAAMA,MAAQjkB,EAAEikB,MAAO7hB,EAAE6hB,MAAQnkB,EAAG,OAASA,GACzGA,EAAU,OAAIsC,EAAGtC,EAAIA,EAAEugC,QASzB,OAPAr+B,EAAIm/C,GAAGliD,EAAGkD,EAAGH,EAAG,OACN,OAAIhC,EACdoC,EAAEi+B,QAAUr+B,EACZA,EAAE+9B,WAAa,EACf39B,EAAE+6C,oBAAsB,EACxBn9C,EAAEigC,cAAgBknB,GAClBnnD,EAAEikB,MAAQ7hB,EACHJ,EAIT,OADAhC,EAAEigC,cAAgB,KACXjgC,EAAEikB,MAAQo9B,GAAGrhD,EAAGF,EAAGsC,EAAE6D,SAAUjE,GAGxC,SAASwlD,GAAG1nD,EAAGE,GACbF,EAAE4D,eAAiB1D,IAAMF,EAAE4D,eAAiB1D,GAC5C,IAAIgC,EAAIlC,EAAEggC,UACV,OAAS99B,GAAKA,EAAE0B,eAAiB1D,IAAMgC,EAAE0B,eAAiB1D,GAC1Dk9C,GAAGp9C,EAAU,OAAGE,GAGlB,SAASynD,GAAG3nD,EAAGE,EAAGgC,EAAGG,EAAGC,EAAGgpB,GACzB,IAAInsB,EAAIa,EAAEmgC,cACV,OAAShhC,EAAIa,EAAEmgC,cAAgB,CAC7BynB,YAAa1nD,EACb2nD,UAAW,KACX1D,KAAM9hD,EACNylD,KAAM5lD,EACN6lD,eAAgB,EAChBC,SAAU1lD,EACV87C,WAAY9yB,IACTnsB,EAAEyoD,YAAc1nD,EAAGf,EAAE0oD,UAAY,KAAM1oD,EAAEglD,KAAO9hD,EAAGlD,EAAE2oD,KAAO5lD,EAAG/C,EAAE4oD,eAAiB,EAAG5oD,EAAE6oD,SAAW1lD,EAAGnD,EAAEi/C,WAAa9yB,GAG3H,SAAS28B,GAAGjoD,EAAGE,EAAGgC,GAChB,IAAIG,EAAInC,EAAE6lD,aACNzjD,EAAID,EAAEggD,YACN/2B,EAAIjpB,EAAEylD,KAGV,GAFAzkD,GAAErD,EAAGE,EAAGmC,EAAE8D,SAAUjE,GAEhB,IAAW,GADfG,EAAII,GAAEoqB,UACaxqB,EAAQ,EAAJA,EAAQ,EAAGnC,EAAE+/B,WAAa,OAAQ,CACvD,GAAI,OAASjgC,GAAK,IAAqB,GAAdA,EAAEigC,WAAiBjgC,EAAG,IAAKA,EAAIE,EAAEikB,MAAO,OAASnkB,GAAI,CAC5E,GAAI,KAAOA,EAAE4b,IAAK,OAAS5b,EAAEmgC,eAAiBunB,GAAG1nD,EAAGkC,QAAQ,GAAI,KAAOlC,EAAE4b,IAAK8rC,GAAG1nD,EAAGkC,QAAQ,GAAI,OAASlC,EAAEmkB,MAAO,CAChHnkB,EAAEmkB,MAAc,OAAInkB,EACpBA,EAAIA,EAAEmkB,MACN,SAEF,GAAInkB,IAAME,EAAG,MAAMF,EAEnB,KAAO,OAASA,EAAEugC,SAAU,CAC1B,GAAI,OAASvgC,EAAU,QAAKA,EAAU,SAAME,EAAG,MAAMF,EACrDA,EAAIA,EAAU,OAGhBA,EAAEugC,QAAgB,OAAIvgC,EAAU,OAChCA,EAAIA,EAAEugC,QAERl+B,GAAK,EAGP,GADAT,GAAEa,GAAGJ,GACD,IAAgB,EAATnC,EAAE0M,MAAW1M,EAAEigC,cAAgB,UAAU,OAAQ79B,GAC1D,IAAK,WAGH,IAFAJ,EAAIhC,EAAEikB,MAED7hB,EAAI,KAAM,OAASJ,GACL,QAAjBlC,EAAIkC,EAAE89B,YAAyB,OAASmiB,GAAGniD,KAAOsC,EAAIJ,GAAIA,EAAIA,EAAEq+B,QAIlE,QADAr+B,EAAII,IACUA,EAAIpC,EAAEikB,MAAOjkB,EAAEikB,MAAQ,OAAS7hB,EAAIJ,EAAEq+B,QAASr+B,EAAEq+B,QAAU,MACzEonB,GAAGznD,GAAG,EAAIoC,EAAGJ,EAAGopB,EAAGprB,EAAEk+C,YACrB,MAEF,IAAK,YAIH,IAHAl8C,EAAI,KACJI,EAAIpC,EAAEikB,MAEDjkB,EAAEikB,MAAQ,KAAM,OAAS7hB,GAAI,CAGhC,GAAI,QAFJtC,EAAIsC,EAAE09B,YAEY,OAASmiB,GAAGniD,GAAI,CAChCE,EAAEikB,MAAQ7hB,EACV,MAGFtC,EAAIsC,EAAEi+B,QACNj+B,EAAEi+B,QAAUr+B,EACZA,EAAII,EACJA,EAAItC,EAGN2nD,GAAGznD,GAAG,EAAIgC,EAAG,KAAMopB,EAAGprB,EAAEk+C,YACxB,MAEF,IAAK,WACHuJ,GAAGznD,GAAG,EAAI,KAAM,UAAM,EAAQA,EAAEk+C,YAChC,MAEF,QACEl+C,EAAEigC,cAAgB,KAEtB,OAAOjgC,EAAEikB,MAGX,SAASkiC,GAAGrmD,EAAGE,EAAGgC,GAChB,OAASlC,IAAME,EAAEs2B,aAAex2B,EAAEw2B,cAClC,IAAIn0B,EAAInC,EAAE0D,eAEV,GADA,IAAMvB,GAAK+8C,GAAG/8C,GACVnC,EAAEm9C,oBAAsBn7C,EAAG,OAAO,KACtC,GAAI,OAASlC,GAAKE,EAAEikB,QAAUnkB,EAAEmkB,MAAO,MAAMlb,MAAM7I,EAAE,MAErD,GAAI,OAASF,EAAEikB,MAAO,CAKpB,IAHAjiB,EAAI6+C,GADJ/gD,EAAIE,EAAEikB,MACInkB,EAAE+lD,aAAc/lD,EAAE4D,gBAC5B1D,EAAEikB,MAAQjiB,EAELA,EAAU,OAAIhC,EAAG,OAASF,EAAEugC,SAC/BvgC,EAAIA,EAAEugC,SAASr+B,EAAIA,EAAEq+B,QAAUwgB,GAAG/gD,EAAGA,EAAE+lD,aAAc/lD,EAAE4D,iBAA2B,OAAI1D,EAGxFgC,EAAEq+B,QAAU,KAGd,OAAOrgC,EAAEikB,MAGX,SAAS+jC,GAAGloD,GACVA,EAAEigC,WAAa,EAuGjB,SAASkoB,GAAGnoD,EAAGE,GACb,OAAQF,EAAEgoD,UACR,IAAK,SACH9nD,EAAIF,EAAE8nD,KAEN,IAAK,IAAI5lD,EAAI,KAAM,OAAShC,GAC1B,OAASA,EAAE8/B,YAAc99B,EAAIhC,GAAIA,EAAIA,EAAEqgC,QAGzC,OAASr+B,EAAIlC,EAAE8nD,KAAO,KAAO5lD,EAAEq+B,QAAU,KACzC,MAEF,IAAK,YACHr+B,EAAIlC,EAAE8nD,KAEN,IAAK,IAAIzlD,EAAI,KAAM,OAASH,GAC1B,OAASA,EAAE89B,YAAc39B,EAAIH,GAAIA,EAAIA,EAAEq+B,QAGzC,OAASl+B,EAAInC,GAAK,OAASF,EAAE8nD,KAAO9nD,EAAE8nD,KAAO,KAAO9nD,EAAE8nD,KAAKvnB,QAAU,KAAOl+B,EAAEk+B,QAAU,MAI9F,SAAS6nB,GAAGpoD,GACV,OAAQA,EAAE4b,KACR,KAAK,EACHpZ,GAAExC,EAAEkG,OAASu0C,KACb,IAAIv6C,EAAIF,EAAEigC,UACV,OAAW,KAAJ//B,GAAYF,EAAEigC,WAAiB,KAAL//B,EAAY,GAAIF,GAAK,KAExD,KAAK,EAIH,GAHAgiD,KACAtH,KAEI,IAAW,IADfx6C,EAAIF,EAAEigC,YACc,MAAMh3B,MAAM7I,EAAE,MAElC,OADAJ,EAAEigC,WAAiB,KAAL//B,EAAY,GACnBF,EAET,KAAK,EACH,OAAOkiD,GAAGliD,GAAI,KAEhB,KAAK,GACH,OAAOwB,GAAEiB,IAA4B,MAArBvC,EAAIF,EAAEigC,YAAuBjgC,EAAEigC,WAAiB,KAAL//B,EAAY,GAAIF,GAAK,KAElF,KAAK,GACH,OAAOwB,GAAEiB,IAAO,KAElB,KAAK,EACH,OAAOu/C,KAAO,KAEhB,KAAK,GACH,OAAO7E,GAAGn9C,GAAI,KAEhB,QACE,OAAO,MAIb,SAASqoD,GAAGroD,EAAGE,GACb,MAAO,CACLR,MAAOM,EACPqc,OAAQnc,EACRooD,MAAO7uB,EAAGv5B,IAhKdgnD,GAAK,SAAYlnD,EAAGE,GAClB,IAAK,IAAIgC,EAAIhC,EAAEikB,MAAO,OAASjiB,GAAI,CACjC,GAAI,IAAMA,EAAE0Z,KAAO,IAAM1Z,EAAE0Z,IAAK5b,EAAEwwB,YAAYtuB,EAAEm2B,gBAAgB,GAAI,IAAMn2B,EAAE0Z,KAAO,OAAS1Z,EAAEiiB,MAAO,CACnGjiB,EAAEiiB,MAAc,OAAIjiB,EACpBA,EAAIA,EAAEiiB,MACN,SAEF,GAAIjiB,IAAMhC,EAAG,MAEb,KAAO,OAASgC,EAAEq+B,SAAU,CAC1B,GAAI,OAASr+B,EAAU,QAAKA,EAAU,SAAMhC,EAAG,OAC/CgC,EAAIA,EAAU,OAGhBA,EAAEq+B,QAAgB,OAAIr+B,EAAU,OAChCA,EAAIA,EAAEq+B,UAMV4mB,GAAK,SAAYnnD,EAAGE,EAAGgC,EAAGG,EAAGC,GAC3B,IAAIgpB,EAAItrB,EAAEoiD,cAEV,GAAI92B,IAAMjpB,EAAG,CACX,IAsCIjD,EAAGC,EAtCHF,EAAIe,EAAEm4B,UAIV,OAHAwpB,GAAGH,GAAG70B,SACN7sB,EAAI,KAEIkC,GACN,IAAK,QACHopB,EAAIkR,GAAGr9B,EAAGmsB,GACVjpB,EAAIm6B,GAAGr9B,EAAGkD,GACVrC,EAAI,GACJ,MAEF,IAAK,SACHsrB,EAAIgS,GAAGn+B,EAAGmsB,GACVjpB,EAAIi7B,GAAGn+B,EAAGkD,GACVrC,EAAI,GACJ,MAEF,IAAK,SACHsrB,EAAI1oB,EAAE,GAAI0oB,EAAG,CACX5rB,WAAO,IAET2C,EAAIO,EAAE,GAAIP,EAAG,CACX3C,WAAO,IAETM,EAAI,GACJ,MAEF,IAAK,WACHsrB,EAAIqS,GAAGx+B,EAAGmsB,GACVjpB,EAAIs7B,GAAGx+B,EAAGkD,GACVrC,EAAI,GACJ,MAEF,QACE,mBAAsBsrB,EAAEi9B,SAAW,mBAAsBlmD,EAAEkmD,UAAYppD,EAAEqpD,QAAUjW,IAOvF,IAAKnzC,KAJL+yC,GAAGjwC,EAAGG,GAENH,EAAI,KAEMopB,EACR,IAAKjpB,EAAE8Y,eAAe/b,IAAMksB,EAAEnQ,eAAe/b,IAAM,MAAQksB,EAAElsB,GAAI,GAAI,UAAYA,EAAG,IAAKC,KAAKF,EAAImsB,EAAElsB,GAClGD,EAAEgc,eAAe9b,KAAO6C,IAAMA,EAAI,IAAKA,EAAE7C,GAAK,QACzC,4BAA8BD,GAAK,aAAeA,GAAK,mCAAqCA,GAAK,6BAA+BA,GAAK,cAAgBA,IAAMk3B,EAAGnb,eAAe/b,GAAKY,IAAMA,EAAI,KAAOA,EAAIA,GAAK,IAAIoC,KAAKhD,EAAG,OAGjO,IAAKA,KAAKiD,EAAG,CACX,IAAI/C,EAAI+C,EAAEjD,GAEV,GADAD,EAAI,MAAQmsB,EAAIA,EAAElsB,QAAK,EACnBiD,EAAE8Y,eAAe/b,IAAME,IAAMH,IAAM,MAAQG,GAAK,MAAQH,GAAI,GAAI,UAAYC,EAC9E,GAAID,EAAG,CACL,IAAKE,KAAKF,GACPA,EAAEgc,eAAe9b,IAAMC,GAAKA,EAAE6b,eAAe9b,KAAO6C,IAAMA,EAAI,IAAKA,EAAE7C,GAAK,IAG7E,IAAKA,KAAKC,EACRA,EAAE6b,eAAe9b,IAAMF,EAAEE,KAAOC,EAAED,KAAO6C,IAAMA,EAAI,IAAKA,EAAE7C,GAAKC,EAAED,SAE9D6C,IAAMlC,IAAMA,EAAI,IAAKA,EAAEoC,KAAKhD,EAAG8C,IAAKA,EAAI5C,MAC1C,4BAA8BF,GAAKE,EAAIA,EAAIA,EAAEuyB,YAAS,EAAQ1yB,EAAIA,EAAIA,EAAE0yB,YAAS,EAAQ,MAAQvyB,GAAKH,IAAMG,IAAMU,EAAIA,GAAK,IAAIoC,KAAKhD,EAAG,GAAKE,IAAM,aAAeF,EAAID,IAAMG,GAAK,iBAAoBA,GAAK,iBAAoBA,IAAMU,EAAIA,GAAK,IAAIoC,KAAKhD,EAAG,GAAKE,GAAK,mCAAqCF,GAAK,6BAA+BA,IAAMk3B,EAAGnb,eAAe/b,IAAM,MAAQE,GAAKgzC,GAAGhwC,EAAGlD,GAAIY,GAAKb,IAAMG,IAAMU,EAAI,MAAQA,EAAIA,GAAK,IAAIoC,KAAKhD,EAAGE,IAG3b4C,IAAMlC,EAAIA,GAAK,IAAIoC,KAAK,QAASF,GACjCI,EAAItC,GACHE,EAAE4+C,YAAcx8C,IAAM4lD,GAAGhoD,KAI9BknD,GAAK,SAAYpnD,EAAGE,EAAGgC,EAAGG,GACxBH,IAAMG,GAAK6lD,GAAGhoD,IAqEhB,IAAIuoD,GAAK,mBAAsBC,QAAUA,QAAUra,IAEnD,SAASsa,GAAG3oD,EAAGE,GACb,IAAIgC,EAAIhC,EAAEmc,OACNha,EAAInC,EAAEooD,MACV,OAASjmD,GAAK,OAASH,IAAMG,EAAIo3B,EAAGv3B,IACpC,OAASA,GAAKs3B,EAAGt3B,EAAEgE,MACnBhG,EAAIA,EAAER,MACN,OAASM,GAAK,IAAMA,EAAE4b,KAAO4d,EAAGx5B,EAAEkG,MAElC,IACEpF,QAAQI,MAAMhB,GACd,MAAOoC,GACPnC,YAAW,WACT,MAAMmC,MAaZ,SAASsmD,GAAG5oD,GACV,IAAIE,EAAIF,EAAE0H,IACV,GAAI,OAASxH,EAAG,GAAI,mBAAsBA,EAAG,IAC3CA,EAAE,MACF,MAAOgC,GACP2mD,GAAG7oD,EAAGkC,QACDhC,EAAE2sB,QAAU,KAGrB,SAASi8B,GAAG9oD,EAAGE,GACb,OAAQA,EAAE0b,KACR,KAAK,EACL,KAAK,GACL,KAAK,GACHmtC,GAAG,EAAG,EAAG7oD,GACT,MAEF,KAAK,EACH,GAAkB,IAAdA,EAAE+/B,WAAmB,OAASjgC,EAAG,CACnC,IAAIkC,EAAIlC,EAAEoiD,cACN//C,EAAIrC,EAAEmgC,cAEVjgC,GADAF,EAAIE,EAAEm4B,WACAkoB,wBAAwBrgD,EAAE+gD,cAAgB/gD,EAAEgG,KAAOhE,EAAI06C,GAAG18C,EAAEgG,KAAMhE,GAAIG,GAC5ErC,EAAEgpD,oCAAsC9oD,EAG1C,MAEF,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,GACH,MAEF,QACE,MAAM+I,MAAM7I,EAAE,OAIpB,SAAS2oD,GAAG/oD,EAAGE,EAAGgC,GAIhB,GAAI,QAFJA,EAAI,QADJA,EAAIA,EAAE48C,aACW58C,EAAEk8C,WAAa,MAEhB,CACd,IAAI/7C,EAAIH,EAAIA,EAAEwD,KAEd,EAAG,CACD,GAAI,IAAOrD,EAAEuZ,IAAM5b,GAAI,CACrB,IAAIsC,EAAID,EAAEsiD,QACVtiD,EAAEsiD,aAAU,OACZ,IAAWriD,GAAKA,IAGlB,IAAOD,EAAEuZ,IAAM1b,KAAOoC,EAAID,EAAEwH,OAAQxH,EAAEsiD,QAAUriD,KAChDD,EAAIA,EAAEqD,WACCrD,IAAMH,IAInB,SAAS+mD,GAAGjpD,EAAGE,EAAGgC,GAGhB,OAFA,mBAAsBgnD,IAAMA,GAAGhpD,GAEvBA,EAAE0b,KACR,KAAK,EACL,KAAK,GACL,KAAK,GACL,KAAK,GAGH,GAAI,QAFJ5b,EAAIE,EAAE4+C,cAE+B,QAAlB9+C,EAAIA,EAAEo+C,YAAyB,CAChD,IAAI/7C,EAAIrC,EAAE0F,KACV22C,GAAG,GAAKn6C,EAAI,GAAKA,GAAG,WAClB,IAAIlC,EAAIqC,EAER,EAAG,CACD,IAAIH,EAAIlC,EAAE2kD,QAEV,QAAI,IAAWziD,EAAG,CAChB,IAAI/C,EAAIe,EAER,IACEgC,IACA,MAAO9C,GACPypD,GAAG1pD,EAAGC,IAIVY,EAAIA,EAAE0F,WACC1F,IAAMqC,MAInB,MAEF,KAAK,EACHumD,GAAG1oD,GAEH,mBADAgC,EAAIhC,EAAEm4B,WACkB7tB,sBA1G9B,SAAYxK,EAAGE,GACb,IACEA,EAAEuF,MAAQzF,EAAEoiD,cAAeliD,EAAEiJ,MAAQnJ,EAAEmgC,cAAejgC,EAAEsK,uBACxD,MAAOtI,GACP2mD,GAAG7oD,EAAGkC,IAsG4CinD,CAAGjpD,EAAGgC,GACtD,MAEF,KAAK,EACH0mD,GAAG1oD,GACH,MAEF,KAAK,EACHkpD,GAAGppD,EAAGE,EAAGgC,IAIf,SAASmnD,GAAGrpD,GACV,IAAIE,EAAIF,EAAEggC,UACVhgC,EAAU,OAAI,KACdA,EAAEmkB,MAAQ,KACVnkB,EAAEmgC,cAAgB,KAClBngC,EAAE8+C,YAAc,KAChB9+C,EAAEw2B,aAAe,KACjBx2B,EAAEggC,UAAY,KACdhgC,EAAEm+C,YAAc,KAChBn+C,EAAEo+C,WAAa,KACfp+C,EAAE+lD,aAAe,KACjB/lD,EAAEoiD,cAAgB,KAClB,OAASliD,GAAKmpD,GAAGnpD,GAGnB,SAASopD,GAAGtpD,GACV,OAAO,IAAMA,EAAE4b,KAAO,IAAM5b,EAAE4b,KAAO,IAAM5b,EAAE4b,IAG/C,SAAS2tC,GAAGvpD,GACVA,EAAG,CACD,IAAK,IAAIE,EAAIF,EAAU,OAAG,OAASE,GAAI,CACrC,GAAIopD,GAAGppD,GAAI,CACT,IAAIgC,EAAIhC,EACR,MAAMF,EAGRE,EAAIA,EAAU,OAGhB,MAAM+I,MAAM7I,EAAE,MAKhB,OAFAF,EAAIgC,EAAEm2B,UAEEn2B,EAAE0Z,KACR,KAAK,EACH,IAAIvZ,GAAI,EACR,MAEF,KAAK,EAKL,KAAK,EACHnC,EAAIA,EAAEiiC,cACN9/B,GAAI,EACJ,MAEF,QACE,MAAM4G,MAAM7I,EAAE,MAGJ,GAAd8B,EAAE+9B,YAAmBtB,GAAGz+B,EAAG,IAAKgC,EAAE+9B,YAAc,IAEhDjgC,EAAGE,EAAG,IAAKgC,EAAIlC,IAAK,CAClB,KAAO,OAASkC,EAAEq+B,SAAU,CAC1B,GAAI,OAASr+B,EAAU,QAAKonD,GAAGpnD,EAAU,QAAI,CAC3CA,EAAI,KACJ,MAAMlC,EAGRkC,EAAIA,EAAU,OAKhB,IAFAA,EAAEq+B,QAAgB,OAAIr+B,EAAU,OAE3BA,EAAIA,EAAEq+B,QAAS,IAAMr+B,EAAE0Z,KAAO,IAAM1Z,EAAE0Z,KAAO,KAAO1Z,EAAE0Z,KAAM,CAC/D,GAAkB,EAAd1Z,EAAE+9B,UAAe,SAAS//B,EAC9B,GAAI,OAASgC,EAAEiiB,OAAS,IAAMjiB,EAAE0Z,IAAK,SAAS1b,EAAOgC,EAAEiiB,MAAc,OAAIjiB,EAAGA,EAAIA,EAAEiiB,MAGpF,KAAoB,EAAdjiB,EAAE+9B,WAAgB,CACtB/9B,EAAIA,EAAEm2B,UACN,MAAMr4B,GAIV,IAAK,IAAIsC,EAAItC,IAAK,CAChB,IAAIsrB,EAAI,IAAMhpB,EAAEsZ,KAAO,IAAMtZ,EAAEsZ,IAE/B,GAAI0P,EAAG,CACL,IAAInsB,EAAImsB,EAAIhpB,EAAE+1B,UAAY/1B,EAAE+1B,UAAU9uB,SACtC,GAAIrH,EACF,GAAIG,EAAG,CAEL,IAAIjD,EAAID,EACRA,EAAI+C,EACJ,KAHAopB,EAAIprB,GAGI2+B,SAAWvT,EAAEuF,WAAW24B,aAAapqD,EAAGD,GAAKmsB,EAAEk+B,aAAapqD,EAAGD,QAClEe,EAAEspD,aAAarqD,EAAG+C,QACpBG,GAAY,KAAPjD,EAAIc,GAAW2+B,UAAYvT,EAAIlsB,EAAEyxB,YAAc24B,aAAarqD,EAAGC,IAAOksB,EAAIlsB,GAAKoxB,YAAYrxB,GAAgC,OAA3BC,EAAIA,EAAEqqD,sBAAmD,OAASn+B,EAAEk9B,UAAYl9B,EAAEk9B,QAAUjW,KAAOryC,EAAEswB,YAAYrxB,QACxN,GAAI,IAAMmD,EAAEsZ,KAAO,OAAStZ,EAAE6hB,MAAO,CAC1C7hB,EAAE6hB,MAAc,OAAI7hB,EACpBA,EAAIA,EAAE6hB,MACN,SAGF,GAAI7hB,IAAMtC,EAAG,MAEb,KAAO,OAASsC,EAAEi+B,SAAU,CAC1B,GAAI,OAASj+B,EAAU,QAAKA,EAAU,SAAMtC,EAAG,OAC/CsC,EAAIA,EAAU,OAGhBA,EAAEi+B,QAAgB,OAAIj+B,EAAU,OAChCA,EAAIA,EAAEi+B,SAIV,SAAS6oB,GAAGppD,EAAGE,EAAGgC,GAChB,IAAK,IAAmBopB,EAAGnsB,EAAlBkD,EAAInC,EAAGoC,GAAI,IAAY,CAC9B,IAAKA,EAAG,CACNA,EAAID,EAAU,OAEdrC,EAAG,OAAS,CACV,GAAI,OAASsC,EAAG,MAAM2G,MAAM7I,EAAE,MAG9B,OAFAkrB,EAAIhpB,EAAE+1B,UAEE/1B,EAAEsZ,KACR,KAAK,EACHzc,GAAI,EACJ,MAAMa,EAER,KAAK,EAKL,KAAK,EACHsrB,EAAIA,EAAE6W,cACNhjC,GAAI,EACJ,MAAMa,EAGVsC,EAAIA,EAAU,OAGhBA,GAAI,EAGN,GAAI,IAAMD,EAAEuZ,KAAO,IAAMvZ,EAAEuZ,IAAK,CAC9B5b,EAAG,IAAK,IAAIZ,EAAIY,EAAGX,EAAIgD,EAAG/C,EAAI4C,EAAGS,EAAItD,IACnC,GAAI4pD,GAAG7pD,EAAGuD,EAAGrD,GAAI,OAASqD,EAAEwhB,OAAS,IAAMxhB,EAAEiZ,IAAKjZ,EAAEwhB,MAAc,OAAIxhB,EAAGA,EAAIA,EAAEwhB,UAAW,CACxF,GAAIxhB,IAAMtD,EAAG,MAEb,KAAO,OAASsD,EAAE49B,SAAU,CAC1B,GAAI,OAAS59B,EAAU,QAAKA,EAAU,SAAMtD,EAAG,MAAMW,EACrD2C,EAAIA,EAAU,OAGhBA,EAAE49B,QAAgB,OAAI59B,EAAU,OAChCA,EAAIA,EAAE49B,QAIVphC,GAAKC,EAAIksB,EAAGjsB,EAAIgD,EAAEg2B,UAAW,IAAMj5B,EAAEy/B,SAAWz/B,EAAEyxB,WAAWC,YAAYzxB,GAAKD,EAAE0xB,YAAYzxB,IAAMisB,EAAEwF,YAAYzuB,EAAEg2B,gBAC7G,GAAI,IAAMh2B,EAAEuZ,KACjB,GAAI,OAASvZ,EAAE8hB,MAAO,CACpBmH,EAAIjpB,EAAEg2B,UAAU8J,cAChBhjC,GAAI,EACJkD,EAAE8hB,MAAc,OAAI9hB,EACpBA,EAAIA,EAAE8hB,MACN,eAEG,GAAI8kC,GAAGjpD,EAAGqC,EAAGH,GAAI,OAASG,EAAE8hB,MAAO,CACxC9hB,EAAE8hB,MAAc,OAAI9hB,EACpBA,EAAIA,EAAE8hB,MACN,SAGF,GAAI9hB,IAAMnC,EAAG,MAEb,KAAO,OAASmC,EAAEk+B,SAAU,CAC1B,GAAI,OAASl+B,EAAU,QAAKA,EAAU,SAAMnC,EAAG,OAE/C,KADAmC,EAAIA,EAAU,QACNuZ,MAAQtZ,GAAI,GAGtBD,EAAEk+B,QAAgB,OAAIl+B,EAAU,OAChCA,EAAIA,EAAEk+B,SAIV,SAASmpB,GAAG1pD,EAAGE,GACb,OAAQA,EAAE0b,KACR,KAAK,EACL,KAAK,GACL,KAAK,GACL,KAAK,GACHmtC,GAAG,EAAG,EAAG7oD,GACT,MAEF,KAAK,EACH,MAEF,KAAK,EACH,IAAIgC,EAAIhC,EAAEm4B,UAEV,GAAI,MAAQn2B,EAAG,CACb,IAAIG,EAAInC,EAAEkiD,cACN9/C,EAAI,OAAStC,EAAIA,EAAEoiD,cAAgB//C,EACvCrC,EAAIE,EAAEgG,KACN,IAAIolB,EAAIprB,EAAE4+C,YAGV,GAFA5+C,EAAE4+C,YAAc,KAEZ,OAASxzB,EAAG,CAMd,IALAppB,EAAE8xC,IAAM3xC,EACR,UAAYrC,GAAK,UAAYqC,EAAE6D,MAAQ,MAAQ7D,EAAE0I,MAAQiyB,GAAG96B,EAAGG,GAC/D+vC,GAAGpyC,EAAGsC,GACNpC,EAAIkyC,GAAGpyC,EAAGqC,GAELC,EAAI,EAAGA,EAAIgpB,EAAEnpB,OAAQG,GAAK,EAAG,CAChC,IAAInD,EAAImsB,EAAEhpB,GACNlD,EAAIksB,EAAEhpB,EAAI,GACd,UAAYnD,EAAI+xC,GAAGhvC,EAAG9C,GAAK,4BAA8BD,EAAIk/B,GAAGn8B,EAAG9C,GAAK,aAAeD,EAAIw/B,GAAGz8B,EAAG9C,GAAKq8B,GAAGv5B,EAAG/C,EAAGC,EAAGc,GAGpH,OAAQF,GACN,IAAK,QACHi9B,GAAG/6B,EAAGG,GACN,MAEF,IAAK,WACHw7B,GAAG37B,EAAGG,GACN,MAEF,IAAK,SACHnC,EAAIgC,EAAEy6B,cAAcgtB,YAAaznD,EAAEy6B,cAAcgtB,cAAgBtnD,EAAEunD,SAAuB,OAAb5pD,EAAIqC,EAAE3C,OAAmB89B,GAAGt7B,IAAKG,EAAEunD,SAAU5pD,GAAG,GAAME,MAAQmC,EAAEunD,WAAa,MAAQvnD,EAAEq6B,aAAec,GAAGt7B,IAAKG,EAAEunD,SAAUvnD,EAAEq6B,cAAc,GAAMc,GAAGt7B,IAAKG,EAAEunD,SAAUvnD,EAAEunD,SAAW,GAAK,IAAI,MAK/Q,MAEF,KAAK,EACH,GAAI,OAAS1pD,EAAEm4B,UAAW,MAAMpvB,MAAM7I,EAAE,MACxCF,EAAEm4B,UAAUyG,UAAY5+B,EAAEkiD,cAC1B,MAEF,KAAK,GACHliD,EAAIA,EAAEm4B,WACJ6J,UAAYhiC,EAAEgiC,SAAU,EAAIQ,GAAGxiC,EAAEiiC,gBACnC,MAEF,KAAK,GACH,MAEF,KAAK,GAGH,GAFAjgC,EAAIhC,EACJ,OAASA,EAAEigC,cAAgB99B,GAAI,GAAMA,GAAI,EAAIH,EAAIhC,EAAEikB,MAAO0lC,GAAK3N,MAC3D,OAASh6C,EAAGlC,EAAG,IAAKA,EAAIkC,IAAK,CAC/B,GAAI,IAAMlC,EAAE4b,IAAK0P,EAAItrB,EAAEq4B,UAAWh2B,EAAkB,mBAAbipB,EAAIA,EAAEhE,OAA+B6pB,YAAc7lB,EAAE6lB,YAAY,UAAW,OAAQ,aAAe7lB,EAAE7T,QAAU,QAAW6T,EAAItrB,EAAEq4B,UAAsC/1B,EAAI,OAA/BA,EAAItC,EAAEoiD,cAAc96B,QAAyChlB,EAAE6Y,eAAe,WAAa7Y,EAAEmV,QAAU,KAAM6T,EAAEhE,MAAM7P,QAAUu5B,GAAG,UAAW1uC,SAAS,GAAI,IAAMtC,EAAE4b,IAAK5b,EAAEq4B,UAAUyG,UAAYz8B,EAAI,GAAKrC,EAAEoiD,kBAAmB,IAAI,KAAOpiD,EAAE4b,KAAO,OAAS5b,EAAEmgC,eAAiB,OAASngC,EAAEmgC,cAAcC,WAAY,EACle9U,EAAItrB,EAAEmkB,MAAMoc,SACF,OAAIvgC,EACdA,EAAIsrB,EACJ,SACK,GAAI,OAAStrB,EAAEmkB,MAAO,CAC3BnkB,EAAEmkB,MAAc,OAAInkB,EACpBA,EAAIA,EAAEmkB,MACN,UAEF,GAAInkB,IAAMkC,EAAG,MAAMlC,EAEnB,KAAO,OAASA,EAAEugC,SAAU,CAC1B,GAAI,OAASvgC,EAAU,QAAKA,EAAU,SAAMkC,EAAG,MAAMlC,EACrDA,EAAIA,EAAU,OAGhBA,EAAEugC,QAAgB,OAAIvgC,EAAU,OAChCA,EAAIA,EAAEugC,QAERupB,GAAG5pD,GACH,MAEF,KAAK,GACH4pD,GAAG5pD,GACH,MAEF,KAAK,GAGL,KAAK,GAGL,KAAK,GACH,MAEF,QACE,MAAM+I,MAAM7I,EAAE,OAIpB,SAAS0pD,GAAG9pD,GACV,IAAIE,EAAIF,EAAE8+C,YAEV,GAAI,OAAS5+C,EAAG,CACdF,EAAE8+C,YAAc,KAChB,IAAI58C,EAAIlC,EAAEq4B,UACV,OAASn2B,IAAMA,EAAIlC,EAAEq4B,UAAY,IAAIowB,IACrCvoD,EAAEiO,SAAQ,SAAUjO,GAClB,IAAImC,EAAI0nD,GAAG3uC,KAAK,KAAMpb,EAAGE,GACzBgC,EAAEqsC,IAAIruC,KAAOgC,EAAEssC,IAAItuC,GAAIA,EAAE8pD,KAAK3nD,EAAGA,QAKvC,IAAI4nD,GAAK,mBAAsB9b,QAAUA,QAAUxT,IAEnD,SAASuvB,GAAGlqD,EAAGE,EAAGgC,IAChBA,EAAIs8C,GAAGt8C,EAAG,OACR0Z,IAAM,EACR1Z,EAAEw8C,QAAU,CACVn9B,QAAS,MAEX,IAAIlf,EAAInC,EAAER,MAOV,OALAwC,EAAEwB,SAAW,WACXymD,KAAOA,IAAK,EAAIC,GAAK/nD,GACrBsmD,GAAG3oD,EAAGE,IAGDgC,EAGT,SAASmoD,GAAGrqD,EAAGE,EAAGgC,IAChBA,EAAIs8C,GAAGt8C,EAAG,OACR0Z,IAAM,EACR,IAAIvZ,EAAIrC,EAAEkG,KAAK6gD,yBAEf,GAAI,mBAAsB1kD,EAAG,CAC3B,IAAIC,EAAIpC,EAAER,MAEVwC,EAAEw8C,QAAU,WAEV,OADAiK,GAAG3oD,EAAGE,GACCmC,EAAEC,IAIb,IAAIgpB,EAAItrB,EAAEq4B,UAQV,OAPA,OAAS/M,GAAK,mBAAsBA,EAAEg/B,oBAAsBpoD,EAAEwB,SAAW,WACvE,mBAAsBrB,IAAM,OAASkoD,GAAKA,GAAK,IAAIlc,IAAI,CAACtpC,OAASwlD,GAAG/b,IAAIzpC,MAAO4jD,GAAG3oD,EAAGE,IACrF,IAAIgC,EAAIhC,EAAEooD,MACVvjD,KAAKulD,kBAAkBpqD,EAAER,MAAO,CAC9B8qD,eAAgB,OAAStoD,EAAIA,EAAI,OAG9BA,EAGT,IAg5CIuoD,GAh5CAC,GAAKjpD,KAAKkpD,KACVC,GAAKryB,EAAG9C,uBACRo1B,GAAKtyB,EAAG3C,kBAWRryB,GAVI,EAWJC,GAAI,KACJC,GAAI,KACJI,GAAI,EACJC,GAVK,EAWLgnD,GAAK,KACLC,GAAK,WACLC,GAAK,WACLC,GAAK,KACLC,GAAK,EACLC,IAAK,EACLtB,GAAK,EAEL7lD,GAAI,KACJmmD,IAAK,EACLC,GAAK,KACLG,GAAK,KACLa,IAAK,EACLC,GAAK,KACLC,GAAK,GACLC,GAAK,KACLC,GAAK,EACLC,GAAK,KACLC,GAAK,EAET,SAAS9L,KACP,OApCM,IAoCM,GAAJr8C,IAAuB,YAAc24C,KAAO,GAAK,GAAK,IAAMwP,GAAKA,GAAKA,GAAK,YAAcxP,KAAO,GAAK,GAG/G,SAAS2D,GAAG7/C,EAAGE,EAAGgC,GAEhB,GAAI,IAAW,GADfhC,EAAIA,EAAE0M,OACa,OAAO,WAC1B,IAAIvK,EAAI85C,KACR,GAAI,IAAW,EAAJj8C,GAAQ,OAAO,KAAOmC,EAAI,WAAa,WAClD,GA5CM,IAEC,GA0CFkB,IAAe,OAAOM,GAC3B,GAAI,OAAS3B,EAAGlC,EAAI28C,GAAG38C,EAAiB,EAAdkC,EAAEypD,WAAiB,IAAK,UAAU,OAAQtpD,GAClE,KAAK,GACHrC,EAAI,WACJ,MAEF,KAAK,GACHA,EAAI28C,GAAG38C,EAAG,IAAK,KACf,MAEF,KAAK,GACL,KAAK,GACHA,EAAI28C,GAAG38C,EAAG,IAAK,KACf,MAEF,KAAK,GACHA,EAAI,EACJ,MAEF,QACE,MAAMiJ,MAAM7I,EAAE,MAGlB,OADA,OAASoD,IAAKxD,IAAM6D,MAAO7D,EACpBA,EAGT,SAAS8/C,GAAG9/C,EAAGE,GACb,GAAI,GAAKsrD,GAAI,MAAMA,GAAK,EAAGC,GAAK,KAAMxiD,MAAM7I,EAAE,MAG9C,GAAI,QAFJJ,EAAI4rD,GAAG5rD,EAAGE,IAEM,CACd,IAAIgC,EAAIi6C,KACR,aAAej8C,EA5EX,IACC,EA2EeqD,KA5EhB,IA4EsC,GAAJA,IAAuBsoD,GAAG7rD,IAAMiE,GAAEjE,GA5EpE,IA4EwEuD,IAAWk5C,MAAQx4C,GAAEjE,GA5E7F,IA6EC,EAAJuD,KAAgB,KAAOrB,GAAK,KAAOA,IAAM,OAASqpD,GAAKA,GAAK,IAAI5wB,IAAI,CAAC,CAAC36B,EAAGE,WAAwB,KAAhBgC,EAAIqpD,GAAG18C,IAAI7O,KAAqBkC,EAAIhC,IAAMqrD,GAAGhlC,IAAIvmB,EAAGE,KAI1I,SAAS0rD,GAAG5rD,EAAGE,GACbF,EAAE4D,eAAiB1D,IAAMF,EAAE4D,eAAiB1D,GAC5C,IAAIgC,EAAIlC,EAAEggC,UACV,OAAS99B,GAAKA,EAAE0B,eAAiB1D,IAAMgC,EAAE0B,eAAiB1D,GAC1D,IAAImC,EAAIrC,EAAU,OACdsC,EAAI,KACR,GAAI,OAASD,GAAK,IAAMrC,EAAE4b,IAAKtZ,EAAItC,EAAEq4B,eAAe,KAAO,OAASh2B,GAAI,CAKtE,GAJAH,EAAIG,EAAE29B,UACN39B,EAAEg7C,oBAAsBn9C,IAAMmC,EAAEg7C,oBAAsBn9C,GACtD,OAASgC,GAAKA,EAAEm7C,oBAAsBn9C,IAAMgC,EAAEm7C,oBAAsBn9C,GAEhE,OAASmC,EAAU,QAAK,IAAMA,EAAEuZ,IAAK,CACvCtZ,EAAID,EAAEg2B,UACN,MAGFh2B,EAAIA,EAAU,OAGhB,OADA,OAASC,IAAMkB,KAAMlB,IAAM88C,GAAGl/C,GA3FvB,IA2F2B4D,IAAYgoD,GAAGxpD,EAAGuB,KAAKkoD,GAAGzpD,EAAGpC,IACxDoC,EAGT,SAAS0pD,GAAGhsD,GACV,IAAIE,EAAIF,EAAEisD,gBACV,OAAI,IAAM/rD,EAAUA,EAEfgsD,GAAGlsD,EADRE,EAAIF,EAAEmsD,mBAENjsD,EAAIF,EAAEosD,iBACNpsD,EAAIA,EAAEqsD,uBACSnsD,EAAIF,EAHGE,EAMxB,SAAS+D,GAAEjE,GACT,GAAI,IAAMA,EAAEisD,gBAAiBjsD,EAAEssD,uBAAyB,WAAYtsD,EAAEusD,iBAAmB,GAAIvsD,EAAEwsD,aAAejQ,GAAGsP,GAAGzwC,KAAK,KAAMpb,QAAS,CACtI,IAAIE,EAAI8rD,GAAGhsD,GACPkC,EAAIlC,EAAEwsD,aACV,GAAI,IAAMtsD,EAAG,OAASgC,IAAMlC,EAAEwsD,aAAe,KAAMxsD,EAAEssD,uBAAyB,EAAGtsD,EAAEusD,iBAAmB,QAAS,CAC7G,IAAIlqD,EAAIu9C,KAGR,GAFA,aAAe1/C,EAAImC,EAAI,GAAK,IAAMnC,GAAK,IAAMA,EAAImC,EAAI,GAAyDA,EAAI,IAAvDA,EAAI,IAAM,WAAanC,GAAK,IAAM,WAAamC,IAAiB,GAAK,KAAOA,EAAI,GAAK,MAAQA,EAAI,GAAK,GAE7J,OAASH,EAAG,CACd,IAAII,EAAItC,EAAEusD,iBACV,GAAIvsD,EAAEssD,yBAA2BpsD,GAAKoC,GAAKD,EAAG,OAC9CH,IAAM25C,IAAMV,GAAGj5C,GAGjBlC,EAAEssD,uBAAyBpsD,EAC3BF,EAAEusD,iBAAmBlqD,EACrBnC,EAAI,aAAeA,EAAIq8C,GAAGsP,GAAGzwC,KAAK,KAAMpb,IAAMs8C,GAAGj6C,EAAGoqD,GAAGrxC,KAAK,KAAMpb,GAAI,CACpE2E,QAAS,IAAM,WAAazE,GAAKg8C,OAEnCl8C,EAAEwsD,aAAetsD,IAKvB,SAASusD,GAAGzsD,EAAGE,GAEb,GADAwrD,GAAK,EACDxrD,EAAG,OAAiBwsD,GAAG1sD,EAAbE,EAAI0/C,MAAgB37C,GAAEjE,GAAI,KACxC,IAAIkC,EAAI8pD,GAAGhsD,GAEX,GAAI,IAAMkC,EAAG,CAEX,GADAhC,EAAIF,EAAEwsD,aA/IF,IAgJK,GAAJjpD,IAAsB,MAAM0F,MAAM7I,EAAE,MAIzC,GAHAusD,KACA3sD,IAAMwD,IAAKtB,IAAM2B,IAAK+oD,GAAG5sD,EAAGkC,GAExB,OAASuB,GAAG,CACd,IAAIpB,EAAIkB,GACRA,IApJG,GAuJH,IAFA,IAAIjB,EAAIuqD,OAGN,IACEC,KACA,MACA,MAAO1tD,GACP2tD,GAAG/sD,EAAGZ,GAOV,GAHA69C,KACA15C,GAAIlB,EACJuoD,GAAG/9B,QAAUvqB,EA/JV,IAgKCwB,GAAU,MAAM5D,EAAI4qD,GAAI8B,GAAG5sD,EAAGkC,GAAI4pD,GAAG9rD,EAAGkC,GAAI+B,GAAEjE,GAAIE,EACtD,GAAI,OAASuD,GAAG,OAAQnB,EAAItC,EAAEgtD,aAAehtD,EAAE6sB,QAAQmT,UAAWhgC,EAAEitD,uBAAyB/qD,EAAGG,EAAIyB,GAAGN,GAAI,KAAMnB,GAC/G,KAnKC,EAoKD,KAnKC,EAoKC,MAAM4G,MAAM7I,EAAE,MAEhB,KArKC,EAsKCssD,GAAG1sD,EAAG,EAAIkC,EAAI,EAAIA,GAClB,MAEF,KAxKC,EA6KC,GAJA4pD,GAAG9rD,EAAGkC,GAENA,KADAG,EAAIrC,EAAEktD,qBACMltD,EAAEqsD,sBAAwBc,GAAG7qD,IAErC,aAAeyoD,IAA2B,IAApBzoD,EAAIunD,GA9J/B,IA8JyC3N,MAAe,CACrD,GAAIiP,GAAI,CACN,IAAI7/B,EAAItrB,EAAEosD,eAEV,GAAI,IAAM9gC,GAAKA,GAAKppB,EAAG,CACrBlC,EAAEosD,eAAiBlqD,EACnB0qD,GAAG5sD,EAAGkC,GACN,OAKJ,GAAI,KADJopB,EAAI0gC,GAAGhsD,KACQsrB,IAAMppB,EAAG,MAExB,GAAI,IAAMG,GAAKA,IAAMH,EAAG,CACtBlC,EAAEosD,eAAiB/pD,EACnB,MAGFrC,EAAEotD,cAAgB7Z,GAAG8Z,GAAGjyC,KAAK,KAAMpb,GAAIsC,GACvC,MAGF+qD,GAAGrtD,GACH,MAEF,KAtMC,EA2MC,GAJA8rD,GAAG9rD,EAAGkC,GAENA,KADAG,EAAIrC,EAAEktD,qBACMltD,EAAEqsD,sBAAwBc,GAAG7qD,IAErC6oD,KAA6B,KAAtB7oD,EAAItC,EAAEosD,iBAA2B9pD,GAAKJ,GAAI,CACnDlC,EAAEosD,eAAiBlqD,EACnB0qD,GAAG5sD,EAAGkC,GACN,MAIF,GAAI,KADJI,EAAI0pD,GAAGhsD,KACQsC,IAAMJ,EAAG,MAExB,GAAI,IAAMG,GAAKA,IAAMH,EAAG,CACtBlC,EAAEosD,eAAiB/pD,EACnB,MAKF,GAFA,aAAe2oD,GAAK3oD,EAAI,IAAM,WAAa2oD,IAAM9O,KAAO,aAAe6O,GAAK1oD,EAAI,GAAKA,EAAI,IAAM,WAAa0oD,IAAM,IAAyD,GAAX1oD,GAAzCC,EAAI45C,MAA6C75C,KAAaA,EAAI,IAAxDH,EAAI,IAAM,WAAaA,GAAKI,IAAgCD,GAAK,IAAMA,EAAI,IAAM,IAAMA,EAAI,IAAM,KAAOA,EAAI,KAAO,KAAOA,EAAI,KAAO,IAAMA,EAAI,IAAM,KAAOA,EAAI,KAAO,KAAOqoD,GAAGroD,EAAI,OAASA,KAAaA,EAAIH,IAE5U,GAAKG,EAAG,CACVrC,EAAEotD,cAAgB7Z,GAAG8Z,GAAGjyC,KAAK,KAAMpb,GAAIqC,GACvC,MAGFgrD,GAAGrtD,GACH,MAEF,KAlOC,EAmOC,GAAI,aAAe+qD,IAAM,OAASE,GAAI,CACpC3/B,EAAIy/B,GACJ,IAAI5rD,EAAI8rD,GAIR,GAFA,IADA5oD,EAA0B,EAAtBlD,EAAEmuD,mBACGjrD,EAAI,GAAKC,EAAoB,EAAhBnD,EAAEouD,YAAgFlrD,GAA/DipB,EAAI4wB,MAAQ,IAAM,WAAa5wB,IAAoB,EAAdnsB,EAAEwsD,WAAiB,QAAgBrpD,EAAI,EAAIA,EAAID,EAAIipB,GAE7H,GAAKjpB,EAAG,CACVypD,GAAG9rD,EAAGkC,GACNlC,EAAEotD,cAAgB7Z,GAAG8Z,GAAGjyC,KAAK,KAAMpb,GAAIqC,GACvC,OAIJgrD,GAAGrtD,GACH,MAEF,QACE,MAAMiJ,MAAM7I,EAAE,MAGlB,GADA6D,GAAEjE,GACEA,EAAEwsD,eAAiBtsD,EAAG,OAAOusD,GAAGrxC,KAAK,KAAMpb,IAInD,OAAO,KAGT,SAAS6rD,GAAG7rD,GACV,IAAIE,EAAIF,EAAEisD,gBAEV,GADA/rD,EAAI,IAAMA,EAAIA,EAAI,WACdF,EAAEitD,yBAA2B/sD,EAAGmtD,GAAGrtD,OAAQ,CAC7C,GA3QI,IA2QK,GAAJuD,IAAsB,MAAM0F,MAAM7I,EAAE,MAIzC,GAHAusD,KACA3sD,IAAMwD,IAAKtD,IAAM2D,IAAK+oD,GAAG5sD,EAAGE,GAExB,OAASuD,GAAG,CACd,IAAIvB,EAAIqB,GACRA,IA/QG,GAkRH,IAFA,IAAIlB,EAAIwqD,OAGN,IACEW,KACA,MACA,MAAOlrD,GACPyqD,GAAG/sD,EAAGsC,GAOV,GAHA26C,KACA15C,GAAIrB,EACJ0oD,GAAG/9B,QAAUxqB,EA1RV,IA2RCyB,GAAU,MAAM5B,EAAI4oD,GAAI8B,GAAG5sD,EAAGE,GAAI4rD,GAAG9rD,EAAGE,GAAI+D,GAAEjE,GAAIkC,EACtD,GAAI,OAASuB,GAAG,MAAMwF,MAAM7I,EAAE,MAC9BJ,EAAEgtD,aAAehtD,EAAE6sB,QAAQmT,UAC3BhgC,EAAEitD,uBAAyB/sD,EAC3BsD,GAAI,KACJ6pD,GAAGrtD,GACHiE,GAAEjE,IAGN,OAAO,KAeT,SAASytD,GAAGztD,EAAGE,GACb,IAAIgC,EAAIqB,GACRA,IAAK,EAEL,IACE,OAAOvD,EAAEE,GACT,QA9TI,KA+TJqD,GAAIrB,IAAcu6C,MAItB,SAASiR,GAAG1tD,EAAGE,GACb,IAAIgC,EAAIqB,GACRA,KAAM,EACNA,IArUO,EAuUP,IACE,OAAOvD,EAAEE,GACT,QA1UI,KA2UJqD,GAAIrB,IAAcu6C,MAItB,SAASmQ,GAAG5sD,EAAGE,GACbF,EAAEgtD,aAAe,KACjBhtD,EAAEitD,uBAAyB,EAC3B,IAAI/qD,EAAIlC,EAAEotD,cAEV,IADC,IAAMlrD,IAAMlC,EAAEotD,eAAiB,EAAG5Z,GAAGtxC,IAClC,OAASuB,GAAG,IAAKvB,EAAIuB,GAAU,OAAG,OAASvB,GAAI,CACjD,IAAIG,EAAIH,EAER,OAAQG,EAAEuZ,KACR,KAAK,EACH,IAAItZ,EAAID,EAAE6D,KAAKs0C,kBACf,MAASl4C,GAAqBm4C,KAC9B,MAEF,KAAK,EACHuH,KACAtH,KACA,MAEF,KAAK,EACHwH,GAAG7/C,GACH,MAEF,KAAK,EACH2/C,KACA,MAEF,KAAK,GAIL,KAAK,GACHxgD,GAAEiB,IACF,MAEF,KAAK,GACH06C,GAAG96C,GAGPH,EAAIA,EAAU,OAEhBsB,GAAIxD,EACJyD,GAAIs9C,GAAG/gD,EAAE6sB,QAAS,MAClBhpB,GAAI3D,EACJ4D,GAvXO,EAwXPgnD,GAAK,KACLE,GAAKD,GAAK,WACVE,GAAK,KACLC,GAAK,EACLC,IAAK,EAGP,SAAS4B,GAAG/sD,EAAGE,GACb,OAAG,CACD,IAGE,GAFA+8C,KACAwG,KACI,OAAShgD,IAAK,OAASA,GAAU,OAAG,OAAOK,GAnY5C,EAmYoDgnD,GAAK5qD,EAAG,KAE/DF,EAAG,CACD,IAAIkC,EAAIlC,EACJqC,EAAIoB,GAAU,OACdnB,EAAImB,GACJ6nB,EAAIprB,EAKR,GAJAA,EAAI2D,GACJvB,EAAE29B,WAAa,KACf39B,EAAE67C,YAAc77C,EAAE87C,WAAa,KAE3B,OAAS9yB,GAAK,iBAAoBA,GAAK,mBAAsBA,EAAE0+B,KAAM,CACvE,IAAI7qD,EAAImsB,EACJlsB,EAAI,IAAmB,EAAZqD,GAAEoqB,SACbxtB,EAAIgD,EAER,EAAG,CACD,IAAI/C,EAEJ,GAAIA,EAAI,KAAOD,EAAEuc,IAAK,CACpB,IAAIjZ,EAAItD,EAAE8gC,cACV,GAAI,OAASx9B,EAAGrD,EAAI,OAASqD,EAAEy9B,eAA0B,CACvD,IAAIh/B,EAAI/B,EAAE+iD,cACV9iD,OAAI,IAAW8B,EAAEomD,YAAgB,IAAOpmD,EAAEqmD,6BAAkCroD,IAIhF,GAAIE,EAAG,CACL,IAAIsB,EAAIvB,EAAEy/C,YAEV,GAAI,OAASl+C,EAAG,CACd,IAAIe,EAAI,IAAI0sC,IACZ1sC,EAAE6sC,IAAIrvC,GACNE,EAAEy/C,YAAcn9C,OACXf,EAAE4tC,IAAIrvC,GAEb,GAAI,IAAgB,EAATE,EAAEuN,MAAW,CAGtB,GAFAvN,EAAE4gC,WAAa,GACf39B,EAAE29B,YAAc,KACZ,IAAM39B,EAAEsZ,IAAK,GAAI,OAAStZ,EAAE09B,UAAW19B,EAAEsZ,IAAM,OAAQ,CACzD,IAAI/a,EAAI29C,GAAG,WAAY,MACvB39C,EAAE+a,IAAM,EACRijC,GAAGv8C,EAAGzB,GAERyB,EAAEsB,eAAiB,WACnB,MAAM5D,EAGRsrB,OAAI,EACJhpB,EAAIpC,EACJ,IAAIohD,EAAKp/C,EAAEyrD,UAGX,GAFA,OAASrM,GAAMA,EAAKp/C,EAAEyrD,UAAY,IAAI1D,GAAM3+B,EAAI,IAAI+iB,IAAOiT,EAAG/6B,IAAIpnB,EAAGmsB,SAAsB,KAAfA,EAAIg2B,EAAGzyC,IAAI1P,MAAqBmsB,EAAI,IAAI+iB,IAAOiT,EAAG/6B,IAAIpnB,EAAGmsB,KAEhIA,EAAEijB,IAAIjsC,GAAI,CACbgpB,EAAEkjB,IAAIlsC,GACN,IAAIQ,EAAI8qD,GAAGxyC,KAAK,KAAMlZ,EAAG/C,EAAGmD,GAC5BnD,EAAE6qD,KAAKlnD,EAAGA,GAGZzD,EAAE4gC,WAAa,KACf5gC,EAAEuE,eAAiB1D,EACnB,MAAMF,EAGRX,EAAIA,EAAU,aACP,OAASA,GAElBisB,EAAIriB,OAAOuwB,EAAGl3B,EAAE4D,OAAS,qBAAuB,wLAA0LuzB,EAAGn3B,IAlc9O,IAqcDwB,KAAaA,GAxcZ,GAycDwnB,EAAI+8B,GAAG/8B,EAAGhpB,GACVjD,EAAIgD,EAEJ,EAAG,CACD,OAAQhD,EAAEuc,KACR,KAAK,EACHzc,EAAImsB,EACJjsB,EAAE4gC,WAAa,KACf5gC,EAAEuE,eAAiB1D,EAEnB6+C,GAAG1/C,EADK6qD,GAAG7qD,EAAGF,EAAGe,IAEjB,MAAMF,EAER,KAAK,EACHb,EAAImsB,EACJ,IAAIvqB,EAAI1B,EAAE6G,KACNrG,EAAIR,EAAEg5B,UAEV,GAAI,IAAqB,GAAdh5B,EAAE4gC,aAAoB,mBAAsBl/B,EAAEgmD,0BAA4B,OAASlnD,GAAK,mBAAsBA,EAAEyqD,oBAAsB,OAASC,KAAOA,GAAGhc,IAAI1uC,KAAM,CAC5KR,EAAE4gC,WAAa,KACf5gC,EAAEuE,eAAiB1D,EAEnB6+C,GAAG1/C,EADKgrD,GAAGhrD,EAAGF,EAAGe,IAEjB,MAAMF,GAKZX,EAAIA,EAAU,aACP,OAASA,GAGpBoE,GAAIoqD,GAAGpqD,IACP,MAAOZ,GACP3C,EAAI2C,EACJ,SAGF,OAIJ,SAASgqD,KACP,IAAI7sD,EAAI4qD,GAAG/9B,QAEX,OADA+9B,GAAG/9B,QAAU22B,GACN,OAASxjD,EAAIwjD,GAAKxjD,EAG3B,SAASm/C,GAAGn/C,EAAGE,GACbF,EAAI+qD,IAAM,EAAI/qD,IAAM+qD,GAAK/qD,GACzB,OAASE,GAAKF,EAAIgrD,IAAM,EAAIhrD,IAAMgrD,GAAKhrD,EAAGirD,GAAK/qD,GAGjD,SAASk/C,GAAGp/C,GACVA,EAAIkrD,KAAOA,GAAKlrD,GAGlB,SAASwtD,KACP,KAAO,OAAS/pD,IACdA,GAAIqqD,GAAGrqD,IAIX,SAASqpD,KACP,KAAO,OAASrpD,KAAM23C,MACpB33C,GAAIqqD,GAAGrqD,IAIX,SAASqqD,GAAG9tD,GACV,IAAIE,EAAIuqD,GAAGzqD,EAAEggC,UAAWhgC,EAAG6D,IAI3B,OAHA7D,EAAEoiD,cAAgBpiD,EAAE+lD,aACpB,OAAS7lD,IAAMA,EAAI2tD,GAAG7tD,IACtB6qD,GAAGh+B,QAAU,KACN3sB,EAGT,SAAS2tD,GAAG7tD,GACVyD,GAAIzD,EAEJ,EAAG,CACD,IAAIE,EAAIuD,GAAEu8B,UAGV,GAFAhgC,EAAIyD,GAAU,OAEV,IAAqB,KAAdA,GAAEw8B,WAAmB,CAC9BjgC,EAAG,CACD,IAAIkC,EAAIhC,EAEJmC,EAAIwB,GACJvB,GAFJpC,EAAIuD,IAEMsiD,aAEV,OAAQ7lD,EAAE0b,KACR,KAAK,EAGL,KAAK,GACH,MAEF,KAAK,GACL,KAAK,EACH,MAEF,KAAK,EACHpZ,GAAEtC,EAAEgG,OAASu0C,KACb,MAEF,KAAK,EACHuH,KACAtH,MACAp4C,EAAIpC,EAAEm4B,WACJ4uB,iBAAmB3kD,EAAEqF,QAAUrF,EAAE2kD,eAAgB3kD,EAAE2kD,eAAiB,OACrE,OAAS/kD,GAAK,OAASA,EAAEiiB,QAAU+hC,GAAGhmD,IAAMgoD,GAAGhoD,GAEhD,MAEF,KAAK,EACHgiD,GAAGhiD,GACHmC,EAAIw/C,GAAGD,GAAG/0B,SACV,IAAIvB,EAAIprB,EAAEgG,KACV,GAAI,OAAShE,GAAK,MAAQhC,EAAEm4B,UAAW8uB,GAAGjlD,EAAGhC,EAAGorB,EAAGhpB,EAAGD,GAAIH,EAAEwF,MAAQxH,EAAEwH,MAAQxH,EAAE+/B,WAAa,UAAU,GAAI39B,EAAG,CAC5G,IAAInD,EAAI0iD,GAAGH,GAAG70B,SAEd,GAAIq5B,GAAGhmD,GAAI,CAET,IAAId,GADJkD,EAAIpC,GACMm4B,UACVn2B,EAAII,EAAE4D,KACN,IAAI7G,EAAIiD,EAAE8/C,cACN9iD,EAAI+C,EAMR,OALAjD,EAAE20C,IAAMzxC,EACRlD,EAAE40C,IAAM30C,EACRisB,OAAI,EACJjpB,EAAIjD,EAEI8C,GACN,IAAK,SACL,IAAK,SACL,IAAK,QACHX,GAAE,OAAQc,GACV,MAEF,IAAK,QACL,IAAK,QACH,IAAKjD,EAAI,EAAGA,EAAI0gC,GAAG39B,OAAQ/C,IACzBmC,GAAEu+B,GAAG1gC,GAAIiD,GAGX,MAEF,IAAK,SACHd,GAAE,QAASc,GACX,MAEF,IAAK,MACL,IAAK,QACL,IAAK,OACHd,GAAE,QAASc,GACXd,GAAE,OAAQc,GACV,MAEF,IAAK,OACHd,GAAE,QAASc,GACXd,GAAE,SAAUc,GACZ,MAEF,IAAK,UACHd,GAAE,SAAUc,GACZ,MAEF,IAAK,QACHw6B,GAAGx6B,EAAGhD,GACNkC,GAAE,UAAWc,GACbiwC,GAAGhzC,EAAG,YACN,MAEF,IAAK,SACH+C,EAAEs6B,cAAgB,CAChBgtB,cAAetqD,EAAEuqD,UAEnBroD,GAAE,UAAWc,GACbiwC,GAAGhzC,EAAG,YACN,MAEF,IAAK,WACHs+B,GAAGv7B,EAAGhD,GAAIkC,GAAE,UAAWc,GAAIiwC,GAAGhzC,EAAG,YAMrC,IAAKgsB,KAHL6mB,GAAGjwC,EAAG7C,GACND,EAAI,KAEMC,EACRA,EAAE8b,eAAemQ,KAAOnsB,EAAIE,EAAEisB,GAAI,aAAeA,EAAI,iBAAoBnsB,EAAIkD,EAAE07B,cAAgB5+B,IAAMC,EAAI,CAAC,WAAYD,IAAM,iBAAoBA,GAAKkD,EAAE07B,cAAgB,GAAK5+B,IAAMC,EAAI,CAAC,WAAY,GAAKD,IAAMm3B,EAAGnb,eAAemQ,IAAM,MAAQnsB,GAAKmzC,GAAGhzC,EAAGgsB,IAG3P,OAAQppB,GACN,IAAK,QACH85B,GAAG35B,GACH86B,GAAG96B,EAAGhD,GAAG,GACT,MAEF,IAAK,WACH28B,GAAG35B,GACHy7B,GAAGz7B,GACH,MAEF,IAAK,SACL,IAAK,SACH,MAEF,QACE,mBAAsBhD,EAAEkpD,UAAYlmD,EAAEmmD,QAAUjW,IAGpDjnB,EAAIlsB,EACJkD,EAAEw8C,YAAcxzB,GAChBhpB,EAAI,OAASgpB,IACR48B,GAAGhoD,OACH,CACLgC,EAAIhC,EACJZ,EAAIgsB,EACJjsB,EAAIiD,EACJlD,EAAI,IAAMiD,EAAEw8B,SAAWx8B,EAAIA,EAAE+6B,cAC7Bj+B,IAAM8+B,KAAY9+B,EAAI++B,GAAG5+B,IACzBH,IAAM8+B,GAAU,WAAa3+B,IAAKD,EAAID,EAAEwJ,cAAc,QAAU4b,UAAY,qBAAwBplB,EAAIC,EAAEyxB,YAAYzxB,EAAEq/B,aAAe,iBAAoBr/B,EAAEgzC,GAAKjzC,EAAIA,EAAEwJ,cAActJ,EAAG,CACvL+yC,GAAIhzC,EAAEgzC,MACFjzC,EAAIA,EAAEwJ,cAActJ,GAAI,WAAaA,IAAMA,EAAIF,EAAGC,EAAEuqD,SAAWtqD,EAAEsqD,UAAW,EAAKvqD,EAAEkR,OAASjR,EAAEiR,KAAOlR,EAAEkR,QAAUnR,EAAIA,EAAE2uD,gBAAgB5uD,EAAGG,IAChJD,EAAID,GACF20C,IAAM7xC,EACR7C,EAAE20C,IAAM1xC,EACR4kD,GAAG7nD,EAAGa,GACNA,EAAEm4B,UAAYh5B,EAGd,IAAIsD,EAAIN,EACJjB,EAAIgxC,GAHR9yC,EAAIgsB,EACJppB,EAAII,GAIJ,OAAQhD,GACN,IAAK,SACL,IAAK,SACL,IAAK,QACHiC,GAAE,OAAQlC,GACVgD,EAAIH,EACJ,MAEF,IAAK,QACL,IAAK,QACH,IAAKG,EAAI,EAAGA,EAAIy9B,GAAG39B,OAAQE,IACzBd,GAAEu+B,GAAGz9B,GAAIhD,GAGXgD,EAAIH,EACJ,MAEF,IAAK,SACHX,GAAE,QAASlC,GACXgD,EAAIH,EACJ,MAEF,IAAK,MACL,IAAK,QACL,IAAK,OACHX,GAAE,QAASlC,GACXkC,GAAE,OAAQlC,GACVgD,EAAIH,EACJ,MAEF,IAAK,OACHX,GAAE,QAASlC,GACXkC,GAAE,SAAUlC,GACZgD,EAAIH,EACJ,MAEF,IAAK,UACHX,GAAE,SAAUlC,GACZgD,EAAIH,EACJ,MAEF,IAAK,QACH26B,GAAGx9B,EAAG6C,GACNG,EAAIm6B,GAAGn9B,EAAG6C,GACVX,GAAE,UAAWlC,GACbizC,GAAG3vC,EAAG,YACN,MAEF,IAAK,SACHN,EAAIi7B,GAAGj+B,EAAG6C,GACV,MAEF,IAAK,SACH7C,EAAEs9B,cAAgB,CAChBgtB,cAAeznD,EAAE0nD,UAEnBvnD,EAAIO,EAAE,GAAIV,EAAG,CACXxC,WAAO,IAET6B,GAAE,UAAWlC,GACbizC,GAAG3vC,EAAG,YACN,MAEF,IAAK,WACHi7B,GAAGv+B,EAAG6C,GACNG,EAAIs7B,GAAGt+B,EAAG6C,GACVX,GAAE,UAAWlC,GACbizC,GAAG3vC,EAAG,YACN,MAEF,QACEN,EAAIH,EAGRiwC,GAAG7yC,EAAG+C,GACNjD,OAAI,EACJD,EAAIG,EACJ,IAAIsB,EAAIvB,EACJsC,EAAIU,EAER,IAAKjD,KAAKuC,EACR,GAAIA,EAAEwZ,eAAe/b,GAAI,CACvB,IAAIyB,EAAIc,EAAEvC,GACV,UAAYA,EAAI8xC,GAAGtwC,EAAGC,GAAK,4BAA8BzB,EAAgC,OAA3ByB,EAAIA,EAAIA,EAAEgxB,YAAS,IAAqBwM,GAAGz9B,EAAGC,GAAM,aAAezB,EAAI,iBAAoByB,GAAK,aAAe1B,GAAK,KAAO0B,IAAM89B,GAAG/9B,EAAGC,GAAK,iBAAoBA,GAAK89B,GAAG/9B,EAAG,GAAKC,GAAK,mCAAqCzB,GAAK,6BAA+BA,GAAK,cAAgBA,IAAMk3B,EAAGnb,eAAe/b,GAAK,MAAQyB,GAAKyxC,GAAG3vC,EAAGvD,GAAK,MAAQyB,GAAK46B,GAAG76B,EAAGxB,EAAGyB,EAAGO,IAIna,OAAQ9B,GACN,IAAK,QACH08B,GAAG38B,GACH89B,GAAG99B,EAAG6C,GAAG,GACT,MAEF,IAAK,WACH85B,GAAG38B,GACHy+B,GAAGz+B,GACH,MAEF,IAAK,SACH,MAAQ6C,EAAExC,OAASL,EAAEswB,aAAa,QAAS,GAAK6L,GAAGt5B,EAAExC,QACrD,MAEF,IAAK,UACH2C,EAAIhD,GACFuqD,WAAa1nD,EAAE0nD,SAEjB,OADAvqD,EAAI6C,EAAExC,OACM89B,GAAGn7B,IAAKH,EAAE0nD,SAAUvqD,GAAG,GAAM,MAAQ6C,EAAEw6B,cAAgBc,GAAGn7B,IAAKH,EAAE0nD,SAAU1nD,EAAEw6B,cAAc,GACvG,MAEF,QACE,mBAAsBr6B,EAAEkmD,UAAYlpD,EAAEmpD,QAAUjW,KAGnDjwC,EAAI8wC,GAAG9nB,EAAGhpB,KAAO4lD,GAAGhoD,GAGvB,OAASA,EAAEwH,MAAQxH,EAAE+/B,WAAa,UAC7B,GAAI,OAAS//B,EAAEm4B,UAAW,MAAMpvB,MAAM7I,EAAE,MAC/C,MAEF,KAAK,EACH,GAAI8B,GAAK,MAAQhC,EAAEm4B,UAAW+uB,GAAGllD,EAAGhC,EAAGgC,EAAEkgD,cAAe9/C,OAAQ,CAC9D,GAAI,iBAAoBA,GAAK,OAASpC,EAAEm4B,UAAW,MAAMpvB,MAAM7I,EAAE,MACjEiC,EAAIw/C,GAAGD,GAAG/0B,SACVg1B,GAAGH,GAAG70B,SACNq5B,GAAGhmD,IAAaorB,GAAPhpB,EAAIpC,GAASm4B,UAAWh2B,EAAIC,EAAE8/C,cAAe92B,EAAEyoB,IAAMzxC,GAAIA,EAAIgpB,EAAEwT,YAAcz8B,IAAM6lD,GAAGhoD,KAAOorB,EAAIprB,GAAGoC,GAAK,IAAMD,EAAEw8B,SAAWx8B,EAAIA,EAAE+6B,eAAe3M,eAAenuB,IAAMyxC,IAAMzoB,EAAGprB,EAAEm4B,UAAY/1B,GAExM,MAEF,KAAK,GACH,MAEF,KAAK,GAIH,GAHAd,GAAEiB,IACFH,EAAIpC,EAAEigC,cAEF,IAAqB,GAAdjgC,EAAE+/B,WAAiB,CAC5B//B,EAAE0D,eAAiBvB,EACnB,MAAMrC,EAGRsC,EAAI,OAASA,EACbgpB,GAAI,EACJ,OAASppB,OAAI,IAAWhC,EAAEkiD,cAAcoF,UAAYtB,GAAGhmD,IAA2BorB,EAAI,QAAzBjpB,EAAIH,EAAEi+B,eAA+B79B,GAAK,OAASD,GAA2B,QAArBA,EAAIH,EAAEiiB,MAAMoc,WAA2C,QAAnBlhC,EAAIa,EAAEi+C,cAA2Bj+C,EAAEi+C,YAAc97C,EAAGA,EAAEs8C,WAAat/C,IAAMa,EAAEi+C,YAAcj+C,EAAEk+C,WAAa/7C,EAAGA,EAAEs8C,WAAa,MAAOt8C,EAAE49B,UAAY,IACrS39B,IAAMgpB,GAAK,IAAgB,EAATprB,EAAE0M,QAAe,OAAS1K,IAAK,IAAOhC,EAAEkiD,cAAcqF,4BAA8B,IAAmB,EAAZhlD,GAAEoqB,SAt0BtH,IAs0BoI/oB,KAAaA,GAn0BjJ,IAHA,IAu0BSA,IAp0BT,IAo0BqBA,KAAUA,GAn0B/B,GAo0BK,IAAMonD,IAAM,OAAS1nD,KAAMsoD,GAAGtoD,GAAGK,IAAIkoD,GAAGvoD,GAAG0nD,QAEzC5oD,GAAKgpB,KAAGprB,EAAE+/B,WAAa,GAC3B,MAEF,KAAK,EAGL,KAAK,EAGL,KAAK,GACH,MAEF,KAAK,EACH+hB,KAEA,MAEF,KAAK,GACH7E,GAAGj9C,GACH,MAEF,KAAK,EAGL,KAAK,GACH,MAEF,KAAK,GACHsC,GAAEtC,EAAEgG,OAASu0C,KACb,MAEF,KAAK,GAGH,GAFAj5C,GAAEiB,IAEE,QADJH,EAAIpC,EAAEigC,eACU,MAGhB,GAFA7U,EAAI,IAAqB,GAAdprB,EAAE+/B,WAET,QADJ5gC,EAAIiD,EAAEulD,YAEJ,GAAIv8B,EAAG68B,GAAG7lD,GAAG,QACX,GAj3BP,IAi3BWwB,IAAY,OAAS5B,GAAK,IAAqB,GAAdA,EAAE+9B,WAAiB,IAAK/9B,EAAIhC,EAAEikB,MAAO,OAASjiB,GAAI,CAGrF,GAAI,QAFJ7C,EAAI8iD,GAAGjgD,IAES,CASd,IARAhC,EAAE+/B,WAAa,GACfkoB,GAAG7lD,GAAG,GAEN,QADAgpB,EAAIjsB,EAAEy/C,eACS5+C,EAAE4+C,YAAcxzB,EAAGprB,EAAE+/B,WAAa,GACjD,OAAS39B,EAAE87C,aAAel+C,EAAEi+C,YAAc,MAC1Cj+C,EAAEk+C,WAAa97C,EAAE87C,WACjB97C,EAAID,EAECipB,EAAIprB,EAAEikB,MAAO,OAASmH,GAClBppB,EAAII,GAAXD,EAAIipB,GAAY2U,WAAa,EAAG59B,EAAEs8C,WAAa,KAAMt8C,EAAE87C,YAAc,KAAM97C,EAAE+7C,WAAa,KAAuB,QAAjB/+C,EAAIgD,EAAE29B,YAAyB39B,EAAEg7C,oBAAsB,EAAGh7C,EAAEuB,eAAiB1B,EAAGG,EAAE8hB,MAAQ,KAAM9hB,EAAE+/C,cAAgB,KAAM//C,EAAE89B,cAAgB,KAAM99B,EAAEy8C,YAAc,KAAMz8C,EAAEm0B,aAAe,OAASn0B,EAAEg7C,oBAAsBh+C,EAAEg+C,oBAAqBh7C,EAAEuB,eAAiBvE,EAAEuE,eAAgBvB,EAAE8hB,MAAQ9kB,EAAE8kB,MAAO9hB,EAAE+/C,cAAgB/iD,EAAE+iD,cAAe//C,EAAE89B,cAAgB9gC,EAAE8gC,cAAe99B,EAAEy8C,YAAcz/C,EAAEy/C,YAAa58C,EAAI7C,EAAEm3B,aAAcn0B,EAAEm0B,aAAe,OAASt0B,EAAI,KAAO,CACniB0B,eAAgB1B,EAAE0B,eAClB25C,aAAcr7C,EAAEq7C,aAChBI,WAAYz7C,EAAEy7C,aACZryB,EAAIA,EAAEiV,QAGZ3+B,GAAEa,GAAe,EAAZA,GAAEoqB,QAAc,GACrB3sB,EAAIA,EAAEikB,MACN,MAAMnkB,EAGRkC,EAAIA,EAAEq+B,aAGL,CACL,IAAKjV,EAAG,GAAe,QAAXppB,EAAIigD,GAAG9iD,KACjB,GAAIa,EAAE+/B,WAAa,GAAI3U,GAAI,EAAuB,QAAnBjpB,EAAIH,EAAE48C,eAA4B5+C,EAAE4+C,YAAcz8C,EAAGnC,EAAE+/B,WAAa,GAAIkoB,GAAG7lD,GAAG,GAAK,OAASA,EAAEwlD,MAAQ,WAAaxlD,EAAE0lD,WAAa3oD,EAAE2gC,UAAW,CAE5K,QADA9/B,EAAIA,EAAEk+C,WAAa97C,EAAE87C,cACNl+C,EAAEy+C,WAAa,MAC9B,YAEGzC,KAAO55C,EAAEylD,gBAAkB,EAAI1lD,IAAMnC,EAAE+/B,WAAa,GAAI3U,GAAI,EAAI68B,GAAG7lD,GAAG,GAAKpC,EAAE0D,eAAiB1D,EAAEm9C,oBAAsBh7C,EAAI,GACjIC,EAAEslD,aAAevoD,EAAEkhC,QAAUrgC,EAAEikB,MAAOjkB,EAAEikB,MAAQ9kB,IAAkB,QAAZgD,EAAIC,EAAE6hD,MAAmB9hD,EAAEk+B,QAAUlhC,EAAIa,EAAEikB,MAAQ9kB,EAAGiD,EAAE6hD,KAAO9kD,GAGvH,GAAI,OAASiD,EAAEwlD,KAAM,CACnB,IAAMxlD,EAAEylD,iBAAmBzlD,EAAEylD,eAAiB7L,KAAO,KACrD75C,EAAIC,EAAEwlD,KACNxlD,EAAEulD,UAAYxlD,EACdC,EAAEwlD,KAAOzlD,EAAEk+B,QACXj+B,EAAE87C,WAAal+C,EAAEk+C,WACjB/7C,EAAEk+B,QAAU,KACZj+B,EAAIG,GAAEoqB,QAENjrB,GAAEa,GADFH,EAAIgpB,EAAQ,EAAJhpB,EAAQ,EAAQ,EAAJA,GAEpBpC,EAAImC,EACJ,MAAMrC,EAGR,MAEF,KAAK,GAGL,KAAK,GACH,MAEF,QACE,MAAMiJ,MAAM7I,EAAE,IAAKF,EAAE0b,MAGzB1b,EAAI,KAKN,GAFAoC,EAAImB,GAEA,IAAMI,IAAK,IAAMvB,EAAE+6C,oBAAqB,CAG1C,IAFA/xB,EAAI,EAECjpB,EAAIC,EAAE6hB,MAAO,OAAS9hB,IACzBH,EAAIG,EAAEuB,gBAA+C0nB,IAAMA,EAAIppB,IAAzC7C,EAAIgD,EAAEg7C,qBAA2C/xB,IAAMA,EAAIjsB,GAAIgD,EAAIA,EAAEk+B,QAG7Fj+B,EAAE+6C,oBAAsB/xB,EAG1B,GAAI,OAASprB,EAAG,OAAOA,EACvB,OAASF,GAAK,IAAqB,KAAdA,EAAEigC,aAAsB,OAASjgC,EAAEm+C,cAAgBn+C,EAAEm+C,YAAc16C,GAAE06C,aAAc,OAAS16C,GAAE26C,aAAe,OAASp+C,EAAEo+C,aAAep+C,EAAEo+C,WAAWO,WAAal7C,GAAE06C,aAAcn+C,EAAEo+C,WAAa36C,GAAE26C,YAAa,EAAI36C,GAAEw8B,YAAc,OAASjgC,EAAEo+C,WAAap+C,EAAEo+C,WAAWO,WAAal7C,GAAIzD,EAAEm+C,YAAc16C,GAAGzD,EAAEo+C,WAAa36C,SAC3U,CAEL,GAAI,QADJvD,EAAIkoD,GAAG3kD,KACS,OAAOvD,EAAE+/B,WAAa,KAAM//B,EAC5C,OAASF,IAAMA,EAAEm+C,YAAcn+C,EAAEo+C,WAAa,KAAMp+C,EAAEigC,WAAa,MAIrE,GAAI,QADJ//B,EAAIuD,GAAE88B,SACU,OAAOrgC,EACvBuD,GAAIzD,QACG,OAASyD,IAGlB,OA/8BO,IA88BPK,KAAaA,GAz8BN,GA08BA,KAGT,SAASqpD,GAAGntD,GACV,IAAIE,EAAIF,EAAE4D,eAEV,OAAO1D,GADPF,EAAIA,EAAEq9C,qBACSn9C,EAAIF,EAGrB,SAASqtD,GAAGrtD,GACV,IAAIE,EAAIi8C,KAER,OADAE,GAAG,GAAI2R,GAAG5yC,KAAK,KAAMpb,EAAGE,IACjB,KAGT,SAAS8tD,GAAGhuD,EAAGE,GACb,GACEysD,WACO,OAAStB,IAElB,GAv+BM,IAu+BG,GAAJ9nD,IAAsB,MAAM0F,MAAM7I,EAAE,MACzC,IAAI8B,EAAIlC,EAAEgtD,aACN3qD,EAAIrC,EAAEitD,uBACV,GAAI,OAAS/qD,EAAG,OAAO,KAGvB,GAFAlC,EAAEgtD,aAAe,KACjBhtD,EAAEitD,uBAAyB,EACvB/qD,IAAMlC,EAAE6sB,QAAS,MAAM5jB,MAAM7I,EAAE,MACnCJ,EAAEwsD,aAAe,KACjBxsD,EAAEssD,uBAAyB,EAC3BtsD,EAAEusD,iBAAmB,GACrBvsD,EAAEqsD,sBAAwB,EAC1B,IAAI/pD,EAAI6qD,GAAGjrD,GAQX,GAPAlC,EAAEmsD,iBAAmB7pD,EACrBD,GAAKrC,EAAEktD,kBAAoBltD,EAAEiuD,mBAAqBjuD,EAAEktD,kBAAoBltD,EAAEqsD,sBAAwB,EAAIhqD,GAAKrC,EAAEiuD,qBAAuBjuD,EAAEiuD,mBAAqB5rD,EAAI,GAC/JA,GAAKrC,EAAEosD,iBAAmBpsD,EAAEosD,eAAiB,GAC7C/pD,GAAKrC,EAAEisD,kBAAoBjsD,EAAEisD,gBAAkB,GAC/CjsD,IAAMwD,KAAMC,GAAID,GAAI,KAAMK,GAAI,GAC9B,EAAI3B,EAAE+9B,UAAY,OAAS/9B,EAAEk8C,YAAcl8C,EAAEk8C,WAAWO,WAAaz8C,EAAGI,EAAIJ,EAAEi8C,aAAe77C,EAAIJ,EAAII,EAAIJ,EAAEi8C,YAEvG,OAAS77C,EAAG,CACd,IAAIgpB,EAAI/nB,GACRA,IAz/BK,GA0/BLsnD,GAAGh+B,QAAU,KACbqmB,GAAKzF,GACL,IAAItuC,EAAI0zC,KAER,GAAIG,GAAG7zC,GAAI,CACT,GAAI,mBAAoBA,EAAG,IAAIC,EAAI,CACjC45C,MAAO75C,EAAE85C,eACTC,IAAK/5C,EAAEg6C,mBACFn5C,EAAG,CAER,IAAIX,GADJD,GAAKA,EAAID,EAAEi+B,gBAAkBh+B,EAAE+4C,aAAex4C,QACpC05C,cAAgBj6C,EAAEi6C,eAE5B,GAAIh6C,GAAK,IAAMA,EAAE6uD,WAAY,CAC3B9uD,EAAIC,EAAE+5C,WACN,IAAI95C,EAAID,EAAEi6C,aACN32C,EAAItD,EAAEk6C,UACVl6C,EAAIA,EAAEm6C,YAEN,IACEp6C,EAAEy/B,SAAUl8B,EAAEk8B,SACd,MAAOsvB,GACP/uD,EAAI,KACJ,MAAMY,EAGR,IAAIoB,EAAI,EACJR,GAAK,EACLe,GAAK,EACLd,EAAI,EACJygD,EAAK,EACLx+C,EAAI3D,EACJwB,EAAI,KAERT,EAAG,OAAS,CACV,IAAK,IAAIa,EACP+B,IAAM1D,GAAK,IAAME,GAAK,IAAMwD,EAAE+7B,WAAaj+B,EAAIQ,EAAI9B,GACnDwD,IAAMH,GAAK,IAAMtD,GAAK,IAAMyD,EAAE+7B,WAAal9B,EAAIP,EAAI/B,GACnD,IAAMyD,EAAE+7B,WAAaz9B,GAAK0B,EAAEg8B,UAAU38B,QAClC,QAAUpB,EAAI+B,EAAE47B,aACpB/9B,EAAImC,EACJA,EAAI/B,EAGN,OAAS,CACP,GAAI+B,IAAM3D,EAAG,MAAMe,EAGnB,GAFAS,IAAMvB,KAAOyB,IAAMvB,IAAMsB,EAAIQ,GAC7BT,IAAMgC,KAAO2+C,IAAOjiD,IAAMsC,EAAIP,GAC1B,QAAUL,EAAI+B,EAAE8vC,aAAc,MAElCjyC,GADAmC,EAAInC,GACEkwB,WAGR/tB,EAAI/B,EAGN3B,GAAK,IAAMwB,IAAM,IAAMe,EAAI,KAAO,CAChCq3C,MAAOp4C,EACPs4C,IAAKv3C,QAEFvC,EAAI,KAEbA,EAAIA,GAAK,CACP45C,MAAO,EACPE,IAAK,QAEF95C,EAAI,KAEX+zC,GAAK,CACHib,YAAajvD,EACbkvD,eAAgBjvD,GAElBquC,IAAK,EACLzpC,GAAI1B,EAEJ,GACE,IACEgsD,KACA,MAAOH,GACP,GAAI,OAASnqD,GAAG,MAAMiF,MAAM7I,EAAE,MAC9ByoD,GAAG7kD,GAAGmqD,GACNnqD,GAAIA,GAAE26C,kBAED,OAAS36C,IAElBA,GAAI1B,EAEJ,GACE,IACE,IAAKnD,EAAIa,EAAGZ,EAAIc,EAAG,OAAS8D,IAAI,CAC9B,IAAInE,EAAImE,GAAEi8B,UAGV,GAFI,GAAJpgC,GAAU8+B,GAAG36B,GAAEq0B,UAAW,IAElB,IAAJx4B,EAAS,CACX,IAAIE,EAAIiE,GAAEg8B,UAEV,GAAI,OAASjgC,EAAG,CACd,IAAI8C,EAAI9C,EAAE2H,IACV,OAAS7E,IAAM,mBAAsBA,EAAIA,EAAE,MAAQA,EAAEgqB,QAAU,OAInE,OAAY,KAAJhtB,GACN,KAAK,EACH0pD,GAAGvlD,IACHA,GAAEi8B,YAAc,EAChB,MAEF,KAAK,EACHspB,GAAGvlD,IACHA,GAAEi8B,YAAc,EAChBypB,GAAG1lD,GAAEg8B,UAAWh8B,IAChB,MAEF,KAAK,KACHA,GAAEi8B,YAAc,KAChB,MAEF,KAAK,KACHj8B,GAAEi8B,YAAc,KAChBypB,GAAG1lD,GAAEg8B,UAAWh8B,IAChB,MAEF,KAAK,EACH0lD,GAAG1lD,GAAEg8B,UAAWh8B,IAChB,MAEF,KAAK,EACIolD,GAAGjqD,EAAVG,EAAI0E,GAAY5E,GAAIiqD,GAAG/pD,GAG3B0E,GAAIA,GAAE26C,YAER,MAAOwP,GACP,GAAI,OAASnqD,GAAG,MAAMiF,MAAM7I,EAAE,MAC9ByoD,GAAG7kD,GAAGmqD,GACNnqD,GAAIA,GAAE26C,kBAED,OAAS36C,IAOlB,GALAnB,EAAIswC,GACJpzC,EAAI8yC,KACJhzC,EAAIgD,EAAEurD,YACNhvD,EAAIyD,EAAEwrD,eAEFtuD,IAAMF,GAAKA,GAAKA,EAAEu9B,eA1qI1B,SAASmxB,EAAGvuD,EAAGE,GACb,SAAOF,IAAKE,KAAIF,IAAME,KAASF,GAAK,IAAMA,EAAE6+B,YAAgB3+B,GAAK,IAAMA,EAAE2+B,SAAW0vB,EAAGvuD,EAAGE,EAAE2wB,YAAc,aAAc7wB,EAAIA,EAAEwuD,SAAStuD,KAAKF,EAAEyuD,4BAA4D,GAA/BzuD,EAAEyuD,wBAAwBvuD,MAyqI5JquD,CAAG1uD,EAAEu9B,cAAc2kB,gBAAiBliD,GAAI,CAC7E,OAAST,GAAK4zC,GAAGnzC,KAAOE,EAAIX,EAAE45C,WAAkB,KAAXn2C,EAAIzD,EAAE85C,OAAsBr2C,EAAI9C,GAAI,mBAAoBF,GAAKA,EAAEo5C,eAAiBl5C,EAAGF,EAAEs5C,aAAe13C,KAAKitD,IAAI7rD,EAAGhD,EAAEH,MAAMyC,UAAYU,GAAK9C,EAAIF,EAAEu9B,eAAiBz0B,WAAa5I,EAAEo4C,aAAex4C,QAAU05C,eAAiBx2C,EAAIA,EAAEw2C,eAAgB/5C,EAAIO,EAAEk+B,YAAY57B,OAAQhD,EAAIsC,KAAKitD,IAAItvD,EAAE45C,MAAO15C,GAAIF,OAAI,IAAWA,EAAE85C,IAAM/5C,EAAIsC,KAAKitD,IAAItvD,EAAE85C,IAAK55C,IAAKuD,EAAE8hC,QAAUxlC,EAAIC,IAAME,EAAIF,EAAGA,EAAID,EAAGA,EAAIG,GAAIA,EAAIozC,GAAG7yC,EAAGV,GAAIwD,EAAI+vC,GAAG7yC,EAAGT,GAAIE,GAAKqD,IAAM,IAAME,EAAEqrD,YAAcrrD,EAAEu2C,aAAe95C,EAAEsnB,MAAQ/jB,EAAEy2C,eAAiBh6C,EAAEqzC,QAAU9vC,EAAE02C,YAAc52C,EAAEikB,MAAQ/jB,EAAE22C,cAAgB72C,EAAEgwC,WAAY5yC,EAAIA,EAAE4uD,eAAiBC,SAAStvD,EAAEsnB,KAAMtnB,EAAEqzC,QAAS9vC,EAAEgsD,kBAAmB1vD,EAAIC,GAAKyD,EAAEisD,SAAS/uD,GAAI8C,EAAE8hC,OAAOhiC,EAAEikB,KAAMjkB,EAAEgwC,UAAY5yC,EAAEgvD,OAAOpsD,EAAEikB,KAAMjkB,EAAEgwC,QAAS9vC,EAAEisD,SAAS/uD,OAC3vBA,EAAI,GAEJ,IAAK8C,EAAIhD,EAAGgD,EAAIA,EAAEguB,YAChB,IAAMhuB,EAAEg8B,UAAY9+B,EAAEqC,KAAK,CACzBmf,QAAS1e,EACT2O,KAAM3O,EAAEmsD,WACR39C,IAAKxO,EAAEosD,YAMX,IAFA,mBAAsBpvD,EAAEqvD,OAASrvD,EAAEqvD,QAE9BrvD,EAAI,EAAGA,EAAIE,EAAEoC,OAAQtC,KACxBgD,EAAI9C,EAAEF,IAAM0hB,QAAQytC,WAAansD,EAAE2O,KAAM3O,EAAE0e,QAAQ0tC,UAAYpsD,EAAEwO,IAIrE8hC,GAAK,KACL1F,KAAOyF,GACPA,GAAK,KACLlzC,EAAE6sB,QAAU3qB,EACZ8B,GAAI1B,EAEJ,GACE,IACE,IAAKzC,EAAIwC,EAAG,OAAS2B,IAAI,CACvB,IAAImrD,EAAKnrD,GAAEi8B,UAEX,GAAS,GAALkvB,EAAS,CACX,IAAIC,EAAKprD,GAAEg8B,UAIX,OAFAn9B,EAAIhD,GADJE,EAAIiE,IAGM4X,KACR,KAAK,EACL,KAAK,GACL,KAAK,GACHmtC,GAAG,GAAI,GAAIhpD,GACX,MAEF,KAAK,EACH,IAAIsvD,EAAKtvD,EAAEs4B,UACX,GAAkB,EAAdt4B,EAAEkgC,UAAe,GAAI,OAASmvB,EAAIC,EAAG5O,wBAAyB,CAChE,IAAI6O,EAAKvvD,EAAEkhD,cAAgBlhD,EAAEmG,KAAOkpD,EAAGhN,cAAgBxF,GAAG78C,EAAEmG,KAAMkpD,EAAGhN,eACrEiN,EAAG9kD,mBAAmB+kD,EAAIF,EAAGjvB,cAAekvB,EAAGrG,qCAEjD,IAAIuG,EAAKxvD,EAAE++C,YACX,OAASyQ,GAAMlQ,GAAGt/C,EAAGwvD,EAAIF,GACzB,MAEF,KAAK,EACH,IAAIG,EAAKzvD,EAAE++C,YAEX,GAAI,OAAS0Q,EAAI,CAEf,GADArwD,EAAI,KACA,OAASY,EAAEokB,MAAO,OAAQpkB,EAAEokB,MAAMvI,KACpC,KAAK,EACHzc,EAAIY,EAAEokB,MAAMkU,UACZ,MAEF,KAAK,EACHl5B,EAAIY,EAAEokB,MAAMkU,UAEhBgnB,GAAGt/C,EAAGyvD,EAAIrwD,GAGZ,MAEF,KAAK,EACH,IAAIswD,EAAK1vD,EAAEs4B,UACX,OAAS+2B,GAAoB,EAAdrvD,EAAEkgC,WAAiBmT,GAAGrzC,EAAEmG,KAAMnG,EAAEqiD,gBAAkBqN,EAAGP,QACpE,MAEF,KAAK,EAGL,KAAK,EAGL,KAAK,GACH,MAEF,KAAK,GACH,GAAI,OAASnvD,EAAEogC,cAAe,CAC5B,IAAIuvB,EAAK3vD,EAAEigC,UAEX,GAAI,OAAS0vB,EAAI,CACf,IAAIC,EAAKD,EAAGvvB,cAEZ,GAAI,OAASwvB,EAAI,CACf,IAAIC,EAAKD,EAAGvvB,WACZ,OAASwvB,GAAMltB,GAAGktB,KAKxB,MAEF,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACH,MAEF,QACE,MAAM3mD,MAAM7I,EAAE,OAIpB,GAAS,IAAL+uD,EAAU,CACZpvD,OAAI,EACJ,IAAI8vD,EAAK7rD,GAAE0D,IAEX,GAAI,OAASmoD,EAAI,CACf,IAAIC,EAAK9rD,GAAEq0B,UAEX,OAAQr0B,GAAE4X,KACR,KAAK,EACH7b,EAAI+vD,EACJ,MAEF,QACE/vD,EAAI+vD,EAGR,mBAAsBD,EAAKA,EAAG9vD,GAAK8vD,EAAGhjC,QAAU9sB,GAIpDiE,GAAIA,GAAE26C,YAER,MAAOwP,GACP,GAAI,OAASnqD,GAAG,MAAMiF,MAAM7I,EAAE,MAC9ByoD,GAAG7kD,GAAGmqD,GACNnqD,GAAIA,GAAE26C,kBAED,OAAS36C,IAElBA,GAAI,KACJ83C,KACAv4C,GAAI+nB,OACCtrB,EAAE6sB,QAAU3qB,EAEnB,GAAIkpD,GAAIA,IAAK,EAAIC,GAAKrrD,EAAGsrD,GAAKprD,OAAO,IAAK8D,GAAI1B,EAAG,OAAS0B,IACxD9D,EAAI8D,GAAE26C,WAAY36C,GAAE26C,WAAa,KAAM36C,GAAI9D,EAO7C,GAJA,KADAA,EAAIF,EAAEmsD,oBACM5B,GAAK,MACjB,aAAerqD,EAAIF,IAAMyrD,GAAKD,MAAQA,GAAK,EAAGC,GAAKzrD,GAAKwrD,GAAK,EAC7D,mBAAsBuE,IAAMA,GAAG7tD,EAAEm2B,UAAWh2B,GAC5C4B,GAAEjE,GACEmqD,GAAI,MAAMA,IAAK,EAAInqD,EAAIoqD,GAAIA,GAAK,KAAMpqD,EAC1C,OAvyCM,IACC,EAsyCFuD,IAAsB,MAC3Bk5C,KACO,MAGT,SAAS6R,KACP,KAAO,OAAStqD,IAAI,CAClB,IAAIhE,EAAIgE,GAAEi8B,UACV,IAAW,IAAJjgC,IAAY8oD,GAAG9kD,GAAEg8B,UAAWh8B,IACnC,IAAW,IAAJhE,IAAYorD,KAAOA,IAAK,EAAI9O,GAAG,IAAI,WAExC,OADAqQ,KACO,SAET3oD,GAAIA,GAAE26C,YAIV,SAASgO,KACP,GAAI,KAAOrB,GAAI,CACb,IAAItrD,EAAI,GAAKsrD,GAAK,GAAKA,GAEvB,OADAA,GAAK,GACEjP,GAAGr8C,EAAGgwD,KAIjB,SAASA,KACP,GAAI,OAAS3E,GAAI,OAAO,EACxB,IAAIrrD,EAAIqrD,GAER,GADAA,GAAK,KAn0CC,IAo0CG,GAAJ9nD,IAAsB,MAAM0F,MAAM7I,EAAE,MACzC,IAAIF,EAAIqD,GAGR,IAFAA,IAn0CO,GAq0CFvD,EAAIA,EAAE6sB,QAAQsxB,YAAa,OAASn+C,GAAI,CAC3C,IACE,IAAIkC,EAAIlC,EACR,GAAI,IAAqB,IAAdkC,EAAE+9B,WAAkB,OAAQ/9B,EAAE0Z,KACvC,KAAK,EACL,KAAK,GACL,KAAK,GACHmtC,GAAG,IAAK,EAAG7mD,GAAI6mD,GAAG,EAAG,GAAI7mD,IAE7B,MAAOG,GACP,GAAI,OAASrC,EAAG,MAAMiJ,MAAM7I,EAAE,MAC9ByoD,GAAG7oD,EAAGqC,GAGRH,EAAIlC,EAAE2+C,WACN3+C,EAAE2+C,WAAa,KACf3+C,EAAIkC,EAKN,OAFAqB,GAAIrD,EACJu8C,MACO,EAGT,SAASwT,GAAGjwD,EAAGE,EAAGgC,GAGhB28C,GAAG7+C,EADHE,EAAIgqD,GAAGlqD,EADPE,EAAImoD,GAAGnmD,EAAGhC,GACG,aAGb,QADAF,EAAI4rD,GAAG5rD,EAAG,cACIiE,GAAEjE,GAGlB,SAAS6oD,GAAG7oD,EAAGE,GACb,GAAI,IAAMF,EAAE4b,IAAKq0C,GAAGjwD,EAAGA,EAAGE,QAAQ,IAAK,IAAIgC,EAAIlC,EAAU,OAAG,OAASkC,GAAI,CACvE,GAAI,IAAMA,EAAE0Z,IAAK,CACfq0C,GAAG/tD,EAAGlC,EAAGE,GACT,MACK,GAAI,IAAMgC,EAAE0Z,IAAK,CACtB,IAAIvZ,EAAIH,EAAEm2B,UAEV,GAAI,mBAAsBn2B,EAAEgE,KAAK6gD,0BAA4B,mBAAsB1kD,EAAEioD,oBAAsB,OAASC,KAAOA,GAAGhc,IAAIlsC,IAAK,CAGrIw8C,GAAG38C,EADHlC,EAAIqqD,GAAGnoD,EADPlC,EAAIqoD,GAAGnoD,EAAGF,GACG,aAGb,QADAkC,EAAI0pD,GAAG1pD,EAAG,cACI+B,GAAE/B,GAChB,OAIJA,EAAIA,EAAU,QAIlB,SAAS0rD,GAAG5tD,EAAGE,EAAGgC,GAChB,IAAIG,EAAIrC,EAAE2tD,UACV,OAAStrD,GAAKA,EAAU,OAAEnC,GAC1BsD,KAAMxD,GAAK6D,KAAM3B,EAz3CV,IAy3Cc4B,IA13Cd,IA03C0BA,IAAY,aAAeinD,IAAM7O,KAAO2N,GA32ClE,IA22C4E+C,GAAG5sD,EAAG6D,IAAKsnD,IAAK,EAAKe,GAAGlsD,EAAGkC,KAA6B,KAAtBhC,EAAIF,EAAEosD,iBAA2BlsD,EAAIgC,IAAMlC,EAAEosD,eAAiBlqD,EAAGlC,EAAEitD,yBAA2B/qD,IAAMlC,EAAEitD,uBAAyB,EAAGjtD,EAAEgtD,aAAe,MAAO/oD,GAAEjE,KAGnR,SAAS+pD,GAAG/pD,EAAGE,GACb,IAAIgC,EAAIlC,EAAEq4B,UACV,OAASn2B,GAAKA,EAAU,OAAEhC,GAE1B,KADAA,EAAI,KACkBA,EAAI2/C,GAAd3/C,EAAI0/C,KAAgB5/C,EAAG,OAEnC,QADAA,EAAI4rD,GAAG5rD,EAAGE,KACI+D,GAAEjE,GAKlByqD,GAAK,SAAYzqD,EAAGE,EAAGgC,GACrB,IAAIG,EAAInC,EAAE0D,eAEV,GAAI,OAAS5D,EAAG,CACd,IAAIsC,EAAIpC,EAAE6lD,aACV,GAAI/lD,EAAEoiD,gBAAkB9/C,GAAKC,GAAEsqB,QAAS2wB,IAAK,MAAQ,CACnD,GAAIn7C,EAAIH,EAAG,CAGT,OAFAs7C,IAAK,EAEGt9C,EAAE0b,KACR,KAAK,EACHorC,GAAG9mD,GACH0X,KACA,MAEF,KAAK,EAEH,GADAqqC,GAAG/hD,GACU,EAATA,EAAE0M,MAAY,IAAM1K,GAAKI,EAAE4tD,OAAQ,OAAOhwD,EAAE0D,eAAiB1D,EAAEm9C,oBAAsB,EAAG,KAC5F,MAEF,KAAK,EACH76C,GAAEtC,EAAEgG,OAAS40C,GAAG56C,GAChB,MAEF,KAAK,EACH4hD,GAAG5hD,EAAGA,EAAEm4B,UAAU8J,eAClB,MAEF,KAAK,GACH+a,GAAGh9C,EAAGA,EAAEkiD,cAAc1iD,OACtB,MAEF,KAAK,GACH,GAAI,OAASQ,EAAEigC,cAEb,OAAI,KADJ99B,EAAInC,EAAEikB,MAAMk5B,sBACGh7C,GAAKH,EAAUqlD,GAAGvnD,EAAGE,EAAGgC,IACvCN,GAAEa,GAAe,EAAZA,GAAEoqB,SAEA,QADP3sB,EAAImmD,GAAGrmD,EAAGE,EAAGgC,IACOhC,EAAEqgC,QAAU,MAGlC3+B,GAAEa,GAAe,EAAZA,GAAEoqB,SACP,MAEF,KAAK,GAGH,GAFAxqB,EAAInC,EAAEm9C,qBAAuBn7C,EAEzB,IAAqB,GAAdlC,EAAEigC,WAAiB,CAC5B,GAAI59B,EAAG,OAAO4lD,GAAGjoD,EAAGE,EAAGgC,GACvBhC,EAAE+/B,WAAa,GAMjB,GAFA,QADA39B,EAAIpC,EAAEigC,iBACS79B,EAAEulD,UAAY,KAAMvlD,EAAEwlD,KAAO,MAC5ClmD,GAAEa,GAAGA,GAAEoqB,UACFxqB,EAAG,OAAO,KAGnB,OAAOgkD,GAAGrmD,EAAGE,EAAGgC,GAGlBs7C,IAAK,QAEFA,IAAK,EAIZ,OAFAt9C,EAAE0D,eAAiB,EAEX1D,EAAE0b,KACR,KAAK,EASH,GARAvZ,EAAInC,EAAEgG,KACN,OAASlG,IAAMA,EAAEggC,UAAY,KAAM9/B,EAAE8/B,UAAY,KAAM9/B,EAAE+/B,WAAa,GACtEjgC,EAAIE,EAAE6lD,aACNzjD,EAAI83C,GAAGl6C,EAAG+B,GAAE4qB,SACZywB,GAAGp9C,EAAGgC,GACNI,EAAI+gD,GAAG,KAAMnjD,EAAGmC,EAAGrC,EAAGsC,EAAGJ,GACzBhC,EAAE+/B,WAAa,EAEX,iBAAoB39B,GAAK,OAASA,GAAK,mBAAsBA,EAAEsI,aAAU,IAAWtI,EAAE2E,SAAU,CAIlG,GAHA/G,EAAE0b,IAAM,EACR6nC,KAEIjhD,GAAEH,GAAI,CACR,IAAIipB,GAAI,EACRwvB,GAAG56C,QACEorB,GAAI,EAEXprB,EAAEigC,cAAgB,OAAS79B,EAAE6G,YAAS,IAAW7G,EAAE6G,MAAQ7G,EAAE6G,MAAQ,KACrE,IAAIhK,EAAIkD,EAAEi+C,yBACV,mBAAsBnhD,GAAKsgD,GAAGv/C,EAAGmC,EAAGlD,EAAGa,GACvCsC,EAAEswB,QAAU8sB,GACZx/C,EAAEm4B,UAAY/1B,EACdA,EAAEq9C,oBAAsBz/C,EACxBmgD,GAAGngD,EAAGmC,EAAGrC,EAAGkC,GACZhC,EAAI4mD,GAAG,KAAM5mD,EAAGmC,GAAG,EAAIipB,EAAGppB,QACrBhC,EAAE0b,IAAM,EAAGvY,GAAE,KAAMnD,EAAGoC,EAAGJ,GAAIhC,EAAIA,EAAEikB,MAE1C,OAAOjkB,EAET,KAAK,GAKH,GAJAoC,EAAIpC,EAAE+gD,YACN,OAASjhD,IAAMA,EAAEggC,UAAY,KAAM9/B,EAAE8/B,UAAY,KAAM9/B,EAAE+/B,WAAa,GACtEjgC,EAAIE,EAAE6lD,aAzuMZ,SAAY/lD,GACV,IAAK,IAAMA,EAAEu0B,QAAS,CACpBv0B,EAAEu0B,QAAU,EACZ,IAAIr0B,EAAIF,EAAEs0B,MACVp0B,EAAIA,IACJF,EAAEw0B,QAAUt0B,EACZA,EAAE8pD,MAAK,SAAU9pD,GACf,IAAMF,EAAEu0B,UAAYr0B,EAAIA,EAAW,QAAGF,EAAEu0B,QAAU,EAAGv0B,EAAEw0B,QAAUt0B,MAChE,SAAUA,GACX,IAAMF,EAAEu0B,UAAYv0B,EAAEu0B,QAAU,EAAGv0B,EAAEw0B,QAAUt0B,OAiuM/CiwD,CAAG7tD,GACC,IAAMA,EAAEiyB,QAAS,MAAMjyB,EAAEkyB,QAM7B,OALAlyB,EAAIA,EAAEkyB,QACNt0B,EAAEgG,KAAO5D,EACTgpB,EAAIprB,EAAE0b,IA+MZ,SAAY5b,GACV,GAAI,mBAAsBA,EAAG,OAAOumD,GAAGvmD,GAAK,EAAI,EAEhD,GAAI,MAAWA,EAAiB,CAE9B,IADAA,EAAIA,EAAEiH,YACIgyB,EAAI,OAAO,GACrB,GAAIj5B,IAAMo5B,EAAI,OAAO,GAGvB,OAAO,EAxNSg3B,CAAG9tD,GACftC,EAAI48C,GAAGt6C,EAAGtC,GAEFsrB,GACN,KAAK,EACHprB,EAAIumD,GAAG,KAAMvmD,EAAGoC,EAAGtC,EAAGkC,GACtB,MAEF,KAAK,EACHhC,EAAIymD,GAAG,KAAMzmD,EAAGoC,EAAGtC,EAAGkC,GACtB,MAEF,KAAK,GACHhC,EAAIkmD,GAAG,KAAMlmD,EAAGoC,EAAGtC,EAAGkC,GACtB,MAEF,KAAK,GACHhC,EAAIomD,GAAG,KAAMpmD,EAAGoC,EAAGs6C,GAAGt6C,EAAE4D,KAAMlG,GAAIqC,EAAGH,GACrC,MAEF,QACE,MAAM+G,MAAM7I,EAAE,IAAKkC,EAAG,KAG1B,OAAOpC,EAET,KAAK,EACH,OAAOmC,EAAInC,EAAEgG,KAAM5D,EAAIpC,EAAE6lD,aAAsDU,GAAGzmD,EAAGE,EAAGmC,EAAjDC,EAAIpC,EAAE+gD,cAAgB5+C,EAAIC,EAAIs6C,GAAGv6C,EAAGC,GAAmBJ,GAEhG,KAAK,EACH,OAAOG,EAAInC,EAAEgG,KAAM5D,EAAIpC,EAAE6lD,aAAsDY,GAAG3mD,EAAGE,EAAGmC,EAAjDC,EAAIpC,EAAE+gD,cAAgB5+C,EAAIC,EAAIs6C,GAAGv6C,EAAGC,GAAmBJ,GAEhG,KAAK,EAGH,GAFA8kD,GAAG9mD,GAEC,QADJmC,EAAInC,EAAE4+C,aACU,MAAM71C,MAAM7I,EAAE,MAK9B,GAHAkC,EAAI,QADJA,EAAIpC,EAAEigC,eACW79B,EAAEif,QAAU,KAC7B29B,GAAGh/C,EAAGmC,EAAGnC,EAAE6lD,aAAc,KAAM7jD,IAC/BG,EAAInC,EAAEigC,cAAc5e,WACVjf,EAAGsV,KAAM1X,EAAImmD,GAAGrmD,EAAGE,EAAGgC,OAAQ,CAEtC,IADII,EAAIpC,EAAEm4B,UAAU6J,WAASwjB,GAAKjS,GAAGvzC,EAAEm4B,UAAU8J,cAAczD,YAAa+mB,GAAKvlD,EAAGoC,EAAIqjD,IAAK,GACzFrjD,EAAG,IAAKJ,EAAIs/C,GAAGthD,EAAG,KAAMmC,EAAGH,GAAIhC,EAAEikB,MAAQjiB,EAAGA,GAC9CA,EAAE+9B,WAA2B,EAAf/9B,EAAE+9B,UAAiB,KAAM/9B,EAAIA,EAAEq+B,aACxCl9B,GAAErD,EAAGE,EAAGmC,EAAGH,GAAI0V,KACtB1X,EAAIA,EAAEikB,MAER,OAAOjkB,EAET,KAAK,EACH,OAAO+hD,GAAG/hD,GAAI,OAASF,GAAKgmD,GAAG9lD,GAAImC,EAAInC,EAAEgG,KAAM5D,EAAIpC,EAAE6lD,aAAcz6B,EAAI,OAAStrB,EAAIA,EAAEoiD,cAAgB,KAAMjjD,EAAImD,EAAE6D,SAAUmtC,GAAGjxC,EAAGC,GAAKnD,EAAI,KAAO,OAASmsB,GAAKgoB,GAAGjxC,EAAGipB,KAAOprB,EAAE+/B,WAAa,IAAKymB,GAAG1mD,EAAGE,GAAa,EAATA,EAAE0M,MAAY,IAAM1K,GAAKI,EAAE4tD,QAAUhwD,EAAE0D,eAAiB1D,EAAEm9C,oBAAsB,EAAGn9C,EAAI,OAASmD,GAAErD,EAAGE,EAAGf,EAAG+C,GAAIhC,EAAIA,EAAEikB,OAAQjkB,EAE1U,KAAK,EACH,OAAO,OAASF,GAAKgmD,GAAG9lD,GAAI,KAE9B,KAAK,GACH,OAAOqnD,GAAGvnD,EAAGE,EAAGgC,GAElB,KAAK,EACH,OAAO4/C,GAAG5hD,EAAGA,EAAEm4B,UAAU8J,eAAgB9/B,EAAInC,EAAE6lD,aAAc,OAAS/lD,EAAIE,EAAEikB,MAAQo9B,GAAGrhD,EAAG,KAAMmC,EAAGH,GAAKmB,GAAErD,EAAGE,EAAGmC,EAAGH,GAAIhC,EAAEikB,MAE3H,KAAK,GACH,OAAO9hB,EAAInC,EAAEgG,KAAM5D,EAAIpC,EAAE6lD,aAAsDK,GAAGpmD,EAAGE,EAAGmC,EAAjDC,EAAIpC,EAAE+gD,cAAgB5+C,EAAIC,EAAIs6C,GAAGv6C,EAAGC,GAAmBJ,GAEhG,KAAK,EACH,OAAOmB,GAAErD,EAAGE,EAAGA,EAAE6lD,aAAc7jD,GAAIhC,EAAEikB,MAEvC,KAAK,EAGL,KAAK,GACH,OAAO9gB,GAAErD,EAAGE,EAAGA,EAAE6lD,aAAa5/C,SAAUjE,GAAIhC,EAAEikB,MAEhD,KAAK,GACHnkB,EAAG,CAOD,GANAqC,EAAInC,EAAEgG,KAAKiuB,SACX7xB,EAAIpC,EAAE6lD,aACN5mD,EAAIe,EAAEkiD,cAENlF,GAAGh9C,EADHorB,EAAIhpB,EAAE5C,OAGF,OAASP,EAAG,CACd,IAAIC,EAAID,EAAEO,MAGV,GAAI,KAFJ4rB,EAAI+sB,GAAGj5C,EAAGksB,GAAK,EAAmG,GAA9F,mBAAsBjpB,EAAE0xB,sBAAwB1xB,EAAE0xB,sBAAsB30B,EAAGksB,GAAK,cAGlG,GAAInsB,EAAEgH,WAAa7D,EAAE6D,WAAa5D,GAAEsqB,QAAS,CAC3C3sB,EAAImmD,GAAGrmD,EAAGE,EAAGgC,GACb,MAAMlC,QAEH,IAAkB,QAAbZ,EAAIc,EAAEikB,SAAsB/kB,EAAU,OAAIc,GAAI,OAASd,GAAI,CACrE,IAAIC,EAAID,EAAEo3B,aAEV,GAAI,OAASn3B,EAAG,CACdF,EAAIC,EAAE+kB,MAEN,IAAK,IAAI7kB,EAAID,EAAEk+C,aAAc,OAASj+C,GAAI,CACxC,GAAIA,EAAEqI,UAAYtF,GAAK,IAAO/C,EAAEo+C,aAAepyB,GAAI,CACjD,IAAMlsB,EAAEwc,OAAQtc,EAAIk/C,GAAGt8C,EAAG,OAAS0Z,IAAM,EAAGijC,GAAGz/C,EAAGE,IAClDF,EAAEwE,eAAiB1B,IAAM9C,EAAEwE,eAAiB1B,GAE5C,QADA5C,EAAIF,EAAE4gC,YACQ1gC,EAAEsE,eAAiB1B,IAAM5C,EAAEsE,eAAiB1B,GAC1Dk7C,GAAGh+C,EAAU,OAAG8C,GAChB7C,EAAEuE,eAAiB1B,IAAM7C,EAAEuE,eAAiB1B,GAC5C,MAGF5C,EAAIA,EAAEoG,WAEHvG,EAAI,KAAOC,EAAEwc,KAAMxc,EAAE8G,OAAShG,EAAEgG,KAAO,KAAiB9G,EAAE+kB,MAEjE,GAAI,OAAShlB,EAAGA,EAAU,OAAIC,OAAO,IAAKD,EAAIC,EAAG,OAASD,GAAI,CAC5D,GAAIA,IAAMe,EAAG,CACXf,EAAI,KACJ,MAKF,GAAI,QAFJC,EAAID,EAAEohC,SAEU,CACdnhC,EAAU,OAAID,EAAU,OACxBA,EAAIC,EACJ,MAGFD,EAAIA,EAAU,OAEhBC,EAAID,GAIRkE,GAAErD,EAAGE,EAAGoC,EAAE6D,SAAUjE,GACpBhC,EAAIA,EAAEikB,MAGR,OAAOjkB,EAET,KAAK,EACH,OAAOoC,EAAIpC,EAAEgG,KAA0B7D,GAApBipB,EAAIprB,EAAE6lD,cAAoB5/C,SAAUm3C,GAAGp9C,EAAGgC,GAAwCG,EAAIA,EAAxCC,EAAIm7C,GAAGn7C,EAAGgpB,EAAE+kC,wBAAkCnwD,EAAE+/B,WAAa,EAAG58B,GAAErD,EAAGE,EAAGmC,EAAGH,GAAIhC,EAAEikB,MAEpJ,KAAK,GACH,OAAmBmH,EAAIsxB,GAAhBt6C,EAAIpC,EAAEgG,KAAgBhG,EAAE6lD,cAAkCO,GAAGtmD,EAAGE,EAAGoC,EAA5BgpB,EAAIsxB,GAAGt6C,EAAE4D,KAAMolB,GAAmBjpB,EAAGH,GAErF,KAAK,GACH,OAAOskD,GAAGxmD,EAAGE,EAAGA,EAAEgG,KAAMhG,EAAE6lD,aAAc1jD,EAAGH,GAE7C,KAAK,GACH,OAAOG,EAAInC,EAAEgG,KAAM5D,EAAIpC,EAAE6lD,aAAczjD,EAAIpC,EAAE+gD,cAAgB5+C,EAAIC,EAAIs6C,GAAGv6C,EAAGC,GAAI,OAAStC,IAAMA,EAAEggC,UAAY,KAAM9/B,EAAE8/B,UAAY,KAAM9/B,EAAE+/B,WAAa,GAAI//B,EAAE0b,IAAM,EAAGpZ,GAAEH,IAAMrC,GAAI,EAAI86C,GAAG56C,IAAMF,GAAI,EAAIs9C,GAAGp9C,EAAGgC,GAAI89C,GAAG9/C,EAAGmC,EAAGC,GAAO+9C,GAAGngD,EAAGmC,EAAGC,EAAGJ,GAAI4kD,GAAG,KAAM5mD,EAAGmC,GAAG,EAAIrC,EAAGkC,GAEvQ,KAAK,GACH,OAAO+lD,GAAGjoD,EAAGE,EAAGgC,GAGpB,MAAM+G,MAAM7I,EAAE,IAAKF,EAAE0b,OAGvB,IAAIm0C,GAAK,KACL7G,GAAK,KA0BT,SAASoH,GAAGtwD,EAAGE,EAAGgC,EAAGG,GACnB0C,KAAK6W,IAAM5b,EACX+E,KAAKY,IAAMzD,EACX6C,KAAKw7B,QAAUx7B,KAAKof,MAAQpf,KAAa,OAAIA,KAAKszB,UAAYtzB,KAAKmB,KAAOnB,KAAKk8C,YAAc,KAC7Fl8C,KAAK0F,MAAQ,EACb1F,KAAK2C,IAAM,KACX3C,KAAKghD,aAAe7lD,EACpB6E,KAAKyxB,aAAezxB,KAAKo7B,cAAgBp7B,KAAK+5C,YAAc/5C,KAAKq9C,cAAgB,KACjFr9C,KAAK6H,KAAOvK,EACZ0C,KAAKk7B,UAAY,EACjBl7B,KAAKq5C,WAAar5C,KAAKo5C,YAAcp5C,KAAK45C,WAAa,KACvD55C,KAAKs4C,oBAAsBt4C,KAAKnB,eAAiB,EACjDmB,KAAKi7B,UAAY,KAGnB,SAAS6lB,GAAG7lD,EAAGE,EAAGgC,EAAGG,GACnB,OAAO,IAAIiuD,GAAGtwD,EAAGE,EAAGgC,EAAGG,GAGzB,SAASkkD,GAAGvmD,GAEV,UADAA,EAAIA,EAAE4J,aACU5J,EAAE6yB,kBAepB,SAASkuB,GAAG/gD,EAAGE,GACb,IAAIgC,EAAIlC,EAAEggC,UAiBV,OAhBA,OAAS99B,IAAKA,EAAI2jD,GAAG7lD,EAAE4b,IAAK1b,EAAGF,EAAE2F,IAAK3F,EAAE4M,OAASq0C,YAAcjhD,EAAEihD,YAAa/+C,EAAEgE,KAAOlG,EAAEkG,KAAMhE,EAAEm2B,UAAYr4B,EAAEq4B,UAAWn2B,EAAE89B,UAAYhgC,EAAGA,EAAEggC,UAAY99B,IAAMA,EAAE6jD,aAAe7lD,EAAGgC,EAAE+9B,UAAY,EAAG/9B,EAAEy8C,WAAa,KAAMz8C,EAAEi8C,YAAc,KAAMj8C,EAAEk8C,WAAa,MAC9Pl8C,EAAEm7C,oBAAsBr9C,EAAEq9C,oBAC1Bn7C,EAAE0B,eAAiB5D,EAAE4D,eACrB1B,EAAEiiB,MAAQnkB,EAAEmkB,MACZjiB,EAAEkgD,cAAgBpiD,EAAEoiD,cACpBlgD,EAAEi+B,cAAgBngC,EAAEmgC,cACpBj+B,EAAE48C,YAAc9+C,EAAE8+C,YAClB5+C,EAAIF,EAAEw2B,aACNt0B,EAAEs0B,aAAe,OAASt2B,EAAI,KAAO,CACnC0D,eAAgB1D,EAAE0D,eAClB25C,aAAcr9C,EAAEq9C,aAChBI,WAAYz9C,EAAEy9C,YAEhBz7C,EAAEq+B,QAAUvgC,EAAEugC,QACdr+B,EAAEuI,MAAQzK,EAAEyK,MACZvI,EAAEwF,IAAM1H,EAAE0H,IACHxF,EAGT,SAASg/C,GAAGlhD,EAAGE,EAAGgC,EAAGG,EAAGC,EAAGgpB,GACzB,IAAInsB,EAAI,EAER,GADAkD,EAAIrC,EACA,mBAAsBA,EAAGumD,GAAGvmD,KAAOb,EAAI,QAAQ,GAAI,iBAAoBa,EAAGb,EAAI,OAAOa,EAAG,OAAQA,GAClG,KAAK24B,EACH,OAAO0oB,GAAGn/C,EAAEiE,SAAU7D,EAAGgpB,EAAGprB,GAE9B,KAAK84B,EACH75B,EAAI,EACJmD,GAAK,EACL,MAEF,KAAKs2B,EACHz5B,EAAI,EACJmD,GAAK,EACL,MAEF,KAAKu2B,EACH,OAAO74B,EAAI6lD,GAAG,GAAI3jD,EAAGhC,EAAO,EAAJoC,IAAU2+C,YAAcpoB,EAAI74B,EAAEkG,KAAO2yB,EAAI74B,EAAE4D,eAAiB0nB,EAAGtrB,EAEzF,KAAKk5B,EACH,OAAOl5B,EAAI6lD,GAAG,GAAI3jD,EAAGhC,EAAGoC,IAAM4D,KAAOgzB,EAAIl5B,EAAEihD,YAAc/nB,EAAIl5B,EAAE4D,eAAiB0nB,EAAGtrB,EAErF,KAAKm5B,EACH,OAAOn5B,EAAI6lD,GAAG,GAAI3jD,EAAGhC,EAAGoC,IAAM2+C,YAAc9nB,EAAIn5B,EAAE4D,eAAiB0nB,EAAGtrB,EAExE,QACE,GAAI,iBAAoBA,GAAK,OAASA,EAAG,OAAQA,EAAEiH,UACjD,KAAK6xB,EACH35B,EAAI,GACJ,MAAMa,EAER,KAAK+4B,EACH55B,EAAI,EACJ,MAAMa,EAER,KAAKi5B,EACH95B,EAAI,GACJ,MAAMa,EAER,KAAKo5B,EACHj6B,EAAI,GACJ,MAAMa,EAER,KAAKq5B,EACHl6B,EAAI,GACJkD,EAAI,KACJ,MAAMrC,EAEV,MAAMiJ,MAAM7I,EAAE,IAAK,MAAQJ,EAAIA,SAAWA,EAAG,KAMjD,OAJAE,EAAI2lD,GAAG1mD,EAAG+C,EAAGhC,EAAGoC,IACd2+C,YAAcjhD,EAChBE,EAAEgG,KAAO7D,EACTnC,EAAE0D,eAAiB0nB,EACZprB,EAGT,SAASmhD,GAAGrhD,EAAGE,EAAGgC,EAAGG,GAGnB,OAFArC,EAAI6lD,GAAG,EAAG7lD,EAAGqC,EAAGnC,IACd0D,eAAiB1B,EACZlC,EAGT,SAASghD,GAAGhhD,EAAGE,EAAGgC,GAGhB,OAFAlC,EAAI6lD,GAAG,EAAG7lD,EAAG,KAAME,IACjB0D,eAAiB1B,EACZlC,EAGT,SAASohD,GAAGphD,EAAGE,EAAGgC,GAQhB,OAPAhC,EAAI2lD,GAAG,EAAG,OAAS7lD,EAAEmG,SAAWnG,EAAEmG,SAAW,GAAInG,EAAE2F,IAAKzF,IACtD0D,eAAiB1B,EACnBhC,EAAEm4B,UAAY,CACZ8J,cAAeniC,EAAEmiC,cACjBouB,gBAAiB,KACjBpP,eAAgBnhD,EAAEmhD,gBAEbjhD,EAGT,SAASswD,GAAGxwD,EAAGE,EAAGgC,GAChB6C,KAAK6W,IAAM1b,EACX6E,KAAK8nB,QAAU,KACf9nB,KAAKo9B,cAAgBniC,EACrB+E,KAAK4oD,UAAY5oD,KAAKwrD,gBAAkB,KACxCxrD,KAAKkoD,uBAAyB,EAC9BloD,KAAKioD,aAAe,KACpBjoD,KAAKqoD,eAAiB,EACtBroD,KAAKkiD,eAAiBliD,KAAK4C,QAAU,KACrC5C,KAAKm9B,QAAUhgC,EACf6C,KAAKynD,aAAe,KACpBznD,KAAKwnD,iBAAmB,GACxBxnD,KAAKknD,gBAAkBlnD,KAAKqnD,eAAiBrnD,KAAKsnD,sBAAwBtnD,KAAKmoD,kBAAoBnoD,KAAKkpD,mBAAqBlpD,KAAKonD,iBAAmB,EAGvJ,SAASD,GAAGlsD,EAAGE,GACb,IAAIgC,EAAIlC,EAAEiuD,mBAEV,OADAjuD,EAAIA,EAAEktD,kBACC,IAAMhrD,GAAKA,GAAKhC,GAAKF,GAAKE,EAGnC,SAAS4rD,GAAG9rD,EAAGE,GACb,IAAIgC,EAAIlC,EAAEiuD,mBACN5rD,EAAIrC,EAAEktD,kBACVhrD,EAAIhC,IAAMF,EAAEiuD,mBAAqB/tD,IAC7BmC,EAAInC,GAAK,IAAMgC,KAAGlC,EAAEktD,kBAAoBhtD,GAC5CA,GAAKF,EAAEosD,iBAAmBpsD,EAAEosD,eAAiB,GAC7ClsD,GAAKF,EAAEisD,kBAAoBjsD,EAAEisD,gBAAkB,GAGjD,SAASF,GAAG/rD,EAAGE,GACbA,EAAIF,EAAEmsD,mBAAqBnsD,EAAEmsD,iBAAmBjsD,GAChD,IAAIgC,EAAIlC,EAAEiuD,mBACV,IAAM/rD,IAAMhC,GAAKgC,EAAIlC,EAAEiuD,mBAAqBjuD,EAAEktD,kBAAoBltD,EAAEqsD,sBAAwB,EAAInsD,GAAKF,EAAEktD,oBAAsBltD,EAAEktD,kBAAoBhtD,EAAI,GAAIA,EAAIF,EAAEqsD,wBAA0BrsD,EAAEqsD,sBAAwBnsD,IAGvN,SAASwsD,GAAG1sD,EAAGE,GACb,IAAIgC,EAAIlC,EAAEisD,iBACN,IAAM/pD,GAAKA,EAAIhC,KAAGF,EAAEisD,gBAAkB/rD,GAG5C,SAASuwD,GAAGzwD,EAAGE,EAAGgC,EAAGG,GACnB,IAAIC,EAAIpC,EAAE2sB,QACNvB,EAAIs0B,KACJzgD,EAAIogD,GAAG5pB,SACXrK,EAAIu0B,GAAGv0B,EAAGhpB,EAAGnD,GAEba,EAAG,GAAIkC,EAAG,CAGRhC,EAAG,CACD,GAAI6/B,GAHN79B,EAAIA,EAAEy9C,uBAGUz9C,GAAK,IAAMA,EAAE0Z,IAAK,MAAM3S,MAAM7I,EAAE,MAC9C,IAAIhB,EAAI8C,EAER,EAAG,CACD,OAAQ9C,EAAEwc,KACR,KAAK,EACHxc,EAAIA,EAAEi5B,UAAU1wB,QAChB,MAAMzH,EAER,KAAK,EACH,GAAIsC,GAAEpD,EAAE8G,MAAO,CACb9G,EAAIA,EAAEi5B,UAAU0iB,0CAChB,MAAM76C,GAKZd,EAAIA,EAAU,aACP,OAASA,GAElB,MAAM6J,MAAM7I,EAAE,MAGhB,GAAI,IAAM8B,EAAE0Z,IAAK,CACf,IAAIvc,EAAI6C,EAAEgE,KAEV,GAAI1D,GAAEnD,GAAI,CACR6C,EAAI04C,GAAG14C,EAAG7C,EAAGD,GACb,MAAMY,GAIVkC,EAAI9C,OACC8C,EAAIg4C,GAWX,OATA,OAASh6C,EAAEyH,QAAUzH,EAAEyH,QAAUzF,EAAIhC,EAAE+mD,eAAiB/kD,GACxDhC,EAAIs+C,GAAGlzB,EAAGnsB,IACRu/C,QAAU,CACVn9B,QAASvhB,GAGX,QADAqC,OAAI,IAAWA,EAAI,KAAOA,KACXnC,EAAEwD,SAAWrB,GAC5Bw8C,GAAGv8C,EAAGpC,GACN4/C,GAAGx9C,EAAGgpB,GACCA,EAGT,SAASolC,GAAG1wD,GAEV,KADAA,EAAIA,EAAE6sB,SACC1I,MAAO,OAAO,KAErB,OAAQnkB,EAAEmkB,MAAMvI,KACd,KAAK,EAGL,QACE,OAAO5b,EAAEmkB,MAAMkU,WAIrB,SAASs4B,GAAG3wD,EAAGE,GAEb,QADAF,EAAIA,EAAEmgC,gBACQ,OAASngC,EAAEogC,YAAcpgC,EAAEsnD,UAAYpnD,IAAMF,EAAEsnD,UAAYpnD,GAG3E,SAAS0wD,GAAG5wD,EAAGE,GACbywD,GAAG3wD,EAAGE,IACLF,EAAIA,EAAEggC,YAAc2wB,GAAG3wD,EAAGE,GAG7B,SAAS2wD,GAAG7wD,EAAGE,EAAGgC,GAEhB,IAAIG,EAAI,IAAImuD,GAAGxwD,EAAGE,EADlBgC,EAAI,MAAQA,IAAK,IAAOA,EAAEggC,SAEtB5/B,EAAIujD,GAAG,EAAG,KAAM,KAAM,IAAM3lD,EAAI,EAAI,IAAMA,EAAI,EAAI,GACtDmC,EAAEwqB,QAAUvqB,EACZA,EAAE+1B,UAAYh2B,EACdrC,EAAEi0C,IAAM5xC,EAAEwqB,QACV3qB,GAAK,IAAMhC,GAn9Lb,SAAYF,GACV,IAAIE,EAAIkuC,GAAGpuC,GACXohC,GAAGjzB,SAAQ,SAAUjM,GACnBosC,GAAGpsC,EAAGlC,EAAGE,MAEXmhC,GAAGlzB,SAAQ,SAAUjM,GACnBosC,GAAGpsC,EAAGlC,EAAGE,MA68LK4wD,CAAG,IAAM9wD,EAAE6+B,SAAW7+B,EAAIA,EAAEo9B,eAC5Cr4B,KAAKgsD,cAAgB1uD,EAiBvB,SAAS2uD,GAAGhxD,GACV,SAAUA,GAAK,IAAMA,EAAE6+B,UAAY,IAAM7+B,EAAE6+B,UAAY,KAAO7+B,EAAE6+B,WAAa,IAAM7+B,EAAE6+B,UAAY,iCAAmC7+B,EAAE8+B,YAaxI,SAASmyB,GAAGjxD,EAAGE,EAAGgC,EAAGG,EAAGC,GACtB,IAAIgpB,EAAIppB,EAAEunD,oBAEV,GAAIn+B,EAAG,CACL,IAAInsB,EAAImsB,EAAEylC,cAEV,GAAI,mBAAsBzuD,EAAG,CAC3B,IAAIlD,EAAIkD,EAERA,EAAI,WACF,IAAItC,EAAI0wD,GAAGvxD,GACXC,EAAE2b,KAAK/a,IAIXywD,GAAGvwD,EAAGf,EAAGa,EAAGsC,OACP,CAIL,GAHAgpB,EAAIppB,EAAEunD,oBA3BV,SAAYzpD,EAAGE,GAEb,GADAA,IAA0EA,MAApEA,EAAIF,EAAI,IAAMA,EAAE6+B,SAAW7+B,EAAE+hD,gBAAkB/hD,EAAE0+B,WAAa,OAAkB,IAAMx+B,EAAE2+B,WAAa3+B,EAAEgxD,aAAa,qBACrHhxD,EAAG,IAAK,IAAIgC,EAAGA,EAAIlC,EAAE4+B,WACxB5+B,EAAE8wB,YAAY5uB,GAEhB,OAAO,IAAI2uD,GAAG7wD,EAAG,EAAGE,EAAI,CACtBgiC,SAAS,QACP,GAoB0BivB,CAAGjvD,EAAGG,GAClClD,EAAImsB,EAAEylC,cAEF,mBAAsBzuD,EAAG,CAC3B,IAAIjD,EAAIiD,EAERA,EAAI,WACF,IAAItC,EAAI0wD,GAAGvxD,GACXE,EAAE0b,KAAK/a,IAIX0tD,IAAG,WACD+C,GAAGvwD,EAAGf,EAAGa,EAAGsC,MAIhB,OAAOouD,GAAGvxD,GAGZ,SAASiyD,GAAGpxD,EAAGE,EAAGgC,GAChB,IAAIG,EAAI,EAAI2C,UAAU7C,aAAU,IAAW6C,UAAU,GAAKA,UAAU,GAAK,KACzE,MAAO,CACLiC,SAAUyxB,EACV/yB,IAAK,MAAQtD,EAAI,KAAO,GAAKA,EAC7B8D,SAAUnG,EACVmiC,cAAejiC,EACfihD,eAAgBj/C,GA8FpB,SAASmvD,GAAGrxD,EAAGE,GACb,IAAIgC,EAAI,EAAI8C,UAAU7C,aAAU,IAAW6C,UAAU,GAAKA,UAAU,GAAK,KACzE,IAAKgsD,GAAG9wD,GAAI,MAAM+I,MAAM7I,EAAE,MAC1B,OAAOgxD,GAAGpxD,EAAGE,EAAG,KAAMgC,GAzKxB2uD,GAAGjnD,UAAUgB,OAAS,SAAU5K,EAAGE,GACjCuwD,GAAGzwD,EAAG+E,KAAKgsD,cAAe,UAAM,IAAW7wD,EAAI,KAAOA,IAGxD2wD,GAAGjnD,UAAU0nD,QAAU,SAAUtxD,GAC/B,IAAIE,EAAI6E,KAAKgsD,cACT7uD,OAAI,IAAWlC,EAAI,KAAOA,EAC1BqC,EAAInC,EAAEiiC,cACVsuB,GAAG,KAAMvwD,EAAG,MAAM,WAChBmC,EAAE4xC,IAAM,KACR,OAAS/xC,GAAKA,QAkElBu+B,GAAK,SAAYzgC,GACf,GAAI,KAAOA,EAAE4b,IAAK,CAChB,IAAI1b,EAAIy8C,GAAGiD,KAAM,IAAK,KACtBE,GAAG9/C,EAAGE,GACN0wD,GAAG5wD,EAAGE,KAIVwgC,GAAK,SAAY1gC,GACf,GAAI,KAAOA,EAAE4b,IAAK,CAChBgkC,KACA,IAAI1/C,EAAIw8C,KACRoD,GAAG9/C,EAAGE,GACN0wD,GAAG5wD,EAAGE,KAIVygC,GAAK,SAAY3gC,GACf,GAAI,KAAOA,EAAE4b,IAAK,CAChB,IAAI1b,EAAI0/C,KAERE,GAAG9/C,EADHE,EAAI2/C,GAAG3/C,EAAGF,EAAG,OAEb4wD,GAAG5wD,EAAGE,KAIV65B,GAAK,SAAY/5B,EAAGE,EAAGgC,GACrB,OAAQhC,GACN,IAAK,QAIH,GAHA+8B,GAAGj9B,EAAGkC,GACNhC,EAAIgC,EAAE6I,KAEF,UAAY7I,EAAEgE,MAAQ,MAAQhG,EAAG,CACnC,IAAKgC,EAAIlC,EAAGkC,EAAE2uB,YACZ3uB,EAAIA,EAAE2uB,WAKR,IAFA3uB,EAAIA,EAAEkuB,iBAAiB,cAAgBmhC,KAAKC,UAAU,GAAKtxD,GAAK,mBAE3DA,EAAI,EAAGA,EAAIgC,EAAEC,OAAQjC,IAAK,CAC7B,IAAImC,EAAIH,EAAEhC,GAEV,GAAImC,IAAMrC,GAAKqC,EAAEovD,OAASzxD,EAAEyxD,KAAM,CAChC,IAAInvD,EAAI6xC,GAAG9xC,GACX,IAAKC,EAAG,MAAM2G,MAAM7I,EAAE,KACtBk8B,GAAGj6B,GACH46B,GAAG56B,EAAGC,KAKZ,MAEF,IAAK,WACHu7B,GAAG79B,EAAGkC,GACN,MAEF,IAAK,SACU,OAAbhC,EAAIgC,EAAExC,QAAoB89B,GAAGx9B,IAAKkC,EAAE0nD,SAAU1pD,GAAG,KAIvDk6B,GAAKqzB,GAELpzB,GAAK,SAAYr6B,EAAGE,EAAGgC,EAAGG,GACxB,IAAIC,EAAIiB,GACRA,IAAK,EAEL,IACE,OAAO84C,GAAG,GAAIr8C,EAAEob,KAAK,KAAMlb,EAAGgC,EAAGG,IACjC,QAhlEI,KAilEJkB,GAAIjB,IAAcm6C,OAItBniB,GAAK,WArlEG,IAslED,GAAJ/2B,MA1yDH,WACE,GAAI,OAASgoD,GAAI,CACf,IAAIvrD,EAAIurD,GACRA,GAAK,KACLvrD,EAAEmO,SAAQ,SAAUnO,EAAGkC,GACrBwqD,GAAGxqD,EAAGlC,GACNiE,GAAE/B,MAEJu6C,MAkyD4BiV,GAAM/E,OAGtCpyB,GAAK,SAAYv6B,EAAGE,GAClB,IAAIgC,EAAIqB,GACRA,IAAK,EAEL,IACE,OAAOvD,EAAEE,GACT,QA/lEI,KAgmEJqD,GAAIrB,IAAcu6C,OAUtB,IA8DWz8C,GACLE,GA/DFyxD,GAAK,CACPC,aAAcP,GACdQ,YAAa,SAAqB7xD,GAChC,GAAI,MAAQA,EAAG,OAAO,KACtB,GAAI,IAAMA,EAAE6+B,SAAU,OAAO7+B,EAC7B,IAAIE,EAAIF,EAAE2/C,oBAEV,QAAI,IAAWz/C,EAAG,CAChB,GAAI,mBAAsBF,EAAE4K,OAAQ,MAAM3B,MAAM7I,EAAE,MAClD,MAAM6I,MAAM7I,EAAE,IAAKb,OAAO2O,KAAKlO,KAKjC,OADAA,EAAI,QADJA,EAAIsgC,GAAGpgC,IACU,KAAOF,EAAEq4B,WAG5B6J,QAAS,SAAiBliC,EAAGE,EAAGgC,GAC9B,IAAK8uD,GAAG9wD,GAAI,MAAM+I,MAAM7I,EAAE,MAC1B,OAAO6wD,GAAG,KAAMjxD,EAAGE,GAAG,EAAIgC,IAE5B0I,OAAQ,SAAgB5K,EAAGE,EAAGgC,GAC5B,IAAK8uD,GAAG9wD,GAAI,MAAM+I,MAAM7I,EAAE,MAC1B,OAAO6wD,GAAG,KAAMjxD,EAAGE,GAAG,EAAIgC,IAE5B4vD,oCAAqC,SAA6C9xD,EAAGE,EAAGgC,EAAGG,GACzF,IAAK2uD,GAAG9uD,GAAI,MAAM+G,MAAM7I,EAAE,MAC1B,GAAI,MAAQJ,QAAK,IAAWA,EAAE2/C,oBAAqB,MAAM12C,MAAM7I,EAAE,KACjE,OAAO6wD,GAAGjxD,EAAGE,EAAGgC,GAAG,EAAIG,IAEzB0vD,uBAAwB,SAAgC/xD,GACtD,IAAKgxD,GAAGhxD,GAAI,MAAMiJ,MAAM7I,EAAE,KAC1B,QAAOJ,EAAEypD,sBAAuBiE,IAAG,WACjCuD,GAAG,KAAM,KAAMjxD,GAAG,GAAI,WACpBA,EAAEypD,oBAAsB,KACxBzpD,EAAEi0C,IAAM,YAER,IAEN+d,sBAAuB,WACrB,OAAOX,GAAGvsD,WAAM,EAAQE,YAE1BitD,wBAAyBxE,GACzByE,UAAW,SAAmBlyD,EAAGE,GAC/B,GArpEI,IAqpEK,GAAJqD,IAAsB,MAAM0F,MAAM7I,EAAE,MACzC,IAAI8B,EAAIqB,GACRA,IAAK,EAEL,IACE,OAAO84C,GAAG,GAAIr8C,EAAEob,KAAK,KAAMlb,IAC3B,QACAqD,GAAIrB,EAAGu6C,OAGXjnB,mDAAoD,CAClD28B,OAAQ,CAACrwB,GAAIoS,GAAIC,GAAIlc,EAAGE,yBAA0BjC,EAAImN,GAAI,SAAUrjC,GAClEw3B,EAAGx3B,EAAGojC,KACL7U,GAAI4L,GAAI0T,GAAI7V,EAAI20B,GAAI,CACrB9/B,SAAS,MAMT3sB,IADKF,GAqBR,CACDoyD,wBAAyBpwB,GACzBqwB,WAAY,EACZ98B,QAAS,UACT+8B,oBAAqB,cAxBXF,wBAjhBZ,SAAYpyD,GACV,GAAI,oBAAuB+qB,+BAAgC,OAAO,EAClE,IAAI7qB,EAAI6qB,+BACR,GAAI7qB,EAAEqyD,aAAeryD,EAAEsyD,cAAe,OAAO,EAE7C,IACE,IAAItwD,EAAIhC,EAAEuyD,OAAOzyD,GAEjB+vD,GAAK,SAAY/vD,GACf,IACEE,EAAEwyD,kBAAkBxwD,EAAGlC,OAAG,EAAQ,KAA8B,GAAtBA,EAAE6sB,QAAQoT,YACpD,MAAO39B,MAGX4mD,GAAK,SAAYlpD,GACf,IACEE,EAAEyyD,qBAAqBzwD,EAAGlC,GAC1B,MAAOsC,MAEX,MAAOD,KA+fFuwD,CAAGhwD,EAAE,GAAI5C,GAAG,CACjB6yD,kBAAmB,KACnBC,cAAe,KACfC,mBAAoB,KACpBC,eAAgB,KAChBC,qBAAsB16B,EAAG9C,uBACzBy9B,wBAAyB,SAAiClzD,GAExD,OAAO,QADPA,EAAIsgC,GAAGtgC,IACa,KAAOA,EAAEq4B,WAE/B+5B,wBAAyB,SAAiCpyD,GACxD,OAAOE,GAAIA,GAAEF,GAAK,MAEpBmzD,4BAA6B,KAC7BC,gBAAiB,KACjBC,aAAc,KACdC,kBAAmB,KACnBC,gBAAiB,QASrB,IAAIC,GAAK,CACP,QAAW7B,IAET8B,GAAKD,IAAM7B,IAAM6B,GACrB3qD,EAAOpJ,QAAUg0D,GAAY,SAAKA","file":"commons-b35008cb74c6abd7ace8.js","sourcesContent":["/** @license React v0.18.0\n * scheduler.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';\n\nrequire(\"core-js/modules/es6.date.now\");\n\nrequire(\"core-js/modules/es6.object.define-property\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: !0\n});\n\nvar _f, g, h, k, l;\n\nif (\"undefined\" === typeof window || \"function\" !== typeof MessageChannel) {\n  var p = null,\n      q = null,\n      t = function t() {\n    if (null !== p) try {\n      var a = exports.unstable_now();\n      p(!0, a);\n      p = null;\n    } catch (b) {\n      throw setTimeout(t, 0), b;\n    }\n  },\n      u = Date.now();\n\n  exports.unstable_now = function () {\n    return Date.now() - u;\n  };\n\n  _f = function f(a) {\n    null !== p ? setTimeout(_f, 0, a) : (p = a, setTimeout(t, 0));\n  };\n\n  g = function g(a, b) {\n    q = setTimeout(a, b);\n  };\n\n  h = function h() {\n    clearTimeout(q);\n  };\n\n  k = function k() {\n    return !1;\n  };\n\n  l = exports.unstable_forceFrameRate = function () {};\n} else {\n  var w = window.performance,\n      x = window.Date,\n      y = window.setTimeout,\n      z = window.clearTimeout;\n\n  if (\"undefined\" !== typeof console) {\n    var A = window.cancelAnimationFrame;\n    \"function\" !== typeof window.requestAnimationFrame && console.error(\"This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills\");\n    \"function\" !== typeof A && console.error(\"This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills\");\n  }\n\n  if (\"object\" === typeof w && \"function\" === typeof w.now) exports.unstable_now = function () {\n    return w.now();\n  };else {\n    var B = x.now();\n\n    exports.unstable_now = function () {\n      return x.now() - B;\n    };\n  }\n  var C = !1,\n      D = null,\n      E = -1,\n      F = 5,\n      G = 0;\n\n  k = function k() {\n    return exports.unstable_now() >= G;\n  };\n\n  l = function l() {};\n\n  exports.unstable_forceFrameRate = function (a) {\n    0 > a || 125 < a ? console.error(\"forceFrameRate takes a positive int between 0 and 125, forcing framerates higher than 125 fps is not unsupported\") : F = 0 < a ? Math.floor(1E3 / a) : 5;\n  };\n\n  var H = new MessageChannel(),\n      I = H.port2;\n\n  H.port1.onmessage = function () {\n    if (null !== D) {\n      var a = exports.unstable_now();\n      G = a + F;\n\n      try {\n        D(!0, a) ? I.postMessage(null) : (C = !1, D = null);\n      } catch (b) {\n        throw I.postMessage(null), b;\n      }\n    } else C = !1;\n  };\n\n  _f = function _f(a) {\n    D = a;\n    C || (C = !0, I.postMessage(null));\n  };\n\n  g = function g(a, b) {\n    E = y(function () {\n      a(exports.unstable_now());\n    }, b);\n  };\n\n  h = function h() {\n    z(E);\n    E = -1;\n  };\n}\n\nfunction J(a, b) {\n  var c = a.length;\n  a.push(b);\n\n  a: for (;;) {\n    var d = Math.floor((c - 1) / 2),\n        e = a[d];\n    if (void 0 !== e && 0 < K(e, b)) a[d] = b, a[c] = e, c = d;else break a;\n  }\n}\n\nfunction L(a) {\n  a = a[0];\n  return void 0 === a ? null : a;\n}\n\nfunction M(a) {\n  var b = a[0];\n\n  if (void 0 !== b) {\n    var c = a.pop();\n\n    if (c !== b) {\n      a[0] = c;\n\n      a: for (var d = 0, e = a.length; d < e;) {\n        var m = 2 * (d + 1) - 1,\n            n = a[m],\n            v = m + 1,\n            r = a[v];\n        if (void 0 !== n && 0 > K(n, c)) void 0 !== r && 0 > K(r, n) ? (a[d] = r, a[v] = c, d = v) : (a[d] = n, a[m] = c, d = m);else if (void 0 !== r && 0 > K(r, c)) a[d] = r, a[v] = c, d = v;else break a;\n      }\n    }\n\n    return b;\n  }\n\n  return null;\n}\n\nfunction K(a, b) {\n  var c = a.sortIndex - b.sortIndex;\n  return 0 !== c ? c : a.id - b.id;\n}\n\nvar N = [],\n    O = [],\n    P = 1,\n    Q = null,\n    R = 3,\n    S = !1,\n    T = !1,\n    U = !1;\n\nfunction V(a) {\n  for (var b = L(O); null !== b;) {\n    if (null === b.callback) M(O);else if (b.startTime <= a) M(O), b.sortIndex = b.expirationTime, J(N, b);else break;\n    b = L(O);\n  }\n}\n\nfunction W(a) {\n  U = !1;\n  V(a);\n  if (!T) if (null !== L(N)) T = !0, _f(X);else {\n    var b = L(O);\n    null !== b && g(W, b.startTime - a);\n  }\n}\n\nfunction X(a, b) {\n  T = !1;\n  U && (U = !1, h());\n  S = !0;\n  var c = R;\n\n  try {\n    V(b);\n\n    for (Q = L(N); null !== Q && (!(Q.expirationTime > b) || a && !k());) {\n      var d = Q.callback;\n\n      if (null !== d) {\n        Q.callback = null;\n        R = Q.priorityLevel;\n        var e = d(Q.expirationTime <= b);\n        b = exports.unstable_now();\n        \"function\" === typeof e ? Q.callback = e : Q === L(N) && M(N);\n        V(b);\n      } else M(N);\n\n      Q = L(N);\n    }\n\n    if (null !== Q) var m = !0;else {\n      var n = L(O);\n      null !== n && g(W, n.startTime - b);\n      m = !1;\n    }\n    return m;\n  } finally {\n    Q = null, R = c, S = !1;\n  }\n}\n\nfunction Y(a) {\n  switch (a) {\n    case 1:\n      return -1;\n\n    case 2:\n      return 250;\n\n    case 5:\n      return 1073741823;\n\n    case 4:\n      return 1E4;\n\n    default:\n      return 5E3;\n  }\n}\n\nvar Z = l;\nexports.unstable_ImmediatePriority = 1;\nexports.unstable_UserBlockingPriority = 2;\nexports.unstable_NormalPriority = 3;\nexports.unstable_IdlePriority = 5;\nexports.unstable_LowPriority = 4;\n\nexports.unstable_runWithPriority = function (a, b) {\n  switch (a) {\n    case 1:\n    case 2:\n    case 3:\n    case 4:\n    case 5:\n      break;\n\n    default:\n      a = 3;\n  }\n\n  var c = R;\n  R = a;\n\n  try {\n    return b();\n  } finally {\n    R = c;\n  }\n};\n\nexports.unstable_next = function (a) {\n  switch (R) {\n    case 1:\n    case 2:\n    case 3:\n      var b = 3;\n      break;\n\n    default:\n      b = R;\n  }\n\n  var c = R;\n  R = b;\n\n  try {\n    return a();\n  } finally {\n    R = c;\n  }\n};\n\nexports.unstable_scheduleCallback = function (a, b, c) {\n  var d = exports.unstable_now();\n\n  if (\"object\" === typeof c && null !== c) {\n    var e = c.delay;\n    e = \"number\" === typeof e && 0 < e ? d + e : d;\n    c = \"number\" === typeof c.timeout ? c.timeout : Y(a);\n  } else c = Y(a), e = d;\n\n  c = e + c;\n  a = {\n    id: P++,\n    callback: b,\n    priorityLevel: a,\n    startTime: e,\n    expirationTime: c,\n    sortIndex: -1\n  };\n  e > d ? (a.sortIndex = e, J(O, a), null === L(N) && a === L(O) && (U ? h() : U = !0, g(W, e - d))) : (a.sortIndex = c, J(N, a), T || S || (T = !0, _f(X)));\n  return a;\n};\n\nexports.unstable_cancelCallback = function (a) {\n  a.callback = null;\n};\n\nexports.unstable_wrapCallback = function (a) {\n  var b = R;\n  return function () {\n    var c = R;\n    R = b;\n\n    try {\n      return a.apply(this, arguments);\n    } finally {\n      R = c;\n    }\n  };\n};\n\nexports.unstable_getCurrentPriorityLevel = function () {\n  return R;\n};\n\nexports.unstable_shouldYield = function () {\n  var a = exports.unstable_now();\n  V(a);\n  var b = L(N);\n  return b !== Q && null !== Q && null !== b && null !== b.callback && b.startTime <= a && b.expirationTime < Q.expirationTime || k();\n};\n\nexports.unstable_requestPaint = Z;\n\nexports.unstable_continueExecution = function () {\n  T || S || (T = !0, _f(X));\n};\n\nexports.unstable_pauseExecution = function () {};\n\nexports.unstable_getFirstCallbackNode = function () {\n  return L(N);\n};\n\nexports.unstable_Profiling = null;","import \"core-js/modules/es6.object.assign\";\nimport \"core-js/modules/es7.symbol.async-iterator\";\nimport \"core-js/modules/es6.symbol\";\nimport { jsx, ThemeContext } from '@emotion/core';\nimport { css } from '@theme-ui/css';\nimport React from 'react';\nimport deepmerge from 'deepmerge';\nimport { version } from '@emotion/core/package.json';\n\nvar getCSS = function getCSS(props) {\n  if (!props.sx && !props.css) {\n    return undefined;\n  }\n\n  return function (theme) {\n    var styles = css(props.sx)(theme);\n    var raw = typeof props.css === 'function' ? props.css(theme) : props.css;\n    return [styles, raw];\n  };\n};\n\nvar parseProps = function parseProps(props) {\n  if (!props) {\n    return null;\n  }\n\n  var next = {};\n\n  for (var key in props) {\n    if (key === 'sx') {\n      continue;\n    }\n\n    next[key] = props[key];\n  }\n\n  var css$$1 = getCSS(props);\n\n  if (css$$1) {\n    next.css = css$$1;\n  }\n\n  return next;\n};\n\nvar jsx$1 = function jsx$1(type, props) {\n  var children = [],\n      len = arguments.length - 2;\n\n  while (len-- > 0) {\n    children[len] = arguments[len + 2];\n  }\n\n  return jsx.apply(undefined, [type, parseProps(props)].concat(children));\n};\n\nvar Context = React.createContext({\n  __EMOTION_VERSION__: version,\n  theme: null\n});\n\nvar useThemeUI = function useThemeUI() {\n  return React.useContext(Context);\n};\n\nvar canUseSymbol = typeof Symbol === 'function' && Symbol[\"for\"];\nvar REACT_ELEMENT = canUseSymbol ? Symbol[\"for\"]('react.element') : 0xeac7;\nvar FORWARD_REF = canUseSymbol ? Symbol[\"for\"]('react.forward_ref') : 0xeac7;\n\nvar isMergeableObject = function isMergeableObject(n) {\n  return !!n && typeof n === 'object' && n.$$typeof !== REACT_ELEMENT && n.$$typeof !== FORWARD_REF;\n};\n\nvar arrayMerge = function arrayMerge(destinationArray, sourceArray, options) {\n  return sourceArray;\n};\n\nvar merge = function merge(a, b) {\n  return deepmerge(a, b, {\n    isMergeableObject: isMergeableObject,\n    arrayMerge: arrayMerge\n  });\n};\n\nmerge.all = function () {\n  var args = [],\n      len = arguments.length;\n\n  while (len--) {\n    args[len] = arguments[len];\n  }\n\n  return deepmerge.all(args, {\n    isMergeableObject: isMergeableObject,\n    arrayMerge: arrayMerge\n  });\n};\n\nvar BaseProvider = function BaseProvider(ref) {\n  var context = ref.context;\n  var children = ref.children;\n  return jsx$1(ThemeContext.Provider, {\n    value: context.theme\n  }, jsx$1(Context.Provider, {\n    value: context,\n    children: children\n  }));\n};\n\nvar ThemeProvider = function ThemeProvider(ref) {\n  var theme = ref.theme;\n  var children = ref.children;\n  var outer = useThemeUI();\n\n  if (process.env.NODE_ENV !== 'production') {\n    if (outer.__EMOTION_VERSION__ !== version) {\n      console.warn('Multiple versions of Emotion detected,', 'and theming might not work as expected.', 'Please ensure there is only one copy of @emotion/core installed in your application.');\n    }\n  }\n\n  var context = typeof theme === 'function' ? Object.assign({}, outer, {\n    theme: theme(outer.theme)\n  }) : merge.all({}, outer, {\n    theme: theme\n  });\n  return jsx$1(BaseProvider, {\n    context: context,\n    children: children\n  });\n};\n\nexport { jsx$1 as jsx, Context, useThemeUI, merge, ThemeProvider };","'use strict';\n\nrequire(\"core-js/modules/es6.array.index-of\");\n\nrequire(\"core-js/modules/es6.array.map\");\n\nrequire(\"core-js/modules/es6.function.name\");\n\nrequire(\"core-js/modules/es6.object.create\");\n\nrequire(\"core-js/modules/es6.object.define-property\");\n\nfunction _interopDefault(ex) {\n  return ex && typeof ex === 'object' && 'default' in ex ? ex['default'] : ex;\n}\n\nvar React = require('react');\n\nvar React__default = _interopDefault(React);\n\nvar shallowEqual = _interopDefault(require('shallowequal'));\n\nfunction _defineProperty(obj, key, value) {\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n\n  return obj;\n}\n\nfunction _inheritsLoose(subClass, superClass) {\n  subClass.prototype = Object.create(superClass.prototype);\n  subClass.prototype.constructor = subClass;\n  subClass.__proto__ = superClass;\n}\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n\nfunction withSideEffect(reducePropsToState, handleStateChangeOnClient, mapStateOnServer) {\n  if (typeof reducePropsToState !== 'function') {\n    throw new Error('Expected reducePropsToState to be a function.');\n  }\n\n  if (typeof handleStateChangeOnClient !== 'function') {\n    throw new Error('Expected handleStateChangeOnClient to be a function.');\n  }\n\n  if (typeof mapStateOnServer !== 'undefined' && typeof mapStateOnServer !== 'function') {\n    throw new Error('Expected mapStateOnServer to either be undefined or a function.');\n  }\n\n  function getDisplayName(WrappedComponent) {\n    return WrappedComponent.displayName || WrappedComponent.name || 'Component';\n  }\n\n  return function wrap(WrappedComponent) {\n    if (typeof WrappedComponent !== 'function') {\n      throw new Error('Expected WrappedComponent to be a React component.');\n    }\n\n    var mountedInstances = [];\n    var state;\n\n    function emitChange() {\n      state = reducePropsToState(mountedInstances.map(function (instance) {\n        return instance.props;\n      }));\n\n      if (SideEffect.canUseDOM) {\n        handleStateChangeOnClient(state);\n      } else if (mapStateOnServer) {\n        state = mapStateOnServer(state);\n      }\n    }\n\n    var SideEffect =\n    /*#__PURE__*/\n    function (_Component) {\n      _inheritsLoose(SideEffect, _Component);\n\n      function SideEffect() {\n        return _Component.apply(this, arguments) || this;\n      } // Try to use displayName of wrapped component\n      // Expose canUseDOM so tests can monkeypatch it\n\n\n      SideEffect.peek = function peek() {\n        return state;\n      };\n\n      SideEffect.rewind = function rewind() {\n        if (SideEffect.canUseDOM) {\n          throw new Error('You may only call rewind() on the server. Call peek() to read the current state.');\n        }\n\n        var recordedState = state;\n        state = undefined;\n        mountedInstances = [];\n        return recordedState;\n      };\n\n      var _proto = SideEffect.prototype;\n\n      _proto.shouldComponentUpdate = function shouldComponentUpdate(nextProps) {\n        return !shallowEqual(nextProps, this.props);\n      };\n\n      _proto.componentWillMount = function componentWillMount() {\n        mountedInstances.push(this);\n        emitChange();\n      };\n\n      _proto.componentDidUpdate = function componentDidUpdate() {\n        emitChange();\n      };\n\n      _proto.componentWillUnmount = function componentWillUnmount() {\n        var index = mountedInstances.indexOf(this);\n        mountedInstances.splice(index, 1);\n        emitChange();\n      };\n\n      _proto.render = function render() {\n        return React__default.createElement(WrappedComponent, this.props);\n      };\n\n      return SideEffect;\n    }(React.Component);\n\n    _defineProperty(SideEffect, \"displayName\", \"SideEffect(\" + getDisplayName(WrappedComponent) + \")\");\n\n    _defineProperty(SideEffect, \"canUseDOM\", canUseDOM);\n\n    return SideEffect;\n  };\n}\n\nmodule.exports = withSideEffect;","import memoize from '@emotion/memoize';\nvar 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|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|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\n\nvar index = memoize(function (prop) {\n  return reactPropsRegex.test(prop) || prop.charCodeAt(0) === 111\n  /* o */\n  && prop.charCodeAt(1) === 110\n  /* n */\n  && prop.charCodeAt(2) < 91;\n}\n/* Z+1 */\n);\nexport default index;","import \"core-js/modules/es6.array.index-of\";\nimport \"core-js/modules/web.dom.iterable\";\nimport \"core-js/modules/es6.array.iterator\";\nimport \"core-js/modules/es6.object.to-string\";\nimport \"core-js/modules/es6.object.keys\";\nimport \"core-js/modules/es6.array.for-each\";\nimport \"core-js/modules/es6.object.assign\";\nimport \"core-js/modules/es6.array.is-array\";\nimport \"core-js/modules/es6.array.filter\";\nimport React from 'react';\nimport { jsx, useThemeUI, merge, Context } from '@theme-ui/core';\nimport { Global, ThemeContext } from '@emotion/core';\nimport { css, get } from '@theme-ui/css';\n\nvar toVarName = function toVarName(key) {\n  return \"--theme-ui-\" + key;\n};\n\nvar toVarValue = function toVarValue(key, value) {\n  return \"var(\" + toVarName(key) + \", \" + value + \")\";\n};\n\nvar join = function join() {\n  var args = [],\n      len = arguments.length;\n\n  while (len--) {\n    args[len] = arguments[len];\n  }\n\n  return args.filter(Boolean).join('-');\n};\n\nvar numberScales = {\n  fontWeights: true,\n  lineHeights: true\n};\nvar reservedKeys = {\n  useCustomProperties: true,\n  initialColorModeName: true,\n  initialColorMode: true\n};\n\nvar toPixel = function toPixel(key, value) {\n  if (typeof value !== 'number') {\n    return value;\n  }\n\n  if (numberScales[key]) {\n    return value;\n  }\n\n  return value + 'px';\n}; // convert theme values to custom properties\n\n\nvar toCustomProperties = function toCustomProperties(obj, parent, themeKey) {\n  var next = Array.isArray(obj) ? [] : {};\n\n  for (var key in obj) {\n    var value = obj[key];\n    var name = join(parent, key);\n\n    if (value && typeof value === 'object') {\n      next[key] = toCustomProperties(value, name, key);\n      continue;\n    }\n\n    if (reservedKeys[key]) {\n      next[key] = value;\n      continue;\n    }\n\n    var val = toPixel(themeKey || key, value);\n    next[key] = toVarValue(name, val);\n  }\n\n  return next;\n};\n\nvar objectToVars = function objectToVars(parent, obj) {\n  var vars = {};\n\n  for (var key in obj) {\n    if (key === 'modes') {\n      continue;\n    }\n\n    var name = join(parent, key);\n    var value = obj[key];\n\n    if (value && typeof value === 'object') {\n      vars = Object.assign({}, vars, objectToVars(name, value));\n    } else {\n      vars[toVarName(name)] = value;\n    }\n  }\n\n  return vars;\n}; // create body styles for color modes\n\n\nvar createColorStyles = function createColorStyles(theme) {\n  if (theme === void 0) theme = {};\n\n  if (!theme.colors || theme.useBodyStyles === false) {\n    return {};\n  }\n\n  if (theme.useCustomProperties === false || !theme.colors.modes) {\n    return css({\n      body: {\n        color: 'text',\n        bg: 'background'\n      }\n    })(theme);\n  }\n\n  var colors = theme.rawColors || theme.colors;\n  var modes = colors.modes;\n  var styles = objectToVars('colors', colors);\n  Object.keys(modes).forEach(function (mode) {\n    var key = \"&.theme-ui-\" + mode;\n    styles[key] = objectToVars('colors', modes[mode]);\n  });\n  return css({\n    body: Object.assign({}, styles, {\n      color: 'text',\n      bg: 'background'\n    })\n  })(theme);\n};\n\nvar STORAGE_KEY = 'theme-ui-color-mode';\nvar storage = {\n  get: function get(init) {\n    try {\n      return window.localStorage.getItem(STORAGE_KEY) || init;\n    } catch (e) {\n      console.warn('localStorage is disabled and color mode might not work as expected.', 'Please check your Site Settings.', e);\n    }\n  },\n  set: function set(value) {\n    try {\n      window.localStorage.setItem(STORAGE_KEY, value);\n    } catch (e) {\n      console.warn('localStorage is disabled and color mode might not work as expected.', 'Please check your Site Settings.', e);\n    }\n  }\n};\n\nvar getMediaQuery = function getMediaQuery() {\n  var darkQuery = '(prefers-color-scheme: dark)';\n  var lightQuery = '(prefers-color-scheme: light)';\n  var darkMQL = window.matchMedia ? window.matchMedia(darkQuery) : {};\n  var lightMQL = window.matchMedia ? window.matchMedia(lightQuery) : {};\n  var dark = darkMQL.media === darkQuery && darkMQL.matches;\n\n  if (dark) {\n    return 'dark';\n  }\n\n  var light = lightMQL.media === lightQuery && lightMQL.matches;\n\n  if (light) {\n    return 'light';\n  }\n\n  return 'default';\n};\n\nvar useColorModeState = function useColorModeState(theme) {\n  if (theme === void 0) theme = {};\n  var ref = React.useState(theme.initialColorModeName || 'default');\n  var mode = ref[0];\n  var setMode = ref[1]; // initialize state\n\n  React.useEffect(function () {\n    var stored = storage.get();\n    document.body.classList.remove('theme-ui-' + stored);\n\n    if (!stored && theme.useColorSchemeMediaQuery) {\n      var query = getMediaQuery();\n      setMode(query);\n      return;\n    }\n\n    if (!stored || stored === mode) {\n      return;\n    }\n\n    setMode(stored);\n  }, []);\n  React.useEffect(function () {\n    if (!mode) {\n      return;\n    }\n\n    storage.set(mode);\n  }, [mode]);\n\n  if (process.env.NODE_ENV !== 'production') {\n    if (theme.colors && theme.colors.modes && Object.keys(theme.colors.modes).indexOf(theme.initialColorModeName) > -1) {\n      console.warn('The `initialColorModeName` value should be a unique name' + ' and cannot reference a key in `theme.colors.modes`.');\n    }\n  }\n\n  return [mode, setMode];\n};\n\nvar useColorMode = function useColorMode() {\n  var ref = useThemeUI();\n  var colorMode = ref.colorMode;\n  var setColorMode = ref.setColorMode;\n\n  if (typeof setColorMode !== 'function') {\n    throw new Error(\"[useColorMode] requires the ColorModeProvider component\");\n  }\n\n  return [colorMode, setColorMode];\n};\n\nvar applyColorMode = function applyColorMode(theme, mode) {\n  if (!mode) {\n    return theme;\n  }\n\n  var modes = get(theme, 'colors.modes', {});\n  return merge.all({}, theme, {\n    colors: get(modes, mode, {})\n  });\n};\n\nvar BodyStyles = function BodyStyles() {\n  return jsx(Global, {\n    styles: function styles(theme) {\n      return createColorStyles(theme);\n    }\n  });\n};\n\nvar ColorModeProvider = function ColorModeProvider(ref) {\n  var children = ref.children;\n  var outer = useThemeUI();\n  var ref$1 = useColorModeState(outer.theme);\n  var colorMode = ref$1[0];\n  var setColorMode = ref$1[1];\n  var theme = applyColorMode(outer.theme || {}, colorMode);\n  var emotionTheme = Object.assign({}, theme);\n\n  if (theme.useCustomProperties !== false) {\n    emotionTheme.colors = toCustomProperties(emotionTheme.colors, 'colors');\n  }\n\n  var context = Object.assign({}, outer, {\n    theme: theme,\n    colorMode: colorMode,\n    setColorMode: setColorMode\n  });\n  return jsx(ThemeContext.Provider, {\n    value: emotionTheme\n  }, jsx(Context.Provider, {\n    value: context\n  }, jsx(BodyStyles, {\n    key: 'color-mode'\n  }), children));\n};\n\nvar noflash = \"(function() { try {\\n  var mode = localStorage.getItem('theme-ui-color-mode');\\n  if (!mode) return\\n  document.body.classList.add('theme-ui-' + mode);\\n} catch (e) {} })();\";\n\nvar InitializeColorMode = function InitializeColorMode() {\n  return jsx('script', {\n    key: 'theme-ui-no-flash',\n    dangerouslySetInnerHTML: {\n      __html: noflash\n    }\n  });\n};\n\nexport { useColorMode, ColorModeProvider, InitializeColorMode };","import \"core-js/modules/es6.array.is-array\";\nimport \"core-js/modules/es6.object.assign\";\nimport \"core-js/modules/es6.array.reduce\";\nimport \"core-js/modules/es6.array.map\";\nimport \"core-js/modules/es6.regexp.split\";\nimport { jsx, useThemeUI, ThemeProvider } from '@theme-ui/core';\nimport { ColorModeProvider } from '@theme-ui/color-modes';\nimport { MDXProvider } from '@theme-ui/mdx';\nimport { Global } from '@emotion/core';\n\nvar get = function get(obj, key, def, p, undef) {\n  key = key && key.split ? key.split('.') : [key];\n\n  for (p = 0; p < key.length; p++) {\n    obj = obj ? obj[key[p]] : undef;\n  }\n\n  return obj === undef ? def : obj;\n};\n\nvar defaultBreakpoints = [40, 52, 64].map(function (n) {\n  return n + 'em';\n});\nvar defaultTheme = {\n  space: [0, 4, 8, 16, 32, 64, 128, 256, 512],\n  fontSizes: [12, 14, 16, 20, 24, 32, 48, 64, 72]\n};\nvar aliases = {\n  bg: 'backgroundColor',\n  m: 'margin',\n  mt: 'marginTop',\n  mr: 'marginRight',\n  mb: 'marginBottom',\n  ml: 'marginLeft',\n  mx: 'marginX',\n  my: 'marginY',\n  p: 'padding',\n  pt: 'paddingTop',\n  pr: 'paddingRight',\n  pb: 'paddingBottom',\n  pl: 'paddingLeft',\n  px: 'paddingX',\n  py: 'paddingY'\n};\nvar multiples = {\n  marginX: ['marginLeft', 'marginRight'],\n  marginY: ['marginTop', 'marginBottom'],\n  paddingX: ['paddingLeft', 'paddingRight'],\n  paddingY: ['paddingTop', 'paddingBottom'],\n  size: ['width', 'height']\n};\nvar scales = {\n  color: 'colors',\n  backgroundColor: 'colors',\n  borderColor: 'colors',\n  margin: 'space',\n  marginTop: 'space',\n  marginRight: 'space',\n  marginBottom: 'space',\n  marginLeft: 'space',\n  marginX: 'space',\n  marginY: 'space',\n  padding: 'space',\n  paddingTop: 'space',\n  paddingRight: 'space',\n  paddingBottom: 'space',\n  paddingLeft: 'space',\n  paddingX: 'space',\n  paddingY: 'space',\n  top: 'space',\n  right: 'space',\n  bottom: 'space',\n  left: 'space',\n  gridGap: 'space',\n  gridColumnGap: 'space',\n  gridRowGap: 'space',\n  gap: 'space',\n  columnGap: 'space',\n  rowGap: 'space',\n  fontFamily: 'fonts',\n  fontSize: 'fontSizes',\n  fontWeight: 'fontWeights',\n  lineHeight: 'lineHeights',\n  letterSpacing: 'letterSpacings',\n  border: 'borders',\n  borderTop: 'borders',\n  borderRight: 'borders',\n  borderBottom: 'borders',\n  borderLeft: 'borders',\n  borderWidth: 'borderWidths',\n  borderStyle: 'borderStyles',\n  borderRadius: 'radii',\n  borderTopRightRadius: 'radii',\n  borderTopLeftRadius: 'radii',\n  borderBottomRightRadius: 'radii',\n  borderBottomLeftRadius: 'radii',\n  borderTopWidth: 'borderWidths',\n  borderTopColor: 'colors',\n  borderTopStyle: 'borderStyles',\n  borderBottomWidth: 'borderWidths',\n  borderBottomColor: 'colors',\n  borderBottomStyle: 'borderStyles',\n  borderLeftWidth: 'borderWidths',\n  borderLeftColor: 'colors',\n  borderLeftStyle: 'borderStyles',\n  borderRightWidth: 'borderWidths',\n  borderRightColor: 'colors',\n  borderRightStyle: 'borderStyles',\n  outlineColor: 'colors',\n  boxShadow: 'shadows',\n  textShadow: 'shadows',\n  zIndex: 'zIndices',\n  width: 'sizes',\n  minWidth: 'sizes',\n  maxWidth: 'sizes',\n  height: 'sizes',\n  minHeight: 'sizes',\n  maxHeight: 'sizes',\n  flexBasis: 'sizes',\n  size: 'sizes',\n  // svg\n  fill: 'colors',\n  stroke: 'colors'\n};\n\nvar positiveOrNegative = function positiveOrNegative(scale, value) {\n  if (typeof value !== 'number' || value >= 0) {\n    return get(scale, value, value);\n  }\n\n  var absolute = Math.abs(value);\n  var n = get(scale, absolute, absolute);\n\n  if (typeof n === 'string') {\n    return '-' + n;\n  }\n\n  return n * -1;\n};\n\nvar transforms = ['margin', 'marginTop', 'marginRight', 'marginBottom', 'marginLeft', 'marginX', 'marginY', 'top', 'bottom', 'left', 'right'].reduce(function (acc, curr) {\n  var obj;\n  return Object.assign({}, acc, (obj = {}, obj[curr] = positiveOrNegative, obj));\n}, {});\n\nvar responsive = function responsive(styles) {\n  return function (theme) {\n    var next = {};\n    var breakpoints = get(theme, 'breakpoints', defaultBreakpoints);\n    var mediaQueries = [null].concat(breakpoints.map(function (n) {\n      return \"@media screen and (min-width: \" + n + \")\";\n    }));\n\n    for (var key in styles) {\n      var value = typeof styles[key] === 'function' ? styles[key](theme) : styles[key];\n\n      if (value == null) {\n        continue;\n      }\n\n      if (!Array.isArray(value)) {\n        next[key] = value;\n        continue;\n      }\n\n      for (var i = 0; i < value.slice(0, mediaQueries.length).length; i++) {\n        var media = mediaQueries[i];\n\n        if (!media) {\n          next[key] = value[i];\n          continue;\n        }\n\n        next[media] = next[media] || {};\n\n        if (value[i] == null) {\n          continue;\n        }\n\n        next[media][key] = value[i];\n      }\n    }\n\n    return next;\n  };\n};\n\nvar css = function css(args) {\n  return function (props) {\n    if (props === void 0) {\n      props = {};\n    }\n\n    var theme = Object.assign({}, defaultTheme, props.theme || props);\n    var result = {};\n    var obj = typeof args === 'function' ? args(theme) : args;\n    var styles = responsive(obj)(theme);\n\n    for (var key in styles) {\n      var x = styles[key];\n      var val = typeof x === 'function' ? x(theme) : x;\n\n      if (key === 'variant') {\n        var variant = css(get(theme, val))(theme);\n        result = Object.assign({}, result, variant);\n        continue;\n      }\n\n      if (val && typeof val === 'object') {\n        result[key] = css(val)(theme);\n        continue;\n      }\n\n      var prop = get(aliases, key, key);\n      var scaleName = get(scales, prop);\n      var scale = get(theme, scaleName, get(theme, prop, {}));\n      var transform = get(transforms, prop, get);\n      var value = transform(scale, val, val);\n\n      if (multiples[prop]) {\n        var dirs = multiples[prop];\n\n        for (var i = 0; i < dirs.length; i++) {\n          result[dirs[i]] = value;\n        }\n      } else {\n        result[prop] = value;\n      }\n    }\n\n    return result;\n  };\n};\n\nvar BodyStyles = function BodyStyles() {\n  return jsx(Global, {\n    styles: function styles(theme) {\n      if (theme.useBodyStyles === false || theme.styles && !theme.styles.root) {\n        return false;\n      }\n\n      var boxSizing = theme.useBorderBox === false ? null : 'border-box';\n      return css({\n        '*': {\n          boxSizing: boxSizing\n        },\n        body: {\n          margin: 0,\n          variant: 'styles.root'\n        }\n      })(theme);\n    }\n  });\n};\n\nvar ThemeProvider$1 = function ThemeProvider$1(ref) {\n  var theme = ref.theme;\n  var components = ref.components;\n  var children = ref.children;\n  var outer = useThemeUI();\n\n  if (typeof outer.setColorMode === 'function') {\n    return jsx(ThemeProvider, {\n      theme: theme\n    }, jsx(MDXProvider, {\n      components: components,\n      children: children\n    }));\n  }\n\n  return jsx(ThemeProvider, {\n    theme: theme\n  }, jsx(ColorModeProvider, null, jsx(BodyStyles), jsx(MDXProvider, {\n    components: components,\n    children: children\n  })));\n};\n\nexport { ThemeProvider$1 as ThemeProvider };","// Copyright (c) 2017, 2020 IBM Corp. and others\n\n// This program and the accompanying materials are made available under\n// the terms of the Eclipse Public License 2.0 which accompanies this\n// distribution and is available at https://www.eclipse.org/legal/epl-2.0/\n// or the Apache License, Version 2.0 which accompanies this distribution and\n// is available at https://www.apache.org/licenses/LICENSE-2.0.\n\n// This Source Code may also be made available under the following\n// Secondary Licenses when the conditions for such availability set\n// forth in the Eclipse Public License, v. 2.0 are satisfied: GNU\n// General Public License, version 2 with the GNU Classpath\n// Exception [1] and GNU General Public License, version 2 with the\n// OpenJDK Assembly Exception [2].\n\n// [1] https://www.gnu.org/software/classpath/license.html\n// [2] http://openjdk.java.net/legal/assembly-exception.html\n\n// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 OR LicenseRef-GPL-2.0 WITH Assembly-exception\n\n// The project website pages cannot be redistributed\n\nexport default {\n  fonts: {\n    heading: \"'Helvetica Neue', Helvetica, Arial, 'Lucida Grande'\",\n    body: \"'Helvetica Neue', Helvetica, Arial, 'Lucida Grande'\"\n  },\n  colors: {\n    darkText: \"#4d4f50\",\n    lightText: \"#d8d8d8\",\n    links: \"#5DA7A3\",\n    primary: \"#434343\",\n    secondary: \"#5DA7A3\",\n    secondaryDark:\"#5d9da3\",\n    accent: \"#F8D000\",\n    background: \"#FFFFFF\",\n    lightGrey: \"#F1F1F1\"\n  },\n  radii: {\n    button: \"2.5rem\",\n    card: \"0.5rem\"\n  },\n  breakpoints: [\"35rem\", \"62.5rem\", \"85rem\", \"120rem\"],\n  fontSizes: [16, 18, 20, 24, 28, 36],\n  space: [0, 8, 16, 24, 32, 40],\n  fontWeights: {\n    body: 400,\n    heading: 700\n  },\n  lineHeights: {\n    body: 1.5,\n    heading: 1.125\n  },\n  buttons: {\n    primary: {\n      backgroundColor: \"secondary\",\n      color: \"white\",\n      borderRadius: \"button\",\n      height: \"2rem\",\n      width: \"10rem\",\n      border: \"none\",\n      fontFamily: \"body\",\n      fontSize: 0,\n      \"&:hover\": {\n        cursor: \"pointer\",\n        backgroundColor: \"secondaryDark\",\n        borderColor: \"secondaryDark\",\n        textDecoration:\"none\",\n        color:\"white\"\n      }\n    },\n    secondary: { variant: \"buttons.primary\", width: \"12rem\" }\n  },\n  text: {\n    heading: {\n      fontFamily: \"heading\",\n      lineHeight: \"heading\",\n      fontWeight: \"heading\",\n      marginY: 2\n    }\n  },\n  styles: {\n    root: {\n      fontFamily: \"body\",\n      lineHeight: \"body\",\n      fontWeight: \"body\"\n    },\n    h1: {\n      variant: \"text.heading\",\n      fontSize: 5\n    },\n    h2: {\n      variant: \"text.heading\",\n      fontSize: 4\n    },\n    h3: {\n      variant: \"text.heading\",\n      fontSize: 3\n    },\n    h4: {\n      variant: \"text.heading\",\n      fontSize: 2,\n\n    },\n    h5: {\n      variant: \"text.heading\",\n      fontSize: 1\n    },\n    h6: {\n      variant: \"text.heading\",\n      fontSize: 0\n    },\n    p: {\n      marginBottom: 5,\n      fontSize: 1\n    }\n  },\n  lists: {\n    navRow: {\n      display: \"flex\",\n      listStyle: \"none\",\n      justifyContent: \"flex-end\",\n      li: {\n        padding: 1,\n        marginX: 1,\n        a: {\n          color: \"white\",\n          textDecoration: \"none\",\n          \"&:hover\": {\n            color: \"links\",\n          }\n        }\n      },\n      \"li:first-of-type\": {\n        marginLeft: 0\n      },\n      \"li:last-child\": {\n        marginRight: 0,\n        paddingRight: 0\n      }\n    },\n    navCol: {\n      variant: \"lists.navRow\",\n      flexDirection: \"column\",\n      li: {\n        padding: 1,\n        paddingLeft: 0\n      }\n    }\n  },\n  borders: {\n    cardBorder: \"#5DA7A3 0.625rem solid\"\n  },\n  shadows: {\n    cardShadow: \"#DADADA 0 0 1.25rem\"\n  },\n};\n","// Copyright (c) 2017, 2020 IBM Corp. and others\n\n// This program and the accompanying materials are made available under\n// the terms of the Eclipse Public License 2.0 which accompanies this\n// distribution and is available at https://www.eclipse.org/legal/epl-2.0/\n// or the Apache License, Version 2.0 which accompanies this distribution and\n// is available at https://www.apache.org/licenses/LICENSE-2.0.\n\n// This Source Code may also be made available under the following\n// Secondary Licenses when the conditions for such availability set\n// forth in the Eclipse Public License, v. 2.0 are satisfied: GNU\n// General Public License, version 2 with the GNU Classpath\n// Exception [1] and GNU General Public License, version 2 with the\n// OpenJDK Assembly Exception [2].\n\n// [1] https://www.gnu.org/software/classpath/license.html\n// [2] http://openjdk.java.net/legal/assembly-exception.html\n\n// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 OR LicenseRef-GPL-2.0 WITH Assembly-exception\n\n// The project website pages cannot be redistributed\n\nimport { Link } from \"gatsby\";\n\nimport openJ9Logo from \"../images/openJ9-header-logo.svg\";\nimport slackIcon from \"../images/slack-icon.svg\";\nimport githubLogo from \"../images/github-logo.svg\";\nimport twitterLogo from \"../images/twitter-logo.svg\";\nimport stackoverflowLogo from \"../images/stackoverflow-logo.svg\";\n\n/** @jsx jsx */\nimport { jsx } from \"theme-ui\";\n\nexport default ({ isHome }) => (\n  <header\n    sx={{\n      display: [\"none\", \"none\", \"flex\", \"flex\"],\n      backgroundColor: isHome ? \"#00000000\" : \"primary\",\n      position: isHome ? \"absolute\" : null,\n      width: \"100%\",\n      color: \"lightText\",\n      paddingX: 5,\n      paddingY: 4,\n      alignItems: \"center\"\n    }}\n  >\n    <div\n      sx={{\n        flex: 1,\n        opacity: isHome ? 0 : 1,\n        pointerEvents: isHome ? \"none\" : \"all\"\n      }}\n    >\n      <Link to=\"/\">\n        <img src={openJ9Logo} alt=\"OpenJ9 Logo\"></img>\n      </Link>\n    </div>\n    <nav sx={{ flex: 2 }}>\n      <ul sx={{ variant: \"lists.navRow\" }}>\n        <li>\n          <Link to=\"/\">Home</Link>\n        </li>\n        <li>\n          <Link to=\"/about\">About</Link>\n        </li>\n        <li>\n          <a href=\"https://www.eclipse.org/openj9/docs/\" rel=\"noopener noreferrer\" target=\"_blank\">Docs</a>\n        </li>\n        <li>\n          <Link to=\"/performance\">Performance</Link>\n        </li>\n        <li>\n          <Link to=\"/news\">News</Link>\n        </li>\n      </ul>\n    </nav>\n    <nav sx={{ flex: 1 }}>\n      <ul sx={{ variant: \"lists.navRow\" }}>\n        <li> \n          <a href=\"https://twitter.com/openj9/\" rel=\"noopener noreferrer\" target=\"_blank\"> <img src={twitterLogo} alt=\"Twitter Logo\"></img></a>\n        </li>\n        <li>\n          <a href=\"https://github.com/eclipse/openj9\" rel=\"noopener noreferrer\" target=\"_blank\"> <img src={githubLogo} alt=\"GitHub Logo\"></img></a>\n        </li>\n        <li>\n          <a href=\"https://openj9.slack.com/\" rel=\"noopener noreferrer\" target=\"_blank\"><img src={slackIcon} alt=\"Slack logo\"></img></a>\n        </li>\n        <li>\n          <a href=\"https://stackoverflow.com/search?q=%23OpenJ9\" rel=\"noopener noreferrer\" target=\"_blank\"><img src={stackoverflowLogo} alt=\"Stack Overflow logo\"></img></a>\n        </li>\n      </ul>\n    </nav>\n  </header>\n);\n","// Copyright (c) 2017, 2020 IBM Corp. and others\n\n// This program and the accompanying materials are made available under\n// the terms of the Eclipse Public License 2.0 which accompanies this\n// distribution and is available at https://www.eclipse.org/legal/epl-2.0/\n// or the Apache License, Version 2.0 which accompanies this distribution and\n// is available at https://www.apache.org/licenses/LICENSE-2.0.\n\n// This Source Code may also be made available under the following\n// Secondary Licenses when the conditions for such availability set\n// forth in the Eclipse Public License, v. 2.0 are satisfied: GNU\n// General Public License, version 2 with the GNU Classpath\n// Exception [1] and GNU General Public License, version 2 with the\n// OpenJDK Assembly Exception [2].\n\n// [1] https://www.gnu.org/software/classpath/license.html\n// [2] http://openjdk.java.net/legal/assembly-exception.html\n\n// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 OR LicenseRef-GPL-2.0 WITH Assembly-exception\n\n// The project website pages cannot be redistributed\n\nimport slackIcon from \"../images/slack-icon.svg\";\nimport githubLogo from \"../images/github-logo.svg\";\nimport twitterLogo from \"../images/twitter-logo.svg\";\nimport incubatorLogo from \"../images/incubator-logo.svg\";\nimport stackoverflowLogo from \"../images/stackoverflow-logo.svg\";\nimport { Link } from \"gatsby\";\n/** @jsx jsx */\nimport { jsx, Styled } from \"theme-ui\";\n\nexport default () => (\n  <footer\n    sx={{\n      display: \"flex\",\n      backgroundColor: \"primary\",\n      color: \"white\",\n      flexWrap: \"wrap\",\n      padding: \"1rem\",\n      paddingBottom: [\"3rem\", \"3rem\", \"0\", \"0\"],\n      flexDirection: \"reverse-column\"\n    }}\n  >\n      <section\n      sx={{\n        flex: \"50%\",\n        display: [\"flex\", \"none\", \"none\", \"none\"],\n        alignItems: [\"center\", \"center\", \"flex-end\", \"flex-end\"],\n        flexDirection: \"column\"\n      }}\n    >\n      <a href=\"https://wiki.eclipse.org/Development_Resources/Process_Guidelines/What_is_Incubation\" rel=\"noopener noreferrer\" target=\"_blank\"><img src={incubatorLogo} alt=\"Eclipse Incubator Logo\"></img></a>\n      <Styled.h6 sx={{fontSize:\"0.9rem\"}} >OpenJ9 is an Eclipse Incubator Project</Styled.h6>\n    </section>\n\n\n    <nav sx={{ display: [\"flex\", \"flex\", \"flex\", \"flex\"],\n          flex: [\"100%\", \"50%\", \"50%\",\"50%\"], \n          flexDirection:[\"column\", \"row\", \"row\", \"row\"],\n          justifyContent:\"center\",\n          a: {\n            color: \"white\",\n            textDecoration: \"none\",\n            \"&:hover\": {\n              color: \"links\",\n            }\n    }}}>\n      <section sx={{ flex: 1, paddingLeft:[\"2rem\", \"0.8rem\", \"0.8rem\", \"0.8rem\"],  marginRight:\"1.1rem\", padding:[\"1rem\", 0], fontSize:[\"1rem\", \"0.9rem\", \"1rem\", \"1rem\"]}}>\n        <Styled.h4 sx={{marginBottom:\"0.2rem\"}}>Docs</Styled.h4>\n        <ul sx={{ \n          variant: \"lists.navCol\",\n          li: { \n            padding: 0,\n          }\n           }}>\n          <li><a sx={{textDecoration:\"none\", color:\"white\"}}href=\"https://www.eclipse.org/openj9/docs/openj9_newuser/\" rel=\"noopener noreferrer\" target=\"_blank\">New to OpenJ9?</a></li>\n          <li><a sx={{textDecoration:\"none\", color:\"white\"}}href=\"https://www.eclipse.org/openj9/docs/introduction/\" rel=\"noopener noreferrer\" target=\"_blank\">Getting started</a></li>\n          <li><a sx={{textDecoration:\"none\", color:\"white\"}}href=\"https://www.eclipse.org/openj9/docs/cmdline_specifying/\" rel=\"noopener noreferrer\" target=\"_blank\">Command-line options</a></li>\n        </ul>\n      </section>\n      <section sx={{ flex: 1, paddingLeft:[\"2rem\", \"0.8rem\", 0, 0], padding:[\"1rem\", 0], fontSize:[\"1rem\", \"0.9rem\", \"1rem\", \"1rem\"] }}>\n        <Styled.h4 sx={{marginBottom:\"0.2rem\"}}>Resources</Styled.h4>\n        <ul sx={{ variant: \"lists.navCol\",\n          li: { \n            padding: 0,\n          }\n          }}>\n          <li><Link sx={{textDecoration:\"none\", color:\"white\"}} to=\"/about\">About</Link></li>\n          <li><Link sx={{textDecoration:\"none\", color:\"white\"}} to=\"/performance\">Performance</Link></li>\n        </ul>\n      </section>\n      <section sx={{ flex: 1, paddingLeft:[\"2rem\", 0, 0, 0], padding:[\"1rem\", 0], fontSize:[\"1rem\", \"0.9rem\", \"1rem\", \"1rem\"], marginLeft:[0,\"1rem\"] }}>\n        <Styled.h4 sx={{marginBottom:\"0.2rem\"}}>Community</Styled.h4>\n        <ul sx={{ variant: \"lists.navCol\",\n          li: { \n            padding: 0,\n          }\n       }}>\n          <li><Link sx={{textDecoration:\"none\", color:\"white\"}} to=\"/news\">News</Link></li>\n          <li><a sx={{textDecoration:\"none\", color:\"white\"}}href=\"https://blog.openj9.org/\" rel=\"noopener noreferrer\" target=\"_blank\">Blogs</a></li>\n        </ul>\n      </section>\n    </nav>\n    <section\n      sx={{\n        flex: \"25%\",\n        display: [\"none\",\"flex\", \"flex\", \"flex\"],\n        alignItems: [\"center\", \"flex-end\", \"flex-end\", \"flex-end\"],\n        flexDirection: \"column\"\n      }}\n    >\n      <Styled.h6 sx={{fontSize:\"0.9rem\", marginTop:\"1.3rem\", marginLeft:\"0.6rem\"}}>OpenJ9 is an Eclipse Incubator Project</Styled.h6>\n      <a href=\"https://wiki.eclipse.org/Development_Resources/Process_Guidelines/What_is_Incubation\" rel=\"noopener noreferrer\" target=\"_blank\"><img src={incubatorLogo} alt=\"Eclipse Incubator Logo\"></img></a>\n    </section>\n    <div\n      sx={{\n        height: \"0.15rem\",\n        backgroundColor: \"secondary\",\n        width: \"100%\",\n        marginY: 2\n      }}\n    ></div>\n    <nav sx={{width:\"70%\"}}>\n      <ul sx={{ \n        display: \"flex\", flexDirection:[\"column\", \"row\", \"row\", \"row\"],\n        li: { \n          padding: \"0.4rem\",\n          fontSize: [\"0.9rem\", \"0.7rem\", \"1rem\", \"1rem\"],\n          listStyleType: \"none\",\n          paddingLeft:\"1rem\",\n          color:\"white\",\n        },\n         a: {\n          color: \"white\",\n          textDecoration: \"none\",\n          \"&:hover\": {\n            color: \"links\",\n          }\n        }\n        }}>\n          \n        <li sx={{ paddingLeft:[\"1rem\", \"0rem !important\", \"0.5rem !important\", \"0.5 !important\"]}}><a sx={{textDecoration:\"none\", color:\"white\"}}href=\"https://www.eclipse.org/\" rel=\"noopener noreferrer\" target=\"_blank\">Eclipse Foundation Website </a></li>\n        <li><a sx={{textDecoration:\"none\", color:\"white\"}}href=\"https://www.eclipse.org/legal/privacy.php\" rel=\"noopener noreferrer\" target=\"_blank\">Privacy Policy</a></li>\n        <li><a sx={{textDecoration:\"none\", color:\"white\"}}href=\"https://www.eclipse.org/legal/termsofuse.php\" rel=\"noopener noreferrer\" target=\"_blank\">Terms of Use</a></li>\n        <li><a sx={{textDecoration:\"none\", color:\"white\"}}href=\"https://www.eclipse.org/legal/copyright.php\" rel=\"noopener noreferrer\" target=\"_blank\">Copyright Agent</a></li>\n        <li><a sx={{textDecoration:\"none\", color:\"white\"}}href=\"https://www.eclipse.org/legal/\" rel=\"noopener noreferrer\" target=\"_blank\">Legal</a></li>\n      </ul>\n    </nav>\n    <nav sx={{ display: [\"inline\", \"inline\", \"block\", \"block\"], flex: \"30%\" }}>\n      <ul sx={{ variant: \"lists.navRow\", justifyContent: [\"center\", \"flex-end\",\"flex-end\", \"flex-end\"] }}>\n        <li> \n          <a href=\"https://twitter.com/openj9/\" rel=\"noopener noreferrer\" target=\"_blank\"> <img src={twitterLogo} alt=\"Twitter Logo\"></img></a>\n        </li>\n        <li>\n          <a href=\"https://github.com/eclipse/openj9\" rel=\"noopener noreferrer\" target=\"_blank\"> <img src={githubLogo} alt=\"GitHub Logo\"></img></a>\n        </li>\n        <li>\n          <a href=\"https://openj9.slack.com/\" rel=\"noopener noreferrer\" target=\"_blank\"><img src={slackIcon} alt=\"Slack logo\"></img></a>\n        </li>\n        <li>\n          <a href=\"https://stackoverflow.com/search?q=%23OpenJ9\" rel=\"noopener noreferrer\" target=\"_blank\"><img src={stackoverflowLogo} alt=\"Stack Overflow logo\"></img></a>\n        </li>\n      </ul>\n    </nav>\n  </footer>\n);\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport { Helmet } from \"react-helmet\"\nimport { useStaticQuery, graphql } from \"gatsby\"\n\nconst SEO = ({ title, description }) => {\n  const { site } = useStaticQuery(query);\n\n  const {\n    defaultTitle,\n    titleTemplate,\n    defaultDescription,\n    siteUrl,\n    twitterUsername,\n    defaultImage,\n  } = site.siteMetadata;\n\n  const seo = {\n    title: title || defaultTitle,\n    description: description || defaultDescription,\n    image: defaultImage,\n    url: `${siteUrl}`,\n  };\n  return (\n    <Helmet title={seo.title} titleTemplate={titleTemplate}>\n      <meta name=\"description\" content={seo.description} />\n      <meta name=\"image\" content={seo.image} />\n\n      {seo.url && <meta property=\"og:url\" content={seo.url} />}\n\n      {seo.title && <meta property=\"og:title\" content={seo.title} />}\n\n      {seo.description && (\n        <meta property=\"og:description\" content={seo.description} />\n      )}\n\n      {seo.image && <meta property=\"og:image\" content={seo.image} />}\n\n      <meta name=\"twitter:card\" content=\"summary_large_image\" />\n\n      {twitterUsername && (\n        <meta name=\"twitter:creator\" content={twitterUsername} />\n      )}\n\n      {seo.title && <meta name=\"twitter:title\" content={seo.title} />}\n\n      {seo.description && (\n        <meta name=\"twitter:description\" content={seo.description} />\n      )}\n\n      <link rel=\"stylesheet\" type=\"text/css\" href=\"//www.eclipse.org/eclipse.org-common/themes/solstice/public/stylesheets/vendor/cookieconsent/cookieconsent.min.css\" />\n      <script src=\"//www.eclipse.org/eclipse.org-common/themes/solstice/public/javascript/vendor/cookieconsent/default.min.js\"></script>\n    </Helmet>\n  )\n};\n\nexport default SEO\n\nSEO.propTypes = {\n  title: PropTypes.string,\n  description: PropTypes.string,\n}\n\nSEO.defaultProps = {\n  title: null,\n  description: null,\n}\n\nconst query = graphql`\n  query SEO {\n    site {\n      siteMetadata {\n        defaultTitle: title\n        defaultDescription: description\n        siteUrl: url\n        twitterUsername\n        defaultImage: image\n      }\n    }\n  }\n`","// Copyright (c) 2017, 2020 IBM Corp. and others\n\n// This program and the accompanying materials are made available under\n// the terms of the Eclipse Public License 2.0 which accompanies this\n// distribution and is available at https://www.eclipse.org/legal/epl-2.0/\n// or the Apache License, Version 2.0 which accompanies this distribution and\n// is available at https://www.apache.org/licenses/LICENSE-2.0.\n\n// This Source Code may also be made available under the following\n// Secondary Licenses when the conditions for such availability set\n// forth in the Eclipse Public License, v. 2.0 are satisfied: GNU\n// General Public License, version 2 with the GNU Classpath\n// Exception [1] and GNU General Public License, version 2 with the\n// OpenJDK Assembly Exception [2].\n\n// [1] https://www.gnu.org/software/classpath/license.html\n// [2] http://openjdk.java.net/legal/assembly-exception.html\n\n// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 OR LicenseRef-GPL-2.0 WITH Assembly-exception\n\n// The project website pages cannot be redistributed\n\nimport React from \"react\";\n\nimport SEO from \"../components/seo\";\n\nexport default (props) => {\n    return (\n        <SEO title={props.title} description={props.description}></SEO>\n    );\n}\n\n","// Copyright (c) 2017, 2020 IBM Corp. and others\n\n// This program and the accompanying materials are made available under\n// the terms of the Eclipse Public License 2.0 which accompanies this\n// distribution and is available at https://www.eclipse.org/legal/epl-2.0/\n// or the Apache License, Version 2.0 which accompanies this distribution and\n// is available at https://www.apache.org/licenses/LICENSE-2.0.\n\n// This Source Code may also be made available under the following\n// Secondary Licenses when the conditions for such availability set\n// forth in the Eclipse Public License, v. 2.0 are satisfied: GNU\n// General Public License, version 2 with the GNU Classpath\n// Exception [1] and GNU General Public License, version 2 with the\n// OpenJDK Assembly Exception [2].\n\n// [1] https://www.gnu.org/software/classpath/license.html\n// [2] http://openjdk.java.net/legal/assembly-exception.html\n\n// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 OR LicenseRef-GPL-2.0 WITH Assembly-exception\n\n// The project website pages cannot be redistributed\n\nimport { Link } from \"gatsby\"\n/** @jsx jsx */\nimport { jsx } from \"theme-ui\";\n\nconst MobileNav = () => (\n    <nav sx={{\n        display: [\"flex\", \"flex\", \"none\", \"none\"], \n        justifyContent: \"center\", \n        alignItems: \"center\", \n        position:\"fixed\", \n        width: \"100%\",\n        bottom: \"0\",\n        backgroundColor: \"white\",\n        height: \"3rem\",\n        boxShadow: \"0 0.5rem 2rem grey\",\n        zIndex: \"9999\"\n        }}> \n        <ul sx={{ \n            variant: \"lists.navRow\", \n            li: { \n                a: {\n                    color: \"black\", \n                    textDecoration: \"none\"\n                }\n            },\n            justifyContent: \"space-evenly\",\n            width: \"100%\"\n        }}>\n            <li><Link to=\"/\">Home</Link></li>\n            <li><Link to=\"/about\">About</Link> </li>\n            <li><a href=\"https://www.eclipse.org/openj9/docs/\" rel=\"noopener noreferrer\" target=\"_blank\">Docs</a> </li>\n            <li><Link to=\"/performance\">Performance</Link> </li>\n            <li><Link to=\"/news\">News</Link> </li>\n        </ul>\n    </nav>\n)\n\nexport default MobileNav","// Copyright (c) 2017, 2020 IBM Corp. and others\n\n// This program and the accompanying materials are made available under\n// the terms of the Eclipse Public License 2.0 which accompanies this\n// distribution and is available at https://www.eclipse.org/legal/epl-2.0/\n// or the Apache License, Version 2.0 which accompanies this distribution and\n// is available at https://www.apache.org/licenses/LICENSE-2.0.\n\n// This Source Code may also be made available under the following\n// Secondary Licenses when the conditions for such availability set\n// forth in the Eclipse Public License, v. 2.0 are satisfied: GNU\n// General Public License, version 2 with the GNU Classpath\n// Exception [1] and GNU General Public License, version 2 with the\n// OpenJDK Assembly Exception [2].\n\n// [1] https://www.gnu.org/software/classpath/license.html\n// [2] http://openjdk.java.net/legal/assembly-exception.html\n\n// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 OR LicenseRef-GPL-2.0 WITH Assembly-exception\n\n// The project website pages cannot be redistributed\n\nimport React from \"react\";\nimport { ThemeProvider } from \"theme-ui\";\nimport theme from \"../theme\";\nimport Header from \"./header\";\nimport Footer from \"./footer\";\nimport Head from \"./head\";\nimport MobileNav from \"./mobileNav\";\nimport { Global } from \"@emotion/core\";\n\nexport default ({ children, isHome, title, description }) => (\n  <ThemeProvider theme={theme}>\n    <Global\n      styles={theme => ({\n        \"*\": { padding: 0, margin: 0 },                          \n      })}\n    />\n    <Head title={title} description={description}/>\n    <Header isHome={isHome} />\n    <MobileNav />\n    {children}\n   \n    <Footer />\n    \n  </ThemeProvider>\n);\n","module.exports = \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjRweCIgaGVpZ2h0PSIyNHB4IiB2aWV3Qm94PSIwIDAgNjUgNzAiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5zdGFja292ZXJmbG93LWxvZ288L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0iI0ZGRkZGRiIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0ic3RhY2tvdmVyZmxvdy1sb2dvIiBmaWxsLXJ1bGU9Im5vbnplcm8iPgogICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgZmlsbD0iI0ZGRkZGRiIgcG9pbnRzPSI1NC4yNDE3MjY2IDYzLjc3MDIyNjUgNTQuMjQxNzI2NiA0NSA2MSA0NSA2MSA3MCAwIDcwIDAgNDUgNi43NTgyNzMzOCA0NSA2Ljc1ODI3MzM4IDYzLjc3MDIyNjUiPjwvcG9seWdvbj4KICAgICAgICAgICAgPHBhdGggZD0iTTE0LjcwNzEwNTcsNDMuNjQyNzU2NyBMNDguMTE3ODUxLDUwLjA4NzIwMTEgTDQ5LjUzMjA2MjQsNDMuODg3NDgyNCBMMTYuMTIxMzE3MiwzNy40NDMwMzggTDE0LjcwNzEwNTcsNDMuNjQyNzU2NyBMMTQuNzA3MTA1Nyw0My42NDI3NTY3IFogTTE5LjEyNjUxNjUsMjguOTU5MjEyNCBMNTAuMDYyMzkxNyw0Mi4yNTU5Nzc1IEw1Mi44OTA4MTQ2LDM2LjU0NTcxMDMgTDIxLjk1NDkzOTMsMjMuMTY3MzY5OSBMMTkuMTI2NTE2NSwyOC45NTkyMTI0IFogTTI3LjcwMDE3MzMsMTQuOTI4MjcgTDUzLjk1MTQ3MzEsMzUuMDc3MzU1OCBMNTguMjgyNDk1NywzMC4yNjQ0MTYzIEwzMi4wMzExOTU4LDEwLjExNTMzMDUgTDI3LjcwMDE3MzMsMTQuOTI4MjcgTDI3LjcwMDE3MzMsMTQuOTI4MjcgWiBNNDQuNjcwNzEwNiwwIEwzOS4xOTA2NDEyLDMuNzUyNDYxMzIgTDU5LjUxOTkzMDcsMjkuMDQwNzg3NiBMNjUsMjUuMjg4MzI2MyBMNDQuNjcwNzEwNiwwIFogTTE0LDU4IEw0OC4xMTc4NTEsNTggTDQ4LjExNzg1MSw1MS43MTg3MDYgTDE0LDUxLjcxODcwNiBMMTQsNTggWiIgaWQ9IlNoYXBlIiBmaWxsPSIjRkZGRkZGIj48L3BhdGg+CiAgICAgICAgPC9nPgogICAgPC9nPgo8L3N2Zz4KCgo=\"","require(\"core-js/modules/es6.function.bind\");\n\nrequire(\"core-js/modules/web.dom.iterable\");\n\nrequire(\"core-js/modules/es6.array.iterator\");\n\nrequire(\"core-js/modules/es6.object.to-string\");\n\nrequire(\"core-js/modules/es6.object.keys\");\n\n//\nmodule.exports = function shallowEqual(objA, objB, compare, compareContext) {\n  var ret = compare ? compare.call(compareContext, objA, objB) : void 0;\n\n  if (ret !== void 0) {\n    return !!ret;\n  }\n\n  if (objA === objB) {\n    return true;\n  }\n\n  if (typeof objA !== \"object\" || !objA || typeof objB !== \"object\" || !objB) {\n    return false;\n  }\n\n  var keysA = Object.keys(objA);\n  var keysB = Object.keys(objB);\n\n  if (keysA.length !== keysB.length) {\n    return false;\n  }\n\n  var bHasOwnProperty = Object.prototype.hasOwnProperty.bind(objB); // Test for A's keys different from B.\n\n  for (var idx = 0; idx < keysA.length; idx++) {\n    var key = keysA[idx];\n\n    if (!bHasOwnProperty(key)) {\n      return false;\n    }\n\n    var valueA = objA[key];\n    var valueB = objB[key];\n    ret = compare ? compare.call(compareContext, valueA, valueB, key) : void 0;\n\n    if (ret === false || ret === void 0 && valueA !== valueB) {\n      return false;\n    }\n  }\n\n  return true;\n};","module.exports = \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIyNXB4IiB2aWV3Qm94PSIwIDAgMjUgMjUiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5Ud2l0dGVyPC90aXRsZT4KICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPgogICAgPGcgaWQ9IlBhZ2UtMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9IlR3aXR0ZXIiIGZpbGwtcnVsZT0ibm9uemVybyI+CiAgICAgICAgICAgIDxnIGlkPSJ0d2l0dGVyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjAwMDAwMCwgMC4yOTg4NzkpIj4KICAgICAgICAgICAgICAgIDxlbGxpcHNlIGlkPSJPdmFsLXBhdGgiIGZpbGw9IiM0MzQzNDMiIGN4PSIxMi41MDAyMjEyIiBjeT0iMTIuMjcyNzI3MyIgcng9IjEyLjUiIHJ5PSIxMi4yNzI3MjczIj48L2VsbGlwc2U+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTIuNTAwMjIxMiwwIEMxOS40MDM3ODA2LDAgMjUuMDAwMjIxMiw1LjQ5NDY4NzE2IDI1LjAwMDIyMTIsMTIuMjcyNzI3MyBDMjUuMDAwMjIxMiwxOS4wNTA3Njc0IDE5LjQwMzc4MDYsMjQuNTQ1NDU0NSAxMi41MDAyMjEyLDI0LjU0NTQ1NDUgQzUuNTk2NjYxODcsMjQuNTQ1NDU0NSAwLjAwMDIyMTIzODkzOCwxOS4wNTA3Njc0IDAuMDAwMjIxMjM4OTM4LDEyLjI3MjcyNzMgQzAuMDAwMjIxMjM4OTM4LDUuNDk0Njg3MTYgNS41OTY2NjE4NywwIDEyLjUwMDIyMTIsMCBaIE0xNS4xMDM0MzMzLDYuODE4MTgxODIgQzEzLjQ2NTM4MDIsNi44MTgxODE4MiAxMi4xMzY4NDA0LDguMDkyMTI0MTEgMTIuMTM2ODQwNCw5LjY2Mjg1OTk2IEMxMi4xMzY4NDA0LDkuODg1ODI2MzggMTIuMTYzMTY3OCwxMC4xMDI4NTI3IDEyLjIxNDA1MjgsMTAuMzExMTgxIEM5Ljc0ODU2NjA0LDEwLjE5MjU5MDggNy41NjI1MDQxLDkuMDYwMTUwNTQgNi4wOTkyMjk3Niw3LjMzODU3ODIzIEM1Ljg0MzkyMDAzLDcuNzU4NjI5MTUgNS42OTc0NTk4NSw4LjI0NzYyNzgxIDUuNjk3NDU5ODUsOC43Njg4NzI4MSBDNS42OTc0NTk4NSw5Ljc1NTU2ODE3IDYuMjIxNTc0ODksMTAuNjI2NjQzNCA3LjAxNzE1MDExLDExLjEzNjY0NDcgQzYuNTMxMDg4MTcsMTEuMTIyMDA2NSA2LjA3MzM0NDgsMTAuOTk0MDgxOSA1LjY3MzU2NjA0LDEwLjc4MDQ1IEw1LjY3MzM0NDgsMTAuODE2NTE0OSBMNS42NzMzNDQ4LDEwLjgxNjUxNDkgQzUuNjczMzQ0OCwxMi4xOTQ4MzM1IDYuNjk2MzUzNjUsMTMuMzQ0NDU3NyA4LjA1MzIxMjA2LDEzLjYwNTYxMDYgQzcuODA0NTM5NSwxMy42NzA5NTE5IDcuNTQxOTI4ODgsMTMuNzA1NTMxOCA3LjI3MTc5NjEzLDEzLjcwNTUzMTggQzcuMDgwMjAzMjEsMTMuNzA1NTMxOCA2Ljg5NDU4Mzc0LDEzLjY4NzkyMzYgNi43MTM2MTAyOSwxMy42NTQ4Mjg3IEM3LjA5MTA0MzkyLDE0Ljc4NDcyMzIgOC4xODYzOTc5LDE1LjYwNzIxNjkgOS40ODQ4NDkyMywxNS42MzAzNDA5IEM4LjQ2OTM2MjUsMTYuMzkzNDMzNCA3LjE5MDM4MDIsMTYuODQ4MDY0MiA1LjgwMDExNDcyLDE2Ljg0ODA2NDIgQzUuNTYxMTc2NjYsMTYuODQ4MDY0MiA1LjMyNDQ1MSwxNi44MzQ2OTkgNS4wOTI4MTM4MywxNi44MDgxODA2IEM2LjQwNDk4MTk3LDE3LjYxNTYxMTggNy45NjQ3MTY0OSwxOC4wODYzNjU4IDkuNjM5OTM3NzMsMTguMDg2MzY1OCBDMTUuMDk2NTc0OSwxOC4wODYzNjU4IDE4LjA4MDY0NTcsMTMuNzUxNzc5OCAxOC4wODA2NDU3LDkuOTkyMzI0MTQgQzE4LjA4MDY0NTcsOS44NjkwNjY3NyAxOC4wNzc3Njk2LDkuNzQ2MjMzNyAxOC4wNzIwMTc0LDkuNjI0NDYxMzcgQzE4LjY1MjEwNTksOS4yMjM1MDM2OCAxOS4xNTQ5ODIsOC43MjI2MjQ3OCAxOS41NTI1NDgzLDguMTUyMTYxNjkgQzE5LjAyMDY4OTksOC4zNzgzMTAzMiAxOC40NDg1NjYsOC41MzEyNjgyNSAxNy44NDg1NjYsOC41OTk1Nzk1NiBDMTguNDYxMTc2Nyw4LjI0NzYyNzgxIDE4LjkzMTMwOTQsNy42OTA3NDIxMyAxOS4xNTMyMTIxLDcuMDI2MDg1ODEgQzE4LjU3OTk4Miw3LjM1MjE1NTYzIDE3Ljk0NDgwNSw3LjU4ODY5OTQ2IDE3LjI2OTM2MjUsNy43MTYxOTk3NiBDMTYuNzI4MjEyMSw3LjE2MzU1NzAyIDE1Ljk1NzE5NDQsNi44MTgxODE4MiAxNS4xMDM0MzMzLDYuODE4MTgxODIgWiIgaWQ9IkNvbWJpbmVkLVNoYXBlIiBmaWxsPSIjRkZGRkZGIj48L3BhdGg+CiAgICAgICAgICAgIDwvZz4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==\"","\n// Copyright (c) 2017, 2020 IBM Corp. and others\n\n// This program and the accompanying materials are made available under\n// the terms of the Eclipse Public License 2.0 which accompanies this\n// distribution and is available at https://www.eclipse.org/legal/epl-2.0/\n// or the Apache License, Version 2.0 which accompanies this distribution and\n// is available at https://www.apache.org/licenses/LICENSE-2.0.\n\n// This Source Code may also be made available under the following\n// Secondary Licenses when the conditions for such availability set\n// forth in the Eclipse Public License, v. 2.0 are satisfied: GNU\n// General Public License, version 2 with the GNU Classpath\n// Exception [1] and GNU General Public License, version 2 with the\n// OpenJDK Assembly Exception [2].\n\n// [1] https://www.gnu.org/software/classpath/license.html\n// [2] http://openjdk.java.net/legal/assembly-exception.html\n\n// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 OR LicenseRef-GPL-2.0 WITH Assembly-exception\n\n// The project website pages cannot be redistributed\n\n/** @jsx jsx */\n\nimport { jsx } from \"theme-ui\";\n\nconst Card = ({ children, primary, width }) => {\n  return (\n    <article\n      sx={{\n        minHeight: \"12.5rem\",\n        boxShadow: primary ? \"cardShadow\" : null,\n        borderRadius: \"card\",\n        backgroundColor: \"white\",\n        color: \"darkText\",\n        marginY: 5,\n        marginX: 2,\n        width: width,\n        display: \"flex\",\n        flexDirection: \"column\",\n        justifyContent: \"center\",\n        alignItems: \"center\",\n      }}\n    >\n      {children}\n    </article>\n  );\n};\n\nexport default Card;\n","import \"core-js/modules/es6.function.name\";\nimport \"core-js/modules/es6.object.define-property\";\nimport \"core-js/modules/es6.object.define-properties\";\nimport \"core-js/modules/es7.object.get-own-property-descriptors\";\nimport \"core-js/modules/es6.array.for-each\";\nimport \"core-js/modules/es6.array.filter\";\nimport \"core-js/modules/es6.symbol\";\nimport \"core-js/modules/web.dom.iterable\";\nimport \"core-js/modules/es6.array.iterator\";\nimport \"core-js/modules/es6.object.to-string\";\nimport \"core-js/modules/es6.object.keys\";\nimport _defineProperty from '@babel/runtime/helpers/defineProperty';\nimport { createElement } from 'react';\nimport isPropValid from '@emotion/is-prop-valid';\nimport { withEmotionCache, ThemeContext } from '@emotion/core';\nimport { getRegisteredStyles, insertStyles } from '@emotion/utils';\nimport { serializeStyles } from '@emotion/serialize';\nvar testOmitPropsOnStringTag = isPropValid;\n\nvar testOmitPropsOnComponent = function testOmitPropsOnComponent(key) {\n  return key !== 'theme' && key !== 'innerRef';\n};\n\nvar getDefaultShouldForwardProp = function getDefaultShouldForwardProp(tag) {\n  return typeof tag === 'string' && // 96 is one less than the char code\n  // for \"a\" so this is checking that\n  // it's a lowercase character\n  tag.charCodeAt(0) > 96 ? testOmitPropsOnStringTag : testOmitPropsOnComponent;\n};\n\nfunction ownKeys(object, enumerableOnly) {\n  var keys = Object.keys(object);\n\n  if (Object.getOwnPropertySymbols) {\n    var symbols = Object.getOwnPropertySymbols(object);\n    if (enumerableOnly) symbols = symbols.filter(function (sym) {\n      return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n    });\n    keys.push.apply(keys, symbols);\n  }\n\n  return keys;\n}\n\nfunction _objectSpread(target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments[i] != null ? arguments[i] : {};\n\n    if (i % 2) {\n      ownKeys(source, true).forEach(function (key) {\n        _defineProperty(target, key, source[key]);\n      });\n    } else if (Object.getOwnPropertyDescriptors) {\n      Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n    } else {\n      ownKeys(source).forEach(function (key) {\n        Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n      });\n    }\n  }\n\n  return target;\n}\n\nvar ILLEGAL_ESCAPE_SEQUENCE_ERROR = \"You have illegal escape sequence in your template literal, most likely inside content's property value.\\nBecause you write your CSS inside a JavaScript string you actually have to do double escaping, so for example \\\"content: '\\\\00d7';\\\" should become \\\"content: '\\\\\\\\00d7';\\\".\\nYou can read more about this here:\\nhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals#ES2018_revision_of_illegal_escape_sequences\";\n\nvar createStyled = function createStyled(tag, options) {\n  if (process.env.NODE_ENV !== 'production') {\n    if (tag === undefined) {\n      throw new Error('You are trying to create a styled element with an undefined component.\\nYou may have forgotten to import it.');\n    }\n  }\n\n  var identifierName;\n  var shouldForwardProp;\n  var targetClassName;\n\n  if (options !== undefined) {\n    identifierName = options.label;\n    targetClassName = options.target;\n    shouldForwardProp = tag.__emotion_forwardProp && options.shouldForwardProp ? function (propName) {\n      return tag.__emotion_forwardProp(propName) && // $FlowFixMe\n      options.shouldForwardProp(propName);\n    } : options.shouldForwardProp;\n  }\n\n  var isReal = tag.__emotion_real === tag;\n  var baseTag = isReal && tag.__emotion_base || tag;\n\n  if (typeof shouldForwardProp !== 'function' && isReal) {\n    shouldForwardProp = tag.__emotion_forwardProp;\n  }\n\n  var defaultShouldForwardProp = shouldForwardProp || getDefaultShouldForwardProp(baseTag);\n  var shouldUseAs = !defaultShouldForwardProp('as');\n  return function () {\n    var args = arguments;\n    var styles = isReal && tag.__emotion_styles !== undefined ? tag.__emotion_styles.slice(0) : [];\n\n    if (identifierName !== undefined) {\n      styles.push(\"label:\" + identifierName + \";\");\n    }\n\n    if (args[0] == null || args[0].raw === undefined) {\n      styles.push.apply(styles, args);\n    } else {\n      if (process.env.NODE_ENV !== 'production' && args[0][0] === undefined) {\n        console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n      }\n\n      styles.push(args[0][0]);\n      var len = args.length;\n      var i = 1;\n\n      for (; i < len; i++) {\n        if (process.env.NODE_ENV !== 'production' && args[0][i] === undefined) {\n          console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n        }\n\n        styles.push(args[i], args[0][i]);\n      }\n    } // $FlowFixMe: we need to cast StatelessFunctionalComponent to our PrivateStyledComponent class\n\n\n    var Styled = withEmotionCache(function (props, context, ref) {\n      return createElement(ThemeContext.Consumer, null, function (theme) {\n        var finalTag = shouldUseAs && props.as || baseTag;\n        var className = '';\n        var classInterpolations = [];\n        var mergedProps = props;\n\n        if (props.theme == null) {\n          mergedProps = {};\n\n          for (var key in props) {\n            mergedProps[key] = props[key];\n          }\n\n          mergedProps.theme = theme;\n        }\n\n        if (typeof props.className === 'string') {\n          className = getRegisteredStyles(context.registered, classInterpolations, props.className);\n        } else if (props.className != null) {\n          className = props.className + \" \";\n        }\n\n        var serialized = serializeStyles(styles.concat(classInterpolations), context.registered, mergedProps);\n        var rules = insertStyles(context, serialized, typeof finalTag === 'string');\n        className += context.key + \"-\" + serialized.name;\n\n        if (targetClassName !== undefined) {\n          className += \" \" + targetClassName;\n        }\n\n        var finalShouldForwardProp = shouldUseAs && shouldForwardProp === undefined ? getDefaultShouldForwardProp(finalTag) : defaultShouldForwardProp;\n        var newProps = {};\n\n        for (var _key in props) {\n          if (shouldUseAs && _key === 'as') continue;\n\n          if ( // $FlowFixMe\n          finalShouldForwardProp(_key)) {\n            newProps[_key] = props[_key];\n          }\n        }\n\n        newProps.className = className;\n        newProps.ref = ref || props.innerRef;\n\n        if (process.env.NODE_ENV !== 'production' && props.innerRef) {\n          console.error('`innerRef` is deprecated and will be removed in a future major version of Emotion, please use the `ref` prop instead' + (identifierName === undefined ? '' : \" in the usage of `\" + identifierName + \"`\"));\n        }\n\n        var ele = createElement(finalTag, newProps);\n        return ele;\n      });\n    });\n    Styled.displayName = identifierName !== undefined ? identifierName : \"Styled(\" + (typeof baseTag === 'string' ? baseTag : baseTag.displayName || baseTag.name || 'Component') + \")\";\n    Styled.defaultProps = tag.defaultProps;\n    Styled.__emotion_real = Styled;\n    Styled.__emotion_base = baseTag;\n    Styled.__emotion_styles = styles;\n    Styled.__emotion_forwardProp = shouldForwardProp;\n    Object.defineProperty(Styled, 'toString', {\n      value: function value() {\n        if (targetClassName === undefined && process.env.NODE_ENV !== 'production') {\n          return 'NO_COMPONENT_SELECTOR';\n        } // $FlowFixMe: coerce undefined to string\n\n\n        return \".\" + targetClassName;\n      }\n    });\n\n    Styled.withComponent = function (nextTag, nextOptions) {\n      return createStyled(nextTag, nextOptions !== undefined ? _objectSpread({}, options || {}, {}, nextOptions) : options).apply(void 0, styles);\n    };\n\n    return Styled;\n  };\n};\n\nexport default createStyled;","import \"core-js/modules/es6.array.for-each\";\nimport \"core-js/modules/es6.function.bind\";\nimport styled from '@emotion/styled-base';\nvar tags = ['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\n'circle', 'clipPath', 'defs', 'ellipse', 'foreignObject', 'g', 'image', 'line', 'linearGradient', 'mask', 'path', 'pattern', 'polygon', 'polyline', 'radialGradient', 'rect', 'stop', 'svg', 'text', 'tspan'];\nvar newStyled = styled.bind();\ntags.forEach(function (tagName) {\n  newStyled[tagName] = newStyled(tagName);\n});\nexport default newStyled;","import \"core-js/modules/es6.array.index-of\";\nimport \"core-js/modules/es6.object.define-properties\";\nimport \"core-js/modules/es7.object.get-own-property-descriptors\";\nimport \"core-js/modules/es6.array.for-each\";\nimport \"core-js/modules/es6.array.filter\";\nimport \"core-js/modules/es6.symbol\";\nimport \"core-js/modules/web.dom.iterable\";\nimport \"core-js/modules/es6.array.iterator\";\nimport \"core-js/modules/es6.object.to-string\";\nimport \"core-js/modules/es6.object.keys\";\nimport \"core-js/modules/es6.object.assign\";\nimport \"core-js/modules/es6.object.define-property\";\nimport React, { forwardRef } from 'react';\n\nfunction _defineProperty(obj, key, value) {\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n\n  return obj;\n}\n\nfunction _extends() {\n  _extends = Object.assign || function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n\n    return target;\n  };\n\n  return _extends.apply(this, arguments);\n}\n\nfunction ownKeys(object, enumerableOnly) {\n  var keys = Object.keys(object);\n\n  if (Object.getOwnPropertySymbols) {\n    var symbols = Object.getOwnPropertySymbols(object);\n    if (enumerableOnly) symbols = symbols.filter(function (sym) {\n      return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n    });\n    keys.push.apply(keys, symbols);\n  }\n\n  return keys;\n}\n\nfunction _objectSpread2(target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments[i] != null ? arguments[i] : {};\n\n    if (i % 2) {\n      ownKeys(Object(source), true).forEach(function (key) {\n        _defineProperty(target, key, source[key]);\n      });\n    } else if (Object.getOwnPropertyDescriptors) {\n      Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n    } else {\n      ownKeys(Object(source)).forEach(function (key) {\n        Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n      });\n    }\n  }\n\n  return target;\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n  if (source == null) return {};\n  var target = {};\n  var sourceKeys = Object.keys(source);\n  var key, i;\n\n  for (i = 0; i < sourceKeys.length; i++) {\n    key = sourceKeys[i];\n    if (excluded.indexOf(key) >= 0) continue;\n    target[key] = source[key];\n  }\n\n  return target;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n  if (source == null) return {};\n\n  var target = _objectWithoutPropertiesLoose(source, excluded);\n\n  var key, i;\n\n  if (Object.getOwnPropertySymbols) {\n    var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n    for (i = 0; i < sourceSymbolKeys.length; i++) {\n      key = sourceSymbolKeys[i];\n      if (excluded.indexOf(key) >= 0) continue;\n      if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n      target[key] = source[key];\n    }\n  }\n\n  return target;\n}\n\nvar isFunction = function isFunction(obj) {\n  return typeof obj === 'function';\n};\n\nvar MDXContext = React.createContext({});\n\nvar withMDXComponents = function withMDXComponents(Component) {\n  return function (props) {\n    var allComponents = useMDXComponents(props.components);\n    return React.createElement(Component, _extends({}, props, {\n      components: allComponents\n    }));\n  };\n};\n\nvar useMDXComponents = function useMDXComponents(components) {\n  var contextComponents = React.useContext(MDXContext);\n  var allComponents = contextComponents;\n\n  if (components) {\n    allComponents = isFunction(components) ? components(contextComponents) : _objectSpread2({}, contextComponents, {}, components);\n  }\n\n  return allComponents;\n};\n\nvar MDXProvider = function MDXProvider(props) {\n  var allComponents = useMDXComponents(props.components);\n  return React.createElement(MDXContext.Provider, {\n    value: allComponents\n  }, props.children);\n};\n\nvar TYPE_PROP_NAME = 'mdxType';\nvar DEFAULTS = {\n  inlineCode: 'code',\n  wrapper: function wrapper(_ref) {\n    var children = _ref.children;\n    return React.createElement(React.Fragment, {}, children);\n  }\n};\nvar MDXCreateElement = forwardRef(function (props, ref) {\n  var propComponents = props.components,\n      mdxType = props.mdxType,\n      originalType = props.originalType,\n      parentName = props.parentName,\n      etc = _objectWithoutProperties(props, [\"components\", \"mdxType\", \"originalType\", \"parentName\"]);\n\n  var components = useMDXComponents(propComponents);\n  var type = mdxType;\n  var Component = components[\"\".concat(parentName, \".\").concat(type)] || components[type] || DEFAULTS[type] || originalType;\n\n  if (propComponents) {\n    return React.createElement(Component, _objectSpread2({\n      ref: ref\n    }, etc, {\n      components: propComponents\n    }));\n  }\n\n  return React.createElement(Component, _objectSpread2({\n    ref: ref\n  }, etc));\n});\nMDXCreateElement.displayName = 'MDXCreateElement';\n\nfunction createElement(type, props) {\n  var args = arguments;\n  var mdxType = props && props.mdxType;\n\n  if (typeof type === 'string' || mdxType) {\n    var argsLength = args.length;\n    var createElementArgArray = new Array(argsLength);\n    createElementArgArray[0] = MDXCreateElement;\n    var newProps = {};\n\n    for (var key in props) {\n      if (hasOwnProperty.call(props, key)) {\n        newProps[key] = props[key];\n      }\n    }\n\n    newProps.originalType = type;\n    newProps[TYPE_PROP_NAME] = typeof type === 'string' ? type : mdxType;\n    createElementArgArray[1] = newProps;\n\n    for (var i = 2; i < argsLength; i++) {\n      createElementArgArray[i] = args[i];\n    }\n\n    return React.createElement.apply(null, createElementArgArray);\n  }\n\n  return React.createElement.apply(null, args);\n}\n\nexport { MDXContext, MDXProvider, createElement as mdx, useMDXComponents, withMDXComponents };","import \"core-js/modules/web.dom.iterable\";\nimport \"core-js/modules/es6.array.iterator\";\nimport \"core-js/modules/es6.object.to-string\";\nimport \"core-js/modules/es6.object.keys\";\nimport \"core-js/modules/es6.object.assign\";\nimport \"core-js/modules/es6.array.for-each\";\nimport { jsx } from '@theme-ui/core';\nimport { css, get } from '@theme-ui/css';\nimport 'react';\nimport '@emotion/core';\nimport styled from '@emotion/styled';\nimport { MDXProvider, useMDXComponents } from '@mdx-js/react';\nvar tags = ['p', 'b', 'i', 'a', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'img', 'pre', 'code', 'ol', 'ul', 'li', 'blockquote', 'hr', 'em', 'table', 'tr', 'th', 'td', 'em', 'strong', 'del', // mdx\n'inlineCode', 'thematicBreak', // other\n'div', // theme-ui\n'root'];\nvar aliases = {\n  inlineCode: 'code',\n  thematicBreak: 'hr',\n  root: 'div'\n};\n\nvar alias = function alias(n) {\n  return aliases[n] || n;\n};\n\nvar themed = function themed(key) {\n  return function (props) {\n    return css(get(props.theme, \"styles.\" + key))(props.theme);\n  };\n};\n\nvar Styled = styled('div')(themed('div'));\nvar components = {};\ntags.forEach(function (tag) {\n  components[tag] = styled(alias(tag))(themed(tag));\n  Styled[tag] = components[tag];\n});\n\nvar createComponents = function createComponents(comps) {\n  var next = Object.assign({}, components);\n  Object.keys(comps).forEach(function (key) {\n    next[key] = styled(comps[key])(themed(key));\n  });\n  return next;\n};\n\nvar MDXProvider$1 = function MDXProvider$1(ref) {\n  var components = ref.components;\n  var children = ref.children;\n  var outer = useMDXComponents();\n  return jsx(MDXProvider, {\n    components: createComponents(Object.assign({}, outer, components)),\n    children: children\n  });\n};\n\nexport { themed, Styled, components, MDXProvider$1 as MDXProvider };","var $export = require('./_export');\nvar fails = require('./_fails');\nvar defined = require('./_defined');\nvar quot = /\"/g;\n// B.2.3.2.1 CreateHTML(string, tag, attribute, value)\nvar createHTML = function (string, tag, attribute, value) {\n  var S = String(defined(string));\n  var p1 = '<' + tag;\n  if (attribute !== '') p1 += ' ' + attribute + '=\"' + String(value).replace(quot, '&quot;') + '\"';\n  return p1 + '>' + S + '</' + tag + '>';\n};\nmodule.exports = function (NAME, exec) {\n  var O = {};\n  O[NAME] = exec(createHTML);\n  $export($export.P + $export.F * fails(function () {\n    var test = ''[NAME]('\"');\n    return test !== test.toLowerCase() || test.split('\"').length > 3;\n  }), 'String', O);\n};\n","'use strict';\n\nrequire(\"core-js/modules/es6.array.reduce\");\n\nrequire(\"core-js/modules/es6.array.for-each\");\n\nrequire(\"core-js/modules/web.dom.iterable\");\n\nrequire(\"core-js/modules/es6.array.iterator\");\n\nrequire(\"core-js/modules/es6.object.keys\");\n\nrequire(\"core-js/modules/es6.array.filter\");\n\nrequire(\"core-js/modules/es6.array.map\");\n\nrequire(\"core-js/modules/es6.array.is-array\");\n\nrequire(\"core-js/modules/es7.symbol.async-iterator\");\n\nrequire(\"core-js/modules/es6.symbol\");\n\nrequire(\"core-js/modules/es6.regexp.to-string\");\n\nrequire(\"core-js/modules/es6.date.to-string\");\n\nrequire(\"core-js/modules/es6.object.to-string\");\n\nvar isMergeableObject = function isMergeableObject(value) {\n  return isNonNullObject(value) && !isSpecial(value);\n};\n\nfunction isNonNullObject(value) {\n  return !!value && typeof value === 'object';\n}\n\nfunction isSpecial(value) {\n  var stringValue = Object.prototype.toString.call(value);\n  return stringValue === '[object RegExp]' || stringValue === '[object Date]' || isReactElement(value);\n} // see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25\n\n\nvar canUseSymbol = typeof Symbol === 'function' && Symbol[\"for\"];\nvar REACT_ELEMENT_TYPE = canUseSymbol ? Symbol[\"for\"]('react.element') : 0xeac7;\n\nfunction isReactElement(value) {\n  return value.$$typeof === REACT_ELEMENT_TYPE;\n}\n\nfunction emptyTarget(val) {\n  return Array.isArray(val) ? [] : {};\n}\n\nfunction cloneUnlessOtherwiseSpecified(value, options) {\n  return options.clone !== false && options.isMergeableObject(value) ? deepmerge(emptyTarget(value), value, options) : value;\n}\n\nfunction defaultArrayMerge(target, source, options) {\n  return target.concat(source).map(function (element) {\n    return cloneUnlessOtherwiseSpecified(element, options);\n  });\n}\n\nfunction getMergeFunction(key, options) {\n  if (!options.customMerge) {\n    return deepmerge;\n  }\n\n  var customMerge = options.customMerge(key);\n  return typeof customMerge === 'function' ? customMerge : deepmerge;\n}\n\nfunction getEnumerableOwnPropertySymbols(target) {\n  return Object.getOwnPropertySymbols ? Object.getOwnPropertySymbols(target).filter(function (symbol) {\n    return target.propertyIsEnumerable(symbol);\n  }) : [];\n}\n\nfunction getKeys(target) {\n  return Object.keys(target).concat(getEnumerableOwnPropertySymbols(target));\n}\n\nfunction propertyIsOnObject(object, property) {\n  try {\n    return property in object;\n  } catch (_) {\n    return false;\n  }\n} // Protects from prototype poisoning and unexpected merging up the prototype chain.\n\n\nfunction propertyIsUnsafe(target, key) {\n  return propertyIsOnObject(target, key) // Properties are safe to merge if they don't exist in the target yet,\n  && !(Object.hasOwnProperty.call(target, key) // unsafe if they exist up the prototype chain,\n  && Object.propertyIsEnumerable.call(target, key)); // and also unsafe if they're nonenumerable.\n}\n\nfunction mergeObject(target, source, options) {\n  var destination = {};\n\n  if (options.isMergeableObject(target)) {\n    getKeys(target).forEach(function (key) {\n      destination[key] = cloneUnlessOtherwiseSpecified(target[key], options);\n    });\n  }\n\n  getKeys(source).forEach(function (key) {\n    if (propertyIsUnsafe(target, key)) {\n      return;\n    }\n\n    if (propertyIsOnObject(target, key) && options.isMergeableObject(source[key])) {\n      destination[key] = getMergeFunction(key, options)(target[key], source[key], options);\n    } else {\n      destination[key] = cloneUnlessOtherwiseSpecified(source[key], options);\n    }\n  });\n  return destination;\n}\n\nfunction deepmerge(target, source, options) {\n  options = options || {};\n  options.arrayMerge = options.arrayMerge || defaultArrayMerge;\n  options.isMergeableObject = options.isMergeableObject || isMergeableObject; // cloneUnlessOtherwiseSpecified is added to `options` so that custom arrayMerge()\n  // implementations can use it. The caller may not replace it.\n\n  options.cloneUnlessOtherwiseSpecified = cloneUnlessOtherwiseSpecified;\n  var sourceIsArray = Array.isArray(source);\n  var targetIsArray = Array.isArray(target);\n  var sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;\n\n  if (!sourceAndTargetTypesMatch) {\n    return cloneUnlessOtherwiseSpecified(source, options);\n  } else if (sourceIsArray) {\n    return options.arrayMerge(target, source, options);\n  } else {\n    return mergeObject(target, source, options);\n  }\n}\n\ndeepmerge.all = function deepmergeAll(array, options) {\n  if (!Array.isArray(array)) {\n    throw new Error('first argument should be an array');\n  }\n\n  return array.reduce(function (prev, next) {\n    return deepmerge(prev, next, options);\n  }, {});\n};\n\nvar deepmerge_1 = deepmerge;\nmodule.exports = deepmerge_1;","module.exports = \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIyNXB4IiB2aWV3Qm94PSIwIDAgMjUgMjUiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5HaXRIdWI8L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0iR2l0SHViIiBmaWxsPSIjRkZGRkZGIiBmaWxsLXJ1bGU9Im5vbnplcm8iPgogICAgICAgICAgICA8ZyBpZD0iZ2l0aHViLWxvZ28iPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTIzLjMyMzIwOSw2LjM1NjM4NTg4IEMyMi4yMDU0MjQzLDQuNDI4ODY0OTMgMjAuNjg5MjIwNywyLjkwMjg0MzkxIDE4Ljc3NDE5OTMsMS43Nzc5Nzg1OCBDMTYuODU4ODkyOCwwLjY1MzA1NTg3MyAxNC43Njc5NDkxLDAuMDkwNzM3OTUzMyAxMi40OTk4ODYsMC4wOTA3Mzc5NTMzIEMxMC4yMzIxMDc5LDAuMDkwNzM3OTUzMyA4LjE0MDQ4MDEzLDAuNjUzMjI3OTkzIDYuMjI1NTcyNjksMS43Nzc5Nzg1OCBDNC4zMTAzODAyMSwyLjkwMjc4NjU0IDIuNzk0MjMzNjcsNC40Mjg4NjQ5MyAxLjY3NjQ0ODk5LDYuMzU2Mzg1ODggQzAuNTU4ODM1MzMzLDguMjgzODQ5NDUgMCwxMC4zODg2NTQ2IDAsMTIuNjcwNzQzOSBDMCwxNS40MTIwNTEgMC43OTQ2NzE0ODMsMTcuODc3MTA0NSAyLjM4NDQxMzQ5LDIwLjA2NjUzNTUgQzMuOTczOTg0NDksMjIuMjU2MTM4OCA2LjAyNzQ3NDg4LDIzLjc3MTI1ODggOC41NDQ3MTM2NywyNC42MTIwNjc4IEM4LjgzNzcyNzQsMjQuNjY2ODAyMiA5LjA1NDYzNzM3LDI0LjYyODMwNDUgOS4xOTU2NzE2MSwyNC40OTc1NTAzIEM5LjMzNjc2Mjg1LDI0LjM2NjYyMzkgOS40MDcyMjI5NiwyNC4yMDI2NTAzIDkuNDA3MjIyOTYsMjQuMDA2MzE4MSBDOS40MDcyMjI5NiwyMy45NzM1NTc5IDkuNDA0NDI5NjQsMjMuNjc4ODMwMSA5LjM5OTAxNDAxLDIzLjEyMTc5MDUgQzkuMzkzNDI3MzcsMjIuNTY0NzUxIDkuMzkwODA1MDcsMjIuMDc4Nzk3MiA5LjM5MDgwNTA3LDIxLjY2NDE1ODcgTDkuMDE2NDQyOTcsMjEuNzI5MzM1MSBDOC43Nzc3NTY1LDIxLjc3MzM0MDUgOC40NzY2NDc4MywyMS43OTE5ODY5IDguMTEzMTE2OTgsMjEuNzg2NzA4NiBDNy43NDk3NTcxNSwyMS43ODE2MDIzIDcuMzcyNTQ0NzMsMjEuNzQzMjc2OCA2Ljk4MTk5Mjc3LDIxLjY3MjAxODkgQzYuNTkxMjY5NzksMjEuNjAxMzkyMSA2LjIyNzg1Mjk1LDIxLjQzNzU5MDcgNS44OTE0NTcyMiwyMS4xODA5NTg5IEM1LjU1NTIzMjUyLDIwLjkyNDMyNzEgNS4zMTY1NDYwNCwyMC41ODg0MDUxIDUuMTc1NDU0OCwyMC4xNzM3MDkzIEw1LjAxMjcwMTA2LDE5Ljc5Njc2NTIgQzQuOTA0MjE3NTcsMTkuNTQ1ODEzNCA0LjczMzQyNTkxLDE5LjI2NzAzNTUgNC41MDAwOTgwNSwxOC45NjE0NjQxIEM0LjI2Njc3MDE5LDE4LjY1NTYwNTggNC4wMzA4MjAwMywxOC40NDgyNTc5IDMuNzkyMTMzNTUsMTguMzM5MDc2MSBMMy42NzgxNzc0MywxOC4yNTY5NzQ2IEMzLjYwMjI0NDY5LDE4LjIwMjQxMjMgMy41MzE3ODQ1OCwxOC4xMzY2MDQ5IDMuNDY2NjI2MDgsMTguMDYwMjQwOCBDMy40MDE1MjQ1OCwxNy45ODM4NzY2IDMuMzUyNzgzOTcsMTcuOTA3NDU1MSAzLjMyMDIzMzIzLDE3LjgzMDkxODggQzMuMjg3NjI1NDcsMTcuNzU0MzI1MSAzLjMxNDY0NjU4LDE3LjY5MTUwMTEgMy40MDE1ODE1OSwxNy42NDIyMTcyIEMzLjQ4ODUxNjYsMTcuNTkyOTMzNCAzLjY0NTYyNjY4LDE3LjU2OTAwODYgMy44NzM1OTU5MywxNy41NjkwMDg2IEw0LjE5ODk4OTM5LDE3LjYxNzk0ODIgQzQuNDE2MDEzMzcsMTcuNjYxNzI0MiA0LjY4NDQ1NzI3LDE3Ljc5MjQ3ODUgNS4wMDQ2NjMxNCwxOC4wMTEwMTQzIEM1LjMyNDY5Nzk4LDE4LjIyOTM3NzkgNS41ODc3ODMyNywxOC41MTMyNjIxIDUuNzkzOTc2LDE4Ljg2MjU1MjEgQzYuMDQzNjY0NzUsMTkuMzEwNDA5OSA2LjM0NDQ4ODM4LDE5LjY1MTY2NzYgNi42OTczMDE5OSwxOS44ODY0OTc0IEM3LjA0OTgzMDU4LDIwLjEyMTMyNzMgNy40MDUyNjY0OSwyMC4yMzg1NDE0IDcuNzYzMjY3NzEsMjAuMjM4NTQxNCBDOC4xMjEyNjg5MiwyMC4yMzg1NDE0IDguNDMwNDcyNTIsMjAuMjExMjMxNiA4LjY5MDk5MjUxLDIwLjE1Njg5ODkgQzguOTUxMjI3NDcsMjAuMTAyMjc5MyA5LjE5NTM4NjU3LDIwLjAyMDE3NzcgOS40MjMzNTU4MiwxOS45MTEwNTMzIEM5LjUyMTAwODA2LDE5LjE3OTA4MTkgOS43ODY4ODY2NywxOC42MTY3NjM5IDEwLjIyMDc2MzYsMTguMjIzNjk3OSBDOS42MDIzNTY0MiwxOC4xNTgyOTIxIDkuMDQ2MzcxNDIsMTguMDU5NzgxOCA4LjU1MjUyMzU3LDE3LjkyODc5OCBDOC4wNTg5NjA3NSwxNy43OTc2NDIxIDcuNTQ4OTIzMDMsMTcuNTg0Nzg2MyA3LjAyMjc1MjQ2LDE3LjI4OTY1NjkgQzYuNDk2Mjk2ODUsMTYuOTk0OTI5MSA2LjA1OTU2OTU4LDE2LjYyODk0MzQgNS43MTI0NTY2MiwxNi4xOTIzMzA5IEM1LjM2NTI4NjY1LDE1Ljc1NTQ4ODkgNS4wODAzNjc4NSwxNS4xODE5ODMxIDQuODU4MDk5MjYsMTQuNDcyMzMgQzQuNjM1NzE2NjYsMTMuNzYyMzkgNC41MjQ0OTY4NiwxMi45NDM0NDAzIDQuNTI0NDk2ODYsMTIuMDE1MjUxNCBDNC41MjQ0OTY4NiwxMC42OTM2NTIzIDQuOTUzMTg2MjEsOS41NjkwMTY0MiA1LjgxMDM5Mzg5LDguNjQwNzEyNzggQzUuNDA4ODM5NjcsNy42NDcxMTgwNyA1LjQ0Njc0OTAzLDYuNTMzMjY4NDYgNS45MjQyMzYsNS4yOTkyNzg2OCBDNi4yMzg5MTIyMiw1LjIwMDg4MzA4IDYuNzA1NTY3OTQsNS4yNzQ3MjI4MSA3LjMyMzk3NTE0LDUuNTIwMzM4ODcgQzcuOTQyNDk2MzQsNS43NjYwNjk2OCA4LjM5NTM1NjQ3LDUuOTc2NTczMTQgOC42ODMwMTE1OSw2LjE1MTEwMzQxIEM4Ljk3MDY2NjcsNi4zMjU1NzYzIDkuMjAxMTQ0MjQsNi40NzM0Mjc4NyA5LjM3NDc4NjIzLDYuNTkzMzM4NTQgQzEwLjM4NDA4NzQsNi4zMDk1MTE3MSAxMS40MjU2NTQzLDYuMTY3NTY5NjEgMTIuNDk5NzcyLDYuMTY3NTY5NjEgQzEzLjU3Mzg4OTYsNi4xNjc1Njk2MSAxNC42MTU2ODQ2LDYuMzA5NTExNzEgMTUuNjI1MDQyOCw2LjU5MzMzODU0IEwxNi4yNDM1MDcsNi4yMDAzODcyNiBDMTYuNjY2NDM4Niw1LjkzODE5MDI1IDE3LjE2NTg3MzEsNS42OTc5MDk5MyAxNy43NDA2MTMzLDUuNDc5NDg4OTIgQzE4LjMxNTY5NTUsNS4yNjExODI2NiAxOC43NTU0NDQxLDUuMjAxMDU1MiAxOS4wNTk0MDMxLDUuMjk5NDUwOCBDMTkuNTQ3NDkzMyw2LjUzMzQ5Nzk1IDE5LjU5MDk4OTMsNy42NDcyOTAxOSAxOS4xODkzMjExLDguNjQwODg0OSBDMjAuMDQ2NDcxNyw5LjU2OTE4ODU0IDIwLjQ3NTMzMjEsMTAuNjk0MTExMiAyMC40NzUzMzIxLDEyLjAxNTQyMzUgQzIwLjQ3NTMzMjEsMTIuOTQzNjEyNCAyMC4zNjM3MTMzLDEzLjc2NTE0MzkgMjAuMTQxNjcyNywxNC40ODA1MzQ0IEMxOS45MTkzNDcxLDE1LjE5NjAzOTYgMTkuNjMxOTc3LDE1Ljc2ODk3MTcgMTkuMjc5NDQ4NSwxNi4yMDA1MzUzIEMxOC45MjY1MjA4LDE2LjYzMjA0MTYgMTguNDg3MDAwMiwxNi45OTUxNTg2IDE3Ljk2MDgyOTcsMTcuMjg5ODI5MSBDMTcuNDM0NTQ1MSwxNy41ODQ3MjkgMTYuOTI0MzM2MywxNy43OTc1ODQ4IDE2LjQzMDc3MzUsMTcuOTI4NzQwNiBDMTUuOTM2OTgyNywxOC4wNTk4OTY1IDE1LjM4MDk5NzcsMTguMTU4NDY0MiAxNC43NjI1OTA1LDE4LjIyMzk4NDggQzE1LjMyNjYxMzQsMTguNzE1MjE2OSAxNS42MDg2ODE5LDE5LjQ5MDYyMDEgMTUuNjA4NjgxOSwyMC41NDk4NTAxIEwxNS42MDg2ODE5LDI0LjAwNTg1OTIgQzE1LjYwODY4MTksMjQuMjAyMTkxNCAxNS42NzY1MTk3LDI0LjM2NjEwNzUgMTUuODEyMzA5MywyNC40OTcwOTEzIEMxNS45NDc5Mjc5LDI0LjYyNzg0NTUgMTYuMTYyMTAxNiwyNC42NjYzNDMyIDE2LjQ1NTExNTMsMjQuNjExNTUxNSBDMTguOTcyNjk2MSwyMy43NzA4NTcyIDIxLjAyNjE4NjUsMjIuMjU1Njc5OCAyMi42MTU3MDA1LDIwLjA2NjA3NjYgQzI0LjIwNTA0MzUsMTcuODc2NjQ1NSAyNSwxNS40MTE1OTIgMjUsMTIuNjcwMjg0OSBDMjQuOTk5NDI5OSwxMC4zODg0ODI1IDI0LjQ0MDMwOTYsOC4yODM4NDk0NSAyMy4zMjMyMDksNi4zNTYzODU4OCBaIiBpZD0iU2hhcGUiPjwvcGF0aD4KICAgICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+\"","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n  module.exports = require('./cjs/scheduler.development.js');\n}","require(\"core-js/modules/es6.array.is-array\");\n\nrequire(\"core-js/modules/es6.array.some\");\n\nrequire(\"core-js/modules/web.dom.iterable\");\n\nrequire(\"core-js/modules/es6.array.iterator\");\n\nrequire(\"core-js/modules/es6.object.to-string\");\n\nrequire(\"core-js/modules/es6.object.keys\");\n\nrequire(\"core-js/modules/es6.array.for-each\");\n\nrequire(\"core-js/modules/es6.object.set-prototype-of\");\n\nrequire(\"core-js/modules/es6.object.create\");\n\nrequire(\"core-js/modules/es6.array.index-of\");\n\nrequire(\"core-js/modules/es6.object.define-property\");\n\nrequire(\"core-js/modules/es6.object.assign\");\n\nexports.__esModule = true;\nexports.Helmet = undefined;\n\nvar _extends = Object.assign || function (target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments[i];\n\n    for (var key in source) {\n      if (Object.prototype.hasOwnProperty.call(source, key)) {\n        target[key] = source[key];\n      }\n    }\n  }\n\n  return target;\n};\n\nvar _createClass = function () {\n  function defineProperties(target, props) {\n    for (var i = 0; i < props.length; i++) {\n      var descriptor = props[i];\n      descriptor.enumerable = descriptor.enumerable || false;\n      descriptor.configurable = true;\n      if (\"value\" in descriptor) descriptor.writable = true;\n      Object.defineProperty(target, descriptor.key, descriptor);\n    }\n  }\n\n  return function (Constructor, protoProps, staticProps) {\n    if (protoProps) defineProperties(Constructor.prototype, protoProps);\n    if (staticProps) defineProperties(Constructor, staticProps);\n    return Constructor;\n  };\n}();\n\nvar _react = require(\"react\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require(\"prop-types\");\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _reactSideEffect = require(\"react-side-effect\");\n\nvar _reactSideEffect2 = _interopRequireDefault(_reactSideEffect);\n\nvar _reactFastCompare = require(\"react-fast-compare\");\n\nvar _reactFastCompare2 = _interopRequireDefault(_reactFastCompare);\n\nvar _HelmetUtils = require(\"./HelmetUtils.js\");\n\nvar _HelmetConstants = require(\"./HelmetConstants.js\");\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    \"default\": obj\n  };\n}\n\nfunction _objectWithoutProperties(obj, keys) {\n  var target = {};\n\n  for (var i in obj) {\n    if (keys.indexOf(i) >= 0) continue;\n    if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;\n    target[i] = obj[i];\n  }\n\n  return target;\n}\n\nfunction _classCallCheck(instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n}\n\nfunction _possibleConstructorReturn(self, call) {\n  if (!self) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n\n  return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n}\n\nfunction _inherits(subClass, superClass) {\n  if (typeof superClass !== \"function\" && superClass !== null) {\n    throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n  }\n\n  subClass.prototype = Object.create(superClass && superClass.prototype, {\n    constructor: {\n      value: subClass,\n      enumerable: false,\n      writable: true,\n      configurable: true\n    }\n  });\n  if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\n\nvar Helmet = function Helmet(Component) {\n  var _class, _temp;\n\n  return _temp = _class = function (_React$Component) {\n    _inherits(HelmetWrapper, _React$Component);\n\n    function HelmetWrapper() {\n      _classCallCheck(this, HelmetWrapper);\n\n      return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n    }\n\n    HelmetWrapper.prototype.shouldComponentUpdate = function shouldComponentUpdate(nextProps) {\n      return !(0, _reactFastCompare2[\"default\"])(this.props, nextProps);\n    };\n\n    HelmetWrapper.prototype.mapNestedChildrenToProps = function mapNestedChildrenToProps(child, nestedChildren) {\n      if (!nestedChildren) {\n        return null;\n      }\n\n      switch (child.type) {\n        case _HelmetConstants.TAG_NAMES.SCRIPT:\n        case _HelmetConstants.TAG_NAMES.NOSCRIPT:\n          return {\n            innerHTML: nestedChildren\n          };\n\n        case _HelmetConstants.TAG_NAMES.STYLE:\n          return {\n            cssText: nestedChildren\n          };\n      }\n\n      throw new Error(\"<\" + child.type + \" /> elements are self-closing and can not contain children. Refer to our API for more information.\");\n    };\n\n    HelmetWrapper.prototype.flattenArrayTypeChildren = function flattenArrayTypeChildren(_ref) {\n      var _extends2;\n\n      var child = _ref.child,\n          arrayTypeChildren = _ref.arrayTypeChildren,\n          newChildProps = _ref.newChildProps,\n          nestedChildren = _ref.nestedChildren;\n      return _extends({}, arrayTypeChildren, (_extends2 = {}, _extends2[child.type] = [].concat(arrayTypeChildren[child.type] || [], [_extends({}, newChildProps, this.mapNestedChildrenToProps(child, nestedChildren))]), _extends2));\n    };\n\n    HelmetWrapper.prototype.mapObjectTypeChildren = function mapObjectTypeChildren(_ref2) {\n      var _extends3, _extends4;\n\n      var child = _ref2.child,\n          newProps = _ref2.newProps,\n          newChildProps = _ref2.newChildProps,\n          nestedChildren = _ref2.nestedChildren;\n\n      switch (child.type) {\n        case _HelmetConstants.TAG_NAMES.TITLE:\n          return _extends({}, newProps, (_extends3 = {}, _extends3[child.type] = nestedChildren, _extends3.titleAttributes = _extends({}, newChildProps), _extends3));\n\n        case _HelmetConstants.TAG_NAMES.BODY:\n          return _extends({}, newProps, {\n            bodyAttributes: _extends({}, newChildProps)\n          });\n\n        case _HelmetConstants.TAG_NAMES.HTML:\n          return _extends({}, newProps, {\n            htmlAttributes: _extends({}, newChildProps)\n          });\n      }\n\n      return _extends({}, newProps, (_extends4 = {}, _extends4[child.type] = _extends({}, newChildProps), _extends4));\n    };\n\n    HelmetWrapper.prototype.mapArrayTypeChildrenToProps = function mapArrayTypeChildrenToProps(arrayTypeChildren, newProps) {\n      var newFlattenedProps = _extends({}, newProps);\n\n      Object.keys(arrayTypeChildren).forEach(function (arrayChildName) {\n        var _extends5;\n\n        newFlattenedProps = _extends({}, newFlattenedProps, (_extends5 = {}, _extends5[arrayChildName] = arrayTypeChildren[arrayChildName], _extends5));\n      });\n      return newFlattenedProps;\n    };\n\n    HelmetWrapper.prototype.warnOnInvalidChildren = function warnOnInvalidChildren(child, nestedChildren) {\n      if (process.env.NODE_ENV !== \"production\") {\n        if (!_HelmetConstants.VALID_TAG_NAMES.some(function (name) {\n          return child.type === name;\n        })) {\n          if (typeof child.type === \"function\") {\n            return (0, _HelmetUtils.warn)(\"You may be attempting to nest <Helmet> components within each other, which is not allowed. Refer to our API for more information.\");\n          }\n\n          return (0, _HelmetUtils.warn)(\"Only elements types \" + _HelmetConstants.VALID_TAG_NAMES.join(\", \") + \" are allowed. Helmet does not support rendering <\" + child.type + \"> elements. Refer to our API for more information.\");\n        }\n\n        if (nestedChildren && typeof nestedChildren !== \"string\" && (!Array.isArray(nestedChildren) || nestedChildren.some(function (nestedChild) {\n          return typeof nestedChild !== \"string\";\n        }))) {\n          throw new Error(\"Helmet expects a string as a child of <\" + child.type + \">. Did you forget to wrap your children in braces? ( <\" + child.type + \">{``}</\" + child.type + \"> ) Refer to our API for more information.\");\n        }\n      }\n\n      return true;\n    };\n\n    HelmetWrapper.prototype.mapChildrenToProps = function mapChildrenToProps(children, newProps) {\n      var _this2 = this;\n\n      var arrayTypeChildren = {};\n\n      _react2[\"default\"].Children.forEach(children, function (child) {\n        if (!child || !child.props) {\n          return;\n        }\n\n        var _child$props = child.props,\n            nestedChildren = _child$props.children,\n            childProps = _objectWithoutProperties(_child$props, [\"children\"]);\n\n        var newChildProps = (0, _HelmetUtils.convertReactPropstoHtmlAttributes)(childProps);\n\n        _this2.warnOnInvalidChildren(child, nestedChildren);\n\n        switch (child.type) {\n          case _HelmetConstants.TAG_NAMES.LINK:\n          case _HelmetConstants.TAG_NAMES.META:\n          case _HelmetConstants.TAG_NAMES.NOSCRIPT:\n          case _HelmetConstants.TAG_NAMES.SCRIPT:\n          case _HelmetConstants.TAG_NAMES.STYLE:\n            arrayTypeChildren = _this2.flattenArrayTypeChildren({\n              child: child,\n              arrayTypeChildren: arrayTypeChildren,\n              newChildProps: newChildProps,\n              nestedChildren: nestedChildren\n            });\n            break;\n\n          default:\n            newProps = _this2.mapObjectTypeChildren({\n              child: child,\n              newProps: newProps,\n              newChildProps: newChildProps,\n              nestedChildren: nestedChildren\n            });\n            break;\n        }\n      });\n\n      newProps = this.mapArrayTypeChildrenToProps(arrayTypeChildren, newProps);\n      return newProps;\n    };\n\n    HelmetWrapper.prototype.render = function render() {\n      var _props = this.props,\n          children = _props.children,\n          props = _objectWithoutProperties(_props, [\"children\"]);\n\n      var newProps = _extends({}, props);\n\n      if (children) {\n        newProps = this.mapChildrenToProps(children, newProps);\n      }\n\n      return _react2[\"default\"].createElement(Component, newProps);\n    };\n\n    _createClass(HelmetWrapper, null, [{\n      key: \"canUseDOM\",\n      // Component.peek comes from react-side-effect:\n      // For testing, you may use a static peek() method available on the returned component.\n      // It lets you get the current state without resetting the mounted instance stack.\n      // Don’t use it for anything other than testing.\n\n      /**\n       * @param {Object} base: {\"target\": \"_blank\", \"href\": \"http://mysite.com/\"}\n       * @param {Object} bodyAttributes: {\"className\": \"root\"}\n       * @param {String} defaultTitle: \"Default Title\"\n       * @param {Boolean} defer: true\n       * @param {Boolean} encodeSpecialCharacters: true\n       * @param {Object} htmlAttributes: {\"lang\": \"en\", \"amp\": undefined}\n       * @param {Array} link: [{\"rel\": \"canonical\", \"href\": \"http://mysite.com/example\"}]\n       * @param {Array} meta: [{\"name\": \"description\", \"content\": \"Test description\"}]\n       * @param {Array} noscript: [{\"innerHTML\": \"<img src='http://mysite.com/js/test.js'\"}]\n       * @param {Function} onChangeClientState: \"(newState) => console.log(newState)\"\n       * @param {Array} script: [{\"type\": \"text/javascript\", \"src\": \"http://mysite.com/js/test.js\"}]\n       * @param {Array} style: [{\"type\": \"text/css\", \"cssText\": \"div { display: block; color: blue; }\"}]\n       * @param {String} title: \"Title\"\n       * @param {Object} titleAttributes: {\"itemprop\": \"name\"}\n       * @param {String} titleTemplate: \"MySite.com - %s\"\n       */\n      set: function set(canUseDOM) {\n        Component.canUseDOM = canUseDOM;\n      }\n    }]);\n\n    return HelmetWrapper;\n  }(_react2[\"default\"].Component), _class.propTypes = {\n    base: _propTypes2[\"default\"].object,\n    bodyAttributes: _propTypes2[\"default\"].object,\n    children: _propTypes2[\"default\"].oneOfType([_propTypes2[\"default\"].arrayOf(_propTypes2[\"default\"].node), _propTypes2[\"default\"].node]),\n    defaultTitle: _propTypes2[\"default\"].string,\n    defer: _propTypes2[\"default\"].bool,\n    encodeSpecialCharacters: _propTypes2[\"default\"].bool,\n    htmlAttributes: _propTypes2[\"default\"].object,\n    link: _propTypes2[\"default\"].arrayOf(_propTypes2[\"default\"].object),\n    meta: _propTypes2[\"default\"].arrayOf(_propTypes2[\"default\"].object),\n    noscript: _propTypes2[\"default\"].arrayOf(_propTypes2[\"default\"].object),\n    onChangeClientState: _propTypes2[\"default\"].func,\n    script: _propTypes2[\"default\"].arrayOf(_propTypes2[\"default\"].object),\n    style: _propTypes2[\"default\"].arrayOf(_propTypes2[\"default\"].object),\n    title: _propTypes2[\"default\"].string,\n    titleAttributes: _propTypes2[\"default\"].object,\n    titleTemplate: _propTypes2[\"default\"].string\n  }, _class.defaultProps = {\n    defer: true,\n    encodeSpecialCharacters: true\n  }, _class.peek = Component.peek, _class.rewind = function () {\n    var mappedState = Component.rewind();\n\n    if (!mappedState) {\n      // provide fallback if mappedState is undefined\n      mappedState = (0, _HelmetUtils.mapStateOnServer)({\n        baseTag: [],\n        bodyAttributes: {},\n        encodeSpecialCharacters: true,\n        htmlAttributes: {},\n        linkTags: [],\n        metaTags: [],\n        noscriptTags: [],\n        scriptTags: [],\n        styleTags: [],\n        title: \"\",\n        titleAttributes: {}\n      });\n    }\n\n    return mappedState;\n  }, _temp;\n};\n\nvar NullComponent = function NullComponent() {\n  return null;\n};\n\nvar HelmetSideEffects = (0, _reactSideEffect2[\"default\"])(_HelmetUtils.reducePropsToState, _HelmetUtils.handleClientStateChange, _HelmetUtils.mapStateOnServer)(NullComponent);\nvar HelmetExport = Helmet(HelmetSideEffects);\nHelmetExport.renderStatic = HelmetExport.rewind;\nexports.Helmet = HelmetExport;\nexports[\"default\"] = HelmetExport;","module.exports = \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNzlweCIgaGVpZ2h0PSIzM3B4IiB2aWV3Qm94PSIwIDAgNzkgMzMiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5Mb2dvPC90aXRsZT4KICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPgogICAgPGcgaWQ9IlBhZ2UtMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9IkxvZ28iIGZpbGwtcnVsZT0ibm9uemVybyI+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMC4wNDUyMzE4LDE5LjQ2MTIzMzcgQzkuMjQwNjc1MjUsMjAuNjk4NDMyOCA4LjEyNjE5NTA0LDIxLjMxNjY4NzggNi43MDA3Nzc4OSwyMS4zMTY2ODc4IEM1LjMxNTQ1ODI5LDIxLjMxNjY4NzggNC4yMDg2NTAxNywyMC43MTkxMTAzIDMuMzgwMjA4NzgsMTkuNTIzODE3NCBDMi41NTIyMDE2NiwxOC4zMjgyNDg5IDIuMTM4MDUzMzUsMTYuNzc4NDA3MSAyLjEzODA1MzM1LDE0Ljg3MzMyNzMgQzIuMTM4MDUzMzUsMTIuOTIyNzU3MSAyLjU0ODE0ODQ4LDExLjM0Mzk2NyAzLjM2ODMzODc1LDEwLjEzNzIzMjYgQzQuMTg4NjczNzgsOC45MzA2MzYxMiA1LjI5NTE5MjM4LDguMzI2OTkzMjQgNi42ODg3NjMxLDguMzI2OTkzMjQgQzguMDY2NTU1MzcsOC4zMjY5OTMyNCA5LjE3MTE5MjE0LDguODg1MjgzNjUgMTAuMDAzMzk3MiwxMC4wMDA0ODYgQzEwLjgzNTYwMjMsMTEuMTE2Mzc3NSAxMS4yNTE3NzcyLDEyLjY3NjI4MjIgMTEuMjUxNzc3MiwxNC42Nzk2NDg4IEMxMS4yNTE3NzcyLDE2LjYzMDM1NjggMTAuODQ5NDk4OSwxOC4yMjQxNzI1IDEwLjA0NTIzMTgsMTkuNDYxMjMzNyBNNi43MTI3OTI2OCw2LjczNDY5Mzg4IEM0LjY5MDExMDI1LDYuNzM0NjkzODggMy4wNjU2NTI5Myw3LjUwMTQxMjcgMS44MzkyNzU5NSw5LjAzNDAyMzI0IEMwLjYxMzE4ODQ4OSwxMC41NjY3NzE2IDAsMTIuNTA5NDg0NCAwLDE0Ljg2MTg4NTggQzAsMTcuMTE1NzI0OCAwLjU4NTM5NTI0MywxOS4wMTg1OTkxIDEuNzU2MDQwOTcsMjAuNTcwMDk1IEMyLjkyNjU0MTk1LDIyLjEyMjAwNDQgNC41NTg4MTYxMiwyMi44OTc5NTkyIDYuNjUzMDA4MjUsMjIuODk3OTU5MiBDOC43NzkxOTE1NywyMi44OTc5NTkyIDEwLjQzMzQ2ODcsMjIuMDgwMDk4MiAxMS42MTYyNzQsMjAuNDQ1MDY1NSBDMTIuNzk4NTAwMiwxOC44MDk3NTcxIDEzLjM4OTgzMDUsMTYuODkxNDQzNyAxMy4zODk4MzA1LDE0LjY5MTIyODEgQzEzLjM4OTgzMDUsMTIuMzk5NjE4MyAxMi43ODA1NTA0LDEwLjUwMDQ2NiAxMS41NjIyNzk4LDguOTkzOTA5MDQgQzEwLjM0Mzg2NDUsNy40ODgwNDEzIDguNzI3MzY4NzQsNi43MzQ2OTM4OCA2LjcxMjc5MjY4LDYuNzM0NjkzODgiIGlkPSJTaGFwZSIgZmlsbD0iIzVEQTdBMyI+PC9wYXRoPgogICAgICAgICAgICA8cGF0aCBkPSJNMjIuOTc0MzgxNywyMS4zNjc1NDcyIEMyMi4zMTQxOTk5LDIyLjA3MDg5MDkgMjEuNTU1MzY4NiwyMi40MjMxMzExIDIwLjY5OTU0OTUsMjIuNDIzMTMxMSBDMTkuOTYwMDU1MywyMi40MjMxMzExIDE5LjI1MDkyNjQsMjIuMTMwOTk0OCAxOC41Njk3NDU3LDIxLjU0NjU4MDEgQzE3Ljg4ODI2MjksMjAuOTYzMDE3OSAxNy41MTMzMDM4LDIwLjIyMzAxNTEgMTcuMzYyMjMyNSwxOS4zMjc5OTI0IEwxNy4zNjIyMzI1LDE1Ljk4NjA0NCBDMTcuNjY0Mzc1MiwxNS4xNzMxNDkxIDE3Ljk2OTM4ODIsMTQuNDgxNDU2OCAxOC41ODg0Nzg2LDEzLjkxMDk2NjggQzE5LjIwNzU2ODksMTMuMzQwNDc2OSAxOS45MDY3MjcxLDEzLjA1NTE2MDkgMjAuNjg3OTE3LDEzLjA1NTE2MDkgQzIxLjY3NjgzLDEzLjA1NTE2MDkgMjIuNDcwNDA3NywxMy40NTk2OTAxIDIzLjA2ODgwMTMsMTQuMjY4NjA2NSBDMjMuNjY2ODkyNywxNS4wNzc1MjI4IDIzLjk2NjAxNCwxNi4yMjg0NDg5IDIzLjk2NjAxNCwxNy43MjE1MjY5IEMyMy45NjYwMTQsMTkuNDQ4OTEwNyAyMy42MzUxNjc3LDIwLjY2NDYyOTcgMjIuOTc0MzgxNywyMS4zNjc1NDcyIE0yMS4xNjI3MzQyLDExLjQ0ODk3OTYgQzE5LjQwMzM1NzQsMTEuNDQ4OTc5NiAxOC4xMTc1ODkyLDEyLjMyNDUzNiAxNy4yMTExNjEyLDE0LjA3NDc5NjIgTDE3LjIxMTE2MTIsMTEuNjk4MjA0OCBMMTUuMzk4MzA1MSwxMS42OTgyMDQ4IEwxNS4zOTgzMDUxLDI3LjYxMjI0NDkgTDE3LjM2MjIzMjUsMjcuNjEyMjQ0OSBMMTcuMzYyMjMyNSwyMS44MjQ5MzM3IEMxOC4yNjg2NjA1LDIzLjIzOTQzNjEgMTkuNTA4OTU2MiwyMy45NDcwNDI1IDIxLjA4NzY1MTcsMjMuOTQ3MDQyNSBDMjIuNTU4OTM1NSwyMy45NDcwNDI1IDIzLjc2MjgyMywyMy4zNzk2Nzg2IDI0LjcwMjAzMzUsMjIuMjQ1NTE5MSBDMjUuNjQwNzkwOCwyMS4xMTA3OTEyIDI2LjExMDE2OTUsMTkuNTc3NTAxOCAyNi4xMTAxNjk1LDE3LjY0NTM2NjkgQzI2LjExMDE2OTUsMTUuODUzNDc0NCAyNS42NjI5OTgzLDE0LjM3MjkwMDMgMjQuNzUwNTI3NCwxMy4yMDMzNjA0IEMyMy44Mzc2MDMzLDEyLjAzMzY3ODUgMjIuNjQ4MDY3NiwxMS40NDg5Nzk2IDIxLjE2MjczNDIsMTEuNDQ4OTc5NiIgaWQ9IlNoYXBlIiBmaWxsPSIjNURBN0EzIj48L3BhdGg+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMC4yNjM1ODc2LDE2LjM2MzMzNjcgQzMwLjM0MTcwNzYsMTUuMjU4OTg2OCAzMC43MDEzMTY2LDE0LjQwODM2MTMgMzEuMzQxNzAwNiwxMy43NzA0NjExIEMzMS45ODE2NTYxLDEzLjEzMjQyMyAzMi43NjE0Mjc5LDEyLjgwNDAxNjkgMzMuNjgwNzMwMiwxMi44MDQwMTY5IEMzNC4zNjQxMDE2LDEyLjgwNDAxNjkgMzQuOTQ5MDczMiwxMi45NzU3NDMzIDM1LjQzNjUwMiwxMy4zMjkxMzUzIEMzNS45MjM1MDIzLDEzLjY4MTk3NTEgMzYuMjY5NDAxLDE0LjEyNTc4NTcgMzYuNDczNDg0MSwxNC42MjcwMjI1IEMzNi42NzgxMzg1LDE1LjEyODEyMTMgMzYuNzg3NTM1MSwxNS42NzMxMTggMzYuODAzMzg3NiwxNi4zNjMzMzY3IEwzMC4yNjM1ODc2LDE2LjM2MzMzNjcgWiBNMzcuMzc1MjIwMiwxMy4wMzA2ODQ4IEMzNi40MjgzNTQ1LDExLjk5MDI0OTEgMzUuMTc3NDM1LDExLjQ0ODk3OTYgMzMuNjIxNzQ3NSwxMS40NDg5Nzk2IEMzMi4wNDI5MjM5LDExLjQ0ODk3OTYgMzAuNzMwNTkzOCwxMi4wMDI1MzUgMjkuNjg2MDQyNCwxMy4xMzE0NTY3IEMyOC42NDEyMDU0LDE0LjI1OTgyNjIgMjguMTE4NjQ0MSwxNS43MzQ5NjE2IDI4LjExODY0NDEsMTcuNTY2OTQwMSBDMjguMTE4NjQ0MSwxOS4zNjA4MTg0IDI4LjYyMTA2ODQsMjAuODA3Mzc4OCAyOS42MjY5MTY4LDIxLjkxMzM4NTIgQzMwLjYzMjQ3OTYsMjMuMDE5OTQzOCAzMS45NDg1MjMsMjMuNTcxNDI4NiAzMy41NzQ5MDQsMjMuNTcxNDI4NiBDMzQuODA4MjU3MywyMy41NzE0Mjg2IDM1Ljg4MDIyOTIsMjMuMjQ4OTU4NCAzNi43OTE1MzM5LDIyLjYwNDcwODMgQzM3LjcwMzEyNDIsMjEuOTYwNzM0MiAzOC4zMTU4MDIsMjEuMTQ3MzgwNSAzOC42MzAxMzg2LDIwLjE2NDA5NSBMMzYuOTA5OTI3OCwxOS44MjI3MTI4IEMzNi4yODg5NjY3LDIxLjMzMzQ2MzUgMzUuMjIwNTY1MiwyMi4wODkyNTI5IDMzLjcwNDI5NDcsMjIuMDg5MjUyOSBDMzIuODYzNjgzNywyMi4wODkyNTI5IDMyLjA2NjM0NTYsMjEuODI4MDc0MiAzMS4zMTIyODA3LDIxLjIyMDY4MTcgQzMwLjU1ODA3MjksMjAuNjEzMDEzMiAzMC4xODA3NTQ3LDE5LjQwMDI5OSAzMC4xODA3NTQ3LDE3Ljc0Mzc3NDEgTDM4LjgzMDUwODUsMTcuNzQzNzc0MSBDMzguODA2OTQzOSwxNS41MzUwNzQzIDM4LjMyMTgwMDIsMTQuMDcwODQ0MyAzNy4zNzUyMjAyLDEzLjAzMDY4NDggTDM3LjM3NTIyMDIsMTMuMDMwNjg0OCBaIiBpZD0iU2hhcGUiIGZpbGw9IiM1REE3QTMiPjwvcGF0aD4KICAgICAgICAgICAgPHBhdGggZD0iTTQ4LjQzNjA2MzksMTIuMTMxMzMxIEM0Ny43NjA0NDM5LDExLjY3NjU3MTQgNDYuOTE5MzU2NiwxMS40NDg5Nzk2IDQ1Ljk1ODg0MjIsMTEuNDQ4OTc5NiBDNDQuMjkzMDQ0MywxMS40NDg5Nzk2IDQyLjk1MDQ1NjMsMTIuMjgxMTc0IDQxLjg2ODk3LDEzLjk0NTEzODggTDQxLjg2ODk3LDExLjY5NzA2ODggTDQwLjE2OTQ5MTUsMTEuNjk3MDY4OCBMNDAuMTY5NDkxNSwyMy41NzE0Mjg2IEw0Mi4wMjM0NjgxLDIzLjU3MTQyODYgTDQyLjAyMzQ2ODEsMTcuMDk0Mzg3NSBDNDIuMDIzNDY4MSwxNS44NzQwMTQ3IDQyLjM4NTkyMDUsMTQuODg5OTk4MiA0My4wNzg1MzUyLDE0LjE0MzE4NiBDNDMuNzcwNjg2NCwxMy4zOTY3OTggNDQuNjM1NDEyLDEzLjAyMzYwNCA0NS42NTUwOTkxLDEzLjAyMzYwNCBDNDYuMzk0NjgxMiwxMy4wMjM2MDQgNDcuMDQyODAwNSwxMy4yNDUyNTg2IDQ3LjU2MTE0MTUsMTMuNjg4NTY3OSBDNDguMDc5NjM2OSwxNC4xMzE1OTQ0IDQ4LjM1Nzg4NzksMTQuODk3NjMxNyA0OC4zNTc4ODc5LDE1Ljk4NjUzODQgTDQ4LjM1Nzg4NzksMjMuNTcxNDI4NiBMNTAuMjExODY0NCwyMy41NzE0Mjg2IEw1MC4yMTE4NjQ0LDE2Ljc0NDUxODEgQzUwLjIxMTg2NDQsMTUuMjU5Mzc1NSA1MC4wODE0NjgxLDE0LjIzMzA5MTkgNDkuODMwNDA4NywxMy42NjUyNDMyIEM0OS41Nzk2NTg0LDEzLjA5NzM5NDYgNDkuMTExODM4MywxMi41ODYwOTA1IDQ4LjQzNjA2MzksMTIuMTMxMzMxIFoiIGlkPSJTaGFwZSIgZmlsbD0iIzVEQTdBMyI+PC9wYXRoPgogICAgICAgICAgICA8cGF0aCBkPSJNNTcuNzMyOTYwNywxOS4zMjIyNzI0IEM1Ny43MzI5NjA3LDIwLjIxNjkxMjkgNTcuNjY0MDE3MywyMC44NjM1NjU5IDU3LjUyOTgzNDEsMjEuMjYzMjQ2NCBDNTcuMzk1MjIzNiwyMS42NjI0OTE5IDU3LjEzMTQxNTQsMjEuOTg3NjMxMSA1Ni43Mzk0MDY4LDIyLjIzOTM4OTIgQzU2LjM0NzY4MywyMi40OTA4NTczIDU1LjY5NjI4MiwyMi42MTYxNTYzIDU0Ljg2OTM4ODcsMjIuNjE2MTU2MyBDNTQuMjg4MDcwNywyMi42MTYxNTYzIDUzLjc0NDUwMDUsMjIuNTM4NTY5NSA1Mi44ODk4MzA1LDIyLjM4MzI1MSBMNTIuODg5ODMwNSwyMy45MzQ2OTYgQzUzLjc0NDUwMDUsMjQuMTQxMjA3MyA1NC4zNzg4MDgyLDI0LjI0NDg5OCA1NS4wOTc0NDMyLDI0LjI0NDg5OCBDNTYuNDM5NTYsMjQuMjQ0ODk4IDU3LjUzNTEwNDYsMjMuODgyNDg4MSA1OC4zNDc4OTU4LDIzLjE1ODM5MzQgQzU5LjE2MDQwMjEsMjIuNDMzODYzNyA1OS41ODQ3NDU4LDIxLjE1NDkxNSA1OS41ODQ3NDU4LDE5LjMyMTExMjMgTDU5LjU4NDc0NTgsOC43NTUxMDIwNCBMNTcuNzMyOTYwNyw4Ljc1NTEwMjA0IEw1Ny43MzI5NjA3LDE5LjMyMjI3MjQgWiIgaWQ9IlNoYXBlIiBmaWxsPSIjRkZGRkZGIj48L3BhdGg+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik02OS4yNDA4MTE5LDE2LjIyNTg5MDQgQzY4LjU2Njc1NzgsMTYuOTQyNzI2NiA2Ny43MzIxNTUyLDE3LjMwMTIxNiA2Ni43Mzc0MTk4LDE3LjMwMTIxNiBDNjUuODMzODMyNiwxNy4zMDEyMTYgNjUuMDQyMDMzNywxNi45OTE5NDIyIDY0LjM2MTA1MzQsMTYuMzczNTM3MyBDNjMuNjgwMjExNiwxNS43NTQ3MDQzIDYzLjMzOTcyMTUsMTQuOTE0MTg3MiA2My4zMzk3MjE1LDEzLjg1MTI3MjQgQzYzLjMzOTcyMTUsMTIuODYxOTY3MiA2My42NDY4Mjc1LDEyLjAyMjQ0ODUgNjQuMjYwNzYyNiwxMS4zMzQ5OTkxIEM2NC44NzQxNDM1LDEwLjY0NzEyMTYgNjUuNzEwNDA4NCwxMC4zMDMzMjU2IDY2Ljc2OTAwMzEsMTAuMzAzMzI1NiBDNjcuODEzMzI5OCwxMC4zMDMzMjU2IDY4LjY1NDk5NzEsMTAuNjM3ODQ5MSA2OS4yOTM0NTA4LDExLjMwNzYwOTUgQzY5LjkzMjE4MTUsMTEuOTc3MjI3MiA3MC4yNTE0Nzc2LDEyLjc3ODA4NjYgNzAuMjUxNDc3NiwxMy43MDkzMzE3IEM3MC4yNTE0Nzc2LDE0LjY3MDEwNjIgNjkuOTE0MzEyLDE1LjUwOTA1NDIgNjkuMjQwODExOSwxNi4yMjU4OTA0IE03MC44NTQ3NDYzLDEwLjcyNDE1NDggQzY5Ljg4ODI2OTYsOS40MTIwMjM1NyA2OC40OTgwNTAzLDguNzU1MTAyMDQgNjYuNjg0MjI2OCw4Ljc1NTEwMjA0IEM2NS4yMDI1ODIxLDguNzU1MTAyMDQgNjMuOTgzNDM5LDkuMjU3MjQ0MDEgNjMuMDI3NDkwMSwxMC4yNjExIEM2Mi4wNzA5ODcsMTEuMjY1MjQxMyA2MS41OTMyMjAzLDEyLjQ3MjgwNzEgNjEuNTkzMjIwMywxMy44ODQyMjU1IEM2MS41OTMyMjAzLDE1LjI3MzgxNzggNjIuMDQ3OTkyMiwxNi40Mzk1ODYgNjIuOTU4MzY3LDE3LjM4MTY3MjkgQzYzLjg2ODg4MDMsMTguMzIzNjE3IDY0Ljk5NDI0MzIsMTguNzk0ODAzMSA2Ni4zMzQ3MzI3LDE4Ljc5NDgwMzEgQzY4LjIzMzA1NTMsMTguNzk0ODAzMSA2OS42NTUxMzUsMTcuOTAwNzkwNiA3MC42MDA4MzMyLDE2LjExMzA1MTEgQzcwLjU3OTUwMDYsMTguMTU1MTQyNyA3MC4yMjEyNzk1LDE5Ljc3MjI2ODEgNjkuNTI2NTg1NCwyMC45NjM5OTkzIEM2OC44MzEzMzcyLDIyLjE1NjAxNTkgNjcuNzk1ODc1OSwyMi43NTE0NTM2IDY2LjQxOTUwODksMjIuNzUxNDUzNiBDNjUuMDAxNTg0OSwyMi43NTE0NTM2IDYzLjk5MjMwNDUsMjIuMDY1MDAyNyA2My4zOTIzNjAzLDIwLjY5MTM4NzYgTDYxLjk0MjI5ODksMjEuMjM2NjExMSBDNjIuNzA0MTc2OCwyMy4yNDIxODMyIDY0LjE4OTU2MTYsMjQuMjQ0ODk4IDY2LjM5ODczMDQsMjQuMjQ0ODk4IEM2OC4yODk0MzQyLDI0LjI0NDg5OCA2OS43NDY5NzU5LDIzLjQ5NzgxOTEgNzAuNzcwMTA4NiwyMi4wMDM1MTg4IEM3MS43OTMyNDEzLDIwLjUwOTA3NTggNzIuMzA1MDg0NywxOC41NTQ1NzM4IDcyLjMwNTA4NDcsMTYuMTQwMDEyNyBDNzIuMzA1MDg0NywxMy44NDIxNDI2IDcxLjgyMTYzODYsMTIuMDM2ODU2NiA3MC44NTQ3NDYzLDEwLjcyNDE1NDgiIGlkPSJTaGFwZSIgZmlsbD0iI0ZGRkZGRiI+PC9wYXRoPgogICAgICAgICAgICA8cGF0aCBkPSJNNDguODQzNzkwMSwyNC42NDQ3MTU3IEM0OS41NDM5Mzk0LDI1LjkwNTU0OTIgNTAuNDE5NDA5OCwyNy4wOTIxMjI5IDUxLjQ3MDIwMTMsMjguMTY3MjQ1MyBDNTcuNzY4MDE2NSwzNC42MTA5MTgyIDY3Ljk3ODc5MjcsMzQuNjEwOTE4MiA3NC4yNzY2MDc5LDI4LjE2NzI0NTMgQzgwLjU3NDQ2NCwyMS43MjM2MDAzIDgwLjU3NDQ2NCwxMS4yNzY0MDE4IDc0LjI3NjYwNzksNC44MzI3NTY4MyBDNjcuOTc4NzkyNywtMS42MTA5MTg5NCA1Ny43NjgwMTY1LC0xLjYxMDkxODk0IDUxLjQ3MDIwMTMsNC44MzI3NTY4MyBDNDkuNjA2NzAxNiw2LjczOTM5NzA0IDQ4LjI5NDU5ODMsOC45OTY1NjQ4MyA0Ny41MzM4OTgzLDExLjM5NjgyMjkgTDQ4LjM3MDI2NzIsMTEuNzc3ODE5NiBDNDkuMDgzNDMyNSw5LjQ3ODI5OTU2IDUwLjMzMTIyMjcsNy4zMTQ3NjEyMiA1Mi4xMTM2MzM1LDUuNDkxMDg4OTIgQzU4LjA1NjA5NDgsLTAuNTg4OTk5Mjg4IDY3LjY5MDcyMTIsLTAuNTg4OTk5Mjg4IDczLjYzMzE3NTcsNS40OTEwODg5MiBDNzkuNTc1NjcxMiwxMS41NzExNDM2IDc5LjU3NTY3MTIsMjEuNDI4ODU1NyA3My42MzMxNzU3LDI3LjUwODkxNDYgQzY3LjY5MDcyMTIsMzMuNTg4OTkzIDU4LjA1NjA5NDgsMzMuNTg4OTkzIDUyLjExMzYzMzUsMjcuNTA4OTE0NiBDNTEuMTQ0MDY3NywyNi41MTY4OTg3IDUwLjMzMjY5OTgsMjUuNDI0MzI2NyA0OS42Nzk1MTYxLDI0LjI2NDAwNzMgTDQ4Ljg0Mzc5MDEsMjQuNjQ0NzE1NyBaIiBpZD0iU2hhcGUiIGZpbGw9IiM1REE3QTMiPjwvcGF0aD4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==\"","module.exports = __webpack_public_path__ + \"static/adopt-open-jdk-7072a4c16b356c87671638dba5c860e9.png\";","var $export = require('./_export');\n// 19.1.2.3 / 15.2.3.7 Object.defineProperties(O, Properties)\n$export($export.S + $export.F * !require('./_descriptors'), 'Object', { defineProperties: require('./_object-dps') });\n","// Copyright (c) 2017, 2020 IBM Corp. and others\n\n// This program and the accompanying materials are made available under\n// the terms of the Eclipse Public License 2.0 which accompanies this\n// distribution and is available at https://www.eclipse.org/legal/epl-2.0/\n// or the Apache License, Version 2.0 which accompanies this distribution and\n// is available at https://www.apache.org/licenses/LICENSE-2.0.\n\n// This Source Code may also be made available under the following\n// Secondary Licenses when the conditions for such availability set\n// forth in the Eclipse Public License, v. 2.0 are satisfied: GNU\n// General Public License, version 2 with the GNU Classpath\n// Exception [1] and GNU General Public License, version 2 with the\n// OpenJDK Assembly Exception [2].\n\n// [1] https://www.gnu.org/software/classpath/license.html\n// [2] http://openjdk.java.net/legal/assembly-exception.html\n\n// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 OR LicenseRef-GPL-2.0 WITH Assembly-exception\n\n// The project website pages cannot be redistributed\n\n/** @jsx jsx */\n\n\nimport { jsx } from \"theme-ui\"\n\nconst Button = ({children, primary, link, target, widthChanged }) => {\n  const variant = primary ? \"buttons.primary\" : \"buttons.secondary\"\n  if (target) {\n    return (\n      <a href= {link} rel=\"noopener noreferrer\" target=\"_blank\"\n        sx={{\n          variant: variant,\n          display: \"flex\",\n          alignItems: \"center\",\n          justifyContent: \"center\",\n          textDecoration: \"none\",\n          width: widthChanged ? \"15rem\" : \"12rem\",\n        }}\n      >\n        {children}\n      </a>\n    )\n  } else {\n    return (\n      <a href= {link}\n        sx={{\n          variant: variant,\n          display: \"flex\",\n          alignItems: \"center\",\n          justifyContent: \"center\",\n          textDecoration: \"none\",\n          width: widthChanged ? \"15rem\" : \"12rem\",\n        }}\n      >\n        {children}\n      </a>\n    )\n  }\n}\n\nexport default Button\n","import \"core-js/modules/es6.array.is-array\";\nimport \"core-js/modules/es6.object.assign\";\nimport \"core-js/modules/es6.array.reduce\";\nimport \"core-js/modules/es6.array.map\";\nimport \"core-js/modules/es6.regexp.split\";\n\nvar get = function get(obj, key, def, p, undef) {\n  key = key && key.split ? key.split('.') : [key];\n\n  for (p = 0; p < key.length; p++) {\n    obj = obj ? obj[key[p]] : undef;\n  }\n\n  return obj === undef ? def : obj;\n};\n\nvar defaultBreakpoints = [40, 52, 64].map(function (n) {\n  return n + 'em';\n});\nvar defaultTheme = {\n  space: [0, 4, 8, 16, 32, 64, 128, 256, 512],\n  fontSizes: [12, 14, 16, 20, 24, 32, 48, 64, 72]\n};\nvar aliases = {\n  bg: 'backgroundColor',\n  m: 'margin',\n  mt: 'marginTop',\n  mr: 'marginRight',\n  mb: 'marginBottom',\n  ml: 'marginLeft',\n  mx: 'marginX',\n  my: 'marginY',\n  p: 'padding',\n  pt: 'paddingTop',\n  pr: 'paddingRight',\n  pb: 'paddingBottom',\n  pl: 'paddingLeft',\n  px: 'paddingX',\n  py: 'paddingY'\n};\nvar multiples = {\n  marginX: ['marginLeft', 'marginRight'],\n  marginY: ['marginTop', 'marginBottom'],\n  paddingX: ['paddingLeft', 'paddingRight'],\n  paddingY: ['paddingTop', 'paddingBottom'],\n  size: ['width', 'height']\n};\nvar scales = {\n  color: 'colors',\n  backgroundColor: 'colors',\n  borderColor: 'colors',\n  margin: 'space',\n  marginTop: 'space',\n  marginRight: 'space',\n  marginBottom: 'space',\n  marginLeft: 'space',\n  marginX: 'space',\n  marginY: 'space',\n  padding: 'space',\n  paddingTop: 'space',\n  paddingRight: 'space',\n  paddingBottom: 'space',\n  paddingLeft: 'space',\n  paddingX: 'space',\n  paddingY: 'space',\n  top: 'space',\n  right: 'space',\n  bottom: 'space',\n  left: 'space',\n  gridGap: 'space',\n  gridColumnGap: 'space',\n  gridRowGap: 'space',\n  gap: 'space',\n  columnGap: 'space',\n  rowGap: 'space',\n  fontFamily: 'fonts',\n  fontSize: 'fontSizes',\n  fontWeight: 'fontWeights',\n  lineHeight: 'lineHeights',\n  letterSpacing: 'letterSpacings',\n  border: 'borders',\n  borderTop: 'borders',\n  borderRight: 'borders',\n  borderBottom: 'borders',\n  borderLeft: 'borders',\n  borderWidth: 'borderWidths',\n  borderStyle: 'borderStyles',\n  borderRadius: 'radii',\n  borderTopRightRadius: 'radii',\n  borderTopLeftRadius: 'radii',\n  borderBottomRightRadius: 'radii',\n  borderBottomLeftRadius: 'radii',\n  borderTopWidth: 'borderWidths',\n  borderTopColor: 'colors',\n  borderTopStyle: 'borderStyles',\n  borderBottomWidth: 'borderWidths',\n  borderBottomColor: 'colors',\n  borderBottomStyle: 'borderStyles',\n  borderLeftWidth: 'borderWidths',\n  borderLeftColor: 'colors',\n  borderLeftStyle: 'borderStyles',\n  borderRightWidth: 'borderWidths',\n  borderRightColor: 'colors',\n  borderRightStyle: 'borderStyles',\n  outlineColor: 'colors',\n  boxShadow: 'shadows',\n  textShadow: 'shadows',\n  zIndex: 'zIndices',\n  width: 'sizes',\n  minWidth: 'sizes',\n  maxWidth: 'sizes',\n  height: 'sizes',\n  minHeight: 'sizes',\n  maxHeight: 'sizes',\n  flexBasis: 'sizes',\n  size: 'sizes',\n  // svg\n  fill: 'colors',\n  stroke: 'colors'\n};\n\nvar positiveOrNegative = function positiveOrNegative(scale, value) {\n  if (typeof value !== 'number' || value >= 0) {\n    return get(scale, value, value);\n  }\n\n  var absolute = Math.abs(value);\n  var n = get(scale, absolute, absolute);\n\n  if (typeof n === 'string') {\n    return '-' + n;\n  }\n\n  return n * -1;\n};\n\nvar transforms = ['margin', 'marginTop', 'marginRight', 'marginBottom', 'marginLeft', 'marginX', 'marginY', 'top', 'bottom', 'left', 'right'].reduce(function (acc, curr) {\n  var obj;\n  return Object.assign({}, acc, (obj = {}, obj[curr] = positiveOrNegative, obj));\n}, {});\n\nvar responsive = function responsive(styles) {\n  return function (theme) {\n    var next = {};\n    var breakpoints = get(theme, 'breakpoints', defaultBreakpoints);\n    var mediaQueries = [null].concat(breakpoints.map(function (n) {\n      return \"@media screen and (min-width: \" + n + \")\";\n    }));\n\n    for (var key in styles) {\n      var value = typeof styles[key] === 'function' ? styles[key](theme) : styles[key];\n\n      if (value == null) {\n        continue;\n      }\n\n      if (!Array.isArray(value)) {\n        next[key] = value;\n        continue;\n      }\n\n      for (var i = 0; i < value.slice(0, mediaQueries.length).length; i++) {\n        var media = mediaQueries[i];\n\n        if (!media) {\n          next[key] = value[i];\n          continue;\n        }\n\n        next[media] = next[media] || {};\n\n        if (value[i] == null) {\n          continue;\n        }\n\n        next[media][key] = value[i];\n      }\n    }\n\n    return next;\n  };\n};\n\nvar css = function css(args) {\n  return function (props) {\n    if (props === void 0) props = {};\n    var theme = Object.assign({}, defaultTheme, props.theme || props);\n    var result = {};\n    var obj = typeof args === 'function' ? args(theme) : args;\n    var styles = responsive(obj)(theme);\n\n    for (var key in styles) {\n      var x = styles[key];\n      var val = typeof x === 'function' ? x(theme) : x;\n\n      if (key === 'variant') {\n        var variant = css(get(theme, val))(theme);\n        result = Object.assign({}, result, variant);\n        continue;\n      }\n\n      if (val && typeof val === 'object') {\n        result[key] = css(val)(theme);\n        continue;\n      }\n\n      var prop = get(aliases, key, key);\n      var scaleName = get(scales, prop);\n      var scale = get(theme, scaleName, get(theme, prop, {}));\n      var transform = get(transforms, prop, get);\n      var value = transform(scale, val, val);\n\n      if (multiples[prop]) {\n        var dirs = multiples[prop];\n\n        for (var i = 0; i < dirs.length; i++) {\n          result[dirs[i]] = value;\n        }\n      } else {\n        result[prop] = value;\n      }\n    }\n\n    return result;\n  };\n};\n\nexport { get, css };","'use strict';\n\nrequire(\"core-js/modules/es6.function.name\");\n\nrequire(\"core-js/modules/es6.regexp.match\");\n\nrequire(\"core-js/modules/es6.regexp.to-string\");\n\nrequire(\"core-js/modules/es6.date.to-string\");\n\nrequire(\"core-js/modules/es6.regexp.constructor\");\n\nrequire(\"core-js/modules/web.dom.iterable\");\n\nrequire(\"core-js/modules/es6.array.iterator\");\n\nrequire(\"core-js/modules/es6.object.to-string\");\n\nrequire(\"core-js/modules/es6.object.keys\");\n\nrequire(\"core-js/modules/es6.array.is-array\");\n\nvar isArray = Array.isArray;\nvar keyList = Object.keys;\nvar hasProp = Object.prototype.hasOwnProperty;\nvar hasElementType = typeof Element !== 'undefined';\n\nfunction equal(a, b) {\n  // fast-deep-equal index.js 2.0.1\n  if (a === b) return true;\n\n  if (a && b && typeof a == 'object' && typeof b == 'object') {\n    var arrA = isArray(a),\n        arrB = isArray(b),\n        i,\n        length,\n        key;\n\n    if (arrA && arrB) {\n      length = a.length;\n      if (length != b.length) return false;\n\n      for (i = length; i-- !== 0;) {\n        if (!equal(a[i], b[i])) return false;\n      }\n\n      return true;\n    }\n\n    if (arrA != arrB) return false;\n    var dateA = a instanceof Date,\n        dateB = b instanceof Date;\n    if (dateA != dateB) return false;\n    if (dateA && dateB) return a.getTime() == b.getTime();\n    var regexpA = a instanceof RegExp,\n        regexpB = b instanceof RegExp;\n    if (regexpA != regexpB) return false;\n    if (regexpA && regexpB) return a.toString() == b.toString();\n    var keys = keyList(a);\n    length = keys.length;\n    if (length !== keyList(b).length) return false;\n\n    for (i = length; i-- !== 0;) {\n      if (!hasProp.call(b, keys[i])) return false;\n    } // end fast-deep-equal\n    // start react-fast-compare\n    // custom handling for DOM elements\n\n\n    if (hasElementType && a instanceof Element && b instanceof Element) return a === b; // custom handling for React\n\n    for (i = length; i-- !== 0;) {\n      key = keys[i];\n\n      if (key === '_owner' && a.$$typeof) {\n        // React-specific: avoid traversing React elements' _owner.\n        //  _owner contains circular references\n        // and is not needed when comparing the actual elements (and not their owners)\n        // .$$typeof and ._store on just reasonable markers of a react element\n        continue;\n      } else {\n        // all other properties should be traversed as usual\n        if (!equal(a[key], b[key])) return false;\n      }\n    } // end react-fast-compare\n    // fast-deep-equal index.js 2.0.1\n\n\n    return true;\n  }\n\n  return a !== a && b !== b;\n} // end fast-deep-equal\n\n\nmodule.exports = function exportedEqual(a, b) {\n  try {\n    return equal(a, b);\n  } catch (error) {\n    if (error.message && error.message.match(/stack|recursion/i) || error.number === -2146828260) {\n      // warn on circular references, don't crash\n      // browsers give this different errors name and messages:\n      // chrome/safari: \"RangeError\", \"Maximum call stack size exceeded\"\n      // firefox: \"InternalError\", too much recursion\"\n      // edge: \"Error\", \"Out of stack space\"\n      console.warn('Warning: react-fast-compare does not handle circular references.', error.name, error.message);\n      return false;\n    } // some other error. we should definitely know about these\n\n\n    throw error;\n  }\n};","module.exports = \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNTBweCIgaGVpZ2h0PSI3NXB4IiB2aWV3Qm94PSIwIDAgMTU3IDIzMSIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KICAgIDwhLS0gR2VuZXJhdG9yOiBTa2V0Y2ggNjEuMiAoODk2NTMpIC0gaHR0cHM6Ly9za2V0Y2guY29tIC0tPgogICAgPHRpdGxlPmVjbGlwc2VfaW5jdWJhdGlvbl92ZXJ0aWNhbF9zdmc8L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0iZWNsaXBzZV9pbmN1YmF0aW9uX3ZlcnRpY2FsX3N2ZyIgZmlsbC1ydWxlPSJub256ZXJvIj4KICAgICAgICAgICAgPGcgaWQ9Ikdyb3VwIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNy4wMDAwMDAsIDIxNC4wMDAwMDApIiBmaWxsPSIjRkZGRkZGIj4KICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJQYXRoIiBwb2ludHM9IjAuNzUgMC4zNCAxLjkyIDAuMzQgMS45MiAxNi4wMyAwLjc1IDE2LjAzIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSI1LjYyIDAuMzQgNi43MiAwLjM0IDE3LjU1IDEzLjk5IDE3LjU1IDAuMzQgMTguNjcgMC4zNCAxOC42NyAxNi4wMyAxNy44IDE2LjAzIDYuNzUgMi4wOSA2Ljc1IDE2LjAzIDUuNjMgMTYuMDMgNS42MyAwLjM0Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMjEuODYsOC4yMyBMMjEuODYsOC4xOSBDMjEuODYsMy43NSAyNS4xOCwwLjA4IDI5LjcxLDAuMDggQzMyLjUxLDAuMDggMzQuMTksMS4xMSAzNS44MSwyLjU5IEwzNC45OCwzLjQ0IEMzMy42MSwyLjEyIDMyLjA0LDEuMTMgMjkuNjksMS4xMyBDMjUuOTIsMS4xMyAyMy4wOCw0LjIgMjMuMDgsOC4xNSBMMjMuMDgsOC4xOSBDMjMuMDgsMTIuMTYgMjUuOTcsMTUuMjUgMjkuNzEsMTUuMjUgQzMxLjk3LDE1LjI1IDMzLjUyLDE0LjM3IDM1LjExLDEyLjgxIEwzNS44OSwxMy41NyBDMzQuMjMsMTUuMjEgMzIuNDQsMTYuMyAyOS42NiwxNi4zIEMyNS4xOCwxNi4zIDIxLjg2LDEyLjc0IDIxLjg2LDguMjMgWiIgaWQ9IlBhdGgiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0zOC40LDkuNTEgTDM4LjQsMC4zNCBMMzkuNTcsMC4zNCBMMzkuNTcsOS40IEMzOS41NywxMy4xIDQxLjU3LDE1LjIzIDQ0Ljg4LDE1LjIzIEM0OC4wNiwxNS4yMyA1MC4xLDEzLjMgNTAuMSw5LjUxIEw1MC4xLDAuMzQgTDUxLjI3LDAuMzQgTDUxLjI3LDkuMzcgQzUxLjI3LDEzLjg4IDQ4LjY1LDE2LjI3MDAzMTQgNDQuODQsMTYuMjcwMDMxNCBDNDEuMDcsMTYuMjggMzguNCwxMy45IDM4LjQsOS41MSBaIiBpZD0iUGF0aCI+PC9wYXRoPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTU0LjAyLDAuMzQgTDYwLjUsMC4zNCBDNjIuMjcsMC4zNCA2My43MSwwLjg2IDY0LjU4LDEuNzMgQzY1LjIzLDIuMzggNjUuNTksMy4yMSA2NS41OSw0LjIgTDY1LjU5LDQuMjQgQzY1LjU5LDYuMzcgNjQuMiw3LjQ1IDYyLjkyLDcuOTYgQzY0LjgsOC40NSA2Ni40Niw5LjUzIDY2LjQ2LDExLjcgTDY2LjQ2LDExLjc0IEM2Ni40NiwxNC4zNiA2NC4yMiwxNi4wMiA2MC44MywxNi4wMiBMNTQuMDIsMTYuMDIgTDU0LjAyLDAuMzQgTDU0LjAyLDAuMzQgWiBNNjQuNCw0LjMxIEM2NC40LDIuNTggNjIuOTksMS40MiA2MC40OCwxLjQyIEw1NS4xOSwxLjQyIEw1NS4xOSw3LjU4IEw2MC4zNyw3LjU4IEM2Mi43Miw3LjU4IDY0LjQsNi40NCA2NC40LDQuMzUgTDY0LjQsNC4zMSBaIE02MC41LDguNjYgTDU1LjE5LDguNjYgTDU1LjE5LDE0Ljk2IEw2MC44OCwxNC45NiBDNjMuNTcsMTQuOTYgNjUuMjcwMDQ0NCwxMy43MyA2NS4yNzAwNDQ0LDExLjc1IEw2NS4yNzAwNDQ0LDExLjcxIEM2NS4yOCw5Ljc4IDYzLjYsOC42NiA2MC41LDguNjYgWiIgaWQ9IlNoYXBlIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNzYuMjgsMC4yMyBMNzcuNCwwLjIzIEw4NC43MSwxNi4wMyBMODMuNDMsMTYuMDMgTDgxLjQ0LDExLjY0IEw3Mi4xOCwxMS42NCBMNzAuMTksMTYuMDMgTDY4Ljk4LDE2LjAzIEw3Ni4yOCwwLjIzIFogTTgwLjk0LDEwLjU5IEw3Ni44MiwxLjUxIEw3Mi42NywxMC41OSBMODAuOTQsMTAuNTkgWiIgaWQ9IlNoYXBlIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSI5MS4wNSAxLjQyIDg1LjU4IDEuNDIgODUuNTggMC4zNCA5Ny42OCAwLjM0IDk3LjY4IDEuNDIgOTIuMjEgMS40MiA5Mi4yMSAxNi4wMyA5MS4wNCAxNi4wMyA5MS4wNCAxLjQyIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSIxMDEuMjkgMC4zNCAxMDIuNDYgMC4zNCAxMDIuNDYgMTYuMDMgMTAxLjI5IDE2LjAzIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTA1LjkxLDguMjMgTDEwNS45MSw4LjE5IEMxMDUuOTEsMy45MSAxMDkuMDcsMC4wOCAxMTMuODIsMC4wOCBDMTE4LjU3LDAuMDggMTIxLjY5LDMuODcgMTIxLjY5LDguMTUgTDEyMS42OSw4LjE5IEMxMjEuNjksMTIuNDcgMTE4LjUzLDE2LjMgMTEzLjc4LDE2LjMgQzEwOS4wMywxNi4zIDEwNS45MSwxMi41MSAxMDUuOTEsOC4yMyBaIE0xMjAuNDgsOC4yMyBMMTIwLjQ4LDguMTkgQzEyMC40OCw0LjMxIDExNy42NiwxLjEzIDExMy43OCwxLjEzIEMxMDkuOSwxLjEzIDEwNy4xMiw0LjI3IDEwNy4xMiw4LjE1IEwxMDcuMTIsOC4xOSBDMTA3LjEyLDEyLjA3IDEwOS45NCwxNS4yNSAxMTMuODIsMTUuMjUgQzExNy43LDE1LjI1IDEyMC40OCwxMi4xMSAxMjAuNDgsOC4yMyBaIiBpZD0iU2hhcGUiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJQYXRoIiBwb2ludHM9IjEyNC44OSAwLjM0IDEyNS45OSAwLjM0IDEzNi44MiAxMy45OSAxMzYuODIgMC4zNCAxMzcuOTQgMC4zNCAxMzcuOTQgMTYuMDMgMTM3LjA3IDE2LjAzIDEyNi4wMiAyLjA5IDEyNi4wMiAxNi4wMyAxMjQuOSAxNi4wMyAxMjQuOSAwLjM0Ij48L3BvbHlnb24+CiAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgPHBhdGggZD0iTTU2LjY2LDE2Ni4yMyBDNTcuNTEsMTYzLjQ4IDYwLjQzLDE2MS40MyA2My45NCwxNjEuNDMgQzY1LjE0LDE2MS40MyA2Ni4yNSwxNjEuNjkgNjcuMjUsMTYyLjExIEM2OS40NiwxNjAuNjQgNzIuMTksMTU5Ljc2IDc1LjE3LDE1OS43NiBMNzUuMTksMTU5Ljc2IEM3Ni4xMSwxNTcuOSA3OC40OCwxNTYuNTcgODEuMywxNTYuNTcgQzgyLjA0LDE1Ni41NyA4Mi43NSwxNTYuNjcgODMuNDIsMTU2Ljg0IEM4My4zMywxNTQuNTYgODMuNjksMTUyLjE4IDg0LjU1LDE0OS42OCBDODUuNTUsMTQ2Ljc5IDg3LDE0NC4wMyA4OC41MiwxNDEuMjggQzg4LjE3LDEzNy4xNiA4Ny45LDEzMy41IDgyLjc0LDEzMiBDODAuODIsMTMxLjQ0IDc4LjgyLDEzMS4yNyA3Ni44NiwxMzEuMDQgTDc2Ljg1LDEzMS4wNCBMNzYuODUsMTMxLjAzIEM3Ni4wMSwxMzAuOTMgNzUuMTcsMTMwLjgxIDc0LjM1LDEzMC42NSBDNjAuMTgsMTQ1LjQxIDQwLjIsMTA5Ljk3IDQwLjIsMTA5Ljk3IEM4NC4zLDEwMy4xMyA3Ni4wMSwxMjUuNjEgNzYuMDEsMTI1LjYxIEM3Mi44MSwxMjQuMDUgNzEuOTMsMTIyLjA4IDY5LjQ5LDExOS43MyBDNjMuOTIsMTE0LjM4IDUwLjYyLDExMy40NCA1MC42MiwxMTMuNDQgQzY2LjU0LDExNy41MSA2OC43MSwxMjUuMjIgNzQuOTcsMTI3LjY5IEM3Ni4zOSwxMjguMDEgNzcuOSwxMjguMTMgNzkuMzUsMTI4LjI5IEM4Mi4xNSwxMjguNTkgODQuODksMTI5LjExIDg3LjIyLDEzMC42MSBDODkuNjMsMTMyLjE2IDkwLjcxLDEzNC4wOSA5MS4yNiwxMzYuMjYgQzkzLDEzMi45NCA5NC41LDEyOS41NiA5NS4wNywxMjUuOTIgQzk1LjgsMTIxLjI3IDk1LjEzLDExNS44OCA5MS44MywxMTIuMDcgQzg4Ljc4LDEwOC41NSA4NC42NiwxMDUuODkgODEuNCwxMDIuNTIgQzc3LjkyLDk4LjkxIDc1LjYxLDk0LjQ2IDc1LjUyLDg5LjcxIEM3My43Niw4NS44NiA3MC45LDgxLjM5IDY4LjI4LDc5LjY1IEM1Ni45LDkwLjM0IDQxLjksNjIuNTggNDEuOSw2Mi41OCBDNzYuODgsNTcuNyA3MS4xLDc1LjY3IDcxLjEsNzUuNjcgQzYyLjcsNjYuMjggNTIuMzEsNjcuMTIgNTIuMzEsNjcuMTIgQzYwLjcxLDY5Ljc5IDY3LjM0LDc1LjE1IDcxLjIsNzguODMgTDcxLjczLDc5LjM2IEM3My4zLDgxIDc0LjksODIuNzUgNzYuMjQsODQuNjMgQzc3LjYsNzkuNDggODAuNzcsNzIuMjcgODMuMjYsNjcuOTcgQzgzLjI2LDY3Ljk3IDkxLjY2LDUzLjE1IDEwNS44LDQzLjkgQzEwNS44LDQzLjkgOTUuMDIsNDUuMTQgODMuNDEsNjIuODkgQzgzLjQxLDYyLjg5IDY3Ljk5LDM4LjcgMTE3LjgzLDM0LjIzIEMxMTcuODMsMzQuMjMgMTE0LjQsNzguMTcgODcuNDUsNjkuNjMgQzgyLjc3LDc2LjY3IDc5LjcsODQuNzQgODAuMzMsOTAuNDIgQzgwLjk1LDk1Ljk2IDg0LjgzLDk5Ljg2IDg5LjExLDEwMy41IEM5MC4yNSw5Ny42NiA5NC40Niw5Mi42MyAxMDAuNjUsODkuODkgQzEwNS42LDg3LjkyIDExMi45LDg2LjAzIDExOS43Miw4NS42MiBDMTE5LjcyLDg1LjYyIDEwNi4zOSw4Mi41OCA5Ni4yNSw4OS41MSBDOTYuMjUsODkuNTEgOTYuNDIsNjkuMjIgMTMyLjM0LDgzLjk1IEMxMzIuMzQsODMuOTUgMTA2LjM0LDExMC4yOSA5Ny45OSw5NC41OSBDOTQuMDMsOTcuMiA5MS41MywxMDEuNTggOTIuMTgsMTA2LjExIEM5NC41LDEwOC4xNCA5Ni42NiwxMTAuMzMgOTcuOTcsMTEzLjAzIEM5OS44LDExNi44MiAxMDAuNDUsMTIxLjI0IDk5Ljk1LDEyNS4zNSBDOTguOTksMTMzLjI1IDk0LjA1LDEzOS45NyA5MC42NywxNDcuMTQgQzg5LjI5LDE1MC4wNiA4Ny45NywxNTMuMjcgODcuOTUsMTU2LjUxIEM4OS42NCwxNTYuMDQgOTEuNDcsMTU1Ljc4IDkzLjM5LDE1NS43OCBDMTAwLjYyLDE1NS43OCAxMDYuNzEsMTU5LjM3IDEwOC42OCwxNjQuMyBDMTExLjYxLDE2NC42MSAxMTMuOTIsMTY2LjMzIDExNC4zNCwxNjguNTEgQzExNi40NSwxNjkuODEgMTE4LjEyLDE3MS42MyAxMTkuMTMsMTczLjc1IEw1MC41NSwxNzMuNzUgQzUyLjAyLDE3MC42MiA1NC4xNCwxNjcuMTYgNTYuNjYsMTY2LjIzIiBpZD0iUGF0aCIgZmlsbD0iI0Y3OEQyQyI+PC9wYXRoPgogICAgICAgICAgICA8ZyBpZD0iR3JvdXAiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE3LjAwMDAwMCwgMTgyLjAwMDAwMCkiIGZpbGw9IiNGRkZGRkYiPgogICAgICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlBhdGgiIHBvaW50cz0iMC41NCAxLjM5IDE4LjU0IDEuMzkgMTguNTQgNS4yMSA0LjggNS4yMSA0LjggMTEuNTIgMTYuOTcgMTEuNTIgMTYuOTcgMTUuMzMgNC44IDE1LjMzIDQuOCAyMS44NSAxOC43MSAyMS44NSAxOC43MSAyNS42NyAwLjU0IDI1LjY3Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMjEuNTUsMTMuNiBMMjEuNTUsMTMuNTMgQzIxLjU1LDYuNjMgMjYuNzIsMC45NyAzNC4wNywwLjk3IEMzOC41NCwwLjk3IDQxLjI1LDIuNTMgNDMuNTcsNC43NSBMNDAuODMsNy45MSBDMzguODksNi4xMSAzNi44MSw0Ljg5IDM0LjAzLDQuODkgQzI5LjQyLDQuODkgMjYuMDIsOC43MSAyNi4wMiwxMy40NiBMMjYuMDIsMTMuNTMgQzI2LjAyLDE4LjI4IDI5LjM4LDIyLjEzIDM0LjAzLDIyLjEzIEMzNy4wMSwyMi4xMyAzOC45MiwyMC45NSA0MSwxOS4wMSBMNDMuNzQsMjEuNzggQzQxLjIxLDI0LjQyIDM4LjQzLDI2LjA4MDAxMzYgMzMuODksMjYuMDgwMDEzNiBDMjYuODMsMjYuMDkgMjEuNTUsMjAuNTcgMjEuNTUsMTMuNiBaIiBpZD0iUGF0aCI+PC9wYXRoPgogICAgICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlBhdGgiIHBvaW50cz0iNDcuMjIgMS4zOSA1MS40OSAxLjM5IDUxLjQ5IDIxLjc4IDY0LjI1IDIxLjc4IDY0LjI1IDI1LjY2IDQ3LjIyIDI1LjY2Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSI2Ny45MyAxLjM5IDcyLjIgMS4zOSA3Mi4yIDI1LjY3IDY3LjkzIDI1LjY3Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNzcuNjcsMS4zOSBMODcuMjQsMS4zOSBDOTIuOTMsMS4zOSA5Ni40Nyw0LjYyIDk2LjQ3LDkuNTEgTDk2LjQ3LDkuNTggQzk2LjQ3LDE1LjAzIDkyLjEsMTcuODcgODYuNzYsMTcuODcgTDgxLjk0LDE3Ljg3IEw4MS45NCwyNS42NyBMNzcuNjcsMjUuNjcgTDc3LjY3LDEuMzkgWiBNODYuOSwxNC4wMiBDOTAuMTMsMTQuMDIgOTIuMTQsMTIuMjIgOTIuMTQsOS42OCBMOTIuMTQsOS42MSBDOTIuMTQsNi43NyA5MC4wOSw1LjI4IDg2LjksNS4yOCBMODEuOTQsNS4yOCBMODEuOTQsMTQuMDIgTDg2LjksMTQuMDIgWiIgaWQ9IlNoYXBlIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNOTguMjEsMjIuMTMgTDEwMC43OCwxOS4wOCBDMTAzLjEsMjEuMDkgMTA1LjQ2LDIyLjI0IDEwOC40NSwyMi4yNCBDMTExLjA5LDIyLjI0IDExMi43NSwyMC45OSAxMTIuNzUsMTkuMTkgTDExMi43NSwxOS4xMiBDMTEyLjc1LDE3LjM5IDExMS43OCwxNi40NSAxMDcuMjcsMTUuNDEgQzEwMi4xLDE0LjE2IDk5LjE5LDEyLjY0IDk5LjE5LDguMTYgTDk5LjE5LDguMDkgQzk5LjE5LDMuOTMgMTAyLjY2LDEuMDUgMTA3LjQ4LDEuMDUgQzExMS4wMiwxLjA1IDExMy44MywyLjEzIDExNi4yOSw0LjEgTDExNCw3LjMzIEMxMTEuODEsNS43IDEwOS42Myw0LjgzIDEwNy40MSw0LjgzIEMxMDQuOTEsNC44MyAxMDMuNDYsNi4xMSAxMDMuNDYsNy43MSBMMTAzLjQ2LDcuNzggQzEwMy40Niw5LjY1IDEwNC41NywxMC40OSAxMDkuMjUsMTEuNiBDMTE0LjM4LDEyLjg1IDExNy4wMiwxNC42OSAxMTcuMDIsMTguNzEgTDExNy4wMiwxOC43OCBDMTE3LjAyLDIzLjMyIDExMy40NSwyNi4wMyAxMDguMzUsMjYuMDMgQzEwNC42MiwyNi4wMiAxMDEuMTIsMjQuNzMgOTguMjEsMjIuMTMgWiIgaWQ9IlBhdGgiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJQYXRoIiBwb2ludHM9IjEyMC45OSAxLjM5IDEzOC45OSAxLjM5IDEzOC45OSA1LjIxIDEyNS4yNiA1LjIxIDEyNS4yNiAxMS41MiAxMzcuNDMgMTEuNTIgMTM3LjQzIDE1LjMzIDEyNS4yNiAxNS4zMyAxMjUuMjYgMjEuODUgMTM5LjE3IDIxLjg1IDEzOS4xNyAyNS42NyAxMjEgMjUuNjcgMTIxIDEuMzkiPjwvcG9seWdvbj4KICAgICAgICAgICAgPC9nPgogICAgICAgICAgICA8cGF0aCBkPSJNMjEuNjYsMzkuOTkgQzQxLjI2LDkuNDIgODAuNSwtMS4yNSAxMTMuMjMsMTMuNDQgQzExMi41MSwxMi45NCAxMTEuNzgsMTIuNDMgMTExLjAzLDExLjk1IEM3Ny41MiwtOS41NCAzMi45OCwwLjExIDExLjU2LDMzLjUyIEMtOS44Nyw2Ni45MiAtMC4wNiwxMTEuNDMgMzMuNDUsMTMyLjkyIEMzNC4yLDEzMy40IDM0Ljk2LDEzMy44NSAzNS43MiwxMzQuMyBDOC43MywxMTAuNjggMi4wNiw3MC41NiAyMS42NiwzOS45OSIgaWQ9IlBhdGgiIGZpbGw9IiNGNzhEMkMiPjwvcGF0aD4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==\"","require(\"core-js/modules/es6.array.reduce\");\n\nrequire(\"core-js/modules/web.dom.iterable\");\n\nrequire(\"core-js/modules/es6.array.iterator\");\n\nrequire(\"core-js/modules/es6.object.to-string\");\n\nrequire(\"core-js/modules/es6.object.keys\");\n\nrequire(\"core-js/modules/es6.array.map\");\n\nexports.__esModule = true;\nvar ATTRIBUTE_NAMES = exports.ATTRIBUTE_NAMES = {\n  BODY: \"bodyAttributes\",\n  HTML: \"htmlAttributes\",\n  TITLE: \"titleAttributes\"\n};\nvar TAG_NAMES = exports.TAG_NAMES = {\n  BASE: \"base\",\n  BODY: \"body\",\n  HEAD: \"head\",\n  HTML: \"html\",\n  LINK: \"link\",\n  META: \"meta\",\n  NOSCRIPT: \"noscript\",\n  SCRIPT: \"script\",\n  STYLE: \"style\",\n  TITLE: \"title\"\n};\nvar VALID_TAG_NAMES = exports.VALID_TAG_NAMES = Object.keys(TAG_NAMES).map(function (name) {\n  return TAG_NAMES[name];\n});\nvar TAG_PROPERTIES = exports.TAG_PROPERTIES = {\n  CHARSET: \"charset\",\n  CSS_TEXT: \"cssText\",\n  HREF: \"href\",\n  HTTPEQUIV: \"http-equiv\",\n  INNER_HTML: \"innerHTML\",\n  ITEM_PROP: \"itemprop\",\n  NAME: \"name\",\n  PROPERTY: \"property\",\n  REL: \"rel\",\n  SRC: \"src\"\n};\nvar REACT_TAG_MAP = exports.REACT_TAG_MAP = {\n  accesskey: \"accessKey\",\n  charset: \"charSet\",\n  \"class\": \"className\",\n  contenteditable: \"contentEditable\",\n  contextmenu: \"contextMenu\",\n  \"http-equiv\": \"httpEquiv\",\n  itemprop: \"itemProp\",\n  tabindex: \"tabIndex\"\n};\nvar HELMET_PROPS = exports.HELMET_PROPS = {\n  DEFAULT_TITLE: \"defaultTitle\",\n  DEFER: \"defer\",\n  ENCODE_SPECIAL_CHARACTERS: \"encodeSpecialCharacters\",\n  ON_CHANGE_CLIENT_STATE: \"onChangeClientState\",\n  TITLE_TEMPLATE: \"titleTemplate\"\n};\nvar HTML_TAG_MAP = exports.HTML_TAG_MAP = Object.keys(REACT_TAG_MAP).reduce(function (obj, key) {\n  obj[REACT_TAG_MAP[key]] = key;\n  return obj;\n}, {});\nvar SELF_CLOSING_TAGS = exports.SELF_CLOSING_TAGS = [TAG_NAMES.NOSCRIPT, TAG_NAMES.SCRIPT, TAG_NAMES.STYLE];\nvar HELMET_ATTRIBUTE = exports.HELMET_ATTRIBUTE = \"data-react-helmet\";","'use strict';\n\nfunction checkDCE() {\n  /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\n  if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' || typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function') {\n    return;\n  }\n\n  if (process.env.NODE_ENV !== 'production') {\n    // This branch is unreachable because this function is only called\n    // in production, but the condition is true only in development.\n    // Therefore if the branch is still here, dead code elimination wasn't\n    // properly applied.\n    // Don't change the message. React DevTools relies on it. Also make sure\n    // this message doesn't occur elsewhere in this function, or it will cause\n    // a false positive.\n    throw new Error('^_^');\n  }\n\n  try {\n    // Verify that the code above has been dead code eliminated (DCE'd).\n    __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);\n  } catch (err) {\n    // DevTools shouldn't crash React, no matter what.\n    // We should still report in case we break this code.\n    console.error(err);\n  }\n}\n\nif (process.env.NODE_ENV === 'production') {\n  // DCE check should happen before ReactDOM bundle executes so that\n  // DevTools can report bad minification during injection.\n  checkDCE();\n  module.exports = require('./cjs/react-dom.production.min.js');\n} else {\n  module.exports = require('./cjs/react-dom.development.js');\n}","// https://github.com/tc39/proposal-object-getownpropertydescriptors\nvar $export = require('./_export');\nvar ownKeys = require('./_own-keys');\nvar toIObject = require('./_to-iobject');\nvar gOPD = require('./_object-gopd');\nvar createProperty = require('./_create-property');\n\n$export($export.S, 'Object', {\n  getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object) {\n    var O = toIObject(object);\n    var getDesc = gOPD.f;\n    var keys = ownKeys(O);\n    var result = {};\n    var i = 0;\n    var key, desc;\n    while (keys.length > i) {\n      desc = getDesc(O, key = keys[i++]);\n      if (desc !== undefined) createProperty(result, key, desc);\n    }\n    return result;\n  }\n});\n","// all object keys, includes non-enumerable and symbols\nvar gOPN = require('./_object-gopn');\nvar gOPS = require('./_object-gops');\nvar anObject = require('./_an-object');\nvar Reflect = require('./_global').Reflect;\nmodule.exports = Reflect && Reflect.ownKeys || function ownKeys(it) {\n  var keys = gOPN.f(anObject(it));\n  var getSymbols = gOPS.f;\n  return getSymbols ? keys.concat(getSymbols(it)) : keys;\n};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react.production.min.js');\n} else {\n  module.exports = require('./cjs/react.development.js');\n}","'use strict';\n// B.2.3.10 String.prototype.link(url)\nrequire('./_string-html')('link', function (createHTML) {\n  return function link(url) {\n    return createHTML(this, 'a', 'href', url);\n  };\n});\n","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIyNXB4IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgogPCEtLSBDcmVhdGVkIHdpdGggTWV0aG9kIERyYXcgLSBodHRwOi8vZ2l0aHViLmNvbS9kdW9waXhlbC9NZXRob2QtRHJhdy8gLS0+CgogPGc+CiAgPHRpdGxlPmJhY2tncm91bmQ8L3RpdGxlPgogIDxyZWN0IGZpbGw9Im5vbmUiIGlkPSJjYW52YXNfYmFja2dyb3VuZCIgaGVpZ2h0PSIyNiIgd2lkdGg9IjI2IiB5PSItMSIgeD0iLTEiLz4KICA8ZyBkaXNwbGF5PSJub25lIiBvdmVyZmxvdz0idmlzaWJsZSIgeT0iMCIgeD0iMCIgaGVpZ2h0PSIxMDAlIiB3aWR0aD0iMTAwJSIgaWQ9ImNhbnZhc0dyaWQiPgogICA8cmVjdCBmaWxsPSJ1cmwoI2dyaWRwYXR0ZXJuKSIgc3Ryb2tlLXdpZHRoPSIwIiB5PSIxIiB4PSIxIiBoZWlnaHQ9IjIyIiB3aWR0aD0iMjIiLz4KICA8L2c+CiA8L2c+CiA8Zz4KICA8dGl0bGU+TGF5ZXIgMTwvdGl0bGU+CiAgPGVsbGlwc2Ugcnk9IjExIiByeD0iMTEiIGlkPSJzdmdfMSIgY3k9IjEyIiBjeD0iMTIiIHN0cm9rZT0iI0ZGRiIgZmlsbD0iI0ZGRkZGRiIvPgogIDxzdHlsZSB0cmFuc2Zvcm09Im1hdHJpeCgwLjA2NTE4MjQ5NTU3MzI1MzYyLDAsMCwwLjA2NTE4MjQ5NTU3MzI1MzYyLDAsMCkgIiB0eXBlPSJ0ZXh0L2NzcyI+LnN0MHtmaWxsOiM0MzQzNDM7fTwvc3R5bGU+CiAgPGcgc3Ryb2tlPSJudWxsIiBpZD0ic3ZnXzE5Ij4KICAgPGcgc3Ryb2tlPSJudWxsIiB0cmFuc2Zvcm09Im1hdHJpeCgwLjEzMDE1NTgwODUxODA5NDg2LDAsMCwwLjEzMDE1NTgwODUxODA5NDg2LC02Ljg0OTAwNjQ1MDQwNTQ5OSwtNi44MzE1MDczOTEwMjE5MjQpICIgaWQ9InN2Z182Ij4KICAgIDxnIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z183Ij4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfOCIgZD0ibTExMC4yOTgyOTIsMTYxLjI5MzAxMWMwLDcuMSAtNS44LDEyLjkgLTEyLjksMTIuOXMtMTIuOSwtNS44IC0xMi45LC0xMi45YzAsLTcuMSA1LjgsLTEyLjkgMTIuOSwtMTIuOWwxMi45LDBsMCwxMi45eiIgY2xhc3M9InN0MCIvPgogICAgIDxwYXRoIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z185IiBkPSJtMTE2Ljc5ODI5MiwxNjEuMjkzMDExYzAsLTcuMSA1LjgsLTEyLjkgMTIuOSwtMTIuOXMxMi45LDUuOCAxMi45LDEyLjlsMCwzMi4zYzAsNy4xIC01LjgsMTIuOSAtMTIuOSwxMi45cy0xMi45LC01LjggLTEyLjksLTEyLjljMCwwIDAsLTMyLjMgMCwtMzIuM3oiIGNsYXNzPSJzdDAiLz4KICAgIDwvZz4KICAgIDxnIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z18xMCI+CiAgICAgPHBhdGggc3Ryb2tlPSJudWxsIiBpZD0ic3ZnXzExIiBkPSJtMTI5LjY5ODI5MiwxMDkuNDkzMDExYy03LjEsMCAtMTIuOSwtNS44IC0xMi45LC0xMi45czUuOCwtMTIuOSAxMi45LC0xMi45czEyLjksNS44IDEyLjksMTIuOWwwLDEyLjlsLTEyLjksMHoiIGNsYXNzPSJzdDAiLz4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTIiIGQ9Im0xMjkuNjk4MjkyLDExNS45OTMwMTFjNy4xLDAgMTIuOSw1LjggMTIuOSwxMi45cy01LjgsMTIuOSAtMTIuOSwxMi45bC0zMi4zLDBjLTcuMSwwIC0xMi45LC01LjggLTEyLjksLTEyLjlzNS44LC0xMi45IDEyLjksLTEyLjljMCwwIDMyLjMsMCAzMi4zLDB6IiBjbGFzcz0ic3QwIi8+CiAgICA8L2c+CiAgICA8ZyBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTMiPgogICAgIDxwYXRoIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z18xNCIgZD0ibTE4MS40OTgyOTIsMTI4Ljg5MzAxMWMwLC03LjEgNS44LC0xMi45IDEyLjksLTEyLjljNy4xLDAgMTIuOSw1LjggMTIuOSwxMi45cy01LjgsMTIuOSAtMTIuOSwxMi45bC0xMi45LDBsMCwtMTIuOXoiIGNsYXNzPSJzdDAiLz4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTUiIGQ9Im0xNzQuOTk4MjkyLDEyOC44OTMwMTFjMCw3LjEgLTUuOCwxMi45IC0xMi45LDEyLjljLTcuMSwwIC0xMi45LC01LjggLTEyLjksLTEyLjlsMCwtMzIuM2MwLC03LjEgNS44LC0xMi45IDEyLjksLTEyLjljNy4xLDAgMTIuOSw1LjggMTIuOSwxMi45bDAsMzIuM3oiIGNsYXNzPSJzdDAiLz4KICAgIDwvZz4KICAgIDxnIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z18xNiI+CiAgICAgPHBhdGggc3Ryb2tlPSJudWxsIiBpZD0ic3ZnXzE3IiBkPSJtMTYyLjA5ODI5MiwxODAuNjkzMDExYzcuMSwwIDEyLjksNS44IDEyLjksMTIuOWMwLDcuMSAtNS44LDEyLjkgLTEyLjksMTIuOWMtNy4xLDAgLTEyLjksLTUuOCAtMTIuOSwtMTIuOWwwLC0xMi45bDEyLjksMHoiIGNsYXNzPSJzdDAiLz4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTgiIGQ9Im0xNjIuMDk4MjkyLDE3NC4xOTMwMTFjLTcuMSwwIC0xMi45LC01LjggLTEyLjksLTEyLjljMCwtNy4xIDUuOCwtMTIuOSAxMi45LC0xMi45bDMyLjMsMGM3LjEsMCAxMi45LDUuOCAxMi45LDEyLjljMCw3LjEgLTUuOCwxMi45IC0xMi45LDEyLjlsLTMyLjMsMHoiIGNsYXNzPSJzdDAiLz4KICAgIDwvZz4KICAgPC9nPgogIDwvZz4KIDwvZz4KPC9zdmc+\"","require(\"core-js/modules/es6.array.some\");\n\nrequire(\"core-js/modules/es6.regexp.split\");\n\nrequire(\"core-js/modules/es6.date.now\");\n\nrequire(\"core-js/modules/es6.array.for-each\");\n\nrequire(\"core-js/modules/es6.array.is-array\");\n\nrequire(\"core-js/modules/es6.array.index-of\");\n\nrequire(\"core-js/modules/web.dom.iterable\");\n\nrequire(\"core-js/modules/es6.array.iterator\");\n\nrequire(\"core-js/modules/es6.object.to-string\");\n\nrequire(\"core-js/modules/es6.object.keys\");\n\nrequire(\"core-js/modules/es6.array.filter\");\n\nrequire(\"core-js/modules/es6.array.map\");\n\nrequire(\"core-js/modules/es6.array.reduce\");\n\nrequire(\"core-js/modules/es6.regexp.replace\");\n\nrequire(\"core-js/modules/es6.object.assign\");\n\nrequire(\"core-js/modules/es7.symbol.async-iterator\");\n\nrequire(\"core-js/modules/es6.symbol\");\n\nexports.__esModule = true;\nexports.warn = exports.requestAnimationFrame = exports.reducePropsToState = exports.mapStateOnServer = exports.handleClientStateChange = exports.convertReactPropstoHtmlAttributes = undefined;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n  return typeof obj;\n} : function (obj) {\n  return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n};\n\nvar _extends = Object.assign || function (target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments[i];\n\n    for (var key in source) {\n      if (Object.prototype.hasOwnProperty.call(source, key)) {\n        target[key] = source[key];\n      }\n    }\n  }\n\n  return target;\n};\n\nvar _react = require(\"react\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _objectAssign = require(\"object-assign\");\n\nvar _objectAssign2 = _interopRequireDefault(_objectAssign);\n\nvar _HelmetConstants = require(\"./HelmetConstants.js\");\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    \"default\": obj\n  };\n}\n\nvar encodeSpecialCharacters = function encodeSpecialCharacters(str) {\n  var encode = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n  if (encode === false) {\n    return String(str);\n  }\n\n  return String(str).replace(/&/g, \"&amp;\").replace(/</g, \"&lt;\").replace(/>/g, \"&gt;\").replace(/\"/g, \"&quot;\").replace(/'/g, \"&#x27;\");\n};\n\nvar getTitleFromPropsList = function getTitleFromPropsList(propsList) {\n  var innermostTitle = getInnermostProperty(propsList, _HelmetConstants.TAG_NAMES.TITLE);\n  var innermostTemplate = getInnermostProperty(propsList, _HelmetConstants.HELMET_PROPS.TITLE_TEMPLATE);\n\n  if (innermostTemplate && innermostTitle) {\n    // use function arg to avoid need to escape $ characters\n    return innermostTemplate.replace(/%s/g, function () {\n      return innermostTitle;\n    });\n  }\n\n  var innermostDefaultTitle = getInnermostProperty(propsList, _HelmetConstants.HELMET_PROPS.DEFAULT_TITLE);\n  return innermostTitle || innermostDefaultTitle || undefined;\n};\n\nvar getOnChangeClientState = function getOnChangeClientState(propsList) {\n  return getInnermostProperty(propsList, _HelmetConstants.HELMET_PROPS.ON_CHANGE_CLIENT_STATE) || function () {};\n};\n\nvar getAttributesFromPropsList = function getAttributesFromPropsList(tagType, propsList) {\n  return propsList.filter(function (props) {\n    return typeof props[tagType] !== \"undefined\";\n  }).map(function (props) {\n    return props[tagType];\n  }).reduce(function (tagAttrs, current) {\n    return _extends({}, tagAttrs, current);\n  }, {});\n};\n\nvar getBaseTagFromPropsList = function getBaseTagFromPropsList(primaryAttributes, propsList) {\n  return propsList.filter(function (props) {\n    return typeof props[_HelmetConstants.TAG_NAMES.BASE] !== \"undefined\";\n  }).map(function (props) {\n    return props[_HelmetConstants.TAG_NAMES.BASE];\n  }).reverse().reduce(function (innermostBaseTag, tag) {\n    if (!innermostBaseTag.length) {\n      var keys = Object.keys(tag);\n\n      for (var i = 0; i < keys.length; i++) {\n        var attributeKey = keys[i];\n        var lowerCaseAttributeKey = attributeKey.toLowerCase();\n\n        if (primaryAttributes.indexOf(lowerCaseAttributeKey) !== -1 && tag[lowerCaseAttributeKey]) {\n          return innermostBaseTag.concat(tag);\n        }\n      }\n    }\n\n    return innermostBaseTag;\n  }, []);\n};\n\nvar getTagsFromPropsList = function getTagsFromPropsList(tagName, primaryAttributes, propsList) {\n  // Calculate list of tags, giving priority innermost component (end of the propslist)\n  var approvedSeenTags = {};\n  return propsList.filter(function (props) {\n    if (Array.isArray(props[tagName])) {\n      return true;\n    }\n\n    if (typeof props[tagName] !== \"undefined\") {\n      warn(\"Helmet: \" + tagName + \" should be of type \\\"Array\\\". Instead found type \\\"\" + _typeof(props[tagName]) + \"\\\"\");\n    }\n\n    return false;\n  }).map(function (props) {\n    return props[tagName];\n  }).reverse().reduce(function (approvedTags, instanceTags) {\n    var instanceSeenTags = {};\n    instanceTags.filter(function (tag) {\n      var primaryAttributeKey = void 0;\n      var keys = Object.keys(tag);\n\n      for (var i = 0; i < keys.length; i++) {\n        var attributeKey = keys[i];\n        var lowerCaseAttributeKey = attributeKey.toLowerCase(); // Special rule with link tags, since rel and href are both primary tags, rel takes priority\n\n        if (primaryAttributes.indexOf(lowerCaseAttributeKey) !== -1 && !(primaryAttributeKey === _HelmetConstants.TAG_PROPERTIES.REL && tag[primaryAttributeKey].toLowerCase() === \"canonical\") && !(lowerCaseAttributeKey === _HelmetConstants.TAG_PROPERTIES.REL && tag[lowerCaseAttributeKey].toLowerCase() === \"stylesheet\")) {\n          primaryAttributeKey = lowerCaseAttributeKey;\n        } // Special case for innerHTML which doesn't work lowercased\n\n\n        if (primaryAttributes.indexOf(attributeKey) !== -1 && (attributeKey === _HelmetConstants.TAG_PROPERTIES.INNER_HTML || attributeKey === _HelmetConstants.TAG_PROPERTIES.CSS_TEXT || attributeKey === _HelmetConstants.TAG_PROPERTIES.ITEM_PROP)) {\n          primaryAttributeKey = attributeKey;\n        }\n      }\n\n      if (!primaryAttributeKey || !tag[primaryAttributeKey]) {\n        return false;\n      }\n\n      var value = tag[primaryAttributeKey].toLowerCase();\n\n      if (!approvedSeenTags[primaryAttributeKey]) {\n        approvedSeenTags[primaryAttributeKey] = {};\n      }\n\n      if (!instanceSeenTags[primaryAttributeKey]) {\n        instanceSeenTags[primaryAttributeKey] = {};\n      }\n\n      if (!approvedSeenTags[primaryAttributeKey][value]) {\n        instanceSeenTags[primaryAttributeKey][value] = true;\n        return true;\n      }\n\n      return false;\n    }).reverse().forEach(function (tag) {\n      return approvedTags.push(tag);\n    }); // Update seen tags with tags from this instance\n\n    var keys = Object.keys(instanceSeenTags);\n\n    for (var i = 0; i < keys.length; i++) {\n      var attributeKey = keys[i];\n      var tagUnion = (0, _objectAssign2[\"default\"])({}, approvedSeenTags[attributeKey], instanceSeenTags[attributeKey]);\n      approvedSeenTags[attributeKey] = tagUnion;\n    }\n\n    return approvedTags;\n  }, []).reverse();\n};\n\nvar getInnermostProperty = function getInnermostProperty(propsList, property) {\n  for (var i = propsList.length - 1; i >= 0; i--) {\n    var props = propsList[i];\n\n    if (props.hasOwnProperty(property)) {\n      return props[property];\n    }\n  }\n\n  return null;\n};\n\nvar reducePropsToState = function reducePropsToState(propsList) {\n  return {\n    baseTag: getBaseTagFromPropsList([_HelmetConstants.TAG_PROPERTIES.HREF], propsList),\n    bodyAttributes: getAttributesFromPropsList(_HelmetConstants.ATTRIBUTE_NAMES.BODY, propsList),\n    defer: getInnermostProperty(propsList, _HelmetConstants.HELMET_PROPS.DEFER),\n    encode: getInnermostProperty(propsList, _HelmetConstants.HELMET_PROPS.ENCODE_SPECIAL_CHARACTERS),\n    htmlAttributes: getAttributesFromPropsList(_HelmetConstants.ATTRIBUTE_NAMES.HTML, propsList),\n    linkTags: getTagsFromPropsList(_HelmetConstants.TAG_NAMES.LINK, [_HelmetConstants.TAG_PROPERTIES.REL, _HelmetConstants.TAG_PROPERTIES.HREF], propsList),\n    metaTags: getTagsFromPropsList(_HelmetConstants.TAG_NAMES.META, [_HelmetConstants.TAG_PROPERTIES.NAME, _HelmetConstants.TAG_PROPERTIES.CHARSET, _HelmetConstants.TAG_PROPERTIES.HTTPEQUIV, _HelmetConstants.TAG_PROPERTIES.PROPERTY, _HelmetConstants.TAG_PROPERTIES.ITEM_PROP], propsList),\n    noscriptTags: getTagsFromPropsList(_HelmetConstants.TAG_NAMES.NOSCRIPT, [_HelmetConstants.TAG_PROPERTIES.INNER_HTML], propsList),\n    onChangeClientState: getOnChangeClientState(propsList),\n    scriptTags: getTagsFromPropsList(_HelmetConstants.TAG_NAMES.SCRIPT, [_HelmetConstants.TAG_PROPERTIES.SRC, _HelmetConstants.TAG_PROPERTIES.INNER_HTML], propsList),\n    styleTags: getTagsFromPropsList(_HelmetConstants.TAG_NAMES.STYLE, [_HelmetConstants.TAG_PROPERTIES.CSS_TEXT], propsList),\n    title: getTitleFromPropsList(propsList),\n    titleAttributes: getAttributesFromPropsList(_HelmetConstants.ATTRIBUTE_NAMES.TITLE, propsList)\n  };\n};\n\nvar rafPolyfill = function () {\n  var clock = Date.now();\n  return function (callback) {\n    var currentTime = Date.now();\n\n    if (currentTime - clock > 16) {\n      clock = currentTime;\n      callback(currentTime);\n    } else {\n      setTimeout(function () {\n        rafPolyfill(callback);\n      }, 0);\n    }\n  };\n}();\n\nvar cafPolyfill = function cafPolyfill(id) {\n  return clearTimeout(id);\n};\n\nvar requestAnimationFrame = typeof window !== \"undefined\" ? window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || rafPolyfill : global.requestAnimationFrame || rafPolyfill;\nvar cancelAnimationFrame = typeof window !== \"undefined\" ? window.cancelAnimationFrame || window.webkitCancelAnimationFrame || window.mozCancelAnimationFrame || cafPolyfill : global.cancelAnimationFrame || cafPolyfill;\n\nvar warn = function warn(msg) {\n  return console && typeof console.warn === \"function\" && console.warn(msg);\n};\n\nvar _helmetCallback = null;\n\nvar handleClientStateChange = function handleClientStateChange(newState) {\n  if (_helmetCallback) {\n    cancelAnimationFrame(_helmetCallback);\n  }\n\n  if (newState.defer) {\n    _helmetCallback = requestAnimationFrame(function () {\n      commitTagChanges(newState, function () {\n        _helmetCallback = null;\n      });\n    });\n  } else {\n    commitTagChanges(newState);\n    _helmetCallback = null;\n  }\n};\n\nvar commitTagChanges = function commitTagChanges(newState, cb) {\n  var baseTag = newState.baseTag,\n      bodyAttributes = newState.bodyAttributes,\n      htmlAttributes = newState.htmlAttributes,\n      linkTags = newState.linkTags,\n      metaTags = newState.metaTags,\n      noscriptTags = newState.noscriptTags,\n      onChangeClientState = newState.onChangeClientState,\n      scriptTags = newState.scriptTags,\n      styleTags = newState.styleTags,\n      title = newState.title,\n      titleAttributes = newState.titleAttributes;\n  updateAttributes(_HelmetConstants.TAG_NAMES.BODY, bodyAttributes);\n  updateAttributes(_HelmetConstants.TAG_NAMES.HTML, htmlAttributes);\n  updateTitle(title, titleAttributes);\n  var tagUpdates = {\n    baseTag: updateTags(_HelmetConstants.TAG_NAMES.BASE, baseTag),\n    linkTags: updateTags(_HelmetConstants.TAG_NAMES.LINK, linkTags),\n    metaTags: updateTags(_HelmetConstants.TAG_NAMES.META, metaTags),\n    noscriptTags: updateTags(_HelmetConstants.TAG_NAMES.NOSCRIPT, noscriptTags),\n    scriptTags: updateTags(_HelmetConstants.TAG_NAMES.SCRIPT, scriptTags),\n    styleTags: updateTags(_HelmetConstants.TAG_NAMES.STYLE, styleTags)\n  };\n  var addedTags = {};\n  var removedTags = {};\n  Object.keys(tagUpdates).forEach(function (tagType) {\n    var _tagUpdates$tagType = tagUpdates[tagType],\n        newTags = _tagUpdates$tagType.newTags,\n        oldTags = _tagUpdates$tagType.oldTags;\n\n    if (newTags.length) {\n      addedTags[tagType] = newTags;\n    }\n\n    if (oldTags.length) {\n      removedTags[tagType] = tagUpdates[tagType].oldTags;\n    }\n  });\n  cb && cb();\n  onChangeClientState(newState, addedTags, removedTags);\n};\n\nvar flattenArray = function flattenArray(possibleArray) {\n  return Array.isArray(possibleArray) ? possibleArray.join(\"\") : possibleArray;\n};\n\nvar updateTitle = function updateTitle(title, attributes) {\n  if (typeof title !== \"undefined\" && document.title !== title) {\n    document.title = flattenArray(title);\n  }\n\n  updateAttributes(_HelmetConstants.TAG_NAMES.TITLE, attributes);\n};\n\nvar updateAttributes = function updateAttributes(tagName, attributes) {\n  var elementTag = document.getElementsByTagName(tagName)[0];\n\n  if (!elementTag) {\n    return;\n  }\n\n  var helmetAttributeString = elementTag.getAttribute(_HelmetConstants.HELMET_ATTRIBUTE);\n  var helmetAttributes = helmetAttributeString ? helmetAttributeString.split(\",\") : [];\n  var attributesToRemove = [].concat(helmetAttributes);\n  var attributeKeys = Object.keys(attributes);\n\n  for (var i = 0; i < attributeKeys.length; i++) {\n    var attribute = attributeKeys[i];\n    var value = attributes[attribute] || \"\";\n\n    if (elementTag.getAttribute(attribute) !== value) {\n      elementTag.setAttribute(attribute, value);\n    }\n\n    if (helmetAttributes.indexOf(attribute) === -1) {\n      helmetAttributes.push(attribute);\n    }\n\n    var indexToSave = attributesToRemove.indexOf(attribute);\n\n    if (indexToSave !== -1) {\n      attributesToRemove.splice(indexToSave, 1);\n    }\n  }\n\n  for (var _i = attributesToRemove.length - 1; _i >= 0; _i--) {\n    elementTag.removeAttribute(attributesToRemove[_i]);\n  }\n\n  if (helmetAttributes.length === attributesToRemove.length) {\n    elementTag.removeAttribute(_HelmetConstants.HELMET_ATTRIBUTE);\n  } else if (elementTag.getAttribute(_HelmetConstants.HELMET_ATTRIBUTE) !== attributeKeys.join(\",\")) {\n    elementTag.setAttribute(_HelmetConstants.HELMET_ATTRIBUTE, attributeKeys.join(\",\"));\n  }\n};\n\nvar updateTags = function updateTags(type, tags) {\n  var headElement = document.head || document.querySelector(_HelmetConstants.TAG_NAMES.HEAD);\n  var tagNodes = headElement.querySelectorAll(type + \"[\" + _HelmetConstants.HELMET_ATTRIBUTE + \"]\");\n  var oldTags = Array.prototype.slice.call(tagNodes);\n  var newTags = [];\n  var indexToDelete = void 0;\n\n  if (tags && tags.length) {\n    tags.forEach(function (tag) {\n      var newElement = document.createElement(type);\n\n      for (var attribute in tag) {\n        if (tag.hasOwnProperty(attribute)) {\n          if (attribute === _HelmetConstants.TAG_PROPERTIES.INNER_HTML) {\n            newElement.innerHTML = tag.innerHTML;\n          } else if (attribute === _HelmetConstants.TAG_PROPERTIES.CSS_TEXT) {\n            if (newElement.styleSheet) {\n              newElement.styleSheet.cssText = tag.cssText;\n            } else {\n              newElement.appendChild(document.createTextNode(tag.cssText));\n            }\n          } else {\n            var value = typeof tag[attribute] === \"undefined\" ? \"\" : tag[attribute];\n            newElement.setAttribute(attribute, value);\n          }\n        }\n      }\n\n      newElement.setAttribute(_HelmetConstants.HELMET_ATTRIBUTE, \"true\"); // Remove a duplicate tag from domTagstoRemove, so it isn't cleared.\n\n      if (oldTags.some(function (existingTag, index) {\n        indexToDelete = index;\n        return newElement.isEqualNode(existingTag);\n      })) {\n        oldTags.splice(indexToDelete, 1);\n      } else {\n        newTags.push(newElement);\n      }\n    });\n  }\n\n  oldTags.forEach(function (tag) {\n    return tag.parentNode.removeChild(tag);\n  });\n  newTags.forEach(function (tag) {\n    return headElement.appendChild(tag);\n  });\n  return {\n    oldTags: oldTags,\n    newTags: newTags\n  };\n};\n\nvar generateElementAttributesAsString = function generateElementAttributesAsString(attributes) {\n  return Object.keys(attributes).reduce(function (str, key) {\n    var attr = typeof attributes[key] !== \"undefined\" ? key + \"=\\\"\" + attributes[key] + \"\\\"\" : \"\" + key;\n    return str ? str + \" \" + attr : attr;\n  }, \"\");\n};\n\nvar generateTitleAsString = function generateTitleAsString(type, title, attributes, encode) {\n  var attributeString = generateElementAttributesAsString(attributes);\n  var flattenedTitle = flattenArray(title);\n  return attributeString ? \"<\" + type + \" \" + _HelmetConstants.HELMET_ATTRIBUTE + \"=\\\"true\\\" \" + attributeString + \">\" + encodeSpecialCharacters(flattenedTitle, encode) + \"</\" + type + \">\" : \"<\" + type + \" \" + _HelmetConstants.HELMET_ATTRIBUTE + \"=\\\"true\\\">\" + encodeSpecialCharacters(flattenedTitle, encode) + \"</\" + type + \">\";\n};\n\nvar generateTagsAsString = function generateTagsAsString(type, tags, encode) {\n  return tags.reduce(function (str, tag) {\n    var attributeHtml = Object.keys(tag).filter(function (attribute) {\n      return !(attribute === _HelmetConstants.TAG_PROPERTIES.INNER_HTML || attribute === _HelmetConstants.TAG_PROPERTIES.CSS_TEXT);\n    }).reduce(function (string, attribute) {\n      var attr = typeof tag[attribute] === \"undefined\" ? attribute : attribute + \"=\\\"\" + encodeSpecialCharacters(tag[attribute], encode) + \"\\\"\";\n      return string ? string + \" \" + attr : attr;\n    }, \"\");\n    var tagContent = tag.innerHTML || tag.cssText || \"\";\n    var isSelfClosing = _HelmetConstants.SELF_CLOSING_TAGS.indexOf(type) === -1;\n    return str + \"<\" + type + \" \" + _HelmetConstants.HELMET_ATTRIBUTE + \"=\\\"true\\\" \" + attributeHtml + (isSelfClosing ? \"/>\" : \">\" + tagContent + \"</\" + type + \">\");\n  }, \"\");\n};\n\nvar convertElementAttributestoReactProps = function convertElementAttributestoReactProps(attributes) {\n  var initProps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  return Object.keys(attributes).reduce(function (obj, key) {\n    obj[_HelmetConstants.REACT_TAG_MAP[key] || key] = attributes[key];\n    return obj;\n  }, initProps);\n};\n\nvar convertReactPropstoHtmlAttributes = function convertReactPropstoHtmlAttributes(props) {\n  var initAttributes = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  return Object.keys(props).reduce(function (obj, key) {\n    obj[_HelmetConstants.HTML_TAG_MAP[key] || key] = props[key];\n    return obj;\n  }, initAttributes);\n};\n\nvar generateTitleAsReactComponent = function generateTitleAsReactComponent(type, title, attributes) {\n  var _initProps; // assigning into an array to define toString function on it\n\n\n  var initProps = (_initProps = {\n    key: title\n  }, _initProps[_HelmetConstants.HELMET_ATTRIBUTE] = true, _initProps);\n  var props = convertElementAttributestoReactProps(attributes, initProps);\n  return [_react2[\"default\"].createElement(_HelmetConstants.TAG_NAMES.TITLE, props, title)];\n};\n\nvar generateTagsAsReactComponent = function generateTagsAsReactComponent(type, tags) {\n  return tags.map(function (tag, i) {\n    var _mappedTag;\n\n    var mappedTag = (_mappedTag = {\n      key: i\n    }, _mappedTag[_HelmetConstants.HELMET_ATTRIBUTE] = true, _mappedTag);\n    Object.keys(tag).forEach(function (attribute) {\n      var mappedAttribute = _HelmetConstants.REACT_TAG_MAP[attribute] || attribute;\n\n      if (mappedAttribute === _HelmetConstants.TAG_PROPERTIES.INNER_HTML || mappedAttribute === _HelmetConstants.TAG_PROPERTIES.CSS_TEXT) {\n        var content = tag.innerHTML || tag.cssText;\n        mappedTag.dangerouslySetInnerHTML = {\n          __html: content\n        };\n      } else {\n        mappedTag[mappedAttribute] = tag[attribute];\n      }\n    });\n    return _react2[\"default\"].createElement(type, mappedTag);\n  });\n};\n\nvar getMethodsForTag = function getMethodsForTag(type, tags, encode) {\n  switch (type) {\n    case _HelmetConstants.TAG_NAMES.TITLE:\n      return {\n        toComponent: function toComponent() {\n          return generateTitleAsReactComponent(type, tags.title, tags.titleAttributes, encode);\n        },\n        toString: function toString() {\n          return generateTitleAsString(type, tags.title, tags.titleAttributes, encode);\n        }\n      };\n\n    case _HelmetConstants.ATTRIBUTE_NAMES.BODY:\n    case _HelmetConstants.ATTRIBUTE_NAMES.HTML:\n      return {\n        toComponent: function toComponent() {\n          return convertElementAttributestoReactProps(tags);\n        },\n        toString: function toString() {\n          return generateElementAttributesAsString(tags);\n        }\n      };\n\n    default:\n      return {\n        toComponent: function toComponent() {\n          return generateTagsAsReactComponent(type, tags);\n        },\n        toString: function toString() {\n          return generateTagsAsString(type, tags, encode);\n        }\n      };\n  }\n};\n\nvar mapStateOnServer = function mapStateOnServer(_ref) {\n  var baseTag = _ref.baseTag,\n      bodyAttributes = _ref.bodyAttributes,\n      encode = _ref.encode,\n      htmlAttributes = _ref.htmlAttributes,\n      linkTags = _ref.linkTags,\n      metaTags = _ref.metaTags,\n      noscriptTags = _ref.noscriptTags,\n      scriptTags = _ref.scriptTags,\n      styleTags = _ref.styleTags,\n      _ref$title = _ref.title,\n      title = _ref$title === undefined ? \"\" : _ref$title,\n      titleAttributes = _ref.titleAttributes;\n  return {\n    base: getMethodsForTag(_HelmetConstants.TAG_NAMES.BASE, baseTag, encode),\n    bodyAttributes: getMethodsForTag(_HelmetConstants.ATTRIBUTE_NAMES.BODY, bodyAttributes, encode),\n    htmlAttributes: getMethodsForTag(_HelmetConstants.ATTRIBUTE_NAMES.HTML, htmlAttributes, encode),\n    link: getMethodsForTag(_HelmetConstants.TAG_NAMES.LINK, linkTags, encode),\n    meta: getMethodsForTag(_HelmetConstants.TAG_NAMES.META, metaTags, encode),\n    noscript: getMethodsForTag(_HelmetConstants.TAG_NAMES.NOSCRIPT, noscriptTags, encode),\n    script: getMethodsForTag(_HelmetConstants.TAG_NAMES.SCRIPT, scriptTags, encode),\n    style: getMethodsForTag(_HelmetConstants.TAG_NAMES.STYLE, styleTags, encode),\n    title: getMethodsForTag(_HelmetConstants.TAG_NAMES.TITLE, {\n      title: title,\n      titleAttributes: titleAttributes\n    }, encode)\n  };\n};\n\nexports.convertReactPropstoHtmlAttributes = convertReactPropstoHtmlAttributes;\nexports.handleClientStateChange = handleClientStateChange;\nexports.mapStateOnServer = mapStateOnServer;\nexports.reducePropsToState = reducePropsToState;\nexports.requestAnimationFrame = requestAnimationFrame;\nexports.warn = warn;","/** @license React v16.12.0\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';\n\nrequire(\"core-js/modules/es6.function.bind\");\n\nrequire(\"core-js/modules/es6.regexp.to-string\");\n\nrequire(\"core-js/modules/es6.date.to-string\");\n\nrequire(\"core-js/modules/web.dom.iterable\");\n\nrequire(\"core-js/modules/es6.array.iterator\");\n\nrequire(\"core-js/modules/es6.object.to-string\");\n\nrequire(\"core-js/modules/es6.object.keys\");\n\nrequire(\"core-js/modules/es6.array.is-array\");\n\nrequire(\"core-js/modules/es6.regexp.replace\");\n\nrequire(\"core-js/modules/es7.symbol.async-iterator\");\n\nrequire(\"core-js/modules/es6.symbol\");\n\nvar h = require(\"object-assign\"),\n    n = \"function\" === typeof Symbol && Symbol[\"for\"],\n    p = n ? Symbol[\"for\"](\"react.element\") : 60103,\n    q = n ? Symbol[\"for\"](\"react.portal\") : 60106,\n    r = n ? Symbol[\"for\"](\"react.fragment\") : 60107,\n    t = n ? Symbol[\"for\"](\"react.strict_mode\") : 60108,\n    u = n ? Symbol[\"for\"](\"react.profiler\") : 60114,\n    v = n ? Symbol[\"for\"](\"react.provider\") : 60109,\n    w = n ? Symbol[\"for\"](\"react.context\") : 60110,\n    x = n ? Symbol[\"for\"](\"react.forward_ref\") : 60112,\n    y = n ? Symbol[\"for\"](\"react.suspense\") : 60113;\n\nn && Symbol[\"for\"](\"react.suspense_list\");\nvar z = n ? Symbol[\"for\"](\"react.memo\") : 60115,\n    aa = n ? Symbol[\"for\"](\"react.lazy\") : 60116;\nn && Symbol[\"for\"](\"react.fundamental\");\nn && Symbol[\"for\"](\"react.responder\");\nn && Symbol[\"for\"](\"react.scope\");\nvar A = \"function\" === typeof Symbol && Symbol.iterator;\n\nfunction B(a) {\n  for (var b = \"https://reactjs.org/docs/error-decoder.html?invariant=\" + a, c = 1; c < arguments.length; c++) {\n    b += \"&args[]=\" + encodeURIComponent(arguments[c]);\n  }\n\n  return \"Minified React error #\" + a + \"; visit \" + b + \" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\";\n}\n\nvar C = {\n  isMounted: function isMounted() {\n    return !1;\n  },\n  enqueueForceUpdate: function enqueueForceUpdate() {},\n  enqueueReplaceState: function enqueueReplaceState() {},\n  enqueueSetState: function enqueueSetState() {}\n},\n    D = {};\n\nfunction E(a, b, c) {\n  this.props = a;\n  this.context = b;\n  this.refs = D;\n  this.updater = c || C;\n}\n\nE.prototype.isReactComponent = {};\n\nE.prototype.setState = function (a, b) {\n  if (\"object\" !== typeof a && \"function\" !== typeof a && null != a) throw Error(B(85));\n  this.updater.enqueueSetState(this, a, b, \"setState\");\n};\n\nE.prototype.forceUpdate = function (a) {\n  this.updater.enqueueForceUpdate(this, a, \"forceUpdate\");\n};\n\nfunction F() {}\n\nF.prototype = E.prototype;\n\nfunction G(a, b, c) {\n  this.props = a;\n  this.context = b;\n  this.refs = D;\n  this.updater = c || C;\n}\n\nvar H = G.prototype = new F();\nH.constructor = G;\nh(H, E.prototype);\nH.isPureReactComponent = !0;\nvar I = {\n  current: null\n},\n    J = {\n  current: null\n},\n    K = Object.prototype.hasOwnProperty,\n    L = {\n  key: !0,\n  ref: !0,\n  __self: !0,\n  __source: !0\n};\n\nfunction M(a, b, c) {\n  var e,\n      d = {},\n      g = null,\n      l = null;\n  if (null != b) for (e in void 0 !== b.ref && (l = b.ref), void 0 !== b.key && (g = \"\" + b.key), b) {\n    K.call(b, e) && !L.hasOwnProperty(e) && (d[e] = b[e]);\n  }\n  var f = arguments.length - 2;\n  if (1 === f) d.children = c;else if (1 < f) {\n    for (var k = Array(f), m = 0; m < f; m++) {\n      k[m] = arguments[m + 2];\n    }\n\n    d.children = k;\n  }\n  if (a && a.defaultProps) for (e in f = a.defaultProps, f) {\n    void 0 === d[e] && (d[e] = f[e]);\n  }\n  return {\n    $$typeof: p,\n    type: a,\n    key: g,\n    ref: l,\n    props: d,\n    _owner: J.current\n  };\n}\n\nfunction ba(a, b) {\n  return {\n    $$typeof: p,\n    type: a.type,\n    key: b,\n    ref: a.ref,\n    props: a.props,\n    _owner: a._owner\n  };\n}\n\nfunction N(a) {\n  return \"object\" === typeof a && null !== a && a.$$typeof === p;\n}\n\nfunction escape(a) {\n  var b = {\n    \"=\": \"=0\",\n    \":\": \"=2\"\n  };\n  return \"$\" + (\"\" + a).replace(/[=:]/g, function (a) {\n    return b[a];\n  });\n}\n\nvar O = /\\/+/g,\n    P = [];\n\nfunction Q(a, b, c, e) {\n  if (P.length) {\n    var d = P.pop();\n    d.result = a;\n    d.keyPrefix = b;\n    d.func = c;\n    d.context = e;\n    d.count = 0;\n    return d;\n  }\n\n  return {\n    result: a,\n    keyPrefix: b,\n    func: c,\n    context: e,\n    count: 0\n  };\n}\n\nfunction R(a) {\n  a.result = null;\n  a.keyPrefix = null;\n  a.func = null;\n  a.context = null;\n  a.count = 0;\n  10 > P.length && P.push(a);\n}\n\nfunction S(a, b, c, e) {\n  var d = typeof a;\n  if (\"undefined\" === d || \"boolean\" === d) a = null;\n  var g = !1;\n  if (null === a) g = !0;else switch (d) {\n    case \"string\":\n    case \"number\":\n      g = !0;\n      break;\n\n    case \"object\":\n      switch (a.$$typeof) {\n        case p:\n        case q:\n          g = !0;\n      }\n\n  }\n  if (g) return c(e, a, \"\" === b ? \".\" + T(a, 0) : b), 1;\n  g = 0;\n  b = \"\" === b ? \".\" : b + \":\";\n  if (Array.isArray(a)) for (var l = 0; l < a.length; l++) {\n    d = a[l];\n    var f = b + T(d, l);\n    g += S(d, f, c, e);\n  } else if (null === a || \"object\" !== typeof a ? f = null : (f = A && a[A] || a[\"@@iterator\"], f = \"function\" === typeof f ? f : null), \"function\" === typeof f) for (a = f.call(a), l = 0; !(d = a.next()).done;) {\n    d = d.value, f = b + T(d, l++), g += S(d, f, c, e);\n  } else if (\"object\" === d) throw c = \"\" + a, Error(B(31, \"[object Object]\" === c ? \"object with keys {\" + Object.keys(a).join(\", \") + \"}\" : c, \"\"));\n  return g;\n}\n\nfunction U(a, b, c) {\n  return null == a ? 0 : S(a, \"\", b, c);\n}\n\nfunction T(a, b) {\n  return \"object\" === typeof a && null !== a && null != a.key ? escape(a.key) : b.toString(36);\n}\n\nfunction ca(a, b) {\n  a.func.call(a.context, b, a.count++);\n}\n\nfunction da(a, b, c) {\n  var e = a.result,\n      d = a.keyPrefix;\n  a = a.func.call(a.context, b, a.count++);\n  Array.isArray(a) ? V(a, e, c, function (a) {\n    return a;\n  }) : null != a && (N(a) && (a = ba(a, d + (!a.key || b && b.key === a.key ? \"\" : (\"\" + a.key).replace(O, \"$&/\") + \"/\") + c)), e.push(a));\n}\n\nfunction V(a, b, c, e, d) {\n  var g = \"\";\n  null != c && (g = (\"\" + c).replace(O, \"$&/\") + \"/\");\n  b = Q(b, g, e, d);\n  U(a, da, b);\n  R(b);\n}\n\nfunction W() {\n  var a = I.current;\n  if (null === a) throw Error(B(321));\n  return a;\n}\n\nvar X = {\n  Children: {\n    map: function map(a, b, c) {\n      if (null == a) return a;\n      var e = [];\n      V(a, e, null, b, c);\n      return e;\n    },\n    forEach: function forEach(a, b, c) {\n      if (null == a) return a;\n      b = Q(null, null, b, c);\n      U(a, ca, b);\n      R(b);\n    },\n    count: function count(a) {\n      return U(a, function () {\n        return null;\n      }, null);\n    },\n    toArray: function toArray(a) {\n      var b = [];\n      V(a, b, null, function (a) {\n        return a;\n      });\n      return b;\n    },\n    only: function only(a) {\n      if (!N(a)) throw Error(B(143));\n      return a;\n    }\n  },\n  createRef: function createRef() {\n    return {\n      current: null\n    };\n  },\n  Component: E,\n  PureComponent: G,\n  createContext: function createContext(a, b) {\n    void 0 === b && (b = null);\n    a = {\n      $$typeof: w,\n      _calculateChangedBits: b,\n      _currentValue: a,\n      _currentValue2: a,\n      _threadCount: 0,\n      Provider: null,\n      Consumer: null\n    };\n    a.Provider = {\n      $$typeof: v,\n      _context: a\n    };\n    return a.Consumer = a;\n  },\n  forwardRef: function forwardRef(a) {\n    return {\n      $$typeof: x,\n      render: a\n    };\n  },\n  lazy: function lazy(a) {\n    return {\n      $$typeof: aa,\n      _ctor: a,\n      _status: -1,\n      _result: null\n    };\n  },\n  memo: function memo(a, b) {\n    return {\n      $$typeof: z,\n      type: a,\n      compare: void 0 === b ? null : b\n    };\n  },\n  useCallback: function useCallback(a, b) {\n    return W().useCallback(a, b);\n  },\n  useContext: function useContext(a, b) {\n    return W().useContext(a, b);\n  },\n  useEffect: function useEffect(a, b) {\n    return W().useEffect(a, b);\n  },\n  useImperativeHandle: function useImperativeHandle(a, b, c) {\n    return W().useImperativeHandle(a, b, c);\n  },\n  useDebugValue: function useDebugValue() {},\n  useLayoutEffect: function useLayoutEffect(a, b) {\n    return W().useLayoutEffect(a, b);\n  },\n  useMemo: function useMemo(a, b) {\n    return W().useMemo(a, b);\n  },\n  useReducer: function useReducer(a, b, c) {\n    return W().useReducer(a, b, c);\n  },\n  useRef: function useRef(a) {\n    return W().useRef(a);\n  },\n  useState: function useState(a) {\n    return W().useState(a);\n  },\n  Fragment: r,\n  Profiler: u,\n  StrictMode: t,\n  Suspense: y,\n  createElement: M,\n  cloneElement: function cloneElement(a, b, c) {\n    if (null === a || void 0 === a) throw Error(B(267, a));\n    var e = h({}, a.props),\n        d = a.key,\n        g = a.ref,\n        l = a._owner;\n\n    if (null != b) {\n      void 0 !== b.ref && (g = b.ref, l = J.current);\n      void 0 !== b.key && (d = \"\" + b.key);\n      if (a.type && a.type.defaultProps) var f = a.type.defaultProps;\n\n      for (k in b) {\n        K.call(b, k) && !L.hasOwnProperty(k) && (e[k] = void 0 === b[k] && void 0 !== f ? f[k] : b[k]);\n      }\n    }\n\n    var k = arguments.length - 2;\n    if (1 === k) e.children = c;else if (1 < k) {\n      f = Array(k);\n\n      for (var m = 0; m < k; m++) {\n        f[m] = arguments[m + 2];\n      }\n\n      e.children = f;\n    }\n    return {\n      $$typeof: p,\n      type: a.type,\n      key: d,\n      ref: g,\n      props: e,\n      _owner: l\n    };\n  },\n  createFactory: function createFactory(a) {\n    var b = M.bind(null, a);\n    b.type = a;\n    return b;\n  },\n  isValidElement: N,\n  version: \"16.12.0\",\n  __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED: {\n    ReactCurrentDispatcher: I,\n    ReactCurrentBatchConfig: {\n      suspense: null\n    },\n    ReactCurrentOwner: J,\n    IsSomeRendererActing: {\n      current: !1\n    },\n    assign: h\n  }\n},\n    Y = {\n  \"default\": X\n},\n    Z = Y && X || Y;\nmodule.exports = Z[\"default\"] || Z;","var g; // This works in non-strict mode\n\ng = function () {\n  return this;\n}();\n\ntry {\n  // This works if eval is allowed (see CSP)\n  g = g || new Function(\"return this\")();\n} catch (e) {\n  // This works if the window reference is available\n  if (typeof window === \"object\") g = window;\n} // g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\n\nmodule.exports = g;","/** @license React v16.12.0\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';\n\nrequire(\"core-js/modules/es6.weak-set\");\n\nrequire(\"core-js/modules/es6.object.is\");\n\nrequire(\"core-js/modules/es6.string.trim\");\n\nrequire(\"core-js/modules/es6.object.keys\");\n\nrequire(\"core-js/modules/es6.set\");\n\nrequire(\"core-js/modules/es6.weak-map\");\n\nrequire(\"core-js/modules/es6.function.bind\");\n\nrequire(\"core-js/modules/es6.date.now\");\n\nrequire(\"core-js/modules/es6.regexp.to-string\");\n\nrequire(\"core-js/modules/es6.date.to-string\");\n\nrequire(\"core-js/modules/es6.object.define-property\");\n\nrequire(\"core-js/modules/es6.regexp.split\");\n\nrequire(\"core-js/modules/web.dom.iterable\");\n\nrequire(\"core-js/modules/es6.array.iterator\");\n\nrequire(\"core-js/modules/es6.object.to-string\");\n\nrequire(\"core-js/modules/es6.string.iterator\");\n\nrequire(\"core-js/modules/es6.map\");\n\nrequire(\"core-js/modules/es6.regexp.replace\");\n\nrequire(\"core-js/modules/es6.function.name\");\n\nrequire(\"core-js/modules/es7.symbol.async-iterator\");\n\nrequire(\"core-js/modules/es6.symbol\");\n\nrequire(\"core-js/modules/es6.array.for-each\");\n\nrequire(\"core-js/modules/es6.array.is-array\");\n\nrequire(\"core-js/modules/es6.array.index-of\");\n\nvar aa = require(\"react\"),\n    n = require(\"object-assign\"),\n    q = require(\"scheduler\");\n\nfunction u(a) {\n  for (var b = \"https://reactjs.org/docs/error-decoder.html?invariant=\" + a, c = 1; c < arguments.length; c++) {\n    b += \"&args[]=\" + encodeURIComponent(arguments[c]);\n  }\n\n  return \"Minified React error #\" + a + \"; visit \" + b + \" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\";\n}\n\nif (!aa) throw Error(u(227));\nvar ba = null,\n    ca = {};\n\nfunction da() {\n  if (ba) for (var a in ca) {\n    var b = ca[a],\n        c = ba.indexOf(a);\n    if (!(-1 < c)) throw Error(u(96, a));\n\n    if (!ea[c]) {\n      if (!b.extractEvents) throw Error(u(97, a));\n      ea[c] = b;\n      c = b.eventTypes;\n\n      for (var d in c) {\n        var e = void 0;\n        var f = c[d],\n            g = b,\n            h = d;\n        if (fa.hasOwnProperty(h)) throw Error(u(99, h));\n        fa[h] = f;\n        var k = f.phasedRegistrationNames;\n\n        if (k) {\n          for (e in k) {\n            k.hasOwnProperty(e) && ha(k[e], g, h);\n          }\n\n          e = !0;\n        } else f.registrationName ? (ha(f.registrationName, g, h), e = !0) : e = !1;\n\n        if (!e) throw Error(u(98, d, a));\n      }\n    }\n  }\n}\n\nfunction ha(a, b, c) {\n  if (ia[a]) throw Error(u(100, a));\n  ia[a] = b;\n  ja[a] = b.eventTypes[c].dependencies;\n}\n\nvar ea = [],\n    fa = {},\n    ia = {},\n    ja = {};\n\nfunction ka(a, b, c, d, e, f, g, h, k) {\n  var l = Array.prototype.slice.call(arguments, 3);\n\n  try {\n    b.apply(c, l);\n  } catch (m) {\n    this.onError(m);\n  }\n}\n\nvar la = !1,\n    ma = null,\n    na = !1,\n    oa = null,\n    pa = {\n  onError: function onError(a) {\n    la = !0;\n    ma = a;\n  }\n};\n\nfunction qa(a, b, c, d, e, f, g, h, k) {\n  la = !1;\n  ma = null;\n  ka.apply(pa, arguments);\n}\n\nfunction ra(a, b, c, d, e, f, g, h, k) {\n  qa.apply(this, arguments);\n\n  if (la) {\n    if (la) {\n      var l = ma;\n      la = !1;\n      ma = null;\n    } else throw Error(u(198));\n\n    na || (na = !0, oa = l);\n  }\n}\n\nvar sa = null,\n    ua = null,\n    va = null;\n\nfunction wa(a, b, c) {\n  var d = a.type || \"unknown-event\";\n  a.currentTarget = va(c);\n  ra(d, b, void 0, a);\n  a.currentTarget = null;\n}\n\nfunction xa(a, b) {\n  if (null == b) throw Error(u(30));\n  if (null == a) return b;\n\n  if (Array.isArray(a)) {\n    if (Array.isArray(b)) return a.push.apply(a, b), a;\n    a.push(b);\n    return a;\n  }\n\n  return Array.isArray(b) ? [a].concat(b) : [a, b];\n}\n\nfunction ya(a, b, c) {\n  Array.isArray(a) ? a.forEach(b, c) : a && b.call(c, a);\n}\n\nvar za = null;\n\nfunction Aa(a) {\n  if (a) {\n    var b = a._dispatchListeners,\n        c = a._dispatchInstances;\n    if (Array.isArray(b)) for (var d = 0; d < b.length && !a.isPropagationStopped(); d++) {\n      wa(a, b[d], c[d]);\n    } else b && wa(a, b, c);\n    a._dispatchListeners = null;\n    a._dispatchInstances = null;\n    a.isPersistent() || a.constructor.release(a);\n  }\n}\n\nfunction Ba(a) {\n  null !== a && (za = xa(za, a));\n  a = za;\n  za = null;\n\n  if (a) {\n    ya(a, Aa);\n    if (za) throw Error(u(95));\n    if (na) throw a = oa, na = !1, oa = null, a;\n  }\n}\n\nvar Ca = {\n  injectEventPluginOrder: function injectEventPluginOrder(a) {\n    if (ba) throw Error(u(101));\n    ba = Array.prototype.slice.call(a);\n    da();\n  },\n  injectEventPluginsByName: function injectEventPluginsByName(a) {\n    var b = !1,\n        c;\n\n    for (c in a) {\n      if (a.hasOwnProperty(c)) {\n        var d = a[c];\n\n        if (!ca.hasOwnProperty(c) || ca[c] !== d) {\n          if (ca[c]) throw Error(u(102, c));\n          ca[c] = d;\n          b = !0;\n        }\n      }\n    }\n\n    b && da();\n  }\n};\n\nfunction Da(a, b) {\n  var c = a.stateNode;\n  if (!c) return null;\n  var d = sa(c);\n  if (!d) return null;\n  c = d[b];\n\n  a: switch (b) {\n    case \"onClick\":\n    case \"onClickCapture\":\n    case \"onDoubleClick\":\n    case \"onDoubleClickCapture\":\n    case \"onMouseDown\":\n    case \"onMouseDownCapture\":\n    case \"onMouseMove\":\n    case \"onMouseMoveCapture\":\n    case \"onMouseUp\":\n    case \"onMouseUpCapture\":\n      (d = !d.disabled) || (a = a.type, d = !(\"button\" === a || \"input\" === a || \"select\" === a || \"textarea\" === a));\n      a = !d;\n      break a;\n\n    default:\n      a = !1;\n  }\n\n  if (a) return null;\n  if (c && \"function\" !== typeof c) throw Error(u(231, b, typeof c));\n  return c;\n}\n\nvar Ea = aa.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\nEa.hasOwnProperty(\"ReactCurrentDispatcher\") || (Ea.ReactCurrentDispatcher = {\n  current: null\n});\nEa.hasOwnProperty(\"ReactCurrentBatchConfig\") || (Ea.ReactCurrentBatchConfig = {\n  suspense: null\n});\nvar Fa = /^(.*)[\\\\\\/]/,\n    w = \"function\" === typeof Symbol && Symbol[\"for\"],\n    Ga = w ? Symbol[\"for\"](\"react.element\") : 60103,\n    Ha = w ? Symbol[\"for\"](\"react.portal\") : 60106,\n    Ia = w ? Symbol[\"for\"](\"react.fragment\") : 60107,\n    Ja = w ? Symbol[\"for\"](\"react.strict_mode\") : 60108,\n    Ka = w ? Symbol[\"for\"](\"react.profiler\") : 60114,\n    La = w ? Symbol[\"for\"](\"react.provider\") : 60109,\n    Ma = w ? Symbol[\"for\"](\"react.context\") : 60110,\n    Na = w ? Symbol[\"for\"](\"react.concurrent_mode\") : 60111,\n    Oa = w ? Symbol[\"for\"](\"react.forward_ref\") : 60112,\n    Pa = w ? Symbol[\"for\"](\"react.suspense\") : 60113,\n    Qa = w ? Symbol[\"for\"](\"react.suspense_list\") : 60120,\n    Ra = w ? Symbol[\"for\"](\"react.memo\") : 60115,\n    Sa = w ? Symbol[\"for\"](\"react.lazy\") : 60116;\nw && Symbol[\"for\"](\"react.fundamental\");\nw && Symbol[\"for\"](\"react.responder\");\nw && Symbol[\"for\"](\"react.scope\");\nvar Ta = \"function\" === typeof Symbol && Symbol.iterator;\n\nfunction Ua(a) {\n  if (null === a || \"object\" !== typeof a) return null;\n  a = Ta && a[Ta] || a[\"@@iterator\"];\n  return \"function\" === typeof a ? a : null;\n}\n\nfunction Va(a) {\n  if (-1 === a._status) {\n    a._status = 0;\n    var b = a._ctor;\n    b = b();\n    a._result = b;\n    b.then(function (b) {\n      0 === a._status && (b = b[\"default\"], a._status = 1, a._result = b);\n    }, function (b) {\n      0 === a._status && (a._status = 2, a._result = b);\n    });\n  }\n}\n\nfunction Wa(a) {\n  if (null == a) return null;\n  if (\"function\" === typeof a) return a.displayName || a.name || null;\n  if (\"string\" === typeof a) return a;\n\n  switch (a) {\n    case Ia:\n      return \"Fragment\";\n\n    case Ha:\n      return \"Portal\";\n\n    case Ka:\n      return \"Profiler\";\n\n    case Ja:\n      return \"StrictMode\";\n\n    case Pa:\n      return \"Suspense\";\n\n    case Qa:\n      return \"SuspenseList\";\n  }\n\n  if (\"object\" === typeof a) switch (a.$$typeof) {\n    case Ma:\n      return \"Context.Consumer\";\n\n    case La:\n      return \"Context.Provider\";\n\n    case Oa:\n      var b = a.render;\n      b = b.displayName || b.name || \"\";\n      return a.displayName || (\"\" !== b ? \"ForwardRef(\" + b + \")\" : \"ForwardRef\");\n\n    case Ra:\n      return Wa(a.type);\n\n    case Sa:\n      if (a = 1 === a._status ? a._result : null) return Wa(a);\n  }\n  return null;\n}\n\nfunction Xa(a) {\n  var b = \"\";\n\n  do {\n    a: switch (a.tag) {\n      case 3:\n      case 4:\n      case 6:\n      case 7:\n      case 10:\n      case 9:\n        var c = \"\";\n        break a;\n\n      default:\n        var d = a._debugOwner,\n            e = a._debugSource,\n            f = Wa(a.type);\n        c = null;\n        d && (c = Wa(d.type));\n        d = f;\n        f = \"\";\n        e ? f = \" (at \" + e.fileName.replace(Fa, \"\") + \":\" + e.lineNumber + \")\" : c && (f = \" (created by \" + c + \")\");\n        c = \"\\n    in \" + (d || \"Unknown\") + f;\n    }\n\n    b += c;\n    a = a[\"return\"];\n  } while (a);\n\n  return b;\n}\n\nvar Ya = !(\"undefined\" === typeof window || \"undefined\" === typeof window.document || \"undefined\" === typeof window.document.createElement),\n    Za = null,\n    $a = null,\n    ab = null;\n\nfunction bb(a) {\n  if (a = ua(a)) {\n    if (\"function\" !== typeof Za) throw Error(u(280));\n    var b = sa(a.stateNode);\n    Za(a.stateNode, a.type, b);\n  }\n}\n\nfunction cb(a) {\n  $a ? ab ? ab.push(a) : ab = [a] : $a = a;\n}\n\nfunction db() {\n  if ($a) {\n    var a = $a,\n        b = ab;\n    ab = $a = null;\n    bb(a);\n    if (b) for (a = 0; a < b.length; a++) {\n      bb(b[a]);\n    }\n  }\n}\n\nfunction eb(a, b) {\n  return a(b);\n}\n\nfunction fb(a, b, c, d) {\n  return a(b, c, d);\n}\n\nfunction gb() {}\n\nvar hb = eb,\n    ib = !1,\n    jb = !1;\n\nfunction kb() {\n  if (null !== $a || null !== ab) gb(), db();\n}\n\nnew Map();\nvar lb = /^[: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][: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\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$/,\n    mb = Object.prototype.hasOwnProperty,\n    nb = {},\n    ob = {};\n\nfunction pb(a) {\n  if (mb.call(ob, a)) return !0;\n  if (mb.call(nb, a)) return !1;\n  if (lb.test(a)) return ob[a] = !0;\n  nb[a] = !0;\n  return !1;\n}\n\nfunction qb(a, b, c, d) {\n  if (null !== c && 0 === c.type) return !1;\n\n  switch (typeof b) {\n    case \"function\":\n    case \"symbol\":\n      return !0;\n\n    case \"boolean\":\n      if (d) return !1;\n      if (null !== c) return !c.acceptsBooleans;\n      a = a.toLowerCase().slice(0, 5);\n      return \"data-\" !== a && \"aria-\" !== a;\n\n    default:\n      return !1;\n  }\n}\n\nfunction rb(a, b, c, d) {\n  if (null === b || \"undefined\" === typeof b || qb(a, b, c, d)) return !0;\n  if (d) return !1;\n  if (null !== c) switch (c.type) {\n    case 3:\n      return !b;\n\n    case 4:\n      return !1 === b;\n\n    case 5:\n      return isNaN(b);\n\n    case 6:\n      return isNaN(b) || 1 > b;\n  }\n  return !1;\n}\n\nfunction B(a, b, c, d, e, f) {\n  this.acceptsBooleans = 2 === b || 3 === b || 4 === b;\n  this.attributeName = d;\n  this.attributeNamespace = e;\n  this.mustUseProperty = c;\n  this.propertyName = a;\n  this.type = b;\n  this.sanitizeURL = f;\n}\n\nvar D = {};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function (a) {\n  D[a] = new B(a, 0, !1, a, null, !1);\n});\n[[\"acceptCharset\", \"accept-charset\"], [\"className\", \"class\"], [\"htmlFor\", \"for\"], [\"httpEquiv\", \"http-equiv\"]].forEach(function (a) {\n  var b = a[0];\n  D[b] = new B(b, 1, !1, a[1], null, !1);\n});\n[\"contentEditable\", \"draggable\", \"spellCheck\", \"value\"].forEach(function (a) {\n  D[a] = new B(a, 2, !1, a.toLowerCase(), null, !1);\n});\n[\"autoReverse\", \"externalResourcesRequired\", \"focusable\", \"preserveAlpha\"].forEach(function (a) {\n  D[a] = new B(a, 2, !1, a, null, !1);\n});\n\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function (a) {\n  D[a] = new B(a, 3, !1, a.toLowerCase(), null, !1);\n});\n[\"checked\", \"multiple\", \"muted\", \"selected\"].forEach(function (a) {\n  D[a] = new B(a, 3, !0, a, null, !1);\n});\n[\"capture\", \"download\"].forEach(function (a) {\n  D[a] = new B(a, 4, !1, a, null, !1);\n});\n[\"cols\", \"rows\", \"size\", \"span\"].forEach(function (a) {\n  D[a] = new B(a, 6, !1, a, null, !1);\n});\n[\"rowSpan\", \"start\"].forEach(function (a) {\n  D[a] = new B(a, 5, !1, a.toLowerCase(), null, !1);\n});\nvar sb = /[\\-:]([a-z])/g;\n\nfunction tb(a) {\n  return a[1].toUpperCase();\n}\n\n\"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\".split(\" \").forEach(function (a) {\n  var b = a.replace(sb, tb);\n  D[b] = new B(b, 1, !1, a, null, !1);\n});\n\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function (a) {\n  var b = a.replace(sb, tb);\n  D[b] = new B(b, 1, !1, a, \"http://www.w3.org/1999/xlink\", !1);\n});\n[\"xml:base\", \"xml:lang\", \"xml:space\"].forEach(function (a) {\n  var b = a.replace(sb, tb);\n  D[b] = new B(b, 1, !1, a, \"http://www.w3.org/XML/1998/namespace\", !1);\n});\n[\"tabIndex\", \"crossOrigin\"].forEach(function (a) {\n  D[a] = new B(a, 1, !1, a.toLowerCase(), null, !1);\n});\nD.xlinkHref = new B(\"xlinkHref\", 1, !1, \"xlink:href\", \"http://www.w3.org/1999/xlink\", !0);\n[\"src\", \"href\", \"action\", \"formAction\"].forEach(function (a) {\n  D[a] = new B(a, 1, !1, a.toLowerCase(), null, !0);\n});\n\nfunction ub(a) {\n  switch (typeof a) {\n    case \"boolean\":\n    case \"number\":\n    case \"object\":\n    case \"string\":\n    case \"undefined\":\n      return a;\n\n    default:\n      return \"\";\n  }\n}\n\nfunction vb(a, b, c, d) {\n  var e = D.hasOwnProperty(b) ? D[b] : null;\n  var f = null !== e ? 0 === e.type : d ? !1 : !(2 < b.length) || \"o\" !== b[0] && \"O\" !== b[0] || \"n\" !== b[1] && \"N\" !== b[1] ? !1 : !0;\n  f || (rb(b, c, e, d) && (c = null), d || null === e ? pb(b) && (null === c ? a.removeAttribute(b) : a.setAttribute(b, \"\" + c)) : e.mustUseProperty ? a[e.propertyName] = null === c ? 3 === e.type ? !1 : \"\" : c : (b = e.attributeName, d = e.attributeNamespace, null === c ? a.removeAttribute(b) : (e = e.type, c = 3 === e || 4 === e && !0 === c ? \"\" : \"\" + c, d ? a.setAttributeNS(d, b, c) : a.setAttribute(b, c))));\n}\n\nfunction wb(a) {\n  var b = a.type;\n  return (a = a.nodeName) && \"input\" === a.toLowerCase() && (\"checkbox\" === b || \"radio\" === b);\n}\n\nfunction xb(a) {\n  var b = wb(a) ? \"checked\" : \"value\",\n      c = Object.getOwnPropertyDescriptor(a.constructor.prototype, b),\n      d = \"\" + a[b];\n\n  if (!a.hasOwnProperty(b) && \"undefined\" !== typeof c && \"function\" === typeof c.get && \"function\" === typeof c.set) {\n    var e = c.get,\n        f = c.set;\n    Object.defineProperty(a, b, {\n      configurable: !0,\n      get: function get() {\n        return e.call(this);\n      },\n      set: function set(a) {\n        d = \"\" + a;\n        f.call(this, a);\n      }\n    });\n    Object.defineProperty(a, b, {\n      enumerable: c.enumerable\n    });\n    return {\n      getValue: function getValue() {\n        return d;\n      },\n      setValue: function setValue(a) {\n        d = \"\" + a;\n      },\n      stopTracking: function stopTracking() {\n        a._valueTracker = null;\n        delete a[b];\n      }\n    };\n  }\n}\n\nfunction yb(a) {\n  a._valueTracker || (a._valueTracker = xb(a));\n}\n\nfunction zb(a) {\n  if (!a) return !1;\n  var b = a._valueTracker;\n  if (!b) return !0;\n  var c = b.getValue();\n  var d = \"\";\n  a && (d = wb(a) ? a.checked ? \"true\" : \"false\" : a.value);\n  a = d;\n  return a !== c ? (b.setValue(a), !0) : !1;\n}\n\nfunction Ab(a, b) {\n  var c = b.checked;\n  return n({}, b, {\n    defaultChecked: void 0,\n    defaultValue: void 0,\n    value: void 0,\n    checked: null != c ? c : a._wrapperState.initialChecked\n  });\n}\n\nfunction Bb(a, b) {\n  var c = null == b.defaultValue ? \"\" : b.defaultValue,\n      d = null != b.checked ? b.checked : b.defaultChecked;\n  c = ub(null != b.value ? b.value : c);\n  a._wrapperState = {\n    initialChecked: d,\n    initialValue: c,\n    controlled: \"checkbox\" === b.type || \"radio\" === b.type ? null != b.checked : null != b.value\n  };\n}\n\nfunction Cb(a, b) {\n  b = b.checked;\n  null != b && vb(a, \"checked\", b, !1);\n}\n\nfunction Eb(a, b) {\n  Cb(a, b);\n  var c = ub(b.value),\n      d = b.type;\n  if (null != c) {\n    if (\"number\" === d) {\n      if (0 === c && \"\" === a.value || a.value != c) a.value = \"\" + c;\n    } else a.value !== \"\" + c && (a.value = \"\" + c);\n  } else if (\"submit\" === d || \"reset\" === d) {\n    a.removeAttribute(\"value\");\n    return;\n  }\n  b.hasOwnProperty(\"value\") ? Fb(a, b.type, c) : b.hasOwnProperty(\"defaultValue\") && Fb(a, b.type, ub(b.defaultValue));\n  null == b.checked && null != b.defaultChecked && (a.defaultChecked = !!b.defaultChecked);\n}\n\nfunction Gb(a, b, c) {\n  if (b.hasOwnProperty(\"value\") || b.hasOwnProperty(\"defaultValue\")) {\n    var d = b.type;\n    if (!(\"submit\" !== d && \"reset\" !== d || void 0 !== b.value && null !== b.value)) return;\n    b = \"\" + a._wrapperState.initialValue;\n    c || b === a.value || (a.value = b);\n    a.defaultValue = b;\n  }\n\n  c = a.name;\n  \"\" !== c && (a.name = \"\");\n  a.defaultChecked = !a.defaultChecked;\n  a.defaultChecked = !!a._wrapperState.initialChecked;\n  \"\" !== c && (a.name = c);\n}\n\nfunction Fb(a, b, c) {\n  if (\"number\" !== b || a.ownerDocument.activeElement !== a) null == c ? a.defaultValue = \"\" + a._wrapperState.initialValue : a.defaultValue !== \"\" + c && (a.defaultValue = \"\" + c);\n}\n\nfunction Hb(a) {\n  var b = \"\";\n  aa.Children.forEach(a, function (a) {\n    null != a && (b += a);\n  });\n  return b;\n}\n\nfunction Ib(a, b) {\n  a = n({\n    children: void 0\n  }, b);\n  if (b = Hb(b.children)) a.children = b;\n  return a;\n}\n\nfunction Jb(a, b, c, d) {\n  a = a.options;\n\n  if (b) {\n    b = {};\n\n    for (var e = 0; e < c.length; e++) {\n      b[\"$\" + c[e]] = !0;\n    }\n\n    for (c = 0; c < a.length; c++) {\n      e = b.hasOwnProperty(\"$\" + a[c].value), a[c].selected !== e && (a[c].selected = e), e && d && (a[c].defaultSelected = !0);\n    }\n  } else {\n    c = \"\" + ub(c);\n    b = null;\n\n    for (e = 0; e < a.length; e++) {\n      if (a[e].value === c) {\n        a[e].selected = !0;\n        d && (a[e].defaultSelected = !0);\n        return;\n      }\n\n      null !== b || a[e].disabled || (b = a[e]);\n    }\n\n    null !== b && (b.selected = !0);\n  }\n}\n\nfunction Kb(a, b) {\n  if (null != b.dangerouslySetInnerHTML) throw Error(u(91));\n  return n({}, b, {\n    value: void 0,\n    defaultValue: void 0,\n    children: \"\" + a._wrapperState.initialValue\n  });\n}\n\nfunction Lb(a, b) {\n  var c = b.value;\n\n  if (null == c) {\n    c = b.defaultValue;\n    b = b.children;\n\n    if (null != b) {\n      if (null != c) throw Error(u(92));\n\n      if (Array.isArray(b)) {\n        if (!(1 >= b.length)) throw Error(u(93));\n        b = b[0];\n      }\n\n      c = b;\n    }\n\n    null == c && (c = \"\");\n  }\n\n  a._wrapperState = {\n    initialValue: ub(c)\n  };\n}\n\nfunction Mb(a, b) {\n  var c = ub(b.value),\n      d = ub(b.defaultValue);\n  null != c && (c = \"\" + c, c !== a.value && (a.value = c), null == b.defaultValue && a.defaultValue !== c && (a.defaultValue = c));\n  null != d && (a.defaultValue = \"\" + d);\n}\n\nfunction Nb(a) {\n  var b = a.textContent;\n  b === a._wrapperState.initialValue && \"\" !== b && null !== b && (a.value = b);\n}\n\nvar Ob = {\n  html: \"http://www.w3.org/1999/xhtml\",\n  mathml: \"http://www.w3.org/1998/Math/MathML\",\n  svg: \"http://www.w3.org/2000/svg\"\n};\n\nfunction Pb(a) {\n  switch (a) {\n    case \"svg\":\n      return \"http://www.w3.org/2000/svg\";\n\n    case \"math\":\n      return \"http://www.w3.org/1998/Math/MathML\";\n\n    default:\n      return \"http://www.w3.org/1999/xhtml\";\n  }\n}\n\nfunction Qb(a, b) {\n  return null == a || \"http://www.w3.org/1999/xhtml\" === a ? Pb(b) : \"http://www.w3.org/2000/svg\" === a && \"foreignObject\" === b ? \"http://www.w3.org/1999/xhtml\" : a;\n}\n\nvar Rb,\n    Sb = function (a) {\n  return \"undefined\" !== typeof MSApp && MSApp.execUnsafeLocalFunction ? function (b, c, d, e) {\n    MSApp.execUnsafeLocalFunction(function () {\n      return a(b, c, d, e);\n    });\n  } : a;\n}(function (a, b) {\n  if (a.namespaceURI !== Ob.svg || \"innerHTML\" in a) a.innerHTML = b;else {\n    Rb = Rb || document.createElement(\"div\");\n    Rb.innerHTML = \"<svg>\" + b.valueOf().toString() + \"</svg>\";\n\n    for (b = Rb.firstChild; a.firstChild;) {\n      a.removeChild(a.firstChild);\n    }\n\n    for (; b.firstChild;) {\n      a.appendChild(b.firstChild);\n    }\n  }\n});\n\nfunction Tb(a, b) {\n  if (b) {\n    var c = a.firstChild;\n\n    if (c && c === a.lastChild && 3 === c.nodeType) {\n      c.nodeValue = b;\n      return;\n    }\n  }\n\n  a.textContent = b;\n}\n\nfunction Ub(a, b) {\n  var c = {};\n  c[a.toLowerCase()] = b.toLowerCase();\n  c[\"Webkit\" + a] = \"webkit\" + b;\n  c[\"Moz\" + a] = \"moz\" + b;\n  return c;\n}\n\nvar Vb = {\n  animationend: Ub(\"Animation\", \"AnimationEnd\"),\n  animationiteration: Ub(\"Animation\", \"AnimationIteration\"),\n  animationstart: Ub(\"Animation\", \"AnimationStart\"),\n  transitionend: Ub(\"Transition\", \"TransitionEnd\")\n},\n    Wb = {},\n    Xb = {};\nYa && (Xb = document.createElement(\"div\").style, \"AnimationEvent\" in window || (delete Vb.animationend.animation, delete Vb.animationiteration.animation, delete Vb.animationstart.animation), \"TransitionEvent\" in window || delete Vb.transitionend.transition);\n\nfunction Yb(a) {\n  if (Wb[a]) return Wb[a];\n  if (!Vb[a]) return a;\n  var b = Vb[a],\n      c;\n\n  for (c in b) {\n    if (b.hasOwnProperty(c) && c in Xb) return Wb[a] = b[c];\n  }\n\n  return a;\n}\n\nvar Zb = Yb(\"animationend\"),\n    $b = Yb(\"animationiteration\"),\n    ac = Yb(\"animationstart\"),\n    bc = Yb(\"transitionend\"),\n    cc = \"abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange seeked seeking stalled suspend timeupdate volumechange waiting\".split(\" \");\n\nfunction ec(a) {\n  var b = a,\n      c = a;\n  if (a.alternate) for (; b[\"return\"];) {\n    b = b[\"return\"];\n  } else {\n    a = b;\n\n    do {\n      b = a, 0 !== (b.effectTag & 1026) && (c = b[\"return\"]), a = b[\"return\"];\n    } while (a);\n  }\n  return 3 === b.tag ? c : null;\n}\n\nfunction fc(a) {\n  if (13 === a.tag) {\n    var b = a.memoizedState;\n    null === b && (a = a.alternate, null !== a && (b = a.memoizedState));\n    if (null !== b) return b.dehydrated;\n  }\n\n  return null;\n}\n\nfunction gc(a) {\n  if (ec(a) !== a) throw Error(u(188));\n}\n\nfunction hc(a) {\n  var b = a.alternate;\n\n  if (!b) {\n    b = ec(a);\n    if (null === b) throw Error(u(188));\n    return b !== a ? null : a;\n  }\n\n  for (var c = a, d = b;;) {\n    var e = c[\"return\"];\n    if (null === e) break;\n    var f = e.alternate;\n\n    if (null === f) {\n      d = e[\"return\"];\n\n      if (null !== d) {\n        c = d;\n        continue;\n      }\n\n      break;\n    }\n\n    if (e.child === f.child) {\n      for (f = e.child; f;) {\n        if (f === c) return gc(e), a;\n        if (f === d) return gc(e), b;\n        f = f.sibling;\n      }\n\n      throw Error(u(188));\n    }\n\n    if (c[\"return\"] !== d[\"return\"]) c = e, d = f;else {\n      for (var g = !1, h = e.child; h;) {\n        if (h === c) {\n          g = !0;\n          c = e;\n          d = f;\n          break;\n        }\n\n        if (h === d) {\n          g = !0;\n          d = e;\n          c = f;\n          break;\n        }\n\n        h = h.sibling;\n      }\n\n      if (!g) {\n        for (h = f.child; h;) {\n          if (h === c) {\n            g = !0;\n            c = f;\n            d = e;\n            break;\n          }\n\n          if (h === d) {\n            g = !0;\n            d = f;\n            c = e;\n            break;\n          }\n\n          h = h.sibling;\n        }\n\n        if (!g) throw Error(u(189));\n      }\n    }\n    if (c.alternate !== d) throw Error(u(190));\n  }\n\n  if (3 !== c.tag) throw Error(u(188));\n  return c.stateNode.current === c ? a : b;\n}\n\nfunction ic(a) {\n  a = hc(a);\n  if (!a) return null;\n\n  for (var b = a;;) {\n    if (5 === b.tag || 6 === b.tag) return b;\n    if (b.child) b.child[\"return\"] = b, b = b.child;else {\n      if (b === a) break;\n\n      for (; !b.sibling;) {\n        if (!b[\"return\"] || b[\"return\"] === a) return null;\n        b = b[\"return\"];\n      }\n\n      b.sibling[\"return\"] = b[\"return\"];\n      b = b.sibling;\n    }\n  }\n\n  return null;\n}\n\nvar jc,\n    kc,\n    lc,\n    mc = !1,\n    nc = [],\n    oc = null,\n    pc = null,\n    qc = null,\n    rc = new Map(),\n    sc = new Map(),\n    tc = [],\n    uc = \"mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput close cancel copy cut paste click change contextmenu reset submit\".split(\" \"),\n    vc = \"focus blur dragenter dragleave mouseover mouseout pointerover pointerout gotpointercapture lostpointercapture\".split(\" \");\n\nfunction wc(a) {\n  var b = xc(a);\n  uc.forEach(function (c) {\n    yc(c, a, b);\n  });\n  vc.forEach(function (c) {\n    yc(c, a, b);\n  });\n}\n\nfunction zc(a, b, c, d) {\n  return {\n    blockedOn: a,\n    topLevelType: b,\n    eventSystemFlags: c | 32,\n    nativeEvent: d\n  };\n}\n\nfunction Ac(a, b) {\n  switch (a) {\n    case \"focus\":\n    case \"blur\":\n      oc = null;\n      break;\n\n    case \"dragenter\":\n    case \"dragleave\":\n      pc = null;\n      break;\n\n    case \"mouseover\":\n    case \"mouseout\":\n      qc = null;\n      break;\n\n    case \"pointerover\":\n    case \"pointerout\":\n      rc[\"delete\"](b.pointerId);\n      break;\n\n    case \"gotpointercapture\":\n    case \"lostpointercapture\":\n      sc[\"delete\"](b.pointerId);\n  }\n}\n\nfunction Bc(a, b, c, d, e) {\n  if (null === a || a.nativeEvent !== e) return a = zc(b, c, d, e), null !== b && (b = Cc(b), null !== b && kc(b)), a;\n  a.eventSystemFlags |= d;\n  return a;\n}\n\nfunction Dc(a, b, c, d) {\n  switch (b) {\n    case \"focus\":\n      return oc = Bc(oc, a, b, c, d), !0;\n\n    case \"dragenter\":\n      return pc = Bc(pc, a, b, c, d), !0;\n\n    case \"mouseover\":\n      return qc = Bc(qc, a, b, c, d), !0;\n\n    case \"pointerover\":\n      var e = d.pointerId;\n      rc.set(e, Bc(rc.get(e) || null, a, b, c, d));\n      return !0;\n\n    case \"gotpointercapture\":\n      return e = d.pointerId, sc.set(e, Bc(sc.get(e) || null, a, b, c, d)), !0;\n  }\n\n  return !1;\n}\n\nfunction Ec(a) {\n  var b = Fc(a.target);\n\n  if (null !== b) {\n    var c = ec(b);\n    if (null !== c) if (b = c.tag, 13 === b) {\n      if (b = fc(c), null !== b) {\n        a.blockedOn = b;\n        q.unstable_runWithPriority(a.priority, function () {\n          lc(c);\n        });\n        return;\n      }\n    } else if (3 === b && c.stateNode.hydrate) {\n      a.blockedOn = 3 === c.tag ? c.stateNode.containerInfo : null;\n      return;\n    }\n  }\n\n  a.blockedOn = null;\n}\n\nfunction Gc(a) {\n  if (null !== a.blockedOn) return !1;\n  var b = Hc(a.topLevelType, a.eventSystemFlags, a.nativeEvent);\n\n  if (null !== b) {\n    var c = Cc(b);\n    null !== c && kc(c);\n    a.blockedOn = b;\n    return !1;\n  }\n\n  return !0;\n}\n\nfunction Ic(a, b, c) {\n  Gc(a) && c[\"delete\"](b);\n}\n\nfunction Jc() {\n  for (mc = !1; 0 < nc.length;) {\n    var a = nc[0];\n\n    if (null !== a.blockedOn) {\n      a = Cc(a.blockedOn);\n      null !== a && jc(a);\n      break;\n    }\n\n    var b = Hc(a.topLevelType, a.eventSystemFlags, a.nativeEvent);\n    null !== b ? a.blockedOn = b : nc.shift();\n  }\n\n  null !== oc && Gc(oc) && (oc = null);\n  null !== pc && Gc(pc) && (pc = null);\n  null !== qc && Gc(qc) && (qc = null);\n  rc.forEach(Ic);\n  sc.forEach(Ic);\n}\n\nfunction Kc(a, b) {\n  a.blockedOn === b && (a.blockedOn = null, mc || (mc = !0, q.unstable_scheduleCallback(q.unstable_NormalPriority, Jc)));\n}\n\nfunction Lc(a) {\n  function b(b) {\n    return Kc(b, a);\n  }\n\n  if (0 < nc.length) {\n    Kc(nc[0], a);\n\n    for (var c = 1; c < nc.length; c++) {\n      var d = nc[c];\n      d.blockedOn === a && (d.blockedOn = null);\n    }\n  }\n\n  null !== oc && Kc(oc, a);\n  null !== pc && Kc(pc, a);\n  null !== qc && Kc(qc, a);\n  rc.forEach(b);\n  sc.forEach(b);\n\n  for (c = 0; c < tc.length; c++) {\n    d = tc[c], d.blockedOn === a && (d.blockedOn = null);\n  }\n\n  for (; 0 < tc.length && (c = tc[0], null === c.blockedOn);) {\n    Ec(c), null === c.blockedOn && tc.shift();\n  }\n}\n\nfunction Mc(a) {\n  a = a.target || a.srcElement || window;\n  a.correspondingUseElement && (a = a.correspondingUseElement);\n  return 3 === a.nodeType ? a.parentNode : a;\n}\n\nfunction Nc(a) {\n  do {\n    a = a[\"return\"];\n  } while (a && 5 !== a.tag);\n\n  return a ? a : null;\n}\n\nfunction Oc(a, b, c) {\n  if (b = Da(a, c.dispatchConfig.phasedRegistrationNames[b])) c._dispatchListeners = xa(c._dispatchListeners, b), c._dispatchInstances = xa(c._dispatchInstances, a);\n}\n\nfunction Pc(a) {\n  if (a && a.dispatchConfig.phasedRegistrationNames) {\n    for (var b = a._targetInst, c = []; b;) {\n      c.push(b), b = Nc(b);\n    }\n\n    for (b = c.length; 0 < b--;) {\n      Oc(c[b], \"captured\", a);\n    }\n\n    for (b = 0; b < c.length; b++) {\n      Oc(c[b], \"bubbled\", a);\n    }\n  }\n}\n\nfunction Qc(a, b, c) {\n  a && c && c.dispatchConfig.registrationName && (b = Da(a, c.dispatchConfig.registrationName)) && (c._dispatchListeners = xa(c._dispatchListeners, b), c._dispatchInstances = xa(c._dispatchInstances, a));\n}\n\nfunction Rc(a) {\n  a && a.dispatchConfig.registrationName && Qc(a._targetInst, null, a);\n}\n\nfunction Sc(a) {\n  ya(a, Pc);\n}\n\nfunction Tc() {\n  return !0;\n}\n\nfunction Uc() {\n  return !1;\n}\n\nfunction E(a, b, c, d) {\n  this.dispatchConfig = a;\n  this._targetInst = b;\n  this.nativeEvent = c;\n  a = this.constructor.Interface;\n\n  for (var e in a) {\n    a.hasOwnProperty(e) && ((b = a[e]) ? this[e] = b(c) : \"target\" === e ? this.target = d : this[e] = c[e]);\n  }\n\n  this.isDefaultPrevented = (null != c.defaultPrevented ? c.defaultPrevented : !1 === c.returnValue) ? Tc : Uc;\n  this.isPropagationStopped = Uc;\n  return this;\n}\n\nn(E.prototype, {\n  preventDefault: function preventDefault() {\n    this.defaultPrevented = !0;\n    var a = this.nativeEvent;\n    a && (a.preventDefault ? a.preventDefault() : \"unknown\" !== typeof a.returnValue && (a.returnValue = !1), this.isDefaultPrevented = Tc);\n  },\n  stopPropagation: function stopPropagation() {\n    var a = this.nativeEvent;\n    a && (a.stopPropagation ? a.stopPropagation() : \"unknown\" !== typeof a.cancelBubble && (a.cancelBubble = !0), this.isPropagationStopped = Tc);\n  },\n  persist: function persist() {\n    this.isPersistent = Tc;\n  },\n  isPersistent: Uc,\n  destructor: function destructor() {\n    var a = this.constructor.Interface,\n        b;\n\n    for (b in a) {\n      this[b] = null;\n    }\n\n    this.nativeEvent = this._targetInst = this.dispatchConfig = null;\n    this.isPropagationStopped = this.isDefaultPrevented = Uc;\n    this._dispatchInstances = this._dispatchListeners = null;\n  }\n});\nE.Interface = {\n  type: null,\n  target: null,\n  currentTarget: function currentTarget() {\n    return null;\n  },\n  eventPhase: null,\n  bubbles: null,\n  cancelable: null,\n  timeStamp: function timeStamp(a) {\n    return a.timeStamp || Date.now();\n  },\n  defaultPrevented: null,\n  isTrusted: null\n};\n\nE.extend = function (a) {\n  function b() {}\n\n  function c() {\n    return d.apply(this, arguments);\n  }\n\n  var d = this;\n  b.prototype = d.prototype;\n  var e = new b();\n  n(e, c.prototype);\n  c.prototype = e;\n  c.prototype.constructor = c;\n  c.Interface = n({}, d.Interface, a);\n  c.extend = d.extend;\n  Vc(c);\n  return c;\n};\n\nVc(E);\n\nfunction Wc(a, b, c, d) {\n  if (this.eventPool.length) {\n    var e = this.eventPool.pop();\n    this.call(e, a, b, c, d);\n    return e;\n  }\n\n  return new this(a, b, c, d);\n}\n\nfunction Xc(a) {\n  if (!(a instanceof this)) throw Error(u(279));\n  a.destructor();\n  10 > this.eventPool.length && this.eventPool.push(a);\n}\n\nfunction Vc(a) {\n  a.eventPool = [];\n  a.getPooled = Wc;\n  a.release = Xc;\n}\n\nvar Yc = E.extend({\n  animationName: null,\n  elapsedTime: null,\n  pseudoElement: null\n}),\n    Zc = E.extend({\n  clipboardData: function clipboardData(a) {\n    return \"clipboardData\" in a ? a.clipboardData : window.clipboardData;\n  }\n}),\n    $c = E.extend({\n  view: null,\n  detail: null\n}),\n    ad = $c.extend({\n  relatedTarget: null\n});\n\nfunction bd(a) {\n  var b = a.keyCode;\n  \"charCode\" in a ? (a = a.charCode, 0 === a && 13 === b && (a = 13)) : a = b;\n  10 === a && (a = 13);\n  return 32 <= a || 13 === a ? a : 0;\n}\n\nvar cd = {\n  Esc: \"Escape\",\n  Spacebar: \" \",\n  Left: \"ArrowLeft\",\n  Up: \"ArrowUp\",\n  Right: \"ArrowRight\",\n  Down: \"ArrowDown\",\n  Del: \"Delete\",\n  Win: \"OS\",\n  Menu: \"ContextMenu\",\n  Apps: \"ContextMenu\",\n  Scroll: \"ScrollLock\",\n  MozPrintableKey: \"Unidentified\"\n},\n    dd = {\n  8: \"Backspace\",\n  9: \"Tab\",\n  12: \"Clear\",\n  13: \"Enter\",\n  16: \"Shift\",\n  17: \"Control\",\n  18: \"Alt\",\n  19: \"Pause\",\n  20: \"CapsLock\",\n  27: \"Escape\",\n  32: \" \",\n  33: \"PageUp\",\n  34: \"PageDown\",\n  35: \"End\",\n  36: \"Home\",\n  37: \"ArrowLeft\",\n  38: \"ArrowUp\",\n  39: \"ArrowRight\",\n  40: \"ArrowDown\",\n  45: \"Insert\",\n  46: \"Delete\",\n  112: \"F1\",\n  113: \"F2\",\n  114: \"F3\",\n  115: \"F4\",\n  116: \"F5\",\n  117: \"F6\",\n  118: \"F7\",\n  119: \"F8\",\n  120: \"F9\",\n  121: \"F10\",\n  122: \"F11\",\n  123: \"F12\",\n  144: \"NumLock\",\n  145: \"ScrollLock\",\n  224: \"Meta\"\n},\n    ed = {\n  Alt: \"altKey\",\n  Control: \"ctrlKey\",\n  Meta: \"metaKey\",\n  Shift: \"shiftKey\"\n};\n\nfunction gd(a) {\n  var b = this.nativeEvent;\n  return b.getModifierState ? b.getModifierState(a) : (a = ed[a]) ? !!b[a] : !1;\n}\n\nfunction hd() {\n  return gd;\n}\n\nvar id = $c.extend({\n  key: function key(a) {\n    if (a.key) {\n      var b = cd[a.key] || a.key;\n      if (\"Unidentified\" !== b) return b;\n    }\n\n    return \"keypress\" === a.type ? (a = bd(a), 13 === a ? \"Enter\" : String.fromCharCode(a)) : \"keydown\" === a.type || \"keyup\" === a.type ? dd[a.keyCode] || \"Unidentified\" : \"\";\n  },\n  location: null,\n  ctrlKey: null,\n  shiftKey: null,\n  altKey: null,\n  metaKey: null,\n  repeat: null,\n  locale: null,\n  getModifierState: hd,\n  charCode: function charCode(a) {\n    return \"keypress\" === a.type ? bd(a) : 0;\n  },\n  keyCode: function keyCode(a) {\n    return \"keydown\" === a.type || \"keyup\" === a.type ? a.keyCode : 0;\n  },\n  which: function which(a) {\n    return \"keypress\" === a.type ? bd(a) : \"keydown\" === a.type || \"keyup\" === a.type ? a.keyCode : 0;\n  }\n}),\n    jd = 0,\n    kd = 0,\n    ld = !1,\n    md = !1,\n    nd = $c.extend({\n  screenX: null,\n  screenY: null,\n  clientX: null,\n  clientY: null,\n  pageX: null,\n  pageY: null,\n  ctrlKey: null,\n  shiftKey: null,\n  altKey: null,\n  metaKey: null,\n  getModifierState: hd,\n  button: null,\n  buttons: null,\n  relatedTarget: function relatedTarget(a) {\n    return a.relatedTarget || (a.fromElement === a.srcElement ? a.toElement : a.fromElement);\n  },\n  movementX: function movementX(a) {\n    if (\"movementX\" in a) return a.movementX;\n    var b = jd;\n    jd = a.screenX;\n    return ld ? \"mousemove\" === a.type ? a.screenX - b : 0 : (ld = !0, 0);\n  },\n  movementY: function movementY(a) {\n    if (\"movementY\" in a) return a.movementY;\n    var b = kd;\n    kd = a.screenY;\n    return md ? \"mousemove\" === a.type ? a.screenY - b : 0 : (md = !0, 0);\n  }\n}),\n    od = nd.extend({\n  pointerId: null,\n  width: null,\n  height: null,\n  pressure: null,\n  tangentialPressure: null,\n  tiltX: null,\n  tiltY: null,\n  twist: null,\n  pointerType: null,\n  isPrimary: null\n}),\n    pd = nd.extend({\n  dataTransfer: null\n}),\n    qd = $c.extend({\n  touches: null,\n  targetTouches: null,\n  changedTouches: null,\n  altKey: null,\n  metaKey: null,\n  ctrlKey: null,\n  shiftKey: null,\n  getModifierState: hd\n}),\n    rd = E.extend({\n  propertyName: null,\n  elapsedTime: null,\n  pseudoElement: null\n}),\n    sd = nd.extend({\n  deltaX: function deltaX(a) {\n    return \"deltaX\" in a ? a.deltaX : \"wheelDeltaX\" in a ? -a.wheelDeltaX : 0;\n  },\n  deltaY: function deltaY(a) {\n    return \"deltaY\" in a ? a.deltaY : \"wheelDeltaY\" in a ? -a.wheelDeltaY : \"wheelDelta\" in a ? -a.wheelDelta : 0;\n  },\n  deltaZ: null,\n  deltaMode: null\n}),\n    td = [[\"blur\", \"blur\", 0], [\"cancel\", \"cancel\", 0], [\"click\", \"click\", 0], [\"close\", \"close\", 0], [\"contextmenu\", \"contextMenu\", 0], [\"copy\", \"copy\", 0], [\"cut\", \"cut\", 0], [\"auxclick\", \"auxClick\", 0], [\"dblclick\", \"doubleClick\", 0], [\"dragend\", \"dragEnd\", 0], [\"dragstart\", \"dragStart\", 0], [\"drop\", \"drop\", 0], [\"focus\", \"focus\", 0], [\"input\", \"input\", 0], [\"invalid\", \"invalid\", 0], [\"keydown\", \"keyDown\", 0], [\"keypress\", \"keyPress\", 0], [\"keyup\", \"keyUp\", 0], [\"mousedown\", \"mouseDown\", 0], [\"mouseup\", \"mouseUp\", 0], [\"paste\", \"paste\", 0], [\"pause\", \"pause\", 0], [\"play\", \"play\", 0], [\"pointercancel\", \"pointerCancel\", 0], [\"pointerdown\", \"pointerDown\", 0], [\"pointerup\", \"pointerUp\", 0], [\"ratechange\", \"rateChange\", 0], [\"reset\", \"reset\", 0], [\"seeked\", \"seeked\", 0], [\"submit\", \"submit\", 0], [\"touchcancel\", \"touchCancel\", 0], [\"touchend\", \"touchEnd\", 0], [\"touchstart\", \"touchStart\", 0], [\"volumechange\", \"volumeChange\", 0], [\"drag\", \"drag\", 1], [\"dragenter\", \"dragEnter\", 1], [\"dragexit\", \"dragExit\", 1], [\"dragleave\", \"dragLeave\", 1], [\"dragover\", \"dragOver\", 1], [\"mousemove\", \"mouseMove\", 1], [\"mouseout\", \"mouseOut\", 1], [\"mouseover\", \"mouseOver\", 1], [\"pointermove\", \"pointerMove\", 1], [\"pointerout\", \"pointerOut\", 1], [\"pointerover\", \"pointerOver\", 1], [\"scroll\", \"scroll\", 1], [\"toggle\", \"toggle\", 1], [\"touchmove\", \"touchMove\", 1], [\"wheel\", \"wheel\", 1], [\"abort\", \"abort\", 2], [Zb, \"animationEnd\", 2], [$b, \"animationIteration\", 2], [ac, \"animationStart\", 2], [\"canplay\", \"canPlay\", 2], [\"canplaythrough\", \"canPlayThrough\", 2], [\"durationchange\", \"durationChange\", 2], [\"emptied\", \"emptied\", 2], [\"encrypted\", \"encrypted\", 2], [\"ended\", \"ended\", 2], [\"error\", \"error\", 2], [\"gotpointercapture\", \"gotPointerCapture\", 2], [\"load\", \"load\", 2], [\"loadeddata\", \"loadedData\", 2], [\"loadedmetadata\", \"loadedMetadata\", 2], [\"loadstart\", \"loadStart\", 2], [\"lostpointercapture\", \"lostPointerCapture\", 2], [\"playing\", \"playing\", 2], [\"progress\", \"progress\", 2], [\"seeking\", \"seeking\", 2], [\"stalled\", \"stalled\", 2], [\"suspend\", \"suspend\", 2], [\"timeupdate\", \"timeUpdate\", 2], [bc, \"transitionEnd\", 2], [\"waiting\", \"waiting\", 2]],\n    ud = {},\n    vd = {},\n    wd = 0;\n\nfor (; wd < td.length; wd++) {\n  var yd = td[wd],\n      zd = yd[0],\n      Ad = yd[1],\n      Bd = yd[2],\n      Cd = \"on\" + (Ad[0].toUpperCase() + Ad.slice(1)),\n      Dd = {\n    phasedRegistrationNames: {\n      bubbled: Cd,\n      captured: Cd + \"Capture\"\n    },\n    dependencies: [zd],\n    eventPriority: Bd\n  };\n  ud[Ad] = Dd;\n  vd[zd] = Dd;\n}\n\nvar Ed = {\n  eventTypes: ud,\n  getEventPriority: function getEventPriority(a) {\n    a = vd[a];\n    return void 0 !== a ? a.eventPriority : 2;\n  },\n  extractEvents: function extractEvents(a, b, c, d) {\n    var e = vd[a];\n    if (!e) return null;\n\n    switch (a) {\n      case \"keypress\":\n        if (0 === bd(c)) return null;\n\n      case \"keydown\":\n      case \"keyup\":\n        a = id;\n        break;\n\n      case \"blur\":\n      case \"focus\":\n        a = ad;\n        break;\n\n      case \"click\":\n        if (2 === c.button) return null;\n\n      case \"auxclick\":\n      case \"dblclick\":\n      case \"mousedown\":\n      case \"mousemove\":\n      case \"mouseup\":\n      case \"mouseout\":\n      case \"mouseover\":\n      case \"contextmenu\":\n        a = nd;\n        break;\n\n      case \"drag\":\n      case \"dragend\":\n      case \"dragenter\":\n      case \"dragexit\":\n      case \"dragleave\":\n      case \"dragover\":\n      case \"dragstart\":\n      case \"drop\":\n        a = pd;\n        break;\n\n      case \"touchcancel\":\n      case \"touchend\":\n      case \"touchmove\":\n      case \"touchstart\":\n        a = qd;\n        break;\n\n      case Zb:\n      case $b:\n      case ac:\n        a = Yc;\n        break;\n\n      case bc:\n        a = rd;\n        break;\n\n      case \"scroll\":\n        a = $c;\n        break;\n\n      case \"wheel\":\n        a = sd;\n        break;\n\n      case \"copy\":\n      case \"cut\":\n      case \"paste\":\n        a = Zc;\n        break;\n\n      case \"gotpointercapture\":\n      case \"lostpointercapture\":\n      case \"pointercancel\":\n      case \"pointerdown\":\n      case \"pointermove\":\n      case \"pointerout\":\n      case \"pointerover\":\n      case \"pointerup\":\n        a = od;\n        break;\n\n      default:\n        a = E;\n    }\n\n    b = a.getPooled(e, b, c, d);\n    Sc(b);\n    return b;\n  }\n},\n    Fd = q.unstable_UserBlockingPriority,\n    Gd = q.unstable_runWithPriority,\n    Hd = Ed.getEventPriority,\n    Id = 10,\n    Jd = [];\n\nfunction Kd(a) {\n  var b = a.targetInst,\n      c = b;\n\n  do {\n    if (!c) {\n      a.ancestors.push(c);\n      break;\n    }\n\n    var d = c;\n    if (3 === d.tag) d = d.stateNode.containerInfo;else {\n      for (; d[\"return\"];) {\n        d = d[\"return\"];\n      }\n\n      d = 3 !== d.tag ? null : d.stateNode.containerInfo;\n    }\n    if (!d) break;\n    b = c.tag;\n    5 !== b && 6 !== b || a.ancestors.push(c);\n    c = Fc(d);\n  } while (c);\n\n  for (c = 0; c < a.ancestors.length; c++) {\n    b = a.ancestors[c];\n    var e = Mc(a.nativeEvent);\n    d = a.topLevelType;\n\n    for (var f = a.nativeEvent, g = a.eventSystemFlags, h = null, k = 0; k < ea.length; k++) {\n      var l = ea[k];\n      l && (l = l.extractEvents(d, b, f, e, g)) && (h = xa(h, l));\n    }\n\n    Ba(h);\n  }\n}\n\nvar Ld = !0;\n\nfunction F(a, b) {\n  Md(b, a, !1);\n}\n\nfunction Md(a, b, c) {\n  switch (Hd(b)) {\n    case 0:\n      var d = Nd.bind(null, b, 1);\n      break;\n\n    case 1:\n      d = Od.bind(null, b, 1);\n      break;\n\n    default:\n      d = Pd.bind(null, b, 1);\n  }\n\n  c ? a.addEventListener(b, d, !0) : a.addEventListener(b, d, !1);\n}\n\nfunction Nd(a, b, c) {\n  ib || gb();\n  var d = Pd,\n      e = ib;\n  ib = !0;\n\n  try {\n    fb(d, a, b, c);\n  } finally {\n    (ib = e) || kb();\n  }\n}\n\nfunction Od(a, b, c) {\n  Gd(Fd, Pd.bind(null, a, b, c));\n}\n\nfunction Qd(a, b, c, d) {\n  if (Jd.length) {\n    var e = Jd.pop();\n    e.topLevelType = a;\n    e.eventSystemFlags = b;\n    e.nativeEvent = c;\n    e.targetInst = d;\n    a = e;\n  } else a = {\n    topLevelType: a,\n    eventSystemFlags: b,\n    nativeEvent: c,\n    targetInst: d,\n    ancestors: []\n  };\n\n  try {\n    if (b = Kd, c = a, jb) b(c, void 0);else {\n      jb = !0;\n\n      try {\n        hb(b, c, void 0);\n      } finally {\n        jb = !1, kb();\n      }\n    }\n  } finally {\n    a.topLevelType = null, a.nativeEvent = null, a.targetInst = null, a.ancestors.length = 0, Jd.length < Id && Jd.push(a);\n  }\n}\n\nfunction Pd(a, b, c) {\n  if (Ld) if (0 < nc.length && -1 < uc.indexOf(a)) a = zc(null, a, b, c), nc.push(a);else {\n    var d = Hc(a, b, c);\n    null === d ? Ac(a, c) : -1 < uc.indexOf(a) ? (a = zc(d, a, b, c), nc.push(a)) : Dc(d, a, b, c) || (Ac(a, c), Qd(a, b, c, null));\n  }\n}\n\nfunction Hc(a, b, c) {\n  var d = Mc(c);\n  d = Fc(d);\n\n  if (null !== d) {\n    var e = ec(d);\n    if (null === e) d = null;else {\n      var f = e.tag;\n\n      if (13 === f) {\n        d = fc(e);\n        if (null !== d) return d;\n        d = null;\n      } else if (3 === f) {\n        if (e.stateNode.hydrate) return 3 === e.tag ? e.stateNode.containerInfo : null;\n        d = null;\n      } else e !== d && (d = null);\n    }\n  }\n\n  Qd(a, b, c, d);\n  return null;\n}\n\nfunction Rd(a) {\n  if (!Ya) return !1;\n  a = \"on\" + a;\n  var b = a in document;\n  b || (b = document.createElement(\"div\"), b.setAttribute(a, \"return;\"), b = \"function\" === typeof b[a]);\n  return b;\n}\n\nvar Sd = new (\"function\" === typeof WeakMap ? WeakMap : Map)();\n\nfunction xc(a) {\n  var b = Sd.get(a);\n  void 0 === b && (b = new Set(), Sd.set(a, b));\n  return b;\n}\n\nfunction yc(a, b, c) {\n  if (!c.has(a)) {\n    switch (a) {\n      case \"scroll\":\n        Md(b, \"scroll\", !0);\n        break;\n\n      case \"focus\":\n      case \"blur\":\n        Md(b, \"focus\", !0);\n        Md(b, \"blur\", !0);\n        c.add(\"blur\");\n        c.add(\"focus\");\n        break;\n\n      case \"cancel\":\n      case \"close\":\n        Rd(a) && Md(b, a, !0);\n        break;\n\n      case \"invalid\":\n      case \"submit\":\n      case \"reset\":\n        break;\n\n      default:\n        -1 === cc.indexOf(a) && F(a, b);\n    }\n\n    c.add(a);\n  }\n}\n\nvar Td = {\n  animationIterationCount: !0,\n  borderImageOutset: !0,\n  borderImageSlice: !0,\n  borderImageWidth: !0,\n  boxFlex: !0,\n  boxFlexGroup: !0,\n  boxOrdinalGroup: !0,\n  columnCount: !0,\n  columns: !0,\n  flex: !0,\n  flexGrow: !0,\n  flexPositive: !0,\n  flexShrink: !0,\n  flexNegative: !0,\n  flexOrder: !0,\n  gridArea: !0,\n  gridRow: !0,\n  gridRowEnd: !0,\n  gridRowSpan: !0,\n  gridRowStart: !0,\n  gridColumn: !0,\n  gridColumnEnd: !0,\n  gridColumnSpan: !0,\n  gridColumnStart: !0,\n  fontWeight: !0,\n  lineClamp: !0,\n  lineHeight: !0,\n  opacity: !0,\n  order: !0,\n  orphans: !0,\n  tabSize: !0,\n  widows: !0,\n  zIndex: !0,\n  zoom: !0,\n  fillOpacity: !0,\n  floodOpacity: !0,\n  stopOpacity: !0,\n  strokeDasharray: !0,\n  strokeDashoffset: !0,\n  strokeMiterlimit: !0,\n  strokeOpacity: !0,\n  strokeWidth: !0\n},\n    Ud = [\"Webkit\", \"ms\", \"Moz\", \"O\"];\nObject.keys(Td).forEach(function (a) {\n  Ud.forEach(function (b) {\n    b = b + a.charAt(0).toUpperCase() + a.substring(1);\n    Td[b] = Td[a];\n  });\n});\n\nfunction Vd(a, b, c) {\n  return null == b || \"boolean\" === typeof b || \"\" === b ? \"\" : c || \"number\" !== typeof b || 0 === b || Td.hasOwnProperty(a) && Td[a] ? (\"\" + b).trim() : b + \"px\";\n}\n\nfunction Wd(a, b) {\n  a = a.style;\n\n  for (var c in b) {\n    if (b.hasOwnProperty(c)) {\n      var d = 0 === c.indexOf(\"--\"),\n          e = Vd(c, b[c], d);\n      \"float\" === c && (c = \"cssFloat\");\n      d ? a.setProperty(c, e) : a[c] = e;\n    }\n  }\n}\n\nvar Xd = n({\n  menuitem: !0\n}, {\n  area: !0,\n  base: !0,\n  br: !0,\n  col: !0,\n  embed: !0,\n  hr: !0,\n  img: !0,\n  input: !0,\n  keygen: !0,\n  link: !0,\n  meta: !0,\n  param: !0,\n  source: !0,\n  track: !0,\n  wbr: !0\n});\n\nfunction Yd(a, b) {\n  if (b) {\n    if (Xd[a] && (null != b.children || null != b.dangerouslySetInnerHTML)) throw Error(u(137, a, \"\"));\n\n    if (null != b.dangerouslySetInnerHTML) {\n      if (null != b.children) throw Error(u(60));\n      if (!(\"object\" === typeof b.dangerouslySetInnerHTML && \"__html\" in b.dangerouslySetInnerHTML)) throw Error(u(61));\n    }\n\n    if (null != b.style && \"object\" !== typeof b.style) throw Error(u(62, \"\"));\n  }\n}\n\nfunction Zd(a, b) {\n  if (-1 === a.indexOf(\"-\")) return \"string\" === typeof b.is;\n\n  switch (a) {\n    case \"annotation-xml\":\n    case \"color-profile\":\n    case \"font-face\":\n    case \"font-face-src\":\n    case \"font-face-uri\":\n    case \"font-face-format\":\n    case \"font-face-name\":\n    case \"missing-glyph\":\n      return !1;\n\n    default:\n      return !0;\n  }\n}\n\nfunction $d(a, b) {\n  a = 9 === a.nodeType || 11 === a.nodeType ? a : a.ownerDocument;\n  var c = xc(a);\n  b = ja[b];\n\n  for (var d = 0; d < b.length; d++) {\n    yc(b[d], a, c);\n  }\n}\n\nfunction ae() {}\n\nfunction be(a) {\n  a = a || (\"undefined\" !== typeof document ? document : void 0);\n  if (\"undefined\" === typeof a) return null;\n\n  try {\n    return a.activeElement || a.body;\n  } catch (b) {\n    return a.body;\n  }\n}\n\nfunction ce(a) {\n  for (; a && a.firstChild;) {\n    a = a.firstChild;\n  }\n\n  return a;\n}\n\nfunction de(a, b) {\n  var c = ce(a);\n  a = 0;\n\n  for (var d; c;) {\n    if (3 === c.nodeType) {\n      d = a + c.textContent.length;\n      if (a <= b && d >= b) return {\n        node: c,\n        offset: b - a\n      };\n      a = d;\n    }\n\n    a: {\n      for (; c;) {\n        if (c.nextSibling) {\n          c = c.nextSibling;\n          break a;\n        }\n\n        c = c.parentNode;\n      }\n\n      c = void 0;\n    }\n\n    c = ce(c);\n  }\n}\n\nfunction ee(a, b) {\n  return a && b ? a === b ? !0 : a && 3 === a.nodeType ? !1 : b && 3 === b.nodeType ? ee(a, b.parentNode) : \"contains\" in a ? a.contains(b) : a.compareDocumentPosition ? !!(a.compareDocumentPosition(b) & 16) : !1 : !1;\n}\n\nfunction fe() {\n  for (var a = window, b = be(); b instanceof a.HTMLIFrameElement;) {\n    try {\n      var c = \"string\" === typeof b.contentWindow.location.href;\n    } catch (d) {\n      c = !1;\n    }\n\n    if (c) a = b.contentWindow;else break;\n    b = be(a.document);\n  }\n\n  return b;\n}\n\nfunction ge(a) {\n  var b = a && a.nodeName && a.nodeName.toLowerCase();\n  return b && (\"input\" === b && (\"text\" === a.type || \"search\" === a.type || \"tel\" === a.type || \"url\" === a.type || \"password\" === a.type) || \"textarea\" === b || \"true\" === a.contentEditable);\n}\n\nvar he = \"$\",\n    ie = \"/$\",\n    je = \"$?\",\n    ke = \"$!\",\n    le = null,\n    me = null;\n\nfunction ne(a, b) {\n  switch (a) {\n    case \"button\":\n    case \"input\":\n    case \"select\":\n    case \"textarea\":\n      return !!b.autoFocus;\n  }\n\n  return !1;\n}\n\nfunction oe(a, b) {\n  return \"textarea\" === a || \"option\" === a || \"noscript\" === a || \"string\" === typeof b.children || \"number\" === typeof b.children || \"object\" === typeof b.dangerouslySetInnerHTML && null !== b.dangerouslySetInnerHTML && null != b.dangerouslySetInnerHTML.__html;\n}\n\nvar pe = \"function\" === typeof setTimeout ? setTimeout : void 0,\n    qe = \"function\" === typeof clearTimeout ? clearTimeout : void 0;\n\nfunction re(a) {\n  for (; null != a; a = a.nextSibling) {\n    var b = a.nodeType;\n    if (1 === b || 3 === b) break;\n  }\n\n  return a;\n}\n\nfunction se(a) {\n  a = a.previousSibling;\n\n  for (var b = 0; a;) {\n    if (8 === a.nodeType) {\n      var c = a.data;\n\n      if (c === he || c === ke || c === je) {\n        if (0 === b) return a;\n        b--;\n      } else c === ie && b++;\n    }\n\n    a = a.previousSibling;\n  }\n\n  return null;\n}\n\nvar te = Math.random().toString(36).slice(2),\n    ue = \"__reactInternalInstance$\" + te,\n    ve = \"__reactEventHandlers$\" + te,\n    we = \"__reactContainere$\" + te;\n\nfunction Fc(a) {\n  var b = a[ue];\n  if (b) return b;\n\n  for (var c = a.parentNode; c;) {\n    if (b = c[we] || c[ue]) {\n      c = b.alternate;\n      if (null !== b.child || null !== c && null !== c.child) for (a = se(a); null !== a;) {\n        if (c = a[ue]) return c;\n        a = se(a);\n      }\n      return b;\n    }\n\n    a = c;\n    c = a.parentNode;\n  }\n\n  return null;\n}\n\nfunction Cc(a) {\n  a = a[ue] || a[we];\n  return !a || 5 !== a.tag && 6 !== a.tag && 13 !== a.tag && 3 !== a.tag ? null : a;\n}\n\nfunction xe(a) {\n  if (5 === a.tag || 6 === a.tag) return a.stateNode;\n  throw Error(u(33));\n}\n\nfunction ye(a) {\n  return a[ve] || null;\n}\n\nvar ze = null,\n    Ae = null,\n    Be = null;\n\nfunction Ce() {\n  if (Be) return Be;\n  var a,\n      b = Ae,\n      c = b.length,\n      d,\n      e = \"value\" in ze ? ze.value : ze.textContent,\n      f = e.length;\n\n  for (a = 0; a < c && b[a] === e[a]; a++) {\n    ;\n  }\n\n  var g = c - a;\n\n  for (d = 1; d <= g && b[c - d] === e[f - d]; d++) {\n    ;\n  }\n\n  return Be = e.slice(a, 1 < d ? 1 - d : void 0);\n}\n\nvar De = E.extend({\n  data: null\n}),\n    Ee = E.extend({\n  data: null\n}),\n    Fe = [9, 13, 27, 32],\n    Ge = Ya && \"CompositionEvent\" in window,\n    He = null;\nYa && \"documentMode\" in document && (He = document.documentMode);\nvar Ie = Ya && \"TextEvent\" in window && !He,\n    Je = Ya && (!Ge || He && 8 < He && 11 >= He),\n    Ke = String.fromCharCode(32),\n    Le = {\n  beforeInput: {\n    phasedRegistrationNames: {\n      bubbled: \"onBeforeInput\",\n      captured: \"onBeforeInputCapture\"\n    },\n    dependencies: [\"compositionend\", \"keypress\", \"textInput\", \"paste\"]\n  },\n  compositionEnd: {\n    phasedRegistrationNames: {\n      bubbled: \"onCompositionEnd\",\n      captured: \"onCompositionEndCapture\"\n    },\n    dependencies: \"blur compositionend keydown keypress keyup mousedown\".split(\" \")\n  },\n  compositionStart: {\n    phasedRegistrationNames: {\n      bubbled: \"onCompositionStart\",\n      captured: \"onCompositionStartCapture\"\n    },\n    dependencies: \"blur compositionstart keydown keypress keyup mousedown\".split(\" \")\n  },\n  compositionUpdate: {\n    phasedRegistrationNames: {\n      bubbled: \"onCompositionUpdate\",\n      captured: \"onCompositionUpdateCapture\"\n    },\n    dependencies: \"blur compositionupdate keydown keypress keyup mousedown\".split(\" \")\n  }\n},\n    Me = !1;\n\nfunction Ne(a, b) {\n  switch (a) {\n    case \"keyup\":\n      return -1 !== Fe.indexOf(b.keyCode);\n\n    case \"keydown\":\n      return 229 !== b.keyCode;\n\n    case \"keypress\":\n    case \"mousedown\":\n    case \"blur\":\n      return !0;\n\n    default:\n      return !1;\n  }\n}\n\nfunction Oe(a) {\n  a = a.detail;\n  return \"object\" === typeof a && \"data\" in a ? a.data : null;\n}\n\nvar Pe = !1;\n\nfunction Qe(a, b) {\n  switch (a) {\n    case \"compositionend\":\n      return Oe(b);\n\n    case \"keypress\":\n      if (32 !== b.which) return null;\n      Me = !0;\n      return Ke;\n\n    case \"textInput\":\n      return a = b.data, a === Ke && Me ? null : a;\n\n    default:\n      return null;\n  }\n}\n\nfunction Re(a, b) {\n  if (Pe) return \"compositionend\" === a || !Ge && Ne(a, b) ? (a = Ce(), Be = Ae = ze = null, Pe = !1, a) : null;\n\n  switch (a) {\n    case \"paste\":\n      return null;\n\n    case \"keypress\":\n      if (!(b.ctrlKey || b.altKey || b.metaKey) || b.ctrlKey && b.altKey) {\n        if (b[\"char\"] && 1 < b[\"char\"].length) return b[\"char\"];\n        if (b.which) return String.fromCharCode(b.which);\n      }\n\n      return null;\n\n    case \"compositionend\":\n      return Je && \"ko\" !== b.locale ? null : b.data;\n\n    default:\n      return null;\n  }\n}\n\nvar Se = {\n  eventTypes: Le,\n  extractEvents: function extractEvents(a, b, c, d) {\n    var e;\n    if (Ge) b: {\n      switch (a) {\n        case \"compositionstart\":\n          var f = Le.compositionStart;\n          break b;\n\n        case \"compositionend\":\n          f = Le.compositionEnd;\n          break b;\n\n        case \"compositionupdate\":\n          f = Le.compositionUpdate;\n          break b;\n      }\n\n      f = void 0;\n    } else Pe ? Ne(a, c) && (f = Le.compositionEnd) : \"keydown\" === a && 229 === c.keyCode && (f = Le.compositionStart);\n    f ? (Je && \"ko\" !== c.locale && (Pe || f !== Le.compositionStart ? f === Le.compositionEnd && Pe && (e = Ce()) : (ze = d, Ae = \"value\" in ze ? ze.value : ze.textContent, Pe = !0)), f = De.getPooled(f, b, c, d), e ? f.data = e : (e = Oe(c), null !== e && (f.data = e)), Sc(f), e = f) : e = null;\n    (a = Ie ? Qe(a, c) : Re(a, c)) ? (b = Ee.getPooled(Le.beforeInput, b, c, d), b.data = a, Sc(b)) : b = null;\n    return null === e ? b : null === b ? e : [e, b];\n  }\n},\n    Te = {\n  color: !0,\n  date: !0,\n  datetime: !0,\n  \"datetime-local\": !0,\n  email: !0,\n  month: !0,\n  number: !0,\n  password: !0,\n  range: !0,\n  search: !0,\n  tel: !0,\n  text: !0,\n  time: !0,\n  url: !0,\n  week: !0\n};\n\nfunction Ue(a) {\n  var b = a && a.nodeName && a.nodeName.toLowerCase();\n  return \"input\" === b ? !!Te[a.type] : \"textarea\" === b ? !0 : !1;\n}\n\nvar Ve = {\n  change: {\n    phasedRegistrationNames: {\n      bubbled: \"onChange\",\n      captured: \"onChangeCapture\"\n    },\n    dependencies: \"blur change click focus input keydown keyup selectionchange\".split(\" \")\n  }\n};\n\nfunction We(a, b, c) {\n  a = E.getPooled(Ve.change, a, b, c);\n  a.type = \"change\";\n  cb(c);\n  Sc(a);\n  return a;\n}\n\nvar Xe = null,\n    Ye = null;\n\nfunction Ze(a) {\n  Ba(a);\n}\n\nfunction $e(a) {\n  var b = xe(a);\n  if (zb(b)) return a;\n}\n\nfunction af(a, b) {\n  if (\"change\" === a) return b;\n}\n\nvar bf = !1;\nYa && (bf = Rd(\"input\") && (!document.documentMode || 9 < document.documentMode));\n\nfunction cf() {\n  Xe && (Xe.detachEvent(\"onpropertychange\", df), Ye = Xe = null);\n}\n\nfunction df(a) {\n  if (\"value\" === a.propertyName && $e(Ye)) if (a = We(Ye, a, Mc(a)), ib) Ba(a);else {\n    ib = !0;\n\n    try {\n      eb(Ze, a);\n    } finally {\n      ib = !1, kb();\n    }\n  }\n}\n\nfunction ef(a, b, c) {\n  \"focus\" === a ? (cf(), Xe = b, Ye = c, Xe.attachEvent(\"onpropertychange\", df)) : \"blur\" === a && cf();\n}\n\nfunction ff(a) {\n  if (\"selectionchange\" === a || \"keyup\" === a || \"keydown\" === a) return $e(Ye);\n}\n\nfunction gf(a, b) {\n  if (\"click\" === a) return $e(b);\n}\n\nfunction hf(a, b) {\n  if (\"input\" === a || \"change\" === a) return $e(b);\n}\n\nvar jf = {\n  eventTypes: Ve,\n  _isInputEventSupported: bf,\n  extractEvents: function extractEvents(a, b, c, d) {\n    var e = b ? xe(b) : window,\n        f = e.nodeName && e.nodeName.toLowerCase();\n    if (\"select\" === f || \"input\" === f && \"file\" === e.type) var g = af;else if (Ue(e)) {\n      if (bf) g = hf;else {\n        g = ff;\n        var h = ef;\n      }\n    } else (f = e.nodeName) && \"input\" === f.toLowerCase() && (\"checkbox\" === e.type || \"radio\" === e.type) && (g = gf);\n    if (g && (g = g(a, b))) return We(g, c, d);\n    h && h(a, e, b);\n    \"blur\" === a && (a = e._wrapperState) && a.controlled && \"number\" === e.type && Fb(e, \"number\", e.value);\n  }\n},\n    kf = {\n  mouseEnter: {\n    registrationName: \"onMouseEnter\",\n    dependencies: [\"mouseout\", \"mouseover\"]\n  },\n  mouseLeave: {\n    registrationName: \"onMouseLeave\",\n    dependencies: [\"mouseout\", \"mouseover\"]\n  },\n  pointerEnter: {\n    registrationName: \"onPointerEnter\",\n    dependencies: [\"pointerout\", \"pointerover\"]\n  },\n  pointerLeave: {\n    registrationName: \"onPointerLeave\",\n    dependencies: [\"pointerout\", \"pointerover\"]\n  }\n},\n    lf,\n    mf = {\n  eventTypes: kf,\n  extractEvents: function extractEvents(a, b, c, d, e) {\n    var f = \"mouseover\" === a || \"pointerover\" === a,\n        g = \"mouseout\" === a || \"pointerout\" === a;\n    if (f && 0 === (e & 32) && (c.relatedTarget || c.fromElement) || !g && !f) return null;\n    e = d.window === d ? d : (e = d.ownerDocument) ? e.defaultView || e.parentWindow : window;\n\n    if (g) {\n      if (g = b, b = (b = c.relatedTarget || c.toElement) ? Fc(b) : null, null !== b && (f = ec(b), b !== f || 5 !== b.tag && 6 !== b.tag)) b = null;\n    } else g = null;\n\n    if (g === b) return null;\n\n    if (\"mouseout\" === a || \"mouseover\" === a) {\n      var h = nd;\n      var k = kf.mouseLeave;\n      var l = kf.mouseEnter;\n      var m = \"mouse\";\n    } else if (\"pointerout\" === a || \"pointerover\" === a) h = od, k = kf.pointerLeave, l = kf.pointerEnter, m = \"pointer\";\n\n    a = null == g ? e : xe(g);\n    e = null == b ? e : xe(b);\n    k = h.getPooled(k, g, c, d);\n    k.type = m + \"leave\";\n    k.target = a;\n    k.relatedTarget = e;\n    d = h.getPooled(l, b, c, d);\n    d.type = m + \"enter\";\n    d.target = e;\n    d.relatedTarget = a;\n    h = g;\n    m = b;\n    if (h && m) a: {\n      l = h;\n      a = m;\n      g = 0;\n\n      for (b = l; b; b = Nc(b)) {\n        g++;\n      }\n\n      b = 0;\n\n      for (e = a; e; e = Nc(e)) {\n        b++;\n      }\n\n      for (; 0 < g - b;) {\n        l = Nc(l), g--;\n      }\n\n      for (; 0 < b - g;) {\n        a = Nc(a), b--;\n      }\n\n      for (; g--;) {\n        if (l === a || l === a.alternate) break a;\n        l = Nc(l);\n        a = Nc(a);\n      }\n\n      l = null;\n    } else l = null;\n    a = l;\n\n    for (l = []; h && h !== a;) {\n      g = h.alternate;\n      if (null !== g && g === a) break;\n      l.push(h);\n      h = Nc(h);\n    }\n\n    for (h = []; m && m !== a;) {\n      g = m.alternate;\n      if (null !== g && g === a) break;\n      h.push(m);\n      m = Nc(m);\n    }\n\n    for (m = 0; m < l.length; m++) {\n      Qc(l[m], \"bubbled\", k);\n    }\n\n    for (m = h.length; 0 < m--;) {\n      Qc(h[m], \"captured\", d);\n    }\n\n    if (c === lf) return lf = null, [k];\n    lf = c;\n    return [k, d];\n  }\n};\n\nfunction nf(a, b) {\n  return a === b && (0 !== a || 1 / a === 1 / b) || a !== a && b !== b;\n}\n\nvar of = \"function\" === typeof Object.is ? Object.is : nf,\n    pf = Object.prototype.hasOwnProperty;\n\nfunction qf(a, b) {\n  if (of(a, b)) return !0;\n  if (\"object\" !== typeof a || null === a || \"object\" !== typeof b || null === b) return !1;\n  var c = Object.keys(a),\n      d = Object.keys(b);\n  if (c.length !== d.length) return !1;\n\n  for (d = 0; d < c.length; d++) {\n    if (!pf.call(b, c[d]) || !of(a[c[d]], b[c[d]])) return !1;\n  }\n\n  return !0;\n}\n\nvar rf = Ya && \"documentMode\" in document && 11 >= document.documentMode,\n    sf = {\n  select: {\n    phasedRegistrationNames: {\n      bubbled: \"onSelect\",\n      captured: \"onSelectCapture\"\n    },\n    dependencies: \"blur contextmenu dragend focus keydown keyup mousedown mouseup selectionchange\".split(\" \")\n  }\n},\n    tf = null,\n    uf = null,\n    vf = null,\n    wf = !1;\n\nfunction xf(a, b) {\n  var c = b.window === b ? b.document : 9 === b.nodeType ? b : b.ownerDocument;\n  if (wf || null == tf || tf !== be(c)) return null;\n  c = tf;\n  \"selectionStart\" in c && ge(c) ? c = {\n    start: c.selectionStart,\n    end: c.selectionEnd\n  } : (c = (c.ownerDocument && c.ownerDocument.defaultView || window).getSelection(), c = {\n    anchorNode: c.anchorNode,\n    anchorOffset: c.anchorOffset,\n    focusNode: c.focusNode,\n    focusOffset: c.focusOffset\n  });\n  return vf && qf(vf, c) ? null : (vf = c, a = E.getPooled(sf.select, uf, a, b), a.type = \"select\", a.target = tf, Sc(a), a);\n}\n\nvar yf = {\n  eventTypes: sf,\n  extractEvents: function extractEvents(a, b, c, d) {\n    var e = d.window === d ? d.document : 9 === d.nodeType ? d : d.ownerDocument,\n        f;\n\n    if (!(f = !e)) {\n      a: {\n        e = xc(e);\n        f = ja.onSelect;\n\n        for (var g = 0; g < f.length; g++) {\n          if (!e.has(f[g])) {\n            e = !1;\n            break a;\n          }\n        }\n\n        e = !0;\n      }\n\n      f = !e;\n    }\n\n    if (f) return null;\n    e = b ? xe(b) : window;\n\n    switch (a) {\n      case \"focus\":\n        if (Ue(e) || \"true\" === e.contentEditable) tf = e, uf = b, vf = null;\n        break;\n\n      case \"blur\":\n        vf = uf = tf = null;\n        break;\n\n      case \"mousedown\":\n        wf = !0;\n        break;\n\n      case \"contextmenu\":\n      case \"mouseup\":\n      case \"dragend\":\n        return wf = !1, xf(c, d);\n\n      case \"selectionchange\":\n        if (rf) break;\n\n      case \"keydown\":\n      case \"keyup\":\n        return xf(c, d);\n    }\n\n    return null;\n  }\n};\nCa.injectEventPluginOrder(\"ResponderEventPlugin SimpleEventPlugin EnterLeaveEventPlugin ChangeEventPlugin SelectEventPlugin BeforeInputEventPlugin\".split(\" \"));\nvar zf = Cc;\nsa = ye;\nua = zf;\nva = xe;\nCa.injectEventPluginsByName({\n  SimpleEventPlugin: Ed,\n  EnterLeaveEventPlugin: mf,\n  ChangeEventPlugin: jf,\n  SelectEventPlugin: yf,\n  BeforeInputEventPlugin: Se\n});\nnew Set();\nvar Af = [],\n    Bf = -1;\n\nfunction G(a) {\n  0 > Bf || (a.current = Af[Bf], Af[Bf] = null, Bf--);\n}\n\nfunction I(a, b) {\n  Bf++;\n  Af[Bf] = a.current;\n  a.current = b;\n}\n\nvar Cf = {},\n    J = {\n  current: Cf\n},\n    K = {\n  current: !1\n},\n    Df = Cf;\n\nfunction Ef(a, b) {\n  var c = a.type.contextTypes;\n  if (!c) return Cf;\n  var d = a.stateNode;\n  if (d && d.__reactInternalMemoizedUnmaskedChildContext === b) return d.__reactInternalMemoizedMaskedChildContext;\n  var e = {},\n      f;\n\n  for (f in c) {\n    e[f] = b[f];\n  }\n\n  d && (a = a.stateNode, a.__reactInternalMemoizedUnmaskedChildContext = b, a.__reactInternalMemoizedMaskedChildContext = e);\n  return e;\n}\n\nfunction L(a) {\n  a = a.childContextTypes;\n  return null !== a && void 0 !== a;\n}\n\nfunction Ff(a) {\n  G(K, a);\n  G(J, a);\n}\n\nfunction Gf(a) {\n  G(K, a);\n  G(J, a);\n}\n\nfunction Hf(a, b, c) {\n  if (J.current !== Cf) throw Error(u(168));\n  I(J, b, a);\n  I(K, c, a);\n}\n\nfunction If(a, b, c) {\n  var d = a.stateNode;\n  a = b.childContextTypes;\n  if (\"function\" !== typeof d.getChildContext) return c;\n  d = d.getChildContext();\n\n  for (var e in d) {\n    if (!(e in a)) throw Error(u(108, Wa(b) || \"Unknown\", e));\n  }\n\n  return n({}, c, {}, d);\n}\n\nfunction Jf(a) {\n  var b = a.stateNode;\n  b = b && b.__reactInternalMemoizedMergedChildContext || Cf;\n  Df = J.current;\n  I(J, b, a);\n  I(K, K.current, a);\n  return !0;\n}\n\nfunction Kf(a, b, c) {\n  var d = a.stateNode;\n  if (!d) throw Error(u(169));\n  c ? (b = If(a, b, Df), d.__reactInternalMemoizedMergedChildContext = b, G(K, a), G(J, a), I(J, b, a)) : G(K, a);\n  I(K, c, a);\n}\n\nvar Lf = q.unstable_runWithPriority,\n    Mf = q.unstable_scheduleCallback,\n    Nf = q.unstable_cancelCallback,\n    Of = q.unstable_shouldYield,\n    Pf = q.unstable_requestPaint,\n    Qf = q.unstable_now,\n    Rf = q.unstable_getCurrentPriorityLevel,\n    Sf = q.unstable_ImmediatePriority,\n    Tf = q.unstable_UserBlockingPriority,\n    Uf = q.unstable_NormalPriority,\n    Vf = q.unstable_LowPriority,\n    Wf = q.unstable_IdlePriority,\n    Xf = {},\n    Yf = void 0 !== Pf ? Pf : function () {},\n    Zf = null,\n    $f = null,\n    ag = !1,\n    bg = Qf(),\n    cg = 1E4 > bg ? Qf : function () {\n  return Qf() - bg;\n};\n\nfunction dg() {\n  switch (Rf()) {\n    case Sf:\n      return 99;\n\n    case Tf:\n      return 98;\n\n    case Uf:\n      return 97;\n\n    case Vf:\n      return 96;\n\n    case Wf:\n      return 95;\n\n    default:\n      throw Error(u(332));\n  }\n}\n\nfunction eg(a) {\n  switch (a) {\n    case 99:\n      return Sf;\n\n    case 98:\n      return Tf;\n\n    case 97:\n      return Uf;\n\n    case 96:\n      return Vf;\n\n    case 95:\n      return Wf;\n\n    default:\n      throw Error(u(332));\n  }\n}\n\nfunction fg(a, b) {\n  a = eg(a);\n  return Lf(a, b);\n}\n\nfunction gg(a, b, c) {\n  a = eg(a);\n  return Mf(a, b, c);\n}\n\nfunction hg(a) {\n  null === Zf ? (Zf = [a], $f = Mf(Sf, ig)) : Zf.push(a);\n  return Xf;\n}\n\nfunction jg() {\n  if (null !== $f) {\n    var a = $f;\n    $f = null;\n    Nf(a);\n  }\n\n  ig();\n}\n\nfunction ig() {\n  if (!ag && null !== Zf) {\n    ag = !0;\n    var a = 0;\n\n    try {\n      var b = Zf;\n      fg(99, function () {\n        for (; a < b.length; a++) {\n          var c = b[a];\n\n          do {\n            c = c(!0);\n          } while (null !== c);\n        }\n      });\n      Zf = null;\n    } catch (c) {\n      throw null !== Zf && (Zf = Zf.slice(a + 1)), Mf(Sf, jg), c;\n    } finally {\n      ag = !1;\n    }\n  }\n}\n\nvar kg = 3;\n\nfunction lg(a, b, c) {\n  c /= 10;\n  return 1073741821 - (((1073741821 - a + b / 10) / c | 0) + 1) * c;\n}\n\nfunction mg(a, b) {\n  if (a && a.defaultProps) {\n    b = n({}, b);\n    a = a.defaultProps;\n\n    for (var c in a) {\n      void 0 === b[c] && (b[c] = a[c]);\n    }\n  }\n\n  return b;\n}\n\nvar ng = {\n  current: null\n},\n    og = null,\n    pg = null,\n    qg = null;\n\nfunction rg() {\n  qg = pg = og = null;\n}\n\nfunction sg(a, b) {\n  var c = a.type._context;\n  I(ng, c._currentValue, a);\n  c._currentValue = b;\n}\n\nfunction tg(a) {\n  var b = ng.current;\n  G(ng, a);\n  a.type._context._currentValue = b;\n}\n\nfunction ug(a, b) {\n  for (; null !== a;) {\n    var c = a.alternate;\n    if (a.childExpirationTime < b) a.childExpirationTime = b, null !== c && c.childExpirationTime < b && (c.childExpirationTime = b);else if (null !== c && c.childExpirationTime < b) c.childExpirationTime = b;else break;\n    a = a[\"return\"];\n  }\n}\n\nfunction vg(a, b) {\n  og = a;\n  qg = pg = null;\n  a = a.dependencies;\n  null !== a && null !== a.firstContext && (a.expirationTime >= b && (wg = !0), a.firstContext = null);\n}\n\nfunction xg(a, b) {\n  if (qg !== a && !1 !== b && 0 !== b) {\n    if (\"number\" !== typeof b || 1073741823 === b) qg = a, b = 1073741823;\n    b = {\n      context: a,\n      observedBits: b,\n      next: null\n    };\n\n    if (null === pg) {\n      if (null === og) throw Error(u(308));\n      pg = b;\n      og.dependencies = {\n        expirationTime: 0,\n        firstContext: b,\n        responders: null\n      };\n    } else pg = pg.next = b;\n  }\n\n  return a._currentValue;\n}\n\nvar yg = !1;\n\nfunction zg(a) {\n  return {\n    baseState: a,\n    firstUpdate: null,\n    lastUpdate: null,\n    firstCapturedUpdate: null,\n    lastCapturedUpdate: null,\n    firstEffect: null,\n    lastEffect: null,\n    firstCapturedEffect: null,\n    lastCapturedEffect: null\n  };\n}\n\nfunction Ag(a) {\n  return {\n    baseState: a.baseState,\n    firstUpdate: a.firstUpdate,\n    lastUpdate: a.lastUpdate,\n    firstCapturedUpdate: null,\n    lastCapturedUpdate: null,\n    firstEffect: null,\n    lastEffect: null,\n    firstCapturedEffect: null,\n    lastCapturedEffect: null\n  };\n}\n\nfunction Bg(a, b) {\n  return {\n    expirationTime: a,\n    suspenseConfig: b,\n    tag: 0,\n    payload: null,\n    callback: null,\n    next: null,\n    nextEffect: null\n  };\n}\n\nfunction Cg(a, b) {\n  null === a.lastUpdate ? a.firstUpdate = a.lastUpdate = b : (a.lastUpdate.next = b, a.lastUpdate = b);\n}\n\nfunction Dg(a, b) {\n  var c = a.alternate;\n\n  if (null === c) {\n    var d = a.updateQueue;\n    var e = null;\n    null === d && (d = a.updateQueue = zg(a.memoizedState));\n  } else d = a.updateQueue, e = c.updateQueue, null === d ? null === e ? (d = a.updateQueue = zg(a.memoizedState), e = c.updateQueue = zg(c.memoizedState)) : d = a.updateQueue = Ag(e) : null === e && (e = c.updateQueue = Ag(d));\n\n  null === e || d === e ? Cg(d, b) : null === d.lastUpdate || null === e.lastUpdate ? (Cg(d, b), Cg(e, b)) : (Cg(d, b), e.lastUpdate = b);\n}\n\nfunction Eg(a, b) {\n  var c = a.updateQueue;\n  c = null === c ? a.updateQueue = zg(a.memoizedState) : Fg(a, c);\n  null === c.lastCapturedUpdate ? c.firstCapturedUpdate = c.lastCapturedUpdate = b : (c.lastCapturedUpdate.next = b, c.lastCapturedUpdate = b);\n}\n\nfunction Fg(a, b) {\n  var c = a.alternate;\n  null !== c && b === c.updateQueue && (b = a.updateQueue = Ag(b));\n  return b;\n}\n\nfunction Gg(a, b, c, d, e, f) {\n  switch (c.tag) {\n    case 1:\n      return a = c.payload, \"function\" === typeof a ? a.call(f, d, e) : a;\n\n    case 3:\n      a.effectTag = a.effectTag & -4097 | 64;\n\n    case 0:\n      a = c.payload;\n      e = \"function\" === typeof a ? a.call(f, d, e) : a;\n      if (null === e || void 0 === e) break;\n      return n({}, d, e);\n\n    case 2:\n      yg = !0;\n  }\n\n  return d;\n}\n\nfunction Hg(a, b, c, d, e) {\n  yg = !1;\n  b = Fg(a, b);\n\n  for (var f = b.baseState, g = null, h = 0, k = b.firstUpdate, l = f; null !== k;) {\n    var m = k.expirationTime;\n    m < e ? (null === g && (g = k, f = l), h < m && (h = m)) : (Ig(m, k.suspenseConfig), l = Gg(a, b, k, l, c, d), null !== k.callback && (a.effectTag |= 32, k.nextEffect = null, null === b.lastEffect ? b.firstEffect = b.lastEffect = k : (b.lastEffect.nextEffect = k, b.lastEffect = k)));\n    k = k.next;\n  }\n\n  m = null;\n\n  for (k = b.firstCapturedUpdate; null !== k;) {\n    var C = k.expirationTime;\n    C < e ? (null === m && (m = k, null === g && (f = l)), h < C && (h = C)) : (l = Gg(a, b, k, l, c, d), null !== k.callback && (a.effectTag |= 32, k.nextEffect = null, null === b.lastCapturedEffect ? b.firstCapturedEffect = b.lastCapturedEffect = k : (b.lastCapturedEffect.nextEffect = k, b.lastCapturedEffect = k)));\n    k = k.next;\n  }\n\n  null === g && (b.lastUpdate = null);\n  null === m ? b.lastCapturedUpdate = null : a.effectTag |= 32;\n  null === g && null === m && (f = l);\n  b.baseState = f;\n  b.firstUpdate = g;\n  b.firstCapturedUpdate = m;\n  Jg(h);\n  a.expirationTime = h;\n  a.memoizedState = l;\n}\n\nfunction Kg(a, b, c) {\n  null !== b.firstCapturedUpdate && (null !== b.lastUpdate && (b.lastUpdate.next = b.firstCapturedUpdate, b.lastUpdate = b.lastCapturedUpdate), b.firstCapturedUpdate = b.lastCapturedUpdate = null);\n  Lg(b.firstEffect, c);\n  b.firstEffect = b.lastEffect = null;\n  Lg(b.firstCapturedEffect, c);\n  b.firstCapturedEffect = b.lastCapturedEffect = null;\n}\n\nfunction Lg(a, b) {\n  for (; null !== a;) {\n    var c = a.callback;\n\n    if (null !== c) {\n      a.callback = null;\n      var d = b;\n      if (\"function\" !== typeof c) throw Error(u(191, c));\n      c.call(d);\n    }\n\n    a = a.nextEffect;\n  }\n}\n\nvar Mg = Ea.ReactCurrentBatchConfig,\n    Ng = new aa.Component().refs;\n\nfunction Og(a, b, c, d) {\n  b = a.memoizedState;\n  c = c(d, b);\n  c = null === c || void 0 === c ? b : n({}, b, c);\n  a.memoizedState = c;\n  d = a.updateQueue;\n  null !== d && 0 === a.expirationTime && (d.baseState = c);\n}\n\nvar Sg = {\n  isMounted: function isMounted(a) {\n    return (a = a._reactInternalFiber) ? ec(a) === a : !1;\n  },\n  enqueueSetState: function enqueueSetState(a, b, c) {\n    a = a._reactInternalFiber;\n    var d = Pg(),\n        e = Mg.suspense;\n    d = Qg(d, a, e);\n    e = Bg(d, e);\n    e.payload = b;\n    void 0 !== c && null !== c && (e.callback = c);\n    Dg(a, e);\n    Rg(a, d);\n  },\n  enqueueReplaceState: function enqueueReplaceState(a, b, c) {\n    a = a._reactInternalFiber;\n    var d = Pg(),\n        e = Mg.suspense;\n    d = Qg(d, a, e);\n    e = Bg(d, e);\n    e.tag = 1;\n    e.payload = b;\n    void 0 !== c && null !== c && (e.callback = c);\n    Dg(a, e);\n    Rg(a, d);\n  },\n  enqueueForceUpdate: function enqueueForceUpdate(a, b) {\n    a = a._reactInternalFiber;\n    var c = Pg(),\n        d = Mg.suspense;\n    c = Qg(c, a, d);\n    d = Bg(c, d);\n    d.tag = 2;\n    void 0 !== b && null !== b && (d.callback = b);\n    Dg(a, d);\n    Rg(a, c);\n  }\n};\n\nfunction Tg(a, b, c, d, e, f, g) {\n  a = a.stateNode;\n  return \"function\" === typeof a.shouldComponentUpdate ? a.shouldComponentUpdate(d, f, g) : b.prototype && b.prototype.isPureReactComponent ? !qf(c, d) || !qf(e, f) : !0;\n}\n\nfunction Ug(a, b, c) {\n  var d = !1,\n      e = Cf;\n  var f = b.contextType;\n  \"object\" === typeof f && null !== f ? f = xg(f) : (e = L(b) ? Df : J.current, d = b.contextTypes, f = (d = null !== d && void 0 !== d) ? Ef(a, e) : Cf);\n  b = new b(c, f);\n  a.memoizedState = null !== b.state && void 0 !== b.state ? b.state : null;\n  b.updater = Sg;\n  a.stateNode = b;\n  b._reactInternalFiber = a;\n  d && (a = a.stateNode, a.__reactInternalMemoizedUnmaskedChildContext = e, a.__reactInternalMemoizedMaskedChildContext = f);\n  return b;\n}\n\nfunction Vg(a, b, c, d) {\n  a = b.state;\n  \"function\" === typeof b.componentWillReceiveProps && b.componentWillReceiveProps(c, d);\n  \"function\" === typeof b.UNSAFE_componentWillReceiveProps && b.UNSAFE_componentWillReceiveProps(c, d);\n  b.state !== a && Sg.enqueueReplaceState(b, b.state, null);\n}\n\nfunction Wg(a, b, c, d) {\n  var e = a.stateNode;\n  e.props = c;\n  e.state = a.memoizedState;\n  e.refs = Ng;\n  var f = b.contextType;\n  \"object\" === typeof f && null !== f ? e.context = xg(f) : (f = L(b) ? Df : J.current, e.context = Ef(a, f));\n  f = a.updateQueue;\n  null !== f && (Hg(a, f, c, e, d), e.state = a.memoizedState);\n  f = b.getDerivedStateFromProps;\n  \"function\" === typeof f && (Og(a, b, f, c), e.state = a.memoizedState);\n  \"function\" === typeof b.getDerivedStateFromProps || \"function\" === typeof e.getSnapshotBeforeUpdate || \"function\" !== typeof e.UNSAFE_componentWillMount && \"function\" !== typeof e.componentWillMount || (b = e.state, \"function\" === typeof e.componentWillMount && e.componentWillMount(), \"function\" === typeof e.UNSAFE_componentWillMount && e.UNSAFE_componentWillMount(), b !== e.state && Sg.enqueueReplaceState(e, e.state, null), f = a.updateQueue, null !== f && (Hg(a, f, c, e, d), e.state = a.memoizedState));\n  \"function\" === typeof e.componentDidMount && (a.effectTag |= 4);\n}\n\nvar Xg = Array.isArray;\n\nfunction Yg(a, b, c) {\n  a = c.ref;\n\n  if (null !== a && \"function\" !== typeof a && \"object\" !== typeof a) {\n    if (c._owner) {\n      c = c._owner;\n\n      if (c) {\n        if (1 !== c.tag) throw Error(u(309));\n        var d = c.stateNode;\n      }\n\n      if (!d) throw Error(u(147, a));\n      var e = \"\" + a;\n      if (null !== b && null !== b.ref && \"function\" === typeof b.ref && b.ref._stringRef === e) return b.ref;\n\n      b = function b(a) {\n        var b = d.refs;\n        b === Ng && (b = d.refs = {});\n        null === a ? delete b[e] : b[e] = a;\n      };\n\n      b._stringRef = e;\n      return b;\n    }\n\n    if (\"string\" !== typeof a) throw Error(u(284));\n    if (!c._owner) throw Error(u(290, a));\n  }\n\n  return a;\n}\n\nfunction Zg(a, b) {\n  if (\"textarea\" !== a.type) throw Error(u(31, \"[object Object]\" === Object.prototype.toString.call(b) ? \"object with keys {\" + Object.keys(b).join(\", \") + \"}\" : b, \"\"));\n}\n\nfunction $g(a) {\n  function b(b, c) {\n    if (a) {\n      var d = b.lastEffect;\n      null !== d ? (d.nextEffect = c, b.lastEffect = c) : b.firstEffect = b.lastEffect = c;\n      c.nextEffect = null;\n      c.effectTag = 8;\n    }\n  }\n\n  function c(c, d) {\n    if (!a) return null;\n\n    for (; null !== d;) {\n      b(c, d), d = d.sibling;\n    }\n\n    return null;\n  }\n\n  function d(a, b) {\n    for (a = new Map(); null !== b;) {\n      null !== b.key ? a.set(b.key, b) : a.set(b.index, b), b = b.sibling;\n    }\n\n    return a;\n  }\n\n  function e(a, b, c) {\n    a = ah(a, b, c);\n    a.index = 0;\n    a.sibling = null;\n    return a;\n  }\n\n  function f(b, c, d) {\n    b.index = d;\n    if (!a) return c;\n    d = b.alternate;\n    if (null !== d) return d = d.index, d < c ? (b.effectTag = 2, c) : d;\n    b.effectTag = 2;\n    return c;\n  }\n\n  function g(b) {\n    a && null === b.alternate && (b.effectTag = 2);\n    return b;\n  }\n\n  function h(a, b, c, d) {\n    if (null === b || 6 !== b.tag) return b = bh(c, a.mode, d), b[\"return\"] = a, b;\n    b = e(b, c, d);\n    b[\"return\"] = a;\n    return b;\n  }\n\n  function k(a, b, c, d) {\n    if (null !== b && b.elementType === c.type) return d = e(b, c.props, d), d.ref = Yg(a, b, c), d[\"return\"] = a, d;\n    d = ch(c.type, c.key, c.props, null, a.mode, d);\n    d.ref = Yg(a, b, c);\n    d[\"return\"] = a;\n    return d;\n  }\n\n  function l(a, b, c, d) {\n    if (null === b || 4 !== b.tag || b.stateNode.containerInfo !== c.containerInfo || b.stateNode.implementation !== c.implementation) return b = dh(c, a.mode, d), b[\"return\"] = a, b;\n    b = e(b, c.children || [], d);\n    b[\"return\"] = a;\n    return b;\n  }\n\n  function m(a, b, c, d, f) {\n    if (null === b || 7 !== b.tag) return b = eh(c, a.mode, d, f), b[\"return\"] = a, b;\n    b = e(b, c, d);\n    b[\"return\"] = a;\n    return b;\n  }\n\n  function C(a, b, c) {\n    if (\"string\" === typeof b || \"number\" === typeof b) return b = bh(\"\" + b, a.mode, c), b[\"return\"] = a, b;\n\n    if (\"object\" === typeof b && null !== b) {\n      switch (b.$$typeof) {\n        case Ga:\n          return c = ch(b.type, b.key, b.props, null, a.mode, c), c.ref = Yg(a, null, b), c[\"return\"] = a, c;\n\n        case Ha:\n          return b = dh(b, a.mode, c), b[\"return\"] = a, b;\n      }\n\n      if (Xg(b) || Ua(b)) return b = eh(b, a.mode, c, null), b[\"return\"] = a, b;\n      Zg(a, b);\n    }\n\n    return null;\n  }\n\n  function y(a, b, c, d) {\n    var e = null !== b ? b.key : null;\n    if (\"string\" === typeof c || \"number\" === typeof c) return null !== e ? null : h(a, b, \"\" + c, d);\n\n    if (\"object\" === typeof c && null !== c) {\n      switch (c.$$typeof) {\n        case Ga:\n          return c.key === e ? c.type === Ia ? m(a, b, c.props.children, d, e) : k(a, b, c, d) : null;\n\n        case Ha:\n          return c.key === e ? l(a, b, c, d) : null;\n      }\n\n      if (Xg(c) || Ua(c)) return null !== e ? null : m(a, b, c, d, null);\n      Zg(a, c);\n    }\n\n    return null;\n  }\n\n  function H(a, b, c, d, e) {\n    if (\"string\" === typeof d || \"number\" === typeof d) return a = a.get(c) || null, h(b, a, \"\" + d, e);\n\n    if (\"object\" === typeof d && null !== d) {\n      switch (d.$$typeof) {\n        case Ga:\n          return a = a.get(null === d.key ? c : d.key) || null, d.type === Ia ? m(b, a, d.props.children, e, d.key) : k(b, a, d, e);\n\n        case Ha:\n          return a = a.get(null === d.key ? c : d.key) || null, l(b, a, d, e);\n      }\n\n      if (Xg(d) || Ua(d)) return a = a.get(c) || null, m(b, a, d, e, null);\n      Zg(b, d);\n    }\n\n    return null;\n  }\n\n  function z(e, g, h, k) {\n    for (var l = null, m = null, r = g, x = g = 0, A = null; null !== r && x < h.length; x++) {\n      r.index > x ? (A = r, r = null) : A = r.sibling;\n      var p = y(e, r, h[x], k);\n\n      if (null === p) {\n        null === r && (r = A);\n        break;\n      }\n\n      a && r && null === p.alternate && b(e, r);\n      g = f(p, g, x);\n      null === m ? l = p : m.sibling = p;\n      m = p;\n      r = A;\n    }\n\n    if (x === h.length) return c(e, r), l;\n\n    if (null === r) {\n      for (; x < h.length; x++) {\n        r = C(e, h[x], k), null !== r && (g = f(r, g, x), null === m ? l = r : m.sibling = r, m = r);\n      }\n\n      return l;\n    }\n\n    for (r = d(e, r); x < h.length; x++) {\n      A = H(r, e, x, h[x], k), null !== A && (a && null !== A.alternate && r[\"delete\"](null === A.key ? x : A.key), g = f(A, g, x), null === m ? l = A : m.sibling = A, m = A);\n    }\n\n    a && r.forEach(function (a) {\n      return b(e, a);\n    });\n    return l;\n  }\n\n  function ta(e, g, h, k) {\n    var l = Ua(h);\n    if (\"function\" !== typeof l) throw Error(u(150));\n    h = l.call(h);\n    if (null == h) throw Error(u(151));\n\n    for (var m = l = null, r = g, x = g = 0, A = null, p = h.next(); null !== r && !p.done; x++, p = h.next()) {\n      r.index > x ? (A = r, r = null) : A = r.sibling;\n      var z = y(e, r, p.value, k);\n\n      if (null === z) {\n        null === r && (r = A);\n        break;\n      }\n\n      a && r && null === z.alternate && b(e, r);\n      g = f(z, g, x);\n      null === m ? l = z : m.sibling = z;\n      m = z;\n      r = A;\n    }\n\n    if (p.done) return c(e, r), l;\n\n    if (null === r) {\n      for (; !p.done; x++, p = h.next()) {\n        p = C(e, p.value, k), null !== p && (g = f(p, g, x), null === m ? l = p : m.sibling = p, m = p);\n      }\n\n      return l;\n    }\n\n    for (r = d(e, r); !p.done; x++, p = h.next()) {\n      p = H(r, e, x, p.value, k), null !== p && (a && null !== p.alternate && r[\"delete\"](null === p.key ? x : p.key), g = f(p, g, x), null === m ? l = p : m.sibling = p, m = p);\n    }\n\n    a && r.forEach(function (a) {\n      return b(e, a);\n    });\n    return l;\n  }\n\n  return function (a, d, f, h) {\n    var k = \"object\" === typeof f && null !== f && f.type === Ia && null === f.key;\n    k && (f = f.props.children);\n    var l = \"object\" === typeof f && null !== f;\n    if (l) switch (f.$$typeof) {\n      case Ga:\n        a: {\n          l = f.key;\n\n          for (k = d; null !== k;) {\n            if (k.key === l) {\n              if (7 === k.tag ? f.type === Ia : k.elementType === f.type) {\n                c(a, k.sibling);\n                d = e(k, f.type === Ia ? f.props.children : f.props, h);\n                d.ref = Yg(a, k, f);\n                d[\"return\"] = a;\n                a = d;\n                break a;\n              } else {\n                c(a, k);\n                break;\n              }\n            } else b(a, k);\n            k = k.sibling;\n          }\n\n          f.type === Ia ? (d = eh(f.props.children, a.mode, h, f.key), d[\"return\"] = a, a = d) : (h = ch(f.type, f.key, f.props, null, a.mode, h), h.ref = Yg(a, d, f), h[\"return\"] = a, a = h);\n        }\n\n        return g(a);\n\n      case Ha:\n        a: {\n          for (k = f.key; null !== d;) {\n            if (d.key === k) {\n              if (4 === d.tag && d.stateNode.containerInfo === f.containerInfo && d.stateNode.implementation === f.implementation) {\n                c(a, d.sibling);\n                d = e(d, f.children || [], h);\n                d[\"return\"] = a;\n                a = d;\n                break a;\n              } else {\n                c(a, d);\n                break;\n              }\n            } else b(a, d);\n            d = d.sibling;\n          }\n\n          d = dh(f, a.mode, h);\n          d[\"return\"] = a;\n          a = d;\n        }\n\n        return g(a);\n    }\n    if (\"string\" === typeof f || \"number\" === typeof f) return f = \"\" + f, null !== d && 6 === d.tag ? (c(a, d.sibling), d = e(d, f, h), d[\"return\"] = a, a = d) : (c(a, d), d = bh(f, a.mode, h), d[\"return\"] = a, a = d), g(a);\n    if (Xg(f)) return z(a, d, f, h);\n    if (Ua(f)) return ta(a, d, f, h);\n    l && Zg(a, f);\n    if (\"undefined\" === typeof f && !k) switch (a.tag) {\n      case 1:\n      case 0:\n        throw a = a.type, Error(u(152, a.displayName || a.name || \"Component\"));\n    }\n    return c(a, d);\n  };\n}\n\nvar fh = $g(!0),\n    gh = $g(!1),\n    hh = {},\n    ih = {\n  current: hh\n},\n    jh = {\n  current: hh\n},\n    kh = {\n  current: hh\n};\n\nfunction lh(a) {\n  if (a === hh) throw Error(u(174));\n  return a;\n}\n\nfunction mh(a, b) {\n  I(kh, b, a);\n  I(jh, a, a);\n  I(ih, hh, a);\n  var c = b.nodeType;\n\n  switch (c) {\n    case 9:\n    case 11:\n      b = (b = b.documentElement) ? b.namespaceURI : Qb(null, \"\");\n      break;\n\n    default:\n      c = 8 === c ? b.parentNode : b, b = c.namespaceURI || null, c = c.tagName, b = Qb(b, c);\n  }\n\n  G(ih, a);\n  I(ih, b, a);\n}\n\nfunction nh(a) {\n  G(ih, a);\n  G(jh, a);\n  G(kh, a);\n}\n\nfunction oh(a) {\n  lh(kh.current);\n  var b = lh(ih.current);\n  var c = Qb(b, a.type);\n  b !== c && (I(jh, a, a), I(ih, c, a));\n}\n\nfunction ph(a) {\n  jh.current === a && (G(ih, a), G(jh, a));\n}\n\nvar M = {\n  current: 0\n};\n\nfunction qh(a) {\n  for (var b = a; null !== b;) {\n    if (13 === b.tag) {\n      var c = b.memoizedState;\n      if (null !== c && (c = c.dehydrated, null === c || c.data === je || c.data === ke)) return b;\n    } else if (19 === b.tag && void 0 !== b.memoizedProps.revealOrder) {\n      if (0 !== (b.effectTag & 64)) return b;\n    } else if (null !== b.child) {\n      b.child[\"return\"] = b;\n      b = b.child;\n      continue;\n    }\n\n    if (b === a) break;\n\n    for (; null === b.sibling;) {\n      if (null === b[\"return\"] || b[\"return\"] === a) return null;\n      b = b[\"return\"];\n    }\n\n    b.sibling[\"return\"] = b[\"return\"];\n    b = b.sibling;\n  }\n\n  return null;\n}\n\nfunction rh(a, b) {\n  return {\n    responder: a,\n    props: b\n  };\n}\n\nvar sh = Ea.ReactCurrentDispatcher,\n    N = Ea.ReactCurrentBatchConfig,\n    th = 0,\n    uh = null,\n    O = null,\n    vh = null,\n    wh = null,\n    P = null,\n    xh = null,\n    yh = 0,\n    zh = null,\n    Ah = 0,\n    Bh = !1,\n    Ch = null,\n    Gh = 0;\n\nfunction Q() {\n  throw Error(u(321));\n}\n\nfunction Hh(a, b) {\n  if (null === b) return !1;\n\n  for (var c = 0; c < b.length && c < a.length; c++) {\n    if (!of(a[c], b[c])) return !1;\n  }\n\n  return !0;\n}\n\nfunction Ih(a, b, c, d, e, f) {\n  th = f;\n  uh = b;\n  vh = null !== a ? a.memoizedState : null;\n  sh.current = null === vh ? Jh : Kh;\n  b = c(d, e);\n\n  if (Bh) {\n    do {\n      Bh = !1, Gh += 1, vh = null !== a ? a.memoizedState : null, xh = wh, zh = P = O = null, sh.current = Kh, b = c(d, e);\n    } while (Bh);\n\n    Ch = null;\n    Gh = 0;\n  }\n\n  sh.current = Lh;\n  a = uh;\n  a.memoizedState = wh;\n  a.expirationTime = yh;\n  a.updateQueue = zh;\n  a.effectTag |= Ah;\n  a = null !== O && null !== O.next;\n  th = 0;\n  xh = P = wh = vh = O = uh = null;\n  yh = 0;\n  zh = null;\n  Ah = 0;\n  if (a) throw Error(u(300));\n  return b;\n}\n\nfunction Mh() {\n  sh.current = Lh;\n  th = 0;\n  xh = P = wh = vh = O = uh = null;\n  yh = 0;\n  zh = null;\n  Ah = 0;\n  Bh = !1;\n  Ch = null;\n  Gh = 0;\n}\n\nfunction Nh() {\n  var a = {\n    memoizedState: null,\n    baseState: null,\n    queue: null,\n    baseUpdate: null,\n    next: null\n  };\n  null === P ? wh = P = a : P = P.next = a;\n  return P;\n}\n\nfunction Oh() {\n  if (null !== xh) P = xh, xh = P.next, O = vh, vh = null !== O ? O.next : null;else {\n    if (null === vh) throw Error(u(310));\n    O = vh;\n    var a = {\n      memoizedState: O.memoizedState,\n      baseState: O.baseState,\n      queue: O.queue,\n      baseUpdate: O.baseUpdate,\n      next: null\n    };\n    P = null === P ? wh = a : P.next = a;\n    vh = O.next;\n  }\n  return P;\n}\n\nfunction Ph(a, b) {\n  return \"function\" === typeof b ? b(a) : b;\n}\n\nfunction Qh(a) {\n  var b = Oh(),\n      c = b.queue;\n  if (null === c) throw Error(u(311));\n  c.lastRenderedReducer = a;\n\n  if (0 < Gh) {\n    var d = c.dispatch;\n\n    if (null !== Ch) {\n      var e = Ch.get(c);\n\n      if (void 0 !== e) {\n        Ch[\"delete\"](c);\n        var f = b.memoizedState;\n\n        do {\n          f = a(f, e.action), e = e.next;\n        } while (null !== e);\n\n        of(f, b.memoizedState) || (wg = !0);\n        b.memoizedState = f;\n        b.baseUpdate === c.last && (b.baseState = f);\n        c.lastRenderedState = f;\n        return [f, d];\n      }\n    }\n\n    return [b.memoizedState, d];\n  }\n\n  d = c.last;\n  var g = b.baseUpdate;\n  f = b.baseState;\n  null !== g ? (null !== d && (d.next = null), d = g.next) : d = null !== d ? d.next : null;\n\n  if (null !== d) {\n    var h = e = null,\n        k = d,\n        l = !1;\n\n    do {\n      var m = k.expirationTime;\n      m < th ? (l || (l = !0, h = g, e = f), m > yh && (yh = m, Jg(yh))) : (Ig(m, k.suspenseConfig), f = k.eagerReducer === a ? k.eagerState : a(f, k.action));\n      g = k;\n      k = k.next;\n    } while (null !== k && k !== d);\n\n    l || (h = g, e = f);\n    of(f, b.memoizedState) || (wg = !0);\n    b.memoizedState = f;\n    b.baseUpdate = h;\n    b.baseState = e;\n    c.lastRenderedState = f;\n  }\n\n  return [b.memoizedState, c.dispatch];\n}\n\nfunction Rh(a) {\n  var b = Nh();\n  \"function\" === typeof a && (a = a());\n  b.memoizedState = b.baseState = a;\n  a = b.queue = {\n    last: null,\n    dispatch: null,\n    lastRenderedReducer: Ph,\n    lastRenderedState: a\n  };\n  a = a.dispatch = Sh.bind(null, uh, a);\n  return [b.memoizedState, a];\n}\n\nfunction Th(a) {\n  return Qh(Ph, a);\n}\n\nfunction Uh(a, b, c, d) {\n  a = {\n    tag: a,\n    create: b,\n    destroy: c,\n    deps: d,\n    next: null\n  };\n  null === zh ? (zh = {\n    lastEffect: null\n  }, zh.lastEffect = a.next = a) : (b = zh.lastEffect, null === b ? zh.lastEffect = a.next = a : (c = b.next, b.next = a, a.next = c, zh.lastEffect = a));\n  return a;\n}\n\nfunction Vh(a, b, c, d) {\n  var e = Nh();\n  Ah |= a;\n  e.memoizedState = Uh(b, c, void 0, void 0 === d ? null : d);\n}\n\nfunction Wh(a, b, c, d) {\n  var e = Oh();\n  d = void 0 === d ? null : d;\n  var f = void 0;\n\n  if (null !== O) {\n    var g = O.memoizedState;\n    f = g.destroy;\n\n    if (null !== d && Hh(d, g.deps)) {\n      Uh(0, c, f, d);\n      return;\n    }\n  }\n\n  Ah |= a;\n  e.memoizedState = Uh(b, c, f, d);\n}\n\nfunction Xh(a, b) {\n  return Vh(516, 192, a, b);\n}\n\nfunction Yh(a, b) {\n  return Wh(516, 192, a, b);\n}\n\nfunction Zh(a, b) {\n  if (\"function\" === typeof b) return a = a(), b(a), function () {\n    b(null);\n  };\n  if (null !== b && void 0 !== b) return a = a(), b.current = a, function () {\n    b.current = null;\n  };\n}\n\nfunction $h() {}\n\nfunction ai(a, b) {\n  Nh().memoizedState = [a, void 0 === b ? null : b];\n  return a;\n}\n\nfunction bi(a, b) {\n  var c = Oh();\n  b = void 0 === b ? null : b;\n  var d = c.memoizedState;\n  if (null !== d && null !== b && Hh(b, d[1])) return d[0];\n  c.memoizedState = [a, b];\n  return a;\n}\n\nfunction Sh(a, b, c) {\n  if (!(25 > Gh)) throw Error(u(301));\n  var d = a.alternate;\n  if (a === uh || null !== d && d === uh) {\n    if (Bh = !0, a = {\n      expirationTime: th,\n      suspenseConfig: null,\n      action: c,\n      eagerReducer: null,\n      eagerState: null,\n      next: null\n    }, null === Ch && (Ch = new Map()), c = Ch.get(b), void 0 === c) Ch.set(b, a);else {\n      for (b = c; null !== b.next;) {\n        b = b.next;\n      }\n\n      b.next = a;\n    }\n  } else {\n    var e = Pg(),\n        f = Mg.suspense;\n    e = Qg(e, a, f);\n    f = {\n      expirationTime: e,\n      suspenseConfig: f,\n      action: c,\n      eagerReducer: null,\n      eagerState: null,\n      next: null\n    };\n    var g = b.last;\n    if (null === g) f.next = f;else {\n      var h = g.next;\n      null !== h && (f.next = h);\n      g.next = f;\n    }\n    b.last = f;\n    if (0 === a.expirationTime && (null === d || 0 === d.expirationTime) && (d = b.lastRenderedReducer, null !== d)) try {\n      var k = b.lastRenderedState,\n          l = d(k, c);\n      f.eagerReducer = d;\n      f.eagerState = l;\n      if (of(l, k)) return;\n    } catch (m) {} finally {}\n    Rg(a, e);\n  }\n}\n\nvar Lh = {\n  readContext: xg,\n  useCallback: Q,\n  useContext: Q,\n  useEffect: Q,\n  useImperativeHandle: Q,\n  useLayoutEffect: Q,\n  useMemo: Q,\n  useReducer: Q,\n  useRef: Q,\n  useState: Q,\n  useDebugValue: Q,\n  useResponder: Q,\n  useDeferredValue: Q,\n  useTransition: Q\n},\n    Jh = {\n  readContext: xg,\n  useCallback: ai,\n  useContext: xg,\n  useEffect: Xh,\n  useImperativeHandle: function useImperativeHandle(a, b, c) {\n    c = null !== c && void 0 !== c ? c.concat([a]) : null;\n    return Vh(4, 36, Zh.bind(null, b, a), c);\n  },\n  useLayoutEffect: function useLayoutEffect(a, b) {\n    return Vh(4, 36, a, b);\n  },\n  useMemo: function useMemo(a, b) {\n    var c = Nh();\n    b = void 0 === b ? null : b;\n    a = a();\n    c.memoizedState = [a, b];\n    return a;\n  },\n  useReducer: function useReducer(a, b, c) {\n    var d = Nh();\n    b = void 0 !== c ? c(b) : b;\n    d.memoizedState = d.baseState = b;\n    a = d.queue = {\n      last: null,\n      dispatch: null,\n      lastRenderedReducer: a,\n      lastRenderedState: b\n    };\n    a = a.dispatch = Sh.bind(null, uh, a);\n    return [d.memoizedState, a];\n  },\n  useRef: function useRef(a) {\n    var b = Nh();\n    a = {\n      current: a\n    };\n    return b.memoizedState = a;\n  },\n  useState: Rh,\n  useDebugValue: $h,\n  useResponder: rh,\n  useDeferredValue: function useDeferredValue(a, b) {\n    var c = Rh(a),\n        d = c[0],\n        e = c[1];\n    Xh(function () {\n      q.unstable_next(function () {\n        var c = N.suspense;\n        N.suspense = void 0 === b ? null : b;\n\n        try {\n          e(a);\n        } finally {\n          N.suspense = c;\n        }\n      });\n    }, [a, b]);\n    return d;\n  },\n  useTransition: function useTransition(a) {\n    var b = Rh(!1),\n        c = b[0],\n        d = b[1];\n    return [ai(function (b) {\n      d(!0);\n      q.unstable_next(function () {\n        var c = N.suspense;\n        N.suspense = void 0 === a ? null : a;\n\n        try {\n          d(!1), b();\n        } finally {\n          N.suspense = c;\n        }\n      });\n    }, [a, c]), c];\n  }\n},\n    Kh = {\n  readContext: xg,\n  useCallback: bi,\n  useContext: xg,\n  useEffect: Yh,\n  useImperativeHandle: function useImperativeHandle(a, b, c) {\n    c = null !== c && void 0 !== c ? c.concat([a]) : null;\n    return Wh(4, 36, Zh.bind(null, b, a), c);\n  },\n  useLayoutEffect: function useLayoutEffect(a, b) {\n    return Wh(4, 36, a, b);\n  },\n  useMemo: function useMemo(a, b) {\n    var c = Oh();\n    b = void 0 === b ? null : b;\n    var d = c.memoizedState;\n    if (null !== d && null !== b && Hh(b, d[1])) return d[0];\n    a = a();\n    c.memoizedState = [a, b];\n    return a;\n  },\n  useReducer: Qh,\n  useRef: function useRef() {\n    return Oh().memoizedState;\n  },\n  useState: Th,\n  useDebugValue: $h,\n  useResponder: rh,\n  useDeferredValue: function useDeferredValue(a, b) {\n    var c = Th(a),\n        d = c[0],\n        e = c[1];\n    Yh(function () {\n      q.unstable_next(function () {\n        var c = N.suspense;\n        N.suspense = void 0 === b ? null : b;\n\n        try {\n          e(a);\n        } finally {\n          N.suspense = c;\n        }\n      });\n    }, [a, b]);\n    return d;\n  },\n  useTransition: function useTransition(a) {\n    var b = Th(!1),\n        c = b[0],\n        d = b[1];\n    return [bi(function (b) {\n      d(!0);\n      q.unstable_next(function () {\n        var c = N.suspense;\n        N.suspense = void 0 === a ? null : a;\n\n        try {\n          d(!1), b();\n        } finally {\n          N.suspense = c;\n        }\n      });\n    }, [a, c]), c];\n  }\n},\n    ci = null,\n    di = null,\n    ei = !1;\n\nfunction fi(a, b) {\n  var c = gi(5, null, null, 0);\n  c.elementType = \"DELETED\";\n  c.type = \"DELETED\";\n  c.stateNode = b;\n  c[\"return\"] = a;\n  c.effectTag = 8;\n  null !== a.lastEffect ? (a.lastEffect.nextEffect = c, a.lastEffect = c) : a.firstEffect = a.lastEffect = c;\n}\n\nfunction hi(a, b) {\n  switch (a.tag) {\n    case 5:\n      var c = a.type;\n      b = 1 !== b.nodeType || c.toLowerCase() !== b.nodeName.toLowerCase() ? null : b;\n      return null !== b ? (a.stateNode = b, !0) : !1;\n\n    case 6:\n      return b = \"\" === a.pendingProps || 3 !== b.nodeType ? null : b, null !== b ? (a.stateNode = b, !0) : !1;\n\n    case 13:\n      return !1;\n\n    default:\n      return !1;\n  }\n}\n\nfunction ii(a) {\n  if (ei) {\n    var b = di;\n\n    if (b) {\n      var c = b;\n\n      if (!hi(a, b)) {\n        b = re(c.nextSibling);\n\n        if (!b || !hi(a, b)) {\n          a.effectTag = a.effectTag & -1025 | 2;\n          ei = !1;\n          ci = a;\n          return;\n        }\n\n        fi(ci, c);\n      }\n\n      ci = a;\n      di = re(b.firstChild);\n    } else a.effectTag = a.effectTag & -1025 | 2, ei = !1, ci = a;\n  }\n}\n\nfunction ji(a) {\n  for (a = a[\"return\"]; null !== a && 5 !== a.tag && 3 !== a.tag && 13 !== a.tag;) {\n    a = a[\"return\"];\n  }\n\n  ci = a;\n}\n\nfunction ki(a) {\n  if (a !== ci) return !1;\n  if (!ei) return ji(a), ei = !0, !1;\n  var b = a.type;\n  if (5 !== a.tag || \"head\" !== b && \"body\" !== b && !oe(b, a.memoizedProps)) for (b = di; b;) {\n    fi(a, b), b = re(b.nextSibling);\n  }\n  ji(a);\n\n  if (13 === a.tag) {\n    a = a.memoizedState;\n    a = null !== a ? a.dehydrated : null;\n    if (!a) throw Error(u(317));\n\n    a: {\n      a = a.nextSibling;\n\n      for (b = 0; a;) {\n        if (8 === a.nodeType) {\n          var c = a.data;\n\n          if (c === ie) {\n            if (0 === b) {\n              di = re(a.nextSibling);\n              break a;\n            }\n\n            b--;\n          } else c !== he && c !== ke && c !== je || b++;\n        }\n\n        a = a.nextSibling;\n      }\n\n      di = null;\n    }\n  } else di = ci ? re(a.stateNode.nextSibling) : null;\n\n  return !0;\n}\n\nfunction li() {\n  di = ci = null;\n  ei = !1;\n}\n\nvar mi = Ea.ReactCurrentOwner,\n    wg = !1;\n\nfunction R(a, b, c, d) {\n  b.child = null === a ? gh(b, null, c, d) : fh(b, a.child, c, d);\n}\n\nfunction ni(a, b, c, d, e) {\n  c = c.render;\n  var f = b.ref;\n  vg(b, e);\n  d = Ih(a, b, c, d, f, e);\n  if (null !== a && !wg) return b.updateQueue = a.updateQueue, b.effectTag &= -517, a.expirationTime <= e && (a.expirationTime = 0), oi(a, b, e);\n  b.effectTag |= 1;\n  R(a, b, d, e);\n  return b.child;\n}\n\nfunction pi(a, b, c, d, e, f) {\n  if (null === a) {\n    var g = c.type;\n    if (\"function\" === typeof g && !qi(g) && void 0 === g.defaultProps && null === c.compare && void 0 === c.defaultProps) return b.tag = 15, b.type = g, ri(a, b, g, d, e, f);\n    a = ch(c.type, null, d, null, b.mode, f);\n    a.ref = b.ref;\n    a[\"return\"] = b;\n    return b.child = a;\n  }\n\n  g = a.child;\n  if (e < f && (e = g.memoizedProps, c = c.compare, c = null !== c ? c : qf, c(e, d) && a.ref === b.ref)) return oi(a, b, f);\n  b.effectTag |= 1;\n  a = ah(g, d, f);\n  a.ref = b.ref;\n  a[\"return\"] = b;\n  return b.child = a;\n}\n\nfunction ri(a, b, c, d, e, f) {\n  return null !== a && qf(a.memoizedProps, d) && a.ref === b.ref && (wg = !1, e < f) ? oi(a, b, f) : si(a, b, c, d, f);\n}\n\nfunction ti(a, b) {\n  var c = b.ref;\n  if (null === a && null !== c || null !== a && a.ref !== c) b.effectTag |= 128;\n}\n\nfunction si(a, b, c, d, e) {\n  var f = L(c) ? Df : J.current;\n  f = Ef(b, f);\n  vg(b, e);\n  c = Ih(a, b, c, d, f, e);\n  if (null !== a && !wg) return b.updateQueue = a.updateQueue, b.effectTag &= -517, a.expirationTime <= e && (a.expirationTime = 0), oi(a, b, e);\n  b.effectTag |= 1;\n  R(a, b, c, e);\n  return b.child;\n}\n\nfunction ui(a, b, c, d, e) {\n  if (L(c)) {\n    var f = !0;\n    Jf(b);\n  } else f = !1;\n\n  vg(b, e);\n  if (null === b.stateNode) null !== a && (a.alternate = null, b.alternate = null, b.effectTag |= 2), Ug(b, c, d, e), Wg(b, c, d, e), d = !0;else if (null === a) {\n    var g = b.stateNode,\n        h = b.memoizedProps;\n    g.props = h;\n    var k = g.context,\n        l = c.contextType;\n    \"object\" === typeof l && null !== l ? l = xg(l) : (l = L(c) ? Df : J.current, l = Ef(b, l));\n    var m = c.getDerivedStateFromProps,\n        C = \"function\" === typeof m || \"function\" === typeof g.getSnapshotBeforeUpdate;\n    C || \"function\" !== typeof g.UNSAFE_componentWillReceiveProps && \"function\" !== typeof g.componentWillReceiveProps || (h !== d || k !== l) && Vg(b, g, d, l);\n    yg = !1;\n    var y = b.memoizedState;\n    k = g.state = y;\n    var H = b.updateQueue;\n    null !== H && (Hg(b, H, d, g, e), k = b.memoizedState);\n    h !== d || y !== k || K.current || yg ? (\"function\" === typeof m && (Og(b, c, m, d), k = b.memoizedState), (h = yg || Tg(b, c, h, d, y, k, l)) ? (C || \"function\" !== typeof g.UNSAFE_componentWillMount && \"function\" !== typeof g.componentWillMount || (\"function\" === typeof g.componentWillMount && g.componentWillMount(), \"function\" === typeof g.UNSAFE_componentWillMount && g.UNSAFE_componentWillMount()), \"function\" === typeof g.componentDidMount && (b.effectTag |= 4)) : (\"function\" === typeof g.componentDidMount && (b.effectTag |= 4), b.memoizedProps = d, b.memoizedState = k), g.props = d, g.state = k, g.context = l, d = h) : (\"function\" === typeof g.componentDidMount && (b.effectTag |= 4), d = !1);\n  } else g = b.stateNode, h = b.memoizedProps, g.props = b.type === b.elementType ? h : mg(b.type, h), k = g.context, l = c.contextType, \"object\" === typeof l && null !== l ? l = xg(l) : (l = L(c) ? Df : J.current, l = Ef(b, l)), m = c.getDerivedStateFromProps, (C = \"function\" === typeof m || \"function\" === typeof g.getSnapshotBeforeUpdate) || \"function\" !== typeof g.UNSAFE_componentWillReceiveProps && \"function\" !== typeof g.componentWillReceiveProps || (h !== d || k !== l) && Vg(b, g, d, l), yg = !1, k = b.memoizedState, y = g.state = k, H = b.updateQueue, null !== H && (Hg(b, H, d, g, e), y = b.memoizedState), h !== d || k !== y || K.current || yg ? (\"function\" === typeof m && (Og(b, c, m, d), y = b.memoizedState), (m = yg || Tg(b, c, h, d, k, y, l)) ? (C || \"function\" !== typeof g.UNSAFE_componentWillUpdate && \"function\" !== typeof g.componentWillUpdate || (\"function\" === typeof g.componentWillUpdate && g.componentWillUpdate(d, y, l), \"function\" === typeof g.UNSAFE_componentWillUpdate && g.UNSAFE_componentWillUpdate(d, y, l)), \"function\" === typeof g.componentDidUpdate && (b.effectTag |= 4), \"function\" === typeof g.getSnapshotBeforeUpdate && (b.effectTag |= 256)) : (\"function\" !== typeof g.componentDidUpdate || h === a.memoizedProps && k === a.memoizedState || (b.effectTag |= 4), \"function\" !== typeof g.getSnapshotBeforeUpdate || h === a.memoizedProps && k === a.memoizedState || (b.effectTag |= 256), b.memoizedProps = d, b.memoizedState = y), g.props = d, g.state = y, g.context = l, d = m) : (\"function\" !== typeof g.componentDidUpdate || h === a.memoizedProps && k === a.memoizedState || (b.effectTag |= 4), \"function\" !== typeof g.getSnapshotBeforeUpdate || h === a.memoizedProps && k === a.memoizedState || (b.effectTag |= 256), d = !1);\n  return vi(a, b, c, d, f, e);\n}\n\nfunction vi(a, b, c, d, e, f) {\n  ti(a, b);\n  var g = 0 !== (b.effectTag & 64);\n  if (!d && !g) return e && Kf(b, c, !1), oi(a, b, f);\n  d = b.stateNode;\n  mi.current = b;\n  var h = g && \"function\" !== typeof c.getDerivedStateFromError ? null : d.render();\n  b.effectTag |= 1;\n  null !== a && g ? (b.child = fh(b, a.child, null, f), b.child = fh(b, null, h, f)) : R(a, b, h, f);\n  b.memoizedState = d.state;\n  e && Kf(b, c, !0);\n  return b.child;\n}\n\nfunction wi(a) {\n  var b = a.stateNode;\n  b.pendingContext ? Hf(a, b.pendingContext, b.pendingContext !== b.context) : b.context && Hf(a, b.context, !1);\n  mh(a, b.containerInfo);\n}\n\nvar xi = {\n  dehydrated: null,\n  retryTime: 0\n};\n\nfunction yi(a, b, c) {\n  var d = b.mode,\n      e = b.pendingProps,\n      f = M.current,\n      g = !1,\n      h;\n  (h = 0 !== (b.effectTag & 64)) || (h = 0 !== (f & 2) && (null === a || null !== a.memoizedState));\n  h ? (g = !0, b.effectTag &= -65) : null !== a && null === a.memoizedState || void 0 === e.fallback || !0 === e.unstable_avoidThisFallback || (f |= 1);\n  I(M, f & 1, b);\n\n  if (null === a) {\n    void 0 !== e.fallback && ii(b);\n\n    if (g) {\n      g = e.fallback;\n      e = eh(null, d, 0, null);\n      e[\"return\"] = b;\n      if (0 === (b.mode & 2)) for (a = null !== b.memoizedState ? b.child.child : b.child, e.child = a; null !== a;) {\n        a[\"return\"] = e, a = a.sibling;\n      }\n      c = eh(g, d, c, null);\n      c[\"return\"] = b;\n      e.sibling = c;\n      b.memoizedState = xi;\n      b.child = e;\n      return c;\n    }\n\n    d = e.children;\n    b.memoizedState = null;\n    return b.child = gh(b, null, d, c);\n  }\n\n  if (null !== a.memoizedState) {\n    a = a.child;\n    d = a.sibling;\n\n    if (g) {\n      e = e.fallback;\n      c = ah(a, a.pendingProps, 0);\n      c[\"return\"] = b;\n      if (0 === (b.mode & 2) && (g = null !== b.memoizedState ? b.child.child : b.child, g !== a.child)) for (c.child = g; null !== g;) {\n        g[\"return\"] = c, g = g.sibling;\n      }\n      d = ah(d, e, d.expirationTime);\n      d[\"return\"] = b;\n      c.sibling = d;\n      c.childExpirationTime = 0;\n      b.memoizedState = xi;\n      b.child = c;\n      return d;\n    }\n\n    c = fh(b, a.child, e.children, c);\n    b.memoizedState = null;\n    return b.child = c;\n  }\n\n  a = a.child;\n\n  if (g) {\n    g = e.fallback;\n    e = eh(null, d, 0, null);\n    e[\"return\"] = b;\n    e.child = a;\n    null !== a && (a[\"return\"] = e);\n    if (0 === (b.mode & 2)) for (a = null !== b.memoizedState ? b.child.child : b.child, e.child = a; null !== a;) {\n      a[\"return\"] = e, a = a.sibling;\n    }\n    c = eh(g, d, c, null);\n    c[\"return\"] = b;\n    e.sibling = c;\n    c.effectTag |= 2;\n    e.childExpirationTime = 0;\n    b.memoizedState = xi;\n    b.child = e;\n    return c;\n  }\n\n  b.memoizedState = null;\n  return b.child = fh(b, a, e.children, c);\n}\n\nfunction zi(a, b) {\n  a.expirationTime < b && (a.expirationTime = b);\n  var c = a.alternate;\n  null !== c && c.expirationTime < b && (c.expirationTime = b);\n  ug(a[\"return\"], b);\n}\n\nfunction Ai(a, b, c, d, e, f) {\n  var g = a.memoizedState;\n  null === g ? a.memoizedState = {\n    isBackwards: b,\n    rendering: null,\n    last: d,\n    tail: c,\n    tailExpiration: 0,\n    tailMode: e,\n    lastEffect: f\n  } : (g.isBackwards = b, g.rendering = null, g.last = d, g.tail = c, g.tailExpiration = 0, g.tailMode = e, g.lastEffect = f);\n}\n\nfunction Bi(a, b, c) {\n  var d = b.pendingProps,\n      e = d.revealOrder,\n      f = d.tail;\n  R(a, b, d.children, c);\n  d = M.current;\n  if (0 !== (d & 2)) d = d & 1 | 2, b.effectTag |= 64;else {\n    if (null !== a && 0 !== (a.effectTag & 64)) a: for (a = b.child; null !== a;) {\n      if (13 === a.tag) null !== a.memoizedState && zi(a, c);else if (19 === a.tag) zi(a, c);else if (null !== a.child) {\n        a.child[\"return\"] = a;\n        a = a.child;\n        continue;\n      }\n      if (a === b) break a;\n\n      for (; null === a.sibling;) {\n        if (null === a[\"return\"] || a[\"return\"] === b) break a;\n        a = a[\"return\"];\n      }\n\n      a.sibling[\"return\"] = a[\"return\"];\n      a = a.sibling;\n    }\n    d &= 1;\n  }\n  I(M, d, b);\n  if (0 === (b.mode & 2)) b.memoizedState = null;else switch (e) {\n    case \"forwards\":\n      c = b.child;\n\n      for (e = null; null !== c;) {\n        a = c.alternate, null !== a && null === qh(a) && (e = c), c = c.sibling;\n      }\n\n      c = e;\n      null === c ? (e = b.child, b.child = null) : (e = c.sibling, c.sibling = null);\n      Ai(b, !1, e, c, f, b.lastEffect);\n      break;\n\n    case \"backwards\":\n      c = null;\n      e = b.child;\n\n      for (b.child = null; null !== e;) {\n        a = e.alternate;\n\n        if (null !== a && null === qh(a)) {\n          b.child = e;\n          break;\n        }\n\n        a = e.sibling;\n        e.sibling = c;\n        c = e;\n        e = a;\n      }\n\n      Ai(b, !0, c, null, f, b.lastEffect);\n      break;\n\n    case \"together\":\n      Ai(b, !1, null, null, void 0, b.lastEffect);\n      break;\n\n    default:\n      b.memoizedState = null;\n  }\n  return b.child;\n}\n\nfunction oi(a, b, c) {\n  null !== a && (b.dependencies = a.dependencies);\n  var d = b.expirationTime;\n  0 !== d && Jg(d);\n  if (b.childExpirationTime < c) return null;\n  if (null !== a && b.child !== a.child) throw Error(u(153));\n\n  if (null !== b.child) {\n    a = b.child;\n    c = ah(a, a.pendingProps, a.expirationTime);\n    b.child = c;\n\n    for (c[\"return\"] = b; null !== a.sibling;) {\n      a = a.sibling, c = c.sibling = ah(a, a.pendingProps, a.expirationTime), c[\"return\"] = b;\n    }\n\n    c.sibling = null;\n  }\n\n  return b.child;\n}\n\nfunction Ci(a) {\n  a.effectTag |= 4;\n}\n\nvar Hi, Ii, Ji, Ki;\n\nHi = function Hi(a, b) {\n  for (var c = b.child; null !== c;) {\n    if (5 === c.tag || 6 === c.tag) a.appendChild(c.stateNode);else if (4 !== c.tag && null !== c.child) {\n      c.child[\"return\"] = c;\n      c = c.child;\n      continue;\n    }\n    if (c === b) break;\n\n    for (; null === c.sibling;) {\n      if (null === c[\"return\"] || c[\"return\"] === b) return;\n      c = c[\"return\"];\n    }\n\n    c.sibling[\"return\"] = c[\"return\"];\n    c = c.sibling;\n  }\n};\n\nIi = function Ii() {};\n\nJi = function Ji(a, b, c, d, e) {\n  var f = a.memoizedProps;\n\n  if (f !== d) {\n    var g = b.stateNode;\n    lh(ih.current);\n    a = null;\n\n    switch (c) {\n      case \"input\":\n        f = Ab(g, f);\n        d = Ab(g, d);\n        a = [];\n        break;\n\n      case \"option\":\n        f = Ib(g, f);\n        d = Ib(g, d);\n        a = [];\n        break;\n\n      case \"select\":\n        f = n({}, f, {\n          value: void 0\n        });\n        d = n({}, d, {\n          value: void 0\n        });\n        a = [];\n        break;\n\n      case \"textarea\":\n        f = Kb(g, f);\n        d = Kb(g, d);\n        a = [];\n        break;\n\n      default:\n        \"function\" !== typeof f.onClick && \"function\" === typeof d.onClick && (g.onclick = ae);\n    }\n\n    Yd(c, d);\n    var h, k;\n    c = null;\n\n    for (h in f) {\n      if (!d.hasOwnProperty(h) && f.hasOwnProperty(h) && null != f[h]) if (\"style\" === h) for (k in g = f[h], g) {\n        g.hasOwnProperty(k) && (c || (c = {}), c[k] = \"\");\n      } else \"dangerouslySetInnerHTML\" !== h && \"children\" !== h && \"suppressContentEditableWarning\" !== h && \"suppressHydrationWarning\" !== h && \"autoFocus\" !== h && (ia.hasOwnProperty(h) ? a || (a = []) : (a = a || []).push(h, null));\n    }\n\n    for (h in d) {\n      var l = d[h];\n      g = null != f ? f[h] : void 0;\n      if (d.hasOwnProperty(h) && l !== g && (null != l || null != g)) if (\"style\" === h) {\n        if (g) {\n          for (k in g) {\n            !g.hasOwnProperty(k) || l && l.hasOwnProperty(k) || (c || (c = {}), c[k] = \"\");\n          }\n\n          for (k in l) {\n            l.hasOwnProperty(k) && g[k] !== l[k] && (c || (c = {}), c[k] = l[k]);\n          }\n        } else c || (a || (a = []), a.push(h, c)), c = l;\n      } else \"dangerouslySetInnerHTML\" === h ? (l = l ? l.__html : void 0, g = g ? g.__html : void 0, null != l && g !== l && (a = a || []).push(h, \"\" + l)) : \"children\" === h ? g === l || \"string\" !== typeof l && \"number\" !== typeof l || (a = a || []).push(h, \"\" + l) : \"suppressContentEditableWarning\" !== h && \"suppressHydrationWarning\" !== h && (ia.hasOwnProperty(h) ? (null != l && $d(e, h), a || g === l || (a = [])) : (a = a || []).push(h, l));\n    }\n\n    c && (a = a || []).push(\"style\", c);\n    e = a;\n    (b.updateQueue = e) && Ci(b);\n  }\n};\n\nKi = function Ki(a, b, c, d) {\n  c !== d && Ci(b);\n};\n\nfunction Li(a, b) {\n  switch (a.tailMode) {\n    case \"hidden\":\n      b = a.tail;\n\n      for (var c = null; null !== b;) {\n        null !== b.alternate && (c = b), b = b.sibling;\n      }\n\n      null === c ? a.tail = null : c.sibling = null;\n      break;\n\n    case \"collapsed\":\n      c = a.tail;\n\n      for (var d = null; null !== c;) {\n        null !== c.alternate && (d = c), c = c.sibling;\n      }\n\n      null === d ? b || null === a.tail ? a.tail = null : a.tail.sibling = null : d.sibling = null;\n  }\n}\n\nfunction Mi(a) {\n  switch (a.tag) {\n    case 1:\n      L(a.type) && Ff(a);\n      var b = a.effectTag;\n      return b & 4096 ? (a.effectTag = b & -4097 | 64, a) : null;\n\n    case 3:\n      nh(a);\n      Gf(a);\n      b = a.effectTag;\n      if (0 !== (b & 64)) throw Error(u(285));\n      a.effectTag = b & -4097 | 64;\n      return a;\n\n    case 5:\n      return ph(a), null;\n\n    case 13:\n      return G(M, a), b = a.effectTag, b & 4096 ? (a.effectTag = b & -4097 | 64, a) : null;\n\n    case 19:\n      return G(M, a), null;\n\n    case 4:\n      return nh(a), null;\n\n    case 10:\n      return tg(a), null;\n\n    default:\n      return null;\n  }\n}\n\nfunction Ni(a, b) {\n  return {\n    value: a,\n    source: b,\n    stack: Xa(b)\n  };\n}\n\nvar Oi = \"function\" === typeof WeakSet ? WeakSet : Set;\n\nfunction Pi(a, b) {\n  var c = b.source,\n      d = b.stack;\n  null === d && null !== c && (d = Xa(c));\n  null !== c && Wa(c.type);\n  b = b.value;\n  null !== a && 1 === a.tag && Wa(a.type);\n\n  try {\n    console.error(b);\n  } catch (e) {\n    setTimeout(function () {\n      throw e;\n    });\n  }\n}\n\nfunction Qi(a, b) {\n  try {\n    b.props = a.memoizedProps, b.state = a.memoizedState, b.componentWillUnmount();\n  } catch (c) {\n    Ri(a, c);\n  }\n}\n\nfunction Si(a) {\n  var b = a.ref;\n  if (null !== b) if (\"function\" === typeof b) try {\n    b(null);\n  } catch (c) {\n    Ri(a, c);\n  } else b.current = null;\n}\n\nfunction Ti(a, b) {\n  switch (b.tag) {\n    case 0:\n    case 11:\n    case 15:\n      Ui(2, 0, b);\n      break;\n\n    case 1:\n      if (b.effectTag & 256 && null !== a) {\n        var c = a.memoizedProps,\n            d = a.memoizedState;\n        a = b.stateNode;\n        b = a.getSnapshotBeforeUpdate(b.elementType === b.type ? c : mg(b.type, c), d);\n        a.__reactInternalSnapshotBeforeUpdate = b;\n      }\n\n      break;\n\n    case 3:\n    case 5:\n    case 6:\n    case 4:\n    case 17:\n      break;\n\n    default:\n      throw Error(u(163));\n  }\n}\n\nfunction Ui(a, b, c) {\n  c = c.updateQueue;\n  c = null !== c ? c.lastEffect : null;\n\n  if (null !== c) {\n    var d = c = c.next;\n\n    do {\n      if (0 !== (d.tag & a)) {\n        var e = d.destroy;\n        d.destroy = void 0;\n        void 0 !== e && e();\n      }\n\n      0 !== (d.tag & b) && (e = d.create, d.destroy = e());\n      d = d.next;\n    } while (d !== c);\n  }\n}\n\nfunction Vi(a, b, c) {\n  \"function\" === typeof Wi && Wi(b);\n\n  switch (b.tag) {\n    case 0:\n    case 11:\n    case 14:\n    case 15:\n      a = b.updateQueue;\n\n      if (null !== a && (a = a.lastEffect, null !== a)) {\n        var d = a.next;\n        fg(97 < c ? 97 : c, function () {\n          var a = d;\n\n          do {\n            var c = a.destroy;\n\n            if (void 0 !== c) {\n              var g = b;\n\n              try {\n                c();\n              } catch (h) {\n                Ri(g, h);\n              }\n            }\n\n            a = a.next;\n          } while (a !== d);\n        });\n      }\n\n      break;\n\n    case 1:\n      Si(b);\n      c = b.stateNode;\n      \"function\" === typeof c.componentWillUnmount && Qi(b, c);\n      break;\n\n    case 5:\n      Si(b);\n      break;\n\n    case 4:\n      Xi(a, b, c);\n  }\n}\n\nfunction Yi(a) {\n  var b = a.alternate;\n  a[\"return\"] = null;\n  a.child = null;\n  a.memoizedState = null;\n  a.updateQueue = null;\n  a.dependencies = null;\n  a.alternate = null;\n  a.firstEffect = null;\n  a.lastEffect = null;\n  a.pendingProps = null;\n  a.memoizedProps = null;\n  null !== b && Yi(b);\n}\n\nfunction Zi(a) {\n  return 5 === a.tag || 3 === a.tag || 4 === a.tag;\n}\n\nfunction $i(a) {\n  a: {\n    for (var b = a[\"return\"]; null !== b;) {\n      if (Zi(b)) {\n        var c = b;\n        break a;\n      }\n\n      b = b[\"return\"];\n    }\n\n    throw Error(u(160));\n  }\n\n  b = c.stateNode;\n\n  switch (c.tag) {\n    case 5:\n      var d = !1;\n      break;\n\n    case 3:\n      b = b.containerInfo;\n      d = !0;\n      break;\n\n    case 4:\n      b = b.containerInfo;\n      d = !0;\n      break;\n\n    default:\n      throw Error(u(161));\n  }\n\n  c.effectTag & 16 && (Tb(b, \"\"), c.effectTag &= -17);\n\n  a: b: for (c = a;;) {\n    for (; null === c.sibling;) {\n      if (null === c[\"return\"] || Zi(c[\"return\"])) {\n        c = null;\n        break a;\n      }\n\n      c = c[\"return\"];\n    }\n\n    c.sibling[\"return\"] = c[\"return\"];\n\n    for (c = c.sibling; 5 !== c.tag && 6 !== c.tag && 18 !== c.tag;) {\n      if (c.effectTag & 2) continue b;\n      if (null === c.child || 4 === c.tag) continue b;else c.child[\"return\"] = c, c = c.child;\n    }\n\n    if (!(c.effectTag & 2)) {\n      c = c.stateNode;\n      break a;\n    }\n  }\n\n  for (var e = a;;) {\n    var f = 5 === e.tag || 6 === e.tag;\n\n    if (f) {\n      var g = f ? e.stateNode : e.stateNode.instance;\n      if (c) {\n        if (d) {\n          f = b;\n          var h = g;\n          g = c;\n          8 === f.nodeType ? f.parentNode.insertBefore(h, g) : f.insertBefore(h, g);\n        } else b.insertBefore(g, c);\n      } else d ? (h = b, 8 === h.nodeType ? (f = h.parentNode, f.insertBefore(g, h)) : (f = h, f.appendChild(g)), h = h._reactRootContainer, null !== h && void 0 !== h || null !== f.onclick || (f.onclick = ae)) : b.appendChild(g);\n    } else if (4 !== e.tag && null !== e.child) {\n      e.child[\"return\"] = e;\n      e = e.child;\n      continue;\n    }\n\n    if (e === a) break;\n\n    for (; null === e.sibling;) {\n      if (null === e[\"return\"] || e[\"return\"] === a) return;\n      e = e[\"return\"];\n    }\n\n    e.sibling[\"return\"] = e[\"return\"];\n    e = e.sibling;\n  }\n}\n\nfunction Xi(a, b, c) {\n  for (var d = b, e = !1, f, g;;) {\n    if (!e) {\n      e = d[\"return\"];\n\n      a: for (;;) {\n        if (null === e) throw Error(u(160));\n        f = e.stateNode;\n\n        switch (e.tag) {\n          case 5:\n            g = !1;\n            break a;\n\n          case 3:\n            f = f.containerInfo;\n            g = !0;\n            break a;\n\n          case 4:\n            f = f.containerInfo;\n            g = !0;\n            break a;\n        }\n\n        e = e[\"return\"];\n      }\n\n      e = !0;\n    }\n\n    if (5 === d.tag || 6 === d.tag) {\n      a: for (var h = a, k = d, l = c, m = k;;) {\n        if (Vi(h, m, l), null !== m.child && 4 !== m.tag) m.child[\"return\"] = m, m = m.child;else {\n          if (m === k) break;\n\n          for (; null === m.sibling;) {\n            if (null === m[\"return\"] || m[\"return\"] === k) break a;\n            m = m[\"return\"];\n          }\n\n          m.sibling[\"return\"] = m[\"return\"];\n          m = m.sibling;\n        }\n      }\n\n      g ? (h = f, k = d.stateNode, 8 === h.nodeType ? h.parentNode.removeChild(k) : h.removeChild(k)) : f.removeChild(d.stateNode);\n    } else if (4 === d.tag) {\n      if (null !== d.child) {\n        f = d.stateNode.containerInfo;\n        g = !0;\n        d.child[\"return\"] = d;\n        d = d.child;\n        continue;\n      }\n    } else if (Vi(a, d, c), null !== d.child) {\n      d.child[\"return\"] = d;\n      d = d.child;\n      continue;\n    }\n\n    if (d === b) break;\n\n    for (; null === d.sibling;) {\n      if (null === d[\"return\"] || d[\"return\"] === b) return;\n      d = d[\"return\"];\n      4 === d.tag && (e = !1);\n    }\n\n    d.sibling[\"return\"] = d[\"return\"];\n    d = d.sibling;\n  }\n}\n\nfunction aj(a, b) {\n  switch (b.tag) {\n    case 0:\n    case 11:\n    case 14:\n    case 15:\n      Ui(4, 8, b);\n      break;\n\n    case 1:\n      break;\n\n    case 5:\n      var c = b.stateNode;\n\n      if (null != c) {\n        var d = b.memoizedProps,\n            e = null !== a ? a.memoizedProps : d;\n        a = b.type;\n        var f = b.updateQueue;\n        b.updateQueue = null;\n\n        if (null !== f) {\n          c[ve] = d;\n          \"input\" === a && \"radio\" === d.type && null != d.name && Cb(c, d);\n          Zd(a, e);\n          b = Zd(a, d);\n\n          for (e = 0; e < f.length; e += 2) {\n            var g = f[e],\n                h = f[e + 1];\n            \"style\" === g ? Wd(c, h) : \"dangerouslySetInnerHTML\" === g ? Sb(c, h) : \"children\" === g ? Tb(c, h) : vb(c, g, h, b);\n          }\n\n          switch (a) {\n            case \"input\":\n              Eb(c, d);\n              break;\n\n            case \"textarea\":\n              Mb(c, d);\n              break;\n\n            case \"select\":\n              b = c._wrapperState.wasMultiple, c._wrapperState.wasMultiple = !!d.multiple, a = d.value, null != a ? Jb(c, !!d.multiple, a, !1) : b !== !!d.multiple && (null != d.defaultValue ? Jb(c, !!d.multiple, d.defaultValue, !0) : Jb(c, !!d.multiple, d.multiple ? [] : \"\", !1));\n          }\n        }\n      }\n\n      break;\n\n    case 6:\n      if (null === b.stateNode) throw Error(u(162));\n      b.stateNode.nodeValue = b.memoizedProps;\n      break;\n\n    case 3:\n      b = b.stateNode;\n      b.hydrate && (b.hydrate = !1, Lc(b.containerInfo));\n      break;\n\n    case 12:\n      break;\n\n    case 13:\n      c = b;\n      null === b.memoizedState ? d = !1 : (d = !0, c = b.child, bj = cg());\n      if (null !== c) a: for (a = c;;) {\n        if (5 === a.tag) f = a.stateNode, d ? (f = f.style, \"function\" === typeof f.setProperty ? f.setProperty(\"display\", \"none\", \"important\") : f.display = \"none\") : (f = a.stateNode, e = a.memoizedProps.style, e = void 0 !== e && null !== e && e.hasOwnProperty(\"display\") ? e.display : null, f.style.display = Vd(\"display\", e));else if (6 === a.tag) a.stateNode.nodeValue = d ? \"\" : a.memoizedProps;else if (13 === a.tag && null !== a.memoizedState && null === a.memoizedState.dehydrated) {\n          f = a.child.sibling;\n          f[\"return\"] = a;\n          a = f;\n          continue;\n        } else if (null !== a.child) {\n          a.child[\"return\"] = a;\n          a = a.child;\n          continue;\n        }\n        if (a === c) break a;\n\n        for (; null === a.sibling;) {\n          if (null === a[\"return\"] || a[\"return\"] === c) break a;\n          a = a[\"return\"];\n        }\n\n        a.sibling[\"return\"] = a[\"return\"];\n        a = a.sibling;\n      }\n      cj(b);\n      break;\n\n    case 19:\n      cj(b);\n      break;\n\n    case 17:\n      break;\n\n    case 20:\n      break;\n\n    case 21:\n      break;\n\n    default:\n      throw Error(u(163));\n  }\n}\n\nfunction cj(a) {\n  var b = a.updateQueue;\n\n  if (null !== b) {\n    a.updateQueue = null;\n    var c = a.stateNode;\n    null === c && (c = a.stateNode = new Oi());\n    b.forEach(function (b) {\n      var d = dj.bind(null, a, b);\n      c.has(b) || (c.add(b), b.then(d, d));\n    });\n  }\n}\n\nvar ej = \"function\" === typeof WeakMap ? WeakMap : Map;\n\nfunction fj(a, b, c) {\n  c = Bg(c, null);\n  c.tag = 3;\n  c.payload = {\n    element: null\n  };\n  var d = b.value;\n\n  c.callback = function () {\n    gj || (gj = !0, hj = d);\n    Pi(a, b);\n  };\n\n  return c;\n}\n\nfunction ij(a, b, c) {\n  c = Bg(c, null);\n  c.tag = 3;\n  var d = a.type.getDerivedStateFromError;\n\n  if (\"function\" === typeof d) {\n    var e = b.value;\n\n    c.payload = function () {\n      Pi(a, b);\n      return d(e);\n    };\n  }\n\n  var f = a.stateNode;\n  null !== f && \"function\" === typeof f.componentDidCatch && (c.callback = function () {\n    \"function\" !== typeof d && (null === jj ? jj = new Set([this]) : jj.add(this), Pi(a, b));\n    var c = b.stack;\n    this.componentDidCatch(b.value, {\n      componentStack: null !== c ? c : \"\"\n    });\n  });\n  return c;\n}\n\nvar kj = Math.ceil,\n    lj = Ea.ReactCurrentDispatcher,\n    mj = Ea.ReactCurrentOwner,\n    S = 0,\n    nj = 8,\n    oj = 16,\n    pj = 32,\n    qj = 0,\n    rj = 1,\n    sj = 2,\n    tj = 3,\n    uj = 4,\n    vj = 5,\n    T = S,\n    U = null,\n    V = null,\n    W = 0,\n    X = qj,\n    wj = null,\n    xj = 1073741823,\n    yj = 1073741823,\n    zj = null,\n    Aj = 0,\n    Bj = !1,\n    bj = 0,\n    Cj = 500,\n    Y = null,\n    gj = !1,\n    hj = null,\n    jj = null,\n    Dj = !1,\n    Ej = null,\n    Fj = 90,\n    Gj = null,\n    Hj = 0,\n    Ij = null,\n    Jj = 0;\n\nfunction Pg() {\n  return (T & (oj | pj)) !== S ? 1073741821 - (cg() / 10 | 0) : 0 !== Jj ? Jj : Jj = 1073741821 - (cg() / 10 | 0);\n}\n\nfunction Qg(a, b, c) {\n  b = b.mode;\n  if (0 === (b & 2)) return 1073741823;\n  var d = dg();\n  if (0 === (b & 4)) return 99 === d ? 1073741823 : 1073741822;\n  if ((T & oj) !== S) return W;\n  if (null !== c) a = lg(a, c.timeoutMs | 0 || 5E3, 250);else switch (d) {\n    case 99:\n      a = 1073741823;\n      break;\n\n    case 98:\n      a = lg(a, 150, 100);\n      break;\n\n    case 97:\n    case 96:\n      a = lg(a, 5E3, 250);\n      break;\n\n    case 95:\n      a = 2;\n      break;\n\n    default:\n      throw Error(u(326));\n  }\n  null !== U && a === W && --a;\n  return a;\n}\n\nfunction Rg(a, b) {\n  if (50 < Hj) throw Hj = 0, Ij = null, Error(u(185));\n  a = Kj(a, b);\n\n  if (null !== a) {\n    var c = dg();\n    1073741823 === b ? (T & nj) !== S && (T & (oj | pj)) === S ? Lj(a) : (Z(a), T === S && jg()) : Z(a);\n    (T & 4) === S || 98 !== c && 99 !== c || (null === Gj ? Gj = new Map([[a, b]]) : (c = Gj.get(a), (void 0 === c || c > b) && Gj.set(a, b)));\n  }\n}\n\nfunction Kj(a, b) {\n  a.expirationTime < b && (a.expirationTime = b);\n  var c = a.alternate;\n  null !== c && c.expirationTime < b && (c.expirationTime = b);\n  var d = a[\"return\"],\n      e = null;\n  if (null === d && 3 === a.tag) e = a.stateNode;else for (; null !== d;) {\n    c = d.alternate;\n    d.childExpirationTime < b && (d.childExpirationTime = b);\n    null !== c && c.childExpirationTime < b && (c.childExpirationTime = b);\n\n    if (null === d[\"return\"] && 3 === d.tag) {\n      e = d.stateNode;\n      break;\n    }\n\n    d = d[\"return\"];\n  }\n  null !== e && (U === e && (Jg(b), X === uj && Mj(e, W)), Nj(e, b));\n  return e;\n}\n\nfunction Oj(a) {\n  var b = a.lastExpiredTime;\n  if (0 !== b) return b;\n  b = a.firstPendingTime;\n  if (!Pj(a, b)) return b;\n  b = a.lastPingedTime;\n  a = a.nextKnownPendingLevel;\n  return b > a ? b : a;\n}\n\nfunction Z(a) {\n  if (0 !== a.lastExpiredTime) a.callbackExpirationTime = 1073741823, a.callbackPriority = 99, a.callbackNode = hg(Lj.bind(null, a));else {\n    var b = Oj(a),\n        c = a.callbackNode;\n    if (0 === b) null !== c && (a.callbackNode = null, a.callbackExpirationTime = 0, a.callbackPriority = 90);else {\n      var d = Pg();\n      1073741823 === b ? d = 99 : 1 === b || 2 === b ? d = 95 : (d = 10 * (1073741821 - b) - 10 * (1073741821 - d), d = 0 >= d ? 99 : 250 >= d ? 98 : 5250 >= d ? 97 : 95);\n\n      if (null !== c) {\n        var e = a.callbackPriority;\n        if (a.callbackExpirationTime === b && e >= d) return;\n        c !== Xf && Nf(c);\n      }\n\n      a.callbackExpirationTime = b;\n      a.callbackPriority = d;\n      b = 1073741823 === b ? hg(Lj.bind(null, a)) : gg(d, Qj.bind(null, a), {\n        timeout: 10 * (1073741821 - b) - cg()\n      });\n      a.callbackNode = b;\n    }\n  }\n}\n\nfunction Qj(a, b) {\n  Jj = 0;\n  if (b) return b = Pg(), Rj(a, b), Z(a), null;\n  var c = Oj(a);\n\n  if (0 !== c) {\n    b = a.callbackNode;\n    if ((T & (oj | pj)) !== S) throw Error(u(327));\n    Sj();\n    a === U && c === W || Tj(a, c);\n\n    if (null !== V) {\n      var d = T;\n      T |= oj;\n      var e = Uj(a);\n\n      do {\n        try {\n          Vj();\n          break;\n        } catch (h) {\n          Wj(a, h);\n        }\n      } while (1);\n\n      rg();\n      T = d;\n      lj.current = e;\n      if (X === rj) throw b = wj, Tj(a, c), Mj(a, c), Z(a), b;\n      if (null === V) switch (e = a.finishedWork = a.current.alternate, a.finishedExpirationTime = c, d = X, U = null, d) {\n        case qj:\n        case rj:\n          throw Error(u(345));\n\n        case sj:\n          Rj(a, 2 < c ? 2 : c);\n          break;\n\n        case tj:\n          Mj(a, c);\n          d = a.lastSuspendedTime;\n          c === d && (a.nextKnownPendingLevel = Xj(e));\n\n          if (1073741823 === xj && (e = bj + Cj - cg(), 10 < e)) {\n            if (Bj) {\n              var f = a.lastPingedTime;\n\n              if (0 === f || f >= c) {\n                a.lastPingedTime = c;\n                Tj(a, c);\n                break;\n              }\n            }\n\n            f = Oj(a);\n            if (0 !== f && f !== c) break;\n\n            if (0 !== d && d !== c) {\n              a.lastPingedTime = d;\n              break;\n            }\n\n            a.timeoutHandle = pe(Yj.bind(null, a), e);\n            break;\n          }\n\n          Yj(a);\n          break;\n\n        case uj:\n          Mj(a, c);\n          d = a.lastSuspendedTime;\n          c === d && (a.nextKnownPendingLevel = Xj(e));\n\n          if (Bj && (e = a.lastPingedTime, 0 === e || e >= c)) {\n            a.lastPingedTime = c;\n            Tj(a, c);\n            break;\n          }\n\n          e = Oj(a);\n          if (0 !== e && e !== c) break;\n\n          if (0 !== d && d !== c) {\n            a.lastPingedTime = d;\n            break;\n          }\n\n          1073741823 !== yj ? d = 10 * (1073741821 - yj) - cg() : 1073741823 === xj ? d = 0 : (d = 10 * (1073741821 - xj) - 5E3, e = cg(), c = 10 * (1073741821 - c) - e, d = e - d, 0 > d && (d = 0), d = (120 > d ? 120 : 480 > d ? 480 : 1080 > d ? 1080 : 1920 > d ? 1920 : 3E3 > d ? 3E3 : 4320 > d ? 4320 : 1960 * kj(d / 1960)) - d, c < d && (d = c));\n\n          if (10 < d) {\n            a.timeoutHandle = pe(Yj.bind(null, a), d);\n            break;\n          }\n\n          Yj(a);\n          break;\n\n        case vj:\n          if (1073741823 !== xj && null !== zj) {\n            f = xj;\n            var g = zj;\n            d = g.busyMinDurationMs | 0;\n            0 >= d ? d = 0 : (e = g.busyDelayMs | 0, f = cg() - (10 * (1073741821 - f) - (g.timeoutMs | 0 || 5E3)), d = f <= e ? 0 : e + d - f);\n\n            if (10 < d) {\n              Mj(a, c);\n              a.timeoutHandle = pe(Yj.bind(null, a), d);\n              break;\n            }\n          }\n\n          Yj(a);\n          break;\n\n        default:\n          throw Error(u(329));\n      }\n      Z(a);\n      if (a.callbackNode === b) return Qj.bind(null, a);\n    }\n  }\n\n  return null;\n}\n\nfunction Lj(a) {\n  var b = a.lastExpiredTime;\n  b = 0 !== b ? b : 1073741823;\n  if (a.finishedExpirationTime === b) Yj(a);else {\n    if ((T & (oj | pj)) !== S) throw Error(u(327));\n    Sj();\n    a === U && b === W || Tj(a, b);\n\n    if (null !== V) {\n      var c = T;\n      T |= oj;\n      var d = Uj(a);\n\n      do {\n        try {\n          Zj();\n          break;\n        } catch (e) {\n          Wj(a, e);\n        }\n      } while (1);\n\n      rg();\n      T = c;\n      lj.current = d;\n      if (X === rj) throw c = wj, Tj(a, b), Mj(a, b), Z(a), c;\n      if (null !== V) throw Error(u(261));\n      a.finishedWork = a.current.alternate;\n      a.finishedExpirationTime = b;\n      U = null;\n      Yj(a);\n      Z(a);\n    }\n  }\n  return null;\n}\n\nfunction ak() {\n  if (null !== Gj) {\n    var a = Gj;\n    Gj = null;\n    a.forEach(function (a, c) {\n      Rj(c, a);\n      Z(c);\n    });\n    jg();\n  }\n}\n\nfunction bk(a, b) {\n  var c = T;\n  T |= 1;\n\n  try {\n    return a(b);\n  } finally {\n    T = c, T === S && jg();\n  }\n}\n\nfunction ck(a, b) {\n  var c = T;\n  T &= -2;\n  T |= nj;\n\n  try {\n    return a(b);\n  } finally {\n    T = c, T === S && jg();\n  }\n}\n\nfunction Tj(a, b) {\n  a.finishedWork = null;\n  a.finishedExpirationTime = 0;\n  var c = a.timeoutHandle;\n  -1 !== c && (a.timeoutHandle = -1, qe(c));\n  if (null !== V) for (c = V[\"return\"]; null !== c;) {\n    var d = c;\n\n    switch (d.tag) {\n      case 1:\n        var e = d.type.childContextTypes;\n        null !== e && void 0 !== e && Ff(d);\n        break;\n\n      case 3:\n        nh(d);\n        Gf(d);\n        break;\n\n      case 5:\n        ph(d);\n        break;\n\n      case 4:\n        nh(d);\n        break;\n\n      case 13:\n        G(M, d);\n        break;\n\n      case 19:\n        G(M, d);\n        break;\n\n      case 10:\n        tg(d);\n    }\n\n    c = c[\"return\"];\n  }\n  U = a;\n  V = ah(a.current, null, b);\n  W = b;\n  X = qj;\n  wj = null;\n  yj = xj = 1073741823;\n  zj = null;\n  Aj = 0;\n  Bj = !1;\n}\n\nfunction Wj(a, b) {\n  do {\n    try {\n      rg();\n      Mh();\n      if (null === V || null === V[\"return\"]) return X = rj, wj = b, null;\n\n      a: {\n        var c = a,\n            d = V[\"return\"],\n            e = V,\n            f = b;\n        b = W;\n        e.effectTag |= 2048;\n        e.firstEffect = e.lastEffect = null;\n\n        if (null !== f && \"object\" === typeof f && \"function\" === typeof f.then) {\n          var g = f,\n              h = 0 !== (M.current & 1),\n              k = d;\n\n          do {\n            var l;\n\n            if (l = 13 === k.tag) {\n              var m = k.memoizedState;\n              if (null !== m) l = null !== m.dehydrated ? !0 : !1;else {\n                var C = k.memoizedProps;\n                l = void 0 === C.fallback ? !1 : !0 !== C.unstable_avoidThisFallback ? !0 : h ? !1 : !0;\n              }\n            }\n\n            if (l) {\n              var y = k.updateQueue;\n\n              if (null === y) {\n                var H = new Set();\n                H.add(g);\n                k.updateQueue = H;\n              } else y.add(g);\n\n              if (0 === (k.mode & 2)) {\n                k.effectTag |= 64;\n                e.effectTag &= -2981;\n                if (1 === e.tag) if (null === e.alternate) e.tag = 17;else {\n                  var z = Bg(1073741823, null);\n                  z.tag = 2;\n                  Dg(e, z);\n                }\n                e.expirationTime = 1073741823;\n                break a;\n              }\n\n              f = void 0;\n              e = b;\n              var ta = c.pingCache;\n              null === ta ? (ta = c.pingCache = new ej(), f = new Set(), ta.set(g, f)) : (f = ta.get(g), void 0 === f && (f = new Set(), ta.set(g, f)));\n\n              if (!f.has(e)) {\n                f.add(e);\n                var r = dk.bind(null, c, g, e);\n                g.then(r, r);\n              }\n\n              k.effectTag |= 4096;\n              k.expirationTime = b;\n              break a;\n            }\n\n            k = k[\"return\"];\n          } while (null !== k);\n\n          f = Error((Wa(e.type) || \"A React component\") + \" suspended while rendering, but no fallback UI was specified.\\n\\nAdd a <Suspense fallback=...> component higher in the tree to provide a loading indicator or placeholder to display.\" + Xa(e));\n        }\n\n        X !== vj && (X = sj);\n        f = Ni(f, e);\n        k = d;\n\n        do {\n          switch (k.tag) {\n            case 3:\n              g = f;\n              k.effectTag |= 4096;\n              k.expirationTime = b;\n              var x = fj(k, g, b);\n              Eg(k, x);\n              break a;\n\n            case 1:\n              g = f;\n              var A = k.type,\n                  p = k.stateNode;\n\n              if (0 === (k.effectTag & 64) && (\"function\" === typeof A.getDerivedStateFromError || null !== p && \"function\" === typeof p.componentDidCatch && (null === jj || !jj.has(p)))) {\n                k.effectTag |= 4096;\n                k.expirationTime = b;\n                var t = ij(k, g, b);\n                Eg(k, t);\n                break a;\n              }\n\n          }\n\n          k = k[\"return\"];\n        } while (null !== k);\n      }\n\n      V = ek(V);\n    } catch (v) {\n      b = v;\n      continue;\n    }\n\n    break;\n  } while (1);\n}\n\nfunction Uj() {\n  var a = lj.current;\n  lj.current = Lh;\n  return null === a ? Lh : a;\n}\n\nfunction Ig(a, b) {\n  a < xj && 2 < a && (xj = a);\n  null !== b && a < yj && 2 < a && (yj = a, zj = b);\n}\n\nfunction Jg(a) {\n  a > Aj && (Aj = a);\n}\n\nfunction Zj() {\n  for (; null !== V;) {\n    V = fk(V);\n  }\n}\n\nfunction Vj() {\n  for (; null !== V && !Of();) {\n    V = fk(V);\n  }\n}\n\nfunction fk(a) {\n  var b = gk(a.alternate, a, W);\n  a.memoizedProps = a.pendingProps;\n  null === b && (b = ek(a));\n  mj.current = null;\n  return b;\n}\n\nfunction ek(a) {\n  V = a;\n\n  do {\n    var b = V.alternate;\n    a = V[\"return\"];\n\n    if (0 === (V.effectTag & 2048)) {\n      a: {\n        var c = b;\n        b = V;\n        var d = W;\n        var e = b.pendingProps;\n\n        switch (b.tag) {\n          case 2:\n            break;\n\n          case 16:\n            break;\n\n          case 15:\n          case 0:\n            break;\n\n          case 1:\n            L(b.type) && Ff(b);\n            break;\n\n          case 3:\n            nh(b);\n            Gf(b);\n            e = b.stateNode;\n            e.pendingContext && (e.context = e.pendingContext, e.pendingContext = null);\n            (null === c || null === c.child) && ki(b) && Ci(b);\n            Ii(b);\n            break;\n\n          case 5:\n            ph(b);\n            d = lh(kh.current);\n            var f = b.type;\n            if (null !== c && null != b.stateNode) Ji(c, b, f, e, d), c.ref !== b.ref && (b.effectTag |= 128);else if (e) {\n              var g = lh(ih.current);\n\n              if (ki(b)) {\n                e = b;\n                var h = e.stateNode;\n                c = e.type;\n                var k = e.memoizedProps,\n                    l = d;\n                h[ue] = e;\n                h[ve] = k;\n                f = void 0;\n                d = h;\n\n                switch (c) {\n                  case \"iframe\":\n                  case \"object\":\n                  case \"embed\":\n                    F(\"load\", d);\n                    break;\n\n                  case \"video\":\n                  case \"audio\":\n                    for (h = 0; h < cc.length; h++) {\n                      F(cc[h], d);\n                    }\n\n                    break;\n\n                  case \"source\":\n                    F(\"error\", d);\n                    break;\n\n                  case \"img\":\n                  case \"image\":\n                  case \"link\":\n                    F(\"error\", d);\n                    F(\"load\", d);\n                    break;\n\n                  case \"form\":\n                    F(\"reset\", d);\n                    F(\"submit\", d);\n                    break;\n\n                  case \"details\":\n                    F(\"toggle\", d);\n                    break;\n\n                  case \"input\":\n                    Bb(d, k);\n                    F(\"invalid\", d);\n                    $d(l, \"onChange\");\n                    break;\n\n                  case \"select\":\n                    d._wrapperState = {\n                      wasMultiple: !!k.multiple\n                    };\n                    F(\"invalid\", d);\n                    $d(l, \"onChange\");\n                    break;\n\n                  case \"textarea\":\n                    Lb(d, k), F(\"invalid\", d), $d(l, \"onChange\");\n                }\n\n                Yd(c, k);\n                h = null;\n\n                for (f in k) {\n                  k.hasOwnProperty(f) && (g = k[f], \"children\" === f ? \"string\" === typeof g ? d.textContent !== g && (h = [\"children\", g]) : \"number\" === typeof g && d.textContent !== \"\" + g && (h = [\"children\", \"\" + g]) : ia.hasOwnProperty(f) && null != g && $d(l, f));\n                }\n\n                switch (c) {\n                  case \"input\":\n                    yb(d);\n                    Gb(d, k, !0);\n                    break;\n\n                  case \"textarea\":\n                    yb(d);\n                    Nb(d, k);\n                    break;\n\n                  case \"select\":\n                  case \"option\":\n                    break;\n\n                  default:\n                    \"function\" === typeof k.onClick && (d.onclick = ae);\n                }\n\n                f = h;\n                e.updateQueue = f;\n                e = null !== f ? !0 : !1;\n                e && Ci(b);\n              } else {\n                c = b;\n                l = f;\n                k = e;\n                h = 9 === d.nodeType ? d : d.ownerDocument;\n                g === Ob.html && (g = Pb(l));\n                g === Ob.html ? \"script\" === l ? (k = h.createElement(\"div\"), k.innerHTML = \"<script>\\x3c/script>\", h = k.removeChild(k.firstChild)) : \"string\" === typeof k.is ? h = h.createElement(l, {\n                  is: k.is\n                }) : (h = h.createElement(l), \"select\" === l && (l = h, k.multiple ? l.multiple = !0 : k.size && (l.size = k.size))) : h = h.createElementNS(g, l);\n                k = h;\n                k[ue] = c;\n                k[ve] = e;\n                Hi(k, b, !1, !1);\n                b.stateNode = k;\n                l = f;\n                c = e;\n                var m = d,\n                    C = Zd(l, c);\n\n                switch (l) {\n                  case \"iframe\":\n                  case \"object\":\n                  case \"embed\":\n                    F(\"load\", k);\n                    d = c;\n                    break;\n\n                  case \"video\":\n                  case \"audio\":\n                    for (d = 0; d < cc.length; d++) {\n                      F(cc[d], k);\n                    }\n\n                    d = c;\n                    break;\n\n                  case \"source\":\n                    F(\"error\", k);\n                    d = c;\n                    break;\n\n                  case \"img\":\n                  case \"image\":\n                  case \"link\":\n                    F(\"error\", k);\n                    F(\"load\", k);\n                    d = c;\n                    break;\n\n                  case \"form\":\n                    F(\"reset\", k);\n                    F(\"submit\", k);\n                    d = c;\n                    break;\n\n                  case \"details\":\n                    F(\"toggle\", k);\n                    d = c;\n                    break;\n\n                  case \"input\":\n                    Bb(k, c);\n                    d = Ab(k, c);\n                    F(\"invalid\", k);\n                    $d(m, \"onChange\");\n                    break;\n\n                  case \"option\":\n                    d = Ib(k, c);\n                    break;\n\n                  case \"select\":\n                    k._wrapperState = {\n                      wasMultiple: !!c.multiple\n                    };\n                    d = n({}, c, {\n                      value: void 0\n                    });\n                    F(\"invalid\", k);\n                    $d(m, \"onChange\");\n                    break;\n\n                  case \"textarea\":\n                    Lb(k, c);\n                    d = Kb(k, c);\n                    F(\"invalid\", k);\n                    $d(m, \"onChange\");\n                    break;\n\n                  default:\n                    d = c;\n                }\n\n                Yd(l, d);\n                h = void 0;\n                g = l;\n                var y = k,\n                    H = d;\n\n                for (h in H) {\n                  if (H.hasOwnProperty(h)) {\n                    var z = H[h];\n                    \"style\" === h ? Wd(y, z) : \"dangerouslySetInnerHTML\" === h ? (z = z ? z.__html : void 0, null != z && Sb(y, z)) : \"children\" === h ? \"string\" === typeof z ? (\"textarea\" !== g || \"\" !== z) && Tb(y, z) : \"number\" === typeof z && Tb(y, \"\" + z) : \"suppressContentEditableWarning\" !== h && \"suppressHydrationWarning\" !== h && \"autoFocus\" !== h && (ia.hasOwnProperty(h) ? null != z && $d(m, h) : null != z && vb(y, h, z, C));\n                  }\n                }\n\n                switch (l) {\n                  case \"input\":\n                    yb(k);\n                    Gb(k, c, !1);\n                    break;\n\n                  case \"textarea\":\n                    yb(k);\n                    Nb(k, c);\n                    break;\n\n                  case \"option\":\n                    null != c.value && k.setAttribute(\"value\", \"\" + ub(c.value));\n                    break;\n\n                  case \"select\":\n                    d = k;\n                    d.multiple = !!c.multiple;\n                    k = c.value;\n                    null != k ? Jb(d, !!c.multiple, k, !1) : null != c.defaultValue && Jb(d, !!c.multiple, c.defaultValue, !0);\n                    break;\n\n                  default:\n                    \"function\" === typeof d.onClick && (k.onclick = ae);\n                }\n\n                (e = ne(f, e)) && Ci(b);\n              }\n\n              null !== b.ref && (b.effectTag |= 128);\n            } else if (null === b.stateNode) throw Error(u(166));\n            break;\n\n          case 6:\n            if (c && null != b.stateNode) Ki(c, b, c.memoizedProps, e);else {\n              if (\"string\" !== typeof e && null === b.stateNode) throw Error(u(166));\n              d = lh(kh.current);\n              lh(ih.current);\n              ki(b) ? (e = b, f = e.stateNode, d = e.memoizedProps, f[ue] = e, (e = f.nodeValue !== d) && Ci(b)) : (f = b, e = (9 === d.nodeType ? d : d.ownerDocument).createTextNode(e), e[ue] = f, b.stateNode = e);\n            }\n            break;\n\n          case 11:\n            break;\n\n          case 13:\n            G(M, b);\n            e = b.memoizedState;\n\n            if (0 !== (b.effectTag & 64)) {\n              b.expirationTime = d;\n              break a;\n            }\n\n            e = null !== e;\n            f = !1;\n            null === c ? void 0 !== b.memoizedProps.fallback && ki(b) : (d = c.memoizedState, f = null !== d, e || null === d || (d = c.child.sibling, null !== d && (k = b.firstEffect, null !== k ? (b.firstEffect = d, d.nextEffect = k) : (b.firstEffect = b.lastEffect = d, d.nextEffect = null), d.effectTag = 8)));\n            if (e && !f && 0 !== (b.mode & 2)) if (null === c && !0 !== b.memoizedProps.unstable_avoidThisFallback || 0 !== (M.current & 1)) X === qj && (X = tj);else {\n              if (X === qj || X === tj) X = uj;\n              0 !== Aj && null !== U && (Mj(U, W), Nj(U, Aj));\n            }\n            if (e || f) b.effectTag |= 4;\n            break;\n\n          case 7:\n            break;\n\n          case 8:\n            break;\n\n          case 12:\n            break;\n\n          case 4:\n            nh(b);\n            Ii(b);\n            break;\n\n          case 10:\n            tg(b);\n            break;\n\n          case 9:\n            break;\n\n          case 14:\n            break;\n\n          case 17:\n            L(b.type) && Ff(b);\n            break;\n\n          case 19:\n            G(M, b);\n            e = b.memoizedState;\n            if (null === e) break;\n            f = 0 !== (b.effectTag & 64);\n            k = e.rendering;\n            if (null === k) {\n              if (f) Li(e, !1);else {\n                if (X !== qj || null !== c && 0 !== (c.effectTag & 64)) for (c = b.child; null !== c;) {\n                  k = qh(c);\n\n                  if (null !== k) {\n                    b.effectTag |= 64;\n                    Li(e, !1);\n                    f = k.updateQueue;\n                    null !== f && (b.updateQueue = f, b.effectTag |= 4);\n                    null === e.lastEffect && (b.firstEffect = null);\n                    b.lastEffect = e.lastEffect;\n                    e = d;\n\n                    for (f = b.child; null !== f;) {\n                      d = f, c = e, d.effectTag &= 2, d.nextEffect = null, d.firstEffect = null, d.lastEffect = null, k = d.alternate, null === k ? (d.childExpirationTime = 0, d.expirationTime = c, d.child = null, d.memoizedProps = null, d.memoizedState = null, d.updateQueue = null, d.dependencies = null) : (d.childExpirationTime = k.childExpirationTime, d.expirationTime = k.expirationTime, d.child = k.child, d.memoizedProps = k.memoizedProps, d.memoizedState = k.memoizedState, d.updateQueue = k.updateQueue, c = k.dependencies, d.dependencies = null === c ? null : {\n                        expirationTime: c.expirationTime,\n                        firstContext: c.firstContext,\n                        responders: c.responders\n                      }), f = f.sibling;\n                    }\n\n                    I(M, M.current & 1 | 2, b);\n                    b = b.child;\n                    break a;\n                  }\n\n                  c = c.sibling;\n                }\n              }\n            } else {\n              if (!f) if (c = qh(k), null !== c) {\n                if (b.effectTag |= 64, f = !0, d = c.updateQueue, null !== d && (b.updateQueue = d, b.effectTag |= 4), Li(e, !0), null === e.tail && \"hidden\" === e.tailMode && !k.alternate) {\n                  b = b.lastEffect = e.lastEffect;\n                  null !== b && (b.nextEffect = null);\n                  break;\n                }\n              } else cg() > e.tailExpiration && 1 < d && (b.effectTag |= 64, f = !0, Li(e, !1), b.expirationTime = b.childExpirationTime = d - 1);\n              e.isBackwards ? (k.sibling = b.child, b.child = k) : (d = e.last, null !== d ? d.sibling = k : b.child = k, e.last = k);\n            }\n\n            if (null !== e.tail) {\n              0 === e.tailExpiration && (e.tailExpiration = cg() + 500);\n              d = e.tail;\n              e.rendering = d;\n              e.tail = d.sibling;\n              e.lastEffect = b.lastEffect;\n              d.sibling = null;\n              e = M.current;\n              e = f ? e & 1 | 2 : e & 1;\n              I(M, e, b);\n              b = d;\n              break a;\n            }\n\n            break;\n\n          case 20:\n            break;\n\n          case 21:\n            break;\n\n          default:\n            throw Error(u(156, b.tag));\n        }\n\n        b = null;\n      }\n\n      e = V;\n\n      if (1 === W || 1 !== e.childExpirationTime) {\n        f = 0;\n\n        for (d = e.child; null !== d;) {\n          c = d.expirationTime, k = d.childExpirationTime, c > f && (f = c), k > f && (f = k), d = d.sibling;\n        }\n\n        e.childExpirationTime = f;\n      }\n\n      if (null !== b) return b;\n      null !== a && 0 === (a.effectTag & 2048) && (null === a.firstEffect && (a.firstEffect = V.firstEffect), null !== V.lastEffect && (null !== a.lastEffect && (a.lastEffect.nextEffect = V.firstEffect), a.lastEffect = V.lastEffect), 1 < V.effectTag && (null !== a.lastEffect ? a.lastEffect.nextEffect = V : a.firstEffect = V, a.lastEffect = V));\n    } else {\n      b = Mi(V, W);\n      if (null !== b) return b.effectTag &= 2047, b;\n      null !== a && (a.firstEffect = a.lastEffect = null, a.effectTag |= 2048);\n    }\n\n    b = V.sibling;\n    if (null !== b) return b;\n    V = a;\n  } while (null !== V);\n\n  X === qj && (X = vj);\n  return null;\n}\n\nfunction Xj(a) {\n  var b = a.expirationTime;\n  a = a.childExpirationTime;\n  return b > a ? b : a;\n}\n\nfunction Yj(a) {\n  var b = dg();\n  fg(99, ik.bind(null, a, b));\n  return null;\n}\n\nfunction ik(a, b) {\n  do {\n    Sj();\n  } while (null !== Ej);\n\n  if ((T & (oj | pj)) !== S) throw Error(u(327));\n  var c = a.finishedWork,\n      d = a.finishedExpirationTime;\n  if (null === c) return null;\n  a.finishedWork = null;\n  a.finishedExpirationTime = 0;\n  if (c === a.current) throw Error(u(177));\n  a.callbackNode = null;\n  a.callbackExpirationTime = 0;\n  a.callbackPriority = 90;\n  a.nextKnownPendingLevel = 0;\n  var e = Xj(c);\n  a.firstPendingTime = e;\n  d <= a.lastSuspendedTime ? a.firstSuspendedTime = a.lastSuspendedTime = a.nextKnownPendingLevel = 0 : d <= a.firstSuspendedTime && (a.firstSuspendedTime = d - 1);\n  d <= a.lastPingedTime && (a.lastPingedTime = 0);\n  d <= a.lastExpiredTime && (a.lastExpiredTime = 0);\n  a === U && (V = U = null, W = 0);\n  1 < c.effectTag ? null !== c.lastEffect ? (c.lastEffect.nextEffect = c, e = c.firstEffect) : e = c : e = c.firstEffect;\n\n  if (null !== e) {\n    var f = T;\n    T |= pj;\n    mj.current = null;\n    le = Ld;\n    var g = fe();\n\n    if (ge(g)) {\n      if (\"selectionStart\" in g) var h = {\n        start: g.selectionStart,\n        end: g.selectionEnd\n      };else a: {\n        h = (h = g.ownerDocument) && h.defaultView || window;\n        var k = h.getSelection && h.getSelection();\n\n        if (k && 0 !== k.rangeCount) {\n          h = k.anchorNode;\n          var l = k.anchorOffset,\n              m = k.focusNode;\n          k = k.focusOffset;\n\n          try {\n            h.nodeType, m.nodeType;\n          } catch (Db) {\n            h = null;\n            break a;\n          }\n\n          var C = 0,\n              y = -1,\n              H = -1,\n              z = 0,\n              ta = 0,\n              r = g,\n              x = null;\n\n          b: for (;;) {\n            for (var A;;) {\n              r !== h || 0 !== l && 3 !== r.nodeType || (y = C + l);\n              r !== m || 0 !== k && 3 !== r.nodeType || (H = C + k);\n              3 === r.nodeType && (C += r.nodeValue.length);\n              if (null === (A = r.firstChild)) break;\n              x = r;\n              r = A;\n            }\n\n            for (;;) {\n              if (r === g) break b;\n              x === h && ++z === l && (y = C);\n              x === m && ++ta === k && (H = C);\n              if (null !== (A = r.nextSibling)) break;\n              r = x;\n              x = r.parentNode;\n            }\n\n            r = A;\n          }\n\n          h = -1 === y || -1 === H ? null : {\n            start: y,\n            end: H\n          };\n        } else h = null;\n      }\n      h = h || {\n        start: 0,\n        end: 0\n      };\n    } else h = null;\n\n    me = {\n      focusedElem: g,\n      selectionRange: h\n    };\n    Ld = !1;\n    Y = e;\n\n    do {\n      try {\n        jk();\n      } catch (Db) {\n        if (null === Y) throw Error(u(330));\n        Ri(Y, Db);\n        Y = Y.nextEffect;\n      }\n    } while (null !== Y);\n\n    Y = e;\n\n    do {\n      try {\n        for (g = a, h = b; null !== Y;) {\n          var p = Y.effectTag;\n          p & 16 && Tb(Y.stateNode, \"\");\n\n          if (p & 128) {\n            var t = Y.alternate;\n\n            if (null !== t) {\n              var v = t.ref;\n              null !== v && (\"function\" === typeof v ? v(null) : v.current = null);\n            }\n          }\n\n          switch (p & 1038) {\n            case 2:\n              $i(Y);\n              Y.effectTag &= -3;\n              break;\n\n            case 6:\n              $i(Y);\n              Y.effectTag &= -3;\n              aj(Y.alternate, Y);\n              break;\n\n            case 1024:\n              Y.effectTag &= -1025;\n              break;\n\n            case 1028:\n              Y.effectTag &= -1025;\n              aj(Y.alternate, Y);\n              break;\n\n            case 4:\n              aj(Y.alternate, Y);\n              break;\n\n            case 8:\n              l = Y, Xi(g, l, h), Yi(l);\n          }\n\n          Y = Y.nextEffect;\n        }\n      } catch (Db) {\n        if (null === Y) throw Error(u(330));\n        Ri(Y, Db);\n        Y = Y.nextEffect;\n      }\n    } while (null !== Y);\n\n    v = me;\n    t = fe();\n    p = v.focusedElem;\n    h = v.selectionRange;\n\n    if (t !== p && p && p.ownerDocument && ee(p.ownerDocument.documentElement, p)) {\n      null !== h && ge(p) && (t = h.start, v = h.end, void 0 === v && (v = t), \"selectionStart\" in p ? (p.selectionStart = t, p.selectionEnd = Math.min(v, p.value.length)) : (v = (t = p.ownerDocument || document) && t.defaultView || window, v.getSelection && (v = v.getSelection(), l = p.textContent.length, g = Math.min(h.start, l), h = void 0 === h.end ? g : Math.min(h.end, l), !v.extend && g > h && (l = h, h = g, g = l), l = de(p, g), m = de(p, h), l && m && (1 !== v.rangeCount || v.anchorNode !== l.node || v.anchorOffset !== l.offset || v.focusNode !== m.node || v.focusOffset !== m.offset) && (t = t.createRange(), t.setStart(l.node, l.offset), v.removeAllRanges(), g > h ? (v.addRange(t), v.extend(m.node, m.offset)) : (t.setEnd(m.node, m.offset), v.addRange(t))))));\n      t = [];\n\n      for (v = p; v = v.parentNode;) {\n        1 === v.nodeType && t.push({\n          element: v,\n          left: v.scrollLeft,\n          top: v.scrollTop\n        });\n      }\n\n      \"function\" === typeof p.focus && p.focus();\n\n      for (p = 0; p < t.length; p++) {\n        v = t[p], v.element.scrollLeft = v.left, v.element.scrollTop = v.top;\n      }\n    }\n\n    me = null;\n    Ld = !!le;\n    le = null;\n    a.current = c;\n    Y = e;\n\n    do {\n      try {\n        for (p = d; null !== Y;) {\n          var Dh = Y.effectTag;\n\n          if (Dh & 36) {\n            var dc = Y.alternate;\n            t = Y;\n            v = p;\n\n            switch (t.tag) {\n              case 0:\n              case 11:\n              case 15:\n                Ui(16, 32, t);\n                break;\n\n              case 1:\n                var fd = t.stateNode;\n                if (t.effectTag & 4) if (null === dc) fd.componentDidMount();else {\n                  var hk = t.elementType === t.type ? dc.memoizedProps : mg(t.type, dc.memoizedProps);\n                  fd.componentDidUpdate(hk, dc.memoizedState, fd.__reactInternalSnapshotBeforeUpdate);\n                }\n                var Eh = t.updateQueue;\n                null !== Eh && Kg(t, Eh, fd, v);\n                break;\n\n              case 3:\n                var Fh = t.updateQueue;\n\n                if (null !== Fh) {\n                  g = null;\n                  if (null !== t.child) switch (t.child.tag) {\n                    case 5:\n                      g = t.child.stateNode;\n                      break;\n\n                    case 1:\n                      g = t.child.stateNode;\n                  }\n                  Kg(t, Fh, g, v);\n                }\n\n                break;\n\n              case 5:\n                var xk = t.stateNode;\n                null === dc && t.effectTag & 4 && ne(t.type, t.memoizedProps) && xk.focus();\n                break;\n\n              case 6:\n                break;\n\n              case 4:\n                break;\n\n              case 12:\n                break;\n\n              case 13:\n                if (null === t.memoizedState) {\n                  var Di = t.alternate;\n\n                  if (null !== Di) {\n                    var Ei = Di.memoizedState;\n\n                    if (null !== Ei) {\n                      var Fi = Ei.dehydrated;\n                      null !== Fi && Lc(Fi);\n                    }\n                  }\n                }\n\n                break;\n\n              case 19:\n              case 17:\n              case 20:\n              case 21:\n                break;\n\n              default:\n                throw Error(u(163));\n            }\n          }\n\n          if (Dh & 128) {\n            t = void 0;\n            var xd = Y.ref;\n\n            if (null !== xd) {\n              var Gi = Y.stateNode;\n\n              switch (Y.tag) {\n                case 5:\n                  t = Gi;\n                  break;\n\n                default:\n                  t = Gi;\n              }\n\n              \"function\" === typeof xd ? xd(t) : xd.current = t;\n            }\n          }\n\n          Y = Y.nextEffect;\n        }\n      } catch (Db) {\n        if (null === Y) throw Error(u(330));\n        Ri(Y, Db);\n        Y = Y.nextEffect;\n      }\n    } while (null !== Y);\n\n    Y = null;\n    Yf();\n    T = f;\n  } else a.current = c;\n\n  if (Dj) Dj = !1, Ej = a, Fj = b;else for (Y = e; null !== Y;) {\n    b = Y.nextEffect, Y.nextEffect = null, Y = b;\n  }\n  b = a.firstPendingTime;\n  0 === b && (jj = null);\n  1073741823 === b ? a === Ij ? Hj++ : (Hj = 0, Ij = a) : Hj = 0;\n  \"function\" === typeof kk && kk(c.stateNode, d);\n  Z(a);\n  if (gj) throw gj = !1, a = hj, hj = null, a;\n  if ((T & nj) !== S) return null;\n  jg();\n  return null;\n}\n\nfunction jk() {\n  for (; null !== Y;) {\n    var a = Y.effectTag;\n    0 !== (a & 256) && Ti(Y.alternate, Y);\n    0 === (a & 512) || Dj || (Dj = !0, gg(97, function () {\n      Sj();\n      return null;\n    }));\n    Y = Y.nextEffect;\n  }\n}\n\nfunction Sj() {\n  if (90 !== Fj) {\n    var a = 97 < Fj ? 97 : Fj;\n    Fj = 90;\n    return fg(a, lk);\n  }\n}\n\nfunction lk() {\n  if (null === Ej) return !1;\n  var a = Ej;\n  Ej = null;\n  if ((T & (oj | pj)) !== S) throw Error(u(331));\n  var b = T;\n  T |= pj;\n\n  for (a = a.current.firstEffect; null !== a;) {\n    try {\n      var c = a;\n      if (0 !== (c.effectTag & 512)) switch (c.tag) {\n        case 0:\n        case 11:\n        case 15:\n          Ui(128, 0, c), Ui(0, 64, c);\n      }\n    } catch (d) {\n      if (null === a) throw Error(u(330));\n      Ri(a, d);\n    }\n\n    c = a.nextEffect;\n    a.nextEffect = null;\n    a = c;\n  }\n\n  T = b;\n  jg();\n  return !0;\n}\n\nfunction mk(a, b, c) {\n  b = Ni(c, b);\n  b = fj(a, b, 1073741823);\n  Dg(a, b);\n  a = Kj(a, 1073741823);\n  null !== a && Z(a);\n}\n\nfunction Ri(a, b) {\n  if (3 === a.tag) mk(a, a, b);else for (var c = a[\"return\"]; null !== c;) {\n    if (3 === c.tag) {\n      mk(c, a, b);\n      break;\n    } else if (1 === c.tag) {\n      var d = c.stateNode;\n\n      if (\"function\" === typeof c.type.getDerivedStateFromError || \"function\" === typeof d.componentDidCatch && (null === jj || !jj.has(d))) {\n        a = Ni(b, a);\n        a = ij(c, a, 1073741823);\n        Dg(c, a);\n        c = Kj(c, 1073741823);\n        null !== c && Z(c);\n        break;\n      }\n    }\n\n    c = c[\"return\"];\n  }\n}\n\nfunction dk(a, b, c) {\n  var d = a.pingCache;\n  null !== d && d[\"delete\"](b);\n  U === a && W === c ? X === uj || X === tj && 1073741823 === xj && cg() - bj < Cj ? Tj(a, W) : Bj = !0 : Pj(a, c) && (b = a.lastPingedTime, 0 !== b && b < c || (a.lastPingedTime = c, a.finishedExpirationTime === c && (a.finishedExpirationTime = 0, a.finishedWork = null), Z(a)));\n}\n\nfunction dj(a, b) {\n  var c = a.stateNode;\n  null !== c && c[\"delete\"](b);\n  b = 0;\n  0 === b && (b = Pg(), b = Qg(b, a, null));\n  a = Kj(a, b);\n  null !== a && Z(a);\n}\n\nvar gk;\n\ngk = function gk(a, b, c) {\n  var d = b.expirationTime;\n\n  if (null !== a) {\n    var e = b.pendingProps;\n    if (a.memoizedProps !== e || K.current) wg = !0;else {\n      if (d < c) {\n        wg = !1;\n\n        switch (b.tag) {\n          case 3:\n            wi(b);\n            li();\n            break;\n\n          case 5:\n            oh(b);\n            if (b.mode & 4 && 1 !== c && e.hidden) return b.expirationTime = b.childExpirationTime = 1, null;\n            break;\n\n          case 1:\n            L(b.type) && Jf(b);\n            break;\n\n          case 4:\n            mh(b, b.stateNode.containerInfo);\n            break;\n\n          case 10:\n            sg(b, b.memoizedProps.value);\n            break;\n\n          case 13:\n            if (null !== b.memoizedState) {\n              d = b.child.childExpirationTime;\n              if (0 !== d && d >= c) return yi(a, b, c);\n              I(M, M.current & 1, b);\n              b = oi(a, b, c);\n              return null !== b ? b.sibling : null;\n            }\n\n            I(M, M.current & 1, b);\n            break;\n\n          case 19:\n            d = b.childExpirationTime >= c;\n\n            if (0 !== (a.effectTag & 64)) {\n              if (d) return Bi(a, b, c);\n              b.effectTag |= 64;\n            }\n\n            e = b.memoizedState;\n            null !== e && (e.rendering = null, e.tail = null);\n            I(M, M.current, b);\n            if (!d) return null;\n        }\n\n        return oi(a, b, c);\n      }\n\n      wg = !1;\n    }\n  } else wg = !1;\n\n  b.expirationTime = 0;\n\n  switch (b.tag) {\n    case 2:\n      d = b.type;\n      null !== a && (a.alternate = null, b.alternate = null, b.effectTag |= 2);\n      a = b.pendingProps;\n      e = Ef(b, J.current);\n      vg(b, c);\n      e = Ih(null, b, d, a, e, c);\n      b.effectTag |= 1;\n\n      if (\"object\" === typeof e && null !== e && \"function\" === typeof e.render && void 0 === e.$$typeof) {\n        b.tag = 1;\n        Mh();\n\n        if (L(d)) {\n          var f = !0;\n          Jf(b);\n        } else f = !1;\n\n        b.memoizedState = null !== e.state && void 0 !== e.state ? e.state : null;\n        var g = d.getDerivedStateFromProps;\n        \"function\" === typeof g && Og(b, d, g, a);\n        e.updater = Sg;\n        b.stateNode = e;\n        e._reactInternalFiber = b;\n        Wg(b, d, a, c);\n        b = vi(null, b, d, !0, f, c);\n      } else b.tag = 0, R(null, b, e, c), b = b.child;\n\n      return b;\n\n    case 16:\n      e = b.elementType;\n      null !== a && (a.alternate = null, b.alternate = null, b.effectTag |= 2);\n      a = b.pendingProps;\n      Va(e);\n      if (1 !== e._status) throw e._result;\n      e = e._result;\n      b.type = e;\n      f = b.tag = nk(e);\n      a = mg(e, a);\n\n      switch (f) {\n        case 0:\n          b = si(null, b, e, a, c);\n          break;\n\n        case 1:\n          b = ui(null, b, e, a, c);\n          break;\n\n        case 11:\n          b = ni(null, b, e, a, c);\n          break;\n\n        case 14:\n          b = pi(null, b, e, mg(e.type, a), d, c);\n          break;\n\n        default:\n          throw Error(u(306, e, \"\"));\n      }\n\n      return b;\n\n    case 0:\n      return d = b.type, e = b.pendingProps, e = b.elementType === d ? e : mg(d, e), si(a, b, d, e, c);\n\n    case 1:\n      return d = b.type, e = b.pendingProps, e = b.elementType === d ? e : mg(d, e), ui(a, b, d, e, c);\n\n    case 3:\n      wi(b);\n      d = b.updateQueue;\n      if (null === d) throw Error(u(282));\n      e = b.memoizedState;\n      e = null !== e ? e.element : null;\n      Hg(b, d, b.pendingProps, null, c);\n      d = b.memoizedState.element;\n      if (d === e) li(), b = oi(a, b, c);else {\n        if (e = b.stateNode.hydrate) di = re(b.stateNode.containerInfo.firstChild), ci = b, e = ei = !0;\n        if (e) for (c = gh(b, null, d, c), b.child = c; c;) {\n          c.effectTag = c.effectTag & -3 | 1024, c = c.sibling;\n        } else R(a, b, d, c), li();\n        b = b.child;\n      }\n      return b;\n\n    case 5:\n      return oh(b), null === a && ii(b), d = b.type, e = b.pendingProps, f = null !== a ? a.memoizedProps : null, g = e.children, oe(d, e) ? g = null : null !== f && oe(d, f) && (b.effectTag |= 16), ti(a, b), b.mode & 4 && 1 !== c && e.hidden ? (b.expirationTime = b.childExpirationTime = 1, b = null) : (R(a, b, g, c), b = b.child), b;\n\n    case 6:\n      return null === a && ii(b), null;\n\n    case 13:\n      return yi(a, b, c);\n\n    case 4:\n      return mh(b, b.stateNode.containerInfo), d = b.pendingProps, null === a ? b.child = fh(b, null, d, c) : R(a, b, d, c), b.child;\n\n    case 11:\n      return d = b.type, e = b.pendingProps, e = b.elementType === d ? e : mg(d, e), ni(a, b, d, e, c);\n\n    case 7:\n      return R(a, b, b.pendingProps, c), b.child;\n\n    case 8:\n      return R(a, b, b.pendingProps.children, c), b.child;\n\n    case 12:\n      return R(a, b, b.pendingProps.children, c), b.child;\n\n    case 10:\n      a: {\n        d = b.type._context;\n        e = b.pendingProps;\n        g = b.memoizedProps;\n        f = e.value;\n        sg(b, f);\n\n        if (null !== g) {\n          var h = g.value;\n          f = of(h, f) ? 0 : (\"function\" === typeof d._calculateChangedBits ? d._calculateChangedBits(h, f) : 1073741823) | 0;\n\n          if (0 === f) {\n            if (g.children === e.children && !K.current) {\n              b = oi(a, b, c);\n              break a;\n            }\n          } else for (h = b.child, null !== h && (h[\"return\"] = b); null !== h;) {\n            var k = h.dependencies;\n\n            if (null !== k) {\n              g = h.child;\n\n              for (var l = k.firstContext; null !== l;) {\n                if (l.context === d && 0 !== (l.observedBits & f)) {\n                  1 === h.tag && (l = Bg(c, null), l.tag = 2, Dg(h, l));\n                  h.expirationTime < c && (h.expirationTime = c);\n                  l = h.alternate;\n                  null !== l && l.expirationTime < c && (l.expirationTime = c);\n                  ug(h[\"return\"], c);\n                  k.expirationTime < c && (k.expirationTime = c);\n                  break;\n                }\n\n                l = l.next;\n              }\n            } else g = 10 === h.tag ? h.type === b.type ? null : h.child : h.child;\n\n            if (null !== g) g[\"return\"] = h;else for (g = h; null !== g;) {\n              if (g === b) {\n                g = null;\n                break;\n              }\n\n              h = g.sibling;\n\n              if (null !== h) {\n                h[\"return\"] = g[\"return\"];\n                g = h;\n                break;\n              }\n\n              g = g[\"return\"];\n            }\n            h = g;\n          }\n        }\n\n        R(a, b, e.children, c);\n        b = b.child;\n      }\n\n      return b;\n\n    case 9:\n      return e = b.type, f = b.pendingProps, d = f.children, vg(b, c), e = xg(e, f.unstable_observedBits), d = d(e), b.effectTag |= 1, R(a, b, d, c), b.child;\n\n    case 14:\n      return e = b.type, f = mg(e, b.pendingProps), f = mg(e.type, f), pi(a, b, e, f, d, c);\n\n    case 15:\n      return ri(a, b, b.type, b.pendingProps, d, c);\n\n    case 17:\n      return d = b.type, e = b.pendingProps, e = b.elementType === d ? e : mg(d, e), null !== a && (a.alternate = null, b.alternate = null, b.effectTag |= 2), b.tag = 1, L(d) ? (a = !0, Jf(b)) : a = !1, vg(b, c), Ug(b, d, e, c), Wg(b, d, e, c), vi(null, b, d, !0, a, c);\n\n    case 19:\n      return Bi(a, b, c);\n  }\n\n  throw Error(u(156, b.tag));\n};\n\nvar kk = null,\n    Wi = null;\n\nfunction ok(a) {\n  if (\"undefined\" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) return !1;\n  var b = __REACT_DEVTOOLS_GLOBAL_HOOK__;\n  if (b.isDisabled || !b.supportsFiber) return !0;\n\n  try {\n    var c = b.inject(a);\n\n    kk = function kk(a) {\n      try {\n        b.onCommitFiberRoot(c, a, void 0, 64 === (a.current.effectTag & 64));\n      } catch (e) {}\n    };\n\n    Wi = function Wi(a) {\n      try {\n        b.onCommitFiberUnmount(c, a);\n      } catch (e) {}\n    };\n  } catch (d) {}\n\n  return !0;\n}\n\nfunction pk(a, b, c, d) {\n  this.tag = a;\n  this.key = c;\n  this.sibling = this.child = this[\"return\"] = this.stateNode = this.type = this.elementType = null;\n  this.index = 0;\n  this.ref = null;\n  this.pendingProps = b;\n  this.dependencies = this.memoizedState = this.updateQueue = this.memoizedProps = null;\n  this.mode = d;\n  this.effectTag = 0;\n  this.lastEffect = this.firstEffect = this.nextEffect = null;\n  this.childExpirationTime = this.expirationTime = 0;\n  this.alternate = null;\n}\n\nfunction gi(a, b, c, d) {\n  return new pk(a, b, c, d);\n}\n\nfunction qi(a) {\n  a = a.prototype;\n  return !(!a || !a.isReactComponent);\n}\n\nfunction nk(a) {\n  if (\"function\" === typeof a) return qi(a) ? 1 : 0;\n\n  if (void 0 !== a && null !== a) {\n    a = a.$$typeof;\n    if (a === Oa) return 11;\n    if (a === Ra) return 14;\n  }\n\n  return 2;\n}\n\nfunction ah(a, b) {\n  var c = a.alternate;\n  null === c ? (c = gi(a.tag, b, a.key, a.mode), c.elementType = a.elementType, c.type = a.type, c.stateNode = a.stateNode, c.alternate = a, a.alternate = c) : (c.pendingProps = b, c.effectTag = 0, c.nextEffect = null, c.firstEffect = null, c.lastEffect = null);\n  c.childExpirationTime = a.childExpirationTime;\n  c.expirationTime = a.expirationTime;\n  c.child = a.child;\n  c.memoizedProps = a.memoizedProps;\n  c.memoizedState = a.memoizedState;\n  c.updateQueue = a.updateQueue;\n  b = a.dependencies;\n  c.dependencies = null === b ? null : {\n    expirationTime: b.expirationTime,\n    firstContext: b.firstContext,\n    responders: b.responders\n  };\n  c.sibling = a.sibling;\n  c.index = a.index;\n  c.ref = a.ref;\n  return c;\n}\n\nfunction ch(a, b, c, d, e, f) {\n  var g = 2;\n  d = a;\n  if (\"function\" === typeof a) qi(a) && (g = 1);else if (\"string\" === typeof a) g = 5;else a: switch (a) {\n    case Ia:\n      return eh(c.children, e, f, b);\n\n    case Na:\n      g = 8;\n      e |= 7;\n      break;\n\n    case Ja:\n      g = 8;\n      e |= 1;\n      break;\n\n    case Ka:\n      return a = gi(12, c, b, e | 8), a.elementType = Ka, a.type = Ka, a.expirationTime = f, a;\n\n    case Pa:\n      return a = gi(13, c, b, e), a.type = Pa, a.elementType = Pa, a.expirationTime = f, a;\n\n    case Qa:\n      return a = gi(19, c, b, e), a.elementType = Qa, a.expirationTime = f, a;\n\n    default:\n      if (\"object\" === typeof a && null !== a) switch (a.$$typeof) {\n        case La:\n          g = 10;\n          break a;\n\n        case Ma:\n          g = 9;\n          break a;\n\n        case Oa:\n          g = 11;\n          break a;\n\n        case Ra:\n          g = 14;\n          break a;\n\n        case Sa:\n          g = 16;\n          d = null;\n          break a;\n      }\n      throw Error(u(130, null == a ? a : typeof a, \"\"));\n  }\n  b = gi(g, c, b, e);\n  b.elementType = a;\n  b.type = d;\n  b.expirationTime = f;\n  return b;\n}\n\nfunction eh(a, b, c, d) {\n  a = gi(7, a, d, b);\n  a.expirationTime = c;\n  return a;\n}\n\nfunction bh(a, b, c) {\n  a = gi(6, a, null, b);\n  a.expirationTime = c;\n  return a;\n}\n\nfunction dh(a, b, c) {\n  b = gi(4, null !== a.children ? a.children : [], a.key, b);\n  b.expirationTime = c;\n  b.stateNode = {\n    containerInfo: a.containerInfo,\n    pendingChildren: null,\n    implementation: a.implementation\n  };\n  return b;\n}\n\nfunction qk(a, b, c) {\n  this.tag = b;\n  this.current = null;\n  this.containerInfo = a;\n  this.pingCache = this.pendingChildren = null;\n  this.finishedExpirationTime = 0;\n  this.finishedWork = null;\n  this.timeoutHandle = -1;\n  this.pendingContext = this.context = null;\n  this.hydrate = c;\n  this.callbackNode = null;\n  this.callbackPriority = 90;\n  this.lastExpiredTime = this.lastPingedTime = this.nextKnownPendingLevel = this.lastSuspendedTime = this.firstSuspendedTime = this.firstPendingTime = 0;\n}\n\nfunction Pj(a, b) {\n  var c = a.firstSuspendedTime;\n  a = a.lastSuspendedTime;\n  return 0 !== c && c >= b && a <= b;\n}\n\nfunction Mj(a, b) {\n  var c = a.firstSuspendedTime,\n      d = a.lastSuspendedTime;\n  c < b && (a.firstSuspendedTime = b);\n  if (d > b || 0 === c) a.lastSuspendedTime = b;\n  b <= a.lastPingedTime && (a.lastPingedTime = 0);\n  b <= a.lastExpiredTime && (a.lastExpiredTime = 0);\n}\n\nfunction Nj(a, b) {\n  b > a.firstPendingTime && (a.firstPendingTime = b);\n  var c = a.firstSuspendedTime;\n  0 !== c && (b >= c ? a.firstSuspendedTime = a.lastSuspendedTime = a.nextKnownPendingLevel = 0 : b >= a.lastSuspendedTime && (a.lastSuspendedTime = b + 1), b > a.nextKnownPendingLevel && (a.nextKnownPendingLevel = b));\n}\n\nfunction Rj(a, b) {\n  var c = a.lastExpiredTime;\n  if (0 === c || c > b) a.lastExpiredTime = b;\n}\n\nfunction rk(a, b, c, d) {\n  var e = b.current,\n      f = Pg(),\n      g = Mg.suspense;\n  f = Qg(f, e, g);\n\n  a: if (c) {\n    c = c._reactInternalFiber;\n\n    b: {\n      if (ec(c) !== c || 1 !== c.tag) throw Error(u(170));\n      var h = c;\n\n      do {\n        switch (h.tag) {\n          case 3:\n            h = h.stateNode.context;\n            break b;\n\n          case 1:\n            if (L(h.type)) {\n              h = h.stateNode.__reactInternalMemoizedMergedChildContext;\n              break b;\n            }\n\n        }\n\n        h = h[\"return\"];\n      } while (null !== h);\n\n      throw Error(u(171));\n    }\n\n    if (1 === c.tag) {\n      var k = c.type;\n\n      if (L(k)) {\n        c = If(c, k, h);\n        break a;\n      }\n    }\n\n    c = h;\n  } else c = Cf;\n\n  null === b.context ? b.context = c : b.pendingContext = c;\n  b = Bg(f, g);\n  b.payload = {\n    element: a\n  };\n  d = void 0 === d ? null : d;\n  null !== d && (b.callback = d);\n  Dg(e, b);\n  Rg(e, f);\n  return f;\n}\n\nfunction sk(a) {\n  a = a.current;\n  if (!a.child) return null;\n\n  switch (a.child.tag) {\n    case 5:\n      return a.child.stateNode;\n\n    default:\n      return a.child.stateNode;\n  }\n}\n\nfunction tk(a, b) {\n  a = a.memoizedState;\n  null !== a && null !== a.dehydrated && a.retryTime < b && (a.retryTime = b);\n}\n\nfunction uk(a, b) {\n  tk(a, b);\n  (a = a.alternate) && tk(a, b);\n}\n\nfunction vk(a, b, c) {\n  c = null != c && !0 === c.hydrate;\n  var d = new qk(a, b, c),\n      e = gi(3, null, null, 2 === b ? 7 : 1 === b ? 3 : 0);\n  d.current = e;\n  e.stateNode = d;\n  a[we] = d.current;\n  c && 0 !== b && wc(9 === a.nodeType ? a : a.ownerDocument);\n  this._internalRoot = d;\n}\n\nvk.prototype.render = function (a, b) {\n  rk(a, this._internalRoot, null, void 0 === b ? null : b);\n};\n\nvk.prototype.unmount = function (a) {\n  var b = this._internalRoot,\n      c = void 0 === a ? null : a,\n      d = b.containerInfo;\n  rk(null, b, null, function () {\n    d[we] = null;\n    null !== c && c();\n  });\n};\n\nfunction wk(a) {\n  return !(!a || 1 !== a.nodeType && 9 !== a.nodeType && 11 !== a.nodeType && (8 !== a.nodeType || \" react-mount-point-unstable \" !== a.nodeValue));\n}\n\nfunction yk(a, b) {\n  b || (b = a ? 9 === a.nodeType ? a.documentElement : a.firstChild : null, b = !(!b || 1 !== b.nodeType || !b.hasAttribute(\"data-reactroot\")));\n  if (!b) for (var c; c = a.lastChild;) {\n    a.removeChild(c);\n  }\n  return new vk(a, 0, b ? {\n    hydrate: !0\n  } : void 0);\n}\n\nfunction zk(a, b, c, d, e) {\n  var f = c._reactRootContainer;\n\n  if (f) {\n    var g = f._internalRoot;\n\n    if (\"function\" === typeof e) {\n      var h = e;\n\n      e = function e() {\n        var a = sk(g);\n        h.call(a);\n      };\n    }\n\n    rk(b, g, a, e);\n  } else {\n    f = c._reactRootContainer = yk(c, d);\n    g = f._internalRoot;\n\n    if (\"function\" === typeof e) {\n      var k = e;\n\n      e = function e() {\n        var a = sk(g);\n        k.call(a);\n      };\n    }\n\n    ck(function () {\n      rk(b, g, a, e);\n    });\n  }\n\n  return sk(g);\n}\n\nfunction Ak(a, b, c) {\n  var d = 3 < arguments.length && void 0 !== arguments[3] ? arguments[3] : null;\n  return {\n    $$typeof: Ha,\n    key: null == d ? null : \"\" + d,\n    children: a,\n    containerInfo: b,\n    implementation: c\n  };\n}\n\njc = function jc(a) {\n  if (13 === a.tag) {\n    var b = lg(Pg(), 150, 100);\n    Rg(a, b);\n    uk(a, b);\n  }\n};\n\nkc = function kc(a) {\n  if (13 === a.tag) {\n    Pg();\n    var b = kg++;\n    Rg(a, b);\n    uk(a, b);\n  }\n};\n\nlc = function lc(a) {\n  if (13 === a.tag) {\n    var b = Pg();\n    b = Qg(b, a, null);\n    Rg(a, b);\n    uk(a, b);\n  }\n};\n\nZa = function Za(a, b, c) {\n  switch (b) {\n    case \"input\":\n      Eb(a, c);\n      b = c.name;\n\n      if (\"radio\" === c.type && null != b) {\n        for (c = a; c.parentNode;) {\n          c = c.parentNode;\n        }\n\n        c = c.querySelectorAll(\"input[name=\" + JSON.stringify(\"\" + b) + '][type=\"radio\"]');\n\n        for (b = 0; b < c.length; b++) {\n          var d = c[b];\n\n          if (d !== a && d.form === a.form) {\n            var e = ye(d);\n            if (!e) throw Error(u(90));\n            zb(d);\n            Eb(d, e);\n          }\n        }\n      }\n\n      break;\n\n    case \"textarea\":\n      Mb(a, c);\n      break;\n\n    case \"select\":\n      b = c.value, null != b && Jb(a, !!c.multiple, b, !1);\n  }\n};\n\neb = bk;\n\nfb = function fb(a, b, c, d) {\n  var e = T;\n  T |= 4;\n\n  try {\n    return fg(98, a.bind(null, b, c, d));\n  } finally {\n    T = e, T === S && jg();\n  }\n};\n\ngb = function gb() {\n  (T & (1 | oj | pj)) === S && (ak(), Sj());\n};\n\nhb = function hb(a, b) {\n  var c = T;\n  T |= 2;\n\n  try {\n    return a(b);\n  } finally {\n    T = c, T === S && jg();\n  }\n};\n\nfunction Bk(a, b) {\n  var c = 2 < arguments.length && void 0 !== arguments[2] ? arguments[2] : null;\n  if (!wk(b)) throw Error(u(200));\n  return Ak(a, b, null, c);\n}\n\nvar Ck = {\n  createPortal: Bk,\n  findDOMNode: function findDOMNode(a) {\n    if (null == a) return null;\n    if (1 === a.nodeType) return a;\n    var b = a._reactInternalFiber;\n\n    if (void 0 === b) {\n      if (\"function\" === typeof a.render) throw Error(u(188));\n      throw Error(u(268, Object.keys(a)));\n    }\n\n    a = ic(b);\n    a = null === a ? null : a.stateNode;\n    return a;\n  },\n  hydrate: function hydrate(a, b, c) {\n    if (!wk(b)) throw Error(u(200));\n    return zk(null, a, b, !0, c);\n  },\n  render: function render(a, b, c) {\n    if (!wk(b)) throw Error(u(200));\n    return zk(null, a, b, !1, c);\n  },\n  unstable_renderSubtreeIntoContainer: function unstable_renderSubtreeIntoContainer(a, b, c, d) {\n    if (!wk(c)) throw Error(u(200));\n    if (null == a || void 0 === a._reactInternalFiber) throw Error(u(38));\n    return zk(a, b, c, !1, d);\n  },\n  unmountComponentAtNode: function unmountComponentAtNode(a) {\n    if (!wk(a)) throw Error(u(40));\n    return a._reactRootContainer ? (ck(function () {\n      zk(null, null, a, !1, function () {\n        a._reactRootContainer = null;\n        a[we] = null;\n      });\n    }), !0) : !1;\n  },\n  unstable_createPortal: function unstable_createPortal() {\n    return Bk.apply(void 0, arguments);\n  },\n  unstable_batchedUpdates: bk,\n  flushSync: function flushSync(a, b) {\n    if ((T & (oj | pj)) !== S) throw Error(u(187));\n    var c = T;\n    T |= 1;\n\n    try {\n      return fg(99, a.bind(null, b));\n    } finally {\n      T = c, jg();\n    }\n  },\n  __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED: {\n    Events: [Cc, xe, ye, Ca.injectEventPluginsByName, fa, Sc, function (a) {\n      ya(a, Rc);\n    }, cb, db, Pd, Ba, Sj, {\n      current: !1\n    }]\n  }\n};\n\n(function (a) {\n  var b = a.findFiberByHostInstance;\n  return ok(n({}, a, {\n    overrideHookState: null,\n    overrideProps: null,\n    setSuspenseHandler: null,\n    scheduleUpdate: null,\n    currentDispatcherRef: Ea.ReactCurrentDispatcher,\n    findHostInstanceByFiber: function findHostInstanceByFiber(a) {\n      a = ic(a);\n      return null === a ? null : a.stateNode;\n    },\n    findFiberByHostInstance: function findFiberByHostInstance(a) {\n      return b ? b(a) : null;\n    },\n    findHostInstancesForRefresh: null,\n    scheduleRefresh: null,\n    scheduleRoot: null,\n    setRefreshHandler: null,\n    getCurrentFiber: null\n  }));\n})({\n  findFiberByHostInstance: Fc,\n  bundleType: 0,\n  version: \"16.12.0\",\n  rendererPackageName: \"react-dom\"\n});\n\nvar Dk = {\n  \"default\": Ck\n},\n    Ek = Dk && Ck || Dk;\nmodule.exports = Ek[\"default\"] || Ek;"],"sourceRoot":""}
\ No newline at end of file
diff --git a/component---src-pages-about-js-0c1171ebe659e1cec428.js b/component---src-pages-about-js-0c1171ebe659e1cec428.js
deleted file mode 100644
index acf2b9f..0000000
--- a/component---src-pages-about-js-0c1171ebe659e1cec428.js
+++ /dev/null
@@ -1,2 +0,0 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[2],{"1JOE":function(M,N,T){M.exports=T.p+"static/oregon-state-university-logo-3c2d68263b3d6bd814701041f7626cbe.svg"},"3XHS":function(M,N,T){"use strict";T.r(N);var j=T("Bl7J"),D=T("2A+t"),z=T("MXbp"),I=T("IY7k"),i=T.n(I),e=T("1JOE"),g=T.n(e),c=T("v8em"),O=T.n(c),y=T("VE45"),w=T.n(y),t=T("JMMV"),u=T("ZXdF");T("qKvR");N.default=function(){return Object(D.c)(j.a,{isHome:!1,title:"The Eclipse OpenJ9 story",description:"With a rich heritage, OpenJ9 has the credentials to deliver quality and reliability."},Object(D.c)("div",{sx:{backgroundColor:"#F5F9FC",paddingX:"10%",paddingY:"5%"}},Object(D.c)(z.b.h1,{sx:{marginBottom:"3rem"}},"More about OpenJ9"),Object(D.c)("div",{sx:{backgroundColor:"white",paddingY:5,paddingX:"5%",borderRadius:"card"}},Object(D.c)(z.b.h2,null,"Our story"),Object(D.c)(z.b.p,null,"Eclipse OpenJ9 is a high performance, scalable, Java virtual machine (JVM) implementation that represents hundreds of person-years of effort. Contributed to the Eclipse project by IBM, the OpenJ9 JVM underpins the IBM SDK, Java Technology Edition product that is a core component of many IBM Enterprise software products. Continued development of OpenJ9 at the Eclipse foundation ensures wider collaboration, fresh innovation, and the opportunity to influence the development of OpenJ9 for the next generation of Java applications."))),Object(D.c)("div",{sx:{backgroundColor:"primary",color:"lightText",paddingX:"10%",paddingY:5}},Object(D.c)(z.b.h2,null,"Our supporters"),Object(D.c)(z.b.p,null,"The success of the OpenJ9 project is underpinned by the generosity of our supporters, to whom we would like to extend our thanks. This support comes in different forms; monetory, people, system, and data center resources. People resources help us to staff the planning, development, delivery, and support of OpenJ9 releases as well as pioneering new and innovative technologies. Dedicated systems and hosting services allow us to run automated build and test operations, which help ensure that quality and reliability is central to all our deliverables."),Object(D.c)("div",{sx:{display:"flex",flexWrap:"wrap",justifyContent:"space-around"}},Object(D.c)(t.a,{width:"16rem",primary:!1},Object(D.c)("img",{sx:{width:"50%",height:"50%"},src:i.a,alt:"IBM Logo"})),Object(D.c)(t.a,{width:"16rem",primary:!1},Object(D.c)("img",{sx:{width:"80%",filter:"invert(100%)"},src:w.a,alt:"AdoptOpenJDK Logo"})),Object(D.c)(t.a,{width:"16rem",primary:!1},Object(D.c)("img",{sx:{width:"50%",height:"50%"},src:g.a,alt:"Oregon State University Logo"})),Object(D.c)(t.a,{width:"16rem",primary:!1},Object(D.c)("img",{sx:{width:"50%",height:"50%"},src:O.a,alt:"New Brunswick University Logo"})))),Object(D.c)("div",{sx:{paddingX:"10%",paddingY:5,backgroundColor:"#F5F9FC"}},Object(D.c)("div",{sx:{display:"flex",flexWrap:"wrap",justifyContent:"space-between",backgroundColor:"white",paddingX:"5%",paddingY:"5%",borderRadius:"card"}},Object(D.c)("article",{sx:{flex:"30%",maxWidth:"600px",minWidth:["250px","350px","400px","500px"],marginBottom:["6rem","6rem","8rem",0]}},Object(D.c)(z.b.h3,null,"DOCS"),Object(D.c)(z.b.p,{sx:{height:["8rem","13rem","12rem","10rem"],marginBottom:["10rem",0,0,0],width:"90%",paddingRight:["1rem",0,0,0]}},"If you are new to OpenJ9, our documentation will help you get started. Out of the box, we expect you to discover a great experience, but we also have many tuning options to help you ramp up application performance."),Object(D.c)(u.a,{primary:!0,link:"https://www.eclipse.org/openj9/docs/",target:!0},"Go to docs")),Object(D.c)("article",{sx:{flex:"30%",maxWidth:"600px",minWidth:["250px","350px","400px","500px"]}},Object(D.c)(z.b.h3,null,"BLOGS"),Object(D.c)(z.b.p,{sx:{height:["10rem","13rem","12rem","10rem"],marginBottom:["10rem",0,0,0],width:"90%",paddingRight:["1rem",0,0,0]}},"Our blogs are written by developers, for developers. Read about their insights into up and coming technologies, take deep dives into OpenJ9 development, or simply hear about their experiences of working on the project."),Object(D.c)(u.a,{primary:!0,link:"https://blog.openj9.org/",target:!0},"Go to blogs")))))}},IY7k:function(M,N){M.exports="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNDVweCIgaGVpZ2h0PSIxOHB4IiB2aWV3Qm94PSIwIDAgNDUgMTgiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5pYm0tbG9nbzwvdGl0bGU+CiAgICA8ZGVzYz5DcmVhdGVkIHdpdGggU2tldGNoLjwvZGVzYz4KICAgIDxnIGlkPSJQYWdlLTEiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPgogICAgICAgIDxnIGlkPSJpYm0tbG9nbyIgZmlsbD0iIzAwMDAwMCIgZmlsbC1ydWxlPSJub256ZXJvIj4KICAgICAgICAgICAgPHBhdGggZD0iTTAsMTcuNjk0MTE3NiBMOC42NzUwOTQxMiwxNy42OTQxMTc2IEw4LjY3NTA5NDEyLDE2LjU2NzIyMzUgTDAsMTYuNTY3MjIzNSBMMCwxNy42OTQxMTc2IFogTTAsMTUuMzI4MDgyNCBMOC42NzUwOTQxMiwxNS4zMjgwODI0IEw4LjY3NTA5NDEyLDE0LjIwMTE4ODIgTDAsMTQuMjAxMTg4MiBMMCwxNS4zMjgwODI0IFogTTIuNDc4ODM1MjksMTIuOTYyMDQ3MSBMNi4xOTY4MTE3NiwxMi45NjIwNDcxIEw2LjE5NjgxMTc2LDExLjgzNTcwNTkgTDIuNDc4ODM1MjksMTEuODM1NzA1OSBMMi40Nzg4MzUyOSwxMi45NjIwNDcxIFogTTIuNDc4ODM1MjksMTAuNTk2NTY0NyBMNi4xOTY4MTE3NiwxMC41OTY1NjQ3IEw2LjE5NjgxMTc2LDkuNDY5NjcwNTkgTDIuNDc4ODM1MjksOS40Njk2NzA1OSBMMi40Nzg4MzUyOSwxMC41OTY1NjQ3IFogTTIuNDc4ODM1MjksOC4yMzA1Mjk0MSBMNi4xOTY4MTE3Niw4LjIzMDUyOTQxIEw2LjE5NjgxMTc2LDcuMTA0MTg4MjQgTDIuNDc4ODM1MjksNy4xMDQxODgyNCBMMi40Nzg4MzUyOSw4LjIzMDUyOTQxIFogTTIuNDc4MjgyMzUsNS44NjQ0OTQxMiBMNi4xOTYyNTg4Miw1Ljg2NDQ5NDEyIEw2LjE5NjI1ODgyLDQuNzM3NiBMMi40NzgyODIzNSw0LjczNzYgTDIuNDc4MjgyMzUsNS44NjQ0OTQxMiBaIE0wLDMuNDk4NDU4ODIgTDguNjc1MDk0MTIsMy40OTg0NTg4MiBMOC42NzUwOTQxMiwyLjM3MjExNzY1IEwwLDIuMzcyMTE3NjUgTDAsMy40OTg0NTg4MiBaIE0wLDEuMTMyOTc2NDcgTDguNjc1MDk0MTIsMS4xMzI5NzY0NyBMOC42NzUwOTQxMiwwLjAwNjA4MjM1Mjk0IEwwLDAuMDA2MDgyMzUyOTQgTDAsMS4xMzI5NzY0NyBaIE05LjkxNDIzNTI5LDE2LjU2Nzc3NjUgTDkuOTE0MjM1MjksMTcuNjk0MTIxOSBMMTkuMDM5OTc2NSwxNy42OTQxMjE5IEMyMC4xNjI2NTU1LDE3LjY5NTYyMTIgMjEuMjQ4OTc1NCwxNy4yOTYxOTI4IDIyLjEwMzI3MDYsMTYuNTY3Nzc2NSBMOS45MTQyMzUyOSwxNi41Njc3NzY1IFogTTkuOTE0MjM1MjksMTQuMjAxMTg4MiBMOS45MTQyMzUyOSwxNS4zMjgwODI0IEwyMy4xMzcyNzA2LDE1LjMyODA4MjQgQzIzLjM0MjA3MjUsMTQuOTc0Mzg3NCAyMy41MDAwNjExLDE0LjU5NTU4NjYgMjMuNjA3MjcwNiwxNC4yMDExODgyIEw5LjkxNDIzNTI5LDE0LjIwMTE4ODIgWiBNMTIuMzkyNTE3NiwxMi45NjIwNDcxIEwxNi4xMTA0OTQxLDEyLjk2MjA0NzEgTDE2LjExMDQ5NDEsMTEuODM1NzA1OSBMMTIuMzkyNTE3NiwxMS44MzU3MDU5IEwxMi4zOTI1MTc2LDEyLjk2MjA0NzEgWiBNMjIuMTg2MjExOCw5LjQ2OTY3MDU5IEwxMi4zOTI1MTc2LDkuNDY5NjcwNTkgTDEyLjM5MjUxNzYsMTAuNTk2NTY0NyBMMjMuMDk2MzUyOSwxMC41OTY1NjQ3IEMyMi44NTIzMjQ4LDEwLjE3Njc5NjMgMjIuNTQ1NTg5LDkuNzk2Nzc5NjEgMjIuMTg2NzY0Nyw5LjQ2OTY3MDU5IE0xMi4zOTMwNzA2LDcuMTA0MTg4MjQgTDEyLjM5MzA3MDYsOC4yMjk5NzY0NyBMMjIuMjI3NjgyNCw4LjIyOTk3NjQ3IEMyMi41ODYzMTY2LDcuOTAzMDQyNiAyMi44OTI4Njg3LDcuNTIzMjA4ODggMjMuMTM2NzE3Niw3LjEwMzYzNTI5IEwxMi4zOTMwNzA2LDcuMTAzNjM1MjkgTDEyLjM5MzA3MDYsNy4xMDQxODgyNCBaIE0yMy42MDY3MTc2LDMuNDk4NDU4ODIgQzIzLjQ5OTk4OTMsMy4xMDQwNzA5MiAyMy4zNDE5NzM5LDIuNzI1MzkxNzkgMjMuMTM2NzE3NiwyLjM3MjExNzY1IEw5LjkxNDIzNTI5LDIuMzcyMTE3NjUgTDkuOTE0MjM1MjksMy40OTg0NTg4MiBMMjMuNjA2NzE3NiwzLjQ5ODQ1ODgyIEwyMy42MDY3MTc2LDMuNDk4NDU4ODIgWiBNMjIuMTAzMjcwNiwxLjEzMjk3NjQ3IEMyMS4yNDg5NzU0LDAuNDA0NTYwMTQyIDIwLjE2MjY1NTUsMC4wMDUxMzE2OTc4MiAxOS4wMzk5NzY1LDAuMDA2NjMxMDY0NDkgTDkuOTE0MjM1MjksMC4wMDY2MzEwNjQ0OSBMOS45MTQyMzUyOSwxLjEzMjk3NjQ3IEwyMi4xMDMyNzA2LDEuMTMyOTc2NDcgTDIyLjEwMzI3MDYsMS4xMzI5NzY0NyBaIE0xMi4zOTI1MTc2LDUuODY0NDk0MTIgTDE2LjExMDQ5NDEsNS44NjQ0OTQxMiBMMTYuMTEwNDk0MSw0LjczNzYgTDEyLjM5MjUxNzYsNC43Mzc2IEwxMi4zOTI1MTc2LDUuODY0NDk0MTIgWiBNMTkuNjAzNDIzNSw1Ljg2NDQ5NDEyIEwyMy42MzQzNjQ3LDUuODY0NDk0MTIgQzIzLjcyNDg5Miw1LjQ5NTY4MzA0IDIzLjc3MDkyOTUsNS4xMTczNTg0NCAyMy43NzE0OTQxLDQuNzM3NiBMMTkuNjAzNDIzNSw0LjczNzYgTDE5LjYwMzQyMzUsNS44NjQ0OTQxMiBaIE0xOS42MDM0MjM1LDExLjgzNTcwNTkgTDE5LjYwMzQyMzUsMTIuOTYyMDQ3MSBMMjMuNzcxNDk0MSwxMi45NjIwNDcxIEMyMy43NzE0OTQxLDEyLjU3MzMyOTQgMjMuNzIxNzI5NCwxMi4xOTY3NzY1IDIzLjYzNDM2NDcsMTEuODM1NzA1OSBMMTkuNjAzNDIzNSwxMS44MzU3MDU5IFogTTMxLjc3MDM0MTIsMCBMMjQuNzg1NTg4MiwwIEwyNC43ODU1ODgyLDEuMTI2ODk0MTIgTDMyLjE2MTgyMzUsMS4xMjY4OTQxMiBMMzEuNzcwMzQxMiwwIFogTTI0Ljc4NjE0MTIsMTcuNjk0MTE3NiBMMzAuOTg0NjExOCwxNy42OTQxMTc2IEwzMC45ODQ2MTE4LDE2LjU2NzIyMzUgTDI0Ljc4NjE0MTIsMTYuNTY3MjIzNSBMMjQuNzg2MTQxMiwxNy42OTQxMTc2IFogTTI0Ljc4NjE0MTIsMTUuMzI3NTI5NCBMMzAuOTg0NjExOCwxNS4zMjc1Mjk0IEwzMC45ODQ2MTE4LDE0LjIwMDYzNTMgTDI0Ljc4NjE0MTIsMTQuMjAwNjM1MyBMMjQuNzg2MTQxMiwxNS4zMjc1Mjk0IFogTTI3LjI2NDk3NjUsMTIuOTYwMzg4MiBMMzAuOTg0NjExOCwxMi45NjAzODgyIEwzMC45ODQ2MTE4LDExLjgzMzQ5NDEgTDI3LjI2NDk3NjUsMTEuODMzNDk0MSBMMjcuMjY0OTc2NSwxMi45NjAzODgyIFogTTI3LjI2NDk3NjUsMTAuNTkzOCBMMzAuOTg0NjExOCwxMC41OTM4IEwzMC45ODQ2MTE4LDkuNDY2OTA1ODggTDI3LjI2NDk3NjUsOS40NjY5MDU4OCBMMjcuMjY0OTc2NSwxMC41OTM4IFogTTM4LjQyMjc3NjUsMTcuNjk0MTE3NiBMNDQuNjIxMjQ3MSwxNy42OTQxMTc2IEw0NC42MjEyNDcxLDE2LjU2NzIyMzUgTDM4LjQyMjc3NjUsMTYuNTY3MjIzNSBMMzguNDIyNzc2NSwxNy42OTQxMTc2IFogTTM4LjQyMjc3NjUsMTUuMzI3NTI5NCBMNDQuNjIxMjQ3MSwxNS4zMjc1Mjk0IEw0NC42MjEyNDcxLDE0LjIwMDYzNTMgTDM4LjQyMjc3NjUsMTQuMjAwNjM1MyBMMzguNDIyNzc2NSwxNS4zMjc1Mjk0IFogTTM4LjQyMjc3NjUsMTIuOTYwMzg4MiBMNDIuMTQxODU4OCwxMi45NjAzODgyIEw0Mi4xNDE4NTg4LDExLjgzMzQ5NDEgTDM4LjQyMjc3NjUsMTEuODMzNDk0MSBMMzguNDIyNzc2NSwxMi45NjAzODgyIFogTTM4LjQyMjIyMzUsMTAuNTkzOCBMNDIuMTQxMzA1OSwxMC41OTM4IEw0Mi4xNDEzMDU5LDkuNDY2OTA1ODggTDM4LjQyMjIyMzUsOS40NjY5MDU4OCBMMzguNDIyMjIzNSwxMC41OTM4IFogTTM4LjQyMjc3NjUsOC4yMjcyMTE3NiBMNDIuMTQxODU4OCw4LjIyNzIxMTc2IEw0Mi4xNDE4NTg4LDcuMDk5NzY0NzEgTDM1LjE3MDM3NjUsNy4wOTk3NjQ3MSBMMzQuNzc5NDQ3MSw4LjIyNjY1ODgyIEwzOC4wNDM0NTg4LDguMjI2NjU4ODIgTDM4LjQyMjc3NjUsNy4xNTM5NTI5NCBMMzguNDIyNzc2NSw4LjIyNzIxMTc2IFogTTM0LjIzNTkwNTksNy4wOTk3NjQ3MSBMMjcuMjY1NTI5NCw3LjA5OTc2NDcxIEwyNy4yNjU1Mjk0LDguMjI3MjExNzYgTDMwLjk4NDYxMTgsOC4yMjcyMTE3NiBMMzAuOTg0NjExOCw3LjE1NDUwNTg4IEwzMS4zNjM5Mjk0LDguMjI3MjExNzYgTDM0LjYyNzk0MTIsOC4yMjcyMTE3NiBMMzQuMjM1OTA1OSw3LjA5OTc2NDcxIFogTTQyLjE0MTMwNTksNC43MzMxNzY0NyBMMzUuOTkxNDk0MSw0LjczMzE3NjQ3IEwzNS42MDA1NjQ3LDUuODYwMDcwNTkgTDQyLjE0MTg1ODgsNS44NjAwNzA1OSBMNDIuMTQxMzA1OSw0LjczMzE3NjQ3IFogTTM3LjYzMzE3NjUsMCBMMzcuMjQyOCwxLjEyNjg5NDEyIEw0NC42MjEyNDcxLDEuMTI2ODk0MTIgTDQ0LjYyMTI0NzEsMCBMMzcuNjMzMTc2NSwwIFogTTM0LjcwMDkyOTQsMTcuNjk0MTE3NiBMMzUuMDk5MDQ3MSwxNi41NjcyMjM1IEwzNC4zMDcyMzUzLDE2LjU2NzIyMzUgTDM0LjcwMDkyOTQsMTcuNjk0MTE3NiBaIE0zMy44Njk4NTg4LDE1LjMyNzUyOTQgTDM1LjUzNjk3NjUsMTUuMzI3NTI5NCBMMzUuOTM1MDk0MSwxNC4yMDA2MzUzIEwzMy40NzE3NDEyLDE0LjIwMDYzNTMgTDMzLjg2OTg1ODgsMTUuMzI3NTI5NCBaIE0zMy4wMzQzNjQ3LDEyLjk2MDk0MTIgTDM2LjM3MjQ3MDYsMTIuOTYwOTQxMiBMMzYuNzcwNTg4MiwxMS44MzM0OTQxIEwzMi42MzY4LDExLjgzMzQ5NDEgTDMzLjAzNDM2NDcsMTIuOTYwOTQxMiBaIE0zMi4xOTg4NzA2LDEwLjU5MzggTDM3LjIwODUxNzYsMTAuNTkzOCBMMzcuNjA2MDgyNCw5LjQ2NjkwNTg4IEwzMS44MDAyLDkuNDY2OTA1ODggTDMyLjE5ODg3MDYsMTAuNTkzOCBaIE0yNy4yNjQ5NzY1LDUuODYwMDcwNTkgTDMzLjgwNjI3MDYsNS44NjAwNzA1OSBMMzMuNDE1MzQxMiw0LjczMzE3NjQ3IEwyNy4yNjQ5NzY1LDQuNzMzMTc2NDcgTDI3LjI2NDk3NjUsNS44NjAwNzA1OSBaIE0zNi40MjExMjk0LDMuNDkzNDgyMzUgTDQ0LjYyMTI0NzEsMy40OTM0ODIzNSBMNDQuNjIxMjQ3MSwyLjM2NjU4ODI0IEwzNi44MTI2MTE4LDIuMzY2NTg4MjQgTDM2LjQyMTEyOTQsMy40OTM0ODIzNSBaIE0zMi41OTQyMjM1LDIuMzY2NTg4MjQgTDI0Ljc4NjE0MTIsMi4zNjY1ODgyNCBMMjQuNzg2MTQxMiwzLjQ5MzQ4MjM1IEwzMi45ODUxNTI5LDMuNDkzNDgyMzUgTDMyLjU5NDIyMzUsMi4zNjY1ODgyNCBaIiBpZD0iU2hhcGUiPjwvcGF0aD4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg=="},v8em:function(M,N,T){M.exports=T.p+"static/uni-new-brunswick-logo-6555470091976484ab5115fd4dc596ac.svg"}}]);
-//# sourceMappingURL=component---src-pages-about-js-0c1171ebe659e1cec428.js.map
\ No newline at end of file
diff --git a/component---src-pages-about-js-0c1171ebe659e1cec428.js.map b/component---src-pages-about-js-0c1171ebe659e1cec428.js.map
deleted file mode 100644
index 4a89920..0000000
--- a/component---src-pages-about-js-0c1171ebe659e1cec428.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"sources":["webpack:///./src/images/oregon-state-university-logo.svg","webpack:///./src/pages/about.js","webpack:///./src/images/ibm-logo.svg","webpack:///./src/images/uni-new-brunswick-logo.svg"],"names":["module","exports","isHome","title","description","sx","backgroundColor","paddingX","paddingY","h1","marginBottom","borderRadius","h2","p","color","display","flexWrap","justifyContent","width","primary","height","src","ibmLogo","alt","filter","adoptopenJDK","oregonStateUniLogo","newBrunswickUniLogo","flex","maxWidth","minWidth","h3","paddingRight","link","target"],"mappings":"gFAAAA,EAAOC,QAAU,IAA0B,4E,oCCA3C,qKAkCe,4BACb,YAAC,IAAD,CAAQC,QAAQ,EAAOC,MAAM,2BAA2BC,YAAY,wFAClE,mBAAKC,GAAI,CAAEC,gBAAiB,UAAWC,SAAU,MAAOC,SAAU,OAChE,YAAC,IAAOC,GAAR,CAAWJ,GAAI,CAACK,aAAa,SAA7B,qBACA,mBACEL,GAAI,CACFC,gBAAiB,QACjBE,SAAU,EACVD,SAAU,KACVI,aAAc,SAGhB,YAAC,IAAOC,GAAR,kBACA,YAAC,IAAOC,EAAR,8hBASJ,mBACER,GAAI,CACFC,gBAAiB,UACjBQ,MAAO,YACPP,SAAU,MACVC,SAAU,IAGZ,YAAC,IAAOI,GAAR,uBACA,YAAC,IAAOC,EAAR,kjBAQA,mBACER,GAAI,CACFU,QAAS,OACTC,SAAU,OACVC,eAAgB,iBAGlB,YAAC,IAAD,CAAMC,MAAM,QAAQC,SAAS,GAC3B,mBAAKd,GAAI,CACPa,MAAO,MACPE,OAAQ,OACRC,IAAKC,IAASC,IAAI,cAEtB,YAAC,IAAD,CAAML,MAAM,QAAQC,SAAS,GAC3B,mBAAKd,GAAI,CACPa,MAAO,MACPM,OAAQ,gBACRH,IAAKI,IAAcF,IAAI,uBAE3B,YAAC,IAAD,CAAML,MAAM,QAAQC,SAAS,GAC3B,mBAAKd,GAAI,CACPa,MAAO,MACPE,OAAQ,OACRC,IAAKK,IAAoBH,IAAI,kCAEjC,YAAC,IAAD,CAAML,MAAM,QAAQC,SAAS,GAC3B,mBAAKd,GAAI,CACPa,MAAO,MACPE,OAAQ,OACRC,IAAKM,IAAqBJ,IAAI,qCAItC,mBACElB,GAAI,CACFE,SAAU,MACVC,SAAU,EACVF,gBAAiB,YAGnB,mBACED,GAAI,CACFU,QAAS,OACTC,SAAU,OACVC,eAAgB,gBAChBX,gBAAiB,QACjBC,SAAU,KACVC,SAAU,KACVG,aAAc,SAGhB,uBACEN,GAAI,CACFuB,KAAM,MACNC,SAAU,QACVC,SAAU,CAAC,QAAS,QAAS,QAAS,SACtCpB,aAAa,CAAC,OAAQ,OAAQ,OAAQ,KAGxC,YAAC,IAAOqB,GAAR,aACA,YAAC,IAAOlB,EAAR,CAAUR,GAAI,CAACe,OAAO,CAAC,OAAQ,QAAS,QAAS,SAAUV,aAAa,CAAC,QAAS,EAAG,EAAG,GAAIQ,MAAM,MAAOc,aAAa,CAAC,OAAQ,EAAG,EAAG,KAArI,0NAIA,YAAC,IAAD,CAAQb,SAAS,EAAMc,KAAK,uCAAuCC,QAAQ,GAA3E,eAEF,uBACE7B,GAAI,CACFuB,KAAM,MACNC,SAAU,QACVC,SAAU,CAAC,QAAS,QAAS,QAAS,WAGxC,YAAC,IAAOC,GAAR,cACA,YAAC,IAAOlB,EAAR,CAAUR,GAAI,CAACe,OAAO,CAAC,QAAS,QAAS,QAAS,SAAUV,aAAa,CAAC,QAAS,EAAG,EAAG,GAAKQ,MAAM,MAAOc,aAAa,CAAC,OAAQ,EAAG,EAAG,KAAvI,8NAIA,YAAC,IAAD,CAAQb,SAAS,EAAMc,KAAK,2BAA2BC,QAAQ,GAA/D,qB,mBCvJVlC,EAAOC,QAAU,07N,qBCAjBD,EAAOC,QAAU,IAA0B","file":"component---src-pages-about-js-0c1171ebe659e1cec428.js","sourcesContent":["module.exports = __webpack_public_path__ + \"static/oregon-state-university-logo-3c2d68263b3d6bd814701041f7626cbe.svg\";","// Copyright (c) 2017, 2020 IBM Corp. and others\n\n// This program and the accompanying materials are made available under\n// the terms of the Eclipse Public License 2.0 which accompanies this\n// distribution and is available at https://www.eclipse.org/legal/epl-2.0/\n// or the Apache License, Version 2.0 which accompanies this distribution and\n// is available at https://www.apache.org/licenses/LICENSE-2.0.\n\n// This Source Code may also be made available under the following\n// Secondary Licenses when the conditions for such availability set\n// forth in the Eclipse Public License, v. 2.0 are satisfied: GNU\n// General Public License, version 2 with the GNU Classpath\n// Exception [1] and GNU General Public License, version 2 with the\n// OpenJDK Assembly Exception [2].\n\n// [1] https://www.gnu.org/software/classpath/license.html\n// [2] http://openjdk.java.net/legal/assembly-exception.html\n\n// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 OR LicenseRef-GPL-2.0 WITH Assembly-exception\n\n// The project website pages cannot be redistributed\n\nimport Layout from \"../components/layout\";\n\n/** @jsx jsx */\nimport { jsx, Styled } from \"theme-ui\";\n\nimport ibmLogo from \"../images/ibm-logo.svg\";\nimport oregonStateUniLogo from \"../images/oregon-state-university-logo.svg\";\nimport newBrunswickUniLogo from \"../images/uni-new-brunswick-logo.svg\";\nimport adoptopenJDK from \"../images/adopt-open-jdk.png\";\nimport Card from \"../components/card\";\nimport Button from \"../components/button\";\n\nexport default () => (\n  <Layout isHome={false} title=\"The Eclipse OpenJ9 story\" description=\"With a rich heritage, OpenJ9 has the credentials to deliver quality and reliability.\">\n    <div sx={{ backgroundColor: \"#F5F9FC\", paddingX: \"10%\", paddingY: \"5%\" }}>\n      <Styled.h1 sx={{marginBottom:\"3rem\"}}>More about OpenJ9</Styled.h1>\n      <div\n        sx={{\n          backgroundColor: \"white\",\n          paddingY: 5,\n          paddingX: \"5%\",\n          borderRadius: \"card\"\n        }}\n      >\n        <Styled.h2>Our story</Styled.h2>\n        <Styled.p>\n          Eclipse OpenJ9 is a high performance, scalable, Java virtual machine (JVM) implementation that represents hundreds \n          of person-years of effort. Contributed to the Eclipse project by IBM, the OpenJ9 JVM underpins the IBM SDK, Java \n          Technology Edition product that is a core component of many IBM Enterprise software products. Continued development \n          of OpenJ9 at the Eclipse foundation ensures wider collaboration, fresh innovation, and the opportunity to influence \n          the development of OpenJ9 for the next generation of Java applications.\n        </Styled.p>\n      </div>\n    </div>\n    <div\n      sx={{\n        backgroundColor: \"primary\",\n        color: \"lightText\",\n        paddingX: \"10%\",\n        paddingY: 5\n      }}\n    >\n      <Styled.h2>Our supporters</Styled.h2>\n      <Styled.p>\n        The success of the OpenJ9 project is underpinned by the generosity of our supporters,\n        to whom we would like to extend our thanks. This support comes in different forms; monetory,\n        people, system, and data center resources. People resources help us to staff the planning, development,\n        delivery, and support of OpenJ9 releases as well as pioneering new and innovative technologies.\n        Dedicated systems and hosting services allow us to run automated build and test operations,\n        which help ensure that quality and reliability is central to all our deliverables.\n      </Styled.p>\n      <div\n        sx={{\n          display: \"flex\",\n          flexWrap: \"wrap\",\n          justifyContent: \"space-around\",\n        }}\n      >\n        <Card width=\"16rem\" primary={false}> \n          <img sx={{\n            width: \"50%\", \n            height: \"50%\", \n          }}src={ibmLogo} alt=\"IBM Logo\"></img>\n        </Card>\n        <Card width=\"16rem\" primary={false}> \n          <img sx={{\n            width: \"80%\", \n            filter: \"invert(100%)\"\n          }}src={adoptopenJDK} alt=\"AdoptOpenJDK Logo\"></img>\n        </Card>\n        <Card width=\"16rem\" primary={false}> \n          <img sx={{\n            width: \"50%\", \n            height: \"50%\", \n          }}src={oregonStateUniLogo} alt=\"Oregon State University Logo\"></img>\n        </Card>\n        <Card width=\"16rem\" primary={false}> \n          <img sx={{\n            width: \"50%\", \n            height: \"50%\", \n          }}src={newBrunswickUniLogo} alt=\"New Brunswick University Logo\"></img>\n        </Card>\n      </div>\n    </div>\n    <div\n      sx={{\n        paddingX: \"10%\",\n        paddingY: 5,\n        backgroundColor: \"#F5F9FC\"\n      }}\n    >\n      <div\n        sx={{\n          display: \"flex\",\n          flexWrap: \"wrap\",\n          justifyContent: \"space-between\",\n          backgroundColor: \"white\",\n          paddingX: \"5%\",\n          paddingY: \"5%\",\n          borderRadius: \"card\"        \n        }}\n      >\n        <article\n          sx={{\n            flex: \"30%\",\n            maxWidth: \"600px\",\n            minWidth: [\"250px\", \"350px\", \"400px\", \"500px\"],\n            marginBottom:[\"6rem\", \"6rem\", \"8rem\", 0]\n          }}\n        >\n          <Styled.h3>DOCS</Styled.h3>\n          <Styled.p sx={{height:[\"8rem\", \"13rem\", \"12rem\", \"10rem\"], marginBottom:[\"10rem\", 0, 0, 0], width:\"90%\", paddingRight:[\"1rem\", 0, 0, 0]}}>\n            If you are new to OpenJ9, our documentation will help you get started. Out of the box, we expect you to discover a great experience,\n            but we also have many tuning options to help you ramp up application performance.\n          </Styled.p>\n          <Button primary={true} link=\"https://www.eclipse.org/openj9/docs/\" target={true}>Go to docs</Button>\n        </article>\n        <article\n          sx={{\n            flex: \"30%\",\n            maxWidth: \"600px\",\n            minWidth: [\"250px\", \"350px\", \"400px\", \"500px\"]\n          }}\n        >\n          <Styled.h3>BLOGS</Styled.h3>\n          <Styled.p sx={{height:[\"10rem\", \"13rem\", \"12rem\", \"10rem\"], marginBottom:[\"10rem\", 0, 0, 0],  width:\"90%\", paddingRight:[\"1rem\", 0, 0, 0]}}>\n            Our blogs are written by developers, for developers. Read about their insights into up and coming technologies,\n            take deep dives into OpenJ9 development, or simply hear about their experiences of working on the project.\n          </Styled.p>\n          <Button primary={true} link=\"https://blog.openj9.org/\" target={true}>Go to blogs</Button>\n        </article>\n      </div>\n    </div>\n  </Layout>\n);\n","module.exports = \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNDVweCIgaGVpZ2h0PSIxOHB4IiB2aWV3Qm94PSIwIDAgNDUgMTgiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5pYm0tbG9nbzwvdGl0bGU+CiAgICA8ZGVzYz5DcmVhdGVkIHdpdGggU2tldGNoLjwvZGVzYz4KICAgIDxnIGlkPSJQYWdlLTEiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPgogICAgICAgIDxnIGlkPSJpYm0tbG9nbyIgZmlsbD0iIzAwMDAwMCIgZmlsbC1ydWxlPSJub256ZXJvIj4KICAgICAgICAgICAgPHBhdGggZD0iTTAsMTcuNjk0MTE3NiBMOC42NzUwOTQxMiwxNy42OTQxMTc2IEw4LjY3NTA5NDEyLDE2LjU2NzIyMzUgTDAsMTYuNTY3MjIzNSBMMCwxNy42OTQxMTc2IFogTTAsMTUuMzI4MDgyNCBMOC42NzUwOTQxMiwxNS4zMjgwODI0IEw4LjY3NTA5NDEyLDE0LjIwMTE4ODIgTDAsMTQuMjAxMTg4MiBMMCwxNS4zMjgwODI0IFogTTIuNDc4ODM1MjksMTIuOTYyMDQ3MSBMNi4xOTY4MTE3NiwxMi45NjIwNDcxIEw2LjE5NjgxMTc2LDExLjgzNTcwNTkgTDIuNDc4ODM1MjksMTEuODM1NzA1OSBMMi40Nzg4MzUyOSwxMi45NjIwNDcxIFogTTIuNDc4ODM1MjksMTAuNTk2NTY0NyBMNi4xOTY4MTE3NiwxMC41OTY1NjQ3IEw2LjE5NjgxMTc2LDkuNDY5NjcwNTkgTDIuNDc4ODM1MjksOS40Njk2NzA1OSBMMi40Nzg4MzUyOSwxMC41OTY1NjQ3IFogTTIuNDc4ODM1MjksOC4yMzA1Mjk0MSBMNi4xOTY4MTE3Niw4LjIzMDUyOTQxIEw2LjE5NjgxMTc2LDcuMTA0MTg4MjQgTDIuNDc4ODM1MjksNy4xMDQxODgyNCBMMi40Nzg4MzUyOSw4LjIzMDUyOTQxIFogTTIuNDc4MjgyMzUsNS44NjQ0OTQxMiBMNi4xOTYyNTg4Miw1Ljg2NDQ5NDEyIEw2LjE5NjI1ODgyLDQuNzM3NiBMMi40NzgyODIzNSw0LjczNzYgTDIuNDc4MjgyMzUsNS44NjQ0OTQxMiBaIE0wLDMuNDk4NDU4ODIgTDguNjc1MDk0MTIsMy40OTg0NTg4MiBMOC42NzUwOTQxMiwyLjM3MjExNzY1IEwwLDIuMzcyMTE3NjUgTDAsMy40OTg0NTg4MiBaIE0wLDEuMTMyOTc2NDcgTDguNjc1MDk0MTIsMS4xMzI5NzY0NyBMOC42NzUwOTQxMiwwLjAwNjA4MjM1Mjk0IEwwLDAuMDA2MDgyMzUyOTQgTDAsMS4xMzI5NzY0NyBaIE05LjkxNDIzNTI5LDE2LjU2Nzc3NjUgTDkuOTE0MjM1MjksMTcuNjk0MTIxOSBMMTkuMDM5OTc2NSwxNy42OTQxMjE5IEMyMC4xNjI2NTU1LDE3LjY5NTYyMTIgMjEuMjQ4OTc1NCwxNy4yOTYxOTI4IDIyLjEwMzI3MDYsMTYuNTY3Nzc2NSBMOS45MTQyMzUyOSwxNi41Njc3NzY1IFogTTkuOTE0MjM1MjksMTQuMjAxMTg4MiBMOS45MTQyMzUyOSwxNS4zMjgwODI0IEwyMy4xMzcyNzA2LDE1LjMyODA4MjQgQzIzLjM0MjA3MjUsMTQuOTc0Mzg3NCAyMy41MDAwNjExLDE0LjU5NTU4NjYgMjMuNjA3MjcwNiwxNC4yMDExODgyIEw5LjkxNDIzNTI5LDE0LjIwMTE4ODIgWiBNMTIuMzkyNTE3NiwxMi45NjIwNDcxIEwxNi4xMTA0OTQxLDEyLjk2MjA0NzEgTDE2LjExMDQ5NDEsMTEuODM1NzA1OSBMMTIuMzkyNTE3NiwxMS44MzU3MDU5IEwxMi4zOTI1MTc2LDEyLjk2MjA0NzEgWiBNMjIuMTg2MjExOCw5LjQ2OTY3MDU5IEwxMi4zOTI1MTc2LDkuNDY5NjcwNTkgTDEyLjM5MjUxNzYsMTAuNTk2NTY0NyBMMjMuMDk2MzUyOSwxMC41OTY1NjQ3IEMyMi44NTIzMjQ4LDEwLjE3Njc5NjMgMjIuNTQ1NTg5LDkuNzk2Nzc5NjEgMjIuMTg2NzY0Nyw5LjQ2OTY3MDU5IE0xMi4zOTMwNzA2LDcuMTA0MTg4MjQgTDEyLjM5MzA3MDYsOC4yMjk5NzY0NyBMMjIuMjI3NjgyNCw4LjIyOTk3NjQ3IEMyMi41ODYzMTY2LDcuOTAzMDQyNiAyMi44OTI4Njg3LDcuNTIzMjA4ODggMjMuMTM2NzE3Niw3LjEwMzYzNTI5IEwxMi4zOTMwNzA2LDcuMTAzNjM1MjkgTDEyLjM5MzA3MDYsNy4xMDQxODgyNCBaIE0yMy42MDY3MTc2LDMuNDk4NDU4ODIgQzIzLjQ5OTk4OTMsMy4xMDQwNzA5MiAyMy4zNDE5NzM5LDIuNzI1MzkxNzkgMjMuMTM2NzE3NiwyLjM3MjExNzY1IEw5LjkxNDIzNTI5LDIuMzcyMTE3NjUgTDkuOTE0MjM1MjksMy40OTg0NTg4MiBMMjMuNjA2NzE3NiwzLjQ5ODQ1ODgyIEwyMy42MDY3MTc2LDMuNDk4NDU4ODIgWiBNMjIuMTAzMjcwNiwxLjEzMjk3NjQ3IEMyMS4yNDg5NzU0LDAuNDA0NTYwMTQyIDIwLjE2MjY1NTUsMC4wMDUxMzE2OTc4MiAxOS4wMzk5NzY1LDAuMDA2NjMxMDY0NDkgTDkuOTE0MjM1MjksMC4wMDY2MzEwNjQ0OSBMOS45MTQyMzUyOSwxLjEzMjk3NjQ3IEwyMi4xMDMyNzA2LDEuMTMyOTc2NDcgTDIyLjEwMzI3MDYsMS4xMzI5NzY0NyBaIE0xMi4zOTI1MTc2LDUuODY0NDk0MTIgTDE2LjExMDQ5NDEsNS44NjQ0OTQxMiBMMTYuMTEwNDk0MSw0LjczNzYgTDEyLjM5MjUxNzYsNC43Mzc2IEwxMi4zOTI1MTc2LDUuODY0NDk0MTIgWiBNMTkuNjAzNDIzNSw1Ljg2NDQ5NDEyIEwyMy42MzQzNjQ3LDUuODY0NDk0MTIgQzIzLjcyNDg5Miw1LjQ5NTY4MzA0IDIzLjc3MDkyOTUsNS4xMTczNTg0NCAyMy43NzE0OTQxLDQuNzM3NiBMMTkuNjAzNDIzNSw0LjczNzYgTDE5LjYwMzQyMzUsNS44NjQ0OTQxMiBaIE0xOS42MDM0MjM1LDExLjgzNTcwNTkgTDE5LjYwMzQyMzUsMTIuOTYyMDQ3MSBMMjMuNzcxNDk0MSwxMi45NjIwNDcxIEMyMy43NzE0OTQxLDEyLjU3MzMyOTQgMjMuNzIxNzI5NCwxMi4xOTY3NzY1IDIzLjYzNDM2NDcsMTEuODM1NzA1OSBMMTkuNjAzNDIzNSwxMS44MzU3MDU5IFogTTMxLjc3MDM0MTIsMCBMMjQuNzg1NTg4MiwwIEwyNC43ODU1ODgyLDEuMTI2ODk0MTIgTDMyLjE2MTgyMzUsMS4xMjY4OTQxMiBMMzEuNzcwMzQxMiwwIFogTTI0Ljc4NjE0MTIsMTcuNjk0MTE3NiBMMzAuOTg0NjExOCwxNy42OTQxMTc2IEwzMC45ODQ2MTE4LDE2LjU2NzIyMzUgTDI0Ljc4NjE0MTIsMTYuNTY3MjIzNSBMMjQuNzg2MTQxMiwxNy42OTQxMTc2IFogTTI0Ljc4NjE0MTIsMTUuMzI3NTI5NCBMMzAuOTg0NjExOCwxNS4zMjc1Mjk0IEwzMC45ODQ2MTE4LDE0LjIwMDYzNTMgTDI0Ljc4NjE0MTIsMTQuMjAwNjM1MyBMMjQuNzg2MTQxMiwxNS4zMjc1Mjk0IFogTTI3LjI2NDk3NjUsMTIuOTYwMzg4MiBMMzAuOTg0NjExOCwxMi45NjAzODgyIEwzMC45ODQ2MTE4LDExLjgzMzQ5NDEgTDI3LjI2NDk3NjUsMTEuODMzNDk0MSBMMjcuMjY0OTc2NSwxMi45NjAzODgyIFogTTI3LjI2NDk3NjUsMTAuNTkzOCBMMzAuOTg0NjExOCwxMC41OTM4IEwzMC45ODQ2MTE4LDkuNDY2OTA1ODggTDI3LjI2NDk3NjUsOS40NjY5MDU4OCBMMjcuMjY0OTc2NSwxMC41OTM4IFogTTM4LjQyMjc3NjUsMTcuNjk0MTE3NiBMNDQuNjIxMjQ3MSwxNy42OTQxMTc2IEw0NC42MjEyNDcxLDE2LjU2NzIyMzUgTDM4LjQyMjc3NjUsMTYuNTY3MjIzNSBMMzguNDIyNzc2NSwxNy42OTQxMTc2IFogTTM4LjQyMjc3NjUsMTUuMzI3NTI5NCBMNDQuNjIxMjQ3MSwxNS4zMjc1Mjk0IEw0NC42MjEyNDcxLDE0LjIwMDYzNTMgTDM4LjQyMjc3NjUsMTQuMjAwNjM1MyBMMzguNDIyNzc2NSwxNS4zMjc1Mjk0IFogTTM4LjQyMjc3NjUsMTIuOTYwMzg4MiBMNDIuMTQxODU4OCwxMi45NjAzODgyIEw0Mi4xNDE4NTg4LDExLjgzMzQ5NDEgTDM4LjQyMjc3NjUsMTEuODMzNDk0MSBMMzguNDIyNzc2NSwxMi45NjAzODgyIFogTTM4LjQyMjIyMzUsMTAuNTkzOCBMNDIuMTQxMzA1OSwxMC41OTM4IEw0Mi4xNDEzMDU5LDkuNDY2OTA1ODggTDM4LjQyMjIyMzUsOS40NjY5MDU4OCBMMzguNDIyMjIzNSwxMC41OTM4IFogTTM4LjQyMjc3NjUsOC4yMjcyMTE3NiBMNDIuMTQxODU4OCw4LjIyNzIxMTc2IEw0Mi4xNDE4NTg4LDcuMDk5NzY0NzEgTDM1LjE3MDM3NjUsNy4wOTk3NjQ3MSBMMzQuNzc5NDQ3MSw4LjIyNjY1ODgyIEwzOC4wNDM0NTg4LDguMjI2NjU4ODIgTDM4LjQyMjc3NjUsNy4xNTM5NTI5NCBMMzguNDIyNzc2NSw4LjIyNzIxMTc2IFogTTM0LjIzNTkwNTksNy4wOTk3NjQ3MSBMMjcuMjY1NTI5NCw3LjA5OTc2NDcxIEwyNy4yNjU1Mjk0LDguMjI3MjExNzYgTDMwLjk4NDYxMTgsOC4yMjcyMTE3NiBMMzAuOTg0NjExOCw3LjE1NDUwNTg4IEwzMS4zNjM5Mjk0LDguMjI3MjExNzYgTDM0LjYyNzk0MTIsOC4yMjcyMTE3NiBMMzQuMjM1OTA1OSw3LjA5OTc2NDcxIFogTTQyLjE0MTMwNTksNC43MzMxNzY0NyBMMzUuOTkxNDk0MSw0LjczMzE3NjQ3IEwzNS42MDA1NjQ3LDUuODYwMDcwNTkgTDQyLjE0MTg1ODgsNS44NjAwNzA1OSBMNDIuMTQxMzA1OSw0LjczMzE3NjQ3IFogTTM3LjYzMzE3NjUsMCBMMzcuMjQyOCwxLjEyNjg5NDEyIEw0NC42MjEyNDcxLDEuMTI2ODk0MTIgTDQ0LjYyMTI0NzEsMCBMMzcuNjMzMTc2NSwwIFogTTM0LjcwMDkyOTQsMTcuNjk0MTE3NiBMMzUuMDk5MDQ3MSwxNi41NjcyMjM1IEwzNC4zMDcyMzUzLDE2LjU2NzIyMzUgTDM0LjcwMDkyOTQsMTcuNjk0MTE3NiBaIE0zMy44Njk4NTg4LDE1LjMyNzUyOTQgTDM1LjUzNjk3NjUsMTUuMzI3NTI5NCBMMzUuOTM1MDk0MSwxNC4yMDA2MzUzIEwzMy40NzE3NDEyLDE0LjIwMDYzNTMgTDMzLjg2OTg1ODgsMTUuMzI3NTI5NCBaIE0zMy4wMzQzNjQ3LDEyLjk2MDk0MTIgTDM2LjM3MjQ3MDYsMTIuOTYwOTQxMiBMMzYuNzcwNTg4MiwxMS44MzM0OTQxIEwzMi42MzY4LDExLjgzMzQ5NDEgTDMzLjAzNDM2NDcsMTIuOTYwOTQxMiBaIE0zMi4xOTg4NzA2LDEwLjU5MzggTDM3LjIwODUxNzYsMTAuNTkzOCBMMzcuNjA2MDgyNCw5LjQ2NjkwNTg4IEwzMS44MDAyLDkuNDY2OTA1ODggTDMyLjE5ODg3MDYsMTAuNTkzOCBaIE0yNy4yNjQ5NzY1LDUuODYwMDcwNTkgTDMzLjgwNjI3MDYsNS44NjAwNzA1OSBMMzMuNDE1MzQxMiw0LjczMzE3NjQ3IEwyNy4yNjQ5NzY1LDQuNzMzMTc2NDcgTDI3LjI2NDk3NjUsNS44NjAwNzA1OSBaIE0zNi40MjExMjk0LDMuNDkzNDgyMzUgTDQ0LjYyMTI0NzEsMy40OTM0ODIzNSBMNDQuNjIxMjQ3MSwyLjM2NjU4ODI0IEwzNi44MTI2MTE4LDIuMzY2NTg4MjQgTDM2LjQyMTEyOTQsMy40OTM0ODIzNSBaIE0zMi41OTQyMjM1LDIuMzY2NTg4MjQgTDI0Ljc4NjE0MTIsMi4zNjY1ODgyNCBMMjQuNzg2MTQxMiwzLjQ5MzQ4MjM1IEwzMi45ODUxNTI5LDMuNDkzNDgyMzUgTDMyLjU5NDIyMzUsMi4zNjY1ODgyNCBaIiBpZD0iU2hhcGUiPjwvcGF0aD4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==\"","module.exports = __webpack_public_path__ + \"static/uni-new-brunswick-logo-6555470091976484ab5115fd4dc596ac.svg\";"],"sourceRoot":""}
\ No newline at end of file
diff --git a/component---src-pages-about-js-f3472e79e3f9cd8dc280.js b/component---src-pages-about-js-f3472e79e3f9cd8dc280.js
new file mode 100644
index 0000000..6cb3bfe
--- /dev/null
+++ b/component---src-pages-about-js-f3472e79e3f9cd8dc280.js
@@ -0,0 +1,2 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[2],{"1JOE":function(M,N,T){M.exports=T.p+"static/oregon-state-university-logo-3c2d68263b3d6bd814701041f7626cbe.svg"},"3XHS":function(M,N,T){"use strict";T.r(N);var j=T("Bl7J"),D=T("2A+t"),z=T("MXbp"),I=T("IY7k"),e=T.n(I),i=T("1JOE"),c=T.n(i),g=T("v8em"),O=T.n(g),y=T("VE45"),w=T.n(y),t=T("JMMV"),u=T("ZXdF");T("qKvR");N.default=function(){return Object(D.c)(j.a,{isHome:!1,title:"The Eclipse OpenJ9 story",description:"With a rich heritage, OpenJ9 has the credentials to deliver quality and reliability."},Object(D.c)("section",{sx:{backgroundColor:"#F5F9FC",paddingX:"7%",paddingY:"5%"}},Object(D.c)(z.b.h1,{sx:{marginBottom:"3rem"}},"More about OpenJ9"),Object(D.c)("div",{sx:{backgroundColor:"white",paddingY:5,paddingX:"5%",borderRadius:"card"}},Object(D.c)(z.b.h2,null,"Our story"),Object(D.c)(z.b.p,null,"Eclipse OpenJ9 is a high performance, scalable, Java virtual machine (JVM) implementation that represents hundreds of person-years of effort. Contributed to the Eclipse project by IBM, the OpenJ9 JVM underpins the IBM SDK, Java Technology Edition product that is a core component of many IBM Enterprise software products. Continued development of OpenJ9 at the Eclipse foundation ensures wider collaboration, fresh innovation, and the opportunity to influence the development of OpenJ9 for the next generation of Java applications."))),Object(D.c)("section",{sx:{backgroundColor:"primary",color:"lightText",paddingX:"7%",paddingY:5}},Object(D.c)(z.b.h2,null,"Our supporters"),Object(D.c)(z.b.p,null,"The success of the OpenJ9 project is underpinned by the generosity of our supporters, to whom we would like to extend our thanks. This support comes in different forms; monetory, people, system, and data center resources. People resources help us to staff the planning, development, delivery, and support of OpenJ9 releases as well as pioneering new and innovative technologies. Dedicated systems and hosting services allow us to run automated build and test operations, which help ensure that quality and reliability is central to all our deliverables."),Object(D.c)("div",{sx:{display:"flex",flexWrap:"wrap",justifyContent:"space-around"}},Object(D.c)(t.a,{width:"16rem",primary:!1},Object(D.c)("img",{sx:{width:"50%",height:"50%"},src:e.a,alt:"IBM Logo"})),Object(D.c)(t.a,{width:"16rem",primary:!1},Object(D.c)("img",{sx:{width:"80%",filter:"invert(100%)"},src:w.a,alt:"AdoptOpenJDK Logo"})),Object(D.c)(t.a,{width:"16rem",primary:!1},Object(D.c)("img",{sx:{width:"50%",height:"50%"},src:c.a,alt:"Oregon State University Logo"})),Object(D.c)(t.a,{width:"16rem",primary:!1},Object(D.c)("img",{sx:{width:"50%",height:"50%"},src:O.a,alt:"New Brunswick University Logo"})))),Object(D.c)("section",{sx:{paddingX:"7%",paddingY:5,backgroundColor:"#F5F9FC"}},Object(D.c)("div",{sx:{display:"grid",gridGap:"6rem",gridTemplateColumns:["repeat(1, 1fr)","repeat(1, 1fr)","repeat(1, 1fr)","repeat(2, 1fr)"],backgroundColor:"white",paddingX:"5%",paddingY:"5%",borderRadius:"card"}},Object(D.c)("article",{sx:{display:"flex",flexDirection:"column",justifyContent:"space-between"}},Object(D.c)(z.b.h3,null,"DOCS"),Object(D.c)(z.b.p,null,"If you are new to OpenJ9, our documentation will help you get started. Out of the box, we expect you to discover a great experience, but we also have many tuning options to help you ramp up application performance."),Object(D.c)(u.a,{primary:!0,link:"https://www.eclipse.org/openj9/docs/",target:!0},"Go to docs")),Object(D.c)("article",{sx:{display:"flex",flexDirection:"column",justifyContent:"space-between"}},Object(D.c)(z.b.h3,null,"BLOGS"),Object(D.c)(z.b.p,null,"Our blogs are written by developers, for developers. Read about their insights into up and coming technologies, take deep dives into OpenJ9 development, or simply hear about their experiences of working on the project."),Object(D.c)(u.a,{primary:!0,link:"https://blog.openj9.org/",target:!0},"Go to blogs")))))}},IY7k:function(M,N){M.exports="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNDVweCIgaGVpZ2h0PSIxOHB4IiB2aWV3Qm94PSIwIDAgNDUgMTgiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5pYm0tbG9nbzwvdGl0bGU+CiAgICA8ZGVzYz5DcmVhdGVkIHdpdGggU2tldGNoLjwvZGVzYz4KICAgIDxnIGlkPSJQYWdlLTEiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPgogICAgICAgIDxnIGlkPSJpYm0tbG9nbyIgZmlsbD0iIzAwMDAwMCIgZmlsbC1ydWxlPSJub256ZXJvIj4KICAgICAgICAgICAgPHBhdGggZD0iTTAsMTcuNjk0MTE3NiBMOC42NzUwOTQxMiwxNy42OTQxMTc2IEw4LjY3NTA5NDEyLDE2LjU2NzIyMzUgTDAsMTYuNTY3MjIzNSBMMCwxNy42OTQxMTc2IFogTTAsMTUuMzI4MDgyNCBMOC42NzUwOTQxMiwxNS4zMjgwODI0IEw4LjY3NTA5NDEyLDE0LjIwMTE4ODIgTDAsMTQuMjAxMTg4MiBMMCwxNS4zMjgwODI0IFogTTIuNDc4ODM1MjksMTIuOTYyMDQ3MSBMNi4xOTY4MTE3NiwxMi45NjIwNDcxIEw2LjE5NjgxMTc2LDExLjgzNTcwNTkgTDIuNDc4ODM1MjksMTEuODM1NzA1OSBMMi40Nzg4MzUyOSwxMi45NjIwNDcxIFogTTIuNDc4ODM1MjksMTAuNTk2NTY0NyBMNi4xOTY4MTE3NiwxMC41OTY1NjQ3IEw2LjE5NjgxMTc2LDkuNDY5NjcwNTkgTDIuNDc4ODM1MjksOS40Njk2NzA1OSBMMi40Nzg4MzUyOSwxMC41OTY1NjQ3IFogTTIuNDc4ODM1MjksOC4yMzA1Mjk0MSBMNi4xOTY4MTE3Niw4LjIzMDUyOTQxIEw2LjE5NjgxMTc2LDcuMTA0MTg4MjQgTDIuNDc4ODM1MjksNy4xMDQxODgyNCBMMi40Nzg4MzUyOSw4LjIzMDUyOTQxIFogTTIuNDc4MjgyMzUsNS44NjQ0OTQxMiBMNi4xOTYyNTg4Miw1Ljg2NDQ5NDEyIEw2LjE5NjI1ODgyLDQuNzM3NiBMMi40NzgyODIzNSw0LjczNzYgTDIuNDc4MjgyMzUsNS44NjQ0OTQxMiBaIE0wLDMuNDk4NDU4ODIgTDguNjc1MDk0MTIsMy40OTg0NTg4MiBMOC42NzUwOTQxMiwyLjM3MjExNzY1IEwwLDIuMzcyMTE3NjUgTDAsMy40OTg0NTg4MiBaIE0wLDEuMTMyOTc2NDcgTDguNjc1MDk0MTIsMS4xMzI5NzY0NyBMOC42NzUwOTQxMiwwLjAwNjA4MjM1Mjk0IEwwLDAuMDA2MDgyMzUyOTQgTDAsMS4xMzI5NzY0NyBaIE05LjkxNDIzNTI5LDE2LjU2Nzc3NjUgTDkuOTE0MjM1MjksMTcuNjk0MTIxOSBMMTkuMDM5OTc2NSwxNy42OTQxMjE5IEMyMC4xNjI2NTU1LDE3LjY5NTYyMTIgMjEuMjQ4OTc1NCwxNy4yOTYxOTI4IDIyLjEwMzI3MDYsMTYuNTY3Nzc2NSBMOS45MTQyMzUyOSwxNi41Njc3NzY1IFogTTkuOTE0MjM1MjksMTQuMjAxMTg4MiBMOS45MTQyMzUyOSwxNS4zMjgwODI0IEwyMy4xMzcyNzA2LDE1LjMyODA4MjQgQzIzLjM0MjA3MjUsMTQuOTc0Mzg3NCAyMy41MDAwNjExLDE0LjU5NTU4NjYgMjMuNjA3MjcwNiwxNC4yMDExODgyIEw5LjkxNDIzNTI5LDE0LjIwMTE4ODIgWiBNMTIuMzkyNTE3NiwxMi45NjIwNDcxIEwxNi4xMTA0OTQxLDEyLjk2MjA0NzEgTDE2LjExMDQ5NDEsMTEuODM1NzA1OSBMMTIuMzkyNTE3NiwxMS44MzU3MDU5IEwxMi4zOTI1MTc2LDEyLjk2MjA0NzEgWiBNMjIuMTg2MjExOCw5LjQ2OTY3MDU5IEwxMi4zOTI1MTc2LDkuNDY5NjcwNTkgTDEyLjM5MjUxNzYsMTAuNTk2NTY0NyBMMjMuMDk2MzUyOSwxMC41OTY1NjQ3IEMyMi44NTIzMjQ4LDEwLjE3Njc5NjMgMjIuNTQ1NTg5LDkuNzk2Nzc5NjEgMjIuMTg2NzY0Nyw5LjQ2OTY3MDU5IE0xMi4zOTMwNzA2LDcuMTA0MTg4MjQgTDEyLjM5MzA3MDYsOC4yMjk5NzY0NyBMMjIuMjI3NjgyNCw4LjIyOTk3NjQ3IEMyMi41ODYzMTY2LDcuOTAzMDQyNiAyMi44OTI4Njg3LDcuNTIzMjA4ODggMjMuMTM2NzE3Niw3LjEwMzYzNTI5IEwxMi4zOTMwNzA2LDcuMTAzNjM1MjkgTDEyLjM5MzA3MDYsNy4xMDQxODgyNCBaIE0yMy42MDY3MTc2LDMuNDk4NDU4ODIgQzIzLjQ5OTk4OTMsMy4xMDQwNzA5MiAyMy4zNDE5NzM5LDIuNzI1MzkxNzkgMjMuMTM2NzE3NiwyLjM3MjExNzY1IEw5LjkxNDIzNTI5LDIuMzcyMTE3NjUgTDkuOTE0MjM1MjksMy40OTg0NTg4MiBMMjMuNjA2NzE3NiwzLjQ5ODQ1ODgyIEwyMy42MDY3MTc2LDMuNDk4NDU4ODIgWiBNMjIuMTAzMjcwNiwxLjEzMjk3NjQ3IEMyMS4yNDg5NzU0LDAuNDA0NTYwMTQyIDIwLjE2MjY1NTUsMC4wMDUxMzE2OTc4MiAxOS4wMzk5NzY1LDAuMDA2NjMxMDY0NDkgTDkuOTE0MjM1MjksMC4wMDY2MzEwNjQ0OSBMOS45MTQyMzUyOSwxLjEzMjk3NjQ3IEwyMi4xMDMyNzA2LDEuMTMyOTc2NDcgTDIyLjEwMzI3MDYsMS4xMzI5NzY0NyBaIE0xMi4zOTI1MTc2LDUuODY0NDk0MTIgTDE2LjExMDQ5NDEsNS44NjQ0OTQxMiBMMTYuMTEwNDk0MSw0LjczNzYgTDEyLjM5MjUxNzYsNC43Mzc2IEwxMi4zOTI1MTc2LDUuODY0NDk0MTIgWiBNMTkuNjAzNDIzNSw1Ljg2NDQ5NDEyIEwyMy42MzQzNjQ3LDUuODY0NDk0MTIgQzIzLjcyNDg5Miw1LjQ5NTY4MzA0IDIzLjc3MDkyOTUsNS4xMTczNTg0NCAyMy43NzE0OTQxLDQuNzM3NiBMMTkuNjAzNDIzNSw0LjczNzYgTDE5LjYwMzQyMzUsNS44NjQ0OTQxMiBaIE0xOS42MDM0MjM1LDExLjgzNTcwNTkgTDE5LjYwMzQyMzUsMTIuOTYyMDQ3MSBMMjMuNzcxNDk0MSwxMi45NjIwNDcxIEMyMy43NzE0OTQxLDEyLjU3MzMyOTQgMjMuNzIxNzI5NCwxMi4xOTY3NzY1IDIzLjYzNDM2NDcsMTEuODM1NzA1OSBMMTkuNjAzNDIzNSwxMS44MzU3MDU5IFogTTMxLjc3MDM0MTIsMCBMMjQuNzg1NTg4MiwwIEwyNC43ODU1ODgyLDEuMTI2ODk0MTIgTDMyLjE2MTgyMzUsMS4xMjY4OTQxMiBMMzEuNzcwMzQxMiwwIFogTTI0Ljc4NjE0MTIsMTcuNjk0MTE3NiBMMzAuOTg0NjExOCwxNy42OTQxMTc2IEwzMC45ODQ2MTE4LDE2LjU2NzIyMzUgTDI0Ljc4NjE0MTIsMTYuNTY3MjIzNSBMMjQuNzg2MTQxMiwxNy42OTQxMTc2IFogTTI0Ljc4NjE0MTIsMTUuMzI3NTI5NCBMMzAuOTg0NjExOCwxNS4zMjc1Mjk0IEwzMC45ODQ2MTE4LDE0LjIwMDYzNTMgTDI0Ljc4NjE0MTIsMTQuMjAwNjM1MyBMMjQuNzg2MTQxMiwxNS4zMjc1Mjk0IFogTTI3LjI2NDk3NjUsMTIuOTYwMzg4MiBMMzAuOTg0NjExOCwxMi45NjAzODgyIEwzMC45ODQ2MTE4LDExLjgzMzQ5NDEgTDI3LjI2NDk3NjUsMTEuODMzNDk0MSBMMjcuMjY0OTc2NSwxMi45NjAzODgyIFogTTI3LjI2NDk3NjUsMTAuNTkzOCBMMzAuOTg0NjExOCwxMC41OTM4IEwzMC45ODQ2MTE4LDkuNDY2OTA1ODggTDI3LjI2NDk3NjUsOS40NjY5MDU4OCBMMjcuMjY0OTc2NSwxMC41OTM4IFogTTM4LjQyMjc3NjUsMTcuNjk0MTE3NiBMNDQuNjIxMjQ3MSwxNy42OTQxMTc2IEw0NC42MjEyNDcxLDE2LjU2NzIyMzUgTDM4LjQyMjc3NjUsMTYuNTY3MjIzNSBMMzguNDIyNzc2NSwxNy42OTQxMTc2IFogTTM4LjQyMjc3NjUsMTUuMzI3NTI5NCBMNDQuNjIxMjQ3MSwxNS4zMjc1Mjk0IEw0NC42MjEyNDcxLDE0LjIwMDYzNTMgTDM4LjQyMjc3NjUsMTQuMjAwNjM1MyBMMzguNDIyNzc2NSwxNS4zMjc1Mjk0IFogTTM4LjQyMjc3NjUsMTIuOTYwMzg4MiBMNDIuMTQxODU4OCwxMi45NjAzODgyIEw0Mi4xNDE4NTg4LDExLjgzMzQ5NDEgTDM4LjQyMjc3NjUsMTEuODMzNDk0MSBMMzguNDIyNzc2NSwxMi45NjAzODgyIFogTTM4LjQyMjIyMzUsMTAuNTkzOCBMNDIuMTQxMzA1OSwxMC41OTM4IEw0Mi4xNDEzMDU5LDkuNDY2OTA1ODggTDM4LjQyMjIyMzUsOS40NjY5MDU4OCBMMzguNDIyMjIzNSwxMC41OTM4IFogTTM4LjQyMjc3NjUsOC4yMjcyMTE3NiBMNDIuMTQxODU4OCw4LjIyNzIxMTc2IEw0Mi4xNDE4NTg4LDcuMDk5NzY0NzEgTDM1LjE3MDM3NjUsNy4wOTk3NjQ3MSBMMzQuNzc5NDQ3MSw4LjIyNjY1ODgyIEwzOC4wNDM0NTg4LDguMjI2NjU4ODIgTDM4LjQyMjc3NjUsNy4xNTM5NTI5NCBMMzguNDIyNzc2NSw4LjIyNzIxMTc2IFogTTM0LjIzNTkwNTksNy4wOTk3NjQ3MSBMMjcuMjY1NTI5NCw3LjA5OTc2NDcxIEwyNy4yNjU1Mjk0LDguMjI3MjExNzYgTDMwLjk4NDYxMTgsOC4yMjcyMTE3NiBMMzAuOTg0NjExOCw3LjE1NDUwNTg4IEwzMS4zNjM5Mjk0LDguMjI3MjExNzYgTDM0LjYyNzk0MTIsOC4yMjcyMTE3NiBMMzQuMjM1OTA1OSw3LjA5OTc2NDcxIFogTTQyLjE0MTMwNTksNC43MzMxNzY0NyBMMzUuOTkxNDk0MSw0LjczMzE3NjQ3IEwzNS42MDA1NjQ3LDUuODYwMDcwNTkgTDQyLjE0MTg1ODgsNS44NjAwNzA1OSBMNDIuMTQxMzA1OSw0LjczMzE3NjQ3IFogTTM3LjYzMzE3NjUsMCBMMzcuMjQyOCwxLjEyNjg5NDEyIEw0NC42MjEyNDcxLDEuMTI2ODk0MTIgTDQ0LjYyMTI0NzEsMCBMMzcuNjMzMTc2NSwwIFogTTM0LjcwMDkyOTQsMTcuNjk0MTE3NiBMMzUuMDk5MDQ3MSwxNi41NjcyMjM1IEwzNC4zMDcyMzUzLDE2LjU2NzIyMzUgTDM0LjcwMDkyOTQsMTcuNjk0MTE3NiBaIE0zMy44Njk4NTg4LDE1LjMyNzUyOTQgTDM1LjUzNjk3NjUsMTUuMzI3NTI5NCBMMzUuOTM1MDk0MSwxNC4yMDA2MzUzIEwzMy40NzE3NDEyLDE0LjIwMDYzNTMgTDMzLjg2OTg1ODgsMTUuMzI3NTI5NCBaIE0zMy4wMzQzNjQ3LDEyLjk2MDk0MTIgTDM2LjM3MjQ3MDYsMTIuOTYwOTQxMiBMMzYuNzcwNTg4MiwxMS44MzM0OTQxIEwzMi42MzY4LDExLjgzMzQ5NDEgTDMzLjAzNDM2NDcsMTIuOTYwOTQxMiBaIE0zMi4xOTg4NzA2LDEwLjU5MzggTDM3LjIwODUxNzYsMTAuNTkzOCBMMzcuNjA2MDgyNCw5LjQ2NjkwNTg4IEwzMS44MDAyLDkuNDY2OTA1ODggTDMyLjE5ODg3MDYsMTAuNTkzOCBaIE0yNy4yNjQ5NzY1LDUuODYwMDcwNTkgTDMzLjgwNjI3MDYsNS44NjAwNzA1OSBMMzMuNDE1MzQxMiw0LjczMzE3NjQ3IEwyNy4yNjQ5NzY1LDQuNzMzMTc2NDcgTDI3LjI2NDk3NjUsNS44NjAwNzA1OSBaIE0zNi40MjExMjk0LDMuNDkzNDgyMzUgTDQ0LjYyMTI0NzEsMy40OTM0ODIzNSBMNDQuNjIxMjQ3MSwyLjM2NjU4ODI0IEwzNi44MTI2MTE4LDIuMzY2NTg4MjQgTDM2LjQyMTEyOTQsMy40OTM0ODIzNSBaIE0zMi41OTQyMjM1LDIuMzY2NTg4MjQgTDI0Ljc4NjE0MTIsMi4zNjY1ODgyNCBMMjQuNzg2MTQxMiwzLjQ5MzQ4MjM1IEwzMi45ODUxNTI5LDMuNDkzNDgyMzUgTDMyLjU5NDIyMzUsMi4zNjY1ODgyNCBaIiBpZD0iU2hhcGUiPjwvcGF0aD4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg=="},v8em:function(M,N,T){M.exports=T.p+"static/uni-new-brunswick-logo-6555470091976484ab5115fd4dc596ac.svg"}}]);
+//# sourceMappingURL=component---src-pages-about-js-f3472e79e3f9cd8dc280.js.map
\ No newline at end of file
diff --git a/component---src-pages-about-js-f3472e79e3f9cd8dc280.js.map b/component---src-pages-about-js-f3472e79e3f9cd8dc280.js.map
new file mode 100644
index 0000000..49e19c8
--- /dev/null
+++ b/component---src-pages-about-js-f3472e79e3f9cd8dc280.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["webpack:///./src/images/oregon-state-university-logo.svg","webpack:///./src/pages/about.js","webpack:///./src/images/ibm-logo.svg","webpack:///./src/images/uni-new-brunswick-logo.svg"],"names":["module","exports","isHome","title","description","sx","backgroundColor","paddingX","paddingY","h1","marginBottom","borderRadius","h2","p","color","display","flexWrap","justifyContent","width","primary","height","src","ibmLogo","alt","filter","adoptopenJDK","oregonStateUniLogo","newBrunswickUniLogo","gridGap","gridTemplateColumns","flexDirection","h3","link","target"],"mappings":"gFAAAA,EAAOC,QAAU,IAA0B,4E,oCCA3C,qKAkCe,4BACb,YAAC,IAAD,CAAQC,QAAQ,EAAOC,MAAM,2BAA2BC,YAAY,wFAClE,uBAASC,GAAI,CAAEC,gBAAiB,UAAWC,SAAU,KAAMC,SAAU,OACnE,YAAC,IAAOC,GAAR,CAAWJ,GAAI,CAACK,aAAa,SAA7B,qBACA,mBACEL,GAAI,CACFC,gBAAiB,QACjBE,SAAU,EACVD,SAAU,KACVI,aAAc,SAGhB,YAAC,IAAOC,GAAR,kBACA,YAAC,IAAOC,EAAR,8hBASJ,uBACER,GAAI,CACFC,gBAAiB,UACjBQ,MAAO,YACPP,SAAU,KACVC,SAAU,IAGZ,YAAC,IAAOI,GAAR,uBACA,YAAC,IAAOC,EAAR,kjBAQA,mBACER,GAAI,CACFU,QAAS,OACTC,SAAU,OACVC,eAAgB,iBAGlB,YAAC,IAAD,CAAMC,MAAM,QAAQC,SAAS,GAC3B,mBAAKd,GAAI,CACPa,MAAO,MACPE,OAAQ,OACRC,IAAKC,IAASC,IAAI,cAEtB,YAAC,IAAD,CAAML,MAAM,QAAQC,SAAS,GAC3B,mBAAKd,GAAI,CACPa,MAAO,MACPM,OAAQ,gBACRH,IAAKI,IAAcF,IAAI,uBAE3B,YAAC,IAAD,CAAML,MAAM,QAAQC,SAAS,GAC3B,mBAAKd,GAAI,CACPa,MAAO,MACPE,OAAQ,OACRC,IAAKK,IAAoBH,IAAI,kCAEjC,YAAC,IAAD,CAAML,MAAM,QAAQC,SAAS,GAC3B,mBAAKd,GAAI,CACPa,MAAO,MACPE,OAAQ,OACRC,IAAKM,IAAqBJ,IAAI,qCAItC,uBACElB,GAAI,CACFE,SAAU,KACVC,SAAU,EACVF,gBAAiB,YAGnB,mBACED,GAAI,CACFU,QAAS,OACTa,QAAQ,OACRC,oBAAoB,CAAC,iBAAkB,iBAAkB,iBAAkB,kBAC3EvB,gBAAiB,QACjBC,SAAU,KACVC,SAAU,KACVG,aAAc,SAGhB,uBACEN,GAAI,CACFU,QAAQ,OACRe,cAAc,SACdb,eAAe,kBAGjB,YAAC,IAAOc,GAAR,aACA,YAAC,IAAOlB,EAAR,+NAIA,YAAC,IAAD,CAAQM,SAAS,EAAMa,KAAK,uCAAuCC,QAAQ,GAA3E,eAEF,uBACE5B,GAAI,CACFU,QAAQ,OACRe,cAAc,SACdb,eAAe,kBAGjB,YAAC,IAAOc,GAAR,cACA,YAAC,IAAOlB,EAAR,mOAIA,YAAC,IAAD,CAAQM,SAAS,EAAMa,KAAK,2BAA2BC,QAAQ,GAA/D,qB,mBCtJVjC,EAAOC,QAAU,07N,qBCAjBD,EAAOC,QAAU,IAA0B","file":"component---src-pages-about-js-f3472e79e3f9cd8dc280.js","sourcesContent":["module.exports = __webpack_public_path__ + \"static/oregon-state-university-logo-3c2d68263b3d6bd814701041f7626cbe.svg\";","// Copyright (c) 2017, 2020 IBM Corp. and others\n\n// This program and the accompanying materials are made available under\n// the terms of the Eclipse Public License 2.0 which accompanies this\n// distribution and is available at https://www.eclipse.org/legal/epl-2.0/\n// or the Apache License, Version 2.0 which accompanies this distribution and\n// is available at https://www.apache.org/licenses/LICENSE-2.0.\n\n// This Source Code may also be made available under the following\n// Secondary Licenses when the conditions for such availability set\n// forth in the Eclipse Public License, v. 2.0 are satisfied: GNU\n// General Public License, version 2 with the GNU Classpath\n// Exception [1] and GNU General Public License, version 2 with the\n// OpenJDK Assembly Exception [2].\n\n// [1] https://www.gnu.org/software/classpath/license.html\n// [2] http://openjdk.java.net/legal/assembly-exception.html\n\n// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 OR LicenseRef-GPL-2.0 WITH Assembly-exception\n\n// The project website pages cannot be redistributed\n\nimport Layout from \"../components/layout\";\n\n/** @jsx jsx */\nimport { jsx, Styled } from \"theme-ui\";\n\nimport ibmLogo from \"../images/ibm-logo.svg\";\nimport oregonStateUniLogo from \"../images/oregon-state-university-logo.svg\";\nimport newBrunswickUniLogo from \"../images/uni-new-brunswick-logo.svg\";\nimport adoptopenJDK from \"../images/adopt-open-jdk.png\";\nimport Card from \"../components/card\";\nimport Button from \"../components/button\";\n\nexport default () => (\n  <Layout isHome={false} title=\"The Eclipse OpenJ9 story\" description=\"With a rich heritage, OpenJ9 has the credentials to deliver quality and reliability.\">\n    <section sx={{ backgroundColor: \"#F5F9FC\", paddingX: \"7%\", paddingY: \"5%\" }}>\n      <Styled.h1 sx={{marginBottom:\"3rem\"}}>More about OpenJ9</Styled.h1>\n      <div\n        sx={{\n          backgroundColor: \"white\",\n          paddingY: 5,\n          paddingX: \"5%\",\n          borderRadius: \"card\"\n        }}\n      >\n        <Styled.h2>Our story</Styled.h2>\n        <Styled.p>\n          Eclipse OpenJ9 is a high performance, scalable, Java virtual machine (JVM) implementation that represents hundreds \n          of person-years of effort. Contributed to the Eclipse project by IBM, the OpenJ9 JVM underpins the IBM SDK, Java \n          Technology Edition product that is a core component of many IBM Enterprise software products. Continued development \n          of OpenJ9 at the Eclipse foundation ensures wider collaboration, fresh innovation, and the opportunity to influence \n          the development of OpenJ9 for the next generation of Java applications.\n        </Styled.p>\n      </div>\n    </section>\n    <section\n      sx={{\n        backgroundColor: \"primary\",\n        color: \"lightText\",\n        paddingX: \"7%\",\n        paddingY: 5\n      }}\n    >\n      <Styled.h2>Our supporters</Styled.h2>\n      <Styled.p>\n        The success of the OpenJ9 project is underpinned by the generosity of our supporters,\n        to whom we would like to extend our thanks. This support comes in different forms; monetory,\n        people, system, and data center resources. People resources help us to staff the planning, development,\n        delivery, and support of OpenJ9 releases as well as pioneering new and innovative technologies.\n        Dedicated systems and hosting services allow us to run automated build and test operations,\n        which help ensure that quality and reliability is central to all our deliverables.\n      </Styled.p>\n      <div\n        sx={{\n          display: \"flex\",\n          flexWrap: \"wrap\",\n          justifyContent: \"space-around\",\n        }}\n      >\n        <Card width=\"16rem\" primary={false}> \n          <img sx={{\n            width: \"50%\", \n            height: \"50%\", \n          }}src={ibmLogo} alt=\"IBM Logo\"></img>\n        </Card>\n        <Card width=\"16rem\" primary={false}> \n          <img sx={{\n            width: \"80%\", \n            filter: \"invert(100%)\"\n          }}src={adoptopenJDK} alt=\"AdoptOpenJDK Logo\"></img>\n        </Card>\n        <Card width=\"16rem\" primary={false}> \n          <img sx={{\n            width: \"50%\", \n            height: \"50%\", \n          }}src={oregonStateUniLogo} alt=\"Oregon State University Logo\"></img>\n        </Card>\n        <Card width=\"16rem\" primary={false}> \n          <img sx={{\n            width: \"50%\", \n            height: \"50%\", \n          }}src={newBrunswickUniLogo} alt=\"New Brunswick University Logo\"></img>\n        </Card>\n      </div>\n    </section>\n    <section\n      sx={{\n        paddingX: \"7%\",\n        paddingY: 5,\n        backgroundColor: \"#F5F9FC\"\n      }}\n    >\n      <div\n        sx={{\n          display: \"grid\",\n          gridGap:'6rem',\n          gridTemplateColumns:['repeat(1, 1fr)', 'repeat(1, 1fr)', 'repeat(1, 1fr)', 'repeat(2, 1fr)'],\n          backgroundColor: \"white\",\n          paddingX: \"5%\",\n          paddingY: \"5%\",\n          borderRadius: \"card\"        \n        }}\n      >\n        <article\n          sx={{\n            display:'flex',\n            flexDirection:'column',\n            justifyContent:'space-between'\n          }}\n        >\n          <Styled.h3>DOCS</Styled.h3>\n          <Styled.p>\n            If you are new to OpenJ9, our documentation will help you get started. Out of the box, we expect you to discover a great experience,\n            but we also have many tuning options to help you ramp up application performance.\n          </Styled.p>\n          <Button primary={true} link=\"https://www.eclipse.org/openj9/docs/\" target={true}>Go to docs</Button>\n        </article>\n        <article\n          sx={{\n            display:'flex',\n            flexDirection:'column',\n            justifyContent:'space-between'\n          }}\n        >\n          <Styled.h3>BLOGS</Styled.h3>\n          <Styled.p>\n            Our blogs are written by developers, for developers. Read about their insights into up and coming technologies,\n            take deep dives into OpenJ9 development, or simply hear about their experiences of working on the project.\n          </Styled.p>\n          <Button primary={true} link=\"https://blog.openj9.org/\" target={true}>Go to blogs</Button>\n        </article>\n      </div>\n    </section>\n  </Layout>\n);\n","module.exports = \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNDVweCIgaGVpZ2h0PSIxOHB4IiB2aWV3Qm94PSIwIDAgNDUgMTgiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5pYm0tbG9nbzwvdGl0bGU+CiAgICA8ZGVzYz5DcmVhdGVkIHdpdGggU2tldGNoLjwvZGVzYz4KICAgIDxnIGlkPSJQYWdlLTEiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPgogICAgICAgIDxnIGlkPSJpYm0tbG9nbyIgZmlsbD0iIzAwMDAwMCIgZmlsbC1ydWxlPSJub256ZXJvIj4KICAgICAgICAgICAgPHBhdGggZD0iTTAsMTcuNjk0MTE3NiBMOC42NzUwOTQxMiwxNy42OTQxMTc2IEw4LjY3NTA5NDEyLDE2LjU2NzIyMzUgTDAsMTYuNTY3MjIzNSBMMCwxNy42OTQxMTc2IFogTTAsMTUuMzI4MDgyNCBMOC42NzUwOTQxMiwxNS4zMjgwODI0IEw4LjY3NTA5NDEyLDE0LjIwMTE4ODIgTDAsMTQuMjAxMTg4MiBMMCwxNS4zMjgwODI0IFogTTIuNDc4ODM1MjksMTIuOTYyMDQ3MSBMNi4xOTY4MTE3NiwxMi45NjIwNDcxIEw2LjE5NjgxMTc2LDExLjgzNTcwNTkgTDIuNDc4ODM1MjksMTEuODM1NzA1OSBMMi40Nzg4MzUyOSwxMi45NjIwNDcxIFogTTIuNDc4ODM1MjksMTAuNTk2NTY0NyBMNi4xOTY4MTE3NiwxMC41OTY1NjQ3IEw2LjE5NjgxMTc2LDkuNDY5NjcwNTkgTDIuNDc4ODM1MjksOS40Njk2NzA1OSBMMi40Nzg4MzUyOSwxMC41OTY1NjQ3IFogTTIuNDc4ODM1MjksOC4yMzA1Mjk0MSBMNi4xOTY4MTE3Niw4LjIzMDUyOTQxIEw2LjE5NjgxMTc2LDcuMTA0MTg4MjQgTDIuNDc4ODM1MjksNy4xMDQxODgyNCBMMi40Nzg4MzUyOSw4LjIzMDUyOTQxIFogTTIuNDc4MjgyMzUsNS44NjQ0OTQxMiBMNi4xOTYyNTg4Miw1Ljg2NDQ5NDEyIEw2LjE5NjI1ODgyLDQuNzM3NiBMMi40NzgyODIzNSw0LjczNzYgTDIuNDc4MjgyMzUsNS44NjQ0OTQxMiBaIE0wLDMuNDk4NDU4ODIgTDguNjc1MDk0MTIsMy40OTg0NTg4MiBMOC42NzUwOTQxMiwyLjM3MjExNzY1IEwwLDIuMzcyMTE3NjUgTDAsMy40OTg0NTg4MiBaIE0wLDEuMTMyOTc2NDcgTDguNjc1MDk0MTIsMS4xMzI5NzY0NyBMOC42NzUwOTQxMiwwLjAwNjA4MjM1Mjk0IEwwLDAuMDA2MDgyMzUyOTQgTDAsMS4xMzI5NzY0NyBaIE05LjkxNDIzNTI5LDE2LjU2Nzc3NjUgTDkuOTE0MjM1MjksMTcuNjk0MTIxOSBMMTkuMDM5OTc2NSwxNy42OTQxMjE5IEMyMC4xNjI2NTU1LDE3LjY5NTYyMTIgMjEuMjQ4OTc1NCwxNy4yOTYxOTI4IDIyLjEwMzI3MDYsMTYuNTY3Nzc2NSBMOS45MTQyMzUyOSwxNi41Njc3NzY1IFogTTkuOTE0MjM1MjksMTQuMjAxMTg4MiBMOS45MTQyMzUyOSwxNS4zMjgwODI0IEwyMy4xMzcyNzA2LDE1LjMyODA4MjQgQzIzLjM0MjA3MjUsMTQuOTc0Mzg3NCAyMy41MDAwNjExLDE0LjU5NTU4NjYgMjMuNjA3MjcwNiwxNC4yMDExODgyIEw5LjkxNDIzNTI5LDE0LjIwMTE4ODIgWiBNMTIuMzkyNTE3NiwxMi45NjIwNDcxIEwxNi4xMTA0OTQxLDEyLjk2MjA0NzEgTDE2LjExMDQ5NDEsMTEuODM1NzA1OSBMMTIuMzkyNTE3NiwxMS44MzU3MDU5IEwxMi4zOTI1MTc2LDEyLjk2MjA0NzEgWiBNMjIuMTg2MjExOCw5LjQ2OTY3MDU5IEwxMi4zOTI1MTc2LDkuNDY5NjcwNTkgTDEyLjM5MjUxNzYsMTAuNTk2NTY0NyBMMjMuMDk2MzUyOSwxMC41OTY1NjQ3IEMyMi44NTIzMjQ4LDEwLjE3Njc5NjMgMjIuNTQ1NTg5LDkuNzk2Nzc5NjEgMjIuMTg2NzY0Nyw5LjQ2OTY3MDU5IE0xMi4zOTMwNzA2LDcuMTA0MTg4MjQgTDEyLjM5MzA3MDYsOC4yMjk5NzY0NyBMMjIuMjI3NjgyNCw4LjIyOTk3NjQ3IEMyMi41ODYzMTY2LDcuOTAzMDQyNiAyMi44OTI4Njg3LDcuNTIzMjA4ODggMjMuMTM2NzE3Niw3LjEwMzYzNTI5IEwxMi4zOTMwNzA2LDcuMTAzNjM1MjkgTDEyLjM5MzA3MDYsNy4xMDQxODgyNCBaIE0yMy42MDY3MTc2LDMuNDk4NDU4ODIgQzIzLjQ5OTk4OTMsMy4xMDQwNzA5MiAyMy4zNDE5NzM5LDIuNzI1MzkxNzkgMjMuMTM2NzE3NiwyLjM3MjExNzY1IEw5LjkxNDIzNTI5LDIuMzcyMTE3NjUgTDkuOTE0MjM1MjksMy40OTg0NTg4MiBMMjMuNjA2NzE3NiwzLjQ5ODQ1ODgyIEwyMy42MDY3MTc2LDMuNDk4NDU4ODIgWiBNMjIuMTAzMjcwNiwxLjEzMjk3NjQ3IEMyMS4yNDg5NzU0LDAuNDA0NTYwMTQyIDIwLjE2MjY1NTUsMC4wMDUxMzE2OTc4MiAxOS4wMzk5NzY1LDAuMDA2NjMxMDY0NDkgTDkuOTE0MjM1MjksMC4wMDY2MzEwNjQ0OSBMOS45MTQyMzUyOSwxLjEzMjk3NjQ3IEwyMi4xMDMyNzA2LDEuMTMyOTc2NDcgTDIyLjEwMzI3MDYsMS4xMzI5NzY0NyBaIE0xMi4zOTI1MTc2LDUuODY0NDk0MTIgTDE2LjExMDQ5NDEsNS44NjQ0OTQxMiBMMTYuMTEwNDk0MSw0LjczNzYgTDEyLjM5MjUxNzYsNC43Mzc2IEwxMi4zOTI1MTc2LDUuODY0NDk0MTIgWiBNMTkuNjAzNDIzNSw1Ljg2NDQ5NDEyIEwyMy42MzQzNjQ3LDUuODY0NDk0MTIgQzIzLjcyNDg5Miw1LjQ5NTY4MzA0IDIzLjc3MDkyOTUsNS4xMTczNTg0NCAyMy43NzE0OTQxLDQuNzM3NiBMMTkuNjAzNDIzNSw0LjczNzYgTDE5LjYwMzQyMzUsNS44NjQ0OTQxMiBaIE0xOS42MDM0MjM1LDExLjgzNTcwNTkgTDE5LjYwMzQyMzUsMTIuOTYyMDQ3MSBMMjMuNzcxNDk0MSwxMi45NjIwNDcxIEMyMy43NzE0OTQxLDEyLjU3MzMyOTQgMjMuNzIxNzI5NCwxMi4xOTY3NzY1IDIzLjYzNDM2NDcsMTEuODM1NzA1OSBMMTkuNjAzNDIzNSwxMS44MzU3MDU5IFogTTMxLjc3MDM0MTIsMCBMMjQuNzg1NTg4MiwwIEwyNC43ODU1ODgyLDEuMTI2ODk0MTIgTDMyLjE2MTgyMzUsMS4xMjY4OTQxMiBMMzEuNzcwMzQxMiwwIFogTTI0Ljc4NjE0MTIsMTcuNjk0MTE3NiBMMzAuOTg0NjExOCwxNy42OTQxMTc2IEwzMC45ODQ2MTE4LDE2LjU2NzIyMzUgTDI0Ljc4NjE0MTIsMTYuNTY3MjIzNSBMMjQuNzg2MTQxMiwxNy42OTQxMTc2IFogTTI0Ljc4NjE0MTIsMTUuMzI3NTI5NCBMMzAuOTg0NjExOCwxNS4zMjc1Mjk0IEwzMC45ODQ2MTE4LDE0LjIwMDYzNTMgTDI0Ljc4NjE0MTIsMTQuMjAwNjM1MyBMMjQuNzg2MTQxMiwxNS4zMjc1Mjk0IFogTTI3LjI2NDk3NjUsMTIuOTYwMzg4MiBMMzAuOTg0NjExOCwxMi45NjAzODgyIEwzMC45ODQ2MTE4LDExLjgzMzQ5NDEgTDI3LjI2NDk3NjUsMTEuODMzNDk0MSBMMjcuMjY0OTc2NSwxMi45NjAzODgyIFogTTI3LjI2NDk3NjUsMTAuNTkzOCBMMzAuOTg0NjExOCwxMC41OTM4IEwzMC45ODQ2MTE4LDkuNDY2OTA1ODggTDI3LjI2NDk3NjUsOS40NjY5MDU4OCBMMjcuMjY0OTc2NSwxMC41OTM4IFogTTM4LjQyMjc3NjUsMTcuNjk0MTE3NiBMNDQuNjIxMjQ3MSwxNy42OTQxMTc2IEw0NC42MjEyNDcxLDE2LjU2NzIyMzUgTDM4LjQyMjc3NjUsMTYuNTY3MjIzNSBMMzguNDIyNzc2NSwxNy42OTQxMTc2IFogTTM4LjQyMjc3NjUsMTUuMzI3NTI5NCBMNDQuNjIxMjQ3MSwxNS4zMjc1Mjk0IEw0NC42MjEyNDcxLDE0LjIwMDYzNTMgTDM4LjQyMjc3NjUsMTQuMjAwNjM1MyBMMzguNDIyNzc2NSwxNS4zMjc1Mjk0IFogTTM4LjQyMjc3NjUsMTIuOTYwMzg4MiBMNDIuMTQxODU4OCwxMi45NjAzODgyIEw0Mi4xNDE4NTg4LDExLjgzMzQ5NDEgTDM4LjQyMjc3NjUsMTEuODMzNDk0MSBMMzguNDIyNzc2NSwxMi45NjAzODgyIFogTTM4LjQyMjIyMzUsMTAuNTkzOCBMNDIuMTQxMzA1OSwxMC41OTM4IEw0Mi4xNDEzMDU5LDkuNDY2OTA1ODggTDM4LjQyMjIyMzUsOS40NjY5MDU4OCBMMzguNDIyMjIzNSwxMC41OTM4IFogTTM4LjQyMjc3NjUsOC4yMjcyMTE3NiBMNDIuMTQxODU4OCw4LjIyNzIxMTc2IEw0Mi4xNDE4NTg4LDcuMDk5NzY0NzEgTDM1LjE3MDM3NjUsNy4wOTk3NjQ3MSBMMzQuNzc5NDQ3MSw4LjIyNjY1ODgyIEwzOC4wNDM0NTg4LDguMjI2NjU4ODIgTDM4LjQyMjc3NjUsNy4xNTM5NTI5NCBMMzguNDIyNzc2NSw4LjIyNzIxMTc2IFogTTM0LjIzNTkwNTksNy4wOTk3NjQ3MSBMMjcuMjY1NTI5NCw3LjA5OTc2NDcxIEwyNy4yNjU1Mjk0LDguMjI3MjExNzYgTDMwLjk4NDYxMTgsOC4yMjcyMTE3NiBMMzAuOTg0NjExOCw3LjE1NDUwNTg4IEwzMS4zNjM5Mjk0LDguMjI3MjExNzYgTDM0LjYyNzk0MTIsOC4yMjcyMTE3NiBMMzQuMjM1OTA1OSw3LjA5OTc2NDcxIFogTTQyLjE0MTMwNTksNC43MzMxNzY0NyBMMzUuOTkxNDk0MSw0LjczMzE3NjQ3IEwzNS42MDA1NjQ3LDUuODYwMDcwNTkgTDQyLjE0MTg1ODgsNS44NjAwNzA1OSBMNDIuMTQxMzA1OSw0LjczMzE3NjQ3IFogTTM3LjYzMzE3NjUsMCBMMzcuMjQyOCwxLjEyNjg5NDEyIEw0NC42MjEyNDcxLDEuMTI2ODk0MTIgTDQ0LjYyMTI0NzEsMCBMMzcuNjMzMTc2NSwwIFogTTM0LjcwMDkyOTQsMTcuNjk0MTE3NiBMMzUuMDk5MDQ3MSwxNi41NjcyMjM1IEwzNC4zMDcyMzUzLDE2LjU2NzIyMzUgTDM0LjcwMDkyOTQsMTcuNjk0MTE3NiBaIE0zMy44Njk4NTg4LDE1LjMyNzUyOTQgTDM1LjUzNjk3NjUsMTUuMzI3NTI5NCBMMzUuOTM1MDk0MSwxNC4yMDA2MzUzIEwzMy40NzE3NDEyLDE0LjIwMDYzNTMgTDMzLjg2OTg1ODgsMTUuMzI3NTI5NCBaIE0zMy4wMzQzNjQ3LDEyLjk2MDk0MTIgTDM2LjM3MjQ3MDYsMTIuOTYwOTQxMiBMMzYuNzcwNTg4MiwxMS44MzM0OTQxIEwzMi42MzY4LDExLjgzMzQ5NDEgTDMzLjAzNDM2NDcsMTIuOTYwOTQxMiBaIE0zMi4xOTg4NzA2LDEwLjU5MzggTDM3LjIwODUxNzYsMTAuNTkzOCBMMzcuNjA2MDgyNCw5LjQ2NjkwNTg4IEwzMS44MDAyLDkuNDY2OTA1ODggTDMyLjE5ODg3MDYsMTAuNTkzOCBaIE0yNy4yNjQ5NzY1LDUuODYwMDcwNTkgTDMzLjgwNjI3MDYsNS44NjAwNzA1OSBMMzMuNDE1MzQxMiw0LjczMzE3NjQ3IEwyNy4yNjQ5NzY1LDQuNzMzMTc2NDcgTDI3LjI2NDk3NjUsNS44NjAwNzA1OSBaIE0zNi40MjExMjk0LDMuNDkzNDgyMzUgTDQ0LjYyMTI0NzEsMy40OTM0ODIzNSBMNDQuNjIxMjQ3MSwyLjM2NjU4ODI0IEwzNi44MTI2MTE4LDIuMzY2NTg4MjQgTDM2LjQyMTEyOTQsMy40OTM0ODIzNSBaIE0zMi41OTQyMjM1LDIuMzY2NTg4MjQgTDI0Ljc4NjE0MTIsMi4zNjY1ODgyNCBMMjQuNzg2MTQxMiwzLjQ5MzQ4MjM1IEwzMi45ODUxNTI5LDMuNDkzNDgyMzUgTDMyLjU5NDIyMzUsMi4zNjY1ODgyNCBaIiBpZD0iU2hhcGUiPjwvcGF0aD4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==\"","module.exports = __webpack_public_path__ + \"static/uni-new-brunswick-logo-6555470091976484ab5115fd4dc596ac.svg\";"],"sourceRoot":""}
\ No newline at end of file
diff --git a/component---src-pages-index-js-4f88f89ee8348cf9654f.js b/component---src-pages-index-js-4f88f89ee8348cf9654f.js
new file mode 100644
index 0000000..a420180
--- /dev/null
+++ b/component---src-pages-index-js-4f88f89ee8348cf9654f.js
@@ -0,0 +1,2 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[3],{FYNb:function(I,M,g){I.exports=g.p+"static/circle-pattern-big-96604574cf60a59e399e87bb5043431c.svg"},KqNj:function(I,M){I.exports="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjRweCIgaGVpZ2h0PSIyNHB4IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5zbGFjay1pY29uPC90aXRsZT4KICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPgogICAgPGcgaWQ9IlBhZ2UtMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9InNsYWNrLWljb24iIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0xLjAwMDAwMCwgLTEuMDAwMDAwKSI+CiAgICAgICAgICAgIDxnIGlkPSJiYWNrZ3JvdW5kIj4KICAgICAgICAgICAgICAgIDxyZWN0IGlkPSJjYW52YXNfYmFja2dyb3VuZCIgeD0iMCIgeT0iMCIgd2lkdGg9IjI2IiBoZWlnaHQ9IjI2Ij48L3JlY3Q+CiAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgPGcgaWQ9IkxheWVyLTEiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDIuMDAwMDAwLCAyLjAwMDAwMCkiIGZpbGwtcnVsZT0ibm9uemVybyI+CiAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJzdmdfMSIgc3Ryb2tlPSIjRkZGRkZGIiAgY3g9IjExIiBjeT0iMTEiIHI9IjExIj48L2NpcmNsZT4KICAgICAgICAgICAgICAgIDxnIGlkPSJzdmdfMTkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDMuMDAwMDAwLCAyLjAwMDAwMCkiIGZpbGw9IiNGRkZGRkYiICBzdHJva2Utd2lkdGg9IjAuNSI+CiAgICAgICAgICAgICAgICAgICAgPGcgaWQ9InN2Z182IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjA4NDA4MSwgMC45NzE0MjUpIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGcgaWQ9InN2Z183IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjAwMDAwMCwgOC40NjAxMjgpIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0zLjQyMjg3NTQ2LDEuNzMwMTYyNTkgQzMuNDIyODc1NDYsMi42NTQyNjg4MyAyLjY2Nzk3MTc3LDMuNDA5MTcyNTIgMS43NDM4NjU1MywzLjQwOTE3MjUyIEMwLjgxOTc1OTI4OCwzLjQwOTE3MjUyIDAuMDY0ODU1NTk4MSwyLjY1NDI2ODgzIDAuMDY0ODU1NTk4MSwxLjczMDE2MjU5IEMwLjA2NDg1NTU5ODEsMC44MDYwNTYzNTQgMC44MTk3NTkyODgsMC4wNTExNTI2NjQ1IDEuNzQzODY1NTMsMC4wNTExNTI2NjQ1IEwzLjQyMjg3NTQ2LDAuMDUxMTUyNjY0NSBMMy40MjI4NzU0NiwxLjczMDE2MjU5IFoiIGlkPSJzdmdfOCI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTQuMjY4ODg4MjEsMS43MzAxNjI1OSBDNC4yNjg4ODgyMSwwLjgwNjA1NjM1NCA1LjAyMzc5MTksMC4wNTExNTI2NjQ1IDUuOTQ3ODk4MTQsMC4wNTExNTI2NjQ1IEM2Ljg3MjAwNDM4LDAuMDUxMTUyNjY0NSA3LjYyNjkwODA3LDAuODA2MDU2MzU0IDcuNjI2OTA4MDcsMS43MzAxNjI1OSBMNy42MjY5MDgwNyw1LjkzNDE5NTIxIEM3LjYyNjkwODA3LDYuODU4MzAxNDUgNi44NzIwMDQzOCw3LjYxMzIwNTE0IDUuOTQ3ODk4MTQsNy42MTMyMDUxNCBDNS4wMjM3OTE5LDcuNjEzMjA1MTQgNC4yNjg4ODgyMSw2Ljg1ODMwMTQ1IDQuMjY4ODg4MjEsNS45MzQxOTUyMSBDNC4yNjg4ODgyMSw1LjkzNDE5NTIxIDQuMjY4ODg4MjEsMS43MzAxNjI1OSA0LjI2ODg4ODIxLDEuNzMwMTYyNTkgTDQuMjY4ODg4MjEsMS43MzAxNjI1OSBaIiBpZD0ic3ZnXzkiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgICAgICAgICA8ZyBpZD0ic3ZnXzEwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik01Ljk0Nzg5ODE0LDMuNDQ4MjE5MjcgQzUuMDIzNzkxOSwzLjQ0ODIxOTI3IDQuMjY4ODg4MjEsMi42OTMzMTU1OCA0LjI2ODg4ODIxLDEuNzY5MjA5MzQgQzQuMjY4ODg4MjEsMC44NDUxMDMwOTYgNS4wMjM3OTE5LDAuMDkwMTk5NDA3IDUuOTQ3ODk4MTQsMC4wOTAxOTk0MDcgQzYuODcyMDA0MzgsMC4wOTAxOTk0MDcgNy42MjY5MDgwNywwLjg0NTEwMzA5NiA3LjYyNjkwODA3LDEuNzY5MjA5MzQgTDcuNjI2OTA4MDcsMy40NDgyMTkyNyBMNS45NDc4OTgxNCwzLjQ0ODIxOTI3IFoiIGlkPSJzdmdfMTEiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik01Ljk0Nzg5ODE0LDQuMjk0MjMyMDIgQzYuODcyMDA0MzgsNC4yOTQyMzIwMiA3LjYyNjkwODA3LDUuMDQ5MTM1NzEgNy42MjY5MDgwNyw1Ljk3MzI0MTk1IEM3LjYyNjkwODA3LDYuODk3MzQ4MTkgNi44NzIwMDQzOCw3LjY1MjI1MTg4IDUuOTQ3ODk4MTQsNy42NTIyNTE4OCBMMS43NDM4NjU1Myw3LjY1MjI1MTg4IEMwLjgxOTc1OTI4OCw3LjY1MjI1MTg4IDAuMDY0ODU1NTk4MSw2Ljg5NzM0ODE5IDAuMDY0ODU1NTk4MSw1Ljk3MzI0MTk1IEMwLjA2NDg1NTU5ODEsNS4wNDkxMzU3MSAwLjgxOTc1OTI4OCw0LjI5NDIzMjAyIDEuNzQzODY1NTMsNC4yOTQyMzIwMiBDMS43NDM4NjU1Myw0LjI5NDIzMjAyIDUuOTQ3ODk4MTQsNC4yOTQyMzIwMiA1Ljk0Nzg5ODE0LDQuMjk0MjMyMDIgWiIgaWQ9InN2Z18xMiI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICAgICAgICAgIDxnIGlkPSJzdmdfMTMiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDguNDYwMTI4LCAwLjAwMDAwMCkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTQuMjI5ODQxNDcsNS45NzMyNDE5NSBDNC4yMjk4NDE0Nyw1LjA0OTEzNTcxIDQuOTg0NzQ1MTYsNC4yOTQyMzIwMiA1LjkwODg1MTQsNC4yOTQyMzIwMiBDNi44MzI5NTc2NCw0LjI5NDIzMjAyIDcuNTg3ODYxMzMsNS4wNDkxMzU3MSA3LjU4Nzg2MTMzLDUuOTczMjQxOTUgQzcuNTg3ODYxMzMsNi44OTczNDgxOSA2LjgzMjk1NzY0LDcuNjUyMjUxODggNS45MDg4NTE0LDcuNjUyMjUxODggTDQuMjI5ODQxNDcsNy42NTIyNTE4OCBMNC4yMjk4NDE0Nyw1Ljk3MzI0MTk1IFoiIGlkPSJzdmdfMTQiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0zLjM4MzgyODcyLDUuOTczMjQxOTUgQzMuMzgzODI4NzIsNi44OTczNDgxOSAyLjYyODkyNTAzLDcuNjUyMjUxODggMS43MDQ4MTg3OSw3LjY1MjI1MTg4IEMwLjc4MDcxMjU0NSw3LjY1MjI1MTg4IDAuMDI1ODA4ODU1Niw2Ljg5NzM0ODE5IDAuMDI1ODA4ODU1Niw1Ljk3MzI0MTk1IEwwLjAyNTgwODg1NTYsMS43NjkyMDkzNCBDMC4wMjU4MDg4NTU2LDAuODQ1MTAzMDk2IDAuNzgwNzEyNTQ1LDAuMDkwMTk5NDA3IDEuNzA0ODE4NzksMC4wOTAxOTk0MDcgQzIuNjI4OTI1MDMsMC4wOTAxOTk0MDcgMy4zODM4Mjg3MiwwLjg0NTEwMzA5NiAzLjM4MzgyODcyLDEuNzY5MjA5MzQgTDMuMzgzODI4NzIsNS45NzMyNDE5NSBaIiBpZD0ic3ZnXzE1Ij48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgICAgICAgICAgPGcgaWQ9InN2Z18xNiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoOC40NjAxMjgsIDguNDYwMTI4KSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMS43MDQ4MTg3OSw0LjI1NTE4NTI4IEMyLjYyODkyNTAzLDQuMjU1MTg1MjggMy4zODM4Mjg3Miw1LjAxMDA4ODk3IDMuMzgzODI4NzIsNS45MzQxOTUyMSBDMy4zODM4Mjg3Miw2Ljg1ODMwMTQ1IDIuNjI4OTI1MDMsNy42MTMyMDUxNCAxLjcwNDgxODc5LDcuNjEzMjA1MTQgQzAuNzgwNzEyNTQ1LDcuNjEzMjA1MTQgMC4wMjU4MDg4NTU2LDYuODU4MzAxNDUgMC4wMjU4MDg4NTU2LDUuOTM0MTk1MjEgTDAuMDI1ODA4ODU1Niw0LjI1NTE4NTI4IEwxLjcwNDgxODc5LDQuMjU1MTg1MjggWiIgaWQ9InN2Z18xNyI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTEuNzA0ODE4NzksMy40MDkxNzI1MiBDMC43ODA3MTI1NDUsMy40MDkxNzI1MiAwLjAyNTgwODg1NTYsMi42NTQyNjg4MyAwLjAyNTgwODg1NTYsMS43MzAxNjI1OSBDMC4wMjU4MDg4NTU2LDAuODA2MDU2MzU0IDAuNzgwNzEyNTQ1LDAuMDUxMTUyNjY0NSAxLjcwNDgxODc5LDAuMDUxMTUyNjY0NSBMNS45MDg4NTE0LDAuMDUxMTUyNjY0NSBDNi44MzI5NTc2NCwwLjA1MTE1MjY2NDUgNy41ODc4NjEzMywwLjgwNjA1NjM1NCA3LjU4Nzg2MTMzLDEuNzMwMTYyNTkgQzcuNTg3ODYxMzMsMi42NTQyNjg4MyA2LjgzMjk1NzY0LDMuNDA5MTcyNTIgNS45MDg4NTE0LDMuNDA5MTcyNTIgTDEuNzA0ODE4NzksMy40MDkxNzI1MiBMMS43MDQ4MTg3OSwzLjQwOTE3MjUyIFoiIGlkPSJzdmdfMTgiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+"},RXBc:function(I,M,g){"use strict";g.r(M);var N=g("Bl7J"),A=g("ZXdF"),D=g("JMMV"),j=g("wRmc"),C=g.n(j),T=g("UbSL"),z=g.n(T),i=g("FYNb"),c=g.n(i),w=g("VE45"),y=g.n(w),O=g("KqNj"),L=g.n(O),e=g("Q4rR"),x=g.n(e),u=g("Wbzz"),s=g("2A+t"),t=g("MXbp");g("qKvR");M.default=function(){return Object(s.c)(N.a,{isHome:!0},Object(s.c)("section",{sx:{backgroundColor:"primary",color:"lightText",display:"flex",minHeight:"32rem",flexDirection:["column","column","row","row"],paddingBottom:["4rem","4rem",0,0]}},Object(s.c)("div",{sx:{backgroundImage:"url("+C.a+")",width:["100%","100%","30%","30%"],minHeight:"12.5rem"}}),Object(s.c)("div",{sx:{height:"15rem",width:"15rem",borderRadius:"50%",backgroundColor:"#434343",position:"absolute",left:["calc(50% - 8rem)","calc(50% - 8rem)","calc(30% - 8rem)","calc(30% - 8rem)"],top:["4.5rem","4.5rem","8rem","8rem"],border:"white solid 0.15rem",display:"flex",alignItems:"center",justifyContent:"center"}},Object(s.c)("img",{src:z.a,alt:"OpenJ9 Logo"})),Object(s.c)("div",{sx:{width:["90%","90%","40%","33%"],display:"flex",flexDirection:"column",justifyContent:"center",alignItems:["center",null,"start","start"],textAlign:["center",null,"left","left"],marginTop:["8rem","8rem","3rem","3rem"],marginLeft:["5%","5%","20%","15%"]}},Object(s.c)(t.b.h1,null,"Unleash the power of Java"),Object(s.c)(t.b.p,null,"Optimized to run Java™ applications cost-effectively in the cloud, Eclipse OpenJ9 is a fast and efficient JVM that delivers power and performance when you need it most."),Object(s.c)(t.b.p,null,"Grab a pre-built binary of OpenJDK with OpenJ9 from the AdoptOpenJDK community."),Object(s.c)(A.a,{primary:!1,link:"https://adoptopenjdk.net/releases.html?variant=openjdk8&jvmVariant=openj9",target:!0},Object(s.c)("img",{sx:{width:"80%"},src:y.a,alt:"adoptopenJDK Logo"})))),Object(s.c)("section",{sx:{display:"grid",gridGap:"3rem",gridTemplateColumns:"repeat(1, 1fr)"}},Object(s.c)("div",{sx:{display:"flex",flexWrap:"wrap",justifyContent:"space-around",padding:"5% 5% 0 5%"}},Object(s.c)(D.a,{width:"18rem",primary:!1},Object(s.c)("i",{className:"fas fa-rocket fa-5x"}),Object(s.c)(t.b.h4,{sx:{textAlign:"center",marginBottom:"0.25rem"}},"Optimized for the Cloud"),Object(s.c)(t.b.p,{sx:{textAlign:"center"}},"for microservices and monoliths too!")),Object(s.c)(D.a,{width:"18rem",primary:!1},Object(s.c)("i",{className:"fas fa-tachometer-alt fa-5x"}),Object(s.c)(t.b.h4,{sx:{textAlign:"center",marginBottom:"0.25rem"}},"42% Faster Startup"),Object(s.c)(t.b.p,{sx:{textAlign:"center"}},"over HotSpot")),Object(s.c)(D.a,{width:"18rem",primary:!1},Object(s.c)("i",{className:"fas fa-chart-line fa-5x"}),Object(s.c)(t.b.h4,{sx:{textAlign:"center",marginBottom:"0.25rem"}},"28% Faster Ramp-up"),Object(s.c)(t.b.p,{sx:{textAlign:"center"}},"when deployed to cloud vs HotSpot")),Object(s.c)(D.a,{width:"18rem",primary:!1},Object(s.c)("i",{className:"fas fa-archive fa-5x"}),Object(s.c)(t.b.h4,{sx:{textAlign:"center",marginBottom:"0.25rem"}},"66% Smaller"),Object(s.c)(t.b.p,{sx:{textAlign:"center"}},"when compared to HotSpot"))),Object(s.c)("div",{sx:{display:"flex",justifyContent:"center",paddingBottom:"5%"}},Object(s.c)(u.Link,{sx:{variant:"buttons.secondary",display:"flex",alignItems:"center",justifyContent:"center",textDecoration:"none",width:"15rem"},to:"/performance"},"Read performance details"))),Object(s.c)("section",{sx:{padding:"calc(5% + 2.5rem)",backgroundColor:"#F5F9FC",minHeight:"50vh"}},Object(s.c)(t.b.h3,null,"Join the conversation"),Object(s.c)("div",{sx:{display:"grid",gridGap:"6rem",gridTemplateColumns:["repeat(1, 1fr)","repeat(1, 1fr)","repeat(1, 1fr)","repeat(2, 1fr)"],backgroundColor:"white",borderRadius:"card",padding:"5%"}},Object(s.c)("div",{sx:{display:"flex",flexDirection:"column",justifyContent:"space-between"}},Object(s.c)(t.b.p,null,"Join us on Slack where you can ask questions and chat directly with our developers. Whether you simply have a question about using OpenJ9, an idea for improvement, or a problem you want to discuss, we'd love to hear from you."),Object(s.c)(A.a,{primary:!1,target:!0,widthChanged:!1,link:"https://openj9.slack.com/join/shared_invite/enQtNDU4MDI4Mjk0MTk2LWVhNTMzMGY1N2JkODQ1OWE0NTNmZjM4ZDcxOTBiMjk3NGFjM2U0ZDNhMmY0MDZlNzU0ZjAyNzQ1ODlmYjg3MjA"},"Join OpenJ9 slack",Object(s.c)("img",{sx:{width:"10%",marginLeft:"0.8rem"},src:L.a,alt:"slack Logo"}))),Object(s.c)("div",{sx:{display:"flex",flexDirection:"column",justifyContent:"space-between"}},Object(s.c)(t.b.p,null,"Like all great open source projects, we have a vibrant and busy GitHub repository where you can create issues to explore ideas, request new features, or report any difficulties you are having."),Object(s.c)(A.a,{primary:!1,target:!0,widthChanged:!1,link:"https://github.com/eclipse/openj9/issues"},"See OpenJ9 issues",Object(s.c)("img",{sx:{width:"10%",marginLeft:"0.8rem"},src:x.a,alt:"GitHub Logo"}))))),Object(s.c)("section",{sx:{backgroundImage:"url("+c.a+")",height:"50vh",backgroundRepeat:"no-repeat",backgroundSize:"cover",display:"flex",alignItems:"center",color:"white",paddingLeft:"15%"}},Object(s.c)(t.b.h2,null,"Participate in the ",Object(s.c)("br",null)," Eclipse OpenJ9 project")),Object(s.c)("section",{sx:{display:"grid",gridGap:"6rem",gridTemplateColumns:["repeat(1, 1fr)","repeat(1, 1fr)","repeat(1, 1fr)","repeat(2, 1fr)"],padding:"calc(5% + 2.5rem)"}},Object(s.c)("div",{sx:{display:"flex",flexDirection:"column",justifyContent:"space-between"}},Object(s.c)(t.b.h3,null,"Become a contributor"),Object(s.c)(t.b.p,null,"We welcome contributions to the project in all shapes and forms. If you are interested in JVM development, we'd love to hear your ideas and help you collaborate with us on the code base. There are other ways you can contribute too, such as working on our website and docs. Be a part of the project and share in our success!"),Object(s.c)(A.a,{primary:!0,target:!0,link:"https://github.com/eclipse/openj9/blob/master/CONTRIBUTING.md"},"Contributor Guide")),Object(s.c)("div",{sx:{display:"flex",flexDirection:"column",justifyContent:"space-between"}},Object(s.c)(t.b.h3,null,"Join community calls"),Object(s.c)(t.b.p,null,"Our regular calls are a great place to find out what is going on in the project. As well as discussing our release plans and development status, we often feature lightning talks by members of the community. For example, technical deep dives or overviews about new features. To see agendas and recordings, look in the Slack #planning channel."),Object(s.c)(A.a,{primary:!0,target:!0,link:"https://calendar.google.com/calendar?cid=YjBnYjB0ZzNxaTZhb3NhZGZnbG0wa3BjY29AZ3JvdXAuY2FsZW5kYXIuZ29vZ2xlLmNvbQ"},"Add to Calendar"))))}},UbSL:function(I,M){I.exports="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjAxcHgiIGhlaWdodD0iODRweCIgdmlld0JveD0iMCAwIDIwMSA4NCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KICAgIDwhLS0gR2VuZXJhdG9yOiBTa2V0Y2ggNjEuMiAoODk2NTMpIC0gaHR0cHM6Ly9za2V0Y2guY29tIC0tPgogICAgPHRpdGxlPkdyb3VwIDEzPC90aXRsZT4KICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPgogICAgPGcgaWQ9IlBhZ2UtMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9Ikdyb3VwLTEzIj4KICAgICAgICAgICAgPGcgaWQ9IkxvZ28iPjwvZz4KICAgICAgICAgICAgPHBhdGggZD0iTTI1LjUwNzI1OTUsNDkuMjgyMzQ2NyBDMjMuNDY0Mjk2OSw1Mi40MjA2NDYgMjAuNjM0MzYzNiw1My45ODg5MjE0IDE3LjAxNDg4NjYsNTMuOTg4OTIxNCBDMTMuNDk3MjI3LDUzLjk4ODkyMTQgMTAuNjg2Nzc1LDUyLjQ3MzA5NjYgOC41ODMxNjMwNiw0OS40NDEwOTc1IEM2LjQ4MDY1Mzg0LDQ2LjQwODM5ODkgNS40MjkwMzE2Nyw0Mi40NzcwNDU0IDUuNDI5MDMxNjcsMzcuNjQ0NTg5MSBDNS40MjkwMzE2NywzMi42OTY3NDEyIDYuNDcwMzYxODQsMjguNjkxOTU2NyA4LjU1MzAyMjE5LDI1LjYzMDkzNDggQzEwLjYzNjA1MDEsMjIuNTcwMjYyNiAxMy40NDU3NjcsMjEuMDM5MDUyMyAxNi45ODQzNzgyLDIxLjAzOTA1MjMgQzIwLjQ4MjkyNDEsMjEuMDM5MDUyMyAyMy4yODc4NjI2LDIyLjQ1NTIyMDggMjUuNDAxMDMxNCwyNS4yODQwNjEgQzI3LjUxNDIwMDIsMjguMTE0NjQ5NSAyOC41NzA5NjgzLDMyLjA3MTUyOTEgMjguNTcwOTY4MywzNy4xNTMzMDEgQzI4LjU3MDk2ODMsNDIuMTAxNDk4NSAyNy41NDk0ODcsNDYuMTQ0Mzk3MiAyNS41MDcyNTk1LDQ5LjI4MjM0NjcgTTE3LjA0NTM5NTEsMTcgQzExLjkwOTMxNzksMTcgNy43ODQ0MzAxLDE4Ljk0NDg3MTMgNC42NzAzNjQsMjIuODMyNTE2IEMxLjU1NzAzMzA1LDI2LjcyMDUxMDMgMCwzMS42NDg0MjY5IDAsMzcuNjE1NTY2MyBDMCw0My4zMzI2OTA4IDEuNDg2NDU5MzEsNDguMTU5NTUyNCA0LjQ1OTAxMDM3LDUyLjA5NTEwMiBDNy40MzExOTM4NSw1Ni4wMzE3MDA3IDExLjU3NTkzMDYsNTggMTYuODkzNTg4LDU4IEMyMi4yOTI0Nzg4LDU4IDI2LjQ5MzA4NjQsNTUuOTI1NDAwNiAyOS40OTY1MTM1LDUxLjc3Nzk1MDIgQzMyLjQ5ODQ3MDMsNDcuNjI5ODAwNSAzNCw0Mi43NjM3NzU4IDM0LDM3LjE4MjY3MzQgQzM0LDMxLjM2OTczODkgMzIuNDUyODkxNCwyNi41NTIzMTg1IDI5LjM1OTQwOTMsMjIuNzMwNzYxNyBDMjYuMjY1NTU5NiwxOC45MTA5NTMyIDIyLjE2MDg4ODIsMTcgMTcuMDQ1Mzk1MSwxNyIgaWQ9IlNoYXBlIiBmaWxsPSIjNURBN0EzIiBmaWxsLXJ1bGU9Im5vbnplcm8iPjwvcGF0aD4KICAgICAgICAgICAgPHBhdGggZD0iTTU4LjA5NjAyODUsNTQuMTU5NTk4OCBDNTYuNDMxOTk0NSw1NS45NDM3MTE5IDU0LjUxOTMwNzMsNTYuODM3MjEwMSA1Mi4zNjIxNTU1LDU2LjgzNzIxMDEgQzUwLjQ5ODIwODksNTYuODM3MjEwMSA0OC43MTA4MDAyLDU2LjA5NjE3MjQgNDYuOTkzODM2OSw1NC42MTM3MzY3IEM0NS4yNzYxMTIsNTMuMTMzNDYzNCA0NC4zMzEwMDE2LDUxLjI1NjM2MDIgNDMuOTUwMjE1OCw0OC45ODYwMzEzIEw0My45NTAyMTU4LDQwLjUwODc5MDkgQzQ0LjcxMTc4NzQsMzguNDQ2Nzg4NyA0NS40ODA1OTQsMzYuNjkyMjMwNiA0Ny4wNDEwNTQ0LDM1LjI0NTExNjcgQzQ4LjYwMTUxNDcsMzMuNzk4MDAyNyA1MC4zNjM3OTE1LDMzLjA3NDI2NTUgNTIuMzMyODM1LDMzLjA3NDI2NTUgQzU0LjgyNTQ1OTEsMzMuMDc0MjY1NSA1Ni44MjU3MjcsMzQuMTAwNDAwOSA1OC4zMzQwMTk3LDM2LjE1MjMxMTEgQzU5Ljg0MTU1MDgsMzguMjA0MjIxNCA2MC41OTU1MDY3LDQxLjEyMzY3OTIgNjAuNTk1NTA2Nyw0NC45MTEwNDQ5IEM2MC41OTU1MDY3LDQ5LjI5Mjc1NDUgNTkuNzYxNTg1OCw1Mi4zNzY1NjcgNTguMDk2MDI4NSw1NC4xNTk1OTg4IE01My41Mjk2NDQ5LDI5IEM0OS4wOTUwMTMxLDI5IDQ1Ljg1NDE0NDksMzEuMjIwOTUwNSA0My41Njk0Mjk5LDM1LjY2MDY4ODkgTDQzLjU2OTQyOTksMjkuNjMyMTg4OCBMMzksMjkuNjMyMTg4OCBMMzksNzAgTDQzLjk1MDIxNTgsNzAgTDQzLjk1MDIxNTgsNTUuMzE5ODEyOSBDNDYuMjM0OTMwOCw1OC45MDc4NjI2IDQ5LjM2MTE4MjQsNjAuNzAyNzg4NSA1My4zNDAzOTQzLDYwLjcwMjc4ODUgQzU3LjA0ODg2NzUsNjAuNzAyNzg4NSA2MC4wODMzNDk4LDU5LjI2MzYwMzkgNjIuNDUwNjk1Myw1Ni4zODY2NzY1IEM2NC44MTY4OTg0LDUzLjUwODMwNzQgNjYsNDkuNjE4OTQwOSA2Niw0NC43MTc4NTYxIEM2Niw0MC4xNzI1MTI2IDY0Ljg3Mjg3MzksMzYuNDE2ODY0NSA2Mi41NzI5Mjc1LDMzLjQ1MDE5MDggQzYwLjI3MTgzODgsMzAuNDgzMTU2NiA1Ny4yNzM1MzEyLDI5IDUzLjUyOTY0NDksMjkiIGlkPSJTaGFwZSIgZmlsbD0iIzVEQTdBMyIgZmlsbC1ydWxlPSJub256ZXJvIj48L3BhdGg+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik03Ny40MDY0Nzk2LDQxLjU2NzE4NTkgQzc3LjYwMzM4NjQsMzguNzQzMDk5MiA3OC41MDk4MDYsMzYuNTY3ODQ2NCA4MC4xMjM5Mzg0LDM0LjkzNjU4MzMgQzgxLjczNjk5MDksMzMuMzA0OTY3MiA4My43MDI0NTk4LDMyLjQ2NTE1NDQgODYuMDE5NjI1NCwzMi40NjUxNTQ0IEM4Ny43NDIxMTA1LDMyLjQ2NTE1NDQgODkuMjE2NTcyMiwzMi45MDQyOTk5IDkwLjQ0NTE3MDMsMzMuODA4MDA3NyBDOTEuNjcyNjg4NSwzNC43MTAzMDM0IDkyLjU0NDU1MDQsMzUuODQ1MjMzMiA5My4wNTg5NTYxLDM3LjEyNzAxNTYgQzkzLjU3NDgwMTcsMzguNDA4NDQ0OSA5My44NTA1NDMzLDM5LjgwMjEzMTcgOTMuODkwNTAwNiw0MS41NjcxODU5IEw3Ny40MDY0Nzk2LDQxLjU2NzE4NTkgWiBNOTUuMzMxODQ0NSwzMy4wNDQ3OTgyIEM5Mi45NDUyMDM3LDMwLjM4NDE1NTUgODkuNzkyMTczOSwyOSA4NS44NzA5NTUzLDI5IEM4MS44OTE0MjA2LDI5IDc4LjU4MzYwMTEsMzAuNDE1NTczNSA3NS45NTA3MzY2LDMzLjMwMjQ5NjEgQzczLjMxNzE1MjIsMzYuMTg4MDA2NyA3MiwzOS45NjAyODA2IDcyLDQ0LjY0NTA4NzUgQzcyLDQ5LjIzMjQ2MzMgNzMuMjY2Mzk1Niw1Mi45MzE2NjM5IDc1LjgwMTcwNjYsNTUuNzU5OTg2OCBDNzguMzM2Mjk3Niw1OC41ODk3MjE3IDgxLjY1MzQ3NjQsNjAgODUuNzUyODgzMSw2MCBDODguODYxNjM1OSw2MCA5MS41NjM2MTU4LDU5LjE3NTM2NjcgOTMuODYwNjIyNiw1Ny41Mjc4NjUxIEM5Ni4xNTgzNDk0LDU1Ljg4MTA2OTUgOTcuNzAyNjQ2NSw1My44MDExMjk2IDk4LjQ5NDk1MzcsNTEuMjg2NjMzNCBMOTQuMTU5MDQyNyw1MC40MTM2Mzc2IEM5Mi41OTM4NjcxLDU0LjI3Njk4ODIgODkuOTAwODg2Niw1Ni4yMDk3MjI2IDg2LjA3OTAyMTQsNTYuMjA5NzIyNiBDODMuOTYwMjAyNyw1Ni4yMDk3MjI2IDgxLjk1MDQ1NjYsNTUuNTQxODI2MSA4MC4wNDk3ODMzLDUzLjk4ODU3ODQgQzc4LjE0ODc1MDEsNTIuNDM0NjI0NyA3Ny4xOTc2OTM1LDQ5LjMzMzQyNDQgNzcuMTk3NjkzNSw0NS4wOTcyOTQzIEw5OSw0NS4wOTcyOTQzIEM5OC45NDA2MDQsMzkuNDQ5MTIwOSA5Ny43MTc3NjU1LDM1LjcwNDczNDkgOTUuMzMxODQ0NSwzMy4wNDQ3OTgyIEw5NS4zMzE4NDQ1LDMzLjA0NDc5ODIgWiIgaWQ9IlNoYXBlIiBmaWxsPSIjNURBN0EzIiBmaWxsLXJ1bGU9Im5vbnplcm8iPjwvcGF0aD4KICAgICAgICAgICAgPHBhdGggZD0iTTEyMy40MDI0LDMwLjc0NDkzNTUgQzEyMS42NTMyLDI5LjU4MjAwNjcgMTE5LjQ3NTYsMjkgMTE2Ljk4ODgsMjkgQzExMi42NzYsMjkgMTA5LjIsMzEuMTI4MTIwMSAxMDYuNCwzNS4zODMyNzU3IEwxMDYuNCwyOS42MzQ0MjM0IEwxMDIsMjkuNjM0NDIzNCBMMTAyLDYwIEwxMDYuOCw2MCBMMTA2LjgsNDMuNDM2NjU3NSBDMTA2LjgsNDAuMzE1ODcyNyAxMDcuNzM4NCwzNy43OTk1MDcyIDEwOS41MzE2LDM1Ljg4OTczIEMxMTEuMzIzNiwzMy45ODEwMzczIDExMy41NjI0LDMzLjAyNjY5MDkgMTE2LjIwMjQsMzMuMDI2NjkwOSBDMTE4LjExNzIsMzMuMDI2NjkwOSAxMTkuNzk1MiwzMy41OTM1MTQ4IDEyMS4xMzcyLDM0LjcyNzE2MjYgQzEyMi40Nzk2LDM1Ljg2MDA4NzQgMTIzLjIsMzcuODE5MDI3OSAxMjMuMiw0MC42MDM2MjI2IEwxMjMuMiw2MCBMMTI4LDYwIEwxMjgsNDIuNTQxOTU3OCBDMTI4LDM4Ljc0NDA5MzEgMTI3LjY2MjQsMzYuMTE5NjQwNyAxMjcuMDEyNCwzNC42Njc1MTU5IEMxMjYuMzYzMiwzMy4yMTUzOTEyIDEyNS4xNTIsMzEuOTA3ODY0NCAxMjMuNDAyNCwzMC43NDQ5MzU1IFoiIGlkPSJTaGFwZSIgZmlsbD0iIzVEQTdBMyIgZmlsbC1ydWxlPSJub256ZXJvIj48L3BhdGg+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNDcuMjk3ODcyLDQ5LjYwNTg3OTYgQzE0Ny4yOTc4NzIsNTEuODU4MzkzNCAxNDcuMTIyODA5LDUzLjQ4NjUyNzUgMTQ2Ljc4MjA4NSw1NC40OTI4Mzc3IEMxNDYuNDQwMjc3LDU1LjQ5ODA1MjYgMTQ1Ljc3MDQwNCw1Ni4zMTY2ODM4IDE0NC43NzUsNTYuOTUwNTU3MSBDMTQzLjc4MDMxOSw1Ny41ODM3IDE0Mi4xMjYyNTUsNTcuODk5MTc2MSAxNDAuMDI2NTc0LDU3Ljg5OTE3NjEgQzEzOC41NTA0NjgsNTcuODk5MTc2MSAxMzcuMTcwMjEzLDU3LjcwMzgyOTIgMTM1LDU3LjMxMjc3MDMgTDEzNSw2MS4yMTg5Nzc2IEMxMzcuMTcwMjEzLDYxLjczODkyODkgMTM4Ljc4MDg3Miw2MiAxNDAuNjA1NjYsNjIgQzE0NC4wMTM2MTcsNjIgMTQ2Ljc5NTQ2OCw2MS4wODc1MjkzIDE0OC44NTkzNCw1OS4yNjQ0MTM0IEMxNTAuOTIyNDg5LDU3LjQ0MDIwMjIgMTUyLDU0LjIyMDA4MjQgMTUyLDQ5LjYwMjk1ODUgTDE1MiwyMyBMMTQ3LjI5Nzg3MiwyMyBMMTQ3LjI5Nzg3Miw0OS42MDU4Nzk2IFoiIGlkPSJTaGFwZSIgZmlsbD0iI0ZGRkZGRiIgZmlsbC1ydWxlPSJub256ZXJvIj48L3BhdGg+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNzYuMjc2Mjg3LDQxLjgwOTg1MDUgQzE3NC41NzcyODcsNDMuNjE0NjkxMSAxNzIuNDczNjEzLDQ0LjUxNzI5MDkgMTY5Ljk2NjMxMyw0NC41MTcyOTA5IEMxNjcuNjg4NzU4LDQ0LjUxNzI5MDkgMTY1LjY5Mjk3NCw0My43Mzg2MDU1IDE2My45NzY1MTYsNDIuMTgxNTkzOCBDMTYyLjI2MDQwNyw0MC42MjM1MDQ2IDE2MS40MDIxNzgsMzguNTA3MjYxNyAxNjEuNDAyMTc4LDM1LjgzMTA2OTMgQzE2MS40MDIxNzgsMzMuMzQwMjA5OCAxNjIuMTc2MjYsMzEuMjI2NDgxMSAxNjMuNzIzNzI2LDI5LjQ5NTYzMDEgQzE2NS4yNjk3OTUsMjcuNzYzNzAxNSAxNjcuMzc3NjU5LDI2Ljg5ODA5NjQgMTcwLjA0NTkyMSwyNi44OTgwOTY0IEMxNzIuNjc4MjE5LDI2Ljg5ODA5NjQgMTc0Ljc5OTcsMjcuNzQwMzU1MyAxNzYuNDA4OTY3LDI5LjQyNjY2OSBDMTc4LjAxODkzMiwzMS4xMTI2MjM1IDE3OC44MjM3NCwzMy4xMjkwMTY1IDE3OC44MjM3NCwzNS40NzM2OTI5IEMxNzguODIzNzQsMzcuODkyNzE4IDE3Ny45NzM4OTEsNDAuMDA1MDEgMTc2LjI3NjI4Nyw0MS44MDk4NTA1IE0xODAuMzQ0MzIxLDI3Ljk1NzY1NDUgQzE3Ny45MDgyNDksMjQuNjUzOTg4MiAxNzQuNDA0MTA1LDIzIDE2OS44MzIyMzYsMjMgQzE2Ni4wOTc2NDgsMjMgMTYzLjAyNDcxMywyNC4yNjQyODYzIDE2MC42MTUxNzcsMjYuNzkxNzgxNCBDMTU4LjIwNDI0NCwyOS4zMTk5OTQ4IDE1NywzMi4zNjAzODc5IDE1NywzNS45MTQwMzgxIEMxNTcsMzkuNDEyNzM1IDE1OC4xNDYyODQsNDIuMzQ3ODkwNiAxNjAuNDQwOTQ3LDQ0LjcxOTg2NDEgQzE2Mi43MzU5NTksNDcuMDkxNDc4NCAxNjUuNTcyNTE1LDQ4LjI3NzgyNDMgMTY4Ljk1MTMxMiw0OC4yNzc4MjQzIEMxNzMuNzM2MTY2LDQ4LjI3NzgyNDMgMTc3LjMyMDYxNyw0Ni4wMjY4OTE5IDE3OS43MDQzMTUsNDEuNTI1NzQ1MyBDMTc5LjY1MDU0NSw0Ni42NjcyOTYgMTc4Ljc0NzYyNCw1MC43Mzg4NzI2IDE3Ni45OTY1OTksNTMuNzM5Mzk3NSBDMTc1LjI0NDE3Nyw1Ni43NDA2NDA4IDE3Mi42MzQyMjUsNTguMjM5ODI1OCAxNjkuMTY0OTk2LDU4LjIzOTgyNTggQzE2NS41OTEwMiw1OC4yMzk4MjU4IDE2My4wNDcwNTksNTYuNTExNDg4OSAxNjEuNTM0ODU4LDUzLjA1MzAxOTMgTDE1Ny44Nzk4NzcsNTQuNDI1Nzc1NyBDMTU5LjgwMDI0Myw1OS40NzUzNzgzIDE2My41NDQyNTksNjIgMTY5LjExMjYyMyw2MiBDMTczLjg3ODI3Myw2MiAxNzcuNTUyMTA5LDYwLjExOTAxNDkgMTgwLjEzMDk4Niw1Ni4zNTY2ODU3IEMxODIuNzA5ODYzLDUyLjU5Mzk5NzIgMTg0LDQ3LjY3Mjk3ODMgMTg0LDQxLjU5MzYyODggQzE4NCwzNS44MDgwODIzIDE4Mi43ODE0NCwzMS4yNjI3NTc1IDE4MC4zNDQzMjEsMjcuOTU3NjU0NSIgaWQ9IlNoYXBlIiBmaWxsPSIjRkZGRkZGIiBmaWxsLXJ1bGU9Im5vbnplcm8iPjwvcGF0aD4KICAgICAgICAgICAgPHBhdGggZD0iTTEyNC4zMzAyOTMsNjIuNzMyMDAzNiBDMTI2LjExMDM2Niw2NS45NDEzOTgxIDEyOC4zMzYxNzgsNjguOTYxNzY3NSAxMzEuMDA3NzMsNzEuNjk4NDQyNSBDMTQ3LjAxOTQxMiw4OC4xMDA1MTkyIDE3Mi45Nzk0NzgsODguMTAwNTE5MiAxODguOTkxMTYsNzEuNjk4NDQyNSBDMjA1LjAwMjk0Nyw1NS4yOTY0MzcxIDIwNS4wMDI5NDcsMjguNzAzNTY4MyAxODguOTkxMTYsMTIuMzAxNTYyOCBDMTcyLjk3OTQ3OCwtNC4xMDA1MjA5NSAxNDcuMDE5NDEyLC00LjEwMDUyMDk1IDEzMS4wMDc3MywxMi4zMDE1NjI4IEMxMjYuMjY5OTMzLDE3LjE1NDgyODggMTIyLjkzNDAxOCwyMi45MDAzNDY4IDEyMSwyOS4wMTAwOTQ3IEwxMjMuMTI2NCwyOS45Nzk5MDQ0IEMxMjQuOTM5NTY1LDI0LjEyNjU4MDcgMTI4LjExMTk2OSwxOC42MTkzOTIyIDEzMi42NDM2MDQsMTMuOTc3MzE3MyBDMTQ3Ljc1MTgyNywtMS40OTkyNzA5MiAxNzIuMjQ3MDgsLTEuNDk5MjcwOTIgMTg3LjM1NTI4NiwxMy45NzczMTczIEMyMDIuNDYzNTk3LDI5LjQ1MzgyIDIwMi40NjM1OTcsNTQuNTQ2MTc4MyAxODcuMzU1Mjg2LDcwLjAyMjY5MTYgQzE3Mi4yNDcwOCw4NS40OTkyNTQ5IDE0Ny43NTE4MjcsODUuNDk5MjU0OSAxMzIuNjQzNjA0LDcwLjAyMjY5MTYgQzEzMC4xNzg1NjIsNjcuNDk3NTYwMyAxMjguMTE1NzI1LDY0LjcxNjQ2NzggMTI2LjQ1NTA1OCw2MS43NjI5Mjc2IEwxMjQuMzMwMjkzLDYyLjczMjAwMzYgWiIgaWQ9IlNoYXBlIiBmaWxsPSIjNURBN0EzIiBmaWxsLXJ1bGU9Im5vbnplcm8iPjwvcGF0aD4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg=="},wRmc:function(I,M){I.exports="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSI2MjVweCIgdmlld0JveD0iMCAwIDI1IDYyNSIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KICAgIDwhLS0gR2VuZXJhdG9yOiBTa2V0Y2ggNjEuMiAoODk2NTMpIC0gaHR0cHM6Ly9za2V0Y2guY29tIC0tPgogICAgPHRpdGxlPkNpcmNsZSBPdmVybGF5PC90aXRsZT4KICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPgogICAgPGcgaWQ9IlBhZ2UtMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9Ik9wZW5KOS1Ib21lLUJsYW5rIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMTI4Ni4wMDAwMDAsIC0yNTExLjAwMDAwMCkiIGZpbGwtcnVsZT0ibm9uemVybyI+CiAgICAgICAgICAgIDxyZWN0IGlkPSJHcmF5LUJHIiBmaWxsPSIjNURBN0EzIiB4PSIwIiB5PSIxNDMxIiB3aWR0aD0iMTQ0MCIgaGVpZ2h0PSIxMjQyIj48L3JlY3Q+CiAgICAgICAgICAgIDxnIGlkPSJQYXJ0aWNpcGF0ZSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTg3LjAwMDAwMCwgMjUxMi4wMDAwMDApIj4KICAgICAgICAgICAgICAgIDxyZWN0IGlkPSJCbHVlLUJHIiBmaWxsPSIjMzQzNDM0IiB4PSI4NyIgeT0iMTU2IiB3aWR0aD0iMTQ0MCIgaGVpZ2h0PSIzNjUiPjwvcmVjdD4KICAgICAgICAgICAgICAgIDxnIGlkPSJHcm91cC0xMCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoODcuMDAwMDAwLCAwLjAwMDAwMCkiIGZpbGw9IiM1REE3QTMiPgogICAgICAgICAgICAgICAgICAgIDxyZWN0IGlkPSJSZWN0YW5nbGUtMiIgeD0iMCIgeT0iMTU1IiB3aWR0aD0iMTQ0MCIgaGVpZ2h0PSI1NjUiPjwvcmVjdD4KICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgIDxnIGlkPSJDaXJjbGUtT3ZlcmxheXMiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDc4LjAwMDAwMCwgMC4wMDAwMDApIiBvcGFjaXR5PSIwLjc1MDMzNDgyMSIgc3Ryb2tlPSIjRkZGRkZGIj4KICAgICAgICAgICAgICAgICAgICA8ZyBpZD0iQ2lyY2xlLU92ZXJsYXkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDc0My41MDAwMDAsIDMxMS41MDAwMDApIHJvdGF0ZSg5MC4wMDAwMDApIHRyYW5zbGF0ZSgtNzQzLjUwMDAwMCwgLTMxMS41MDAwMDApIHRyYW5zbGF0ZSg0MzIuMDAwMDAwLCAtNDMyLjAwMDAwMCkiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZyBpZD0iR3JvdXAtMTIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgaWQ9IkNpcmNsZS1PdmVybGF5Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBpZD0iU3RhY2tlZC1Hcm91cC04IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjAwMDAwMCwgMTY4LjAwMDAwMCkiIG9wYWNpdHk9IjAuNSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9Ik92YWwtMTYiIGN4PSI2MTEuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsLTE2IiBjeD0iNTg3LjUiIGN5PSIxMS41IiByPSIxMS41Ij48L2NpcmNsZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBpZD0iT3ZhbC0xNiIgY3g9IjU2My41IiBjeT0iMTEuNSIgcj0iMTEuNSI+PC9jaXJjbGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9Ik92YWwtMTYiIGN4PSI1MTUuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsLTE2IiBjeD0iNTM5LjUiIGN5PSIxMS41IiByPSIxMS41Ij48L2NpcmNsZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBpZD0iT3ZhbC0xNiIgY3g9IjQ2Ny41IiBjeT0iMTEuNSIgcj0iMTEuNSI+PC9jaXJjbGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9Ik92YWwtMTYiIGN4PSI0OTEuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsLTE2IiBjeD0iNDE5LjUiIGN5PSIxMS41IiByPSIxMS41Ij48L2NpcmNsZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBpZD0iT3ZhbC0xNiIgY3g9IjQ0My41IiBjeT0iMTEuNSIgcj0iMTEuNSI+PC9jaXJjbGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9Ik92YWwtMTYiIGN4PSIzNzEuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsLTE2IiBjeD0iMzk1LjUiIGN5PSIxMS41IiByPSIxMS41Ij48L2NpcmNsZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBpZD0iT3ZhbC0xNiIgY3g9IjMyMy41IiBjeT0iMTEuNSIgcj0iMTEuNSI+PC9jaXJjbGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9Ik92YWwtMTYiIGN4PSIzNDcuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsLTE2IiBjeD0iMjc1LjUiIGN5PSIxMS41IiByPSIxMS41Ij48L2NpcmNsZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBpZD0iT3ZhbC0xNiIgY3g9IjI5OS41IiBjeT0iMTEuNSIgcj0iMTEuNSI+PC9jaXJjbGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9Ik92YWwtMTYiIGN4PSIyMjcuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsLTE2IiBjeD0iMjUxLjUiIGN5PSIxMS41IiByPSIxMS41Ij48L2NpcmNsZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBpZD0iT3ZhbC0xNiIgY3g9IjE3OS41IiBjeT0iMTEuNSIgcj0iMTEuNSI+PC9jaXJjbGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9Ik92YWwtMTYiIGN4PSIyMDMuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsLTE2IiBjeD0iMTMxLjUiIGN5PSIxMS41IiByPSIxMS41Ij48L2NpcmNsZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBpZD0iT3ZhbC0xNiIgY3g9IjE1NS41IiBjeT0iMTEuNSIgcj0iMTEuNSI+PC9jaXJjbGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9Ik92YWwtMTYiIGN4PSI4My41IiBjeT0iMTEuNSIgcj0iMTEuNSI+PC9jaXJjbGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9Ik92YWwtMTYiIGN4PSIxMDcuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsLTE2IiBjeD0iMzUuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsLTE2IiBjeD0iNTkuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsLTE2IiBjeD0iMTEuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICA8cmVjdCBpZD0iUmVjdGFuZ2xlLTIyIiBmaWxsPSIjNURBN0EzIiB4PSI3MzQiIHk9IjUyMCIgd2lkdGg9Ijc5MyIgaGVpZ2h0PSIyIj48L3JlY3Q+CiAgICAgICAgICAgIDwvZz4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg=="}}]);
+//# sourceMappingURL=component---src-pages-index-js-4f88f89ee8348cf9654f.js.map
\ No newline at end of file
diff --git a/component---src-pages-index-js-4f88f89ee8348cf9654f.js.map b/component---src-pages-index-js-4f88f89ee8348cf9654f.js.map
new file mode 100644
index 0000000..c74331f
--- /dev/null
+++ b/component---src-pages-index-js-4f88f89ee8348cf9654f.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["webpack:///./src/images/circle-pattern-big.svg","webpack:///./src/images/white-slack-logo.svg","webpack:///./src/pages/index.js","webpack:///./src/images/openj9-logo.svg","webpack:///./src/images/openj9-circle.svg"],"names":["module","exports","isHome","sx","backgroundColor","color","display","minHeight","flexDirection","paddingBottom","backgroundImage","openj9Circle","width","height","borderRadius","position","left","top","border","alignItems","justifyContent","src","openj9Logo","alt","textAlign","marginTop","marginLeft","h1","p","primary","link","target","adoptopenJDK","gridGap","gridTemplateColumns","flexWrap","padding","className","h4","marginBottom","variant","textDecoration","to","h3","widthChanged","whiteSlackIcon","githubIcon","circlePatternBig","backgroundRepeat","backgroundSize","paddingLeft","h2"],"mappings":"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","file":"component---src-pages-index-js-4f88f89ee8348cf9654f.js","sourcesContent":["module.exports = __webpack_public_path__ + \"static/circle-pattern-big-96604574cf60a59e399e87bb5043431c.svg\";","module.exports = \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjRweCIgaGVpZ2h0PSIyNHB4IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5zbGFjay1pY29uPC90aXRsZT4KICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPgogICAgPGcgaWQ9IlBhZ2UtMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9InNsYWNrLWljb24iIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0xLjAwMDAwMCwgLTEuMDAwMDAwKSI+CiAgICAgICAgICAgIDxnIGlkPSJiYWNrZ3JvdW5kIj4KICAgICAgICAgICAgICAgIDxyZWN0IGlkPSJjYW52YXNfYmFja2dyb3VuZCIgeD0iMCIgeT0iMCIgd2lkdGg9IjI2IiBoZWlnaHQ9IjI2Ij48L3JlY3Q+CiAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgPGcgaWQ9IkxheWVyLTEiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDIuMDAwMDAwLCAyLjAwMDAwMCkiIGZpbGwtcnVsZT0ibm9uemVybyI+CiAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJzdmdfMSIgc3Ryb2tlPSIjRkZGRkZGIiAgY3g9IjExIiBjeT0iMTEiIHI9IjExIj48L2NpcmNsZT4KICAgICAgICAgICAgICAgIDxnIGlkPSJzdmdfMTkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDMuMDAwMDAwLCAyLjAwMDAwMCkiIGZpbGw9IiNGRkZGRkYiICBzdHJva2Utd2lkdGg9IjAuNSI+CiAgICAgICAgICAgICAgICAgICAgPGcgaWQ9InN2Z182IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjA4NDA4MSwgMC45NzE0MjUpIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGcgaWQ9InN2Z183IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjAwMDAwMCwgOC40NjAxMjgpIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0zLjQyMjg3NTQ2LDEuNzMwMTYyNTkgQzMuNDIyODc1NDYsMi42NTQyNjg4MyAyLjY2Nzk3MTc3LDMuNDA5MTcyNTIgMS43NDM4NjU1MywzLjQwOTE3MjUyIEMwLjgxOTc1OTI4OCwzLjQwOTE3MjUyIDAuMDY0ODU1NTk4MSwyLjY1NDI2ODgzIDAuMDY0ODU1NTk4MSwxLjczMDE2MjU5IEMwLjA2NDg1NTU5ODEsMC44MDYwNTYzNTQgMC44MTk3NTkyODgsMC4wNTExNTI2NjQ1IDEuNzQzODY1NTMsMC4wNTExNTI2NjQ1IEwzLjQyMjg3NTQ2LDAuMDUxMTUyNjY0NSBMMy40MjI4NzU0NiwxLjczMDE2MjU5IFoiIGlkPSJzdmdfOCI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTQuMjY4ODg4MjEsMS43MzAxNjI1OSBDNC4yNjg4ODgyMSwwLjgwNjA1NjM1NCA1LjAyMzc5MTksMC4wNTExNTI2NjQ1IDUuOTQ3ODk4MTQsMC4wNTExNTI2NjQ1IEM2Ljg3MjAwNDM4LDAuMDUxMTUyNjY0NSA3LjYyNjkwODA3LDAuODA2MDU2MzU0IDcuNjI2OTA4MDcsMS43MzAxNjI1OSBMNy42MjY5MDgwNyw1LjkzNDE5NTIxIEM3LjYyNjkwODA3LDYuODU4MzAxNDUgNi44NzIwMDQzOCw3LjYxMzIwNTE0IDUuOTQ3ODk4MTQsNy42MTMyMDUxNCBDNS4wMjM3OTE5LDcuNjEzMjA1MTQgNC4yNjg4ODgyMSw2Ljg1ODMwMTQ1IDQuMjY4ODg4MjEsNS45MzQxOTUyMSBDNC4yNjg4ODgyMSw1LjkzNDE5NTIxIDQuMjY4ODg4MjEsMS43MzAxNjI1OSA0LjI2ODg4ODIxLDEuNzMwMTYyNTkgTDQuMjY4ODg4MjEsMS43MzAxNjI1OSBaIiBpZD0ic3ZnXzkiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgICAgICAgICA8ZyBpZD0ic3ZnXzEwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik01Ljk0Nzg5ODE0LDMuNDQ4MjE5MjcgQzUuMDIzNzkxOSwzLjQ0ODIxOTI3IDQuMjY4ODg4MjEsMi42OTMzMTU1OCA0LjI2ODg4ODIxLDEuNzY5MjA5MzQgQzQuMjY4ODg4MjEsMC44NDUxMDMwOTYgNS4wMjM3OTE5LDAuMDkwMTk5NDA3IDUuOTQ3ODk4MTQsMC4wOTAxOTk0MDcgQzYuODcyMDA0MzgsMC4wOTAxOTk0MDcgNy42MjY5MDgwNywwLjg0NTEwMzA5NiA3LjYyNjkwODA3LDEuNzY5MjA5MzQgTDcuNjI2OTA4MDcsMy40NDgyMTkyNyBMNS45NDc4OTgxNCwzLjQ0ODIxOTI3IFoiIGlkPSJzdmdfMTEiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik01Ljk0Nzg5ODE0LDQuMjk0MjMyMDIgQzYuODcyMDA0MzgsNC4yOTQyMzIwMiA3LjYyNjkwODA3LDUuMDQ5MTM1NzEgNy42MjY5MDgwNyw1Ljk3MzI0MTk1IEM3LjYyNjkwODA3LDYuODk3MzQ4MTkgNi44NzIwMDQzOCw3LjY1MjI1MTg4IDUuOTQ3ODk4MTQsNy42NTIyNTE4OCBMMS43NDM4NjU1Myw3LjY1MjI1MTg4IEMwLjgxOTc1OTI4OCw3LjY1MjI1MTg4IDAuMDY0ODU1NTk4MSw2Ljg5NzM0ODE5IDAuMDY0ODU1NTk4MSw1Ljk3MzI0MTk1IEMwLjA2NDg1NTU5ODEsNS4wNDkxMzU3MSAwLjgxOTc1OTI4OCw0LjI5NDIzMjAyIDEuNzQzODY1NTMsNC4yOTQyMzIwMiBDMS43NDM4NjU1Myw0LjI5NDIzMjAyIDUuOTQ3ODk4MTQsNC4yOTQyMzIwMiA1Ljk0Nzg5ODE0LDQuMjk0MjMyMDIgWiIgaWQ9InN2Z18xMiI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICAgICAgICAgIDxnIGlkPSJzdmdfMTMiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDguNDYwMTI4LCAwLjAwMDAwMCkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTQuMjI5ODQxNDcsNS45NzMyNDE5NSBDNC4yMjk4NDE0Nyw1LjA0OTEzNTcxIDQuOTg0NzQ1MTYsNC4yOTQyMzIwMiA1LjkwODg1MTQsNC4yOTQyMzIwMiBDNi44MzI5NTc2NCw0LjI5NDIzMjAyIDcuNTg3ODYxMzMsNS4wNDkxMzU3MSA3LjU4Nzg2MTMzLDUuOTczMjQxOTUgQzcuNTg3ODYxMzMsNi44OTczNDgxOSA2LjgzMjk1NzY0LDcuNjUyMjUxODggNS45MDg4NTE0LDcuNjUyMjUxODggTDQuMjI5ODQxNDcsNy42NTIyNTE4OCBMNC4yMjk4NDE0Nyw1Ljk3MzI0MTk1IFoiIGlkPSJzdmdfMTQiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0zLjM4MzgyODcyLDUuOTczMjQxOTUgQzMuMzgzODI4NzIsNi44OTczNDgxOSAyLjYyODkyNTAzLDcuNjUyMjUxODggMS43MDQ4MTg3OSw3LjY1MjI1MTg4IEMwLjc4MDcxMjU0NSw3LjY1MjI1MTg4IDAuMDI1ODA4ODU1Niw2Ljg5NzM0ODE5IDAuMDI1ODA4ODU1Niw1Ljk3MzI0MTk1IEwwLjAyNTgwODg1NTYsMS43NjkyMDkzNCBDMC4wMjU4MDg4NTU2LDAuODQ1MTAzMDk2IDAuNzgwNzEyNTQ1LDAuMDkwMTk5NDA3IDEuNzA0ODE4NzksMC4wOTAxOTk0MDcgQzIuNjI4OTI1MDMsMC4wOTAxOTk0MDcgMy4zODM4Mjg3MiwwLjg0NTEwMzA5NiAzLjM4MzgyODcyLDEuNzY5MjA5MzQgTDMuMzgzODI4NzIsNS45NzMyNDE5NSBaIiBpZD0ic3ZnXzE1Ij48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgICAgICAgICAgPGcgaWQ9InN2Z18xNiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoOC40NjAxMjgsIDguNDYwMTI4KSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMS43MDQ4MTg3OSw0LjI1NTE4NTI4IEMyLjYyODkyNTAzLDQuMjU1MTg1MjggMy4zODM4Mjg3Miw1LjAxMDA4ODk3IDMuMzgzODI4NzIsNS45MzQxOTUyMSBDMy4zODM4Mjg3Miw2Ljg1ODMwMTQ1IDIuNjI4OTI1MDMsNy42MTMyMDUxNCAxLjcwNDgxODc5LDcuNjEzMjA1MTQgQzAuNzgwNzEyNTQ1LDcuNjEzMjA1MTQgMC4wMjU4MDg4NTU2LDYuODU4MzAxNDUgMC4wMjU4MDg4NTU2LDUuOTM0MTk1MjEgTDAuMDI1ODA4ODU1Niw0LjI1NTE4NTI4IEwxLjcwNDgxODc5LDQuMjU1MTg1MjggWiIgaWQ9InN2Z18xNyI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTEuNzA0ODE4NzksMy40MDkxNzI1MiBDMC43ODA3MTI1NDUsMy40MDkxNzI1MiAwLjAyNTgwODg1NTYsMi42NTQyNjg4MyAwLjAyNTgwODg1NTYsMS43MzAxNjI1OSBDMC4wMjU4MDg4NTU2LDAuODA2MDU2MzU0IDAuNzgwNzEyNTQ1LDAuMDUxMTUyNjY0NSAxLjcwNDgxODc5LDAuMDUxMTUyNjY0NSBMNS45MDg4NTE0LDAuMDUxMTUyNjY0NSBDNi44MzI5NTc2NCwwLjA1MTE1MjY2NDUgNy41ODc4NjEzMywwLjgwNjA1NjM1NCA3LjU4Nzg2MTMzLDEuNzMwMTYyNTkgQzcuNTg3ODYxMzMsMi42NTQyNjg4MyA2LjgzMjk1NzY0LDMuNDA5MTcyNTIgNS45MDg4NTE0LDMuNDA5MTcyNTIgTDEuNzA0ODE4NzksMy40MDkxNzI1MiBMMS43MDQ4MTg3OSwzLjQwOTE3MjUyIFoiIGlkPSJzdmdfMTgiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+\"","// Copyright (c) 2017, 2020 IBM Corp. and others\n\n// This program and the accompanying materials are made available under\n// the terms of the Eclipse Public License 2.0 which accompanies this\n// distribution and is available at https://www.eclipse.org/legal/epl-2.0/\n// or the Apache License, Version 2.0 which accompanies this distribution and\n// is available at https://www.apache.org/licenses/LICENSE-2.0.\n\n// This Source Code may also be made available under the following\n// Secondary Licenses when the conditions for such availability set\n// forth in the Eclipse Public License, v. 2.0 are satisfied: GNU\n// General Public License, version 2 with the GNU Classpath\n// Exception [1] and GNU General Public License, version 2 with the\n// OpenJDK Assembly Exception [2].\n\n// [1] https://www.gnu.org/software/classpath/license.html\n// [2] http://openjdk.java.net/legal/assembly-exception.html\n\n// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 OR LicenseRef-GPL-2.0 WITH Assembly-exception\n\n// The project website pages cannot be redistributed\n\nimport Layout from \"../components/layout\";\nimport Button from \"../components/button\";\nimport Card from \"../components/card\";\n\nimport openj9Circle from \"../images/openj9-circle.svg\";\nimport openj9Logo from \"../images/openj9-logo.svg\";\nimport circlePatternBig from \"../images/circle-pattern-big.svg\";\nimport adoptopenJDK from \"../images/adopt-open-jdk.png\";\nimport whiteSlackIcon from \"../images/white-slack-logo.svg\"\nimport githubIcon from \"../images/github-logo.svg\";\nimport {Link} from \"gatsby\"\n\n/** @jsx jsx */\nimport { jsx, Styled } from \"theme-ui\";\nexport default () => (\n  <Layout isHome={true}>\n    <section\n      sx={{\n        backgroundColor: \"primary\",\n        color: \"lightText\",\n        display: \"flex\",\n        minHeight: \"32rem\",\n        flexDirection: [\"column\", \"column\", \"row\", \"row\"],\n        paddingBottom: [\"4rem\", \"4rem\", 0, 0]\n      }}\n    >\n      <div\n        sx={{\n          backgroundImage: `url(${openj9Circle})`,\n          width: [\"100%\", \"100%\", \"30%\", \"30%\"],\n          minHeight: \"12.5rem\"\n        }}\n      ></div>\n      <div\n        sx={{\n          height: \"15rem\",\n          width: \"15rem\",\n          borderRadius: \"50%\",\n          backgroundColor: \"#434343\",\n          position: \"absolute\",\n          left: [\n            \"calc(50% - 8rem)\",\n            \"calc(50% - 8rem)\",\n            \"calc(30% - 8rem)\",\n            \"calc(30% - 8rem)\"\n          ],\n          top: [\"4.5rem\", \"4.5rem\", \"8rem\", \"8rem\"],\n          border: \"white solid 0.15rem\",\n          display: \"flex\",\n          alignItems: \"center\",\n          justifyContent: \"center\"\n        }}\n      >\n        <img src={openj9Logo} alt=\"OpenJ9 Logo\"></img>\n      </div>\n      <div\n        sx={{\n          width: [\"90%\", \"90%\", \"40%\", \"33%\"],\n          display: \"flex\",\n          flexDirection: \"column\",\n          justifyContent: \"center\",\n          alignItems: [\"center\", null, \"start\", \"start\"],\n          textAlign: [\"center\", null, \"left\", \"left\"],\n          marginTop: [\"8rem\", \"8rem\", \"3rem\", \"3rem\"],\n          marginLeft: [\"5%\", \"5%\", \"20%\", \"15%\"]\n        }}\n      >\n        <Styled.h1>Unleash the power of Java</Styled.h1>\n        <Styled.p>\n          Optimized to run Java&trade; applications cost-effectively in the cloud, \n          Eclipse OpenJ9 is a fast and efficient JVM that delivers power and performance when you need it most.\n        </Styled.p>\n        <Styled.p>\n          Grab a pre-built binary of OpenJDK with OpenJ9 from the AdoptOpenJDK community.\n        </Styled.p>\n        <Button primary={false} link=\"https://adoptopenjdk.net/releases.html?variant=openjdk8&jvmVariant=openj9\" target={true}>\n          <img sx={{\n            width: \"80%\",\n          }}src={adoptopenJDK} alt=\"adoptopenJDK Logo\"></img>\n        </Button>\n      </div>\n    </section>\n    <section sx={{\n      display: \"grid\",\n      gridGap:'3rem',\n      gridTemplateColumns:'repeat(1, 1fr)'\n    }}>\n      <div\n        sx={{\n          display: \"flex\",\n          flexWrap: \"wrap\",\n          justifyContent: \"space-around\",\n          padding: \"5% 5% 0 5%\",\n        }}\n      >\n        <Card width=\"18rem\" primary={false}>\n        <i className=\"fas fa-rocket fa-5x\"></i>\n          <Styled.h4 sx={{textAlign:\"center\", marginBottom:\"0.25rem\"}}>Optimized for the Cloud</Styled.h4>\n          <Styled.p sx={{textAlign:\"center\"}}>for microservices and monoliths too!</Styled.p>\n        </Card>\n\n        <Card width=\"18rem\" primary={false}>\n        <i className=\"fas fa-tachometer-alt fa-5x\"></i>\n          <Styled.h4 sx={{textAlign:\"center\", marginBottom:\"0.25rem\"}}>42% Faster Startup</Styled.h4>\n          <Styled.p sx={{textAlign:\"center\"}}>over HotSpot</Styled.p>\n        </Card>\n\n        <Card width=\"18rem\" primary={false}>\n        <i className=\"fas fa-chart-line fa-5x\"></i>\n          <Styled.h4 sx={{textAlign:\"center\", marginBottom:\"0.25rem\"}}>28% Faster Ramp-up</Styled.h4>\n          <Styled.p sx={{textAlign:\"center\"}}>when deployed to cloud vs HotSpot</Styled.p>\n        </Card>\n\n        <Card width=\"18rem\"primary={false}>\n        <i className=\"fas fa-archive fa-5x\"></i>\n          <Styled.h4 sx={{textAlign:\"center\", marginBottom:\"0.25rem\"}}>66% Smaller</Styled.h4>\n          <Styled.p sx={{textAlign:\"center\"}}>when compared to HotSpot</Styled.p>\n        </Card>\n      </div>\n\n      <div\n        sx={{\n          display: \"flex\",\n          justifyContent: \"center\",\n          paddingBottom: \"5%\"\n        }}\n      >\n      <Link sx={{\n          variant: \"buttons.secondary\",\n          display: \"flex\",\n          alignItems: \"center\",\n          justifyContent: \"center\",\n          textDecoration: \"none\",\n          width:\"15rem\",\n          }} \n        to=\"/performance\">Read performance details</Link>\n\n      </div>\n    </section>\n    \n    <section\n      sx={{\n        padding: `calc(5% + 2.5rem)`,\n        backgroundColor: \"#F5F9FC\",\n        minHeight: \"50vh\"\n      }}\n    >\n      <Styled.h3>Join the conversation</Styled.h3>\n      <div\n        sx={{\n          display: \"grid\",\n          gridGap:'6rem',\n          gridTemplateColumns:['repeat(1, 1fr)', 'repeat(1, 1fr)', 'repeat(1, 1fr)', 'repeat(2, 1fr)'],\n          backgroundColor:'white',\n          borderRadius:'card',\n          padding:'5%',\n        }}\n      >\n        <div\n          sx={{\n            display:'flex',\n            flexDirection:'column',\n            justifyContent:'space-between'\n          }}\n        >\n          <Styled.p>\n            Join us on Slack where you can ask questions and chat directly with our developers.\n            Whether you simply have a question about using OpenJ9, an idea for improvement,\n            or a problem you want to discuss, we'd love to hear from you.\n          </Styled.p>\n          <Button primary={false} target={true} widthChanged={false} link=\"https://openj9.slack.com/join/shared_invite/enQtNDU4MDI4Mjk0MTk2LWVhNTMzMGY1N2JkODQ1OWE0NTNmZjM4ZDcxOTBiMjk3NGFjM2U0ZDNhMmY0MDZlNzU0ZjAyNzQ1ODlmYjg3MjA\">\n            Join OpenJ9 slack\n            <img sx={{\n            width: \"10%\",\n            marginLeft: \"0.8rem\",\n          }}src={whiteSlackIcon} alt=\"slack Logo\"></img>\n          </Button>\n        </div>\n        <div\n          sx={{\n            display:'flex',\n            flexDirection:'column',\n            justifyContent:'space-between'\n          }}\n        >\n          <Styled.p>\n            Like all great open source projects, we have a vibrant and busy GitHub repository where you can create issues to explore ideas,\n            request new features, or report any difficulties you are having. \n          </Styled.p>\n          \n          <Button primary={false} target={true} widthChanged={false} link=\"https://github.com/eclipse/openj9/issues\">\n            See OpenJ9 issues\n            <img sx={{\n            width: \"10%\",\n            marginLeft: \"0.8rem\"\n          }}src={githubIcon} alt=\"GitHub Logo\"></img>\n          </Button>\n        </div>\n      </div>\n    </section>\n    \n    <section\n      sx={{\n        backgroundImage: `url(${circlePatternBig})`,\n        height: \"50vh\",\n        backgroundRepeat: \"no-repeat\",\n        backgroundSize: \"cover\",\n        display: \"flex\",\n        alignItems: \"center\",\n        color: \"white\",\n        paddingLeft: \"15%\"\n      }}\n    >\n      <Styled.h2>\n        Participate in the <br></br> Eclipse OpenJ9 project\n      </Styled.h2>\n    </section>\n    <section\n      sx={{\n        display: \"grid\",\n        gridGap:'6rem',\n        gridTemplateColumns:['repeat(1, 1fr)', 'repeat(1, 1fr)', 'repeat(1, 1fr)', 'repeat(2, 1fr)'],\n        padding: \"calc(5% + 2.5rem)\"\n      }}\n    >\n      <div\n        sx={{\n          display:'flex',\n          flexDirection:'column',\n          justifyContent:'space-between'\n        }}\n      >\n        <Styled.h3>Become a contributor</Styled.h3>\n        <Styled.p>\n          We welcome contributions to the project in all shapes and forms.\n          If you are interested in JVM development, we'd love to hear your ideas and help you collaborate with us on the code base.\n          There are other ways you can contribute too, such as working on our website and docs. Be a part of the project and share in our success! \n        </Styled.p >\n        <Button primary={true} target={true} link=\"https://github.com/eclipse/openj9/blob/master/CONTRIBUTING.md\">\n          Contributor Guide\n        </Button>\n      </div>\n      <div\n        sx={{\n          display:'flex',\n          flexDirection:'column',\n          justifyContent:'space-between'\n        }}\n      >\n        <Styled.h3>Join community calls</Styled.h3>\n        <Styled.p>\n          Our regular calls are a great place to find out what is going on in the project.\n          As well as discussing our release plans and development status, we often feature lightning talks by members of the community.\n          For example, technical deep dives or overviews about new features. To see agendas and recordings,\n          look in the Slack #planning channel.\n        </Styled.p>\n        <Button primary={true} target={true} link=\"https://calendar.google.com/calendar?cid=YjBnYjB0ZzNxaTZhb3NhZGZnbG0wa3BjY29AZ3JvdXAuY2FsZW5kYXIuZ29vZ2xlLmNvbQ\">\n          Add to Calendar\n        </Button>\n      </div>\n    </section>\n  </Layout>\n);\n","module.exports = \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjAxcHgiIGhlaWdodD0iODRweCIgdmlld0JveD0iMCAwIDIwMSA4NCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KICAgIDwhLS0gR2VuZXJhdG9yOiBTa2V0Y2ggNjEuMiAoODk2NTMpIC0gaHR0cHM6Ly9za2V0Y2guY29tIC0tPgogICAgPHRpdGxlPkdyb3VwIDEzPC90aXRsZT4KICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPgogICAgPGcgaWQ9IlBhZ2UtMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9Ikdyb3VwLTEzIj4KICAgICAgICAgICAgPGcgaWQ9IkxvZ28iPjwvZz4KICAgICAgICAgICAgPHBhdGggZD0iTTI1LjUwNzI1OTUsNDkuMjgyMzQ2NyBDMjMuNDY0Mjk2OSw1Mi40MjA2NDYgMjAuNjM0MzYzNiw1My45ODg5MjE0IDE3LjAxNDg4NjYsNTMuOTg4OTIxNCBDMTMuNDk3MjI3LDUzLjk4ODkyMTQgMTAuNjg2Nzc1LDUyLjQ3MzA5NjYgOC41ODMxNjMwNiw0OS40NDEwOTc1IEM2LjQ4MDY1Mzg0LDQ2LjQwODM5ODkgNS40MjkwMzE2Nyw0Mi40NzcwNDU0IDUuNDI5MDMxNjcsMzcuNjQ0NTg5MSBDNS40MjkwMzE2NywzMi42OTY3NDEyIDYuNDcwMzYxODQsMjguNjkxOTU2NyA4LjU1MzAyMjE5LDI1LjYzMDkzNDggQzEwLjYzNjA1MDEsMjIuNTcwMjYyNiAxMy40NDU3NjcsMjEuMDM5MDUyMyAxNi45ODQzNzgyLDIxLjAzOTA1MjMgQzIwLjQ4MjkyNDEsMjEuMDM5MDUyMyAyMy4yODc4NjI2LDIyLjQ1NTIyMDggMjUuNDAxMDMxNCwyNS4yODQwNjEgQzI3LjUxNDIwMDIsMjguMTE0NjQ5NSAyOC41NzA5NjgzLDMyLjA3MTUyOTEgMjguNTcwOTY4MywzNy4xNTMzMDEgQzI4LjU3MDk2ODMsNDIuMTAxNDk4NSAyNy41NDk0ODcsNDYuMTQ0Mzk3MiAyNS41MDcyNTk1LDQ5LjI4MjM0NjcgTTE3LjA0NTM5NTEsMTcgQzExLjkwOTMxNzksMTcgNy43ODQ0MzAxLDE4Ljk0NDg3MTMgNC42NzAzNjQsMjIuODMyNTE2IEMxLjU1NzAzMzA1LDI2LjcyMDUxMDMgMCwzMS42NDg0MjY5IDAsMzcuNjE1NTY2MyBDMCw0My4zMzI2OTA4IDEuNDg2NDU5MzEsNDguMTU5NTUyNCA0LjQ1OTAxMDM3LDUyLjA5NTEwMiBDNy40MzExOTM4NSw1Ni4wMzE3MDA3IDExLjU3NTkzMDYsNTggMTYuODkzNTg4LDU4IEMyMi4yOTI0Nzg4LDU4IDI2LjQ5MzA4NjQsNTUuOTI1NDAwNiAyOS40OTY1MTM1LDUxLjc3Nzk1MDIgQzMyLjQ5ODQ3MDMsNDcuNjI5ODAwNSAzNCw0Mi43NjM3NzU4IDM0LDM3LjE4MjY3MzQgQzM0LDMxLjM2OTczODkgMzIuNDUyODkxNCwyNi41NTIzMTg1IDI5LjM1OTQwOTMsMjIuNzMwNzYxNyBDMjYuMjY1NTU5NiwxOC45MTA5NTMyIDIyLjE2MDg4ODIsMTcgMTcuMDQ1Mzk1MSwxNyIgaWQ9IlNoYXBlIiBmaWxsPSIjNURBN0EzIiBmaWxsLXJ1bGU9Im5vbnplcm8iPjwvcGF0aD4KICAgICAgICAgICAgPHBhdGggZD0iTTU4LjA5NjAyODUsNTQuMTU5NTk4OCBDNTYuNDMxOTk0NSw1NS45NDM3MTE5IDU0LjUxOTMwNzMsNTYuODM3MjEwMSA1Mi4zNjIxNTU1LDU2LjgzNzIxMDEgQzUwLjQ5ODIwODksNTYuODM3MjEwMSA0OC43MTA4MDAyLDU2LjA5NjE3MjQgNDYuOTkzODM2OSw1NC42MTM3MzY3IEM0NS4yNzYxMTIsNTMuMTMzNDYzNCA0NC4zMzEwMDE2LDUxLjI1NjM2MDIgNDMuOTUwMjE1OCw0OC45ODYwMzEzIEw0My45NTAyMTU4LDQwLjUwODc5MDkgQzQ0LjcxMTc4NzQsMzguNDQ2Nzg4NyA0NS40ODA1OTQsMzYuNjkyMjMwNiA0Ny4wNDEwNTQ0LDM1LjI0NTExNjcgQzQ4LjYwMTUxNDcsMzMuNzk4MDAyNyA1MC4zNjM3OTE1LDMzLjA3NDI2NTUgNTIuMzMyODM1LDMzLjA3NDI2NTUgQzU0LjgyNTQ1OTEsMzMuMDc0MjY1NSA1Ni44MjU3MjcsMzQuMTAwNDAwOSA1OC4zMzQwMTk3LDM2LjE1MjMxMTEgQzU5Ljg0MTU1MDgsMzguMjA0MjIxNCA2MC41OTU1MDY3LDQxLjEyMzY3OTIgNjAuNTk1NTA2Nyw0NC45MTEwNDQ5IEM2MC41OTU1MDY3LDQ5LjI5Mjc1NDUgNTkuNzYxNTg1OCw1Mi4zNzY1NjcgNTguMDk2MDI4NSw1NC4xNTk1OTg4IE01My41Mjk2NDQ5LDI5IEM0OS4wOTUwMTMxLDI5IDQ1Ljg1NDE0NDksMzEuMjIwOTUwNSA0My41Njk0Mjk5LDM1LjY2MDY4ODkgTDQzLjU2OTQyOTksMjkuNjMyMTg4OCBMMzksMjkuNjMyMTg4OCBMMzksNzAgTDQzLjk1MDIxNTgsNzAgTDQzLjk1MDIxNTgsNTUuMzE5ODEyOSBDNDYuMjM0OTMwOCw1OC45MDc4NjI2IDQ5LjM2MTE4MjQsNjAuNzAyNzg4NSA1My4zNDAzOTQzLDYwLjcwMjc4ODUgQzU3LjA0ODg2NzUsNjAuNzAyNzg4NSA2MC4wODMzNDk4LDU5LjI2MzYwMzkgNjIuNDUwNjk1Myw1Ni4zODY2NzY1IEM2NC44MTY4OTg0LDUzLjUwODMwNzQgNjYsNDkuNjE4OTQwOSA2Niw0NC43MTc4NTYxIEM2Niw0MC4xNzI1MTI2IDY0Ljg3Mjg3MzksMzYuNDE2ODY0NSA2Mi41NzI5Mjc1LDMzLjQ1MDE5MDggQzYwLjI3MTgzODgsMzAuNDgzMTU2NiA1Ny4yNzM1MzEyLDI5IDUzLjUyOTY0NDksMjkiIGlkPSJTaGFwZSIgZmlsbD0iIzVEQTdBMyIgZmlsbC1ydWxlPSJub256ZXJvIj48L3BhdGg+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik03Ny40MDY0Nzk2LDQxLjU2NzE4NTkgQzc3LjYwMzM4NjQsMzguNzQzMDk5MiA3OC41MDk4MDYsMzYuNTY3ODQ2NCA4MC4xMjM5Mzg0LDM0LjkzNjU4MzMgQzgxLjczNjk5MDksMzMuMzA0OTY3MiA4My43MDI0NTk4LDMyLjQ2NTE1NDQgODYuMDE5NjI1NCwzMi40NjUxNTQ0IEM4Ny43NDIxMTA1LDMyLjQ2NTE1NDQgODkuMjE2NTcyMiwzMi45MDQyOTk5IDkwLjQ0NTE3MDMsMzMuODA4MDA3NyBDOTEuNjcyNjg4NSwzNC43MTAzMDM0IDkyLjU0NDU1MDQsMzUuODQ1MjMzMiA5My4wNTg5NTYxLDM3LjEyNzAxNTYgQzkzLjU3NDgwMTcsMzguNDA4NDQ0OSA5My44NTA1NDMzLDM5LjgwMjEzMTcgOTMuODkwNTAwNiw0MS41NjcxODU5IEw3Ny40MDY0Nzk2LDQxLjU2NzE4NTkgWiBNOTUuMzMxODQ0NSwzMy4wNDQ3OTgyIEM5Mi45NDUyMDM3LDMwLjM4NDE1NTUgODkuNzkyMTczOSwyOSA4NS44NzA5NTUzLDI5IEM4MS44OTE0MjA2LDI5IDc4LjU4MzYwMTEsMzAuNDE1NTczNSA3NS45NTA3MzY2LDMzLjMwMjQ5NjEgQzczLjMxNzE1MjIsMzYuMTg4MDA2NyA3MiwzOS45NjAyODA2IDcyLDQ0LjY0NTA4NzUgQzcyLDQ5LjIzMjQ2MzMgNzMuMjY2Mzk1Niw1Mi45MzE2NjM5IDc1LjgwMTcwNjYsNTUuNzU5OTg2OCBDNzguMzM2Mjk3Niw1OC41ODk3MjE3IDgxLjY1MzQ3NjQsNjAgODUuNzUyODgzMSw2MCBDODguODYxNjM1OSw2MCA5MS41NjM2MTU4LDU5LjE3NTM2NjcgOTMuODYwNjIyNiw1Ny41Mjc4NjUxIEM5Ni4xNTgzNDk0LDU1Ljg4MTA2OTUgOTcuNzAyNjQ2NSw1My44MDExMjk2IDk4LjQ5NDk1MzcsNTEuMjg2NjMzNCBMOTQuMTU5MDQyNyw1MC40MTM2Mzc2IEM5Mi41OTM4NjcxLDU0LjI3Njk4ODIgODkuOTAwODg2Niw1Ni4yMDk3MjI2IDg2LjA3OTAyMTQsNTYuMjA5NzIyNiBDODMuOTYwMjAyNyw1Ni4yMDk3MjI2IDgxLjk1MDQ1NjYsNTUuNTQxODI2MSA4MC4wNDk3ODMzLDUzLjk4ODU3ODQgQzc4LjE0ODc1MDEsNTIuNDM0NjI0NyA3Ny4xOTc2OTM1LDQ5LjMzMzQyNDQgNzcuMTk3NjkzNSw0NS4wOTcyOTQzIEw5OSw0NS4wOTcyOTQzIEM5OC45NDA2MDQsMzkuNDQ5MTIwOSA5Ny43MTc3NjU1LDM1LjcwNDczNDkgOTUuMzMxODQ0NSwzMy4wNDQ3OTgyIEw5NS4zMzE4NDQ1LDMzLjA0NDc5ODIgWiIgaWQ9IlNoYXBlIiBmaWxsPSIjNURBN0EzIiBmaWxsLXJ1bGU9Im5vbnplcm8iPjwvcGF0aD4KICAgICAgICAgICAgPHBhdGggZD0iTTEyMy40MDI0LDMwLjc0NDkzNTUgQzEyMS42NTMyLDI5LjU4MjAwNjcgMTE5LjQ3NTYsMjkgMTE2Ljk4ODgsMjkgQzExMi42NzYsMjkgMTA5LjIsMzEuMTI4MTIwMSAxMDYuNCwzNS4zODMyNzU3IEwxMDYuNCwyOS42MzQ0MjM0IEwxMDIsMjkuNjM0NDIzNCBMMTAyLDYwIEwxMDYuOCw2MCBMMTA2LjgsNDMuNDM2NjU3NSBDMTA2LjgsNDAuMzE1ODcyNyAxMDcuNzM4NCwzNy43OTk1MDcyIDEwOS41MzE2LDM1Ljg4OTczIEMxMTEuMzIzNiwzMy45ODEwMzczIDExMy41NjI0LDMzLjAyNjY5MDkgMTE2LjIwMjQsMzMuMDI2NjkwOSBDMTE4LjExNzIsMzMuMDI2NjkwOSAxMTkuNzk1MiwzMy41OTM1MTQ4IDEyMS4xMzcyLDM0LjcyNzE2MjYgQzEyMi40Nzk2LDM1Ljg2MDA4NzQgMTIzLjIsMzcuODE5MDI3OSAxMjMuMiw0MC42MDM2MjI2IEwxMjMuMiw2MCBMMTI4LDYwIEwxMjgsNDIuNTQxOTU3OCBDMTI4LDM4Ljc0NDA5MzEgMTI3LjY2MjQsMzYuMTE5NjQwNyAxMjcuMDEyNCwzNC42Njc1MTU5IEMxMjYuMzYzMiwzMy4yMTUzOTEyIDEyNS4xNTIsMzEuOTA3ODY0NCAxMjMuNDAyNCwzMC43NDQ5MzU1IFoiIGlkPSJTaGFwZSIgZmlsbD0iIzVEQTdBMyIgZmlsbC1ydWxlPSJub256ZXJvIj48L3BhdGg+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNDcuMjk3ODcyLDQ5LjYwNTg3OTYgQzE0Ny4yOTc4NzIsNTEuODU4MzkzNCAxNDcuMTIyODA5LDUzLjQ4NjUyNzUgMTQ2Ljc4MjA4NSw1NC40OTI4Mzc3IEMxNDYuNDQwMjc3LDU1LjQ5ODA1MjYgMTQ1Ljc3MDQwNCw1Ni4zMTY2ODM4IDE0NC43NzUsNTYuOTUwNTU3MSBDMTQzLjc4MDMxOSw1Ny41ODM3IDE0Mi4xMjYyNTUsNTcuODk5MTc2MSAxNDAuMDI2NTc0LDU3Ljg5OTE3NjEgQzEzOC41NTA0NjgsNTcuODk5MTc2MSAxMzcuMTcwMjEzLDU3LjcwMzgyOTIgMTM1LDU3LjMxMjc3MDMgTDEzNSw2MS4yMTg5Nzc2IEMxMzcuMTcwMjEzLDYxLjczODkyODkgMTM4Ljc4MDg3Miw2MiAxNDAuNjA1NjYsNjIgQzE0NC4wMTM2MTcsNjIgMTQ2Ljc5NTQ2OCw2MS4wODc1MjkzIDE0OC44NTkzNCw1OS4yNjQ0MTM0IEMxNTAuOTIyNDg5LDU3LjQ0MDIwMjIgMTUyLDU0LjIyMDA4MjQgMTUyLDQ5LjYwMjk1ODUgTDE1MiwyMyBMMTQ3LjI5Nzg3MiwyMyBMMTQ3LjI5Nzg3Miw0OS42MDU4Nzk2IFoiIGlkPSJTaGFwZSIgZmlsbD0iI0ZGRkZGRiIgZmlsbC1ydWxlPSJub256ZXJvIj48L3BhdGg+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNzYuMjc2Mjg3LDQxLjgwOTg1MDUgQzE3NC41NzcyODcsNDMuNjE0NjkxMSAxNzIuNDczNjEzLDQ0LjUxNzI5MDkgMTY5Ljk2NjMxMyw0NC41MTcyOTA5IEMxNjcuNjg4NzU4LDQ0LjUxNzI5MDkgMTY1LjY5Mjk3NCw0My43Mzg2MDU1IDE2My45NzY1MTYsNDIuMTgxNTkzOCBDMTYyLjI2MDQwNyw0MC42MjM1MDQ2IDE2MS40MDIxNzgsMzguNTA3MjYxNyAxNjEuNDAyMTc4LDM1LjgzMTA2OTMgQzE2MS40MDIxNzgsMzMuMzQwMjA5OCAxNjIuMTc2MjYsMzEuMjI2NDgxMSAxNjMuNzIzNzI2LDI5LjQ5NTYzMDEgQzE2NS4yNjk3OTUsMjcuNzYzNzAxNSAxNjcuMzc3NjU5LDI2Ljg5ODA5NjQgMTcwLjA0NTkyMSwyNi44OTgwOTY0IEMxNzIuNjc4MjE5LDI2Ljg5ODA5NjQgMTc0Ljc5OTcsMjcuNzQwMzU1MyAxNzYuNDA4OTY3LDI5LjQyNjY2OSBDMTc4LjAxODkzMiwzMS4xMTI2MjM1IDE3OC44MjM3NCwzMy4xMjkwMTY1IDE3OC44MjM3NCwzNS40NzM2OTI5IEMxNzguODIzNzQsMzcuODkyNzE4IDE3Ny45NzM4OTEsNDAuMDA1MDEgMTc2LjI3NjI4Nyw0MS44MDk4NTA1IE0xODAuMzQ0MzIxLDI3Ljk1NzY1NDUgQzE3Ny45MDgyNDksMjQuNjUzOTg4MiAxNzQuNDA0MTA1LDIzIDE2OS44MzIyMzYsMjMgQzE2Ni4wOTc2NDgsMjMgMTYzLjAyNDcxMywyNC4yNjQyODYzIDE2MC42MTUxNzcsMjYuNzkxNzgxNCBDMTU4LjIwNDI0NCwyOS4zMTk5OTQ4IDE1NywzMi4zNjAzODc5IDE1NywzNS45MTQwMzgxIEMxNTcsMzkuNDEyNzM1IDE1OC4xNDYyODQsNDIuMzQ3ODkwNiAxNjAuNDQwOTQ3LDQ0LjcxOTg2NDEgQzE2Mi43MzU5NTksNDcuMDkxNDc4NCAxNjUuNTcyNTE1LDQ4LjI3NzgyNDMgMTY4Ljk1MTMxMiw0OC4yNzc4MjQzIEMxNzMuNzM2MTY2LDQ4LjI3NzgyNDMgMTc3LjMyMDYxNyw0Ni4wMjY4OTE5IDE3OS43MDQzMTUsNDEuNTI1NzQ1MyBDMTc5LjY1MDU0NSw0Ni42NjcyOTYgMTc4Ljc0NzYyNCw1MC43Mzg4NzI2IDE3Ni45OTY1OTksNTMuNzM5Mzk3NSBDMTc1LjI0NDE3Nyw1Ni43NDA2NDA4IDE3Mi42MzQyMjUsNTguMjM5ODI1OCAxNjkuMTY0OTk2LDU4LjIzOTgyNTggQzE2NS41OTEwMiw1OC4yMzk4MjU4IDE2My4wNDcwNTksNTYuNTExNDg4OSAxNjEuNTM0ODU4LDUzLjA1MzAxOTMgTDE1Ny44Nzk4NzcsNTQuNDI1Nzc1NyBDMTU5LjgwMDI0Myw1OS40NzUzNzgzIDE2My41NDQyNTksNjIgMTY5LjExMjYyMyw2MiBDMTczLjg3ODI3Myw2MiAxNzcuNTUyMTA5LDYwLjExOTAxNDkgMTgwLjEzMDk4Niw1Ni4zNTY2ODU3IEMxODIuNzA5ODYzLDUyLjU5Mzk5NzIgMTg0LDQ3LjY3Mjk3ODMgMTg0LDQxLjU5MzYyODggQzE4NCwzNS44MDgwODIzIDE4Mi43ODE0NCwzMS4yNjI3NTc1IDE4MC4zNDQzMjEsMjcuOTU3NjU0NSIgaWQ9IlNoYXBlIiBmaWxsPSIjRkZGRkZGIiBmaWxsLXJ1bGU9Im5vbnplcm8iPjwvcGF0aD4KICAgICAgICAgICAgPHBhdGggZD0iTTEyNC4zMzAyOTMsNjIuNzMyMDAzNiBDMTI2LjExMDM2Niw2NS45NDEzOTgxIDEyOC4zMzYxNzgsNjguOTYxNzY3NSAxMzEuMDA3NzMsNzEuNjk4NDQyNSBDMTQ3LjAxOTQxMiw4OC4xMDA1MTkyIDE3Mi45Nzk0NzgsODguMTAwNTE5MiAxODguOTkxMTYsNzEuNjk4NDQyNSBDMjA1LjAwMjk0Nyw1NS4yOTY0MzcxIDIwNS4wMDI5NDcsMjguNzAzNTY4MyAxODguOTkxMTYsMTIuMzAxNTYyOCBDMTcyLjk3OTQ3OCwtNC4xMDA1MjA5NSAxNDcuMDE5NDEyLC00LjEwMDUyMDk1IDEzMS4wMDc3MywxMi4zMDE1NjI4IEMxMjYuMjY5OTMzLDE3LjE1NDgyODggMTIyLjkzNDAxOCwyMi45MDAzNDY4IDEyMSwyOS4wMTAwOTQ3IEwxMjMuMTI2NCwyOS45Nzk5MDQ0IEMxMjQuOTM5NTY1LDI0LjEyNjU4MDcgMTI4LjExMTk2OSwxOC42MTkzOTIyIDEzMi42NDM2MDQsMTMuOTc3MzE3MyBDMTQ3Ljc1MTgyNywtMS40OTkyNzA5MiAxNzIuMjQ3MDgsLTEuNDk5MjcwOTIgMTg3LjM1NTI4NiwxMy45NzczMTczIEMyMDIuNDYzNTk3LDI5LjQ1MzgyIDIwMi40NjM1OTcsNTQuNTQ2MTc4MyAxODcuMzU1Mjg2LDcwLjAyMjY5MTYgQzE3Mi4yNDcwOCw4NS40OTkyNTQ5IDE0Ny43NTE4MjcsODUuNDk5MjU0OSAxMzIuNjQzNjA0LDcwLjAyMjY5MTYgQzEzMC4xNzg1NjIsNjcuNDk3NTYwMyAxMjguMTE1NzI1LDY0LjcxNjQ2NzggMTI2LjQ1NTA1OCw2MS43NjI5Mjc2IEwxMjQuMzMwMjkzLDYyLjczMjAwMzYgWiIgaWQ9IlNoYXBlIiBmaWxsPSIjNURBN0EzIiBmaWxsLXJ1bGU9Im5vbnplcm8iPjwvcGF0aD4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==\"","module.exports = \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSI2MjVweCIgdmlld0JveD0iMCAwIDI1IDYyNSIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KICAgIDwhLS0gR2VuZXJhdG9yOiBTa2V0Y2ggNjEuMiAoODk2NTMpIC0gaHR0cHM6Ly9za2V0Y2guY29tIC0tPgogICAgPHRpdGxlPkNpcmNsZSBPdmVybGF5PC90aXRsZT4KICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPgogICAgPGcgaWQ9IlBhZ2UtMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9Ik9wZW5KOS1Ib21lLUJsYW5rIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMTI4Ni4wMDAwMDAsIC0yNTExLjAwMDAwMCkiIGZpbGwtcnVsZT0ibm9uemVybyI+CiAgICAgICAgICAgIDxyZWN0IGlkPSJHcmF5LUJHIiBmaWxsPSIjNURBN0EzIiB4PSIwIiB5PSIxNDMxIiB3aWR0aD0iMTQ0MCIgaGVpZ2h0PSIxMjQyIj48L3JlY3Q+CiAgICAgICAgICAgIDxnIGlkPSJQYXJ0aWNpcGF0ZSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTg3LjAwMDAwMCwgMjUxMi4wMDAwMDApIj4KICAgICAgICAgICAgICAgIDxyZWN0IGlkPSJCbHVlLUJHIiBmaWxsPSIjMzQzNDM0IiB4PSI4NyIgeT0iMTU2IiB3aWR0aD0iMTQ0MCIgaGVpZ2h0PSIzNjUiPjwvcmVjdD4KICAgICAgICAgICAgICAgIDxnIGlkPSJHcm91cC0xMCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoODcuMDAwMDAwLCAwLjAwMDAwMCkiIGZpbGw9IiM1REE3QTMiPgogICAgICAgICAgICAgICAgICAgIDxyZWN0IGlkPSJSZWN0YW5nbGUtMiIgeD0iMCIgeT0iMTU1IiB3aWR0aD0iMTQ0MCIgaGVpZ2h0PSI1NjUiPjwvcmVjdD4KICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgIDxnIGlkPSJDaXJjbGUtT3ZlcmxheXMiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDc4LjAwMDAwMCwgMC4wMDAwMDApIiBvcGFjaXR5PSIwLjc1MDMzNDgyMSIgc3Ryb2tlPSIjRkZGRkZGIj4KICAgICAgICAgICAgICAgICAgICA8ZyBpZD0iQ2lyY2xlLU92ZXJsYXkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDc0My41MDAwMDAsIDMxMS41MDAwMDApIHJvdGF0ZSg5MC4wMDAwMDApIHRyYW5zbGF0ZSgtNzQzLjUwMDAwMCwgLTMxMS41MDAwMDApIHRyYW5zbGF0ZSg0MzIuMDAwMDAwLCAtNDMyLjAwMDAwMCkiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZyBpZD0iR3JvdXAtMTIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgaWQ9IkNpcmNsZS1PdmVybGF5Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBpZD0iU3RhY2tlZC1Hcm91cC04IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjAwMDAwMCwgMTY4LjAwMDAwMCkiIG9wYWNpdHk9IjAuNSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9Ik92YWwtMTYiIGN4PSI2MTEuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsLTE2IiBjeD0iNTg3LjUiIGN5PSIxMS41IiByPSIxMS41Ij48L2NpcmNsZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBpZD0iT3ZhbC0xNiIgY3g9IjU2My41IiBjeT0iMTEuNSIgcj0iMTEuNSI+PC9jaXJjbGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9Ik92YWwtMTYiIGN4PSI1MTUuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsLTE2IiBjeD0iNTM5LjUiIGN5PSIxMS41IiByPSIxMS41Ij48L2NpcmNsZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBpZD0iT3ZhbC0xNiIgY3g9IjQ2Ny41IiBjeT0iMTEuNSIgcj0iMTEuNSI+PC9jaXJjbGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9Ik92YWwtMTYiIGN4PSI0OTEuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsLTE2IiBjeD0iNDE5LjUiIGN5PSIxMS41IiByPSIxMS41Ij48L2NpcmNsZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBpZD0iT3ZhbC0xNiIgY3g9IjQ0My41IiBjeT0iMTEuNSIgcj0iMTEuNSI+PC9jaXJjbGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9Ik92YWwtMTYiIGN4PSIzNzEuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsLTE2IiBjeD0iMzk1LjUiIGN5PSIxMS41IiByPSIxMS41Ij48L2NpcmNsZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBpZD0iT3ZhbC0xNiIgY3g9IjMyMy41IiBjeT0iMTEuNSIgcj0iMTEuNSI+PC9jaXJjbGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9Ik92YWwtMTYiIGN4PSIzNDcuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsLTE2IiBjeD0iMjc1LjUiIGN5PSIxMS41IiByPSIxMS41Ij48L2NpcmNsZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBpZD0iT3ZhbC0xNiIgY3g9IjI5OS41IiBjeT0iMTEuNSIgcj0iMTEuNSI+PC9jaXJjbGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9Ik92YWwtMTYiIGN4PSIyMjcuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsLTE2IiBjeD0iMjUxLjUiIGN5PSIxMS41IiByPSIxMS41Ij48L2NpcmNsZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBpZD0iT3ZhbC0xNiIgY3g9IjE3OS41IiBjeT0iMTEuNSIgcj0iMTEuNSI+PC9jaXJjbGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9Ik92YWwtMTYiIGN4PSIyMDMuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsLTE2IiBjeD0iMTMxLjUiIGN5PSIxMS41IiByPSIxMS41Ij48L2NpcmNsZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBpZD0iT3ZhbC0xNiIgY3g9IjE1NS41IiBjeT0iMTEuNSIgcj0iMTEuNSI+PC9jaXJjbGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9Ik92YWwtMTYiIGN4PSI4My41IiBjeT0iMTEuNSIgcj0iMTEuNSI+PC9jaXJjbGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9Ik92YWwtMTYiIGN4PSIxMDcuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsLTE2IiBjeD0iMzUuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsLTE2IiBjeD0iNTkuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsLTE2IiBjeD0iMTEuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICA8cmVjdCBpZD0iUmVjdGFuZ2xlLTIyIiBmaWxsPSIjNURBN0EzIiB4PSI3MzQiIHk9IjUyMCIgd2lkdGg9Ijc5MyIgaGVpZ2h0PSIyIj48L3JlY3Q+CiAgICAgICAgICAgIDwvZz4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==\""],"sourceRoot":""}
\ No newline at end of file
diff --git a/component---src-pages-index-js-743bf9596a9631508e4e.js b/component---src-pages-index-js-743bf9596a9631508e4e.js
deleted file mode 100644
index e63ec93..0000000
--- a/component---src-pages-index-js-743bf9596a9631508e4e.js
+++ /dev/null
@@ -1,2 +0,0 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[3],{FYNb:function(I,M,g){I.exports=g.p+"static/circle-pattern-big-96604574cf60a59e399e87bb5043431c.svg"},KqNj:function(I,M){I.exports="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjRweCIgaGVpZ2h0PSIyNHB4IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5zbGFjay1pY29uPC90aXRsZT4KICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPgogICAgPGcgaWQ9IlBhZ2UtMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9InNsYWNrLWljb24iIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0xLjAwMDAwMCwgLTEuMDAwMDAwKSI+CiAgICAgICAgICAgIDxnIGlkPSJiYWNrZ3JvdW5kIj4KICAgICAgICAgICAgICAgIDxyZWN0IGlkPSJjYW52YXNfYmFja2dyb3VuZCIgeD0iMCIgeT0iMCIgd2lkdGg9IjI2IiBoZWlnaHQ9IjI2Ij48L3JlY3Q+CiAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgPGcgaWQ9IkxheWVyLTEiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDIuMDAwMDAwLCAyLjAwMDAwMCkiIGZpbGwtcnVsZT0ibm9uemVybyI+CiAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJzdmdfMSIgc3Ryb2tlPSIjRkZGRkZGIiAgY3g9IjExIiBjeT0iMTEiIHI9IjExIj48L2NpcmNsZT4KICAgICAgICAgICAgICAgIDxnIGlkPSJzdmdfMTkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDMuMDAwMDAwLCAyLjAwMDAwMCkiIGZpbGw9IiNGRkZGRkYiICBzdHJva2Utd2lkdGg9IjAuNSI+CiAgICAgICAgICAgICAgICAgICAgPGcgaWQ9InN2Z182IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjA4NDA4MSwgMC45NzE0MjUpIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGcgaWQ9InN2Z183IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjAwMDAwMCwgOC40NjAxMjgpIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0zLjQyMjg3NTQ2LDEuNzMwMTYyNTkgQzMuNDIyODc1NDYsMi42NTQyNjg4MyAyLjY2Nzk3MTc3LDMuNDA5MTcyNTIgMS43NDM4NjU1MywzLjQwOTE3MjUyIEMwLjgxOTc1OTI4OCwzLjQwOTE3MjUyIDAuMDY0ODU1NTk4MSwyLjY1NDI2ODgzIDAuMDY0ODU1NTk4MSwxLjczMDE2MjU5IEMwLjA2NDg1NTU5ODEsMC44MDYwNTYzNTQgMC44MTk3NTkyODgsMC4wNTExNTI2NjQ1IDEuNzQzODY1NTMsMC4wNTExNTI2NjQ1IEwzLjQyMjg3NTQ2LDAuMDUxMTUyNjY0NSBMMy40MjI4NzU0NiwxLjczMDE2MjU5IFoiIGlkPSJzdmdfOCI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTQuMjY4ODg4MjEsMS43MzAxNjI1OSBDNC4yNjg4ODgyMSwwLjgwNjA1NjM1NCA1LjAyMzc5MTksMC4wNTExNTI2NjQ1IDUuOTQ3ODk4MTQsMC4wNTExNTI2NjQ1IEM2Ljg3MjAwNDM4LDAuMDUxMTUyNjY0NSA3LjYyNjkwODA3LDAuODA2MDU2MzU0IDcuNjI2OTA4MDcsMS43MzAxNjI1OSBMNy42MjY5MDgwNyw1LjkzNDE5NTIxIEM3LjYyNjkwODA3LDYuODU4MzAxNDUgNi44NzIwMDQzOCw3LjYxMzIwNTE0IDUuOTQ3ODk4MTQsNy42MTMyMDUxNCBDNS4wMjM3OTE5LDcuNjEzMjA1MTQgNC4yNjg4ODgyMSw2Ljg1ODMwMTQ1IDQuMjY4ODg4MjEsNS45MzQxOTUyMSBDNC4yNjg4ODgyMSw1LjkzNDE5NTIxIDQuMjY4ODg4MjEsMS43MzAxNjI1OSA0LjI2ODg4ODIxLDEuNzMwMTYyNTkgTDQuMjY4ODg4MjEsMS43MzAxNjI1OSBaIiBpZD0ic3ZnXzkiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgICAgICAgICA8ZyBpZD0ic3ZnXzEwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik01Ljk0Nzg5ODE0LDMuNDQ4MjE5MjcgQzUuMDIzNzkxOSwzLjQ0ODIxOTI3IDQuMjY4ODg4MjEsMi42OTMzMTU1OCA0LjI2ODg4ODIxLDEuNzY5MjA5MzQgQzQuMjY4ODg4MjEsMC44NDUxMDMwOTYgNS4wMjM3OTE5LDAuMDkwMTk5NDA3IDUuOTQ3ODk4MTQsMC4wOTAxOTk0MDcgQzYuODcyMDA0MzgsMC4wOTAxOTk0MDcgNy42MjY5MDgwNywwLjg0NTEwMzA5NiA3LjYyNjkwODA3LDEuNzY5MjA5MzQgTDcuNjI2OTA4MDcsMy40NDgyMTkyNyBMNS45NDc4OTgxNCwzLjQ0ODIxOTI3IFoiIGlkPSJzdmdfMTEiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik01Ljk0Nzg5ODE0LDQuMjk0MjMyMDIgQzYuODcyMDA0MzgsNC4yOTQyMzIwMiA3LjYyNjkwODA3LDUuMDQ5MTM1NzEgNy42MjY5MDgwNyw1Ljk3MzI0MTk1IEM3LjYyNjkwODA3LDYuODk3MzQ4MTkgNi44NzIwMDQzOCw3LjY1MjI1MTg4IDUuOTQ3ODk4MTQsNy42NTIyNTE4OCBMMS43NDM4NjU1Myw3LjY1MjI1MTg4IEMwLjgxOTc1OTI4OCw3LjY1MjI1MTg4IDAuMDY0ODU1NTk4MSw2Ljg5NzM0ODE5IDAuMDY0ODU1NTk4MSw1Ljk3MzI0MTk1IEMwLjA2NDg1NTU5ODEsNS4wNDkxMzU3MSAwLjgxOTc1OTI4OCw0LjI5NDIzMjAyIDEuNzQzODY1NTMsNC4yOTQyMzIwMiBDMS43NDM4NjU1Myw0LjI5NDIzMjAyIDUuOTQ3ODk4MTQsNC4yOTQyMzIwMiA1Ljk0Nzg5ODE0LDQuMjk0MjMyMDIgWiIgaWQ9InN2Z18xMiI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICAgICAgICAgIDxnIGlkPSJzdmdfMTMiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDguNDYwMTI4LCAwLjAwMDAwMCkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTQuMjI5ODQxNDcsNS45NzMyNDE5NSBDNC4yMjk4NDE0Nyw1LjA0OTEzNTcxIDQuOTg0NzQ1MTYsNC4yOTQyMzIwMiA1LjkwODg1MTQsNC4yOTQyMzIwMiBDNi44MzI5NTc2NCw0LjI5NDIzMjAyIDcuNTg3ODYxMzMsNS4wNDkxMzU3MSA3LjU4Nzg2MTMzLDUuOTczMjQxOTUgQzcuNTg3ODYxMzMsNi44OTczNDgxOSA2LjgzMjk1NzY0LDcuNjUyMjUxODggNS45MDg4NTE0LDcuNjUyMjUxODggTDQuMjI5ODQxNDcsNy42NTIyNTE4OCBMNC4yMjk4NDE0Nyw1Ljk3MzI0MTk1IFoiIGlkPSJzdmdfMTQiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0zLjM4MzgyODcyLDUuOTczMjQxOTUgQzMuMzgzODI4NzIsNi44OTczNDgxOSAyLjYyODkyNTAzLDcuNjUyMjUxODggMS43MDQ4MTg3OSw3LjY1MjI1MTg4IEMwLjc4MDcxMjU0NSw3LjY1MjI1MTg4IDAuMDI1ODA4ODU1Niw2Ljg5NzM0ODE5IDAuMDI1ODA4ODU1Niw1Ljk3MzI0MTk1IEwwLjAyNTgwODg1NTYsMS43NjkyMDkzNCBDMC4wMjU4MDg4NTU2LDAuODQ1MTAzMDk2IDAuNzgwNzEyNTQ1LDAuMDkwMTk5NDA3IDEuNzA0ODE4NzksMC4wOTAxOTk0MDcgQzIuNjI4OTI1MDMsMC4wOTAxOTk0MDcgMy4zODM4Mjg3MiwwLjg0NTEwMzA5NiAzLjM4MzgyODcyLDEuNzY5MjA5MzQgTDMuMzgzODI4NzIsNS45NzMyNDE5NSBaIiBpZD0ic3ZnXzE1Ij48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgICAgICAgICAgPGcgaWQ9InN2Z18xNiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoOC40NjAxMjgsIDguNDYwMTI4KSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMS43MDQ4MTg3OSw0LjI1NTE4NTI4IEMyLjYyODkyNTAzLDQuMjU1MTg1MjggMy4zODM4Mjg3Miw1LjAxMDA4ODk3IDMuMzgzODI4NzIsNS45MzQxOTUyMSBDMy4zODM4Mjg3Miw2Ljg1ODMwMTQ1IDIuNjI4OTI1MDMsNy42MTMyMDUxNCAxLjcwNDgxODc5LDcuNjEzMjA1MTQgQzAuNzgwNzEyNTQ1LDcuNjEzMjA1MTQgMC4wMjU4MDg4NTU2LDYuODU4MzAxNDUgMC4wMjU4MDg4NTU2LDUuOTM0MTk1MjEgTDAuMDI1ODA4ODU1Niw0LjI1NTE4NTI4IEwxLjcwNDgxODc5LDQuMjU1MTg1MjggWiIgaWQ9InN2Z18xNyI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTEuNzA0ODE4NzksMy40MDkxNzI1MiBDMC43ODA3MTI1NDUsMy40MDkxNzI1MiAwLjAyNTgwODg1NTYsMi42NTQyNjg4MyAwLjAyNTgwODg1NTYsMS43MzAxNjI1OSBDMC4wMjU4MDg4NTU2LDAuODA2MDU2MzU0IDAuNzgwNzEyNTQ1LDAuMDUxMTUyNjY0NSAxLjcwNDgxODc5LDAuMDUxMTUyNjY0NSBMNS45MDg4NTE0LDAuMDUxMTUyNjY0NSBDNi44MzI5NTc2NCwwLjA1MTE1MjY2NDUgNy41ODc4NjEzMywwLjgwNjA1NjM1NCA3LjU4Nzg2MTMzLDEuNzMwMTYyNTkgQzcuNTg3ODYxMzMsMi42NTQyNjg4MyA2LjgzMjk1NzY0LDMuNDA5MTcyNTIgNS45MDg4NTE0LDMuNDA5MTcyNTIgTDEuNzA0ODE4NzksMy40MDkxNzI1MiBMMS43MDQ4MTg3OSwzLjQwOTE3MjUyIFoiIGlkPSJzdmdfMTgiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+"},RXBc:function(I,M,g){"use strict";g.r(M);var N=g("Bl7J"),A=g("ZXdF"),D=g("JMMV"),j=g("wRmc"),C=g.n(j),T=g("UbSL"),z=g.n(T),i=g("FYNb"),c=g.n(i),w=g("VE45"),y=g.n(w),O=g("KqNj"),L=g.n(O),x=g("Q4rR"),e=g.n(x),u=g("Wbzz"),t=g("2A+t"),s=g("MXbp");g("qKvR");M.default=function(){return Object(t.c)(N.a,{isHome:!0},Object(t.c)("div",{sx:{backgroundColor:"primary",color:"lightText",display:"flex",minHeight:"500px",flexDirection:["column","column","row","row"],paddingBottom:["4rem","4rem",0,0]}},Object(t.c)("div",{sx:{backgroundImage:"url("+C.a+")",width:["100%","100%","30%","30%"],minHeight:"200px"}}),Object(t.c)("div",{sx:{height:"250px",width:"250px",borderRadius:"50%",backgroundColor:"#434343",position:"absolute",left:["calc(50% - 125px)","calc(50% - 125px)","calc(30% - 125px)","calc(30% - 125px)"],top:["70px","70px","125px","125px"],border:"white solid 2px",display:"flex",alignItems:"center",justifyContent:"center"}},Object(t.c)("img",{src:z.a,alt:"OpenJ9 Logo"})),Object(t.c)("section",{sx:{width:["90%","90%","40%","33%"],display:"flex",flexDirection:"column",justifyContent:"center",alignItems:["center",null,"start","start"],textAlign:["center",null,"left","left"],marginTop:["8rem","8rem","3rem","3rem"],marginLeft:["5%","5%","20%","15%"]}},Object(t.c)(s.b.h1,null,"Unleash the power of Java"),Object(t.c)(s.b.p,null,"Optimized to run Java™ applications cost-effectively in the cloud, Eclipse OpenJ9 is a fast and efficient JVM that delivers power and performance when you need it most."),Object(t.c)(s.b.p,null,"Grab a pre-built binary of OpenJDK with OpenJ9 from the AdoptOpenJDK community."),Object(t.c)(A.a,{primary:!1,link:"https://adoptopenjdk.net/releases.html?variant=openjdk8&jvmVariant=openj9",target:!0},Object(t.c)("img",{sx:{width:"80%"},src:y.a,alt:"adoptopenJDK Logo"})))),Object(t.c)("div",{sx:{display:"flex",flexWrap:"wrap",justifyContent:"space-around",padding:"5% 5% 1% 5%",marginLeft:"-15px"}},Object(t.c)(D.a,{width:"20rem",primary:!1},Object(t.c)("i",{className:"fas fa-rocket fa-5x"}),Object(t.c)(s.b.h4,{sx:{textAlign:"center",marginBottom:"4px"}},"Optimized for the Cloud"),Object(t.c)(s.b.p,{sx:{textAlign:"center"}},"for microservices and monoliths too!")),Object(t.c)(D.a,{width:"20rem",primary:!1},Object(t.c)("i",{className:"fas fa-tachometer-alt fa-5x"}),Object(t.c)(s.b.h4,{sx:{textAlign:"center",marginBottom:"4px"}},"42% Faster Startup"),Object(t.c)(s.b.p,{sx:{textAlign:"center"}},"over HotSpot")),Object(t.c)(D.a,{width:"20rem",primary:!1},Object(t.c)("i",{className:"fas fa-chart-line fa-5x"}),Object(t.c)(s.b.h4,{sx:{textAlign:"center",marginBottom:"4px"}},"28% Faster Ramp-up"),Object(t.c)(s.b.p,{sx:{textAlign:"center"}},"when deployed to cloud vs HotSpot")),Object(t.c)(D.a,{width:"20rem",primary:!1},Object(t.c)("i",{className:"fas fa-archive fa-5x"}),Object(t.c)(s.b.h4,{sx:{textAlign:"center",marginBottom:"4px"}},"66% Smaller"),Object(t.c)(s.b.p,{sx:{textAlign:"center"}},"when compared to HotSpot"))),Object(t.c)("div",{sx:{display:"flex",justifyContent:"center",paddingBottom:"5%"}},Object(t.c)(u.Link,{sx:{variant:"buttons.secondary",display:"flex",alignItems:"center",justifyContent:"center",textDecoration:"none",width:"15rem"},to:"/performance"},"Read performance details")),Object(t.c)("div",{sx:{padding:"calc(5% + 40px)",backgroundColor:"#F5F9FC",minHeight:"50vh"}},Object(t.c)(s.b.h3,null,"Join the conversation"),Object(t.c)("section",{sx:{display:"flex",flexWrap:"wrap",backgroundColor:"white",borderRadius:"card",padding:"5%",alignItems:"flex-end",justifyContent:"space-between"}},Object(t.c)("div",{sx:{flex:"30%",maxWidth:"600px",minWidth:["250px","400px","400px","500px"],marginBottom:["6rem","6rem","6rem",0],marginTop:["1rem",0,0,0],paddingRight:["1rem",0,0,0]}},Object(t.c)(s.b.p,{sx:{width:["80%","100%","80%","80%"],height:["18rem","7rem","10rem","10rem"]}},"Join us on Slack where you can ask questions and chat directly with our developers. Whether you simply have a question about using OpenJ9, an idea for improvement, or a problem you want to discuss, we'd love to hear from you."),Object(t.c)(A.a,{primary:!1,target:!0,widthChanged:!1,link:"https://openj9.slack.com/join/shared_invite/enQtNDU4MDI4Mjk0MTk2LWVhNTMzMGY1N2JkODQ1OWE0NTNmZjM4ZDcxOTBiMjk3NGFjM2U0ZDNhMmY0MDZlNzU0ZjAyNzQ1ODlmYjg3MjA"},"Join OpenJ9 slack",Object(t.c)("img",{sx:{width:"10%",marginLeft:"0.8rem"},src:L.a,alt:"slack Logo"}))),Object(t.c)("div",{sx:{flex:"30%",maxWidth:"600px",minWidth:["250px","400px","400px","500px"],marginBottom:["1rem","1rem","6rem","0rem"]}},Object(t.c)(s.b.p,{sx:{width:["80%","100%","80%","80%"],height:["15rem","6rem","10rem","10rem"]}},"Like all great open source projects, we have a vibrant and busy GitHub repository where you can create issues to explore ideas, request new features, or report any difficulties you are having."),Object(t.c)(A.a,{primary:!1,target:!0,widthChanged:!1,link:"https://github.com/eclipse/openj9/issues"},"See OpenJ9 issues",Object(t.c)("img",{sx:{width:"10%",marginLeft:"0.8rem"},src:e.a,alt:"GitHub Logo"}))))),Object(t.c)("div",{sx:{backgroundImage:"url("+c.a+")",height:"50vh",backgroundRepeat:"no-repeat",backgroundSize:"cover",display:"flex",alignItems:"center",color:"white",paddingLeft:"15%"}},Object(t.c)(s.b.h2,null,"Participate in the ",Object(t.c)("br",null)," Eclipse OpenJ9 project")),Object(t.c)("div",{sx:{display:"flex",flexWrap:"wrap",justifyContent:"space-between",padding:"calc(5% + 40px)"}},Object(t.c)("div",{sx:{flex:"30%",maxWidth:"600px",minWidth:["250px","350px","400px","500px"],marginBottom:["4rem","4rem","4rem","2rem"]}},Object(t.c)(s.b.h3,null,"Become a contributor"),Object(t.c)(s.b.p,{sx:{width:"90%",height:["24rem","14.5rem","13rem","12rem"]}},"We welcome contributions to the project in all shapes and forms. If you are interested in JVM development, we'd love to hear your ideas and help you collaborate with us on the code base. There are other ways you can contribute too, such as working on our website and docs. Be a part of the project and share in our success!"),Object(t.c)(A.a,{primary:!0,target:!0,link:"https://github.com/eclipse/openj9/blob/master/CONTRIBUTING.md"},"Contributor Guide")),Object(t.c)("div",{sx:{flex:"30%",maxWidth:"600px",minWidth:["250px","350px","400px","500px"]}},Object(t.c)(s.b.h3,null,"Join community calls"),Object(t.c)(s.b.p,{sx:{width:"90%",height:["25rem","14.5rem","13rem","12rem"]}},"Our regular calls are a great place to find out what is going on in the project. As well as discussing our release plans and development status, we often feature lightning talks by members of the community. For example, technical deep dives or overviews about new features. To see agendas and recordings, look in the Slack #planning channel."),Object(t.c)(A.a,{primary:!0,target:!0,link:"https://calendar.google.com/calendar?cid=YjBnYjB0ZzNxaTZhb3NhZGZnbG0wa3BjY29AZ3JvdXAuY2FsZW5kYXIuZ29vZ2xlLmNvbQ"},"Add to Calendar"))))}},UbSL:function(I,M){I.exports="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjAxcHgiIGhlaWdodD0iODRweCIgdmlld0JveD0iMCAwIDIwMSA4NCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KICAgIDwhLS0gR2VuZXJhdG9yOiBTa2V0Y2ggNjEuMiAoODk2NTMpIC0gaHR0cHM6Ly9za2V0Y2guY29tIC0tPgogICAgPHRpdGxlPkdyb3VwIDEzPC90aXRsZT4KICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPgogICAgPGcgaWQ9IlBhZ2UtMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9Ikdyb3VwLTEzIj4KICAgICAgICAgICAgPGcgaWQ9IkxvZ28iPjwvZz4KICAgICAgICAgICAgPHBhdGggZD0iTTI1LjUwNzI1OTUsNDkuMjgyMzQ2NyBDMjMuNDY0Mjk2OSw1Mi40MjA2NDYgMjAuNjM0MzYzNiw1My45ODg5MjE0IDE3LjAxNDg4NjYsNTMuOTg4OTIxNCBDMTMuNDk3MjI3LDUzLjk4ODkyMTQgMTAuNjg2Nzc1LDUyLjQ3MzA5NjYgOC41ODMxNjMwNiw0OS40NDEwOTc1IEM2LjQ4MDY1Mzg0LDQ2LjQwODM5ODkgNS40MjkwMzE2Nyw0Mi40NzcwNDU0IDUuNDI5MDMxNjcsMzcuNjQ0NTg5MSBDNS40MjkwMzE2NywzMi42OTY3NDEyIDYuNDcwMzYxODQsMjguNjkxOTU2NyA4LjU1MzAyMjE5LDI1LjYzMDkzNDggQzEwLjYzNjA1MDEsMjIuNTcwMjYyNiAxMy40NDU3NjcsMjEuMDM5MDUyMyAxNi45ODQzNzgyLDIxLjAzOTA1MjMgQzIwLjQ4MjkyNDEsMjEuMDM5MDUyMyAyMy4yODc4NjI2LDIyLjQ1NTIyMDggMjUuNDAxMDMxNCwyNS4yODQwNjEgQzI3LjUxNDIwMDIsMjguMTE0NjQ5NSAyOC41NzA5NjgzLDMyLjA3MTUyOTEgMjguNTcwOTY4MywzNy4xNTMzMDEgQzI4LjU3MDk2ODMsNDIuMTAxNDk4NSAyNy41NDk0ODcsNDYuMTQ0Mzk3MiAyNS41MDcyNTk1LDQ5LjI4MjM0NjcgTTE3LjA0NTM5NTEsMTcgQzExLjkwOTMxNzksMTcgNy43ODQ0MzAxLDE4Ljk0NDg3MTMgNC42NzAzNjQsMjIuODMyNTE2IEMxLjU1NzAzMzA1LDI2LjcyMDUxMDMgMCwzMS42NDg0MjY5IDAsMzcuNjE1NTY2MyBDMCw0My4zMzI2OTA4IDEuNDg2NDU5MzEsNDguMTU5NTUyNCA0LjQ1OTAxMDM3LDUyLjA5NTEwMiBDNy40MzExOTM4NSw1Ni4wMzE3MDA3IDExLjU3NTkzMDYsNTggMTYuODkzNTg4LDU4IEMyMi4yOTI0Nzg4LDU4IDI2LjQ5MzA4NjQsNTUuOTI1NDAwNiAyOS40OTY1MTM1LDUxLjc3Nzk1MDIgQzMyLjQ5ODQ3MDMsNDcuNjI5ODAwNSAzNCw0Mi43NjM3NzU4IDM0LDM3LjE4MjY3MzQgQzM0LDMxLjM2OTczODkgMzIuNDUyODkxNCwyNi41NTIzMTg1IDI5LjM1OTQwOTMsMjIuNzMwNzYxNyBDMjYuMjY1NTU5NiwxOC45MTA5NTMyIDIyLjE2MDg4ODIsMTcgMTcuMDQ1Mzk1MSwxNyIgaWQ9IlNoYXBlIiBmaWxsPSIjNURBN0EzIiBmaWxsLXJ1bGU9Im5vbnplcm8iPjwvcGF0aD4KICAgICAgICAgICAgPHBhdGggZD0iTTU4LjA5NjAyODUsNTQuMTU5NTk4OCBDNTYuNDMxOTk0NSw1NS45NDM3MTE5IDU0LjUxOTMwNzMsNTYuODM3MjEwMSA1Mi4zNjIxNTU1LDU2LjgzNzIxMDEgQzUwLjQ5ODIwODksNTYuODM3MjEwMSA0OC43MTA4MDAyLDU2LjA5NjE3MjQgNDYuOTkzODM2OSw1NC42MTM3MzY3IEM0NS4yNzYxMTIsNTMuMTMzNDYzNCA0NC4zMzEwMDE2LDUxLjI1NjM2MDIgNDMuOTUwMjE1OCw0OC45ODYwMzEzIEw0My45NTAyMTU4LDQwLjUwODc5MDkgQzQ0LjcxMTc4NzQsMzguNDQ2Nzg4NyA0NS40ODA1OTQsMzYuNjkyMjMwNiA0Ny4wNDEwNTQ0LDM1LjI0NTExNjcgQzQ4LjYwMTUxNDcsMzMuNzk4MDAyNyA1MC4zNjM3OTE1LDMzLjA3NDI2NTUgNTIuMzMyODM1LDMzLjA3NDI2NTUgQzU0LjgyNTQ1OTEsMzMuMDc0MjY1NSA1Ni44MjU3MjcsMzQuMTAwNDAwOSA1OC4zMzQwMTk3LDM2LjE1MjMxMTEgQzU5Ljg0MTU1MDgsMzguMjA0MjIxNCA2MC41OTU1MDY3LDQxLjEyMzY3OTIgNjAuNTk1NTA2Nyw0NC45MTEwNDQ5IEM2MC41OTU1MDY3LDQ5LjI5Mjc1NDUgNTkuNzYxNTg1OCw1Mi4zNzY1NjcgNTguMDk2MDI4NSw1NC4xNTk1OTg4IE01My41Mjk2NDQ5LDI5IEM0OS4wOTUwMTMxLDI5IDQ1Ljg1NDE0NDksMzEuMjIwOTUwNSA0My41Njk0Mjk5LDM1LjY2MDY4ODkgTDQzLjU2OTQyOTksMjkuNjMyMTg4OCBMMzksMjkuNjMyMTg4OCBMMzksNzAgTDQzLjk1MDIxNTgsNzAgTDQzLjk1MDIxNTgsNTUuMzE5ODEyOSBDNDYuMjM0OTMwOCw1OC45MDc4NjI2IDQ5LjM2MTE4MjQsNjAuNzAyNzg4NSA1My4zNDAzOTQzLDYwLjcwMjc4ODUgQzU3LjA0ODg2NzUsNjAuNzAyNzg4NSA2MC4wODMzNDk4LDU5LjI2MzYwMzkgNjIuNDUwNjk1Myw1Ni4zODY2NzY1IEM2NC44MTY4OTg0LDUzLjUwODMwNzQgNjYsNDkuNjE4OTQwOSA2Niw0NC43MTc4NTYxIEM2Niw0MC4xNzI1MTI2IDY0Ljg3Mjg3MzksMzYuNDE2ODY0NSA2Mi41NzI5Mjc1LDMzLjQ1MDE5MDggQzYwLjI3MTgzODgsMzAuNDgzMTU2NiA1Ny4yNzM1MzEyLDI5IDUzLjUyOTY0NDksMjkiIGlkPSJTaGFwZSIgZmlsbD0iIzVEQTdBMyIgZmlsbC1ydWxlPSJub256ZXJvIj48L3BhdGg+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik03Ny40MDY0Nzk2LDQxLjU2NzE4NTkgQzc3LjYwMzM4NjQsMzguNzQzMDk5MiA3OC41MDk4MDYsMzYuNTY3ODQ2NCA4MC4xMjM5Mzg0LDM0LjkzNjU4MzMgQzgxLjczNjk5MDksMzMuMzA0OTY3MiA4My43MDI0NTk4LDMyLjQ2NTE1NDQgODYuMDE5NjI1NCwzMi40NjUxNTQ0IEM4Ny43NDIxMTA1LDMyLjQ2NTE1NDQgODkuMjE2NTcyMiwzMi45MDQyOTk5IDkwLjQ0NTE3MDMsMzMuODA4MDA3NyBDOTEuNjcyNjg4NSwzNC43MTAzMDM0IDkyLjU0NDU1MDQsMzUuODQ1MjMzMiA5My4wNTg5NTYxLDM3LjEyNzAxNTYgQzkzLjU3NDgwMTcsMzguNDA4NDQ0OSA5My44NTA1NDMzLDM5LjgwMjEzMTcgOTMuODkwNTAwNiw0MS41NjcxODU5IEw3Ny40MDY0Nzk2LDQxLjU2NzE4NTkgWiBNOTUuMzMxODQ0NSwzMy4wNDQ3OTgyIEM5Mi45NDUyMDM3LDMwLjM4NDE1NTUgODkuNzkyMTczOSwyOSA4NS44NzA5NTUzLDI5IEM4MS44OTE0MjA2LDI5IDc4LjU4MzYwMTEsMzAuNDE1NTczNSA3NS45NTA3MzY2LDMzLjMwMjQ5NjEgQzczLjMxNzE1MjIsMzYuMTg4MDA2NyA3MiwzOS45NjAyODA2IDcyLDQ0LjY0NTA4NzUgQzcyLDQ5LjIzMjQ2MzMgNzMuMjY2Mzk1Niw1Mi45MzE2NjM5IDc1LjgwMTcwNjYsNTUuNzU5OTg2OCBDNzguMzM2Mjk3Niw1OC41ODk3MjE3IDgxLjY1MzQ3NjQsNjAgODUuNzUyODgzMSw2MCBDODguODYxNjM1OSw2MCA5MS41NjM2MTU4LDU5LjE3NTM2NjcgOTMuODYwNjIyNiw1Ny41Mjc4NjUxIEM5Ni4xNTgzNDk0LDU1Ljg4MTA2OTUgOTcuNzAyNjQ2NSw1My44MDExMjk2IDk4LjQ5NDk1MzcsNTEuMjg2NjMzNCBMOTQuMTU5MDQyNyw1MC40MTM2Mzc2IEM5Mi41OTM4NjcxLDU0LjI3Njk4ODIgODkuOTAwODg2Niw1Ni4yMDk3MjI2IDg2LjA3OTAyMTQsNTYuMjA5NzIyNiBDODMuOTYwMjAyNyw1Ni4yMDk3MjI2IDgxLjk1MDQ1NjYsNTUuNTQxODI2MSA4MC4wNDk3ODMzLDUzLjk4ODU3ODQgQzc4LjE0ODc1MDEsNTIuNDM0NjI0NyA3Ny4xOTc2OTM1LDQ5LjMzMzQyNDQgNzcuMTk3NjkzNSw0NS4wOTcyOTQzIEw5OSw0NS4wOTcyOTQzIEM5OC45NDA2MDQsMzkuNDQ5MTIwOSA5Ny43MTc3NjU1LDM1LjcwNDczNDkgOTUuMzMxODQ0NSwzMy4wNDQ3OTgyIEw5NS4zMzE4NDQ1LDMzLjA0NDc5ODIgWiIgaWQ9IlNoYXBlIiBmaWxsPSIjNURBN0EzIiBmaWxsLXJ1bGU9Im5vbnplcm8iPjwvcGF0aD4KICAgICAgICAgICAgPHBhdGggZD0iTTEyMy40MDI0LDMwLjc0NDkzNTUgQzEyMS42NTMyLDI5LjU4MjAwNjcgMTE5LjQ3NTYsMjkgMTE2Ljk4ODgsMjkgQzExMi42NzYsMjkgMTA5LjIsMzEuMTI4MTIwMSAxMDYuNCwzNS4zODMyNzU3IEwxMDYuNCwyOS42MzQ0MjM0IEwxMDIsMjkuNjM0NDIzNCBMMTAyLDYwIEwxMDYuOCw2MCBMMTA2LjgsNDMuNDM2NjU3NSBDMTA2LjgsNDAuMzE1ODcyNyAxMDcuNzM4NCwzNy43OTk1MDcyIDEwOS41MzE2LDM1Ljg4OTczIEMxMTEuMzIzNiwzMy45ODEwMzczIDExMy41NjI0LDMzLjAyNjY5MDkgMTE2LjIwMjQsMzMuMDI2NjkwOSBDMTE4LjExNzIsMzMuMDI2NjkwOSAxMTkuNzk1MiwzMy41OTM1MTQ4IDEyMS4xMzcyLDM0LjcyNzE2MjYgQzEyMi40Nzk2LDM1Ljg2MDA4NzQgMTIzLjIsMzcuODE5MDI3OSAxMjMuMiw0MC42MDM2MjI2IEwxMjMuMiw2MCBMMTI4LDYwIEwxMjgsNDIuNTQxOTU3OCBDMTI4LDM4Ljc0NDA5MzEgMTI3LjY2MjQsMzYuMTE5NjQwNyAxMjcuMDEyNCwzNC42Njc1MTU5IEMxMjYuMzYzMiwzMy4yMTUzOTEyIDEyNS4xNTIsMzEuOTA3ODY0NCAxMjMuNDAyNCwzMC43NDQ5MzU1IFoiIGlkPSJTaGFwZSIgZmlsbD0iIzVEQTdBMyIgZmlsbC1ydWxlPSJub256ZXJvIj48L3BhdGg+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNDcuMjk3ODcyLDQ5LjYwNTg3OTYgQzE0Ny4yOTc4NzIsNTEuODU4MzkzNCAxNDcuMTIyODA5LDUzLjQ4NjUyNzUgMTQ2Ljc4MjA4NSw1NC40OTI4Mzc3IEMxNDYuNDQwMjc3LDU1LjQ5ODA1MjYgMTQ1Ljc3MDQwNCw1Ni4zMTY2ODM4IDE0NC43NzUsNTYuOTUwNTU3MSBDMTQzLjc4MDMxOSw1Ny41ODM3IDE0Mi4xMjYyNTUsNTcuODk5MTc2MSAxNDAuMDI2NTc0LDU3Ljg5OTE3NjEgQzEzOC41NTA0NjgsNTcuODk5MTc2MSAxMzcuMTcwMjEzLDU3LjcwMzgyOTIgMTM1LDU3LjMxMjc3MDMgTDEzNSw2MS4yMTg5Nzc2IEMxMzcuMTcwMjEzLDYxLjczODkyODkgMTM4Ljc4MDg3Miw2MiAxNDAuNjA1NjYsNjIgQzE0NC4wMTM2MTcsNjIgMTQ2Ljc5NTQ2OCw2MS4wODc1MjkzIDE0OC44NTkzNCw1OS4yNjQ0MTM0IEMxNTAuOTIyNDg5LDU3LjQ0MDIwMjIgMTUyLDU0LjIyMDA4MjQgMTUyLDQ5LjYwMjk1ODUgTDE1MiwyMyBMMTQ3LjI5Nzg3MiwyMyBMMTQ3LjI5Nzg3Miw0OS42MDU4Nzk2IFoiIGlkPSJTaGFwZSIgZmlsbD0iI0ZGRkZGRiIgZmlsbC1ydWxlPSJub256ZXJvIj48L3BhdGg+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNzYuMjc2Mjg3LDQxLjgwOTg1MDUgQzE3NC41NzcyODcsNDMuNjE0NjkxMSAxNzIuNDczNjEzLDQ0LjUxNzI5MDkgMTY5Ljk2NjMxMyw0NC41MTcyOTA5IEMxNjcuNjg4NzU4LDQ0LjUxNzI5MDkgMTY1LjY5Mjk3NCw0My43Mzg2MDU1IDE2My45NzY1MTYsNDIuMTgxNTkzOCBDMTYyLjI2MDQwNyw0MC42MjM1MDQ2IDE2MS40MDIxNzgsMzguNTA3MjYxNyAxNjEuNDAyMTc4LDM1LjgzMTA2OTMgQzE2MS40MDIxNzgsMzMuMzQwMjA5OCAxNjIuMTc2MjYsMzEuMjI2NDgxMSAxNjMuNzIzNzI2LDI5LjQ5NTYzMDEgQzE2NS4yNjk3OTUsMjcuNzYzNzAxNSAxNjcuMzc3NjU5LDI2Ljg5ODA5NjQgMTcwLjA0NTkyMSwyNi44OTgwOTY0IEMxNzIuNjc4MjE5LDI2Ljg5ODA5NjQgMTc0Ljc5OTcsMjcuNzQwMzU1MyAxNzYuNDA4OTY3LDI5LjQyNjY2OSBDMTc4LjAxODkzMiwzMS4xMTI2MjM1IDE3OC44MjM3NCwzMy4xMjkwMTY1IDE3OC44MjM3NCwzNS40NzM2OTI5IEMxNzguODIzNzQsMzcuODkyNzE4IDE3Ny45NzM4OTEsNDAuMDA1MDEgMTc2LjI3NjI4Nyw0MS44MDk4NTA1IE0xODAuMzQ0MzIxLDI3Ljk1NzY1NDUgQzE3Ny45MDgyNDksMjQuNjUzOTg4MiAxNzQuNDA0MTA1LDIzIDE2OS44MzIyMzYsMjMgQzE2Ni4wOTc2NDgsMjMgMTYzLjAyNDcxMywyNC4yNjQyODYzIDE2MC42MTUxNzcsMjYuNzkxNzgxNCBDMTU4LjIwNDI0NCwyOS4zMTk5OTQ4IDE1NywzMi4zNjAzODc5IDE1NywzNS45MTQwMzgxIEMxNTcsMzkuNDEyNzM1IDE1OC4xNDYyODQsNDIuMzQ3ODkwNiAxNjAuNDQwOTQ3LDQ0LjcxOTg2NDEgQzE2Mi43MzU5NTksNDcuMDkxNDc4NCAxNjUuNTcyNTE1LDQ4LjI3NzgyNDMgMTY4Ljk1MTMxMiw0OC4yNzc4MjQzIEMxNzMuNzM2MTY2LDQ4LjI3NzgyNDMgMTc3LjMyMDYxNyw0Ni4wMjY4OTE5IDE3OS43MDQzMTUsNDEuNTI1NzQ1MyBDMTc5LjY1MDU0NSw0Ni42NjcyOTYgMTc4Ljc0NzYyNCw1MC43Mzg4NzI2IDE3Ni45OTY1OTksNTMuNzM5Mzk3NSBDMTc1LjI0NDE3Nyw1Ni43NDA2NDA4IDE3Mi42MzQyMjUsNTguMjM5ODI1OCAxNjkuMTY0OTk2LDU4LjIzOTgyNTggQzE2NS41OTEwMiw1OC4yMzk4MjU4IDE2My4wNDcwNTksNTYuNTExNDg4OSAxNjEuNTM0ODU4LDUzLjA1MzAxOTMgTDE1Ny44Nzk4NzcsNTQuNDI1Nzc1NyBDMTU5LjgwMDI0Myw1OS40NzUzNzgzIDE2My41NDQyNTksNjIgMTY5LjExMjYyMyw2MiBDMTczLjg3ODI3Myw2MiAxNzcuNTUyMTA5LDYwLjExOTAxNDkgMTgwLjEzMDk4Niw1Ni4zNTY2ODU3IEMxODIuNzA5ODYzLDUyLjU5Mzk5NzIgMTg0LDQ3LjY3Mjk3ODMgMTg0LDQxLjU5MzYyODggQzE4NCwzNS44MDgwODIzIDE4Mi43ODE0NCwzMS4yNjI3NTc1IDE4MC4zNDQzMjEsMjcuOTU3NjU0NSIgaWQ9IlNoYXBlIiBmaWxsPSIjRkZGRkZGIiBmaWxsLXJ1bGU9Im5vbnplcm8iPjwvcGF0aD4KICAgICAgICAgICAgPHBhdGggZD0iTTEyNC4zMzAyOTMsNjIuNzMyMDAzNiBDMTI2LjExMDM2Niw2NS45NDEzOTgxIDEyOC4zMzYxNzgsNjguOTYxNzY3NSAxMzEuMDA3NzMsNzEuNjk4NDQyNSBDMTQ3LjAxOTQxMiw4OC4xMDA1MTkyIDE3Mi45Nzk0NzgsODguMTAwNTE5MiAxODguOTkxMTYsNzEuNjk4NDQyNSBDMjA1LjAwMjk0Nyw1NS4yOTY0MzcxIDIwNS4wMDI5NDcsMjguNzAzNTY4MyAxODguOTkxMTYsMTIuMzAxNTYyOCBDMTcyLjk3OTQ3OCwtNC4xMDA1MjA5NSAxNDcuMDE5NDEyLC00LjEwMDUyMDk1IDEzMS4wMDc3MywxMi4zMDE1NjI4IEMxMjYuMjY5OTMzLDE3LjE1NDgyODggMTIyLjkzNDAxOCwyMi45MDAzNDY4IDEyMSwyOS4wMTAwOTQ3IEwxMjMuMTI2NCwyOS45Nzk5MDQ0IEMxMjQuOTM5NTY1LDI0LjEyNjU4MDcgMTI4LjExMTk2OSwxOC42MTkzOTIyIDEzMi42NDM2MDQsMTMuOTc3MzE3MyBDMTQ3Ljc1MTgyNywtMS40OTkyNzA5MiAxNzIuMjQ3MDgsLTEuNDk5MjcwOTIgMTg3LjM1NTI4NiwxMy45NzczMTczIEMyMDIuNDYzNTk3LDI5LjQ1MzgyIDIwMi40NjM1OTcsNTQuNTQ2MTc4MyAxODcuMzU1Mjg2LDcwLjAyMjY5MTYgQzE3Mi4yNDcwOCw4NS40OTkyNTQ5IDE0Ny43NTE4MjcsODUuNDk5MjU0OSAxMzIuNjQzNjA0LDcwLjAyMjY5MTYgQzEzMC4xNzg1NjIsNjcuNDk3NTYwMyAxMjguMTE1NzI1LDY0LjcxNjQ2NzggMTI2LjQ1NTA1OCw2MS43NjI5Mjc2IEwxMjQuMzMwMjkzLDYyLjczMjAwMzYgWiIgaWQ9IlNoYXBlIiBmaWxsPSIjNURBN0EzIiBmaWxsLXJ1bGU9Im5vbnplcm8iPjwvcGF0aD4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg=="},wRmc:function(I,M){I.exports="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSI2MjVweCIgdmlld0JveD0iMCAwIDI1IDYyNSIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KICAgIDwhLS0gR2VuZXJhdG9yOiBTa2V0Y2ggNjEuMiAoODk2NTMpIC0gaHR0cHM6Ly9za2V0Y2guY29tIC0tPgogICAgPHRpdGxlPkNpcmNsZSBPdmVybGF5PC90aXRsZT4KICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPgogICAgPGcgaWQ9IlBhZ2UtMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9Ik9wZW5KOS1Ib21lLUJsYW5rIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMTI4Ni4wMDAwMDAsIC0yNTExLjAwMDAwMCkiIGZpbGwtcnVsZT0ibm9uemVybyI+CiAgICAgICAgICAgIDxyZWN0IGlkPSJHcmF5LUJHIiBmaWxsPSIjNURBN0EzIiB4PSIwIiB5PSIxNDMxIiB3aWR0aD0iMTQ0MCIgaGVpZ2h0PSIxMjQyIj48L3JlY3Q+CiAgICAgICAgICAgIDxnIGlkPSJQYXJ0aWNpcGF0ZSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTg3LjAwMDAwMCwgMjUxMi4wMDAwMDApIj4KICAgICAgICAgICAgICAgIDxyZWN0IGlkPSJCbHVlLUJHIiBmaWxsPSIjMzQzNDM0IiB4PSI4NyIgeT0iMTU2IiB3aWR0aD0iMTQ0MCIgaGVpZ2h0PSIzNjUiPjwvcmVjdD4KICAgICAgICAgICAgICAgIDxnIGlkPSJHcm91cC0xMCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoODcuMDAwMDAwLCAwLjAwMDAwMCkiIGZpbGw9IiM1REE3QTMiPgogICAgICAgICAgICAgICAgICAgIDxyZWN0IGlkPSJSZWN0YW5nbGUtMiIgeD0iMCIgeT0iMTU1IiB3aWR0aD0iMTQ0MCIgaGVpZ2h0PSI1NjUiPjwvcmVjdD4KICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgIDxnIGlkPSJDaXJjbGUtT3ZlcmxheXMiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDc4LjAwMDAwMCwgMC4wMDAwMDApIiBvcGFjaXR5PSIwLjc1MDMzNDgyMSIgc3Ryb2tlPSIjRkZGRkZGIj4KICAgICAgICAgICAgICAgICAgICA8ZyBpZD0iQ2lyY2xlLU92ZXJsYXkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDc0My41MDAwMDAsIDMxMS41MDAwMDApIHJvdGF0ZSg5MC4wMDAwMDApIHRyYW5zbGF0ZSgtNzQzLjUwMDAwMCwgLTMxMS41MDAwMDApIHRyYW5zbGF0ZSg0MzIuMDAwMDAwLCAtNDMyLjAwMDAwMCkiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZyBpZD0iR3JvdXAtMTIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgaWQ9IkNpcmNsZS1PdmVybGF5Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBpZD0iU3RhY2tlZC1Hcm91cC04IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjAwMDAwMCwgMTY4LjAwMDAwMCkiIG9wYWNpdHk9IjAuNSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9Ik92YWwtMTYiIGN4PSI2MTEuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsLTE2IiBjeD0iNTg3LjUiIGN5PSIxMS41IiByPSIxMS41Ij48L2NpcmNsZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBpZD0iT3ZhbC0xNiIgY3g9IjU2My41IiBjeT0iMTEuNSIgcj0iMTEuNSI+PC9jaXJjbGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9Ik92YWwtMTYiIGN4PSI1MTUuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsLTE2IiBjeD0iNTM5LjUiIGN5PSIxMS41IiByPSIxMS41Ij48L2NpcmNsZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBpZD0iT3ZhbC0xNiIgY3g9IjQ2Ny41IiBjeT0iMTEuNSIgcj0iMTEuNSI+PC9jaXJjbGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9Ik92YWwtMTYiIGN4PSI0OTEuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsLTE2IiBjeD0iNDE5LjUiIGN5PSIxMS41IiByPSIxMS41Ij48L2NpcmNsZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBpZD0iT3ZhbC0xNiIgY3g9IjQ0My41IiBjeT0iMTEuNSIgcj0iMTEuNSI+PC9jaXJjbGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9Ik92YWwtMTYiIGN4PSIzNzEuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsLTE2IiBjeD0iMzk1LjUiIGN5PSIxMS41IiByPSIxMS41Ij48L2NpcmNsZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBpZD0iT3ZhbC0xNiIgY3g9IjMyMy41IiBjeT0iMTEuNSIgcj0iMTEuNSI+PC9jaXJjbGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9Ik92YWwtMTYiIGN4PSIzNDcuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsLTE2IiBjeD0iMjc1LjUiIGN5PSIxMS41IiByPSIxMS41Ij48L2NpcmNsZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBpZD0iT3ZhbC0xNiIgY3g9IjI5OS41IiBjeT0iMTEuNSIgcj0iMTEuNSI+PC9jaXJjbGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9Ik92YWwtMTYiIGN4PSIyMjcuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsLTE2IiBjeD0iMjUxLjUiIGN5PSIxMS41IiByPSIxMS41Ij48L2NpcmNsZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBpZD0iT3ZhbC0xNiIgY3g9IjE3OS41IiBjeT0iMTEuNSIgcj0iMTEuNSI+PC9jaXJjbGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9Ik92YWwtMTYiIGN4PSIyMDMuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsLTE2IiBjeD0iMTMxLjUiIGN5PSIxMS41IiByPSIxMS41Ij48L2NpcmNsZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBpZD0iT3ZhbC0xNiIgY3g9IjE1NS41IiBjeT0iMTEuNSIgcj0iMTEuNSI+PC9jaXJjbGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9Ik92YWwtMTYiIGN4PSI4My41IiBjeT0iMTEuNSIgcj0iMTEuNSI+PC9jaXJjbGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9Ik92YWwtMTYiIGN4PSIxMDcuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsLTE2IiBjeD0iMzUuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsLTE2IiBjeD0iNTkuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsLTE2IiBjeD0iMTEuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICA8cmVjdCBpZD0iUmVjdGFuZ2xlLTIyIiBmaWxsPSIjNURBN0EzIiB4PSI3MzQiIHk9IjUyMCIgd2lkdGg9Ijc5MyIgaGVpZ2h0PSIyIj48L3JlY3Q+CiAgICAgICAgICAgIDwvZz4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg=="}}]);
-//# sourceMappingURL=component---src-pages-index-js-743bf9596a9631508e4e.js.map
\ No newline at end of file
diff --git a/component---src-pages-index-js-743bf9596a9631508e4e.js.map b/component---src-pages-index-js-743bf9596a9631508e4e.js.map
deleted file mode 100644
index 5ccb43d..0000000
--- a/component---src-pages-index-js-743bf9596a9631508e4e.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"sources":["webpack:///./src/images/circle-pattern-big.svg","webpack:///./src/images/white-slack-logo.svg","webpack:///./src/pages/index.js","webpack:///./src/images/openj9-logo.svg","webpack:///./src/images/openj9-circle.svg"],"names":["module","exports","isHome","sx","backgroundColor","color","display","minHeight","flexDirection","paddingBottom","backgroundImage","openj9Circle","width","height","borderRadius","position","left","top","border","alignItems","justifyContent","src","openj9Logo","alt","textAlign","marginTop","marginLeft","h1","p","primary","link","target","adoptopenJDK","flexWrap","padding","className","h4","marginBottom","variant","textDecoration","to","h3","flex","maxWidth","minWidth","paddingRight","widthChanged","whiteSlackIcon","githubIcon","circlePatternBig","backgroundRepeat","backgroundSize","paddingLeft","h2"],"mappings":"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","file":"component---src-pages-index-js-743bf9596a9631508e4e.js","sourcesContent":["module.exports = __webpack_public_path__ + \"static/circle-pattern-big-96604574cf60a59e399e87bb5043431c.svg\";","module.exports = \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjRweCIgaGVpZ2h0PSIyNHB4IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5zbGFjay1pY29uPC90aXRsZT4KICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPgogICAgPGcgaWQ9IlBhZ2UtMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9InNsYWNrLWljb24iIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0xLjAwMDAwMCwgLTEuMDAwMDAwKSI+CiAgICAgICAgICAgIDxnIGlkPSJiYWNrZ3JvdW5kIj4KICAgICAgICAgICAgICAgIDxyZWN0IGlkPSJjYW52YXNfYmFja2dyb3VuZCIgeD0iMCIgeT0iMCIgd2lkdGg9IjI2IiBoZWlnaHQ9IjI2Ij48L3JlY3Q+CiAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgPGcgaWQ9IkxheWVyLTEiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDIuMDAwMDAwLCAyLjAwMDAwMCkiIGZpbGwtcnVsZT0ibm9uemVybyI+CiAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJzdmdfMSIgc3Ryb2tlPSIjRkZGRkZGIiAgY3g9IjExIiBjeT0iMTEiIHI9IjExIj48L2NpcmNsZT4KICAgICAgICAgICAgICAgIDxnIGlkPSJzdmdfMTkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDMuMDAwMDAwLCAyLjAwMDAwMCkiIGZpbGw9IiNGRkZGRkYiICBzdHJva2Utd2lkdGg9IjAuNSI+CiAgICAgICAgICAgICAgICAgICAgPGcgaWQ9InN2Z182IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjA4NDA4MSwgMC45NzE0MjUpIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGcgaWQ9InN2Z183IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjAwMDAwMCwgOC40NjAxMjgpIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0zLjQyMjg3NTQ2LDEuNzMwMTYyNTkgQzMuNDIyODc1NDYsMi42NTQyNjg4MyAyLjY2Nzk3MTc3LDMuNDA5MTcyNTIgMS43NDM4NjU1MywzLjQwOTE3MjUyIEMwLjgxOTc1OTI4OCwzLjQwOTE3MjUyIDAuMDY0ODU1NTk4MSwyLjY1NDI2ODgzIDAuMDY0ODU1NTk4MSwxLjczMDE2MjU5IEMwLjA2NDg1NTU5ODEsMC44MDYwNTYzNTQgMC44MTk3NTkyODgsMC4wNTExNTI2NjQ1IDEuNzQzODY1NTMsMC4wNTExNTI2NjQ1IEwzLjQyMjg3NTQ2LDAuMDUxMTUyNjY0NSBMMy40MjI4NzU0NiwxLjczMDE2MjU5IFoiIGlkPSJzdmdfOCI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTQuMjY4ODg4MjEsMS43MzAxNjI1OSBDNC4yNjg4ODgyMSwwLjgwNjA1NjM1NCA1LjAyMzc5MTksMC4wNTExNTI2NjQ1IDUuOTQ3ODk4MTQsMC4wNTExNTI2NjQ1IEM2Ljg3MjAwNDM4LDAuMDUxMTUyNjY0NSA3LjYyNjkwODA3LDAuODA2MDU2MzU0IDcuNjI2OTA4MDcsMS43MzAxNjI1OSBMNy42MjY5MDgwNyw1LjkzNDE5NTIxIEM3LjYyNjkwODA3LDYuODU4MzAxNDUgNi44NzIwMDQzOCw3LjYxMzIwNTE0IDUuOTQ3ODk4MTQsNy42MTMyMDUxNCBDNS4wMjM3OTE5LDcuNjEzMjA1MTQgNC4yNjg4ODgyMSw2Ljg1ODMwMTQ1IDQuMjY4ODg4MjEsNS45MzQxOTUyMSBDNC4yNjg4ODgyMSw1LjkzNDE5NTIxIDQuMjY4ODg4MjEsMS43MzAxNjI1OSA0LjI2ODg4ODIxLDEuNzMwMTYyNTkgTDQuMjY4ODg4MjEsMS43MzAxNjI1OSBaIiBpZD0ic3ZnXzkiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgICAgICAgICA8ZyBpZD0ic3ZnXzEwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik01Ljk0Nzg5ODE0LDMuNDQ4MjE5MjcgQzUuMDIzNzkxOSwzLjQ0ODIxOTI3IDQuMjY4ODg4MjEsMi42OTMzMTU1OCA0LjI2ODg4ODIxLDEuNzY5MjA5MzQgQzQuMjY4ODg4MjEsMC44NDUxMDMwOTYgNS4wMjM3OTE5LDAuMDkwMTk5NDA3IDUuOTQ3ODk4MTQsMC4wOTAxOTk0MDcgQzYuODcyMDA0MzgsMC4wOTAxOTk0MDcgNy42MjY5MDgwNywwLjg0NTEwMzA5NiA3LjYyNjkwODA3LDEuNzY5MjA5MzQgTDcuNjI2OTA4MDcsMy40NDgyMTkyNyBMNS45NDc4OTgxNCwzLjQ0ODIxOTI3IFoiIGlkPSJzdmdfMTEiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik01Ljk0Nzg5ODE0LDQuMjk0MjMyMDIgQzYuODcyMDA0MzgsNC4yOTQyMzIwMiA3LjYyNjkwODA3LDUuMDQ5MTM1NzEgNy42MjY5MDgwNyw1Ljk3MzI0MTk1IEM3LjYyNjkwODA3LDYuODk3MzQ4MTkgNi44NzIwMDQzOCw3LjY1MjI1MTg4IDUuOTQ3ODk4MTQsNy42NTIyNTE4OCBMMS43NDM4NjU1Myw3LjY1MjI1MTg4IEMwLjgxOTc1OTI4OCw3LjY1MjI1MTg4IDAuMDY0ODU1NTk4MSw2Ljg5NzM0ODE5IDAuMDY0ODU1NTk4MSw1Ljk3MzI0MTk1IEMwLjA2NDg1NTU5ODEsNS4wNDkxMzU3MSAwLjgxOTc1OTI4OCw0LjI5NDIzMjAyIDEuNzQzODY1NTMsNC4yOTQyMzIwMiBDMS43NDM4NjU1Myw0LjI5NDIzMjAyIDUuOTQ3ODk4MTQsNC4yOTQyMzIwMiA1Ljk0Nzg5ODE0LDQuMjk0MjMyMDIgWiIgaWQ9InN2Z18xMiI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICAgICAgICAgIDxnIGlkPSJzdmdfMTMiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDguNDYwMTI4LCAwLjAwMDAwMCkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTQuMjI5ODQxNDcsNS45NzMyNDE5NSBDNC4yMjk4NDE0Nyw1LjA0OTEzNTcxIDQuOTg0NzQ1MTYsNC4yOTQyMzIwMiA1LjkwODg1MTQsNC4yOTQyMzIwMiBDNi44MzI5NTc2NCw0LjI5NDIzMjAyIDcuNTg3ODYxMzMsNS4wNDkxMzU3MSA3LjU4Nzg2MTMzLDUuOTczMjQxOTUgQzcuNTg3ODYxMzMsNi44OTczNDgxOSA2LjgzMjk1NzY0LDcuNjUyMjUxODggNS45MDg4NTE0LDcuNjUyMjUxODggTDQuMjI5ODQxNDcsNy42NTIyNTE4OCBMNC4yMjk4NDE0Nyw1Ljk3MzI0MTk1IFoiIGlkPSJzdmdfMTQiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0zLjM4MzgyODcyLDUuOTczMjQxOTUgQzMuMzgzODI4NzIsNi44OTczNDgxOSAyLjYyODkyNTAzLDcuNjUyMjUxODggMS43MDQ4MTg3OSw3LjY1MjI1MTg4IEMwLjc4MDcxMjU0NSw3LjY1MjI1MTg4IDAuMDI1ODA4ODU1Niw2Ljg5NzM0ODE5IDAuMDI1ODA4ODU1Niw1Ljk3MzI0MTk1IEwwLjAyNTgwODg1NTYsMS43NjkyMDkzNCBDMC4wMjU4MDg4NTU2LDAuODQ1MTAzMDk2IDAuNzgwNzEyNTQ1LDAuMDkwMTk5NDA3IDEuNzA0ODE4NzksMC4wOTAxOTk0MDcgQzIuNjI4OTI1MDMsMC4wOTAxOTk0MDcgMy4zODM4Mjg3MiwwLjg0NTEwMzA5NiAzLjM4MzgyODcyLDEuNzY5MjA5MzQgTDMuMzgzODI4NzIsNS45NzMyNDE5NSBaIiBpZD0ic3ZnXzE1Ij48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgICAgICAgICAgPGcgaWQ9InN2Z18xNiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoOC40NjAxMjgsIDguNDYwMTI4KSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMS43MDQ4MTg3OSw0LjI1NTE4NTI4IEMyLjYyODkyNTAzLDQuMjU1MTg1MjggMy4zODM4Mjg3Miw1LjAxMDA4ODk3IDMuMzgzODI4NzIsNS45MzQxOTUyMSBDMy4zODM4Mjg3Miw2Ljg1ODMwMTQ1IDIuNjI4OTI1MDMsNy42MTMyMDUxNCAxLjcwNDgxODc5LDcuNjEzMjA1MTQgQzAuNzgwNzEyNTQ1LDcuNjEzMjA1MTQgMC4wMjU4MDg4NTU2LDYuODU4MzAxNDUgMC4wMjU4MDg4NTU2LDUuOTM0MTk1MjEgTDAuMDI1ODA4ODU1Niw0LjI1NTE4NTI4IEwxLjcwNDgxODc5LDQuMjU1MTg1MjggWiIgaWQ9InN2Z18xNyI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTEuNzA0ODE4NzksMy40MDkxNzI1MiBDMC43ODA3MTI1NDUsMy40MDkxNzI1MiAwLjAyNTgwODg1NTYsMi42NTQyNjg4MyAwLjAyNTgwODg1NTYsMS43MzAxNjI1OSBDMC4wMjU4MDg4NTU2LDAuODA2MDU2MzU0IDAuNzgwNzEyNTQ1LDAuMDUxMTUyNjY0NSAxLjcwNDgxODc5LDAuMDUxMTUyNjY0NSBMNS45MDg4NTE0LDAuMDUxMTUyNjY0NSBDNi44MzI5NTc2NCwwLjA1MTE1MjY2NDUgNy41ODc4NjEzMywwLjgwNjA1NjM1NCA3LjU4Nzg2MTMzLDEuNzMwMTYyNTkgQzcuNTg3ODYxMzMsMi42NTQyNjg4MyA2LjgzMjk1NzY0LDMuNDA5MTcyNTIgNS45MDg4NTE0LDMuNDA5MTcyNTIgTDEuNzA0ODE4NzksMy40MDkxNzI1MiBMMS43MDQ4MTg3OSwzLjQwOTE3MjUyIFoiIGlkPSJzdmdfMTgiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+\"","// Copyright (c) 2017, 2020 IBM Corp. and others\n\n// This program and the accompanying materials are made available under\n// the terms of the Eclipse Public License 2.0 which accompanies this\n// distribution and is available at https://www.eclipse.org/legal/epl-2.0/\n// or the Apache License, Version 2.0 which accompanies this distribution and\n// is available at https://www.apache.org/licenses/LICENSE-2.0.\n\n// This Source Code may also be made available under the following\n// Secondary Licenses when the conditions for such availability set\n// forth in the Eclipse Public License, v. 2.0 are satisfied: GNU\n// General Public License, version 2 with the GNU Classpath\n// Exception [1] and GNU General Public License, version 2 with the\n// OpenJDK Assembly Exception [2].\n\n// [1] https://www.gnu.org/software/classpath/license.html\n// [2] http://openjdk.java.net/legal/assembly-exception.html\n\n// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 OR LicenseRef-GPL-2.0 WITH Assembly-exception\n\n// The project website pages cannot be redistributed\n\nimport Layout from \"../components/layout\";\nimport Button from \"../components/button\";\nimport Card from \"../components/card\";\n\nimport openj9Circle from \"../images/openj9-circle.svg\";\nimport openj9Logo from \"../images/openj9-logo.svg\";\nimport circlePatternBig from \"../images/circle-pattern-big.svg\";\nimport adoptopenJDK from \"../images/adopt-open-jdk.png\";\nimport whiteSlackIcon from \"../images/white-slack-logo.svg\"\nimport githubIcon from \"../images/github-logo.svg\";\nimport {Link} from \"gatsby\"\n\n/** @jsx jsx */\nimport { jsx, Styled } from \"theme-ui\";\nexport default () => (\n  <Layout isHome={true}>\n    <div\n      sx={{\n        backgroundColor: \"primary\",\n        color: \"lightText\",\n        display: \"flex\",\n        minHeight: \"500px\",\n        flexDirection: [\"column\", \"column\", \"row\", \"row\"],\n        paddingBottom: [\"4rem\", \"4rem\", 0, 0]\n      }}\n    >\n      <div\n        sx={{\n          backgroundImage: `url(${openj9Circle})`,\n          width: [\"100%\", \"100%\", \"30%\", \"30%\"],\n          minHeight: \"200px\"\n        }}\n      ></div>\n      <div\n        sx={{\n          height: \"250px\",\n          width: \"250px\",\n          borderRadius: \"50%\",\n          backgroundColor: \"#434343\",\n          position: \"absolute\",\n          left: [\n            \"calc(50% - 125px)\",\n            \"calc(50% - 125px)\",\n            \"calc(30% - 125px)\",\n            \"calc(30% - 125px)\"\n          ],\n          top: [\"70px\", \"70px\", \"125px\", \"125px\"],\n          border: \"white solid 2px\",\n          display: \"flex\",\n          alignItems: \"center\",\n          justifyContent: \"center\"\n        }}\n      >\n        <img src={openj9Logo} alt=\"OpenJ9 Logo\"></img>\n      </div>\n      <section\n        sx={{\n          width: [\"90%\", \"90%\", \"40%\", \"33%\"],\n          display: \"flex\",\n          flexDirection: \"column\",\n          justifyContent: \"center\",\n          alignItems: [\"center\", null, \"start\", \"start\"],\n          textAlign: [\"center\", null, \"left\", \"left\"],\n          marginTop: [\"8rem\", \"8rem\", \"3rem\", \"3rem\"],\n          marginLeft: [\"5%\", \"5%\", \"20%\", \"15%\"]\n        }}\n      >\n        <Styled.h1>Unleash the power of Java</Styled.h1>\n        <Styled.p>\n          Optimized to run Java&trade; applications cost-effectively in the cloud, \n          Eclipse OpenJ9 is a fast and efficient JVM that delivers power and performance when you need it most.\n        </Styled.p>\n        <Styled.p>\n          Grab a pre-built binary of OpenJDK with OpenJ9 from the AdoptOpenJDK community.\n        </Styled.p>\n        <Button primary={false} link=\"https://adoptopenjdk.net/releases.html?variant=openjdk8&jvmVariant=openj9\" target={true}>\n          <img sx={{\n            width: \"80%\",\n          }}src={adoptopenJDK} alt=\"adoptopenJDK Logo\"></img>\n        </Button>\n      </section>\n    </div>\n    \n    <div\n      sx={{\n        display: \"flex\",\n        flexWrap: \"wrap\",\n        justifyContent: \"space-around\",\n        padding: \"5% 5% 1% 5%\",\n        marginLeft: \"-15px\"\n      }}\n    >\n      <Card width=\"20rem\" primary={false}>\n      <i className=\"fas fa-rocket fa-5x\"></i>\n        <Styled.h4 sx={{textAlign:\"center\", marginBottom:\"4px\"}}>Optimized for the Cloud</Styled.h4>\n        <Styled.p sx={{textAlign:\"center\"}}>for microservices and monoliths too!</Styled.p>\n      </Card>\n\n      <Card width=\"20rem\" primary={false}>\n      <i className=\"fas fa-tachometer-alt fa-5x\"></i>\n         <Styled.h4 sx={{textAlign:\"center\", marginBottom:\"4px\"}}>42% Faster Startup</Styled.h4>\n        <Styled.p sx={{textAlign:\"center\"}}>over HotSpot</Styled.p>\n      </Card>\n\n      <Card width=\"20rem\" primary={false}>\n      <i className=\"fas fa-chart-line fa-5x\"></i>\n         <Styled.h4 sx={{textAlign:\"center\", marginBottom:\"4px\"}}>28% Faster Ramp-up</Styled.h4>\n        <Styled.p sx={{textAlign:\"center\"}}>when deployed to cloud vs HotSpot</Styled.p>\n      </Card>\n\n      <Card width=\"20rem\"primary={false}>\n      <i className=\"fas fa-archive fa-5x\"></i>\n         <Styled.h4 sx={{textAlign:\"center\", marginBottom:\"4px\"}}>66% Smaller</Styled.h4>\n        <Styled.p sx={{textAlign:\"center\"}}>when compared to HotSpot</Styled.p>\n      </Card>\n    </div>\n\n    <div\n      sx={{\n        display: \"flex\",\n        justifyContent: \"center\",\n        paddingBottom: \"5%\"\n      }}\n    >\n     <Link sx={{\n        variant: \"buttons.secondary\",\n        display: \"flex\",\n        alignItems: \"center\",\n        justifyContent: \"center\",\n        textDecoration: \"none\",\n        width:\"15rem\",\n        }} \n        to=\"/performance\">Read performance details</Link>\n\n      </div>\n    <div\n      sx={{\n        padding: `calc(5% + 40px)`,\n        backgroundColor: \"#F5F9FC\",\n        minHeight: \"50vh\"\n      }}\n    >\n      <Styled.h3>Join the conversation</Styled.h3>\n      <section\n        sx={{\n          display: \"flex\",\n          flexWrap: \"wrap\",\n          backgroundColor: \"white\",\n          borderRadius: \"card\",\n          padding: \"5%\",\n          alignItems: \"flex-end\",\n          justifyContent: \"space-between\"          \n        }}\n      >\n        <div\n          sx={{\n            flex: \"30%\",\n            maxWidth: \"600px\",\n            minWidth: [\"250px\", \"400px\", \"400px\", \"500px\"],\n            marginBottom: [\"6rem\", \"6rem\", \"6rem\", 0],\n            marginTop: [\"1rem\", 0, 0, 0],\n            paddingRight:[\"1rem\", 0, 0, 0]\n          }}\n        >\n          <Styled.p sx={{width:[\"80%\", \"100%\", \"80%\", \"80%\"], height:[\"18rem\", \"7rem\", \"10rem\", \"10rem\"]}}>\n            Join us on Slack where you can ask questions and chat directly with our developers.\n            Whether you simply have a question about using OpenJ9, an idea for improvement,\n            or a problem you want to discuss, we'd love to hear from you.\n          </Styled.p>\n          <Button primary={false} target={true} widthChanged={false} link=\"https://openj9.slack.com/join/shared_invite/enQtNDU4MDI4Mjk0MTk2LWVhNTMzMGY1N2JkODQ1OWE0NTNmZjM4ZDcxOTBiMjk3NGFjM2U0ZDNhMmY0MDZlNzU0ZjAyNzQ1ODlmYjg3MjA\">\n            Join OpenJ9 slack\n            <img sx={{\n            width: \"10%\",\n            marginLeft: \"0.8rem\",\n          }}src={whiteSlackIcon} alt=\"slack Logo\"></img>\n          </Button>\n        </div>\n        <div\n          sx={{\n            flex: \"30%\",\n            maxWidth: \"600px\",\n            minWidth: [\"250px\", \"400px\", \"400px\", \"500px\"],\n            marginBottom: [\"1rem\", \"1rem\", \"6rem\", \"0rem\"],\n          }}\n        >\n          <Styled.p sx={{width:[\"80%\", \"100%\", \"80%\", \"80%\"], height:[\"15rem\", \"6rem\", \"10rem\", \"10rem\"]}}>\n          Like all great open source projects,\n          we have a vibrant and busy GitHub repository where you can create issues to explore ideas,\n          request new features, or report any difficulties you are having. \n          </Styled.p>\n          \n          <Button primary={false} target={true} widthChanged={false} link=\"https://github.com/eclipse/openj9/issues\">\n            See OpenJ9 issues\n            <img sx={{\n            width: \"10%\",\n            marginLeft: \"0.8rem\"\n          }}src={githubIcon} alt=\"GitHub Logo\"></img>\n          </Button>\n        </div>\n      </section>\n    </div>\n    \n    <div\n      sx={{\n        backgroundImage: `url(${circlePatternBig})`,\n        height: \"50vh\",\n        backgroundRepeat: \"no-repeat\",\n        backgroundSize: \"cover\",\n        display: \"flex\",\n        alignItems: \"center\",\n        color: \"white\",\n        paddingLeft: \"15%\"\n      }}\n    >\n      <Styled.h2>\n        Participate in the <br></br> Eclipse OpenJ9 project\n      </Styled.h2>\n    </div>\n    <div\n      sx={{\n        display: \"flex\",\n        flexWrap: \"wrap\",\n        justifyContent: \"space-between\",\n        padding: \"calc(5% + 40px)\"\n      }}\n    >\n      <div\n        sx={{\n          flex: \"30%\",\n          maxWidth: \"600px\",\n          minWidth: [\"250px\", \"350px\", \"400px\", \"500px\"],\n          marginBottom: [\"4rem\", \"4rem\", \"4rem\", \"2rem\"]\n        }}\n      >\n        <Styled.h3>Become a contributor</Styled.h3>\n        <Styled.p sx={{width:\"90%\", height:[\"24rem\", \"14.5rem\", \"13rem\", \"12rem\"]}}>\n          We welcome contributions to the project in all shapes and forms.\n          If you are interested in JVM development, we'd love to hear your ideas and help you collaborate with us on the code base.\n          There are other ways you can contribute too, such as working on our website and docs. Be a part of the project and share in our success! \n        </Styled.p >\n        <Button primary={true} target={true} link=\"https://github.com/eclipse/openj9/blob/master/CONTRIBUTING.md\">\n          Contributor Guide\n        </Button>\n      </div>\n      <div\n        sx={{\n          flex: \"30%\",\n          maxWidth: \"600px\",\n          minWidth: [\"250px\", \"350px\", \"400px\", \"500px\"]\n        }}\n      >\n        <Styled.h3>Join community calls</Styled.h3>\n        <Styled.p sx={{width:\"90%\", height:[\"25rem\", \"14.5rem\", \"13rem\", \"12rem\"]}}>\n          Our regular calls are a great place to find out what is going on in the project.\n          As well as discussing our release plans and development status, we often feature lightning talks by members of the community.\n          For example, technical deep dives or overviews about new features. To see agendas and recordings,\n          look in the Slack #planning channel.\n        </Styled.p>\n        <Button primary={true} target={true} link=\"https://calendar.google.com/calendar?cid=YjBnYjB0ZzNxaTZhb3NhZGZnbG0wa3BjY29AZ3JvdXAuY2FsZW5kYXIuZ29vZ2xlLmNvbQ\">\n          Add to Calendar\n        </Button>\n      </div>\n    </div>\n  </Layout>\n);\n","module.exports = \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjAxcHgiIGhlaWdodD0iODRweCIgdmlld0JveD0iMCAwIDIwMSA4NCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KICAgIDwhLS0gR2VuZXJhdG9yOiBTa2V0Y2ggNjEuMiAoODk2NTMpIC0gaHR0cHM6Ly9za2V0Y2guY29tIC0tPgogICAgPHRpdGxlPkdyb3VwIDEzPC90aXRsZT4KICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPgogICAgPGcgaWQ9IlBhZ2UtMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9Ikdyb3VwLTEzIj4KICAgICAgICAgICAgPGcgaWQ9IkxvZ28iPjwvZz4KICAgICAgICAgICAgPHBhdGggZD0iTTI1LjUwNzI1OTUsNDkuMjgyMzQ2NyBDMjMuNDY0Mjk2OSw1Mi40MjA2NDYgMjAuNjM0MzYzNiw1My45ODg5MjE0IDE3LjAxNDg4NjYsNTMuOTg4OTIxNCBDMTMuNDk3MjI3LDUzLjk4ODkyMTQgMTAuNjg2Nzc1LDUyLjQ3MzA5NjYgOC41ODMxNjMwNiw0OS40NDEwOTc1IEM2LjQ4MDY1Mzg0LDQ2LjQwODM5ODkgNS40MjkwMzE2Nyw0Mi40NzcwNDU0IDUuNDI5MDMxNjcsMzcuNjQ0NTg5MSBDNS40MjkwMzE2NywzMi42OTY3NDEyIDYuNDcwMzYxODQsMjguNjkxOTU2NyA4LjU1MzAyMjE5LDI1LjYzMDkzNDggQzEwLjYzNjA1MDEsMjIuNTcwMjYyNiAxMy40NDU3NjcsMjEuMDM5MDUyMyAxNi45ODQzNzgyLDIxLjAzOTA1MjMgQzIwLjQ4MjkyNDEsMjEuMDM5MDUyMyAyMy4yODc4NjI2LDIyLjQ1NTIyMDggMjUuNDAxMDMxNCwyNS4yODQwNjEgQzI3LjUxNDIwMDIsMjguMTE0NjQ5NSAyOC41NzA5NjgzLDMyLjA3MTUyOTEgMjguNTcwOTY4MywzNy4xNTMzMDEgQzI4LjU3MDk2ODMsNDIuMTAxNDk4NSAyNy41NDk0ODcsNDYuMTQ0Mzk3MiAyNS41MDcyNTk1LDQ5LjI4MjM0NjcgTTE3LjA0NTM5NTEsMTcgQzExLjkwOTMxNzksMTcgNy43ODQ0MzAxLDE4Ljk0NDg3MTMgNC42NzAzNjQsMjIuODMyNTE2IEMxLjU1NzAzMzA1LDI2LjcyMDUxMDMgMCwzMS42NDg0MjY5IDAsMzcuNjE1NTY2MyBDMCw0My4zMzI2OTA4IDEuNDg2NDU5MzEsNDguMTU5NTUyNCA0LjQ1OTAxMDM3LDUyLjA5NTEwMiBDNy40MzExOTM4NSw1Ni4wMzE3MDA3IDExLjU3NTkzMDYsNTggMTYuODkzNTg4LDU4IEMyMi4yOTI0Nzg4LDU4IDI2LjQ5MzA4NjQsNTUuOTI1NDAwNiAyOS40OTY1MTM1LDUxLjc3Nzk1MDIgQzMyLjQ5ODQ3MDMsNDcuNjI5ODAwNSAzNCw0Mi43NjM3NzU4IDM0LDM3LjE4MjY3MzQgQzM0LDMxLjM2OTczODkgMzIuNDUyODkxNCwyNi41NTIzMTg1IDI5LjM1OTQwOTMsMjIuNzMwNzYxNyBDMjYuMjY1NTU5NiwxOC45MTA5NTMyIDIyLjE2MDg4ODIsMTcgMTcuMDQ1Mzk1MSwxNyIgaWQ9IlNoYXBlIiBmaWxsPSIjNURBN0EzIiBmaWxsLXJ1bGU9Im5vbnplcm8iPjwvcGF0aD4KICAgICAgICAgICAgPHBhdGggZD0iTTU4LjA5NjAyODUsNTQuMTU5NTk4OCBDNTYuNDMxOTk0NSw1NS45NDM3MTE5IDU0LjUxOTMwNzMsNTYuODM3MjEwMSA1Mi4zNjIxNTU1LDU2LjgzNzIxMDEgQzUwLjQ5ODIwODksNTYuODM3MjEwMSA0OC43MTA4MDAyLDU2LjA5NjE3MjQgNDYuOTkzODM2OSw1NC42MTM3MzY3IEM0NS4yNzYxMTIsNTMuMTMzNDYzNCA0NC4zMzEwMDE2LDUxLjI1NjM2MDIgNDMuOTUwMjE1OCw0OC45ODYwMzEzIEw0My45NTAyMTU4LDQwLjUwODc5MDkgQzQ0LjcxMTc4NzQsMzguNDQ2Nzg4NyA0NS40ODA1OTQsMzYuNjkyMjMwNiA0Ny4wNDEwNTQ0LDM1LjI0NTExNjcgQzQ4LjYwMTUxNDcsMzMuNzk4MDAyNyA1MC4zNjM3OTE1LDMzLjA3NDI2NTUgNTIuMzMyODM1LDMzLjA3NDI2NTUgQzU0LjgyNTQ1OTEsMzMuMDc0MjY1NSA1Ni44MjU3MjcsMzQuMTAwNDAwOSA1OC4zMzQwMTk3LDM2LjE1MjMxMTEgQzU5Ljg0MTU1MDgsMzguMjA0MjIxNCA2MC41OTU1MDY3LDQxLjEyMzY3OTIgNjAuNTk1NTA2Nyw0NC45MTEwNDQ5IEM2MC41OTU1MDY3LDQ5LjI5Mjc1NDUgNTkuNzYxNTg1OCw1Mi4zNzY1NjcgNTguMDk2MDI4NSw1NC4xNTk1OTg4IE01My41Mjk2NDQ5LDI5IEM0OS4wOTUwMTMxLDI5IDQ1Ljg1NDE0NDksMzEuMjIwOTUwNSA0My41Njk0Mjk5LDM1LjY2MDY4ODkgTDQzLjU2OTQyOTksMjkuNjMyMTg4OCBMMzksMjkuNjMyMTg4OCBMMzksNzAgTDQzLjk1MDIxNTgsNzAgTDQzLjk1MDIxNTgsNTUuMzE5ODEyOSBDNDYuMjM0OTMwOCw1OC45MDc4NjI2IDQ5LjM2MTE4MjQsNjAuNzAyNzg4NSA1My4zNDAzOTQzLDYwLjcwMjc4ODUgQzU3LjA0ODg2NzUsNjAuNzAyNzg4NSA2MC4wODMzNDk4LDU5LjI2MzYwMzkgNjIuNDUwNjk1Myw1Ni4zODY2NzY1IEM2NC44MTY4OTg0LDUzLjUwODMwNzQgNjYsNDkuNjE4OTQwOSA2Niw0NC43MTc4NTYxIEM2Niw0MC4xNzI1MTI2IDY0Ljg3Mjg3MzksMzYuNDE2ODY0NSA2Mi41NzI5Mjc1LDMzLjQ1MDE5MDggQzYwLjI3MTgzODgsMzAuNDgzMTU2NiA1Ny4yNzM1MzEyLDI5IDUzLjUyOTY0NDksMjkiIGlkPSJTaGFwZSIgZmlsbD0iIzVEQTdBMyIgZmlsbC1ydWxlPSJub256ZXJvIj48L3BhdGg+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik03Ny40MDY0Nzk2LDQxLjU2NzE4NTkgQzc3LjYwMzM4NjQsMzguNzQzMDk5MiA3OC41MDk4MDYsMzYuNTY3ODQ2NCA4MC4xMjM5Mzg0LDM0LjkzNjU4MzMgQzgxLjczNjk5MDksMzMuMzA0OTY3MiA4My43MDI0NTk4LDMyLjQ2NTE1NDQgODYuMDE5NjI1NCwzMi40NjUxNTQ0IEM4Ny43NDIxMTA1LDMyLjQ2NTE1NDQgODkuMjE2NTcyMiwzMi45MDQyOTk5IDkwLjQ0NTE3MDMsMzMuODA4MDA3NyBDOTEuNjcyNjg4NSwzNC43MTAzMDM0IDkyLjU0NDU1MDQsMzUuODQ1MjMzMiA5My4wNTg5NTYxLDM3LjEyNzAxNTYgQzkzLjU3NDgwMTcsMzguNDA4NDQ0OSA5My44NTA1NDMzLDM5LjgwMjEzMTcgOTMuODkwNTAwNiw0MS41NjcxODU5IEw3Ny40MDY0Nzk2LDQxLjU2NzE4NTkgWiBNOTUuMzMxODQ0NSwzMy4wNDQ3OTgyIEM5Mi45NDUyMDM3LDMwLjM4NDE1NTUgODkuNzkyMTczOSwyOSA4NS44NzA5NTUzLDI5IEM4MS44OTE0MjA2LDI5IDc4LjU4MzYwMTEsMzAuNDE1NTczNSA3NS45NTA3MzY2LDMzLjMwMjQ5NjEgQzczLjMxNzE1MjIsMzYuMTg4MDA2NyA3MiwzOS45NjAyODA2IDcyLDQ0LjY0NTA4NzUgQzcyLDQ5LjIzMjQ2MzMgNzMuMjY2Mzk1Niw1Mi45MzE2NjM5IDc1LjgwMTcwNjYsNTUuNzU5OTg2OCBDNzguMzM2Mjk3Niw1OC41ODk3MjE3IDgxLjY1MzQ3NjQsNjAgODUuNzUyODgzMSw2MCBDODguODYxNjM1OSw2MCA5MS41NjM2MTU4LDU5LjE3NTM2NjcgOTMuODYwNjIyNiw1Ny41Mjc4NjUxIEM5Ni4xNTgzNDk0LDU1Ljg4MTA2OTUgOTcuNzAyNjQ2NSw1My44MDExMjk2IDk4LjQ5NDk1MzcsNTEuMjg2NjMzNCBMOTQuMTU5MDQyNyw1MC40MTM2Mzc2IEM5Mi41OTM4NjcxLDU0LjI3Njk4ODIgODkuOTAwODg2Niw1Ni4yMDk3MjI2IDg2LjA3OTAyMTQsNTYuMjA5NzIyNiBDODMuOTYwMjAyNyw1Ni4yMDk3MjI2IDgxLjk1MDQ1NjYsNTUuNTQxODI2MSA4MC4wNDk3ODMzLDUzLjk4ODU3ODQgQzc4LjE0ODc1MDEsNTIuNDM0NjI0NyA3Ny4xOTc2OTM1LDQ5LjMzMzQyNDQgNzcuMTk3NjkzNSw0NS4wOTcyOTQzIEw5OSw0NS4wOTcyOTQzIEM5OC45NDA2MDQsMzkuNDQ5MTIwOSA5Ny43MTc3NjU1LDM1LjcwNDczNDkgOTUuMzMxODQ0NSwzMy4wNDQ3OTgyIEw5NS4zMzE4NDQ1LDMzLjA0NDc5ODIgWiIgaWQ9IlNoYXBlIiBmaWxsPSIjNURBN0EzIiBmaWxsLXJ1bGU9Im5vbnplcm8iPjwvcGF0aD4KICAgICAgICAgICAgPHBhdGggZD0iTTEyMy40MDI0LDMwLjc0NDkzNTUgQzEyMS42NTMyLDI5LjU4MjAwNjcgMTE5LjQ3NTYsMjkgMTE2Ljk4ODgsMjkgQzExMi42NzYsMjkgMTA5LjIsMzEuMTI4MTIwMSAxMDYuNCwzNS4zODMyNzU3IEwxMDYuNCwyOS42MzQ0MjM0IEwxMDIsMjkuNjM0NDIzNCBMMTAyLDYwIEwxMDYuOCw2MCBMMTA2LjgsNDMuNDM2NjU3NSBDMTA2LjgsNDAuMzE1ODcyNyAxMDcuNzM4NCwzNy43OTk1MDcyIDEwOS41MzE2LDM1Ljg4OTczIEMxMTEuMzIzNiwzMy45ODEwMzczIDExMy41NjI0LDMzLjAyNjY5MDkgMTE2LjIwMjQsMzMuMDI2NjkwOSBDMTE4LjExNzIsMzMuMDI2NjkwOSAxMTkuNzk1MiwzMy41OTM1MTQ4IDEyMS4xMzcyLDM0LjcyNzE2MjYgQzEyMi40Nzk2LDM1Ljg2MDA4NzQgMTIzLjIsMzcuODE5MDI3OSAxMjMuMiw0MC42MDM2MjI2IEwxMjMuMiw2MCBMMTI4LDYwIEwxMjgsNDIuNTQxOTU3OCBDMTI4LDM4Ljc0NDA5MzEgMTI3LjY2MjQsMzYuMTE5NjQwNyAxMjcuMDEyNCwzNC42Njc1MTU5IEMxMjYuMzYzMiwzMy4yMTUzOTEyIDEyNS4xNTIsMzEuOTA3ODY0NCAxMjMuNDAyNCwzMC43NDQ5MzU1IFoiIGlkPSJTaGFwZSIgZmlsbD0iIzVEQTdBMyIgZmlsbC1ydWxlPSJub256ZXJvIj48L3BhdGg+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNDcuMjk3ODcyLDQ5LjYwNTg3OTYgQzE0Ny4yOTc4NzIsNTEuODU4MzkzNCAxNDcuMTIyODA5LDUzLjQ4NjUyNzUgMTQ2Ljc4MjA4NSw1NC40OTI4Mzc3IEMxNDYuNDQwMjc3LDU1LjQ5ODA1MjYgMTQ1Ljc3MDQwNCw1Ni4zMTY2ODM4IDE0NC43NzUsNTYuOTUwNTU3MSBDMTQzLjc4MDMxOSw1Ny41ODM3IDE0Mi4xMjYyNTUsNTcuODk5MTc2MSAxNDAuMDI2NTc0LDU3Ljg5OTE3NjEgQzEzOC41NTA0NjgsNTcuODk5MTc2MSAxMzcuMTcwMjEzLDU3LjcwMzgyOTIgMTM1LDU3LjMxMjc3MDMgTDEzNSw2MS4yMTg5Nzc2IEMxMzcuMTcwMjEzLDYxLjczODkyODkgMTM4Ljc4MDg3Miw2MiAxNDAuNjA1NjYsNjIgQzE0NC4wMTM2MTcsNjIgMTQ2Ljc5NTQ2OCw2MS4wODc1MjkzIDE0OC44NTkzNCw1OS4yNjQ0MTM0IEMxNTAuOTIyNDg5LDU3LjQ0MDIwMjIgMTUyLDU0LjIyMDA4MjQgMTUyLDQ5LjYwMjk1ODUgTDE1MiwyMyBMMTQ3LjI5Nzg3MiwyMyBMMTQ3LjI5Nzg3Miw0OS42MDU4Nzk2IFoiIGlkPSJTaGFwZSIgZmlsbD0iI0ZGRkZGRiIgZmlsbC1ydWxlPSJub256ZXJvIj48L3BhdGg+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNzYuMjc2Mjg3LDQxLjgwOTg1MDUgQzE3NC41NzcyODcsNDMuNjE0NjkxMSAxNzIuNDczNjEzLDQ0LjUxNzI5MDkgMTY5Ljk2NjMxMyw0NC41MTcyOTA5IEMxNjcuNjg4NzU4LDQ0LjUxNzI5MDkgMTY1LjY5Mjk3NCw0My43Mzg2MDU1IDE2My45NzY1MTYsNDIuMTgxNTkzOCBDMTYyLjI2MDQwNyw0MC42MjM1MDQ2IDE2MS40MDIxNzgsMzguNTA3MjYxNyAxNjEuNDAyMTc4LDM1LjgzMTA2OTMgQzE2MS40MDIxNzgsMzMuMzQwMjA5OCAxNjIuMTc2MjYsMzEuMjI2NDgxMSAxNjMuNzIzNzI2LDI5LjQ5NTYzMDEgQzE2NS4yNjk3OTUsMjcuNzYzNzAxNSAxNjcuMzc3NjU5LDI2Ljg5ODA5NjQgMTcwLjA0NTkyMSwyNi44OTgwOTY0IEMxNzIuNjc4MjE5LDI2Ljg5ODA5NjQgMTc0Ljc5OTcsMjcuNzQwMzU1MyAxNzYuNDA4OTY3LDI5LjQyNjY2OSBDMTc4LjAxODkzMiwzMS4xMTI2MjM1IDE3OC44MjM3NCwzMy4xMjkwMTY1IDE3OC44MjM3NCwzNS40NzM2OTI5IEMxNzguODIzNzQsMzcuODkyNzE4IDE3Ny45NzM4OTEsNDAuMDA1MDEgMTc2LjI3NjI4Nyw0MS44MDk4NTA1IE0xODAuMzQ0MzIxLDI3Ljk1NzY1NDUgQzE3Ny45MDgyNDksMjQuNjUzOTg4MiAxNzQuNDA0MTA1LDIzIDE2OS44MzIyMzYsMjMgQzE2Ni4wOTc2NDgsMjMgMTYzLjAyNDcxMywyNC4yNjQyODYzIDE2MC42MTUxNzcsMjYuNzkxNzgxNCBDMTU4LjIwNDI0NCwyOS4zMTk5OTQ4IDE1NywzMi4zNjAzODc5IDE1NywzNS45MTQwMzgxIEMxNTcsMzkuNDEyNzM1IDE1OC4xNDYyODQsNDIuMzQ3ODkwNiAxNjAuNDQwOTQ3LDQ0LjcxOTg2NDEgQzE2Mi43MzU5NTksNDcuMDkxNDc4NCAxNjUuNTcyNTE1LDQ4LjI3NzgyNDMgMTY4Ljk1MTMxMiw0OC4yNzc4MjQzIEMxNzMuNzM2MTY2LDQ4LjI3NzgyNDMgMTc3LjMyMDYxNyw0Ni4wMjY4OTE5IDE3OS43MDQzMTUsNDEuNTI1NzQ1MyBDMTc5LjY1MDU0NSw0Ni42NjcyOTYgMTc4Ljc0NzYyNCw1MC43Mzg4NzI2IDE3Ni45OTY1OTksNTMuNzM5Mzk3NSBDMTc1LjI0NDE3Nyw1Ni43NDA2NDA4IDE3Mi42MzQyMjUsNTguMjM5ODI1OCAxNjkuMTY0OTk2LDU4LjIzOTgyNTggQzE2NS41OTEwMiw1OC4yMzk4MjU4IDE2My4wNDcwNTksNTYuNTExNDg4OSAxNjEuNTM0ODU4LDUzLjA1MzAxOTMgTDE1Ny44Nzk4NzcsNTQuNDI1Nzc1NyBDMTU5LjgwMDI0Myw1OS40NzUzNzgzIDE2My41NDQyNTksNjIgMTY5LjExMjYyMyw2MiBDMTczLjg3ODI3Myw2MiAxNzcuNTUyMTA5LDYwLjExOTAxNDkgMTgwLjEzMDk4Niw1Ni4zNTY2ODU3IEMxODIuNzA5ODYzLDUyLjU5Mzk5NzIgMTg0LDQ3LjY3Mjk3ODMgMTg0LDQxLjU5MzYyODggQzE4NCwzNS44MDgwODIzIDE4Mi43ODE0NCwzMS4yNjI3NTc1IDE4MC4zNDQzMjEsMjcuOTU3NjU0NSIgaWQ9IlNoYXBlIiBmaWxsPSIjRkZGRkZGIiBmaWxsLXJ1bGU9Im5vbnplcm8iPjwvcGF0aD4KICAgICAgICAgICAgPHBhdGggZD0iTTEyNC4zMzAyOTMsNjIuNzMyMDAzNiBDMTI2LjExMDM2Niw2NS45NDEzOTgxIDEyOC4zMzYxNzgsNjguOTYxNzY3NSAxMzEuMDA3NzMsNzEuNjk4NDQyNSBDMTQ3LjAxOTQxMiw4OC4xMDA1MTkyIDE3Mi45Nzk0NzgsODguMTAwNTE5MiAxODguOTkxMTYsNzEuNjk4NDQyNSBDMjA1LjAwMjk0Nyw1NS4yOTY0MzcxIDIwNS4wMDI5NDcsMjguNzAzNTY4MyAxODguOTkxMTYsMTIuMzAxNTYyOCBDMTcyLjk3OTQ3OCwtNC4xMDA1MjA5NSAxNDcuMDE5NDEyLC00LjEwMDUyMDk1IDEzMS4wMDc3MywxMi4zMDE1NjI4IEMxMjYuMjY5OTMzLDE3LjE1NDgyODggMTIyLjkzNDAxOCwyMi45MDAzNDY4IDEyMSwyOS4wMTAwOTQ3IEwxMjMuMTI2NCwyOS45Nzk5MDQ0IEMxMjQuOTM5NTY1LDI0LjEyNjU4MDcgMTI4LjExMTk2OSwxOC42MTkzOTIyIDEzMi42NDM2MDQsMTMuOTc3MzE3MyBDMTQ3Ljc1MTgyNywtMS40OTkyNzA5MiAxNzIuMjQ3MDgsLTEuNDk5MjcwOTIgMTg3LjM1NTI4NiwxMy45NzczMTczIEMyMDIuNDYzNTk3LDI5LjQ1MzgyIDIwMi40NjM1OTcsNTQuNTQ2MTc4MyAxODcuMzU1Mjg2LDcwLjAyMjY5MTYgQzE3Mi4yNDcwOCw4NS40OTkyNTQ5IDE0Ny43NTE4MjcsODUuNDk5MjU0OSAxMzIuNjQzNjA0LDcwLjAyMjY5MTYgQzEzMC4xNzg1NjIsNjcuNDk3NTYwMyAxMjguMTE1NzI1LDY0LjcxNjQ2NzggMTI2LjQ1NTA1OCw2MS43NjI5Mjc2IEwxMjQuMzMwMjkzLDYyLjczMjAwMzYgWiIgaWQ9IlNoYXBlIiBmaWxsPSIjNURBN0EzIiBmaWxsLXJ1bGU9Im5vbnplcm8iPjwvcGF0aD4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==\"","module.exports = \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSI2MjVweCIgdmlld0JveD0iMCAwIDI1IDYyNSIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KICAgIDwhLS0gR2VuZXJhdG9yOiBTa2V0Y2ggNjEuMiAoODk2NTMpIC0gaHR0cHM6Ly9za2V0Y2guY29tIC0tPgogICAgPHRpdGxlPkNpcmNsZSBPdmVybGF5PC90aXRsZT4KICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPgogICAgPGcgaWQ9IlBhZ2UtMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9Ik9wZW5KOS1Ib21lLUJsYW5rIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMTI4Ni4wMDAwMDAsIC0yNTExLjAwMDAwMCkiIGZpbGwtcnVsZT0ibm9uemVybyI+CiAgICAgICAgICAgIDxyZWN0IGlkPSJHcmF5LUJHIiBmaWxsPSIjNURBN0EzIiB4PSIwIiB5PSIxNDMxIiB3aWR0aD0iMTQ0MCIgaGVpZ2h0PSIxMjQyIj48L3JlY3Q+CiAgICAgICAgICAgIDxnIGlkPSJQYXJ0aWNpcGF0ZSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTg3LjAwMDAwMCwgMjUxMi4wMDAwMDApIj4KICAgICAgICAgICAgICAgIDxyZWN0IGlkPSJCbHVlLUJHIiBmaWxsPSIjMzQzNDM0IiB4PSI4NyIgeT0iMTU2IiB3aWR0aD0iMTQ0MCIgaGVpZ2h0PSIzNjUiPjwvcmVjdD4KICAgICAgICAgICAgICAgIDxnIGlkPSJHcm91cC0xMCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoODcuMDAwMDAwLCAwLjAwMDAwMCkiIGZpbGw9IiM1REE3QTMiPgogICAgICAgICAgICAgICAgICAgIDxyZWN0IGlkPSJSZWN0YW5nbGUtMiIgeD0iMCIgeT0iMTU1IiB3aWR0aD0iMTQ0MCIgaGVpZ2h0PSI1NjUiPjwvcmVjdD4KICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgIDxnIGlkPSJDaXJjbGUtT3ZlcmxheXMiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDc4LjAwMDAwMCwgMC4wMDAwMDApIiBvcGFjaXR5PSIwLjc1MDMzNDgyMSIgc3Ryb2tlPSIjRkZGRkZGIj4KICAgICAgICAgICAgICAgICAgICA8ZyBpZD0iQ2lyY2xlLU92ZXJsYXkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDc0My41MDAwMDAsIDMxMS41MDAwMDApIHJvdGF0ZSg5MC4wMDAwMDApIHRyYW5zbGF0ZSgtNzQzLjUwMDAwMCwgLTMxMS41MDAwMDApIHRyYW5zbGF0ZSg0MzIuMDAwMDAwLCAtNDMyLjAwMDAwMCkiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZyBpZD0iR3JvdXAtMTIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgaWQ9IkNpcmNsZS1PdmVybGF5Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBpZD0iU3RhY2tlZC1Hcm91cC04IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjAwMDAwMCwgMTY4LjAwMDAwMCkiIG9wYWNpdHk9IjAuNSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9Ik92YWwtMTYiIGN4PSI2MTEuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsLTE2IiBjeD0iNTg3LjUiIGN5PSIxMS41IiByPSIxMS41Ij48L2NpcmNsZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBpZD0iT3ZhbC0xNiIgY3g9IjU2My41IiBjeT0iMTEuNSIgcj0iMTEuNSI+PC9jaXJjbGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9Ik92YWwtMTYiIGN4PSI1MTUuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsLTE2IiBjeD0iNTM5LjUiIGN5PSIxMS41IiByPSIxMS41Ij48L2NpcmNsZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBpZD0iT3ZhbC0xNiIgY3g9IjQ2Ny41IiBjeT0iMTEuNSIgcj0iMTEuNSI+PC9jaXJjbGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9Ik92YWwtMTYiIGN4PSI0OTEuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsLTE2IiBjeD0iNDE5LjUiIGN5PSIxMS41IiByPSIxMS41Ij48L2NpcmNsZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBpZD0iT3ZhbC0xNiIgY3g9IjQ0My41IiBjeT0iMTEuNSIgcj0iMTEuNSI+PC9jaXJjbGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9Ik92YWwtMTYiIGN4PSIzNzEuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsLTE2IiBjeD0iMzk1LjUiIGN5PSIxMS41IiByPSIxMS41Ij48L2NpcmNsZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBpZD0iT3ZhbC0xNiIgY3g9IjMyMy41IiBjeT0iMTEuNSIgcj0iMTEuNSI+PC9jaXJjbGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9Ik92YWwtMTYiIGN4PSIzNDcuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsLTE2IiBjeD0iMjc1LjUiIGN5PSIxMS41IiByPSIxMS41Ij48L2NpcmNsZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBpZD0iT3ZhbC0xNiIgY3g9IjI5OS41IiBjeT0iMTEuNSIgcj0iMTEuNSI+PC9jaXJjbGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9Ik92YWwtMTYiIGN4PSIyMjcuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsLTE2IiBjeD0iMjUxLjUiIGN5PSIxMS41IiByPSIxMS41Ij48L2NpcmNsZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBpZD0iT3ZhbC0xNiIgY3g9IjE3OS41IiBjeT0iMTEuNSIgcj0iMTEuNSI+PC9jaXJjbGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9Ik92YWwtMTYiIGN4PSIyMDMuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsLTE2IiBjeD0iMTMxLjUiIGN5PSIxMS41IiByPSIxMS41Ij48L2NpcmNsZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBpZD0iT3ZhbC0xNiIgY3g9IjE1NS41IiBjeT0iMTEuNSIgcj0iMTEuNSI+PC9jaXJjbGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9Ik92YWwtMTYiIGN4PSI4My41IiBjeT0iMTEuNSIgcj0iMTEuNSI+PC9jaXJjbGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9Ik92YWwtMTYiIGN4PSIxMDcuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsLTE2IiBjeD0iMzUuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsLTE2IiBjeD0iNTkuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsLTE2IiBjeD0iMTEuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICA8cmVjdCBpZD0iUmVjdGFuZ2xlLTIyIiBmaWxsPSIjNURBN0EzIiB4PSI3MzQiIHk9IjUyMCIgd2lkdGg9Ijc5MyIgaGVpZ2h0PSIyIj48L3JlY3Q+CiAgICAgICAgICAgIDwvZz4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==\""],"sourceRoot":""}
\ No newline at end of file
diff --git a/component---src-pages-news-js-63e528f45eabc859ccac.js b/component---src-pages-news-js-63e528f45eabc859ccac.js
new file mode 100644
index 0000000..d7fecaa
--- /dev/null
+++ b/component---src-pages-news-js-63e528f45eabc859ccac.js
@@ -0,0 +1,2 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[4],{FJi0:function(e,t,r){"use strict";r.r(t),r.d(t,"query",(function(){return c}));r("tUrg");var o=r("Bl7J"),n=r("2A+t"),a=r("MXbp"),l=r("ZXdF");r("qKvR");t.default=function(e){var t=e.data,r=t.allWordpressPost.nodes;return Object(n.c)(o.a,{isHome:!1,title:"What's new with Eclipse OpenJ9",description:"Find out what's in the latest release; Learn about the technology directly from our developers."},Object(n.c)("section",{sx:{backgroundColor:"#F5F9FC",paddingX:"7%",paddingTop:"5%"}},Object(n.c)(a.b.h1,null,"What's new in the OpenJ9 project"),Object(n.c)("div",{sx:{paddingY:5,paddingX:"5%"}},Object(n.c)(a.b.p,null,"Find out what's happening at the project. Read about the highlights of our latest release. Catch the latest blog posts from our blog site; get top tips or deep dives about key features of OpenJ9 or simply read about experiences of working in the community."))),Object(n.c)("section",{sx:{paddingX:"7%",backgroundColor:"#F5F9FC"}},Object(n.c)("div",{sx:{display:"flex",flexWrap:"wrap",justifyContent:"space-between",backgroundColor:"white",paddingX:"5%",paddingTop:"5%",paddingBottom:"5%",borderRadius:"card"}},Object(n.c)("article",null,Object(n.c)(a.b.h2,null,"Latest release"),Object(n.c)("div",{sx:{wordWrap:"break-word",minHeight:["10rem","13rem","10rem","8rem"],marginBottom:"3rem",p:{margin:"1rem 0"},ul:{marginLeft:"5%",p:{margin:0}},a:{color:"#5DA7A3",textDecoration:"none","&:hover":{fontWeight:"bold",textDecoration:"none"}}},dangerouslySetInnerHTML:{__html:t.allMarkdownRemark.edges[0].node.html}}),Object(n.c)(l.a,{link:"https://www.eclipse.org/openj9/docs/openj9_releases/",primary:!1,target:!0},"New release info")))),Object(n.c)("section",{sx:{paddingX:"7%",paddingY:"5%",backgroundColor:"#F5F9FC"}},Object(n.c)(a.b.h2,{sx:{marginTop:"2rem"}},"Recent blogs"),Object(n.c)("div",{sx:{display:"grid",gridGap:["3rem","3rem","3rem","6rem"],gridTemplateColumns:["repeat(1, 1fr)","repeat(1, 1fr)","repeat(1, 1fr)","repeat(2, 1fr)"]}},Object(n.c)("div",{sx:{display:"flex",flexDirection:"column",justifyContent:"space-between"}},Object(n.c)("div",null,Object(n.c)(a.b.h3,null,Object(n.c)("a",{sx:{cursor:"pointer",color:"black",marginRight:"0.3rem",textDecoration:"none","&:hover":{color:"#5DA7A3",textDecoration:"none"}},href:t.allWordpressPost.nodes[0].link,rel:"noopener noreferrer",target:"_blank"}," ",t.allWordpressPost.nodes[0].title),Object(n.c)("i",{className:"fas fa-external-link-alt fa-xs"})),Object(n.c)(a.b.p,null,Object(n.c)("b",null,r[0].date))),Object(n.c)(a.b.p,{dangerouslySetInnerHTML:{__html:t.allWordpressPost.nodes[0].excerpt}})),Object(n.c)("div",{sx:{display:"flex",flexDirection:"column",justifyContent:"flex-start"}},Object(n.c)("div",null,Object(n.c)(a.b.h3,null,Object(n.c)("a",{sx:{cursor:"pointer",color:"black",textDecoration:"none",marginRight:"0.3rem","&:hover":{color:"#5DA7A3",textDecoration:"none"}},href:t.allWordpressPost.nodes[1].link,rel:"noopener noreferrer",target:"_blank"}," ",t.allWordpressPost.nodes[1].title),Object(n.c)("i",{className:"fas fa-external-link-alt fa-xs"})),Object(n.c)(a.b.p,null,Object(n.c)("b",null,t.allWordpressPost.nodes[1].date))),Object(n.c)(a.b.p,{dangerouslySetInnerHTML:{__html:t.allWordpressPost.nodes[1].excerpt}}))),Object(n.c)("div",{sx:{display:"flex",justifyContent:"center",paddingX:"5%"}},Object(n.c)(l.a,{link:"https://blog.openj9.org/",primary:!1,target:!0},"See all blogs"))))};var c="2198016199"}}]);
+//# sourceMappingURL=component---src-pages-news-js-63e528f45eabc859ccac.js.map
\ No newline at end of file
diff --git a/component---src-pages-news-js-63e528f45eabc859ccac.js.map b/component---src-pages-news-js-63e528f45eabc859ccac.js.map
new file mode 100644
index 0000000..ba8b3aa
--- /dev/null
+++ b/component---src-pages-news-js-63e528f45eabc859ccac.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["webpack:///./src/pages/news.js"],"names":["data","nodes","allWordpressPost","isHome","title","description","sx","backgroundColor","paddingX","paddingTop","h1","paddingY","p","display","flexWrap","justifyContent","paddingBottom","borderRadius","h2","wordWrap","minHeight","marginBottom","margin","ul","marginLeft","a","color","textDecoration","fontWeight","dangerouslySetInnerHTML","__html","allMarkdownRemark","edges","node","html","link","primary","target","marginTop","gridGap","gridTemplateColumns","flexDirection","h3","cursor","marginRight","href","rel","className","date","excerpt","query"],"mappings":"gNA8Be,sBAAa,IAAXA,EAAU,EAAVA,KACTC,EAAQD,EAAKE,iBAAiBD,MAEpC,OACA,YAAC,IAAD,CAAQE,QAAQ,EAAOC,MAAM,iCAAiCC,YAAY,mGACxE,uBAASC,GAAI,CAAEC,gBAAiB,UAAWC,SAAU,KAAMC,WAAW,OACpE,YAAC,IAAOC,GAAR,yCACA,mBACEJ,GAAI,CACFK,SAAU,EACVH,SAAU,OAGZ,YAAC,IAAOI,EAAR,2QAOJ,uBACEN,GAAI,CACFE,SAAU,KACVD,gBAAiB,YAIlB,mBACCD,GAAI,CACFO,QAAS,OACTC,SAAU,OACVC,eAAgB,gBAChBR,gBAAiB,QACjBC,SAAU,KACVC,WAAY,KACZO,cAAe,KACfC,aAAc,SAGd,2BACE,YAAC,IAAOC,GAAR,uBACA,mBAAKZ,GAAI,CACLa,SAAU,aACVC,UAAW,CAAC,QAAS,QAAS,QAAS,QACvCC,aAAc,OACbT,EAAG,CACFU,OAAQ,UAETC,GAAI,CACFC,WAAW,KACXZ,EAAE,CACDU,OAAO,IAGVG,EAAG,CACFC,MAAO,UACPC,eAAe,OACf,UAAW,CACTC,WAAY,OACZD,eAAe,UAGlBE,wBAAyB,CAACC,OAAU9B,EAAK+B,kBAAkBC,MAAM,GAAGC,KAAKC,QAG9E,YAAC,IAAD,CAAQC,KAAK,uDAAuDC,SAAS,EAAOC,QAAQ,GAA5F,uBAIN,uBACE/B,GAAI,CACFE,SAAU,KACVG,SAAU,KACVJ,gBAAiB,YAGnB,YAAC,IAAOW,GAAR,CAAWZ,GAAI,CAACgC,UAAU,SAA1B,gBACF,mBACEhC,GAAI,CACFO,QAAS,OACT0B,QAAQ,CAAC,OAAQ,OAAQ,OAAQ,QACjCC,oBAAoB,CAAC,iBAAkB,iBAAkB,iBAAkB,oBAI7E,mBAAKlC,GAAI,CACHO,QAAQ,OACR4B,cAAc,SACd1B,eAAe,kBAGnB,uBACE,YAAC,IAAO2B,GAAR,KACA,iBACEpC,GAAI,CACEqC,OAAQ,UACRjB,MAAO,QACPkB,YAAY,SACZjB,eAAgB,OAChB,UAAW,CACTD,MAAO,UACPC,eAAgB,SAGxBkB,KAAM7C,EAAKE,iBAAiBD,MAAM,GAAGkC,KAAMW,IAAI,sBAAsBT,OAAO,UAX9E,IAWyFrC,EAAKE,iBAAiBD,MAAM,GAAGG,OAE1H,iBAAG2C,UAAU,oCAEX,YAAC,IAAOnC,EAAR,KACE,qBAAIX,EAAM,GAAG+C,QAKjB,YAAC,IAAOpC,EAAR,CAAUiB,wBAAyB,CAACC,OAAO9B,EAAKE,iBAAiBD,MAAM,GAAGgD,YAE5E,mBACE3C,GAAI,CACFO,QAAQ,OACR4B,cAAc,SACd1B,eAAe,eAGjB,uBACA,YAAC,IAAO2B,GAAR,KACE,iBACEpC,GAAI,CAEFqC,OAAQ,UACRjB,MAAO,QACPC,eAAgB,OAChBiB,YAAY,SACZ,UAAW,CACTlB,MAAO,UACPC,eAAgB,SAGpBkB,KAAM7C,EAAKE,iBAAiBD,MAAM,GAAGkC,KAAMW,IAAI,sBAAsBT,OAAO,UAZ9E,IAYyFrC,EAAKE,iBAAiBD,MAAM,GAAGG,OAExH,iBAAG2C,UAAU,oCAEf,YAAC,IAAOnC,EAAR,KACE,qBAAIZ,EAAKE,iBAAiBD,MAAM,GAAG+C,QAIrC,YAAC,IAAOpC,EAAR,CAAUiB,wBAAyB,CAACC,OAAO9B,EAAKE,iBAAiBD,MAAM,GAAGgD,aAM9E,mBAAK3C,GAAI,CAACO,QAAS,OAAQE,eAAgB,SAAUP,SAAU,OAC7D,YAAC,IAAD,CAAQ2B,KAAK,2BAA2BC,SAAS,EAAOC,QAAQ,GAAhE,qBAOD,IAAMa,EAAK","file":"component---src-pages-news-js-63e528f45eabc859ccac.js","sourcesContent":["// Copyright (c) 2017, 2020 IBM Corp. and others\n\n// This program and the accompanying materials are made available under\n// the terms of the Eclipse Public License 2.0 which accompanies this\n// distribution and is available at https://www.eclipse.org/legal/epl-2.0/\n// or the Apache License, Version 2.0 which accompanies this distribution and\n// is available at https://www.apache.org/licenses/LICENSE-2.0.\n\n// This Source Code may also be made available under the following\n// Secondary Licenses when the conditions for such availability set\n// forth in the Eclipse Public License, v. 2.0 are satisfied: GNU\n// General Public License, version 2 with the GNU Classpath\n// Exception [1] and GNU General Public License, version 2 with the\n// OpenJDK Assembly Exception [2].\n\n// [1] https://www.gnu.org/software/classpath/license.html\n// [2] http://openjdk.java.net/legal/assembly-exception.html\n\n// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 OR LicenseRef-GPL-2.0 WITH Assembly-exception\n\n// The project website pages cannot be redistributed\n\nimport Layout from \"../components/layout\";\nimport { graphql } from 'gatsby'\n\n/** @jsx jsx */\nimport { jsx, Styled } from \"theme-ui\";\n\nimport Button from \"../components/button\";\n\nexport default ({data}) => {\n  const nodes = data.allWordpressPost.nodes;\n\n  return(\n  <Layout isHome={false} title=\"What's new with Eclipse OpenJ9\" description=\"Find out what's in the latest release; Learn about the technology directly from our developers.\">\n    <section sx={{ backgroundColor: \"#F5F9FC\", paddingX: \"7%\", paddingTop:\"5%\" }}>\n      <Styled.h1>What's new in the OpenJ9 project</Styled.h1>\n      <div\n        sx={{\n          paddingY: 5,\n          paddingX: \"5%\"\n        }}\n      >\n        <Styled.p>\n          Find out what's happening at the project. Read about the highlights of our latest release.\n          Catch the latest blog posts from our blog site; get top tips or deep dives about key features of OpenJ9 or simply read about experiences of working in the community.\n        </Styled.p>\n      </div>\n    </section>\n\n    <section\n      sx={{\n        paddingX: \"7%\",\n        backgroundColor: \"#F5F9FC\",\n\n      }}\n    >\n       <div\n        sx={{\n          display: \"flex\",\n          flexWrap: \"wrap\",\n          justifyContent: \"space-between\",\n          backgroundColor: \"white\",\n          paddingX: \"5%\",\n          paddingTop: \"5%\",\n          paddingBottom: \"5%\",\n          borderRadius: \"card\"        \n        }}\n      >\n          <article>\n            <Styled.h2>Latest release</Styled.h2>\n            <div sx={{\n                wordWrap: \"break-word\",\n                minHeight: [\"10rem\", \"13rem\", \"10rem\", \"8rem\"], \n                marginBottom: \"3rem\",\n                 p: {\n                  margin: \"1rem 0\"\n                 },\n                 ul: {\n                   marginLeft:\"5%\",\n                   p:{\n                    margin:0\n                   }\n                 },\n                 a: {\n                  color: \"#5DA7A3\",\n                  textDecoration:\"none\",\n                  \"&:hover\": {\n                    fontWeight: \"bold\",\n                    textDecoration:\"none\"\n                  }\n                 }\n              }} dangerouslySetInnerHTML={{__html: ((data.allMarkdownRemark.edges[0].node.html))}}>\n            </div>\n            \n            <Button link=\"https://www.eclipse.org/openj9/docs/openj9_releases/\" primary={false} target={true}>New release info</Button>\n          </article>\n        </div>\n      </section>\n      <section\n        sx={{\n          paddingX: \"7%\",\n          paddingY: \"5%\",   \n          backgroundColor: \"#F5F9FC\",\n        }}\n      >\n        <Styled.h2 sx={{marginTop:\"2rem\"}}>Recent blogs</Styled.h2>\n      <div\n        sx={{\n          display: \"grid\",\n          gridGap:['3rem', '3rem', '3rem', '6rem'],\n          gridTemplateColumns:['repeat(1, 1fr)', 'repeat(1, 1fr)', 'repeat(1, 1fr)', 'repeat(2, 1fr)'],\n        }}\n      >\n      \n        <div sx={{\n              display:'flex',\n              flexDirection:'column',\n              justifyContent:'space-between'\n            }}\n        >\n          <div>\n            <Styled.h3>\n            <a\n              sx={{\n                    cursor: \"pointer\",\n                    color: \"black\",\n                    marginRight:'0.3rem',\n                    textDecoration: \"none\",\n                    \"&:hover\": {\n                      color: \"#5DA7A3\",\n                      textDecoration: \"none\"\n                    }\n              }}\n              href={data.allWordpressPost.nodes[0].link} rel=\"noopener noreferrer\" target=\"_blank\"> {data.allWordpressPost.nodes[0].title}\n          </a>\n          <i className=\"fas fa-external-link-alt fa-xs\"></i>\n            </Styled.h3>\n            <Styled.p>\n              <b>{nodes[0].date}</b>\n            </Styled.p>\n          </div>\n          \n\n          <Styled.p dangerouslySetInnerHTML={{__html:data.allWordpressPost.nodes[0].excerpt}}/>\n          </div>\n        <div\n          sx={{\n            display:'flex',\n            flexDirection:'column',\n            justifyContent:'flex-start',\n          }}\n        >\n          <div>\n          <Styled.h3>\n            <a \n              sx={{\n\n                cursor: \"pointer\",\n                color: \"black\",\n                textDecoration: \"none\",\n                marginRight:\"0.3rem\",\n                \"&:hover\": {\n                  color: \"#5DA7A3\",\n                  textDecoration: \"none\"\n                }\n              }}\n              href={data.allWordpressPost.nodes[1].link} rel=\"noopener noreferrer\" target=\"_blank\"> {data.allWordpressPost.nodes[1].title}\n            </a>\n            <i className=\"fas fa-external-link-alt fa-xs\"></i>\n          </Styled.h3>\n          <Styled.p >\n            <b>{data.allWordpressPost.nodes[1].date}</b>\n          </Styled.p>\n          </div>\n         \n          <Styled.p dangerouslySetInnerHTML={{__html:data.allWordpressPost.nodes[1].excerpt}}/>    \n        </div>\n  \n        \n      </div>\n      \n      <div sx={{display: \"flex\", justifyContent: \"center\", paddingX: \"5%\",}}>\n        <Button link=\"https://blog.openj9.org/\" primary={false} target={true}>See all blogs</Button>\n      </div>\n      \n    </section>\n  </Layout>\n  )}\n\nexport const query = graphql`\n{\n  allWordpressPost(limit: 2) {\n    nodes {\n      title\n      date(formatString:\"DD MMMM YYYY\")\n      excerpt\n      link\n    }\n  },\n  allMarkdownRemark {\n    edges {\n      node {\n        html\n      }\n    }\n  }\n}`\n"],"sourceRoot":""}
\ No newline at end of file
diff --git a/component---src-pages-news-js-771033deb1dca3596266.js b/component---src-pages-news-js-771033deb1dca3596266.js
deleted file mode 100644
index c860056..0000000
--- a/component---src-pages-news-js-771033deb1dca3596266.js
+++ /dev/null
@@ -1,2 +0,0 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[4],{FJi0:function(e,t,r){"use strict";r.r(t),r.d(t,"query",(function(){return c}));r("tUrg");var o=r("Bl7J"),n=r("2A+t"),a=r("MXbp"),i=r("ZXdF");r("qKvR");t.default=function(e){var t=e.data,r=t.allWordpressPost.nodes;return Object(n.c)(o.a,{isHome:!1,title:"What's new with Eclipse OpenJ9",description:"Find out what's in the latest release; Learn about the technology directly from our developers."},Object(n.c)("div",{sx:{backgroundColor:"#F5F9FC",paddingX:"10%",paddingTop:"5%"}},Object(n.c)(a.b.h1,null,"What's new in the OpenJ9 project"),Object(n.c)("div",{sx:{paddingY:5,paddingX:"5%"}},Object(n.c)(a.b.p,null,"Find out what's happening at the project. Read about the highlights of our latest release. Catch the latest blog posts from our blog site; get top tips or deep dives about key features of OpenJ9 or simply read about experiences of working in the community."))),Object(n.c)("div",{sx:{paddingX:"10%",paddingBottom:"3%",backgroundColor:"#F5F9FC"}},Object(n.c)("div",{sx:{display:"flex",flexWrap:"wrap",justifyContent:"space-between",backgroundColor:"white",paddingX:"5%",paddingTop:"5%",paddingBottom:"5%",borderRadius:"card"}},Object(n.c)("article",{sx:{width:"100%"}},Object(n.c)(a.b.h2,null,"Latest release"),Object(n.c)("div",{sx:{wordWrap:"break-word",minHeight:["10rem","13rem","10rem","8rem"],marginBottom:"3rem",p:{margin:"1rem 0"},ul:{marginLeft:"5%",p:{margin:0}},a:{color:"#5DA7A3",textDecoration:"none","&:hover":{fontWeight:"bold",textDecoration:"none"}}},dangerouslySetInnerHTML:{__html:t.allMarkdownRemark.edges[0].node.html}}),Object(n.c)(i.a,{link:"https://www.eclipse.org/openj9/docs/openj9_releases/",primary:!1,target:!0},"New release info")))),Object(n.c)("div",{sx:{paddingX:"5%",paddingBottom:5,backgroundColor:"#F5F9FC"}},Object(n.c)("div",{sx:{display:"flex",flexDirection:"column",paddingX:"10%",paddingY:"5%"}},Object(n.c)(a.b.h2,null,"Recent blogs"),Object(n.c)("div",{sx:{display:"flex",flexWrap:"wrap",justifyContent:"space-between"}},Object(n.c)("article",{sx:{flex:"1 1 30%",minWidth:["250px","350px","400px","500px"]}},Object(n.c)(a.b.h4,{sx:{width:"90%",margin:"2rem 0",height:["2rem","1rem","1rem","1rem"]}},Object(n.c)("a",{sx:{fontSize:"1.24rem",cursor:"pointer",color:"black",textDecoration:"none",marginRight:"0.3rem","&:hover":{color:"#5DA7A3",textDecoration:"none"}},href:t.allWordpressPost.nodes[0].link,rel:"noopener noreferrer",target:"_blank"}," ",t.allWordpressPost.nodes[0].title),Object(n.c)("i",{className:"fas fa-external-link-alt fa-xs"})),Object(n.c)(a.b.p,{sx:{width:"90%",marginBottom:"1rem"}},Object(n.c)("b",null,r[0].date)),Object(n.c)(a.b.p,{sx:{width:"90%"},dangerouslySetInnerHTML:{__html:t.allWordpressPost.nodes[0].excerpt}})),Object(n.c)("article",{sx:{flex:"1 1 30%",minWidth:["250px","350px","400px","500px"]}},Object(n.c)(a.b.h4,{sx:{width:"90%",margin:"2rem 0",height:["2rem","1rem","1rem","1rem"],color:"black",textDecoration:"none"}},Object(n.c)("a",{sx:{fontSize:"1.24rem",cursor:"pointer",color:"black",textDecoration:"none",marginRight:"0.3rem","&:hover":{color:"#5DA7A3",textDecoration:"none"}},href:t.allWordpressPost.nodes[1].link,rel:"noopener noreferrer",target:"_blank"}," ",t.allWordpressPost.nodes[1].title),Object(n.c)("i",{className:"fas fa-external-link-alt fa-xs"})),Object(n.c)(a.b.p,{sx:{width:"90%",marginBottom:"1rem"}},Object(n.c)("b",null,t.allWordpressPost.nodes[1].date)),Object(n.c)(a.b.p,{sx:{width:"90%",marginBottom:"1rem"},dangerouslySetInnerHTML:{__html:t.allWordpressPost.nodes[1].excerpt}})))),Object(n.c)("div",{sx:{display:"flex",justifyContent:"center",paddingX:"5%"}},Object(n.c)(i.a,{link:"https://blog.openj9.org/",primary:!1,target:!0},"See all blogs"))))};var c="2198016199"}}]);
-//# sourceMappingURL=component---src-pages-news-js-771033deb1dca3596266.js.map
\ No newline at end of file
diff --git a/component---src-pages-news-js-771033deb1dca3596266.js.map b/component---src-pages-news-js-771033deb1dca3596266.js.map
deleted file mode 100644
index 22ba589..0000000
--- a/component---src-pages-news-js-771033deb1dca3596266.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"sources":["webpack:///./src/pages/news.js"],"names":["data","nodes","allWordpressPost","isHome","title","description","sx","backgroundColor","paddingX","paddingTop","h1","paddingY","p","paddingBottom","display","flexWrap","justifyContent","borderRadius","width","h2","wordWrap","minHeight","marginBottom","margin","ul","marginLeft","a","color","textDecoration","fontWeight","dangerouslySetInnerHTML","__html","allMarkdownRemark","edges","node","html","link","primary","target","flexDirection","flex","minWidth","h4","height","fontSize","cursor","marginRight","href","rel","className","date","excerpt","query"],"mappings":"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","file":"component---src-pages-news-js-771033deb1dca3596266.js","sourcesContent":["// Copyright (c) 2017, 2020 IBM Corp. and others\n\n// This program and the accompanying materials are made available under\n// the terms of the Eclipse Public License 2.0 which accompanies this\n// distribution and is available at https://www.eclipse.org/legal/epl-2.0/\n// or the Apache License, Version 2.0 which accompanies this distribution and\n// is available at https://www.apache.org/licenses/LICENSE-2.0.\n\n// This Source Code may also be made available under the following\n// Secondary Licenses when the conditions for such availability set\n// forth in the Eclipse Public License, v. 2.0 are satisfied: GNU\n// General Public License, version 2 with the GNU Classpath\n// Exception [1] and GNU General Public License, version 2 with the\n// OpenJDK Assembly Exception [2].\n\n// [1] https://www.gnu.org/software/classpath/license.html\n// [2] http://openjdk.java.net/legal/assembly-exception.html\n\n// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 OR LicenseRef-GPL-2.0 WITH Assembly-exception\n\n// The project website pages cannot be redistributed\n\nimport Layout from \"../components/layout\";\nimport { graphql } from 'gatsby'\n\n/** @jsx jsx */\nimport { jsx, Styled } from \"theme-ui\";\n\nimport Button from \"../components/button\";\n\nexport default ({data}) => {\n  const nodes = data.allWordpressPost.nodes;\n\n  return(\n  <Layout isHome={false} title=\"What's new with Eclipse OpenJ9\" description=\"Find out what's in the latest release; Learn about the technology directly from our developers.\">\n    <div sx={{ backgroundColor: \"#F5F9FC\", paddingX: \"10%\", paddingTop:\"5%\" }}>\n      <Styled.h1>What's new in the OpenJ9 project</Styled.h1>\n      <div\n        sx={{\n          paddingY: 5,\n          paddingX: \"5%\"\n        }}\n      >\n        <Styled.p>\n          Find out what's happening at the project. Read about the highlights of our latest release.\n          Catch the latest blog posts from our blog site; get top tips or deep dives about key features of OpenJ9 or simply read about experiences of working in the community.\n        </Styled.p>\n      </div>\n    </div>\n\n    <div\n      sx={{\n        paddingX: \"10%\",\n        paddingBottom: \"3%\",\n        backgroundColor: \"#F5F9FC\",\n\n      }}\n    >\n       <div\n        sx={{\n          display: \"flex\",\n          flexWrap: \"wrap\",\n          justifyContent: \"space-between\",\n          backgroundColor: \"white\",\n          paddingX: \"5%\",\n          paddingTop: \"5%\",\n          paddingBottom: \"5%\",\n          borderRadius: \"card\"        \n        }}\n      >\n          <article sx={{width:\"100%\"}}>\n            <Styled.h2>Latest release</Styled.h2>\n            <div sx={{\n                wordWrap: \"break-word\",\n                minHeight: [\"10rem\", \"13rem\", \"10rem\", \"8rem\"], \n                marginBottom: \"3rem\",\n                 p: {\n                  margin: \"1rem 0\"\n                 },\n                 ul: {\n                   marginLeft:\"5%\",\n                   p:{\n                    margin:0\n                   }\n                 },\n                 a: {\n                  color: \"#5DA7A3\",\n                  textDecoration:\"none\",\n                  \"&:hover\": {\n                    fontWeight: \"bold\",\n                    textDecoration:\"none\"\n                  }\n                 }\n              }} dangerouslySetInnerHTML={{__html: ((data.allMarkdownRemark.edges[0].node.html))}}>\n            </div>\n            \n            <Button link=\"https://www.eclipse.org/openj9/docs/openj9_releases/\" primary={false} target={true}>New release info</Button>\n          </article>\n        </div>\n      </div>\n      <div\n      sx={{\n        paddingX: \"5%\",\n        paddingBottom: 5,\n        backgroundColor: \"#F5F9FC\",\n      }}\n    >\n      <div\n        sx={{\n          display: \"flex\",\n          flexDirection: \"column\",\n          paddingX: \"10%\",\n          paddingY: \"5%\",   \n        }}\n      >\n        <Styled.h2>Recent blogs</Styled.h2>\n        <div sx={{display: \"flex\", flexWrap: \"wrap\", justifyContent: \"space-between\"}}>\n          <article\n          sx={{\n            flex: \"1 1 30%\",\n            minWidth: [\"250px\", \"350px\", \"400px\", \"500px\"]\n          }}\n        >\n          \n          <Styled.h4 sx={{width:\"90%\", margin: \"2rem 0\", height: [\"2rem\", \"1rem\", \"1rem\", \"1rem\"]}}>\n          <a\n            sx={{\n                  fontSize:\"1.24rem\",\n                  cursor: \"pointer\",\n                  color: \"black\",\n                  textDecoration: \"none\",\n                  marginRight:\"0.3rem\",\n                  \"&:hover\": {\n                    color: \"#5DA7A3\",\n                    textDecoration: \"none\"\n                  }\n            }}\n            href={data.allWordpressPost.nodes[0].link} rel=\"noopener noreferrer\" target=\"_blank\"> {data.allWordpressPost.nodes[0].title}\n         </a>\n         <i className=\"fas fa-external-link-alt fa-xs\"></i>\n          </Styled.h4>\n          <Styled.p sx={{width:\"90%\", marginBottom: \"1rem\"}}>\n            <b>{nodes[0].date}</b>\n          </Styled.p>\n\n          <Styled.p sx={{width:\"90%\"}} dangerouslySetInnerHTML={{__html:data.allWordpressPost.nodes[0].excerpt}}/>\n        </article>\n        <article\n          sx={{\n            flex: \"1 1 30%\",\n            minWidth: [\"250px\", \"350px\", \"400px\", \"500px\"],\n          }}\n        >\n          <Styled.h4 sx={{width:\"90%\", margin: \"2rem 0\", height: [\"2rem\", \"1rem\", \"1rem\", \"1rem\"], color: \"black\", textDecoration: \"none\"}}>\n            <a \n              sx={{\n                fontSize:\"1.24rem\",\n                cursor: \"pointer\",\n                color: \"black\",\n                textDecoration: \"none\",\n                marginRight:\"0.3rem\",\n                \"&:hover\": {\n                  color: \"#5DA7A3\",\n                  textDecoration: \"none\"\n                }\n              }}\n              href={data.allWordpressPost.nodes[1].link} rel=\"noopener noreferrer\" target=\"_blank\"> {data.allWordpressPost.nodes[1].title}\n            </a>\n            <i className=\"fas fa-external-link-alt fa-xs\"></i>\n          </Styled.h4>\n          <Styled.p sx={{width:\"90%\", marginBottom: \"1rem\"}}>\n            <b>{data.allWordpressPost.nodes[1].date}</b>\n          </Styled.p>\n          <Styled.p sx={{width:\"90%\", marginBottom: \"1rem\"}} dangerouslySetInnerHTML={{__html:data.allWordpressPost.nodes[1].excerpt}}/>    \n        </article>\n        </div>\n        \n      </div>\n      \n      <div sx={{display: \"flex\", justifyContent: \"center\", paddingX: \"5%\",}}>\n        <Button link=\"https://blog.openj9.org/\" primary={false} target={true}>See all blogs</Button>\n      </div>\n      \n    </div>\n  </Layout>\n  )}\n\nexport const query = graphql`\n{\n  allWordpressPost(limit: 2) {\n    nodes {\n      title\n      date(formatString:\"DD MMMM YYYY\")\n      excerpt\n      link\n    }\n  },\n  allMarkdownRemark {\n    edges {\n      node {\n        html\n      }\n    }\n  }\n}`\n"],"sourceRoot":""}
\ No newline at end of file
diff --git a/component---src-pages-performance-js-31be57d58d932a4860aa.js.map b/component---src-pages-performance-js-31be57d58d932a4860aa.js.map
deleted file mode 100644
index dd16cd2..0000000
--- a/component---src-pages-performance-js-31be57d58d932a4860aa.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"sources":["webpack:///./node_modules/lodash/_listCacheHas.js","webpack:///./node_modules/lodash/property.js","webpack:///./node_modules/lodash/isSymbol.js","webpack:///./node_modules/lodash/isArguments.js","webpack:///./node_modules/lodash/_stackSet.js","webpack:///./node_modules/lodash/stubArray.js","webpack:///./node_modules/lodash/_SetCache.js","webpack:///./node_modules/lodash/_coreJsData.js","webpack:///./node_modules/lodash/_setCacheHas.js","webpack:///./node_modules/lodash/_toSource.js","webpack:///./node_modules/lodash/_basePropertyDeep.js","webpack:///./node_modules/lodash/memoize.js","webpack:///./node_modules/lodash/_Hash.js","webpack:///./node_modules/lodash/_hasPath.js","webpack:///./node_modules/lodash/_castPath.js","webpack:///./node_modules/lodash/_isPrototype.js","webpack:///./node_modules/lodash/_baseProperty.js","webpack:///./node_modules/lodash/_stackClear.js","webpack:///./node_modules/lodash/keys.js","webpack:///./node_modules/lodash/_mapToArray.js","webpack:///./node_modules/process/browser.js","webpack:///./node_modules/lodash/_toKey.js","webpack:///./node_modules/lodash/_isKey.js","webpack:///./node_modules/lodash/_baseKeys.js","webpack:///./node_modules/lodash/_getRawTag.js","webpack:///./node_modules/core-js/modules/es6.date.to-json.js","webpack:///./node_modules/lodash/stubFalse.js","webpack:///./node_modules/lodash/_arrayPush.js","webpack:///./node_modules/lodash/_isStrictComparable.js","webpack:///./node_modules/lodash/_getNative.js","webpack:///./node_modules/core-js/modules/es6.math.sign.js","webpack:///./node_modules/lodash/isBuffer.js","webpack:///./node_modules/core-js/modules/es6.object.freeze.js","webpack:///./node_modules/lodash/_isMasked.js","webpack:///./node_modules/lodash/_isKeyable.js","webpack:///./node_modules/lodash/isObjectLike.js","webpack:///./node_modules/core-js/modules/es6.object.is-extensible.js","webpack:///./node_modules/lodash/_baseMatchesProperty.js","webpack:///./node_modules/lodash/_stringToPath.js","webpack:///./node_modules/lodash/isObject.js","webpack:///./node_modules/lodash/_mapCacheSet.js","webpack:///./node_modules/lodash/_equalByTag.js","webpack:///./node_modules/lodash/_Promise.js","webpack:///./node_modules/lodash/_hashDelete.js","webpack:///./node_modules/lodash/_memoizeCapped.js","webpack:///./node_modules/core-js/modules/es6.array.find-index.js","webpack:///./node_modules/lodash/_matchesStrictComparable.js","webpack:///./node_modules/lodash/_baseForOwn.js","webpack:///./node_modules/lodash/_baseAggregator.js","webpack:///./node_modules/lodash/_Uint8Array.js","webpack:///./node_modules/lodash/_mapCacheGet.js","webpack:///./node_modules/lodash/_hashSet.js","webpack:///./node_modules/lodash/_baseIsArguments.js","webpack:///./node_modules/lodash/_baseHasIn.js","webpack:///./node_modules/lodash/_listCacheClear.js","webpack:///./node_modules/lodash/_objectToString.js","webpack:///./node_modules/lodash/_root.js","webpack:///./node_modules/lodash/_stackDelete.js","webpack:///./node_modules/lodash/_arrayFilter.js","webpack:///./node_modules/core-js/modules/es6.number.epsilon.js","webpack:///./node_modules/lodash/isArrayLike.js","webpack:///./node_modules/chart.js/dist/Chart.js","webpack:///./node_modules/lodash/_getSymbols.js","webpack:///./node_modules/lodash/_baseIsNative.js","webpack:///./node_modules/lodash/_getValue.js","webpack:///./node_modules/core-js/modules/_array-fill.js","webpack:///./node_modules/lodash/_baseGetTag.js","webpack:///./node_modules/lodash/_defineProperty.js","webpack:///./node_modules/lodash/_getMatchData.js","webpack:///./node_modules/lodash/_WeakMap.js","webpack:///./node_modules/lodash/keyBy.js","webpack:///./node_modules/lodash/_getMapData.js","webpack:///./node_modules/lodash/_arraySome.js","webpack:///./node_modules/lodash/_getTag.js","webpack:///./node_modules/lodash/_baseEach.js","webpack:///./node_modules/lodash/_hashClear.js","webpack:///./node_modules/react-chartjs-2/es/index.js","webpack:///./node_modules/core-js/modules/_object-to-array.js","webpack:///./node_modules/lodash/_createAggregator.js","webpack:///./node_modules/lodash/_baseTimes.js","webpack:///./node_modules/lodash/_nativeKeys.js","webpack:///./node_modules/lodash/_stackHas.js","webpack:///./node_modules/lodash/_freeGlobal.js","webpack:///./node_modules/lodash/_ListCache.js","webpack:///./node_modules/lodash/isEqual.js","webpack:///./node_modules/lodash/_nativeCreate.js","webpack:///(webpack)/buildin/module.js","webpack:///./node_modules/lodash/isArray.js","webpack:///./node_modules/lodash/_listCacheSet.js","webpack:///./node_modules/lodash/_baseMatches.js","webpack:///./node_modules/lodash/_baseGet.js","webpack:///./node_modules/core-js/modules/es6.object.is-frozen.js","webpack:///./node_modules/lodash/_listCacheDelete.js","webpack:///./node_modules/lodash/_arrayLikeKeys.js","webpack:///./node_modules/core-js/modules/es6.array.fill.js","webpack:///./node_modules/lodash/isTypedArray.js","webpack:///./node_modules/lodash/_baseFor.js","webpack:///./node_modules/lodash/_baseIsTypedArray.js","webpack:///./node_modules/lodash/toString.js","webpack:///./node_modules/lodash/_MapCache.js","webpack:///./node_modules/lodash/_baseIsEqualDeep.js","webpack:///./node_modules/core-js/modules/es6.math.log10.js","webpack:///./node_modules/lodash/_arrayMap.js","webpack:///./node_modules/lodash/_Map.js","webpack:///./node_modules/lodash/_hashHas.js","webpack:///./node_modules/lodash/_mapCacheClear.js","webpack:///./node_modules/lodash/_baseGetAllKeys.js","webpack:///./node_modules/lodash/_Stack.js","webpack:///./node_modules/lodash/_setCacheAdd.js","webpack:///./node_modules/lodash/_stackGet.js","webpack:///./node_modules/core-js/modules/es6.number.max-safe-integer.js","webpack:///./node_modules/lodash/hasIn.js","webpack:///./node_modules/core-js/modules/es7.object.values.js","webpack:///./node_modules/lodash/_baseAssignValue.js","webpack:///./node_modules/core-js/modules/es6.date.to-iso-string.js","webpack:///./node_modules/core-js/modules/_date-to-iso-string.js","webpack:///./node_modules/lodash/_mapCacheDelete.js","webpack:///./node_modules/lodash/_overArg.js","webpack:///./node_modules/core-js/modules/es6.number.min-safe-integer.js","webpack:///./node_modules/lodash/_createBaseEach.js","webpack:///./node_modules/lodash/isFunction.js","webpack:///./node_modules/lodash/eq.js","webpack:///./node_modules/lodash/_baseIsMatch.js","webpack:///./node_modules/core-js/modules/_math-sign.js","webpack:///./node_modules/lodash/_createBaseFor.js","webpack:///./node_modules/lodash/_nodeUtil.js","webpack:///./node_modules/lodash/get.js","webpack:///./node_modules/lodash/_Symbol.js","webpack:///./node_modules/lodash/_arrayAggregator.js","webpack:///./node_modules/lodash/_equalArrays.js","webpack:///./src/components/lineChart.js","webpack:///./src/components/barChart.js","webpack:///./src/components/performanceCard.js","webpack:///./src/pages/performance.js","webpack:///./node_modules/lodash/_mapCacheHas.js","webpack:///./node_modules/lodash/_getAllKeys.js","webpack:///./node_modules/lodash/_setToArray.js","webpack:///./node_modules/lodash/_baseUnary.js","webpack:///./node_modules/lodash/_equalObjects.js","webpack:///./node_modules/lodash/isLength.js","webpack:///./node_modules/lodash/_listCacheGet.js","webpack:///./node_modules/lodash/_DataView.js","webpack:///./node_modules/lodash/_hashGet.js","webpack:///./node_modules/lodash/_baseIteratee.js","webpack:///./node_modules/lodash/_baseIsEqual.js","webpack:///./node_modules/lodash/_isIndex.js","webpack:///./node_modules/moment/moment.js","webpack:///./node_modules/lodash/_cacheHas.js","webpack:///./node_modules/core-js/modules/es6.number.constructor.js","webpack:///./node_modules/lodash/_assocIndexOf.js","webpack:///./node_modules/lodash/_Set.js","webpack:///./node_modules/lodash/identity.js","webpack:///./node_modules/lodash/_baseToString.js"],"names":["assocIndexOf","module","exports","key","this","__data__","baseProperty","basePropertyDeep","isKey","toKey","path","baseGetTag","isObjectLike","value","baseIsArguments","objectProto","Object","prototype","hasOwnProperty","propertyIsEnumerable","isArguments","arguments","call","ListCache","Map","MapCache","data","pairs","length","LARGE_ARRAY_SIZE","push","size","set","setCacheAdd","setCacheHas","SetCache","values","index","add","has","coreJsData","funcToString","Function","toString","func","e","baseGet","object","memoize","resolver","TypeError","memoized","args","apply","cache","get","result","Cache","hashClear","hashDelete","hashGet","hashHas","hashSet","Hash","entries","clear","entry","castPath","isArray","isIndex","isLength","hasFunc","stringToPath","Ctor","constructor","undefined","arrayLikeKeys","baseKeys","isArrayLike","map","Array","forEach","cachedSetTimeout","cachedClearTimeout","process","defaultSetTimout","Error","defaultClearTimeout","runTimeout","fun","setTimeout","clearTimeout","currentQueue","queue","draining","queueIndex","cleanUpNextTick","concat","drainQueue","timeout","len","run","marker","runClearTimeout","Item","array","noop","nextTick","i","title","browser","env","argv","version","versions","on","addListener","once","off","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","listeners","name","binding","cwd","chdir","dir","umask","isSymbol","reIsDeepProp","reIsPlainProp","type","test","isPrototype","nativeKeys","Symbol","nativeObjectToString","symToStringTag","toStringTag","isOwn","tag","unmasked","$export","toObject","toPrimitive","P","F","Date","NaN","toJSON","toISOString","O","pv","isFinite","offset","isObject","baseIsNative","getValue","S","sign","stubFalse","freeExports","nodeType","freeModule","Buffer","root","isBuffer","meta","onFreeze","$freeze","it","uid","maskSrcKey","exec","keys","IE_PROTO","$isExtensible","baseIsEqual","hasIn","isStrictComparable","matchesStrictComparable","srcValue","objValue","COMPARE_PARTIAL_FLAG","memoizeCapped","rePropName","reEscapeChar","string","charCodeAt","replace","match","number","quote","subString","getMapData","Uint8Array","eq","equalArrays","mapToArray","setToArray","symbolProto","symbolValueOf","valueOf","other","bitmask","customizer","equalFunc","stack","byteLength","byteOffset","buffer","message","convert","isPartial","stacked","Promise","getNative","$find","KEY","forced","findIndex","callbackfn","baseFor","iteratee","baseEach","collection","setter","accumulator","nativeCreate","freeGlobal","freeSelf","self","predicate","resIndex","EPSILON","Math","pow","isFunction","moment","colorName","conversions","fn","createCommonjsModule","reverseKeywords","rgb","channels","labels","hsl","hsv","hwb","cmyk","xyz","lab","lch","hex","keyword","ansi16","ansi256","hcg","apple","gray","model","defineProperty","h","l","r","g","b","min","max","delta","rdif","gdif","bdif","s","v","diff","diffc","c","k","reversed","currentClosestKeyword","x","y","currentClosestDistance","Infinity","distance","z","t1","t2","t3","val","smin","lmin","hi","floor","f","p","q","t","sl","vmin","n","wh","bl","ratio","m","y2","x2","z2","a","atan2","PI","sqrt","hr","cos","sin","round","ansi","color","mult","rem","toUpperCase","substring","colorString","split","_char","join","integer","parseInt","hue","chroma","mg","pure","w","deriveBFS","fromModel","graph","models","parent","buildGraph","current","pop","adjacents","adjacent","node","unshift","link","from","to","wrapConversion","toModel","cur","conversion","routes","route","wrappedFn","slice","wrapRounded","raw","wrapRaw","colorConvert","colorName$1","getRgba","getHsla","getRgb","rgba","getHsl","hsla","getHwb","getAlpha","vals","hexString","hexDouble","rgbString","alpha","rgbaString","percentString","percentaString","hslString","hslaString","hwbString","reverseNames","hexAlpha","parseFloat","scale","isNaN","num","str","Color","obj","valid","setValues","red","lightness","whiteness","cyan","isValid","setSpace","rgbArray","hslArray","hsvArray","hwbArray","cmykArray","rgbaArray","hslaArray","setChannel","green","blue","saturation","saturationv","blackness","magenta","yellow","black","rgbNumber","luminosity","lum","chan","contrast","color2","lum1","lum2","level","contrastRatio","dark","light","negate","lighten","darken","saturate","desaturate","whiten","blacken","greyscale","clearer","opaquer","rotate","degrees","mix","mixinColor","weight","w1","w2","clone","source","target","prop","console","error","spaces","maxes","getValues","space","charAt","capped","chans","sname","svalues","window","id","chartjsColor","helpers","isNullOrUndef","substr","_isFinite","_x","Number","valueOrDefault","defaultValue","valueAtIndexOrDefault","callback","thisArg","each","loopable","reverse","arrayEquals","a0","a1","ilen","v0","v1","klen","_merger","options","tval","sval","merge","_mergerIf","mergeIf","sources","merger","extend","assign","dst","src","inherits","extensions","me","ChartElement","Surrogate","__super__","_deprecated","scope","previous","warn","helpers_core","callCallback","indexOf","item","fromIndex","getValueOrDefault","getValueAtIndexOrDefault","effects","linear","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","easeInSine","easeOutSine","easeInOutSine","easeInExpo","easeOutExpo","easeInOutExpo","easeInCirc","easeOutCirc","easeInOutCirc","easeInElastic","asin","easeOutElastic","easeInOutElastic","easeInBack","easeOutBack","easeInOutBack","easeInBounce","easeOutBounce","easeInOutBounce","helpers_easing","easingEffects","RAD_PER_DEG","DOUBLE_PI","HALF_PI","QUARTER_PI","TWO_THIRDS_PI","exports$1","chart","ctx","clearRect","width","height","roundedRect","radius","left","top","right","bottom","moveTo","arc","closePath","rect","drawPoint","style","rotation","xOffset","yOffset","cornerRadius","rad","save","translate","drawImage","restore","beginPath","lineTo","SQRT1_2","fill","stroke","_isPointInArea","point","area","clipArea","clip","unclipArea","flip","stepped","steppedLine","midpoint","tension","bezierCurveTo","controlPointPreviousX","controlPointNextX","controlPointPreviousY","controlPointNextY","helpers_canvas","drawRoundedRectangle","defaults","_set","defaultColor","defaultFontColor","defaultFontFamily","defaultFontSize","defaultFontStyle","defaultLineHeight","showLines","core_defaults","helpers_options","toLineHeight","matches","toPadding","_parseFont","globalDefaults","global","fontSize","font","family","fontFamily","lineHeight","fontStyle","toFontString","resolve","inputs","context","info","cacheable","exports$2","_factorize","sort","log10","exponent","log","LOG10E","powerOf10","helpers_math","helpers$1","easing","canvas","math","rtl","getRtlAdapter","rectX","_x2","setWidth","textAlign","align","xPlus","leftForLtr","itemWidth","_x3","_itemWidth","overrideTextDirection","direction","original","getPropertyValue","getPropertyPriority","setProperty","prevTextDirection","restoreTextDirection","Element","configuration","initialize","_type","hidden","pivot","_view","_model","_start","transition","ease","start","view","actual","origin","c0","c1","interpolate","tooltipPosition","hasValue","isNumber","core_element","exports$3","currentStep","numSteps","render","onAnimationProgress","onAnimationComplete","core_animation","animation","duration","onProgress","onComplete","core_animations","animations","request","addAnimation","lazy","startTime","now","animating","requestAnimationFrame","cancelAnimation","splice","requestAnimFrame","startDigest","advance","nextStep","arrayEvents","unlistenArrayEvents","listener","stub","_chartjs","DatasetController","datasetIndex","datasetElementType","dataElementType","_datasetElementOptions","_dataElementOptions","linkScales","addElements","getMeta","updateIndex","scales","dataset","getDataset","scalesOpts","xAxisID","xAxes","yAxisID","yAxes","datasets","getDatasetMeta","getScaleForId","scaleID","_getValueScaleId","_getIndexScaleId","_getValueScale","_getIndexScale","reset","_update","destroy","_data","createMetaDataset","_chart","_datasetIndex","createMetaData","_index","metaData","addElementAndReset","element","updateElement","buildOrUpdateElements","isExtensible","configurable","enumerable","method","base","res","resyncElements","_configure","_config","_cachedDataOpts","update","easingValue","elements","draw","getStyle","_resolveDatasetElementOptions","_resolveDataElementOptions","backgroundColor","borderColor","hover","readKey","datasetOpts","custom","elementOptions","cached","dataIndex","freeze","removeHoverStyle","$previousStyle","setHoverStyle","getHoverColor","borderWidth","hoverBackgroundColor","hoverBorderColor","hoverBorderWidth","_removeDatasetHoverStyle","_setDatasetHoverStyle","hoverOptions","prev","numMeta","numData","insertElements","count","onDataPush","onDataPop","onDataShift","shift","onDataSplice","onDataUnshift","core_datasetController","TAU","clipArc","startAngle","endAngle","pixelMargin","angleMargin","outerRadius","innerRadius","drawBorder","vm","inner","borderAlign","lineWidth","lineJoin","fullCircles","drawFullCircleBorders","element_arc","inLabelRange","mouseX","hoverRadius","inRange","chartX","chartY","pointRelativePosition","getAngleFromPoint","angle","betweenAngles","withinRadius","getCenterPoint","halfAngle","halfRadius","getArea","centreAngle","rangeFromCentre","circumference","fillStyle","strokeStyle","valueOrDefault$1","line","borderCapStyle","borderDash","borderDashOffset","borderJoinStyle","capBezierPoints","element_line","currentVM","spanGaps","points","_children","globalOptionLineElements","lastDrawnIndex","_loop","previousItem","skip","lineCap","setLineDash","lineDashOffset","valueOrDefault$2","defaultColor$1","xRange","abs","hitRadius","pointStyle","element_point","mouseY","inXRange","inYRange","padding","chartArea","defaultColor$2","isVertical","getBarBounds","x1","y1","half","swap","orig","v2","parseBorderWidth","maxW","maxH","edge","borderSkipped","horizontal","parseBorderSkipped","_inRange","skipX","skipY","bounds","rectangle","element_rectangle","rects","border","outer","boundingRects","fillRect","Arc","Line","Point","Rectangle","deprecated","valueOrDefault$3","computeFitCategoryTraits","ruler","thickness","barThickness","stackCount","curr","pixels","_length","getTicks","getPixelForTick","computeMinSampleSize","categoryPercentage","barPercentage","chunk","mode","gridLines","offsetGridLines","bar","controller_bar","scaleOpts","minBarLength","maxBarThickness","_ruler","getRuler","_xScale","_yScale","datasetLabel","label","_updateElementGeometry","vscale","getBasePixel","isHorizontal","vpixels","calculateBarValuePixels","ipixels","calculateBarIndexPixels","head","center","_getStacks","last","metasets","_getMatchingVisibleMetas","stacks","getStackCount","getStackIndex","getPixelForValue","_startPixel","end","_endPixel","imeta","ivalue","stackLength","_parseValue","range","next","percent","computeFlexCategoryTraits","stackIndex","indexOpts","valueOpts","valueOrDefault$4","resolve$1","position","tooltips","callbacks","dataPoint","xLabel","yLabel","controller_bubble","xScale","yScale","dsIndex","getPixelForDecimal","_options","valueOrDefault$5","PI$1","DOUBLE_PI$1","HALF_PI$1","animateRotate","animateScale","legendCallback","listItem","list","document","createElement","setAttribute","appendChild","createTextNode","outerHTML","legend","generateLabels","controller","text","onClick","legendItem","cutoutPercentage","tooltipItem","dataLabel","controller_doughnut","getRingIndex","ringIndex","j","isDatasetVisible","maxWidth","maxHeight","opts","ratioX","ratioY","offsetX","offsetY","arcs","cutout","chartWeight","_getRingWeight","startX","startY","endX","endY","contains0","contains90","contains270","minX","minY","maxX","maxY","getMaxBorderWidth","radiusLength","_getVisibleDatasetWeightTotal","total","calculateTotal","_getRingWeightOffset","animationOpts","centerX","centerY","calculateCircumference","hoverWidth","ringWeightOffset","dataSetIndex","axis","horizontalBar","controller_horizontalBar","valueOrDefault$6","resolve$2","isPointInArea","scaleClip","halfBorderWidth","tickOpts","ticks","defaultClip","toClip","controller_line","config","showLine","_showLine","lineTension","_scale","updateBezierControlPoints","lineModel","calculatePointY","lineOptions","ds","dsMeta","stackedRightValue","rightValue","sumPos","sumNeg","getRightValue","_getSortedVisibleDatasetMetas","controlPoints","capControlPoint","pt","filter","cubicInterpolationMode","splineCurveMonotone","splineCurve","nextItem","resolve$3","angleLines","display","circular","pointLabels","beginAtZero","controller_polarArea","starts","_starts","angles","_angles","_updateRadius","countVisibleElements","_computeAngle","minSize","getVisibleDatasetCount","xCenter","yCenter","datasetStartAngle","getDistanceFromCenterForValue","resetRadius","doughnut","controller_pie","valueOrDefault$7","controller_radar","pointPosition","getPointPositionForValue","scatter","controllers","bubble","polarArea","pie","radar","getRelativePosition","parseVisibleItems","handler","metadata","jlen","getIntersectItems","getNearestItems","intersect","distanceMetric","minDistance","POSITIVE_INFINITY","nearestItems","getDistanceMetricForAxis","useX","useY","pt1","pt2","deltaX","deltaY","indexMode","items","core_interaction","modes","single","nearest","intersectsItem","filterByPosition","where","pos","sortByWeight","getCombinedMax","maxPadding","updateDims","params","layout","newWidth","newHeight","box","getPadding","boxPadding","outerWidth","outerHeight","getMargins","marginForPositions","positions","margin","fitBoxes","boxes","refit","changed","refitBoxes","fullWidth","placeBoxes","userPadding","core_layouts","addBox","_layers","removeBox","layoutItem","configure","props","layoutOptions","availableWidth","availableHeight","layoutBoxes","wrapBoxes","leftAndTop","rightAndBottom","vertical","buildLayoutBoxes","verticalBoxes","horizontalBoxes","vBoxMaxWidth","hBoxMaxHeight","layouts","setLayoutDims","updatePos","change","handleMaxPadding","stylesheet","__proto__","ANIMATION_START_EVENTS","EVENT_TYPES","touchstart","touchmove","touchend","pointerenter","pointerdown","pointermove","pointerup","pointerleave","pointerout","readUsedSize","property","eventListenerOptions","supports","addEventListener","passive","removeEventListener","createEvent","nativeEvent","createDiv","cls","el","className","addResizeListener","ticking","expando","resizer","CSS_PREFIX","expand","CSS_SIZE_MONITOR","shrink","_reset","scrollLeft","scrollTop","onScroll","bind","createResizer","container","maintainAspectRatio","parentNode","clientWidth","proxy","renderProxy","animationName","reflow","offsetParent","classList","watchForRender","insertBefore","firstChild","removeResizeListener","remove","unwatchForRender","removeChild","platform_dom$2","disableCSSInjection","_enabled","_ensureLoaded","getRootNode","rootNode","css","containsStyles","injectCSS","host","acquireContext","getElementById","getContext","renderHeight","getAttribute","renderWidth","initial","displayWidth","aspectRatio","displayHeight","initCanvas","releaseContext","removeAttribute","proxies","event","fromNativeEvent","addEvent","removeEvent","implementation","platform","plugins","core_plugins","_plugins","_cacheId","register","plugin","unregister","idx","getAll","notify","hook","descriptor","descriptors","$plugins","_invalidate","core_scaleService","constructors","registerScaleType","scaleConstructor","scaleDefaults","getScaleConstructor","getScaleDefaults","updateScaleDefaults","additions","addScalesToLayout","valueOrDefault$8","getRtlHelper","enabled","titleFontStyle","titleSpacing","titleMarginBottom","titleFontColor","titleAlign","bodySpacing","bodyFontColor","bodyAlign","footerFontStyle","footerSpacing","footerMarginTop","footerFontColor","footerAlign","yPadding","xPadding","caretPadding","caretSize","multiKeyBackground","displayColors","beforeTitle","tooltipItems","labelCount","afterTitle","beforeBody","beforeLabel","labelColor","labelTextColor","afterLabel","afterBody","beforeFooter","footer","afterFooter","positioners","average","eventPosition","nearestElement","d","distanceBetweenPoints","tp","pushOrConcat","toPush","splitNewlines","String","getBaseModel","tooltipOpts","xAlign","yAlign","textDirection","_bodyFontFamily","bodyFontFamily","_bodyFontStyle","bodyFontStyle","_bodyAlign","bodyFontSize","_titleFontFamily","titleFontFamily","_titleFontStyle","titleFontSize","_titleAlign","_footerFontFamily","footerFontFamily","_footerFontStyle","footerFontSize","_footerAlign","opacity","legendColorBackground","getAlignedX","getBeforeAfterBodyLines","exports$4","_lastActive","getTitle","lines","getBeforeBody","getBody","bodyItems","bodyItem","before","after","getAfterBody","getFooter","indexScale","valueScale","existingModel","active","_active","alignment","backgroundPoint","tooltipSize","caretX","caretY","labelColors","labelTextColors","_eventPosition","getLabelForIndex","itemSort","body","dataPoints","tooltip","combinedBodyLength","reduce","titleLineCount","footerLineCount","widthPadding","maxLineWidth","measureText","fontString","getTooltipSize","paddingAndSize","radiusAndPadding","getBackgroundPoint","lf","rf","olf","orf","yf","midX","midY","determineAlignment","drawCaret","tooltipPoint","caretPosition","getCaretPosition","x3","y3","ptX","ptY","tmp","drawTitle","rtlHelper","textBaseline","fillText","drawBody","textColor","drawColorBoxes","xLinePadding","colorX","fillLineOfText","bodyAlignForCalculation","rtlColorX","strokeRect","drawFooter","drawBackground","quadraticCurveTo","hasTooltipContent","globalAlpha","handleEvent","getElementsAtEventForMode","positioners_1","core_tooltip","valueOrDefault$9","mergeScaleConfig","slen","mergeConfig","updateConfig","newOptions","ensureScalesHaveIDs","buildOrUpdateScales","nextAvailableScaleId","axesOpts","prefix","hasId","positionIsHorizontal","compare2Level","l1","l2","events","onHover","animationDuration","responsive","responsiveAnimationDuration","Chart","construct","initConfig","_bufferedRender","instances","retinaScale","devicePixelRatio","bindEvents","resize","initToolTip","stop","silent","getMaximumWidth","getMaximumHeight","newSize","onResize","scalesOptions","scaleOptions","xAxisOptions","yAxisOptions","updated","dtype","dposition","isDefault","scaleType","scaleClass","mergeTicksOptions","hasUpdated","buildOrUpdateControllers","newControllers","destroyDatasetMeta","order","ControllerClass","resetElements","updateLayout","updateDatasets","lastActive","_bufferedRequest","_idx","updateDataset","animationOptions","animationObject","easingFunction","stepDecimal","layers","drawDatasets","_drawTooltip","_getSortedDatasetMetas","filterVisible","drawDataset","getElementAtEvent","getElementsAtEvent","getElementsAtXAxis","getDatasetAtEvent","_meta","generateLegend","unbindEvents","toBase64Image","toDataURL","_chartInstance","_listeners","eventHandler","updateHoverStyle","bufferedRequest","core_controller","_abstract","DateAdapter","Controller","types","configMerge","scaleMerge","formats","parse","format","startOf","endOf","_create","override","members","core_adapters","_date","core_ticks","formatters","tickValue","logDelta","tickString","logTick","numExponential","toExponential","numDecimal","toFixed","logarithmic","remain","valueOrDefault$a","getPixelForGridLine","validIndex","lineValue","computeLabelSizes","tickFonts","caches","tickFont","nestedLabel","widest","highest","widths","heights","offsets","major","minor","gc","valueAt","gcLen","garbageCollect","first","getTickMarkLength","drawTicks","tickMarkLength","getScaleLabelHeight","parseFontOptions","nestedOpts","fontColor","parseTickFontOptions","nonSkipped","ticksToFilter","filtered","spacing","majorStart","majorEnd","tick","ceil","drawOnChartArea","zeroLineWidth","zeroLineColor","zeroLineBorderDash","zeroLineBorderDashOffset","scaleLabel","labelString","minRotation","maxRotation","mirror","autoSkip","autoSkipPadding","labelOffset","Scale","zeroLineIndex","paddingLeft","paddingTop","paddingRight","paddingBottom","_ticks","_getLabels","xLabels","yLabels","beforeUpdate","margins","samplingEnabled","sampleSize","_labelSizes","_maxLabelLines","longestLabelWidth","longestTextCache","_gridLineItems","_labelItems","beforeSetDimensions","setDimensions","afterSetDimensions","beforeDataLimits","determineDataLimits","afterDataLimits","beforeBuildTicks","buildTicks","afterBuildTicks","_convertTicksToLabels","arr","numItems","increment","sample","beforeCalculateTickRotation","calculateTickRotation","afterCalculateTickRotation","beforeFit","fit","afterFit","_ticksToDraw","_autoSkip","afterUpdate","startPixel","endPixel","reversePixels","_reversePixels","beforeTickToLabelConversion","convertTicksToLabels","userCallback","afterTickToLabelConversion","labelSizes","maxLabelWidth","maxLabelHeight","tickWidth","maxLabelDiagonal","numTicks","labelRotation","_isVisible","_getLabelSizes","toDegrees","scaleLabelOpts","gridLineOpts","isBottom","firstLabelSize","lastLabelSize","widestLabelSize","highestLabelSize","lineSpace","tickPadding","isRotated","angleRadians","toRadians","cosRotation","sinRotation","labelHeight","offsetLeft","offsetRight","labelWidth","handleMargins","isFullWidth","rawValue","_getScaleLabel","getValueForPixel","decimal","getDecimalForPixel","pixel","getBaseValue","avgMajorSpacing","axisLength","ticksLimit","maxTicksLimit","_tickSize","majorIndices","getMajorIndices","numMajorIndices","skipMajors","factors","factor","evenMajorSpacing","getEvenSpacing","calculateSpacing","optionTicks","rot","_computeGridLineItems","borderValue","alignedLineValue","tx1","ty1","tx2","ty2","lineColor","ticksLength","tl","axisWidth","axisHalfWidth","alignPixel","_alignPixel","alignBorderValue","_computeLabelItems","lineCount","textOffset","isMirrored","fonts","_drawGrid","firstLineWidth","lastLineWidth","_drawLabels","_drawTitle","scaleLabelX","scaleLabelY","scaleLabelFontColor","scaleLabelFont","scaleLabelPadding","halfLineHeight","isLeft","tz","gz","_draw","core_scale","isNullOrUndef$1","scale_category","ticksOpts","minIndex","maxIndex","_startValue","_valueRange","valueCategory","_defaults","isNullOrUndef$2","scale_linearbase","handleTickRangeOptions","minSign","maxSign","setMin","suggestedMin","setMax","suggestedMax","getTickLimit","maxTicks","stepSize","_computeTickLimit","handleDirectionalChanges","numericGeneratorOptions","precision","fixedStepSize","generationOptions","dataRange","niceMin","niceMax","numSpaces","unit","maxNumSpaces","rmin","rmax","niceNum","_decimalPlaces","almostWhole","almostEquals","generateTicks","ticksAsNumbers","_endValue","defaultConfig$1","stackData","neg","getOrCreateStack","relativePoints","updateMinMax","scale_linear","hasStacks","NEGATIVE_INFINITY","stackValues","_defaults$1","valueOrDefault$b","defaultConfig$2","nonNegativeOrDefault","scale_logarithmic","IDMatches","minNotZero","valuesPerStack","valuesForType","minVal","maxVal","exp","significand","tickVal","endExp","endSignificand","lastTick","generateTicks$1","tickValues","_getFirstTickValue","_valueOffset","_defaults$2","valueOrDefault$c","valueAtIndexOrDefault$1","resolve$4","defaultConfig$3","animate","showLabelBackdrop","backdropColor","backdropPaddingY","backdropPaddingX","getTickBackdropHeight","determineLimits","getTextAlignForAngle","adjustPointPositionForLabelHeight","textSize","numberOrZero","param","scale_radialLinear","drawingArea","plFont","furthestLimits","furthestAngles","_pointLabelSizes","valueCount","getPointPosition","longestText","getIndexAngle","hLimits","vLimits","setReductions","fitWithPointLabels","setCenterPoint","largestPossibleRadius","radiusReductionLeft","radiusReductionRight","radiusReductionTop","radiusReductionBottom","leftMovement","rightMovement","topMovement","bottomMovement","maxRight","maxLeft","maxTop","maxBottom","scalingFactor","distanceFromCenter","thisAngle","getBasePosition","angleLineOpts","pointLabelOpts","tickBackdropHeight","outerDistance","extra","pointLabelPosition","pointLabelFontColor","drawPointLabels","drawRadiusLine","tickFontColor","_defaults$3","deprecated$1","resolve$5","valueOrDefault$d","MIN_INTEGER","MIN_SAFE_INTEGER","MAX_INTEGER","MAX_SAFE_INTEGER","INTERVALS","millisecond","common","steps","second","minute","hour","day","week","month","quarter","year","UNITS","sorter","getMin","time","getMax","interpolate$1","table","skey","tkey","mid","i0","i1","lo","lookup","span","toTimestamp","input","adapter","_adapter","parser","determineUnitForAutoTicks","minUnit","capacity","interval","ticksFromTimestamps","majorUnit","setMajorTicks","scale_time","adapters","date","displayFormats","timestamp","labelsAdded","timestamps","dataLabels","hash","out","arrayUnique","_table","_timestamps","timeOpts","getLabelCapacity","distribution","unitStepSize","weekday","isoWeekday","generate","_unit","determineUnitForFormatting","_majorUnit","determineMajorUnit","buildLookupTable","_offsets","computeOffsets","tooltipFormat","datetime","tickFormatFunction","minorFormat","majorFormat","nestedTickOpts","formatter","getPixelForOffset","_getLabelSize","tickLabelWidth","tickFontSize","getLabelWidth","exampleTime","exampleLabel","_defaults$4","displayFormat","category","radialLinear","FORMATS","_id","_format","amount","filler","propagate","mappers","boundary","decodeFill","computeBoundary","cx","cy","computeCircularBoundary","scaleBottom","scaleTop","scaleZero","computeLinearBoundary","resolveTarget","visited","visible","createMapper","isDrawable","drawArea","curve0","curve1","len0","len1","doFill","mapper","loop","p0","p1","d0","d1","loopOffset","plugin_filler","afterDatasetsUpdate","$filler","beforeDatasetsDraw","getRtlHelper$1","noop$1","valueOrDefault$e","getBoxWidth","labelOpts","usePointStyle","boxWidth","ci","onLeave","lineDash","Legend","legendHitBoxes","_hoveredItem","doughnutMode","beforeBuildLabels","buildLabels","afterBuildLabels","legendItems","labelFont","hitboxes","lineWidths","totalHeight","vPadding","columnWidths","columnHeights","totalWidth","currentColWidth","currentColHeight","lineDefault","legendHeight","legendWidth","cursor","alignmentOffset","dimension","blockSize","itemHeight","textWidth","realX","SQRT2","drawLegendBox","halfFontSize","xLeft","yMiddle","_getLegendItemAt","hitBox","lh","hoveredItem","createNewLegendAndAttach","legendOpts","plugin_legend","_element","beforeInit","afterEvent","noop$2","Title","titleX","titleY","fontOpts","createNewTitleBlockAndAttach","titleOpts","titleBlock","parseMaxStyle","styleValue","parentProperty","valueInPixels","isConstrainedValue","getConstraintDimension","domNode","maxStyle","percentageProperty","defaultView","_getParentNode","constrainedNode","getComputedStyle","constrainedContainer","hasCNode","hasCContainer","infinity","filterCallback","findNextWhere","arrayToSearch","startIndex","currentItem","findPreviousWhere","epsilon","rounded","radians","centrePoint","anglePoint","distanceFromXCenter","distanceFromYCenter","radialDistanceFromCenter","aliasPixel","pixelWidth","currentDevicePixelRatio","halfWidth","firstPoint","middlePoint","afterPoint","d01","d12","s01","s12","fa","fb","pointBefore","pointCurrent","pointAfter","alphaK","betaK","tauK","squaredMagnitude","pointsWithTangents","deltaK","mK","pointsLen","slopeDeltaX","fraction","webkitRequestAnimationFrame","mozRequestAnimationFrame","oRequestAnimationFrame","msRequestAnimationFrame","evt","originalEvent","srcElement","boundingRect","getBoundingClientRect","touches","clientX","clientY","getConstraintWidth","getConstraintHeight","_calculatePadding","parentDimension","cw","clientHeight","ch","currentStyle","forceRatio","pixelRatio","pixelSize","arrayOfThings","thing","nestedThing","longest","numberOfLabelLines","numberOfLines","CanvasGradient","colorValue","CanvasPattern","core_helpers","_adapters","Animation","animationService","Interaction","scaleService","Ticks","Tooltip","pluginService","PluginBase","canvasHelpers","layoutService","LinearScaleBase","klass","cfg","toLowerCase","factory","arrayFilter","stubArray","nativeGetSymbols","getOwnPropertySymbols","getSymbols","symbol","isMasked","toSource","reIsHostCtor","funcProto","reIsNative","RegExp","toAbsoluteIndex","toLength","aLen","endPos","getRawTag","objectToString","WeakMap","baseAssignValue","keyBy","createAggregator","isKeyable","DataView","Set","dataViewCtorString","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","getTag","ArrayBuffer","ctorString","baseForOwn","createBaseEach","_extends","_objectWithoutProperties","_classCallCheck","instance","Constructor","_possibleConstructorReturn","ReferenceError","_inherits","subClass","superClass","create","writable","setPrototypeOf","NODE_ENV","ChartComponent","_React$Component","_this","handleOnClick","chartInstance","_this$props","onElementsClick","ref","componentDidMount","renderChart","componentDidUpdate","redraw","destroyChart","updateChart","shouldComponentUpdate","nextProps","_props","nextData","transformDataProp","shadowDataProp","componentWillUnmount","memoizeDataProps","saveCurrentDatasets","checkDatasets","isDev","usingCustomKeyProvider","datasetKeyProvider","getLabelAsKey","multipleDatasets","shouldWarn","getCurrentDatasets","_this2","_this3","currentDatasets","nextDatasets","currentDatasetsIndexed","pid","otherProps","rest","_props2","defaultProps","_props3","Component","propTypes","oneOfType","isRequired","arrayOf","bool","propName","componentName","_React$Component2","Doughnut","_this5","_ref","_React$Component3","Pie","_this7","_ref2","_React$Component4","_this9","_ref3","Bar","_React$Component5","_this11","_ref4","_React$Component6","HorizontalBar","_this13","_ref5","_React$Component7","Radar","_this15","_ref6","_React$Component8","Polar","_this17","_ref7","_React$Component9","Bubble","_this19","_ref8","_React$Component10","Scatter","_this21","_ref9","DESCRIPTORS","getKeys","toIObject","isEnum","isEntries","arrayAggregator","baseAggregator","baseIteratee","initializer","overArg","listCacheClear","listCacheDelete","listCacheGet","listCacheHas","listCacheSet","webpackPolyfill","deprecate","paths","children","baseIsMatch","getMatchData","matchData","$isFrozen","baseTimes","isTypedArray","inherited","isArr","isArg","isBuff","isType","skipIndexes","baseIsTypedArray","baseUnary","nodeUtil","nodeIsTypedArray","createBaseFor","typedArrayTags","baseToString","mapCacheClear","mapCacheDelete","mapCacheGet","mapCacheHas","mapCacheSet","Stack","equalByTag","equalObjects","objectTag","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","arrayPush","keysFunc","symbolsFunc","stackClear","stackDelete","stackGet","stackHas","stackSet","baseHasIn","hasPath","$values","fails","getTime","$toISOString","lz","RangeError","getUTCFullYear","getUTCMilliseconds","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","transform","arg","eachFunc","fromRight","iterable","noCustomizer","freeProcess","require","arraySome","cacheHas","arrLength","othLength","seen","arrValue","othValue","compared","othIndex","LineChart","state","lineChartData","xAxis","yAxis","displayLegend","legendPosition","BarChart","barChartData","PerformanceCard","primary","heading","chartType","sx","boxShadow","borderRadius","marginY","marginX","flexDirection","justifyContent","alignItems","boxShadowBottom","borderBottomRightRadius","borderBottomLeftRadius","borderTop","marginBottom","marginTop","performance","barChartJDK8Footprint","lineChartJK8FootprintDuringrampup","barChartJDK8Startup","lineChartJK8FasterRampupInTheCloud","isHome","description","paddingX","h1","h2","flexWrap","variant","textDecoration","href","rel","baseGetAllKeys","getAllKeys","objProps","objLength","skipCtor","objCtor","othCtor","baseMatches","baseMatchesProperty","identity","baseIsEqualDeep","reIsUint","hookCallback","some","hooks","isUndefined","isDate","hasOwnProp","createUTC","locale","strict","createLocalOrUTC","utc","getParsingFlags","_pf","empty","unusedTokens","unusedInput","overflow","charsLeftOver","nullInput","invalidMonth","invalidFormat","userInvalidated","iso","parsedDateParts","meridiem","rfc2822","weekdayMismatch","_isValid","flags","parsedParts","isNowValid","_d","invalidWeekday","_strict","bigHour","isFrozen","createInvalid","momentProperties","copyConfig","_isAMomentObject","_i","_f","_l","_tzm","_isUTC","_offset","_locale","updateInProgress","Moment","updateOffset","isMoment","absFloor","toInt","argumentForCoercion","coercedNumber","compareArrays","array1","array2","dontConvert","lengthDiff","diffs","msg","suppressDeprecationWarnings","firstTime","deprecationHandler","deprecations","deprecateSimple","mergeConfigs","parentConfig","childConfig","Locale","aliases","addUnitAlias","shorthand","lowerCase","normalizeUnits","units","normalizeObjectUnits","inputObject","normalizedProp","normalizedInput","priorities","addUnitPriority","priority","zeroFill","targetLength","forceSign","absNumber","zerosToFill","formattingTokens","localFormattingTokens","formatFunctions","formatTokenFunctions","addFormatToken","token","padded","ordinal","localeData","formatMoment","expandFormat","mom","output","makeFormatFunction","invalidDate","replaceLongDateFormatTokens","longDateFormat","lastIndex","match1","match2","match3","match4","match6","match1to2","match3to4","match5to6","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchOffset","matchShortOffset","matchWord","regexes","addRegexToken","regex","strictRegex","isStrict","getParseRegexForToken","regexEscape","matched","p2","p3","p4","tokens","addParseToken","addWeekParseToken","_w","addTimeToArrayFromToken","_a","daysInYear","isLeapYear","parseTwoDigitYear","getSetYear","makeGetSet","keepTime","set$1","daysInMonth","modMonth","o","monthsShort","months","monthsShortRegex","monthsRegex","monthsParse","MONTHS_IN_FORMAT","defaultLocaleMonths","defaultLocaleMonthsShort","handleStrictParse","monthName","ii","llc","toLocaleLowerCase","_monthsParse","_longMonthsParse","_shortMonthsParse","setMonth","dayOfMonth","getSetMonth","defaultMonthsShortRegex","defaultMonthsRegex","computeMonthsParse","cmpLenRev","shortPieces","longPieces","mixedPieces","_monthsRegex","_monthsShortRegex","_monthsStrictRegex","_monthsShortStrictRegex","createDate","M","ms","getFullYear","setFullYear","createUTCDate","UTC","setUTCFullYear","firstWeekOffset","dow","doy","fwd","getUTCDay","dayOfYearFromWeeks","resYear","resDayOfYear","dayOfYear","weekOfYear","resWeek","weekOffset","weeksInYear","weekOffsetNext","shiftWeekdays","ws","weekdaysMin","weekdaysShort","weekdays","weekdaysMinRegex","weekdaysShortRegex","weekdaysRegex","weekdaysParse","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","handleStrictParse$1","weekdayName","_weekdaysParse","_shortWeekdaysParse","_minWeekdaysParse","defaultWeekdaysRegex","defaultWeekdaysShortRegex","defaultWeekdaysMinRegex","computeWeekdaysParse","minp","shortp","longp","minPieces","_weekdaysRegex","_weekdaysShortRegex","_weekdaysMinRegex","_weekdaysStrictRegex","_weekdaysShortStrictRegex","_weekdaysMinStrictRegex","hFormat","hours","lowercase","minutes","matchMeridiem","_meridiemParse","seconds","kInput","_isPm","isPM","_meridiem","pos1","pos2","globalLocale","getSetHour","baseConfig","calendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","LTS","LT","L","LL","LLL","LLLL","dayOfMonthOrdinalParse","relativeTime","future","past","ss","mm","hh","dd","MM","yy","meridiemParse","locales","localeFamilies","normalizeLocale","loadLocale","oldLocale","_abbr","getSetGlobalLocale","getLocale","defineLocale","abbr","parentLocale","names","chooseLocale","checkOverflow","_overflowDayOfYear","_overflowWeeks","_overflowWeekday","configFromArray","currentDate","expectedWeekday","yearToUse","nowValue","_useUTC","getMonth","getDate","currentDateArray","weekYear","temp","weekdayOverflow","GG","W","E","createLocal","_week","curWeek","gg","_dayOfYear","dayOfYearFromWeekInfo","_nextDay","getDay","setUTCMinutes","extendedIsoRegex","basicIsoRegex","tzRegex","isoDates","isoTimes","aspNetJsonRegex","configFromISO","allowTime","dateFormat","timeFormat","tzFormat","configFromStringAndFormat","untruncateYear","yearStr","obsOffsets","UT","GMT","EDT","EST","CDT","CST","MDT","MST","PDT","PST","configFromRFC2822","monthStr","dayStr","hourStr","minuteStr","secondStr","parsedArray","weekdayStr","parsedInput","checkWeekday","obsOffset","militaryOffset","numOffset","hm","calculateOffset","ISO_8601","RFC_2822","skipped","stringLength","totalParsedInputLength","isPm","meridiemHour","meridiemFixWrap","prepareConfig","preparse","tempConfig","bestMoment","scoreToBeat","currentScore","score","configFromStringAndArray","createFromInputFallback","configFromString","configFromObject","configFromInput","isUTC","getOwnPropertyNames","isObjectEmpty","prototypeMin","prototypeMax","pickBy","moments","ordering","Duration","years","quarters","weeks","isoWeek","days","milliseconds","unitHasDecimal","isDurationValid","_milliseconds","_days","_months","_bubble","isDuration","absRound","separator","utcOffset","offsetFromString","chunkOffset","matcher","parts","cloneWithOffset","setTime","local","getDateOffset","getTimezoneOffset","isUtc","aspNetRegex","isoRegex","createDuration","ret","diffRes","parseIso","isBefore","positiveMomentsDifference","inp","isAfter","createAdder","period","addSubtract","isAdding","invalid","subtract","monthDiff","wholeMonthDiff","anchor","newLocaleData","defaultFormat","defaultFormatUtc","lang","mod$1","dividend","divisor","localStartOfDate","utcStartOfDate","addWeekYearFormatToken","getter","getSetWeekYearHelper","weeksTarget","setWeekAll","dayOfYearData","isoWeekYear","_dayOfMonthOrdinalParse","_ordinalParse","_dayOfMonthOrdinalParseLenient","getSetDayOfMonth","getSetMinute","getSetSecond","parseMs","getSetMillisecond","proto","preParsePostFormat","sod","calendarFormat","asFloat","that","zoneDelta","startOfDate","inputString","postformat","withoutSuffix","humanize","fromNow","toNow","invalidAt","localInput","isBetween","inclusivity","localFrom","localTo","isSame","inputMs","isSameOrAfter","isSameOrBefore","parsingFlags","prioritized","unitsObj","u","getPrioritizedUnits","toArray","toDate","keepOffset","inspect","zone","isLocal","suffix","unix","creationData","isoWeeks","weekInfo","isoWeeksInYear","parseWeekday","parseIsoWeekday","keepLocalTime","keepMinutes","localAdjust","_changeInProgress","parseZone","tZone","hasAlignedHourOffset","isDST","isUtcOffset","zoneAbbr","zoneName","dates","isDSTShifted","_isDSTShifted","proto$1","get$1","field","listMonthsImpl","listWeekdaysImpl","localeSorted","_calendar","_longDateFormat","formatUpper","_invalidDate","_ordinal","isFuture","_relativeTime","pastFuture","isFormat","_monthsShort","_monthsParseExact","firstDayOfYear","firstDayOfWeek","_weekdays","_weekdaysMin","_weekdaysShort","_weekdaysParseExact","_fullWeekdaysParse","isLower","langData","mathAbs","addSubtract$1","absCeil","daysToMonths","monthsToDays","makeAs","alias","as","asMilliseconds","asSeconds","asMinutes","asHours","asDays","asWeeks","asMonths","asQuarters","asYears","makeGetter","thresholds","substituteTimeAgo","abs$1","toISOString$1","Y","D","totalSign","ymSign","daysSign","hmsSign","proto$2","monthsFromDays","withSuffix","posNegDuration","relativeTime$1","toIsoString","updateLocale","tmpLocale","relativeTimeRounding","roundingFunction","relativeTimeThreshold","threshold","limit","myMoment","HTML5_FMT","DATETIME_LOCAL","DATETIME_LOCAL_SECONDS","DATETIME_LOCAL_MS","DATE","TIME","TIME_SECONDS","TIME_MS","WEEK","MONTH","cof","inheritIfRequired","gOPN","gOPD","dP","$trim","trim","$Number","Base","BROKEN_COF","TRIM","toNumber","argument","third","radix","maxCode","code","digits","arrayMap","symbolToString"],"mappings":"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","file":"component---src-pages-performance-js-31be57d58d932a4860aa.js","sourcesContent":["var assocIndexOf = require('./_assocIndexOf');\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n\n\nfunction listCacheHas(key) {\n  return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;","var baseProperty = require('./_baseProperty'),\n    basePropertyDeep = require('./_basePropertyDeep'),\n    isKey = require('./_isKey'),\n    toKey = require('./_toKey');\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n *   { 'a': { 'b': 2 } },\n *   { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\n\n\nfunction property(path) {\n  return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nmodule.exports = property;","var baseGetTag = require('./_baseGetTag'),\n    isObjectLike = require('./isObjectLike');\n/** `Object#toString` result references. */\n\n\nvar symbolTag = '[object Symbol]';\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\n\nfunction isSymbol(value) {\n  return typeof value == 'symbol' || isObjectLike(value) && baseGetTag(value) == symbolTag;\n}\n\nmodule.exports = isSymbol;","var baseIsArguments = require('./_baseIsArguments'),\n    isObjectLike = require('./isObjectLike');\n/** Used for built-in method references. */\n\n\nvar objectProto = Object.prototype;\n/** Used to check objects for own properties. */\n\nvar hasOwnProperty = objectProto.hasOwnProperty;\n/** Built-in value references. */\n\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n *  else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\n\nvar isArguments = baseIsArguments(function () {\n  return arguments;\n}()) ? baseIsArguments : function (value) {\n  return isObjectLike(value) && hasOwnProperty.call(value, 'callee') && !propertyIsEnumerable.call(value, 'callee');\n};\nmodule.exports = isArguments;","var ListCache = require('./_ListCache'),\n    Map = require('./_Map'),\n    MapCache = require('./_MapCache');\n/** Used as the size to enable large array optimizations. */\n\n\nvar LARGE_ARRAY_SIZE = 200;\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\n\nfunction stackSet(key, value) {\n  var data = this.__data__;\n\n  if (data instanceof ListCache) {\n    var pairs = data.__data__;\n\n    if (!Map || pairs.length < LARGE_ARRAY_SIZE - 1) {\n      pairs.push([key, value]);\n      this.size = ++data.size;\n      return this;\n    }\n\n    data = this.__data__ = new MapCache(pairs);\n  }\n\n  data.set(key, value);\n  this.size = data.size;\n  return this;\n}\n\nmodule.exports = stackSet;","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n  return [];\n}\n\nmodule.exports = stubArray;","var MapCache = require('./_MapCache'),\n    setCacheAdd = require('./_setCacheAdd'),\n    setCacheHas = require('./_setCacheHas');\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\n\n\nfunction SetCache(values) {\n  var index = -1,\n      length = values == null ? 0 : values.length;\n  this.__data__ = new MapCache();\n\n  while (++index < length) {\n    this.add(values[index]);\n  }\n} // Add methods to `SetCache`.\n\n\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\nmodule.exports = SetCache;","var root = require('./_root');\n/** Used to detect overreaching core-js shims. */\n\n\nvar coreJsData = root['__core-js_shared__'];\nmodule.exports = coreJsData;","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n  return this.__data__.has(value);\n}\n\nmodule.exports = setCacheHas;","require(\"core-js/modules/es6.regexp.to-string\");\n\nrequire(\"core-js/modules/es6.date.to-string\");\n\nrequire(\"core-js/modules/es6.object.to-string\");\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n/** Used to resolve the decompiled source of functions. */\n\nvar funcToString = funcProto.toString;\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\n\nfunction toSource(func) {\n  if (func != null) {\n    try {\n      return funcToString.call(func);\n    } catch (e) {}\n\n    try {\n      return func + '';\n    } catch (e) {}\n  }\n\n  return '';\n}\n\nmodule.exports = toSource;","var baseGet = require('./_baseGet');\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n\n\nfunction basePropertyDeep(path) {\n  return function (object) {\n    return baseGet(object, path);\n  };\n}\n\nmodule.exports = basePropertyDeep;","var MapCache = require('./_MapCache');\n/** Error message constants. */\n\n\nvar FUNC_ERROR_TEXT = 'Expected a function';\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\n\nfunction memoize(func, resolver) {\n  if (typeof func != 'function' || resolver != null && typeof resolver != 'function') {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n\n  var memoized = function memoized() {\n    var args = arguments,\n        key = resolver ? resolver.apply(this, args) : args[0],\n        cache = memoized.cache;\n\n    if (cache.has(key)) {\n      return cache.get(key);\n    }\n\n    var result = func.apply(this, args);\n    memoized.cache = cache.set(key, result) || cache;\n    return result;\n  };\n\n  memoized.cache = new (memoize.Cache || MapCache)();\n  return memoized;\n} // Expose `MapCache`.\n\n\nmemoize.Cache = MapCache;\nmodule.exports = memoize;","var hashClear = require('./_hashClear'),\n    hashDelete = require('./_hashDelete'),\n    hashGet = require('./_hashGet'),\n    hashHas = require('./_hashHas'),\n    hashSet = require('./_hashSet');\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n\n\nfunction Hash(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n  this.clear();\n\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n} // Add methods to `Hash`.\n\n\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\nmodule.exports = Hash;","var castPath = require('./_castPath'),\n    isArguments = require('./isArguments'),\n    isArray = require('./isArray'),\n    isIndex = require('./_isIndex'),\n    isLength = require('./isLength'),\n    toKey = require('./_toKey');\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\n\n\nfunction hasPath(object, path, hasFunc) {\n  path = castPath(path, object);\n  var index = -1,\n      length = path.length,\n      result = false;\n\n  while (++index < length) {\n    var key = toKey(path[index]);\n\n    if (!(result = object != null && hasFunc(object, key))) {\n      break;\n    }\n\n    object = object[key];\n  }\n\n  if (result || ++index != length) {\n    return result;\n  }\n\n  length = object == null ? 0 : object.length;\n  return !!length && isLength(length) && isIndex(key, length) && (isArray(object) || isArguments(object));\n}\n\nmodule.exports = hasPath;","var isArray = require('./isArray'),\n    isKey = require('./_isKey'),\n    stringToPath = require('./_stringToPath'),\n    toString = require('./toString');\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\n\n\nfunction castPath(value, object) {\n  if (isArray(value)) {\n    return value;\n  }\n\n  return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nmodule.exports = castPath;","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\n\nfunction isPrototype(value) {\n  var Ctor = value && value.constructor,\n      proto = typeof Ctor == 'function' && Ctor.prototype || objectProto;\n  return value === proto;\n}\n\nmodule.exports = isPrototype;","/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n  return function (object) {\n    return object == null ? undefined : object[key];\n  };\n}\n\nmodule.exports = baseProperty;","var ListCache = require('./_ListCache');\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\n\n\nfunction stackClear() {\n  this.__data__ = new ListCache();\n  this.size = 0;\n}\n\nmodule.exports = stackClear;","var arrayLikeKeys = require('./_arrayLikeKeys'),\n    baseKeys = require('./_baseKeys'),\n    isArrayLike = require('./isArrayLike');\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\n\n\nfunction keys(object) {\n  return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;","require(\"core-js/modules/es6.array.for-each\");\n\n/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n  var index = -1,\n      result = Array(map.size);\n  map.forEach(function (value, key) {\n    result[++index] = [key, value];\n  });\n  return result;\n}\n\nmodule.exports = mapToArray;","// shim for using process in browser\nvar process = module.exports = {}; // cached from whatever global is present so that test runners that stub it\n// don't break things.  But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals.  It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n  throw new Error('setTimeout has not been defined');\n}\n\nfunction defaultClearTimeout() {\n  throw new Error('clearTimeout has not been defined');\n}\n\n(function () {\n  try {\n    if (typeof setTimeout === 'function') {\n      cachedSetTimeout = setTimeout;\n    } else {\n      cachedSetTimeout = defaultSetTimout;\n    }\n  } catch (e) {\n    cachedSetTimeout = defaultSetTimout;\n  }\n\n  try {\n    if (typeof clearTimeout === 'function') {\n      cachedClearTimeout = clearTimeout;\n    } else {\n      cachedClearTimeout = defaultClearTimeout;\n    }\n  } catch (e) {\n    cachedClearTimeout = defaultClearTimeout;\n  }\n})();\n\nfunction runTimeout(fun) {\n  if (cachedSetTimeout === setTimeout) {\n    //normal enviroments in sane situations\n    return setTimeout(fun, 0);\n  } // if setTimeout wasn't available but was latter defined\n\n\n  if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n    cachedSetTimeout = setTimeout;\n    return setTimeout(fun, 0);\n  }\n\n  try {\n    // when when somebody has screwed with setTimeout but no I.E. maddness\n    return cachedSetTimeout(fun, 0);\n  } catch (e) {\n    try {\n      // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n      return cachedSetTimeout.call(null, fun, 0);\n    } catch (e) {\n      // 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\n      return cachedSetTimeout.call(this, fun, 0);\n    }\n  }\n}\n\nfunction runClearTimeout(marker) {\n  if (cachedClearTimeout === clearTimeout) {\n    //normal enviroments in sane situations\n    return clearTimeout(marker);\n  } // if clearTimeout wasn't available but was latter defined\n\n\n  if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n    cachedClearTimeout = clearTimeout;\n    return clearTimeout(marker);\n  }\n\n  try {\n    // when when somebody has screwed with setTimeout but no I.E. maddness\n    return cachedClearTimeout(marker);\n  } catch (e) {\n    try {\n      // When we are in I.E. but the script has been evaled so I.E. doesn't  trust the global object when called normally\n      return cachedClearTimeout.call(null, marker);\n    } catch (e) {\n      // 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.\n      // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n      return cachedClearTimeout.call(this, marker);\n    }\n  }\n}\n\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n  if (!draining || !currentQueue) {\n    return;\n  }\n\n  draining = false;\n\n  if (currentQueue.length) {\n    queue = currentQueue.concat(queue);\n  } else {\n    queueIndex = -1;\n  }\n\n  if (queue.length) {\n    drainQueue();\n  }\n}\n\nfunction drainQueue() {\n  if (draining) {\n    return;\n  }\n\n  var timeout = runTimeout(cleanUpNextTick);\n  draining = true;\n  var len = queue.length;\n\n  while (len) {\n    currentQueue = queue;\n    queue = [];\n\n    while (++queueIndex < len) {\n      if (currentQueue) {\n        currentQueue[queueIndex].run();\n      }\n    }\n\n    queueIndex = -1;\n    len = queue.length;\n  }\n\n  currentQueue = null;\n  draining = false;\n  runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n  var args = new Array(arguments.length - 1);\n\n  if (arguments.length > 1) {\n    for (var i = 1; i < arguments.length; i++) {\n      args[i - 1] = arguments[i];\n    }\n  }\n\n  queue.push(new Item(fun, args));\n\n  if (queue.length === 1 && !draining) {\n    runTimeout(drainQueue);\n  }\n}; // v8 likes predictible objects\n\n\nfunction Item(fun, array) {\n  this.fun = fun;\n  this.array = array;\n}\n\nItem.prototype.run = function () {\n  this.fun.apply(null, this.array);\n};\n\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\n\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) {\n  return [];\n};\n\nprocess.binding = function (name) {\n  throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () {\n  return '/';\n};\n\nprocess.chdir = function (dir) {\n  throw new Error('process.chdir is not supported');\n};\n\nprocess.umask = function () {\n  return 0;\n};","var isSymbol = require('./isSymbol');\n/** Used as references for various `Number` constants. */\n\n\nvar INFINITY = 1 / 0;\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\n\nfunction toKey(value) {\n  if (typeof value == 'string' || isSymbol(value)) {\n    return value;\n  }\n\n  var result = value + '';\n  return result == '0' && 1 / value == -INFINITY ? '-0' : result;\n}\n\nmodule.exports = toKey;","var isArray = require('./isArray'),\n    isSymbol = require('./isSymbol');\n/** Used to match property names within property paths. */\n\n\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n    reIsPlainProp = /^\\w*$/;\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\n\nfunction isKey(value, object) {\n  if (isArray(value)) {\n    return false;\n  }\n\n  var type = typeof value;\n\n  if (type == 'number' || type == 'symbol' || type == 'boolean' || value == null || isSymbol(value)) {\n    return true;\n  }\n\n  return reIsPlainProp.test(value) || !reIsDeepProp.test(value) || object != null && value in Object(object);\n}\n\nmodule.exports = isKey;","var isPrototype = require('./_isPrototype'),\n    nativeKeys = require('./_nativeKeys');\n/** Used for built-in method references. */\n\n\nvar objectProto = Object.prototype;\n/** Used to check objects for own properties. */\n\nvar hasOwnProperty = objectProto.hasOwnProperty;\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n\nfunction baseKeys(object) {\n  if (!isPrototype(object)) {\n    return nativeKeys(object);\n  }\n\n  var result = [];\n\n  for (var key in Object(object)) {\n    if (hasOwnProperty.call(object, key) && key != 'constructor') {\n      result.push(key);\n    }\n  }\n\n  return result;\n}\n\nmodule.exports = baseKeys;","require(\"core-js/modules/es6.regexp.to-string\");\n\nrequire(\"core-js/modules/es6.date.to-string\");\n\nrequire(\"core-js/modules/es6.object.to-string\");\n\nvar Symbol = require('./_Symbol');\n/** Used for built-in method references. */\n\n\nvar objectProto = Object.prototype;\n/** Used to check objects for own properties. */\n\nvar hasOwnProperty = objectProto.hasOwnProperty;\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\n\nvar nativeObjectToString = objectProto.toString;\n/** Built-in value references. */\n\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\n\nfunction getRawTag(value) {\n  var isOwn = hasOwnProperty.call(value, symToStringTag),\n      tag = value[symToStringTag];\n\n  try {\n    value[symToStringTag] = undefined;\n    var unmasked = true;\n  } catch (e) {}\n\n  var result = nativeObjectToString.call(value);\n\n  if (unmasked) {\n    if (isOwn) {\n      value[symToStringTag] = tag;\n    } else {\n      delete value[symToStringTag];\n    }\n  }\n\n  return result;\n}\n\nmodule.exports = getRawTag;","'use strict';\nvar $export = require('./_export');\nvar toObject = require('./_to-object');\nvar toPrimitive = require('./_to-primitive');\n\n$export($export.P + $export.F * require('./_fails')(function () {\n  return new Date(NaN).toJSON() !== null\n    || Date.prototype.toJSON.call({ toISOString: function () { return 1; } }) !== 1;\n}), 'Date', {\n  // eslint-disable-next-line no-unused-vars\n  toJSON: function toJSON(key) {\n    var O = toObject(this);\n    var pv = toPrimitive(O);\n    return typeof pv == 'number' && !isFinite(pv) ? null : O.toISOString();\n  }\n});\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n  return false;\n}\n\nmodule.exports = stubFalse;","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n  var index = -1,\n      length = values.length,\n      offset = array.length;\n\n  while (++index < length) {\n    array[offset + index] = values[index];\n  }\n\n  return array;\n}\n\nmodule.exports = arrayPush;","var isObject = require('./isObject');\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n *  equality comparisons, else `false`.\n */\n\n\nfunction isStrictComparable(value) {\n  return value === value && !isObject(value);\n}\n\nmodule.exports = isStrictComparable;","var baseIsNative = require('./_baseIsNative'),\n    getValue = require('./_getValue');\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\n\n\nfunction getNative(object, key) {\n  var value = getValue(object, key);\n  return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;","// 20.2.2.28 Math.sign(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', { sign: require('./_math-sign') });\n","var root = require('./_root'),\n    stubFalse = require('./stubFalse');\n/** Detect free variable `exports`. */\n\n\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n/** Detect free variable `module`. */\n\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n/** Detect the popular CommonJS extension `module.exports`. */\n\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n/** Built-in value references. */\n\nvar Buffer = moduleExports ? root.Buffer : undefined;\n/* Built-in method references for those with the same name as other `lodash` methods. */\n\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\n\nvar isBuffer = nativeIsBuffer || stubFalse;\nmodule.exports = isBuffer;","// 19.1.2.5 Object.freeze(O)\nvar isObject = require('./_is-object');\nvar meta = require('./_meta').onFreeze;\n\nrequire('./_object-sap')('freeze', function ($freeze) {\n  return function freeze(it) {\n    return $freeze && isObject(it) ? $freeze(meta(it)) : it;\n  };\n});\n","require(\"core-js/modules/web.dom.iterable\");\n\nrequire(\"core-js/modules/es6.array.iterator\");\n\nrequire(\"core-js/modules/es6.object.to-string\");\n\nvar coreJsData = require('./_coreJsData');\n/** Used to detect methods masquerading as native. */\n\n\nvar maskSrcKey = function () {\n  var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n  return uid ? 'Symbol(src)_1.' + uid : '';\n}();\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\n\n\nfunction isMasked(func) {\n  return !!maskSrcKey && maskSrcKey in func;\n}\n\nmodule.exports = isMasked;","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n  var type = typeof value;\n  return type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean' ? value !== '__proto__' : value === null;\n}\n\nmodule.exports = isKeyable;","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;","// 19.1.2.11 Object.isExtensible(O)\nvar isObject = require('./_is-object');\n\nrequire('./_object-sap')('isExtensible', function ($isExtensible) {\n  return function isExtensible(it) {\n    return isObject(it) ? $isExtensible ? $isExtensible(it) : true : false;\n  };\n});\n","var baseIsEqual = require('./_baseIsEqual'),\n    get = require('./get'),\n    hasIn = require('./hasIn'),\n    isKey = require('./_isKey'),\n    isStrictComparable = require('./_isStrictComparable'),\n    matchesStrictComparable = require('./_matchesStrictComparable'),\n    toKey = require('./_toKey');\n/** Used to compose bitmasks for value comparisons. */\n\n\nvar COMPARE_PARTIAL_FLAG = 1,\n    COMPARE_UNORDERED_FLAG = 2;\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\n\nfunction baseMatchesProperty(path, srcValue) {\n  if (isKey(path) && isStrictComparable(srcValue)) {\n    return matchesStrictComparable(toKey(path), srcValue);\n  }\n\n  return function (object) {\n    var objValue = get(object, path);\n    return objValue === undefined && objValue === srcValue ? hasIn(object, path) : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n  };\n}\n\nmodule.exports = baseMatchesProperty;","require(\"core-js/modules/es6.regexp.replace\");\n\nvar memoizeCapped = require('./_memoizeCapped');\n/** Used to match property names within property paths. */\n\n\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n/** Used to match backslashes in property paths. */\n\nvar reEscapeChar = /\\\\(\\\\)?/g;\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\n\nvar stringToPath = memoizeCapped(function (string) {\n  var result = [];\n\n  if (string.charCodeAt(0) === 46\n  /* . */\n  ) {\n      result.push('');\n    }\n\n  string.replace(rePropName, function (match, number, quote, subString) {\n    result.push(quote ? subString.replace(reEscapeChar, '$1') : number || match);\n  });\n  return result;\n});\nmodule.exports = stringToPath;","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n  var type = typeof value;\n  return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;","var getMapData = require('./_getMapData');\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\n\n\nfunction mapCacheSet(key, value) {\n  var data = getMapData(this, key),\n      size = data.size;\n  data.set(key, value);\n  this.size += data.size == size ? 0 : 1;\n  return this;\n}\n\nmodule.exports = mapCacheSet;","require(\"core-js/modules/es6.function.name\");\n\nvar Symbol = require('./_Symbol'),\n    Uint8Array = require('./_Uint8Array'),\n    eq = require('./eq'),\n    equalArrays = require('./_equalArrays'),\n    mapToArray = require('./_mapToArray'),\n    setToArray = require('./_setToArray');\n/** Used to compose bitmasks for value comparisons. */\n\n\nvar COMPARE_PARTIAL_FLAG = 1,\n    COMPARE_UNORDERED_FLAG = 2;\n/** `Object#toString` result references. */\n\nvar boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    errorTag = '[object Error]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    symbolTag = '[object Symbol]';\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]';\n/** Used to convert symbols to primitives and strings. */\n\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n    symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n  switch (tag) {\n    case dataViewTag:\n      if (object.byteLength != other.byteLength || object.byteOffset != other.byteOffset) {\n        return false;\n      }\n\n      object = object.buffer;\n      other = other.buffer;\n\n    case arrayBufferTag:\n      if (object.byteLength != other.byteLength || !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n        return false;\n      }\n\n      return true;\n\n    case boolTag:\n    case dateTag:\n    case numberTag:\n      // Coerce booleans to `1` or `0` and dates to milliseconds.\n      // Invalid dates are coerced to `NaN`.\n      return eq(+object, +other);\n\n    case errorTag:\n      return object.name == other.name && object.message == other.message;\n\n    case regexpTag:\n    case stringTag:\n      // Coerce regexes to strings and treat strings, primitives and objects,\n      // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n      // for more details.\n      return object == other + '';\n\n    case mapTag:\n      var convert = mapToArray;\n\n    case setTag:\n      var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n      convert || (convert = setToArray);\n\n      if (object.size != other.size && !isPartial) {\n        return false;\n      } // Assume cyclic values are equal.\n\n\n      var stacked = stack.get(object);\n\n      if (stacked) {\n        return stacked == other;\n      }\n\n      bitmask |= COMPARE_UNORDERED_FLAG; // Recursively compare objects (susceptible to call stack limits).\n\n      stack.set(object, other);\n      var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n      stack['delete'](object);\n      return result;\n\n    case symbolTag:\n      if (symbolValueOf) {\n        return symbolValueOf.call(object) == symbolValueOf.call(other);\n      }\n\n  }\n\n  return false;\n}\n\nmodule.exports = equalByTag;","var getNative = require('./_getNative'),\n    root = require('./_root');\n/* Built-in method references that are verified to be native. */\n\n\nvar Promise = getNative(root, 'Promise');\nmodule.exports = Promise;","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n  var result = this.has(key) && delete this.__data__[key];\n  this.size -= result ? 1 : 0;\n  return result;\n}\n\nmodule.exports = hashDelete;","var memoize = require('./memoize');\n/** Used as the maximum memoize cache size. */\n\n\nvar MAX_MEMOIZE_SIZE = 500;\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\n\nfunction memoizeCapped(func) {\n  var result = memoize(func, function (key) {\n    if (cache.size === MAX_MEMOIZE_SIZE) {\n      cache.clear();\n    }\n\n    return key;\n  });\n  var cache = result.cache;\n  return result;\n}\n\nmodule.exports = memoizeCapped;","'use strict';\n// 22.1.3.9 Array.prototype.findIndex(predicate, thisArg = undefined)\nvar $export = require('./_export');\nvar $find = require('./_array-methods')(6);\nvar KEY = 'findIndex';\nvar forced = true;\n// Shouldn't skip holes\nif (KEY in []) Array(1)[KEY](function () { forced = false; });\n$export($export.P + $export.F * forced, 'Array', {\n  findIndex: function findIndex(callbackfn /* , that = undefined */) {\n    return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\nrequire('./_add-to-unscopables')(KEY);\n","/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n  return function (object) {\n    if (object == null) {\n      return false;\n    }\n\n    return object[key] === srcValue && (srcValue !== undefined || key in Object(object));\n  };\n}\n\nmodule.exports = matchesStrictComparable;","var baseFor = require('./_baseFor'),\n    keys = require('./keys');\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n\n\nfunction baseForOwn(object, iteratee) {\n  return object && baseFor(object, iteratee, keys);\n}\n\nmodule.exports = baseForOwn;","var baseEach = require('./_baseEach');\n/**\n * Aggregates elements of `collection` on `accumulator` with keys transformed\n * by `iteratee` and values set by `setter`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n\n\nfunction baseAggregator(collection, setter, iteratee, accumulator) {\n  baseEach(collection, function (value, key, collection) {\n    setter(accumulator, value, iteratee(value), collection);\n  });\n  return accumulator;\n}\n\nmodule.exports = baseAggregator;","var root = require('./_root');\n/** Built-in value references. */\n\n\nvar Uint8Array = root.Uint8Array;\nmodule.exports = Uint8Array;","var getMapData = require('./_getMapData');\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n\n\nfunction mapCacheGet(key) {\n  return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;","var nativeCreate = require('./_nativeCreate');\n/** Used to stand-in for `undefined` hash values. */\n\n\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\n\nfunction hashSet(key, value) {\n  var data = this.__data__;\n  this.size += this.has(key) ? 0 : 1;\n  data[key] = nativeCreate && value === undefined ? HASH_UNDEFINED : value;\n  return this;\n}\n\nmodule.exports = hashSet;","var baseGetTag = require('./_baseGetTag'),\n    isObjectLike = require('./isObjectLike');\n/** `Object#toString` result references. */\n\n\nvar argsTag = '[object Arguments]';\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\n\nfunction baseIsArguments(value) {\n  return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;","/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n  return object != null && key in Object(object);\n}\n\nmodule.exports = baseHasIn;","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n  this.__data__ = [];\n  this.size = 0;\n}\n\nmodule.exports = listCacheClear;","require(\"core-js/modules/es6.regexp.to-string\");\n\nrequire(\"core-js/modules/es6.date.to-string\");\n\nrequire(\"core-js/modules/es6.object.to-string\");\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\n\nvar nativeObjectToString = objectProto.toString;\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\n\nfunction objectToString(value) {\n  return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;","var freeGlobal = require('./_freeGlobal');\n/** Detect free variable `self`. */\n\n\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n/** Used as a reference to the global object. */\n\nvar root = freeGlobal || freeSelf || Function('return this')();\nmodule.exports = root;","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n  var data = this.__data__,\n      result = data['delete'](key);\n  this.size = data.size;\n  return result;\n}\n\nmodule.exports = stackDelete;","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n  var index = -1,\n      length = array == null ? 0 : array.length,\n      resIndex = 0,\n      result = [];\n\n  while (++index < length) {\n    var value = array[index];\n\n    if (predicate(value, index, array)) {\n      result[resIndex++] = value;\n    }\n  }\n\n  return result;\n}\n\nmodule.exports = arrayFilter;","// 20.1.2.1 Number.EPSILON\nvar $export = require('./_export');\n\n$export($export.S, 'Number', { EPSILON: Math.pow(2, -52) });\n","var isFunction = require('./isFunction'),\n    isLength = require('./isLength');\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\n\n\nfunction isArrayLike(value) {\n  return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;","require(\"core-js/modules/es6.number.max-safe-integer\");\n\nrequire(\"core-js/modules/es6.number.min-safe-integer\");\n\nrequire(\"core-js/modules/es6.number.epsilon\");\n\nrequire(\"core-js/modules/es6.math.sign\");\n\nrequire(\"core-js/modules/es6.array.reduce\");\n\nrequire(\"core-js/modules/es6.function.bind\");\n\nrequire(\"core-js/modules/es6.array.filter\");\n\nrequire(\"core-js/modules/es6.object.freeze\");\n\nrequire(\"core-js/modules/es6.object.is-extensible\");\n\nrequire(\"core-js/modules/es6.array.find-index\");\n\nrequire(\"core-js/modules/es6.date.now\");\n\nrequire(\"core-js/modules/es6.math.log10\");\n\nrequire(\"core-js/modules/es6.array.sort\");\n\nrequire(\"core-js/modules/es6.array.fill\");\n\nrequire(\"core-js/modules/es6.array.index-of\");\n\nrequire(\"core-js/modules/es6.object.assign\");\n\nrequire(\"core-js/modules/es6.number.constructor\");\n\nrequire(\"core-js/modules/es6.array.is-array\");\n\nrequire(\"core-js/modules/es6.array.for-each\");\n\nrequire(\"core-js/modules/web.dom.iterable\");\n\nrequire(\"core-js/modules/es6.array.iterator\");\n\nrequire(\"core-js/modules/es6.object.keys\");\n\nrequire(\"core-js/modules/es6.regexp.split\");\n\nrequire(\"core-js/modules/es6.array.map\");\n\nrequire(\"core-js/modules/es6.regexp.match\");\n\nrequire(\"core-js/modules/es6.regexp.to-string\");\n\nrequire(\"core-js/modules/es6.date.to-string\");\n\nrequire(\"core-js/modules/es6.object.to-string\");\n\nrequire(\"core-js/modules/es6.object.define-property\");\n\n/*!\n * Chart.js v2.9.3\n * https://www.chartjs.org\n * (c) 2019 Chart.js Contributors\n * Released under the MIT License\n */\n(function (global, factory) {\n  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(function () {\n    try {\n      return require('moment');\n    } catch (e) {}\n  }()) : typeof define === 'function' && define.amd ? define(['require'], function (require) {\n    return factory(function () {\n      try {\n        return require('moment');\n      } catch (e) {}\n    }());\n  }) : (global = global || self, global.Chart = factory(global.moment));\n})(this, function (moment) {\n  'use strict';\n\n  moment = moment && moment.hasOwnProperty('default') ? moment['default'] : moment;\n\n  function createCommonjsModule(fn, module) {\n    return module = {\n      exports: {}\n    }, fn(module, module.exports), module.exports;\n  }\n\n  function getCjsExportFromNamespace(n) {\n    return n && n['default'] || n;\n  }\n\n  var colorName = {\n    \"aliceblue\": [240, 248, 255],\n    \"antiquewhite\": [250, 235, 215],\n    \"aqua\": [0, 255, 255],\n    \"aquamarine\": [127, 255, 212],\n    \"azure\": [240, 255, 255],\n    \"beige\": [245, 245, 220],\n    \"bisque\": [255, 228, 196],\n    \"black\": [0, 0, 0],\n    \"blanchedalmond\": [255, 235, 205],\n    \"blue\": [0, 0, 255],\n    \"blueviolet\": [138, 43, 226],\n    \"brown\": [165, 42, 42],\n    \"burlywood\": [222, 184, 135],\n    \"cadetblue\": [95, 158, 160],\n    \"chartreuse\": [127, 255, 0],\n    \"chocolate\": [210, 105, 30],\n    \"coral\": [255, 127, 80],\n    \"cornflowerblue\": [100, 149, 237],\n    \"cornsilk\": [255, 248, 220],\n    \"crimson\": [220, 20, 60],\n    \"cyan\": [0, 255, 255],\n    \"darkblue\": [0, 0, 139],\n    \"darkcyan\": [0, 139, 139],\n    \"darkgoldenrod\": [184, 134, 11],\n    \"darkgray\": [169, 169, 169],\n    \"darkgreen\": [0, 100, 0],\n    \"darkgrey\": [169, 169, 169],\n    \"darkkhaki\": [189, 183, 107],\n    \"darkmagenta\": [139, 0, 139],\n    \"darkolivegreen\": [85, 107, 47],\n    \"darkorange\": [255, 140, 0],\n    \"darkorchid\": [153, 50, 204],\n    \"darkred\": [139, 0, 0],\n    \"darksalmon\": [233, 150, 122],\n    \"darkseagreen\": [143, 188, 143],\n    \"darkslateblue\": [72, 61, 139],\n    \"darkslategray\": [47, 79, 79],\n    \"darkslategrey\": [47, 79, 79],\n    \"darkturquoise\": [0, 206, 209],\n    \"darkviolet\": [148, 0, 211],\n    \"deeppink\": [255, 20, 147],\n    \"deepskyblue\": [0, 191, 255],\n    \"dimgray\": [105, 105, 105],\n    \"dimgrey\": [105, 105, 105],\n    \"dodgerblue\": [30, 144, 255],\n    \"firebrick\": [178, 34, 34],\n    \"floralwhite\": [255, 250, 240],\n    \"forestgreen\": [34, 139, 34],\n    \"fuchsia\": [255, 0, 255],\n    \"gainsboro\": [220, 220, 220],\n    \"ghostwhite\": [248, 248, 255],\n    \"gold\": [255, 215, 0],\n    \"goldenrod\": [218, 165, 32],\n    \"gray\": [128, 128, 128],\n    \"green\": [0, 128, 0],\n    \"greenyellow\": [173, 255, 47],\n    \"grey\": [128, 128, 128],\n    \"honeydew\": [240, 255, 240],\n    \"hotpink\": [255, 105, 180],\n    \"indianred\": [205, 92, 92],\n    \"indigo\": [75, 0, 130],\n    \"ivory\": [255, 255, 240],\n    \"khaki\": [240, 230, 140],\n    \"lavender\": [230, 230, 250],\n    \"lavenderblush\": [255, 240, 245],\n    \"lawngreen\": [124, 252, 0],\n    \"lemonchiffon\": [255, 250, 205],\n    \"lightblue\": [173, 216, 230],\n    \"lightcoral\": [240, 128, 128],\n    \"lightcyan\": [224, 255, 255],\n    \"lightgoldenrodyellow\": [250, 250, 210],\n    \"lightgray\": [211, 211, 211],\n    \"lightgreen\": [144, 238, 144],\n    \"lightgrey\": [211, 211, 211],\n    \"lightpink\": [255, 182, 193],\n    \"lightsalmon\": [255, 160, 122],\n    \"lightseagreen\": [32, 178, 170],\n    \"lightskyblue\": [135, 206, 250],\n    \"lightslategray\": [119, 136, 153],\n    \"lightslategrey\": [119, 136, 153],\n    \"lightsteelblue\": [176, 196, 222],\n    \"lightyellow\": [255, 255, 224],\n    \"lime\": [0, 255, 0],\n    \"limegreen\": [50, 205, 50],\n    \"linen\": [250, 240, 230],\n    \"magenta\": [255, 0, 255],\n    \"maroon\": [128, 0, 0],\n    \"mediumaquamarine\": [102, 205, 170],\n    \"mediumblue\": [0, 0, 205],\n    \"mediumorchid\": [186, 85, 211],\n    \"mediumpurple\": [147, 112, 219],\n    \"mediumseagreen\": [60, 179, 113],\n    \"mediumslateblue\": [123, 104, 238],\n    \"mediumspringgreen\": [0, 250, 154],\n    \"mediumturquoise\": [72, 209, 204],\n    \"mediumvioletred\": [199, 21, 133],\n    \"midnightblue\": [25, 25, 112],\n    \"mintcream\": [245, 255, 250],\n    \"mistyrose\": [255, 228, 225],\n    \"moccasin\": [255, 228, 181],\n    \"navajowhite\": [255, 222, 173],\n    \"navy\": [0, 0, 128],\n    \"oldlace\": [253, 245, 230],\n    \"olive\": [128, 128, 0],\n    \"olivedrab\": [107, 142, 35],\n    \"orange\": [255, 165, 0],\n    \"orangered\": [255, 69, 0],\n    \"orchid\": [218, 112, 214],\n    \"palegoldenrod\": [238, 232, 170],\n    \"palegreen\": [152, 251, 152],\n    \"paleturquoise\": [175, 238, 238],\n    \"palevioletred\": [219, 112, 147],\n    \"papayawhip\": [255, 239, 213],\n    \"peachpuff\": [255, 218, 185],\n    \"peru\": [205, 133, 63],\n    \"pink\": [255, 192, 203],\n    \"plum\": [221, 160, 221],\n    \"powderblue\": [176, 224, 230],\n    \"purple\": [128, 0, 128],\n    \"rebeccapurple\": [102, 51, 153],\n    \"red\": [255, 0, 0],\n    \"rosybrown\": [188, 143, 143],\n    \"royalblue\": [65, 105, 225],\n    \"saddlebrown\": [139, 69, 19],\n    \"salmon\": [250, 128, 114],\n    \"sandybrown\": [244, 164, 96],\n    \"seagreen\": [46, 139, 87],\n    \"seashell\": [255, 245, 238],\n    \"sienna\": [160, 82, 45],\n    \"silver\": [192, 192, 192],\n    \"skyblue\": [135, 206, 235],\n    \"slateblue\": [106, 90, 205],\n    \"slategray\": [112, 128, 144],\n    \"slategrey\": [112, 128, 144],\n    \"snow\": [255, 250, 250],\n    \"springgreen\": [0, 255, 127],\n    \"steelblue\": [70, 130, 180],\n    \"tan\": [210, 180, 140],\n    \"teal\": [0, 128, 128],\n    \"thistle\": [216, 191, 216],\n    \"tomato\": [255, 99, 71],\n    \"turquoise\": [64, 224, 208],\n    \"violet\": [238, 130, 238],\n    \"wheat\": [245, 222, 179],\n    \"white\": [255, 255, 255],\n    \"whitesmoke\": [245, 245, 245],\n    \"yellow\": [255, 255, 0],\n    \"yellowgreen\": [154, 205, 50]\n  };\n  var conversions = createCommonjsModule(function (module) {\n    /* MIT license */\n    // NOTE: conversions should only return primitive values (i.e. arrays, or\n    //       values that give correct `typeof` results).\n    //       do not use box values types (i.e. Number(), String(), etc.)\n    var reverseKeywords = {};\n\n    for (var key in colorName) {\n      if (colorName.hasOwnProperty(key)) {\n        reverseKeywords[colorName[key]] = key;\n      }\n    }\n\n    var convert = module.exports = {\n      rgb: {\n        channels: 3,\n        labels: 'rgb'\n      },\n      hsl: {\n        channels: 3,\n        labels: 'hsl'\n      },\n      hsv: {\n        channels: 3,\n        labels: 'hsv'\n      },\n      hwb: {\n        channels: 3,\n        labels: 'hwb'\n      },\n      cmyk: {\n        channels: 4,\n        labels: 'cmyk'\n      },\n      xyz: {\n        channels: 3,\n        labels: 'xyz'\n      },\n      lab: {\n        channels: 3,\n        labels: 'lab'\n      },\n      lch: {\n        channels: 3,\n        labels: 'lch'\n      },\n      hex: {\n        channels: 1,\n        labels: ['hex']\n      },\n      keyword: {\n        channels: 1,\n        labels: ['keyword']\n      },\n      ansi16: {\n        channels: 1,\n        labels: ['ansi16']\n      },\n      ansi256: {\n        channels: 1,\n        labels: ['ansi256']\n      },\n      hcg: {\n        channels: 3,\n        labels: ['h', 'c', 'g']\n      },\n      apple: {\n        channels: 3,\n        labels: ['r16', 'g16', 'b16']\n      },\n      gray: {\n        channels: 1,\n        labels: ['gray']\n      }\n    }; // hide .channels and .labels properties\n\n    for (var model in convert) {\n      if (convert.hasOwnProperty(model)) {\n        if (!('channels' in convert[model])) {\n          throw new Error('missing channels property: ' + model);\n        }\n\n        if (!('labels' in convert[model])) {\n          throw new Error('missing channel labels property: ' + model);\n        }\n\n        if (convert[model].labels.length !== convert[model].channels) {\n          throw new Error('channel and label counts mismatch: ' + model);\n        }\n\n        var channels = convert[model].channels;\n        var labels = convert[model].labels;\n        delete convert[model].channels;\n        delete convert[model].labels;\n        Object.defineProperty(convert[model], 'channels', {\n          value: channels\n        });\n        Object.defineProperty(convert[model], 'labels', {\n          value: labels\n        });\n      }\n    }\n\n    convert.rgb.hsl = function (rgb) {\n      var r = rgb[0] / 255;\n      var g = rgb[1] / 255;\n      var b = rgb[2] / 255;\n      var min = Math.min(r, g, b);\n      var max = Math.max(r, g, b);\n      var delta = max - min;\n      var h;\n      var s;\n      var l;\n\n      if (max === min) {\n        h = 0;\n      } else if (r === max) {\n        h = (g - b) / delta;\n      } else if (g === max) {\n        h = 2 + (b - r) / delta;\n      } else if (b === max) {\n        h = 4 + (r - g) / delta;\n      }\n\n      h = Math.min(h * 60, 360);\n\n      if (h < 0) {\n        h += 360;\n      }\n\n      l = (min + max) / 2;\n\n      if (max === min) {\n        s = 0;\n      } else if (l <= 0.5) {\n        s = delta / (max + min);\n      } else {\n        s = delta / (2 - max - min);\n      }\n\n      return [h, s * 100, l * 100];\n    };\n\n    convert.rgb.hsv = function (rgb) {\n      var rdif;\n      var gdif;\n      var bdif;\n      var h;\n      var s;\n      var r = rgb[0] / 255;\n      var g = rgb[1] / 255;\n      var b = rgb[2] / 255;\n      var v = Math.max(r, g, b);\n      var diff = v - Math.min(r, g, b);\n\n      var diffc = function diffc(c) {\n        return (v - c) / 6 / diff + 1 / 2;\n      };\n\n      if (diff === 0) {\n        h = s = 0;\n      } else {\n        s = diff / v;\n        rdif = diffc(r);\n        gdif = diffc(g);\n        bdif = diffc(b);\n\n        if (r === v) {\n          h = bdif - gdif;\n        } else if (g === v) {\n          h = 1 / 3 + rdif - bdif;\n        } else if (b === v) {\n          h = 2 / 3 + gdif - rdif;\n        }\n\n        if (h < 0) {\n          h += 1;\n        } else if (h > 1) {\n          h -= 1;\n        }\n      }\n\n      return [h * 360, s * 100, v * 100];\n    };\n\n    convert.rgb.hwb = function (rgb) {\n      var r = rgb[0];\n      var g = rgb[1];\n      var b = rgb[2];\n      var h = convert.rgb.hsl(rgb)[0];\n      var w = 1 / 255 * Math.min(r, Math.min(g, b));\n      b = 1 - 1 / 255 * Math.max(r, Math.max(g, b));\n      return [h, w * 100, b * 100];\n    };\n\n    convert.rgb.cmyk = function (rgb) {\n      var r = rgb[0] / 255;\n      var g = rgb[1] / 255;\n      var b = rgb[2] / 255;\n      var c;\n      var m;\n      var y;\n      var k;\n      k = Math.min(1 - r, 1 - g, 1 - b);\n      c = (1 - r - k) / (1 - k) || 0;\n      m = (1 - g - k) / (1 - k) || 0;\n      y = (1 - b - k) / (1 - k) || 0;\n      return [c * 100, m * 100, y * 100, k * 100];\n    };\n    /**\n     * See https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance\n     * */\n\n\n    function comparativeDistance(x, y) {\n      return Math.pow(x[0] - y[0], 2) + Math.pow(x[1] - y[1], 2) + Math.pow(x[2] - y[2], 2);\n    }\n\n    convert.rgb.keyword = function (rgb) {\n      var reversed = reverseKeywords[rgb];\n\n      if (reversed) {\n        return reversed;\n      }\n\n      var currentClosestDistance = Infinity;\n      var currentClosestKeyword;\n\n      for (var keyword in colorName) {\n        if (colorName.hasOwnProperty(keyword)) {\n          var value = colorName[keyword]; // Compute comparative distance\n\n          var distance = comparativeDistance(rgb, value); // Check if its less, if so set as closest\n\n          if (distance < currentClosestDistance) {\n            currentClosestDistance = distance;\n            currentClosestKeyword = keyword;\n          }\n        }\n      }\n\n      return currentClosestKeyword;\n    };\n\n    convert.keyword.rgb = function (keyword) {\n      return colorName[keyword];\n    };\n\n    convert.rgb.xyz = function (rgb) {\n      var r = rgb[0] / 255;\n      var g = rgb[1] / 255;\n      var b = rgb[2] / 255; // assume sRGB\n\n      r = r > 0.04045 ? Math.pow((r + 0.055) / 1.055, 2.4) : r / 12.92;\n      g = g > 0.04045 ? Math.pow((g + 0.055) / 1.055, 2.4) : g / 12.92;\n      b = b > 0.04045 ? Math.pow((b + 0.055) / 1.055, 2.4) : b / 12.92;\n      var x = r * 0.4124 + g * 0.3576 + b * 0.1805;\n      var y = r * 0.2126 + g * 0.7152 + b * 0.0722;\n      var z = r * 0.0193 + g * 0.1192 + b * 0.9505;\n      return [x * 100, y * 100, z * 100];\n    };\n\n    convert.rgb.lab = function (rgb) {\n      var xyz = convert.rgb.xyz(rgb);\n      var x = xyz[0];\n      var y = xyz[1];\n      var z = xyz[2];\n      var l;\n      var a;\n      var b;\n      x /= 95.047;\n      y /= 100;\n      z /= 108.883;\n      x = x > 0.008856 ? Math.pow(x, 1 / 3) : 7.787 * x + 16 / 116;\n      y = y > 0.008856 ? Math.pow(y, 1 / 3) : 7.787 * y + 16 / 116;\n      z = z > 0.008856 ? Math.pow(z, 1 / 3) : 7.787 * z + 16 / 116;\n      l = 116 * y - 16;\n      a = 500 * (x - y);\n      b = 200 * (y - z);\n      return [l, a, b];\n    };\n\n    convert.hsl.rgb = function (hsl) {\n      var h = hsl[0] / 360;\n      var s = hsl[1] / 100;\n      var l = hsl[2] / 100;\n      var t1;\n      var t2;\n      var t3;\n      var rgb;\n      var val;\n\n      if (s === 0) {\n        val = l * 255;\n        return [val, val, val];\n      }\n\n      if (l < 0.5) {\n        t2 = l * (1 + s);\n      } else {\n        t2 = l + s - l * s;\n      }\n\n      t1 = 2 * l - t2;\n      rgb = [0, 0, 0];\n\n      for (var i = 0; i < 3; i++) {\n        t3 = h + 1 / 3 * -(i - 1);\n\n        if (t3 < 0) {\n          t3++;\n        }\n\n        if (t3 > 1) {\n          t3--;\n        }\n\n        if (6 * t3 < 1) {\n          val = t1 + (t2 - t1) * 6 * t3;\n        } else if (2 * t3 < 1) {\n          val = t2;\n        } else if (3 * t3 < 2) {\n          val = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n        } else {\n          val = t1;\n        }\n\n        rgb[i] = val * 255;\n      }\n\n      return rgb;\n    };\n\n    convert.hsl.hsv = function (hsl) {\n      var h = hsl[0];\n      var s = hsl[1] / 100;\n      var l = hsl[2] / 100;\n      var smin = s;\n      var lmin = Math.max(l, 0.01);\n      var sv;\n      var v;\n      l *= 2;\n      s *= l <= 1 ? l : 2 - l;\n      smin *= lmin <= 1 ? lmin : 2 - lmin;\n      v = (l + s) / 2;\n      sv = l === 0 ? 2 * smin / (lmin + smin) : 2 * s / (l + s);\n      return [h, sv * 100, v * 100];\n    };\n\n    convert.hsv.rgb = function (hsv) {\n      var h = hsv[0] / 60;\n      var s = hsv[1] / 100;\n      var v = hsv[2] / 100;\n      var hi = Math.floor(h) % 6;\n      var f = h - Math.floor(h);\n      var p = 255 * v * (1 - s);\n      var q = 255 * v * (1 - s * f);\n      var t = 255 * v * (1 - s * (1 - f));\n      v *= 255;\n\n      switch (hi) {\n        case 0:\n          return [v, t, p];\n\n        case 1:\n          return [q, v, p];\n\n        case 2:\n          return [p, v, t];\n\n        case 3:\n          return [p, q, v];\n\n        case 4:\n          return [t, p, v];\n\n        case 5:\n          return [v, p, q];\n      }\n    };\n\n    convert.hsv.hsl = function (hsv) {\n      var h = hsv[0];\n      var s = hsv[1] / 100;\n      var v = hsv[2] / 100;\n      var vmin = Math.max(v, 0.01);\n      var lmin;\n      var sl;\n      var l;\n      l = (2 - s) * v;\n      lmin = (2 - s) * vmin;\n      sl = s * vmin;\n      sl /= lmin <= 1 ? lmin : 2 - lmin;\n      sl = sl || 0;\n      l /= 2;\n      return [h, sl * 100, l * 100];\n    }; // http://dev.w3.org/csswg/css-color/#hwb-to-rgb\n\n\n    convert.hwb.rgb = function (hwb) {\n      var h = hwb[0] / 360;\n      var wh = hwb[1] / 100;\n      var bl = hwb[2] / 100;\n      var ratio = wh + bl;\n      var i;\n      var v;\n      var f;\n      var n; // wh + bl cant be > 1\n\n      if (ratio > 1) {\n        wh /= ratio;\n        bl /= ratio;\n      }\n\n      i = Math.floor(6 * h);\n      v = 1 - bl;\n      f = 6 * h - i;\n\n      if ((i & 0x01) !== 0) {\n        f = 1 - f;\n      }\n\n      n = wh + f * (v - wh); // linear interpolation\n\n      var r;\n      var g;\n      var b;\n\n      switch (i) {\n        default:\n        case 6:\n        case 0:\n          r = v;\n          g = n;\n          b = wh;\n          break;\n\n        case 1:\n          r = n;\n          g = v;\n          b = wh;\n          break;\n\n        case 2:\n          r = wh;\n          g = v;\n          b = n;\n          break;\n\n        case 3:\n          r = wh;\n          g = n;\n          b = v;\n          break;\n\n        case 4:\n          r = n;\n          g = wh;\n          b = v;\n          break;\n\n        case 5:\n          r = v;\n          g = wh;\n          b = n;\n          break;\n      }\n\n      return [r * 255, g * 255, b * 255];\n    };\n\n    convert.cmyk.rgb = function (cmyk) {\n      var c = cmyk[0] / 100;\n      var m = cmyk[1] / 100;\n      var y = cmyk[2] / 100;\n      var k = cmyk[3] / 100;\n      var r;\n      var g;\n      var b;\n      r = 1 - Math.min(1, c * (1 - k) + k);\n      g = 1 - Math.min(1, m * (1 - k) + k);\n      b = 1 - Math.min(1, y * (1 - k) + k);\n      return [r * 255, g * 255, b * 255];\n    };\n\n    convert.xyz.rgb = function (xyz) {\n      var x = xyz[0] / 100;\n      var y = xyz[1] / 100;\n      var z = xyz[2] / 100;\n      var r;\n      var g;\n      var b;\n      r = x * 3.2406 + y * -1.5372 + z * -0.4986;\n      g = x * -0.9689 + y * 1.8758 + z * 0.0415;\n      b = x * 0.0557 + y * -0.2040 + z * 1.0570; // assume sRGB\n\n      r = r > 0.0031308 ? 1.055 * Math.pow(r, 1.0 / 2.4) - 0.055 : r * 12.92;\n      g = g > 0.0031308 ? 1.055 * Math.pow(g, 1.0 / 2.4) - 0.055 : g * 12.92;\n      b = b > 0.0031308 ? 1.055 * Math.pow(b, 1.0 / 2.4) - 0.055 : b * 12.92;\n      r = Math.min(Math.max(0, r), 1);\n      g = Math.min(Math.max(0, g), 1);\n      b = Math.min(Math.max(0, b), 1);\n      return [r * 255, g * 255, b * 255];\n    };\n\n    convert.xyz.lab = function (xyz) {\n      var x = xyz[0];\n      var y = xyz[1];\n      var z = xyz[2];\n      var l;\n      var a;\n      var b;\n      x /= 95.047;\n      y /= 100;\n      z /= 108.883;\n      x = x > 0.008856 ? Math.pow(x, 1 / 3) : 7.787 * x + 16 / 116;\n      y = y > 0.008856 ? Math.pow(y, 1 / 3) : 7.787 * y + 16 / 116;\n      z = z > 0.008856 ? Math.pow(z, 1 / 3) : 7.787 * z + 16 / 116;\n      l = 116 * y - 16;\n      a = 500 * (x - y);\n      b = 200 * (y - z);\n      return [l, a, b];\n    };\n\n    convert.lab.xyz = function (lab) {\n      var l = lab[0];\n      var a = lab[1];\n      var b = lab[2];\n      var x;\n      var y;\n      var z;\n      y = (l + 16) / 116;\n      x = a / 500 + y;\n      z = y - b / 200;\n      var y2 = Math.pow(y, 3);\n      var x2 = Math.pow(x, 3);\n      var z2 = Math.pow(z, 3);\n      y = y2 > 0.008856 ? y2 : (y - 16 / 116) / 7.787;\n      x = x2 > 0.008856 ? x2 : (x - 16 / 116) / 7.787;\n      z = z2 > 0.008856 ? z2 : (z - 16 / 116) / 7.787;\n      x *= 95.047;\n      y *= 100;\n      z *= 108.883;\n      return [x, y, z];\n    };\n\n    convert.lab.lch = function (lab) {\n      var l = lab[0];\n      var a = lab[1];\n      var b = lab[2];\n      var hr;\n      var h;\n      var c;\n      hr = Math.atan2(b, a);\n      h = hr * 360 / 2 / Math.PI;\n\n      if (h < 0) {\n        h += 360;\n      }\n\n      c = Math.sqrt(a * a + b * b);\n      return [l, c, h];\n    };\n\n    convert.lch.lab = function (lch) {\n      var l = lch[0];\n      var c = lch[1];\n      var h = lch[2];\n      var a;\n      var b;\n      var hr;\n      hr = h / 360 * 2 * Math.PI;\n      a = c * Math.cos(hr);\n      b = c * Math.sin(hr);\n      return [l, a, b];\n    };\n\n    convert.rgb.ansi16 = function (args) {\n      var r = args[0];\n      var g = args[1];\n      var b = args[2];\n      var value = 1 in arguments ? arguments[1] : convert.rgb.hsv(args)[2]; // hsv -> ansi16 optimization\n\n      value = Math.round(value / 50);\n\n      if (value === 0) {\n        return 30;\n      }\n\n      var ansi = 30 + (Math.round(b / 255) << 2 | Math.round(g / 255) << 1 | Math.round(r / 255));\n\n      if (value === 2) {\n        ansi += 60;\n      }\n\n      return ansi;\n    };\n\n    convert.hsv.ansi16 = function (args) {\n      // optimization here; we already know the value and don't need to get\n      // it converted for us.\n      return convert.rgb.ansi16(convert.hsv.rgb(args), args[2]);\n    };\n\n    convert.rgb.ansi256 = function (args) {\n      var r = args[0];\n      var g = args[1];\n      var b = args[2]; // we use the extended greyscale palette here, with the exception of\n      // black and white. normal palette only has 4 greyscale shades.\n\n      if (r === g && g === b) {\n        if (r < 8) {\n          return 16;\n        }\n\n        if (r > 248) {\n          return 231;\n        }\n\n        return Math.round((r - 8) / 247 * 24) + 232;\n      }\n\n      var ansi = 16 + 36 * Math.round(r / 255 * 5) + 6 * Math.round(g / 255 * 5) + Math.round(b / 255 * 5);\n      return ansi;\n    };\n\n    convert.ansi16.rgb = function (args) {\n      var color = args % 10; // handle greyscale\n\n      if (color === 0 || color === 7) {\n        if (args > 50) {\n          color += 3.5;\n        }\n\n        color = color / 10.5 * 255;\n        return [color, color, color];\n      }\n\n      var mult = (~~(args > 50) + 1) * 0.5;\n      var r = (color & 1) * mult * 255;\n      var g = (color >> 1 & 1) * mult * 255;\n      var b = (color >> 2 & 1) * mult * 255;\n      return [r, g, b];\n    };\n\n    convert.ansi256.rgb = function (args) {\n      // handle greyscale\n      if (args >= 232) {\n        var c = (args - 232) * 10 + 8;\n        return [c, c, c];\n      }\n\n      args -= 16;\n      var rem;\n      var r = Math.floor(args / 36) / 5 * 255;\n      var g = Math.floor((rem = args % 36) / 6) / 5 * 255;\n      var b = rem % 6 / 5 * 255;\n      return [r, g, b];\n    };\n\n    convert.rgb.hex = function (args) {\n      var integer = ((Math.round(args[0]) & 0xFF) << 16) + ((Math.round(args[1]) & 0xFF) << 8) + (Math.round(args[2]) & 0xFF);\n      var string = integer.toString(16).toUpperCase();\n      return '000000'.substring(string.length) + string;\n    };\n\n    convert.hex.rgb = function (args) {\n      var match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);\n\n      if (!match) {\n        return [0, 0, 0];\n      }\n\n      var colorString = match[0];\n\n      if (match[0].length === 3) {\n        colorString = colorString.split('').map(function (_char) {\n          return _char + _char;\n        }).join('');\n      }\n\n      var integer = parseInt(colorString, 16);\n      var r = integer >> 16 & 0xFF;\n      var g = integer >> 8 & 0xFF;\n      var b = integer & 0xFF;\n      return [r, g, b];\n    };\n\n    convert.rgb.hcg = function (rgb) {\n      var r = rgb[0] / 255;\n      var g = rgb[1] / 255;\n      var b = rgb[2] / 255;\n      var max = Math.max(Math.max(r, g), b);\n      var min = Math.min(Math.min(r, g), b);\n      var chroma = max - min;\n      var grayscale;\n      var hue;\n\n      if (chroma < 1) {\n        grayscale = min / (1 - chroma);\n      } else {\n        grayscale = 0;\n      }\n\n      if (chroma <= 0) {\n        hue = 0;\n      } else if (max === r) {\n        hue = (g - b) / chroma % 6;\n      } else if (max === g) {\n        hue = 2 + (b - r) / chroma;\n      } else {\n        hue = 4 + (r - g) / chroma + 4;\n      }\n\n      hue /= 6;\n      hue %= 1;\n      return [hue * 360, chroma * 100, grayscale * 100];\n    };\n\n    convert.hsl.hcg = function (hsl) {\n      var s = hsl[1] / 100;\n      var l = hsl[2] / 100;\n      var c = 1;\n      var f = 0;\n\n      if (l < 0.5) {\n        c = 2.0 * s * l;\n      } else {\n        c = 2.0 * s * (1.0 - l);\n      }\n\n      if (c < 1.0) {\n        f = (l - 0.5 * c) / (1.0 - c);\n      }\n\n      return [hsl[0], c * 100, f * 100];\n    };\n\n    convert.hsv.hcg = function (hsv) {\n      var s = hsv[1] / 100;\n      var v = hsv[2] / 100;\n      var c = s * v;\n      var f = 0;\n\n      if (c < 1.0) {\n        f = (v - c) / (1 - c);\n      }\n\n      return [hsv[0], c * 100, f * 100];\n    };\n\n    convert.hcg.rgb = function (hcg) {\n      var h = hcg[0] / 360;\n      var c = hcg[1] / 100;\n      var g = hcg[2] / 100;\n\n      if (c === 0.0) {\n        return [g * 255, g * 255, g * 255];\n      }\n\n      var pure = [0, 0, 0];\n      var hi = h % 1 * 6;\n      var v = hi % 1;\n      var w = 1 - v;\n      var mg = 0;\n\n      switch (Math.floor(hi)) {\n        case 0:\n          pure[0] = 1;\n          pure[1] = v;\n          pure[2] = 0;\n          break;\n\n        case 1:\n          pure[0] = w;\n          pure[1] = 1;\n          pure[2] = 0;\n          break;\n\n        case 2:\n          pure[0] = 0;\n          pure[1] = 1;\n          pure[2] = v;\n          break;\n\n        case 3:\n          pure[0] = 0;\n          pure[1] = w;\n          pure[2] = 1;\n          break;\n\n        case 4:\n          pure[0] = v;\n          pure[1] = 0;\n          pure[2] = 1;\n          break;\n\n        default:\n          pure[0] = 1;\n          pure[1] = 0;\n          pure[2] = w;\n      }\n\n      mg = (1.0 - c) * g;\n      return [(c * pure[0] + mg) * 255, (c * pure[1] + mg) * 255, (c * pure[2] + mg) * 255];\n    };\n\n    convert.hcg.hsv = function (hcg) {\n      var c = hcg[1] / 100;\n      var g = hcg[2] / 100;\n      var v = c + g * (1.0 - c);\n      var f = 0;\n\n      if (v > 0.0) {\n        f = c / v;\n      }\n\n      return [hcg[0], f * 100, v * 100];\n    };\n\n    convert.hcg.hsl = function (hcg) {\n      var c = hcg[1] / 100;\n      var g = hcg[2] / 100;\n      var l = g * (1.0 - c) + 0.5 * c;\n      var s = 0;\n\n      if (l > 0.0 && l < 0.5) {\n        s = c / (2 * l);\n      } else if (l >= 0.5 && l < 1.0) {\n        s = c / (2 * (1 - l));\n      }\n\n      return [hcg[0], s * 100, l * 100];\n    };\n\n    convert.hcg.hwb = function (hcg) {\n      var c = hcg[1] / 100;\n      var g = hcg[2] / 100;\n      var v = c + g * (1.0 - c);\n      return [hcg[0], (v - c) * 100, (1 - v) * 100];\n    };\n\n    convert.hwb.hcg = function (hwb) {\n      var w = hwb[1] / 100;\n      var b = hwb[2] / 100;\n      var v = 1 - b;\n      var c = v - w;\n      var g = 0;\n\n      if (c < 1) {\n        g = (v - c) / (1 - c);\n      }\n\n      return [hwb[0], c * 100, g * 100];\n    };\n\n    convert.apple.rgb = function (apple) {\n      return [apple[0] / 65535 * 255, apple[1] / 65535 * 255, apple[2] / 65535 * 255];\n    };\n\n    convert.rgb.apple = function (rgb) {\n      return [rgb[0] / 255 * 65535, rgb[1] / 255 * 65535, rgb[2] / 255 * 65535];\n    };\n\n    convert.gray.rgb = function (args) {\n      return [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];\n    };\n\n    convert.gray.hsl = convert.gray.hsv = function (args) {\n      return [0, 0, args[0]];\n    };\n\n    convert.gray.hwb = function (gray) {\n      return [0, 100, gray[0]];\n    };\n\n    convert.gray.cmyk = function (gray) {\n      return [0, 0, 0, gray[0]];\n    };\n\n    convert.gray.lab = function (gray) {\n      return [gray[0], 0, 0];\n    };\n\n    convert.gray.hex = function (gray) {\n      var val = Math.round(gray[0] / 100 * 255) & 0xFF;\n      var integer = (val << 16) + (val << 8) + val;\n      var string = integer.toString(16).toUpperCase();\n      return '000000'.substring(string.length) + string;\n    };\n\n    convert.rgb.gray = function (rgb) {\n      var val = (rgb[0] + rgb[1] + rgb[2]) / 3;\n      return [val / 255 * 100];\n    };\n  });\n  var conversions_1 = conversions.rgb;\n  var conversions_2 = conversions.hsl;\n  var conversions_3 = conversions.hsv;\n  var conversions_4 = conversions.hwb;\n  var conversions_5 = conversions.cmyk;\n  var conversions_6 = conversions.xyz;\n  var conversions_7 = conversions.lab;\n  var conversions_8 = conversions.lch;\n  var conversions_9 = conversions.hex;\n  var conversions_10 = conversions.keyword;\n  var conversions_11 = conversions.ansi16;\n  var conversions_12 = conversions.ansi256;\n  var conversions_13 = conversions.hcg;\n  var conversions_14 = conversions.apple;\n  var conversions_15 = conversions.gray;\n  /*\n  \tthis function routes a model to all other models.\n  \n  \tall functions that are routed have a property `.conversion` attached\n  \tto the returned synthetic function. This property is an array\n  \tof strings, each with the steps in between the 'from' and 'to'\n  \tcolor models (inclusive).\n  \n  \tconversions that are not possible simply are not included.\n  */\n\n  function buildGraph() {\n    var graph = {}; // https://jsperf.com/object-keys-vs-for-in-with-closure/3\n\n    var models = Object.keys(conversions);\n\n    for (var len = models.length, i = 0; i < len; i++) {\n      graph[models[i]] = {\n        // http://jsperf.com/1-vs-infinity\n        // micro-opt, but this is simple.\n        distance: -1,\n        parent: null\n      };\n    }\n\n    return graph;\n  } // https://en.wikipedia.org/wiki/Breadth-first_search\n\n\n  function deriveBFS(fromModel) {\n    var graph = buildGraph();\n    var queue = [fromModel]; // unshift -> queue -> pop\n\n    graph[fromModel].distance = 0;\n\n    while (queue.length) {\n      var current = queue.pop();\n      var adjacents = Object.keys(conversions[current]);\n\n      for (var len = adjacents.length, i = 0; i < len; i++) {\n        var adjacent = adjacents[i];\n        var node = graph[adjacent];\n\n        if (node.distance === -1) {\n          node.distance = graph[current].distance + 1;\n          node.parent = current;\n          queue.unshift(adjacent);\n        }\n      }\n    }\n\n    return graph;\n  }\n\n  function link(from, to) {\n    return function (args) {\n      return to(from(args));\n    };\n  }\n\n  function wrapConversion(toModel, graph) {\n    var path = [graph[toModel].parent, toModel];\n    var fn = conversions[graph[toModel].parent][toModel];\n    var cur = graph[toModel].parent;\n\n    while (graph[cur].parent) {\n      path.unshift(graph[cur].parent);\n      fn = link(conversions[graph[cur].parent][cur], fn);\n      cur = graph[cur].parent;\n    }\n\n    fn.conversion = path;\n    return fn;\n  }\n\n  var route = function route(fromModel) {\n    var graph = deriveBFS(fromModel);\n    var conversion = {};\n    var models = Object.keys(graph);\n\n    for (var len = models.length, i = 0; i < len; i++) {\n      var toModel = models[i];\n      var node = graph[toModel];\n\n      if (node.parent === null) {\n        // no possible conversion, or this node is the source model.\n        continue;\n      }\n\n      conversion[toModel] = wrapConversion(toModel, graph);\n    }\n\n    return conversion;\n  };\n\n  var convert = {};\n  var models = Object.keys(conversions);\n\n  function wrapRaw(fn) {\n    var wrappedFn = function wrappedFn(args) {\n      if (args === undefined || args === null) {\n        return args;\n      }\n\n      if (arguments.length > 1) {\n        args = Array.prototype.slice.call(arguments);\n      }\n\n      return fn(args);\n    }; // preserve .conversion property if there is one\n\n\n    if ('conversion' in fn) {\n      wrappedFn.conversion = fn.conversion;\n    }\n\n    return wrappedFn;\n  }\n\n  function wrapRounded(fn) {\n    var wrappedFn = function wrappedFn(args) {\n      if (args === undefined || args === null) {\n        return args;\n      }\n\n      if (arguments.length > 1) {\n        args = Array.prototype.slice.call(arguments);\n      }\n\n      var result = fn(args); // we're assuming the result is an array here.\n      // see notice in conversions.js; don't use box types\n      // in conversion functions.\n\n      if (typeof result === 'object') {\n        for (var len = result.length, i = 0; i < len; i++) {\n          result[i] = Math.round(result[i]);\n        }\n      }\n\n      return result;\n    }; // preserve .conversion property if there is one\n\n\n    if ('conversion' in fn) {\n      wrappedFn.conversion = fn.conversion;\n    }\n\n    return wrappedFn;\n  }\n\n  models.forEach(function (fromModel) {\n    convert[fromModel] = {};\n    Object.defineProperty(convert[fromModel], 'channels', {\n      value: conversions[fromModel].channels\n    });\n    Object.defineProperty(convert[fromModel], 'labels', {\n      value: conversions[fromModel].labels\n    });\n    var routes = route(fromModel);\n    var routeModels = Object.keys(routes);\n    routeModels.forEach(function (toModel) {\n      var fn = routes[toModel];\n      convert[fromModel][toModel] = wrapRounded(fn);\n      convert[fromModel][toModel].raw = wrapRaw(fn);\n    });\n  });\n  var colorConvert = convert;\n  var colorName$1 = {\n    \"aliceblue\": [240, 248, 255],\n    \"antiquewhite\": [250, 235, 215],\n    \"aqua\": [0, 255, 255],\n    \"aquamarine\": [127, 255, 212],\n    \"azure\": [240, 255, 255],\n    \"beige\": [245, 245, 220],\n    \"bisque\": [255, 228, 196],\n    \"black\": [0, 0, 0],\n    \"blanchedalmond\": [255, 235, 205],\n    \"blue\": [0, 0, 255],\n    \"blueviolet\": [138, 43, 226],\n    \"brown\": [165, 42, 42],\n    \"burlywood\": [222, 184, 135],\n    \"cadetblue\": [95, 158, 160],\n    \"chartreuse\": [127, 255, 0],\n    \"chocolate\": [210, 105, 30],\n    \"coral\": [255, 127, 80],\n    \"cornflowerblue\": [100, 149, 237],\n    \"cornsilk\": [255, 248, 220],\n    \"crimson\": [220, 20, 60],\n    \"cyan\": [0, 255, 255],\n    \"darkblue\": [0, 0, 139],\n    \"darkcyan\": [0, 139, 139],\n    \"darkgoldenrod\": [184, 134, 11],\n    \"darkgray\": [169, 169, 169],\n    \"darkgreen\": [0, 100, 0],\n    \"darkgrey\": [169, 169, 169],\n    \"darkkhaki\": [189, 183, 107],\n    \"darkmagenta\": [139, 0, 139],\n    \"darkolivegreen\": [85, 107, 47],\n    \"darkorange\": [255, 140, 0],\n    \"darkorchid\": [153, 50, 204],\n    \"darkred\": [139, 0, 0],\n    \"darksalmon\": [233, 150, 122],\n    \"darkseagreen\": [143, 188, 143],\n    \"darkslateblue\": [72, 61, 139],\n    \"darkslategray\": [47, 79, 79],\n    \"darkslategrey\": [47, 79, 79],\n    \"darkturquoise\": [0, 206, 209],\n    \"darkviolet\": [148, 0, 211],\n    \"deeppink\": [255, 20, 147],\n    \"deepskyblue\": [0, 191, 255],\n    \"dimgray\": [105, 105, 105],\n    \"dimgrey\": [105, 105, 105],\n    \"dodgerblue\": [30, 144, 255],\n    \"firebrick\": [178, 34, 34],\n    \"floralwhite\": [255, 250, 240],\n    \"forestgreen\": [34, 139, 34],\n    \"fuchsia\": [255, 0, 255],\n    \"gainsboro\": [220, 220, 220],\n    \"ghostwhite\": [248, 248, 255],\n    \"gold\": [255, 215, 0],\n    \"goldenrod\": [218, 165, 32],\n    \"gray\": [128, 128, 128],\n    \"green\": [0, 128, 0],\n    \"greenyellow\": [173, 255, 47],\n    \"grey\": [128, 128, 128],\n    \"honeydew\": [240, 255, 240],\n    \"hotpink\": [255, 105, 180],\n    \"indianred\": [205, 92, 92],\n    \"indigo\": [75, 0, 130],\n    \"ivory\": [255, 255, 240],\n    \"khaki\": [240, 230, 140],\n    \"lavender\": [230, 230, 250],\n    \"lavenderblush\": [255, 240, 245],\n    \"lawngreen\": [124, 252, 0],\n    \"lemonchiffon\": [255, 250, 205],\n    \"lightblue\": [173, 216, 230],\n    \"lightcoral\": [240, 128, 128],\n    \"lightcyan\": [224, 255, 255],\n    \"lightgoldenrodyellow\": [250, 250, 210],\n    \"lightgray\": [211, 211, 211],\n    \"lightgreen\": [144, 238, 144],\n    \"lightgrey\": [211, 211, 211],\n    \"lightpink\": [255, 182, 193],\n    \"lightsalmon\": [255, 160, 122],\n    \"lightseagreen\": [32, 178, 170],\n    \"lightskyblue\": [135, 206, 250],\n    \"lightslategray\": [119, 136, 153],\n    \"lightslategrey\": [119, 136, 153],\n    \"lightsteelblue\": [176, 196, 222],\n    \"lightyellow\": [255, 255, 224],\n    \"lime\": [0, 255, 0],\n    \"limegreen\": [50, 205, 50],\n    \"linen\": [250, 240, 230],\n    \"magenta\": [255, 0, 255],\n    \"maroon\": [128, 0, 0],\n    \"mediumaquamarine\": [102, 205, 170],\n    \"mediumblue\": [0, 0, 205],\n    \"mediumorchid\": [186, 85, 211],\n    \"mediumpurple\": [147, 112, 219],\n    \"mediumseagreen\": [60, 179, 113],\n    \"mediumslateblue\": [123, 104, 238],\n    \"mediumspringgreen\": [0, 250, 154],\n    \"mediumturquoise\": [72, 209, 204],\n    \"mediumvioletred\": [199, 21, 133],\n    \"midnightblue\": [25, 25, 112],\n    \"mintcream\": [245, 255, 250],\n    \"mistyrose\": [255, 228, 225],\n    \"moccasin\": [255, 228, 181],\n    \"navajowhite\": [255, 222, 173],\n    \"navy\": [0, 0, 128],\n    \"oldlace\": [253, 245, 230],\n    \"olive\": [128, 128, 0],\n    \"olivedrab\": [107, 142, 35],\n    \"orange\": [255, 165, 0],\n    \"orangered\": [255, 69, 0],\n    \"orchid\": [218, 112, 214],\n    \"palegoldenrod\": [238, 232, 170],\n    \"palegreen\": [152, 251, 152],\n    \"paleturquoise\": [175, 238, 238],\n    \"palevioletred\": [219, 112, 147],\n    \"papayawhip\": [255, 239, 213],\n    \"peachpuff\": [255, 218, 185],\n    \"peru\": [205, 133, 63],\n    \"pink\": [255, 192, 203],\n    \"plum\": [221, 160, 221],\n    \"powderblue\": [176, 224, 230],\n    \"purple\": [128, 0, 128],\n    \"rebeccapurple\": [102, 51, 153],\n    \"red\": [255, 0, 0],\n    \"rosybrown\": [188, 143, 143],\n    \"royalblue\": [65, 105, 225],\n    \"saddlebrown\": [139, 69, 19],\n    \"salmon\": [250, 128, 114],\n    \"sandybrown\": [244, 164, 96],\n    \"seagreen\": [46, 139, 87],\n    \"seashell\": [255, 245, 238],\n    \"sienna\": [160, 82, 45],\n    \"silver\": [192, 192, 192],\n    \"skyblue\": [135, 206, 235],\n    \"slateblue\": [106, 90, 205],\n    \"slategray\": [112, 128, 144],\n    \"slategrey\": [112, 128, 144],\n    \"snow\": [255, 250, 250],\n    \"springgreen\": [0, 255, 127],\n    \"steelblue\": [70, 130, 180],\n    \"tan\": [210, 180, 140],\n    \"teal\": [0, 128, 128],\n    \"thistle\": [216, 191, 216],\n    \"tomato\": [255, 99, 71],\n    \"turquoise\": [64, 224, 208],\n    \"violet\": [238, 130, 238],\n    \"wheat\": [245, 222, 179],\n    \"white\": [255, 255, 255],\n    \"whitesmoke\": [245, 245, 245],\n    \"yellow\": [255, 255, 0],\n    \"yellowgreen\": [154, 205, 50]\n  };\n  /* MIT license */\n\n  var colorString = {\n    getRgba: getRgba,\n    getHsla: getHsla,\n    getRgb: getRgb,\n    getHsl: getHsl,\n    getHwb: getHwb,\n    getAlpha: getAlpha,\n    hexString: hexString,\n    rgbString: rgbString,\n    rgbaString: rgbaString,\n    percentString: percentString,\n    percentaString: percentaString,\n    hslString: hslString,\n    hslaString: hslaString,\n    hwbString: hwbString,\n    keyword: keyword\n  };\n\n  function getRgba(string) {\n    if (!string) {\n      return;\n    }\n\n    var abbr = /^#([a-fA-F0-9]{3,4})$/i,\n        hex = /^#([a-fA-F0-9]{6}([a-fA-F0-9]{2})?)$/i,\n        rgba = /^rgba?\\(\\s*([+-]?\\d+)\\s*,\\s*([+-]?\\d+)\\s*,\\s*([+-]?\\d+)\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)$/i,\n        per = /^rgba?\\(\\s*([+-]?[\\d\\.]+)\\%\\s*,\\s*([+-]?[\\d\\.]+)\\%\\s*,\\s*([+-]?[\\d\\.]+)\\%\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)$/i,\n        keyword = /(\\w+)/;\n    var rgb = [0, 0, 0],\n        a = 1,\n        match = string.match(abbr),\n        hexAlpha = \"\";\n\n    if (match) {\n      match = match[1];\n      hexAlpha = match[3];\n\n      for (var i = 0; i < rgb.length; i++) {\n        rgb[i] = parseInt(match[i] + match[i], 16);\n      }\n\n      if (hexAlpha) {\n        a = Math.round(parseInt(hexAlpha + hexAlpha, 16) / 255 * 100) / 100;\n      }\n    } else if (match = string.match(hex)) {\n      hexAlpha = match[2];\n      match = match[1];\n\n      for (var i = 0; i < rgb.length; i++) {\n        rgb[i] = parseInt(match.slice(i * 2, i * 2 + 2), 16);\n      }\n\n      if (hexAlpha) {\n        a = Math.round(parseInt(hexAlpha, 16) / 255 * 100) / 100;\n      }\n    } else if (match = string.match(rgba)) {\n      for (var i = 0; i < rgb.length; i++) {\n        rgb[i] = parseInt(match[i + 1]);\n      }\n\n      a = parseFloat(match[4]);\n    } else if (match = string.match(per)) {\n      for (var i = 0; i < rgb.length; i++) {\n        rgb[i] = Math.round(parseFloat(match[i + 1]) * 2.55);\n      }\n\n      a = parseFloat(match[4]);\n    } else if (match = string.match(keyword)) {\n      if (match[1] == \"transparent\") {\n        return [0, 0, 0, 0];\n      }\n\n      rgb = colorName$1[match[1]];\n\n      if (!rgb) {\n        return;\n      }\n    }\n\n    for (var i = 0; i < rgb.length; i++) {\n      rgb[i] = scale(rgb[i], 0, 255);\n    }\n\n    if (!a && a != 0) {\n      a = 1;\n    } else {\n      a = scale(a, 0, 1);\n    }\n\n    rgb[3] = a;\n    return rgb;\n  }\n\n  function getHsla(string) {\n    if (!string) {\n      return;\n    }\n\n    var hsl = /^hsla?\\(\\s*([+-]?\\d+)(?:deg)?\\s*,\\s*([+-]?[\\d\\.]+)%\\s*,\\s*([+-]?[\\d\\.]+)%\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)/;\n    var match = string.match(hsl);\n\n    if (match) {\n      var alpha = parseFloat(match[4]);\n      var h = scale(parseInt(match[1]), 0, 360),\n          s = scale(parseFloat(match[2]), 0, 100),\n          l = scale(parseFloat(match[3]), 0, 100),\n          a = scale(isNaN(alpha) ? 1 : alpha, 0, 1);\n      return [h, s, l, a];\n    }\n  }\n\n  function getHwb(string) {\n    if (!string) {\n      return;\n    }\n\n    var hwb = /^hwb\\(\\s*([+-]?\\d+)(?:deg)?\\s*,\\s*([+-]?[\\d\\.]+)%\\s*,\\s*([+-]?[\\d\\.]+)%\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)/;\n    var match = string.match(hwb);\n\n    if (match) {\n      var alpha = parseFloat(match[4]);\n      var h = scale(parseInt(match[1]), 0, 360),\n          w = scale(parseFloat(match[2]), 0, 100),\n          b = scale(parseFloat(match[3]), 0, 100),\n          a = scale(isNaN(alpha) ? 1 : alpha, 0, 1);\n      return [h, w, b, a];\n    }\n  }\n\n  function getRgb(string) {\n    var rgba = getRgba(string);\n    return rgba && rgba.slice(0, 3);\n  }\n\n  function getHsl(string) {\n    var hsla = getHsla(string);\n    return hsla && hsla.slice(0, 3);\n  }\n\n  function getAlpha(string) {\n    var vals = getRgba(string);\n\n    if (vals) {\n      return vals[3];\n    } else if (vals = getHsla(string)) {\n      return vals[3];\n    } else if (vals = getHwb(string)) {\n      return vals[3];\n    }\n  } // generators\n\n\n  function hexString(rgba, a) {\n    var a = a !== undefined && rgba.length === 3 ? a : rgba[3];\n    return \"#\" + hexDouble(rgba[0]) + hexDouble(rgba[1]) + hexDouble(rgba[2]) + (a >= 0 && a < 1 ? hexDouble(Math.round(a * 255)) : \"\");\n  }\n\n  function rgbString(rgba, alpha) {\n    if (alpha < 1 || rgba[3] && rgba[3] < 1) {\n      return rgbaString(rgba, alpha);\n    }\n\n    return \"rgb(\" + rgba[0] + \", \" + rgba[1] + \", \" + rgba[2] + \")\";\n  }\n\n  function rgbaString(rgba, alpha) {\n    if (alpha === undefined) {\n      alpha = rgba[3] !== undefined ? rgba[3] : 1;\n    }\n\n    return \"rgba(\" + rgba[0] + \", \" + rgba[1] + \", \" + rgba[2] + \", \" + alpha + \")\";\n  }\n\n  function percentString(rgba, alpha) {\n    if (alpha < 1 || rgba[3] && rgba[3] < 1) {\n      return percentaString(rgba, alpha);\n    }\n\n    var r = Math.round(rgba[0] / 255 * 100),\n        g = Math.round(rgba[1] / 255 * 100),\n        b = Math.round(rgba[2] / 255 * 100);\n    return \"rgb(\" + r + \"%, \" + g + \"%, \" + b + \"%)\";\n  }\n\n  function percentaString(rgba, alpha) {\n    var r = Math.round(rgba[0] / 255 * 100),\n        g = Math.round(rgba[1] / 255 * 100),\n        b = Math.round(rgba[2] / 255 * 100);\n    return \"rgba(\" + r + \"%, \" + g + \"%, \" + b + \"%, \" + (alpha || rgba[3] || 1) + \")\";\n  }\n\n  function hslString(hsla, alpha) {\n    if (alpha < 1 || hsla[3] && hsla[3] < 1) {\n      return hslaString(hsla, alpha);\n    }\n\n    return \"hsl(\" + hsla[0] + \", \" + hsla[1] + \"%, \" + hsla[2] + \"%)\";\n  }\n\n  function hslaString(hsla, alpha) {\n    if (alpha === undefined) {\n      alpha = hsla[3] !== undefined ? hsla[3] : 1;\n    }\n\n    return \"hsla(\" + hsla[0] + \", \" + hsla[1] + \"%, \" + hsla[2] + \"%, \" + alpha + \")\";\n  } // hwb is a bit different than rgb(a) & hsl(a) since there is no alpha specific syntax\n  // (hwb have alpha optional & 1 is default value)\n\n\n  function hwbString(hwb, alpha) {\n    if (alpha === undefined) {\n      alpha = hwb[3] !== undefined ? hwb[3] : 1;\n    }\n\n    return \"hwb(\" + hwb[0] + \", \" + hwb[1] + \"%, \" + hwb[2] + \"%\" + (alpha !== undefined && alpha !== 1 ? \", \" + alpha : \"\") + \")\";\n  }\n\n  function keyword(rgb) {\n    return reverseNames[rgb.slice(0, 3)];\n  } // helpers\n\n\n  function scale(num, min, max) {\n    return Math.min(Math.max(min, num), max);\n  }\n\n  function hexDouble(num) {\n    var str = num.toString(16).toUpperCase();\n    return str.length < 2 ? \"0\" + str : str;\n  } //create a list of reverse color names\n\n\n  var reverseNames = {};\n\n  for (var name in colorName$1) {\n    reverseNames[colorName$1[name]] = name;\n  }\n  /* MIT license */\n\n\n  var Color = function Color(obj) {\n    if (obj instanceof Color) {\n      return obj;\n    }\n\n    if (!(this instanceof Color)) {\n      return new Color(obj);\n    }\n\n    this.valid = false;\n    this.values = {\n      rgb: [0, 0, 0],\n      hsl: [0, 0, 0],\n      hsv: [0, 0, 0],\n      hwb: [0, 0, 0],\n      cmyk: [0, 0, 0, 0],\n      alpha: 1\n    }; // parse Color() argument\n\n    var vals;\n\n    if (typeof obj === 'string') {\n      vals = colorString.getRgba(obj);\n\n      if (vals) {\n        this.setValues('rgb', vals);\n      } else if (vals = colorString.getHsla(obj)) {\n        this.setValues('hsl', vals);\n      } else if (vals = colorString.getHwb(obj)) {\n        this.setValues('hwb', vals);\n      }\n    } else if (typeof obj === 'object') {\n      vals = obj;\n\n      if (vals.r !== undefined || vals.red !== undefined) {\n        this.setValues('rgb', vals);\n      } else if (vals.l !== undefined || vals.lightness !== undefined) {\n        this.setValues('hsl', vals);\n      } else if (vals.v !== undefined || vals.value !== undefined) {\n        this.setValues('hsv', vals);\n      } else if (vals.w !== undefined || vals.whiteness !== undefined) {\n        this.setValues('hwb', vals);\n      } else if (vals.c !== undefined || vals.cyan !== undefined) {\n        this.setValues('cmyk', vals);\n      }\n    }\n  };\n\n  Color.prototype = {\n    isValid: function isValid() {\n      return this.valid;\n    },\n    rgb: function rgb() {\n      return this.setSpace('rgb', arguments);\n    },\n    hsl: function hsl() {\n      return this.setSpace('hsl', arguments);\n    },\n    hsv: function hsv() {\n      return this.setSpace('hsv', arguments);\n    },\n    hwb: function hwb() {\n      return this.setSpace('hwb', arguments);\n    },\n    cmyk: function cmyk() {\n      return this.setSpace('cmyk', arguments);\n    },\n    rgbArray: function rgbArray() {\n      return this.values.rgb;\n    },\n    hslArray: function hslArray() {\n      return this.values.hsl;\n    },\n    hsvArray: function hsvArray() {\n      return this.values.hsv;\n    },\n    hwbArray: function hwbArray() {\n      var values = this.values;\n\n      if (values.alpha !== 1) {\n        return values.hwb.concat([values.alpha]);\n      }\n\n      return values.hwb;\n    },\n    cmykArray: function cmykArray() {\n      return this.values.cmyk;\n    },\n    rgbaArray: function rgbaArray() {\n      var values = this.values;\n      return values.rgb.concat([values.alpha]);\n    },\n    hslaArray: function hslaArray() {\n      var values = this.values;\n      return values.hsl.concat([values.alpha]);\n    },\n    alpha: function alpha(val) {\n      if (val === undefined) {\n        return this.values.alpha;\n      }\n\n      this.setValues('alpha', val);\n      return this;\n    },\n    red: function red(val) {\n      return this.setChannel('rgb', 0, val);\n    },\n    green: function green(val) {\n      return this.setChannel('rgb', 1, val);\n    },\n    blue: function blue(val) {\n      return this.setChannel('rgb', 2, val);\n    },\n    hue: function hue(val) {\n      if (val) {\n        val %= 360;\n        val = val < 0 ? 360 + val : val;\n      }\n\n      return this.setChannel('hsl', 0, val);\n    },\n    saturation: function saturation(val) {\n      return this.setChannel('hsl', 1, val);\n    },\n    lightness: function lightness(val) {\n      return this.setChannel('hsl', 2, val);\n    },\n    saturationv: function saturationv(val) {\n      return this.setChannel('hsv', 1, val);\n    },\n    whiteness: function whiteness(val) {\n      return this.setChannel('hwb', 1, val);\n    },\n    blackness: function blackness(val) {\n      return this.setChannel('hwb', 2, val);\n    },\n    value: function value(val) {\n      return this.setChannel('hsv', 2, val);\n    },\n    cyan: function cyan(val) {\n      return this.setChannel('cmyk', 0, val);\n    },\n    magenta: function magenta(val) {\n      return this.setChannel('cmyk', 1, val);\n    },\n    yellow: function yellow(val) {\n      return this.setChannel('cmyk', 2, val);\n    },\n    black: function black(val) {\n      return this.setChannel('cmyk', 3, val);\n    },\n    hexString: function hexString() {\n      return colorString.hexString(this.values.rgb);\n    },\n    rgbString: function rgbString() {\n      return colorString.rgbString(this.values.rgb, this.values.alpha);\n    },\n    rgbaString: function rgbaString() {\n      return colorString.rgbaString(this.values.rgb, this.values.alpha);\n    },\n    percentString: function percentString() {\n      return colorString.percentString(this.values.rgb, this.values.alpha);\n    },\n    hslString: function hslString() {\n      return colorString.hslString(this.values.hsl, this.values.alpha);\n    },\n    hslaString: function hslaString() {\n      return colorString.hslaString(this.values.hsl, this.values.alpha);\n    },\n    hwbString: function hwbString() {\n      return colorString.hwbString(this.values.hwb, this.values.alpha);\n    },\n    keyword: function keyword() {\n      return colorString.keyword(this.values.rgb, this.values.alpha);\n    },\n    rgbNumber: function rgbNumber() {\n      var rgb = this.values.rgb;\n      return rgb[0] << 16 | rgb[1] << 8 | rgb[2];\n    },\n    luminosity: function luminosity() {\n      // http://www.w3.org/TR/WCAG20/#relativeluminancedef\n      var rgb = this.values.rgb;\n      var lum = [];\n\n      for (var i = 0; i < rgb.length; i++) {\n        var chan = rgb[i] / 255;\n        lum[i] = chan <= 0.03928 ? chan / 12.92 : Math.pow((chan + 0.055) / 1.055, 2.4);\n      }\n\n      return 0.2126 * lum[0] + 0.7152 * lum[1] + 0.0722 * lum[2];\n    },\n    contrast: function contrast(color2) {\n      // http://www.w3.org/TR/WCAG20/#contrast-ratiodef\n      var lum1 = this.luminosity();\n      var lum2 = color2.luminosity();\n\n      if (lum1 > lum2) {\n        return (lum1 + 0.05) / (lum2 + 0.05);\n      }\n\n      return (lum2 + 0.05) / (lum1 + 0.05);\n    },\n    level: function level(color2) {\n      var contrastRatio = this.contrast(color2);\n\n      if (contrastRatio >= 7.1) {\n        return 'AAA';\n      }\n\n      return contrastRatio >= 4.5 ? 'AA' : '';\n    },\n    dark: function dark() {\n      // YIQ equation from http://24ways.org/2010/calculating-color-contrast\n      var rgb = this.values.rgb;\n      var yiq = (rgb[0] * 299 + rgb[1] * 587 + rgb[2] * 114) / 1000;\n      return yiq < 128;\n    },\n    light: function light() {\n      return !this.dark();\n    },\n    negate: function negate() {\n      var rgb = [];\n\n      for (var i = 0; i < 3; i++) {\n        rgb[i] = 255 - this.values.rgb[i];\n      }\n\n      this.setValues('rgb', rgb);\n      return this;\n    },\n    lighten: function lighten(ratio) {\n      var hsl = this.values.hsl;\n      hsl[2] += hsl[2] * ratio;\n      this.setValues('hsl', hsl);\n      return this;\n    },\n    darken: function darken(ratio) {\n      var hsl = this.values.hsl;\n      hsl[2] -= hsl[2] * ratio;\n      this.setValues('hsl', hsl);\n      return this;\n    },\n    saturate: function saturate(ratio) {\n      var hsl = this.values.hsl;\n      hsl[1] += hsl[1] * ratio;\n      this.setValues('hsl', hsl);\n      return this;\n    },\n    desaturate: function desaturate(ratio) {\n      var hsl = this.values.hsl;\n      hsl[1] -= hsl[1] * ratio;\n      this.setValues('hsl', hsl);\n      return this;\n    },\n    whiten: function whiten(ratio) {\n      var hwb = this.values.hwb;\n      hwb[1] += hwb[1] * ratio;\n      this.setValues('hwb', hwb);\n      return this;\n    },\n    blacken: function blacken(ratio) {\n      var hwb = this.values.hwb;\n      hwb[2] += hwb[2] * ratio;\n      this.setValues('hwb', hwb);\n      return this;\n    },\n    greyscale: function greyscale() {\n      var rgb = this.values.rgb; // http://en.wikipedia.org/wiki/Grayscale#Converting_color_to_grayscale\n\n      var val = rgb[0] * 0.3 + rgb[1] * 0.59 + rgb[2] * 0.11;\n      this.setValues('rgb', [val, val, val]);\n      return this;\n    },\n    clearer: function clearer(ratio) {\n      var alpha = this.values.alpha;\n      this.setValues('alpha', alpha - alpha * ratio);\n      return this;\n    },\n    opaquer: function opaquer(ratio) {\n      var alpha = this.values.alpha;\n      this.setValues('alpha', alpha + alpha * ratio);\n      return this;\n    },\n    rotate: function rotate(degrees) {\n      var hsl = this.values.hsl;\n      var hue = (hsl[0] + degrees) % 360;\n      hsl[0] = hue < 0 ? 360 + hue : hue;\n      this.setValues('hsl', hsl);\n      return this;\n    },\n\n    /**\n     * Ported from sass implementation in C\n     * https://github.com/sass/libsass/blob/0e6b4a2850092356aa3ece07c6b249f0221caced/functions.cpp#L209\n     */\n    mix: function mix(mixinColor, weight) {\n      var color1 = this;\n      var color2 = mixinColor;\n      var p = weight === undefined ? 0.5 : weight;\n      var w = 2 * p - 1;\n      var a = color1.alpha() - color2.alpha();\n      var w1 = ((w * a === -1 ? w : (w + a) / (1 + w * a)) + 1) / 2.0;\n      var w2 = 1 - w1;\n      return this.rgb(w1 * color1.red() + w2 * color2.red(), w1 * color1.green() + w2 * color2.green(), w1 * color1.blue() + w2 * color2.blue()).alpha(color1.alpha() * p + color2.alpha() * (1 - p));\n    },\n    toJSON: function toJSON() {\n      return this.rgb();\n    },\n    clone: function clone() {\n      // NOTE(SB): using node-clone creates a dependency to Buffer when using browserify,\n      // making the final build way to big to embed in Chart.js. So let's do it manually,\n      // assuming that values to clone are 1 dimension arrays containing only numbers,\n      // except 'alpha' which is a number.\n      var result = new Color();\n      var source = this.values;\n      var target = result.values;\n      var value, type;\n\n      for (var prop in source) {\n        if (source.hasOwnProperty(prop)) {\n          value = source[prop];\n          type = {}.toString.call(value);\n\n          if (type === '[object Array]') {\n            target[prop] = value.slice(0);\n          } else if (type === '[object Number]') {\n            target[prop] = value;\n          } else {\n            console.error('unexpected color value:', value);\n          }\n        }\n      }\n\n      return result;\n    }\n  };\n  Color.prototype.spaces = {\n    rgb: ['red', 'green', 'blue'],\n    hsl: ['hue', 'saturation', 'lightness'],\n    hsv: ['hue', 'saturation', 'value'],\n    hwb: ['hue', 'whiteness', 'blackness'],\n    cmyk: ['cyan', 'magenta', 'yellow', 'black']\n  };\n  Color.prototype.maxes = {\n    rgb: [255, 255, 255],\n    hsl: [360, 100, 100],\n    hsv: [360, 100, 100],\n    hwb: [360, 100, 100],\n    cmyk: [100, 100, 100, 100]\n  };\n\n  Color.prototype.getValues = function (space) {\n    var values = this.values;\n    var vals = {};\n\n    for (var i = 0; i < space.length; i++) {\n      vals[space.charAt(i)] = values[space][i];\n    }\n\n    if (values.alpha !== 1) {\n      vals.a = values.alpha;\n    } // {r: 255, g: 255, b: 255, a: 0.4}\n\n\n    return vals;\n  };\n\n  Color.prototype.setValues = function (space, vals) {\n    var values = this.values;\n    var spaces = this.spaces;\n    var maxes = this.maxes;\n    var alpha = 1;\n    var i;\n    this.valid = true;\n\n    if (space === 'alpha') {\n      alpha = vals;\n    } else if (vals.length) {\n      // [10, 10, 10]\n      values[space] = vals.slice(0, space.length);\n      alpha = vals[space.length];\n    } else if (vals[space.charAt(0)] !== undefined) {\n      // {r: 10, g: 10, b: 10}\n      for (i = 0; i < space.length; i++) {\n        values[space][i] = vals[space.charAt(i)];\n      }\n\n      alpha = vals.a;\n    } else if (vals[spaces[space][0]] !== undefined) {\n      // {red: 10, green: 10, blue: 10}\n      var chans = spaces[space];\n\n      for (i = 0; i < space.length; i++) {\n        values[space][i] = vals[chans[i]];\n      }\n\n      alpha = vals.alpha;\n    }\n\n    values.alpha = Math.max(0, Math.min(1, alpha === undefined ? values.alpha : alpha));\n\n    if (space === 'alpha') {\n      return false;\n    }\n\n    var capped; // cap values of the space prior converting all values\n\n    for (i = 0; i < space.length; i++) {\n      capped = Math.max(0, Math.min(maxes[space][i], values[space][i]));\n      values[space][i] = Math.round(capped);\n    } // convert to all the other color spaces\n\n\n    for (var sname in spaces) {\n      if (sname !== space) {\n        values[sname] = colorConvert[space][sname](values[space]);\n      }\n    }\n\n    return true;\n  };\n\n  Color.prototype.setSpace = function (space, args) {\n    var vals = args[0];\n\n    if (vals === undefined) {\n      // color.rgb()\n      return this.getValues(space);\n    } // color.rgb(10, 10, 10)\n\n\n    if (typeof vals === 'number') {\n      vals = Array.prototype.slice.call(args);\n    }\n\n    this.setValues(space, vals);\n    return this;\n  };\n\n  Color.prototype.setChannel = function (space, index, val) {\n    var svalues = this.values[space];\n\n    if (val === undefined) {\n      // color.red()\n      return svalues[index];\n    } else if (val === svalues[index]) {\n      // color.red(color.red())\n      return this;\n    } // color.red(100)\n\n\n    svalues[index] = val;\n    this.setValues(space, svalues);\n    return this;\n  };\n\n  if (typeof window !== 'undefined') {\n    window.Color = Color;\n  }\n\n  var chartjsColor = Color;\n  /**\n   * @namespace Chart.helpers\n   */\n\n  var helpers = {\n    /**\n     * An empty function that can be used, for example, for optional callback.\n     */\n    noop: function noop() {},\n\n    /**\n     * Returns a unique id, sequentially generated from a global variable.\n     * @returns {number}\n     * @function\n     */\n    uid: function () {\n      var id = 0;\n      return function () {\n        return id++;\n      };\n    }(),\n\n    /**\n     * Returns true if `value` is neither null nor undefined, else returns false.\n     * @param {*} value - The value to test.\n     * @returns {boolean}\n     * @since 2.7.0\n     */\n    isNullOrUndef: function isNullOrUndef(value) {\n      return value === null || typeof value === 'undefined';\n    },\n\n    /**\n     * Returns true if `value` is an array (including typed arrays), else returns false.\n     * @param {*} value - The value to test.\n     * @returns {boolean}\n     * @function\n     */\n    isArray: function isArray(value) {\n      if (Array.isArray && Array.isArray(value)) {\n        return true;\n      }\n\n      var type = Object.prototype.toString.call(value);\n\n      if (type.substr(0, 7) === '[object' && type.substr(-6) === 'Array]') {\n        return true;\n      }\n\n      return false;\n    },\n\n    /**\n     * Returns true if `value` is an object (excluding null), else returns false.\n     * @param {*} value - The value to test.\n     * @returns {boolean}\n     * @since 2.7.0\n     */\n    isObject: function isObject(value) {\n      return value !== null && Object.prototype.toString.call(value) === '[object Object]';\n    },\n\n    /**\n     * Returns true if `value` is a finite number, else returns false\n     * @param {*} value  - The value to test.\n     * @returns {boolean}\n     */\n    isFinite: function (_isFinite) {\n      function isFinite(_x) {\n        return _isFinite.apply(this, arguments);\n      }\n\n      isFinite.toString = function () {\n        return _isFinite.toString();\n      };\n\n      return isFinite;\n    }(function (value) {\n      return (typeof value === 'number' || value instanceof Number) && isFinite(value);\n    }),\n\n    /**\n     * Returns `value` if defined, else returns `defaultValue`.\n     * @param {*} value - The value to return if defined.\n     * @param {*} defaultValue - The value to return if `value` is undefined.\n     * @returns {*}\n     */\n    valueOrDefault: function valueOrDefault(value, defaultValue) {\n      return typeof value === 'undefined' ? defaultValue : value;\n    },\n\n    /**\n     * Returns value at the given `index` in array if defined, else returns `defaultValue`.\n     * @param {Array} value - The array to lookup for value at `index`.\n     * @param {number} index - The index in `value` to lookup for value.\n     * @param {*} defaultValue - The value to return if `value[index]` is undefined.\n     * @returns {*}\n     */\n    valueAtIndexOrDefault: function valueAtIndexOrDefault(value, index, defaultValue) {\n      return helpers.valueOrDefault(helpers.isArray(value) ? value[index] : value, defaultValue);\n    },\n\n    /**\n     * Calls `fn` with the given `args` in the scope defined by `thisArg` and returns the\n     * value returned by `fn`. If `fn` is not a function, this method returns undefined.\n     * @param {function} fn - The function to call.\n     * @param {Array|undefined|null} args - The arguments with which `fn` should be called.\n     * @param {object} [thisArg] - The value of `this` provided for the call to `fn`.\n     * @returns {*}\n     */\n    callback: function callback(fn, args, thisArg) {\n      if (fn && typeof fn.call === 'function') {\n        return fn.apply(thisArg, args);\n      }\n    },\n\n    /**\n     * Note(SB) for performance sake, this method should only be used when loopable type\n     * is unknown or in none intensive code (not called often and small loopable). Else\n     * it's preferable to use a regular for() loop and save extra function calls.\n     * @param {object|Array} loopable - The object or array to be iterated.\n     * @param {function} fn - The function to call for each item.\n     * @param {object} [thisArg] - The value of `this` provided for the call to `fn`.\n     * @param {boolean} [reverse] - If true, iterates backward on the loopable.\n     */\n    each: function each(loopable, fn, thisArg, reverse) {\n      var i, len, keys;\n\n      if (helpers.isArray(loopable)) {\n        len = loopable.length;\n\n        if (reverse) {\n          for (i = len - 1; i >= 0; i--) {\n            fn.call(thisArg, loopable[i], i);\n          }\n        } else {\n          for (i = 0; i < len; i++) {\n            fn.call(thisArg, loopable[i], i);\n          }\n        }\n      } else if (helpers.isObject(loopable)) {\n        keys = Object.keys(loopable);\n        len = keys.length;\n\n        for (i = 0; i < len; i++) {\n          fn.call(thisArg, loopable[keys[i]], keys[i]);\n        }\n      }\n    },\n\n    /**\n     * Returns true if the `a0` and `a1` arrays have the same content, else returns false.\n     * @see https://stackoverflow.com/a/14853974\n     * @param {Array} a0 - The array to compare\n     * @param {Array} a1 - The array to compare\n     * @returns {boolean}\n     */\n    arrayEquals: function arrayEquals(a0, a1) {\n      var i, ilen, v0, v1;\n\n      if (!a0 || !a1 || a0.length !== a1.length) {\n        return false;\n      }\n\n      for (i = 0, ilen = a0.length; i < ilen; ++i) {\n        v0 = a0[i];\n        v1 = a1[i];\n\n        if (v0 instanceof Array && v1 instanceof Array) {\n          if (!helpers.arrayEquals(v0, v1)) {\n            return false;\n          }\n        } else if (v0 !== v1) {\n          // NOTE: two different object instances will never be equal: {x:20} != {x:20}\n          return false;\n        }\n      }\n\n      return true;\n    },\n\n    /**\n     * Returns a deep copy of `source` without keeping references on objects and arrays.\n     * @param {*} source - The value to clone.\n     * @returns {*}\n     */\n    clone: function clone(source) {\n      if (helpers.isArray(source)) {\n        return source.map(helpers.clone);\n      }\n\n      if (helpers.isObject(source)) {\n        var target = {};\n        var keys = Object.keys(source);\n        var klen = keys.length;\n        var k = 0;\n\n        for (; k < klen; ++k) {\n          target[keys[k]] = helpers.clone(source[keys[k]]);\n        }\n\n        return target;\n      }\n\n      return source;\n    },\n\n    /**\n     * The default merger when Chart.helpers.merge is called without merger option.\n     * Note(SB): also used by mergeConfig and mergeScaleConfig as fallback.\n     * @private\n     */\n    _merger: function _merger(key, target, source, options) {\n      var tval = target[key];\n      var sval = source[key];\n\n      if (helpers.isObject(tval) && helpers.isObject(sval)) {\n        helpers.merge(tval, sval, options);\n      } else {\n        target[key] = helpers.clone(sval);\n      }\n    },\n\n    /**\n     * Merges source[key] in target[key] only if target[key] is undefined.\n     * @private\n     */\n    _mergerIf: function _mergerIf(key, target, source) {\n      var tval = target[key];\n      var sval = source[key];\n\n      if (helpers.isObject(tval) && helpers.isObject(sval)) {\n        helpers.mergeIf(tval, sval);\n      } else if (!target.hasOwnProperty(key)) {\n        target[key] = helpers.clone(sval);\n      }\n    },\n\n    /**\n     * Recursively deep copies `source` properties into `target` with the given `options`.\n     * IMPORTANT: `target` is not cloned and will be updated with `source` properties.\n     * @param {object} target - The target object in which all sources are merged into.\n     * @param {object|object[]} source - Object(s) to merge into `target`.\n     * @param {object} [options] - Merging options:\n     * @param {function} [options.merger] - The merge method (key, target, source, options)\n     * @returns {object} The `target` object.\n     */\n    merge: function merge(target, source, options) {\n      var sources = helpers.isArray(source) ? source : [source];\n      var ilen = sources.length;\n      var merge, i, keys, klen, k;\n\n      if (!helpers.isObject(target)) {\n        return target;\n      }\n\n      options = options || {};\n      merge = options.merger || helpers._merger;\n\n      for (i = 0; i < ilen; ++i) {\n        source = sources[i];\n\n        if (!helpers.isObject(source)) {\n          continue;\n        }\n\n        keys = Object.keys(source);\n\n        for (k = 0, klen = keys.length; k < klen; ++k) {\n          merge(keys[k], target, source, options);\n        }\n      }\n\n      return target;\n    },\n\n    /**\n     * Recursively deep copies `source` properties into `target` *only* if not defined in target.\n     * IMPORTANT: `target` is not cloned and will be updated with `source` properties.\n     * @param {object} target - The target object in which all sources are merged into.\n     * @param {object|object[]} source - Object(s) to merge into `target`.\n     * @returns {object} The `target` object.\n     */\n    mergeIf: function mergeIf(target, source) {\n      return helpers.merge(target, source, {\n        merger: helpers._mergerIf\n      });\n    },\n\n    /**\n     * Applies the contents of two or more objects together into the first object.\n     * @param {object} target - The target object in which all objects are merged into.\n     * @param {object} arg1 - Object containing additional properties to merge in target.\n     * @param {object} argN - Additional objects containing properties to merge in target.\n     * @returns {object} The `target` object.\n     */\n    extend: Object.assign || function (target) {\n      return helpers.merge(target, [].slice.call(arguments, 1), {\n        merger: function merger(key, dst, src) {\n          dst[key] = src[key];\n        }\n      });\n    },\n\n    /**\n     * Basic javascript inheritance based on the model created in Backbone.js\n     */\n    inherits: function inherits(extensions) {\n      var me = this;\n      var ChartElement = extensions && extensions.hasOwnProperty('constructor') ? extensions.constructor : function () {\n        return me.apply(this, arguments);\n      };\n\n      var Surrogate = function Surrogate() {\n        this.constructor = ChartElement;\n      };\n\n      Surrogate.prototype = me.prototype;\n      ChartElement.prototype = new Surrogate();\n      ChartElement.extend = helpers.inherits;\n\n      if (extensions) {\n        helpers.extend(ChartElement.prototype, extensions);\n      }\n\n      ChartElement.__super__ = me.prototype;\n      return ChartElement;\n    },\n    _deprecated: function _deprecated(scope, value, previous, current) {\n      if (value !== undefined) {\n        console.warn(scope + ': \"' + previous + '\" is deprecated. Please use \"' + current + '\" instead');\n      }\n    }\n  };\n  var helpers_core = helpers; // DEPRECATIONS\n\n  /**\n   * Provided for backward compatibility, use Chart.helpers.callback instead.\n   * @function Chart.helpers.callCallback\n   * @deprecated since version 2.6.0\n   * @todo remove at version 3\n   * @private\n   */\n\n  helpers.callCallback = helpers.callback;\n  /**\n   * Provided for backward compatibility, use Array.prototype.indexOf instead.\n   * Array.prototype.indexOf compatibility: Chrome, Opera, Safari, FF1.5+, IE9+\n   * @function Chart.helpers.indexOf\n   * @deprecated since version 2.7.0\n   * @todo remove at version 3\n   * @private\n   */\n\n  helpers.indexOf = function (array, item, fromIndex) {\n    return Array.prototype.indexOf.call(array, item, fromIndex);\n  };\n  /**\n   * Provided for backward compatibility, use Chart.helpers.valueOrDefault instead.\n   * @function Chart.helpers.getValueOrDefault\n   * @deprecated since version 2.7.0\n   * @todo remove at version 3\n   * @private\n   */\n\n\n  helpers.getValueOrDefault = helpers.valueOrDefault;\n  /**\n   * Provided for backward compatibility, use Chart.helpers.valueAtIndexOrDefault instead.\n   * @function Chart.helpers.getValueAtIndexOrDefault\n   * @deprecated since version 2.7.0\n   * @todo remove at version 3\n   * @private\n   */\n\n  helpers.getValueAtIndexOrDefault = helpers.valueAtIndexOrDefault;\n  /**\n   * Easing functions adapted from Robert Penner's easing equations.\n   * @namespace Chart.helpers.easingEffects\n   * @see http://www.robertpenner.com/easing/\n   */\n\n  var effects = {\n    linear: function linear(t) {\n      return t;\n    },\n    easeInQuad: function easeInQuad(t) {\n      return t * t;\n    },\n    easeOutQuad: function easeOutQuad(t) {\n      return -t * (t - 2);\n    },\n    easeInOutQuad: function easeInOutQuad(t) {\n      if ((t /= 0.5) < 1) {\n        return 0.5 * t * t;\n      }\n\n      return -0.5 * (--t * (t - 2) - 1);\n    },\n    easeInCubic: function easeInCubic(t) {\n      return t * t * t;\n    },\n    easeOutCubic: function easeOutCubic(t) {\n      return (t = t - 1) * t * t + 1;\n    },\n    easeInOutCubic: function easeInOutCubic(t) {\n      if ((t /= 0.5) < 1) {\n        return 0.5 * t * t * t;\n      }\n\n      return 0.5 * ((t -= 2) * t * t + 2);\n    },\n    easeInQuart: function easeInQuart(t) {\n      return t * t * t * t;\n    },\n    easeOutQuart: function easeOutQuart(t) {\n      return -((t = t - 1) * t * t * t - 1);\n    },\n    easeInOutQuart: function easeInOutQuart(t) {\n      if ((t /= 0.5) < 1) {\n        return 0.5 * t * t * t * t;\n      }\n\n      return -0.5 * ((t -= 2) * t * t * t - 2);\n    },\n    easeInQuint: function easeInQuint(t) {\n      return t * t * t * t * t;\n    },\n    easeOutQuint: function easeOutQuint(t) {\n      return (t = t - 1) * t * t * t * t + 1;\n    },\n    easeInOutQuint: function easeInOutQuint(t) {\n      if ((t /= 0.5) < 1) {\n        return 0.5 * t * t * t * t * t;\n      }\n\n      return 0.5 * ((t -= 2) * t * t * t * t + 2);\n    },\n    easeInSine: function easeInSine(t) {\n      return -Math.cos(t * (Math.PI / 2)) + 1;\n    },\n    easeOutSine: function easeOutSine(t) {\n      return Math.sin(t * (Math.PI / 2));\n    },\n    easeInOutSine: function easeInOutSine(t) {\n      return -0.5 * (Math.cos(Math.PI * t) - 1);\n    },\n    easeInExpo: function easeInExpo(t) {\n      return t === 0 ? 0 : Math.pow(2, 10 * (t - 1));\n    },\n    easeOutExpo: function easeOutExpo(t) {\n      return t === 1 ? 1 : -Math.pow(2, -10 * t) + 1;\n    },\n    easeInOutExpo: function easeInOutExpo(t) {\n      if (t === 0) {\n        return 0;\n      }\n\n      if (t === 1) {\n        return 1;\n      }\n\n      if ((t /= 0.5) < 1) {\n        return 0.5 * Math.pow(2, 10 * (t - 1));\n      }\n\n      return 0.5 * (-Math.pow(2, -10 * --t) + 2);\n    },\n    easeInCirc: function easeInCirc(t) {\n      if (t >= 1) {\n        return t;\n      }\n\n      return -(Math.sqrt(1 - t * t) - 1);\n    },\n    easeOutCirc: function easeOutCirc(t) {\n      return Math.sqrt(1 - (t = t - 1) * t);\n    },\n    easeInOutCirc: function easeInOutCirc(t) {\n      if ((t /= 0.5) < 1) {\n        return -0.5 * (Math.sqrt(1 - t * t) - 1);\n      }\n\n      return 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1);\n    },\n    easeInElastic: function easeInElastic(t) {\n      var s = 1.70158;\n      var p = 0;\n      var a = 1;\n\n      if (t === 0) {\n        return 0;\n      }\n\n      if (t === 1) {\n        return 1;\n      }\n\n      if (!p) {\n        p = 0.3;\n      }\n\n      if (a < 1) {\n        a = 1;\n        s = p / 4;\n      } else {\n        s = p / (2 * Math.PI) * Math.asin(1 / a);\n      }\n\n      return -(a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p));\n    },\n    easeOutElastic: function easeOutElastic(t) {\n      var s = 1.70158;\n      var p = 0;\n      var a = 1;\n\n      if (t === 0) {\n        return 0;\n      }\n\n      if (t === 1) {\n        return 1;\n      }\n\n      if (!p) {\n        p = 0.3;\n      }\n\n      if (a < 1) {\n        a = 1;\n        s = p / 4;\n      } else {\n        s = p / (2 * Math.PI) * Math.asin(1 / a);\n      }\n\n      return a * Math.pow(2, -10 * t) * Math.sin((t - s) * (2 * Math.PI) / p) + 1;\n    },\n    easeInOutElastic: function easeInOutElastic(t) {\n      var s = 1.70158;\n      var p = 0;\n      var a = 1;\n\n      if (t === 0) {\n        return 0;\n      }\n\n      if ((t /= 0.5) === 2) {\n        return 1;\n      }\n\n      if (!p) {\n        p = 0.45;\n      }\n\n      if (a < 1) {\n        a = 1;\n        s = p / 4;\n      } else {\n        s = p / (2 * Math.PI) * Math.asin(1 / a);\n      }\n\n      if (t < 1) {\n        return -0.5 * (a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p));\n      }\n\n      return a * Math.pow(2, -10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p) * 0.5 + 1;\n    },\n    easeInBack: function easeInBack(t) {\n      var s = 1.70158;\n      return t * t * ((s + 1) * t - s);\n    },\n    easeOutBack: function easeOutBack(t) {\n      var s = 1.70158;\n      return (t = t - 1) * t * ((s + 1) * t + s) + 1;\n    },\n    easeInOutBack: function easeInOutBack(t) {\n      var s = 1.70158;\n\n      if ((t /= 0.5) < 1) {\n        return 0.5 * (t * t * (((s *= 1.525) + 1) * t - s));\n      }\n\n      return 0.5 * ((t -= 2) * t * (((s *= 1.525) + 1) * t + s) + 2);\n    },\n    easeInBounce: function easeInBounce(t) {\n      return 1 - effects.easeOutBounce(1 - t);\n    },\n    easeOutBounce: function easeOutBounce(t) {\n      if (t < 1 / 2.75) {\n        return 7.5625 * t * t;\n      }\n\n      if (t < 2 / 2.75) {\n        return 7.5625 * (t -= 1.5 / 2.75) * t + 0.75;\n      }\n\n      if (t < 2.5 / 2.75) {\n        return 7.5625 * (t -= 2.25 / 2.75) * t + 0.9375;\n      }\n\n      return 7.5625 * (t -= 2.625 / 2.75) * t + 0.984375;\n    },\n    easeInOutBounce: function easeInOutBounce(t) {\n      if (t < 0.5) {\n        return effects.easeInBounce(t * 2) * 0.5;\n      }\n\n      return effects.easeOutBounce(t * 2 - 1) * 0.5 + 0.5;\n    }\n  };\n  var helpers_easing = {\n    effects: effects\n  }; // DEPRECATIONS\n\n  /**\n   * Provided for backward compatibility, use Chart.helpers.easing.effects instead.\n   * @function Chart.helpers.easingEffects\n   * @deprecated since version 2.7.0\n   * @todo remove at version 3\n   * @private\n   */\n\n  helpers_core.easingEffects = effects;\n  var PI = Math.PI;\n  var RAD_PER_DEG = PI / 180;\n  var DOUBLE_PI = PI * 2;\n  var HALF_PI = PI / 2;\n  var QUARTER_PI = PI / 4;\n  var TWO_THIRDS_PI = PI * 2 / 3;\n  /**\n   * @namespace Chart.helpers.canvas\n   */\n\n  var exports$1 = {\n    /**\n     * Clears the entire canvas associated to the given `chart`.\n     * @param {Chart} chart - The chart for which to clear the canvas.\n     */\n    clear: function clear(chart) {\n      chart.ctx.clearRect(0, 0, chart.width, chart.height);\n    },\n\n    /**\n     * Creates a \"path\" for a rectangle with rounded corners at position (x, y) with a\n     * given size (width, height) and the same `radius` for all corners.\n     * @param {CanvasRenderingContext2D} ctx - The canvas 2D Context.\n     * @param {number} x - The x axis of the coordinate for the rectangle starting point.\n     * @param {number} y - The y axis of the coordinate for the rectangle starting point.\n     * @param {number} width - The rectangle's width.\n     * @param {number} height - The rectangle's height.\n     * @param {number} radius - The rounded amount (in pixels) for the four corners.\n     * @todo handle `radius` as top-left, top-right, bottom-right, bottom-left array/object?\n     */\n    roundedRect: function roundedRect(ctx, x, y, width, height, radius) {\n      if (radius) {\n        var r = Math.min(radius, height / 2, width / 2);\n        var left = x + r;\n        var top = y + r;\n        var right = x + width - r;\n        var bottom = y + height - r;\n        ctx.moveTo(x, top);\n\n        if (left < right && top < bottom) {\n          ctx.arc(left, top, r, -PI, -HALF_PI);\n          ctx.arc(right, top, r, -HALF_PI, 0);\n          ctx.arc(right, bottom, r, 0, HALF_PI);\n          ctx.arc(left, bottom, r, HALF_PI, PI);\n        } else if (left < right) {\n          ctx.moveTo(left, y);\n          ctx.arc(right, top, r, -HALF_PI, HALF_PI);\n          ctx.arc(left, top, r, HALF_PI, PI + HALF_PI);\n        } else if (top < bottom) {\n          ctx.arc(left, top, r, -PI, 0);\n          ctx.arc(left, bottom, r, 0, PI);\n        } else {\n          ctx.arc(left, top, r, -PI, PI);\n        }\n\n        ctx.closePath();\n        ctx.moveTo(x, y);\n      } else {\n        ctx.rect(x, y, width, height);\n      }\n    },\n    drawPoint: function drawPoint(ctx, style, radius, x, y, rotation) {\n      var type, xOffset, yOffset, size, cornerRadius;\n      var rad = (rotation || 0) * RAD_PER_DEG;\n\n      if (style && typeof style === 'object') {\n        type = style.toString();\n\n        if (type === '[object HTMLImageElement]' || type === '[object HTMLCanvasElement]') {\n          ctx.save();\n          ctx.translate(x, y);\n          ctx.rotate(rad);\n          ctx.drawImage(style, -style.width / 2, -style.height / 2, style.width, style.height);\n          ctx.restore();\n          return;\n        }\n      }\n\n      if (isNaN(radius) || radius <= 0) {\n        return;\n      }\n\n      ctx.beginPath();\n\n      switch (style) {\n        // Default includes circle\n        default:\n          ctx.arc(x, y, radius, 0, DOUBLE_PI);\n          ctx.closePath();\n          break;\n\n        case 'triangle':\n          ctx.moveTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\n          rad += TWO_THIRDS_PI;\n          ctx.lineTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\n          rad += TWO_THIRDS_PI;\n          ctx.lineTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\n          ctx.closePath();\n          break;\n\n        case 'rectRounded':\n          // NOTE: the rounded rect implementation changed to use `arc` instead of\n          // `quadraticCurveTo` since it generates better results when rect is\n          // almost a circle. 0.516 (instead of 0.5) produces results with visually\n          // closer proportion to the previous impl and it is inscribed in the\n          // circle with `radius`. For more details, see the following PRs:\n          // https://github.com/chartjs/Chart.js/issues/5597\n          // https://github.com/chartjs/Chart.js/issues/5858\n          cornerRadius = radius * 0.516;\n          size = radius - cornerRadius;\n          xOffset = Math.cos(rad + QUARTER_PI) * size;\n          yOffset = Math.sin(rad + QUARTER_PI) * size;\n          ctx.arc(x - xOffset, y - yOffset, cornerRadius, rad - PI, rad - HALF_PI);\n          ctx.arc(x + yOffset, y - xOffset, cornerRadius, rad - HALF_PI, rad);\n          ctx.arc(x + xOffset, y + yOffset, cornerRadius, rad, rad + HALF_PI);\n          ctx.arc(x - yOffset, y + xOffset, cornerRadius, rad + HALF_PI, rad + PI);\n          ctx.closePath();\n          break;\n\n        case 'rect':\n          if (!rotation) {\n            size = Math.SQRT1_2 * radius;\n            ctx.rect(x - size, y - size, 2 * size, 2 * size);\n            break;\n          }\n\n          rad += QUARTER_PI;\n\n        /* falls through */\n\n        case 'rectRot':\n          xOffset = Math.cos(rad) * radius;\n          yOffset = Math.sin(rad) * radius;\n          ctx.moveTo(x - xOffset, y - yOffset);\n          ctx.lineTo(x + yOffset, y - xOffset);\n          ctx.lineTo(x + xOffset, y + yOffset);\n          ctx.lineTo(x - yOffset, y + xOffset);\n          ctx.closePath();\n          break;\n\n        case 'crossRot':\n          rad += QUARTER_PI;\n\n        /* falls through */\n\n        case 'cross':\n          xOffset = Math.cos(rad) * radius;\n          yOffset = Math.sin(rad) * radius;\n          ctx.moveTo(x - xOffset, y - yOffset);\n          ctx.lineTo(x + xOffset, y + yOffset);\n          ctx.moveTo(x + yOffset, y - xOffset);\n          ctx.lineTo(x - yOffset, y + xOffset);\n          break;\n\n        case 'star':\n          xOffset = Math.cos(rad) * radius;\n          yOffset = Math.sin(rad) * radius;\n          ctx.moveTo(x - xOffset, y - yOffset);\n          ctx.lineTo(x + xOffset, y + yOffset);\n          ctx.moveTo(x + yOffset, y - xOffset);\n          ctx.lineTo(x - yOffset, y + xOffset);\n          rad += QUARTER_PI;\n          xOffset = Math.cos(rad) * radius;\n          yOffset = Math.sin(rad) * radius;\n          ctx.moveTo(x - xOffset, y - yOffset);\n          ctx.lineTo(x + xOffset, y + yOffset);\n          ctx.moveTo(x + yOffset, y - xOffset);\n          ctx.lineTo(x - yOffset, y + xOffset);\n          break;\n\n        case 'line':\n          xOffset = Math.cos(rad) * radius;\n          yOffset = Math.sin(rad) * radius;\n          ctx.moveTo(x - xOffset, y - yOffset);\n          ctx.lineTo(x + xOffset, y + yOffset);\n          break;\n\n        case 'dash':\n          ctx.moveTo(x, y);\n          ctx.lineTo(x + Math.cos(rad) * radius, y + Math.sin(rad) * radius);\n          break;\n      }\n\n      ctx.fill();\n      ctx.stroke();\n    },\n\n    /**\n     * Returns true if the point is inside the rectangle\n     * @param {object} point - The point to test\n     * @param {object} area - The rectangle\n     * @returns {boolean}\n     * @private\n     */\n    _isPointInArea: function _isPointInArea(point, area) {\n      var epsilon = 1e-6; // 1e-6 is margin in pixels for accumulated error.\n\n      return point.x > area.left - epsilon && point.x < area.right + epsilon && point.y > area.top - epsilon && point.y < area.bottom + epsilon;\n    },\n    clipArea: function clipArea(ctx, area) {\n      ctx.save();\n      ctx.beginPath();\n      ctx.rect(area.left, area.top, area.right - area.left, area.bottom - area.top);\n      ctx.clip();\n    },\n    unclipArea: function unclipArea(ctx) {\n      ctx.restore();\n    },\n    lineTo: function lineTo(ctx, previous, target, flip) {\n      var stepped = target.steppedLine;\n\n      if (stepped) {\n        if (stepped === 'middle') {\n          var midpoint = (previous.x + target.x) / 2.0;\n          ctx.lineTo(midpoint, flip ? target.y : previous.y);\n          ctx.lineTo(midpoint, flip ? previous.y : target.y);\n        } else if (stepped === 'after' && !flip || stepped !== 'after' && flip) {\n          ctx.lineTo(previous.x, target.y);\n        } else {\n          ctx.lineTo(target.x, previous.y);\n        }\n\n        ctx.lineTo(target.x, target.y);\n        return;\n      }\n\n      if (!target.tension) {\n        ctx.lineTo(target.x, target.y);\n        return;\n      }\n\n      ctx.bezierCurveTo(flip ? previous.controlPointPreviousX : previous.controlPointNextX, flip ? previous.controlPointPreviousY : previous.controlPointNextY, flip ? target.controlPointNextX : target.controlPointPreviousX, flip ? target.controlPointNextY : target.controlPointPreviousY, target.x, target.y);\n    }\n  };\n  var helpers_canvas = exports$1; // DEPRECATIONS\n\n  /**\n   * Provided for backward compatibility, use Chart.helpers.canvas.clear instead.\n   * @namespace Chart.helpers.clear\n   * @deprecated since version 2.7.0\n   * @todo remove at version 3\n   * @private\n   */\n\n  helpers_core.clear = exports$1.clear;\n  /**\n   * Provided for backward compatibility, use Chart.helpers.canvas.roundedRect instead.\n   * @namespace Chart.helpers.drawRoundedRectangle\n   * @deprecated since version 2.7.0\n   * @todo remove at version 3\n   * @private\n   */\n\n  helpers_core.drawRoundedRectangle = function (ctx) {\n    ctx.beginPath();\n    exports$1.roundedRect.apply(exports$1, arguments);\n  };\n\n  var defaults = {\n    /**\n     * @private\n     */\n    _set: function _set(scope, values) {\n      return helpers_core.merge(this[scope] || (this[scope] = {}), values);\n    }\n  }; // TODO(v3): remove 'global' from namespace.  all default are global and\n  // there's inconsistency around which options are under 'global'\n\n  defaults._set('global', {\n    defaultColor: 'rgba(0,0,0,0.1)',\n    defaultFontColor: '#666',\n    defaultFontFamily: \"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif\",\n    defaultFontSize: 12,\n    defaultFontStyle: 'normal',\n    defaultLineHeight: 1.2,\n    showLines: true\n  });\n\n  var core_defaults = defaults;\n  var valueOrDefault = helpers_core.valueOrDefault;\n  /**\n   * Converts the given font object into a CSS font string.\n   * @param {object} font - A font object.\n   * @return {string} The CSS font string. See https://developer.mozilla.org/en-US/docs/Web/CSS/font\n   * @private\n   */\n\n  function toFontString(font) {\n    if (!font || helpers_core.isNullOrUndef(font.size) || helpers_core.isNullOrUndef(font.family)) {\n      return null;\n    }\n\n    return (font.style ? font.style + ' ' : '') + (font.weight ? font.weight + ' ' : '') + font.size + 'px ' + font.family;\n  }\n  /**\n   * @alias Chart.helpers.options\n   * @namespace\n   */\n\n\n  var helpers_options = {\n    /**\n     * Converts the given line height `value` in pixels for a specific font `size`.\n     * @param {number|string} value - The lineHeight to parse (eg. 1.6, '14px', '75%', '1.6em').\n     * @param {number} size - The font size (in pixels) used to resolve relative `value`.\n     * @returns {number} The effective line height in pixels (size * 1.2 if value is invalid).\n     * @see https://developer.mozilla.org/en-US/docs/Web/CSS/line-height\n     * @since 2.7.0\n     */\n    toLineHeight: function toLineHeight(value, size) {\n      var matches = ('' + value).match(/^(normal|(\\d+(?:\\.\\d+)?)(px|em|%)?)$/);\n\n      if (!matches || matches[1] === 'normal') {\n        return size * 1.2;\n      }\n\n      value = +matches[2];\n\n      switch (matches[3]) {\n        case 'px':\n          return value;\n\n        case '%':\n          value /= 100;\n          break;\n      }\n\n      return size * value;\n    },\n\n    /**\n     * Converts the given value into a padding object with pre-computed width/height.\n     * @param {number|object} value - If a number, set the value to all TRBL component,\n     *  else, if and object, use defined properties and sets undefined ones to 0.\n     * @returns {object} The padding values (top, right, bottom, left, width, height)\n     * @since 2.7.0\n     */\n    toPadding: function toPadding(value) {\n      var t, r, b, l;\n\n      if (helpers_core.isObject(value)) {\n        t = +value.top || 0;\n        r = +value.right || 0;\n        b = +value.bottom || 0;\n        l = +value.left || 0;\n      } else {\n        t = r = b = l = +value || 0;\n      }\n\n      return {\n        top: t,\n        right: r,\n        bottom: b,\n        left: l,\n        height: t + b,\n        width: l + r\n      };\n    },\n\n    /**\n     * Parses font options and returns the font object.\n     * @param {object} options - A object that contains font options to be parsed.\n     * @return {object} The font object.\n     * @todo Support font.* options and renamed to toFont().\n     * @private\n     */\n    _parseFont: function _parseFont(options) {\n      var globalDefaults = core_defaults.global;\n      var size = valueOrDefault(options.fontSize, globalDefaults.defaultFontSize);\n      var font = {\n        family: valueOrDefault(options.fontFamily, globalDefaults.defaultFontFamily),\n        lineHeight: helpers_core.options.toLineHeight(valueOrDefault(options.lineHeight, globalDefaults.defaultLineHeight), size),\n        size: size,\n        style: valueOrDefault(options.fontStyle, globalDefaults.defaultFontStyle),\n        weight: null,\n        string: ''\n      };\n      font.string = toFontString(font);\n      return font;\n    },\n\n    /**\n     * Evaluates the given `inputs` sequentially and returns the first defined value.\n     * @param {Array} inputs - An array of values, falling back to the last value.\n     * @param {object} [context] - If defined and the current value is a function, the value\n     * is called with `context` as first argument and the result becomes the new input.\n     * @param {number} [index] - If defined and the current value is an array, the value\n     * at `index` become the new input.\n     * @param {object} [info] - object to return information about resolution in\n     * @param {boolean} [info.cacheable] - Will be set to `false` if option is not cacheable.\n     * @since 2.7.0\n     */\n    resolve: function resolve(inputs, context, index, info) {\n      var cacheable = true;\n      var i, ilen, value;\n\n      for (i = 0, ilen = inputs.length; i < ilen; ++i) {\n        value = inputs[i];\n\n        if (value === undefined) {\n          continue;\n        }\n\n        if (context !== undefined && typeof value === 'function') {\n          value = value(context);\n          cacheable = false;\n        }\n\n        if (index !== undefined && helpers_core.isArray(value)) {\n          value = value[index];\n          cacheable = false;\n        }\n\n        if (value !== undefined) {\n          if (info && !cacheable) {\n            info.cacheable = false;\n          }\n\n          return value;\n        }\n      }\n    }\n  };\n  /**\n   * @alias Chart.helpers.math\n   * @namespace\n   */\n\n  var exports$2 = {\n    /**\n     * Returns an array of factors sorted from 1 to sqrt(value)\n     * @private\n     */\n    _factorize: function _factorize(value) {\n      var result = [];\n      var sqrt = Math.sqrt(value);\n      var i;\n\n      for (i = 1; i < sqrt; i++) {\n        if (value % i === 0) {\n          result.push(i);\n          result.push(value / i);\n        }\n      }\n\n      if (sqrt === (sqrt | 0)) {\n        // if value is a square number\n        result.push(sqrt);\n      }\n\n      result.sort(function (a, b) {\n        return a - b;\n      }).pop();\n      return result;\n    },\n    log10: Math.log10 || function (x) {\n      var exponent = Math.log(x) * Math.LOG10E; // Math.LOG10E = 1 / Math.LN10.\n      // Check for whole powers of 10,\n      // which due to floating point rounding error should be corrected.\n\n      var powerOf10 = Math.round(exponent);\n      var isPowerOf10 = x === Math.pow(10, powerOf10);\n      return isPowerOf10 ? powerOf10 : exponent;\n    }\n  };\n  var helpers_math = exports$2; // DEPRECATIONS\n\n  /**\n   * Provided for backward compatibility, use Chart.helpers.math.log10 instead.\n   * @namespace Chart.helpers.log10\n   * @deprecated since version 2.9.0\n   * @todo remove at version 3\n   * @private\n   */\n\n  helpers_core.log10 = exports$2.log10;\n\n  var getRtlAdapter = function getRtlAdapter(rectX, width) {\n    return {\n      x: function x(_x2) {\n        return rectX + rectX + width - _x2;\n      },\n      setWidth: function setWidth(w) {\n        width = w;\n      },\n      textAlign: function textAlign(align) {\n        if (align === 'center') {\n          return align;\n        }\n\n        return align === 'right' ? 'left' : 'right';\n      },\n      xPlus: function xPlus(x, value) {\n        return x - value;\n      },\n      leftForLtr: function leftForLtr(x, itemWidth) {\n        return x - itemWidth;\n      }\n    };\n  };\n\n  var getLtrAdapter = function getLtrAdapter() {\n    return {\n      x: function x(_x3) {\n        return _x3;\n      },\n      setWidth: function setWidth(w) {// eslint-disable-line no-unused-vars\n      },\n      textAlign: function textAlign(align) {\n        return align;\n      },\n      xPlus: function xPlus(x, value) {\n        return x + value;\n      },\n      leftForLtr: function leftForLtr(x, _itemWidth) {\n        // eslint-disable-line no-unused-vars\n        return x;\n      }\n    };\n  };\n\n  var getAdapter = function getAdapter(rtl, rectX, width) {\n    return rtl ? getRtlAdapter(rectX, width) : getLtrAdapter();\n  };\n\n  var overrideTextDirection = function overrideTextDirection(ctx, direction) {\n    var style, original;\n\n    if (direction === 'ltr' || direction === 'rtl') {\n      style = ctx.canvas.style;\n      original = [style.getPropertyValue('direction'), style.getPropertyPriority('direction')];\n      style.setProperty('direction', direction, 'important');\n      ctx.prevTextDirection = original;\n    }\n  };\n\n  var restoreTextDirection = function restoreTextDirection(ctx) {\n    var original = ctx.prevTextDirection;\n\n    if (original !== undefined) {\n      delete ctx.prevTextDirection;\n      ctx.canvas.style.setProperty('direction', original[0], original[1]);\n    }\n  };\n\n  var helpers_rtl = {\n    getRtlAdapter: getAdapter,\n    overrideTextDirection: overrideTextDirection,\n    restoreTextDirection: restoreTextDirection\n  };\n  var helpers$1 = helpers_core;\n  var easing = helpers_easing;\n  var canvas = helpers_canvas;\n  var options = helpers_options;\n  var math = helpers_math;\n  var rtl = helpers_rtl;\n  helpers$1.easing = easing;\n  helpers$1.canvas = canvas;\n  helpers$1.options = options;\n  helpers$1.math = math;\n  helpers$1.rtl = rtl;\n\n  function interpolate(start, view, model, ease) {\n    var keys = Object.keys(model);\n    var i, ilen, key, actual, origin, target, type, c0, c1;\n\n    for (i = 0, ilen = keys.length; i < ilen; ++i) {\n      key = keys[i];\n      target = model[key]; // if a value is added to the model after pivot() has been called, the view\n      // doesn't contain it, so let's initialize the view to the target value.\n\n      if (!view.hasOwnProperty(key)) {\n        view[key] = target;\n      }\n\n      actual = view[key];\n\n      if (actual === target || key[0] === '_') {\n        continue;\n      }\n\n      if (!start.hasOwnProperty(key)) {\n        start[key] = actual;\n      }\n\n      origin = start[key];\n      type = typeof target;\n\n      if (type === typeof origin) {\n        if (type === 'string') {\n          c0 = chartjsColor(origin);\n\n          if (c0.valid) {\n            c1 = chartjsColor(target);\n\n            if (c1.valid) {\n              view[key] = c1.mix(c0, ease).rgbString();\n              continue;\n            }\n          }\n        } else if (helpers$1.isFinite(origin) && helpers$1.isFinite(target)) {\n          view[key] = origin + (target - origin) * ease;\n          continue;\n        }\n      }\n\n      view[key] = target;\n    }\n  }\n\n  var Element = function Element(configuration) {\n    helpers$1.extend(this, configuration);\n    this.initialize.apply(this, arguments);\n  };\n\n  helpers$1.extend(Element.prototype, {\n    _type: undefined,\n    initialize: function initialize() {\n      this.hidden = false;\n    },\n    pivot: function pivot() {\n      var me = this;\n\n      if (!me._view) {\n        me._view = helpers$1.extend({}, me._model);\n      }\n\n      me._start = {};\n      return me;\n    },\n    transition: function transition(ease) {\n      var me = this;\n      var model = me._model;\n      var start = me._start;\n      var view = me._view; // No animation -> No Transition\n\n      if (!model || ease === 1) {\n        me._view = helpers$1.extend({}, model);\n        me._start = null;\n        return me;\n      }\n\n      if (!view) {\n        view = me._view = {};\n      }\n\n      if (!start) {\n        start = me._start = {};\n      }\n\n      interpolate(start, view, model, ease);\n      return me;\n    },\n    tooltipPosition: function tooltipPosition() {\n      return {\n        x: this._model.x,\n        y: this._model.y\n      };\n    },\n    hasValue: function hasValue() {\n      return helpers$1.isNumber(this._model.x) && helpers$1.isNumber(this._model.y);\n    }\n  });\n  Element.extend = helpers$1.inherits;\n  var core_element = Element;\n  var exports$3 = core_element.extend({\n    chart: null,\n    // the animation associated chart instance\n    currentStep: 0,\n    // the current animation step\n    numSteps: 60,\n    // default number of steps\n    easing: '',\n    // the easing to use for this animation\n    render: null,\n    // render function used by the animation service\n    onAnimationProgress: null,\n    // user specified callback to fire on each step of the animation\n    onAnimationComplete: null // user specified callback to fire when the animation finishes\n\n  });\n  var core_animation = exports$3; // DEPRECATIONS\n\n  /**\n   * Provided for backward compatibility, use Chart.Animation instead\n   * @prop Chart.Animation#animationObject\n   * @deprecated since version 2.6.0\n   * @todo remove at version 3\n   */\n\n  Object.defineProperty(exports$3.prototype, 'animationObject', {\n    get: function get() {\n      return this;\n    }\n  });\n  /**\n   * Provided for backward compatibility, use Chart.Animation#chart instead\n   * @prop Chart.Animation#chartInstance\n   * @deprecated since version 2.6.0\n   * @todo remove at version 3\n   */\n\n  Object.defineProperty(exports$3.prototype, 'chartInstance', {\n    get: function get() {\n      return this.chart;\n    },\n    set: function set(value) {\n      this.chart = value;\n    }\n  });\n\n  core_defaults._set('global', {\n    animation: {\n      duration: 1000,\n      easing: 'easeOutQuart',\n      onProgress: helpers$1.noop,\n      onComplete: helpers$1.noop\n    }\n  });\n\n  var core_animations = {\n    animations: [],\n    request: null,\n\n    /**\n     * @param {Chart} chart - The chart to animate.\n     * @param {Chart.Animation} animation - The animation that we will animate.\n     * @param {number} duration - The animation duration in ms.\n     * @param {boolean} lazy - if true, the chart is not marked as animating to enable more responsive interactions\n     */\n    addAnimation: function addAnimation(chart, animation, duration, lazy) {\n      var animations = this.animations;\n      var i, ilen;\n      animation.chart = chart;\n      animation.startTime = Date.now();\n      animation.duration = duration;\n\n      if (!lazy) {\n        chart.animating = true;\n      }\n\n      for (i = 0, ilen = animations.length; i < ilen; ++i) {\n        if (animations[i].chart === chart) {\n          animations[i] = animation;\n          return;\n        }\n      }\n\n      animations.push(animation); // If there are no animations queued, manually kickstart a digest, for lack of a better word\n\n      if (animations.length === 1) {\n        this.requestAnimationFrame();\n      }\n    },\n    cancelAnimation: function cancelAnimation(chart) {\n      var index = helpers$1.findIndex(this.animations, function (animation) {\n        return animation.chart === chart;\n      });\n\n      if (index !== -1) {\n        this.animations.splice(index, 1);\n        chart.animating = false;\n      }\n    },\n    requestAnimationFrame: function requestAnimationFrame() {\n      var me = this;\n\n      if (me.request === null) {\n        // Skip animation frame requests until the active one is executed.\n        // This can happen when processing mouse events, e.g. 'mousemove'\n        // and 'mouseout' events will trigger multiple renders.\n        me.request = helpers$1.requestAnimFrame.call(window, function () {\n          me.request = null;\n          me.startDigest();\n        });\n      }\n    },\n\n    /**\n     * @private\n     */\n    startDigest: function startDigest() {\n      var me = this;\n      me.advance(); // Do we have more stuff to animate?\n\n      if (me.animations.length > 0) {\n        me.requestAnimationFrame();\n      }\n    },\n\n    /**\n     * @private\n     */\n    advance: function advance() {\n      var animations = this.animations;\n      var animation, chart, numSteps, nextStep;\n      var i = 0; // 1 animation per chart, so we are looping charts here\n\n      while (i < animations.length) {\n        animation = animations[i];\n        chart = animation.chart;\n        numSteps = animation.numSteps; // Make sure that currentStep starts at 1\n        // https://github.com/chartjs/Chart.js/issues/6104\n\n        nextStep = Math.floor((Date.now() - animation.startTime) / animation.duration * numSteps) + 1;\n        animation.currentStep = Math.min(nextStep, numSteps);\n        helpers$1.callback(animation.render, [chart, animation], chart);\n        helpers$1.callback(animation.onAnimationProgress, [animation], chart);\n\n        if (animation.currentStep >= numSteps) {\n          helpers$1.callback(animation.onAnimationComplete, [animation], chart);\n          chart.animating = false;\n          animations.splice(i, 1);\n        } else {\n          ++i;\n        }\n      }\n    }\n  };\n  var resolve = helpers$1.options.resolve;\n  var arrayEvents = ['push', 'pop', 'shift', 'splice', 'unshift'];\n  /**\n   * Hooks the array methods that add or remove values ('push', pop', 'shift', 'splice',\n   * 'unshift') and notify the listener AFTER the array has been altered. Listeners are\n   * called on the 'onData*' callbacks (e.g. onDataPush, etc.) with same arguments.\n   */\n\n  function listenArrayEvents(array, listener) {\n    if (array._chartjs) {\n      array._chartjs.listeners.push(listener);\n\n      return;\n    }\n\n    Object.defineProperty(array, '_chartjs', {\n      configurable: true,\n      enumerable: false,\n      value: {\n        listeners: [listener]\n      }\n    });\n    arrayEvents.forEach(function (key) {\n      var method = 'onData' + key.charAt(0).toUpperCase() + key.slice(1);\n      var base = array[key];\n      Object.defineProperty(array, key, {\n        configurable: true,\n        enumerable: false,\n        value: function value() {\n          var args = Array.prototype.slice.call(arguments);\n          var res = base.apply(this, args);\n          helpers$1.each(array._chartjs.listeners, function (object) {\n            if (typeof object[method] === 'function') {\n              object[method].apply(object, args);\n            }\n          });\n          return res;\n        }\n      });\n    });\n  }\n  /**\n   * Removes the given array event listener and cleanup extra attached properties (such as\n   * the _chartjs stub and overridden methods) if array doesn't have any more listeners.\n   */\n\n\n  function unlistenArrayEvents(array, listener) {\n    var stub = array._chartjs;\n\n    if (!stub) {\n      return;\n    }\n\n    var listeners = stub.listeners;\n    var index = listeners.indexOf(listener);\n\n    if (index !== -1) {\n      listeners.splice(index, 1);\n    }\n\n    if (listeners.length > 0) {\n      return;\n    }\n\n    arrayEvents.forEach(function (key) {\n      delete array[key];\n    });\n    delete array._chartjs;\n  } // Base class for all dataset controllers (line, bar, etc)\n\n\n  var DatasetController = function DatasetController(chart, datasetIndex) {\n    this.initialize(chart, datasetIndex);\n  };\n\n  helpers$1.extend(DatasetController.prototype, {\n    /**\n     * Element type used to generate a meta dataset (e.g. Chart.element.Line).\n     * @type {Chart.core.element}\n     */\n    datasetElementType: null,\n\n    /**\n     * Element type used to generate a meta data (e.g. Chart.element.Point).\n     * @type {Chart.core.element}\n     */\n    dataElementType: null,\n\n    /**\n     * Dataset element option keys to be resolved in _resolveDatasetElementOptions.\n     * A derived controller may override this to resolve controller-specific options.\n     * The keys defined here are for backward compatibility for legend styles.\n     * @private\n     */\n    _datasetElementOptions: ['backgroundColor', 'borderCapStyle', 'borderColor', 'borderDash', 'borderDashOffset', 'borderJoinStyle', 'borderWidth'],\n\n    /**\n     * Data element option keys to be resolved in _resolveDataElementOptions.\n     * A derived controller may override this to resolve controller-specific options.\n     * The keys defined here are for backward compatibility for legend styles.\n     * @private\n     */\n    _dataElementOptions: ['backgroundColor', 'borderColor', 'borderWidth', 'pointStyle'],\n    initialize: function initialize(chart, datasetIndex) {\n      var me = this;\n      me.chart = chart;\n      me.index = datasetIndex;\n      me.linkScales();\n      me.addElements();\n      me._type = me.getMeta().type;\n    },\n    updateIndex: function updateIndex(datasetIndex) {\n      this.index = datasetIndex;\n    },\n    linkScales: function linkScales() {\n      var me = this;\n      var meta = me.getMeta();\n      var chart = me.chart;\n      var scales = chart.scales;\n      var dataset = me.getDataset();\n      var scalesOpts = chart.options.scales;\n\n      if (meta.xAxisID === null || !(meta.xAxisID in scales) || dataset.xAxisID) {\n        meta.xAxisID = dataset.xAxisID || scalesOpts.xAxes[0].id;\n      }\n\n      if (meta.yAxisID === null || !(meta.yAxisID in scales) || dataset.yAxisID) {\n        meta.yAxisID = dataset.yAxisID || scalesOpts.yAxes[0].id;\n      }\n    },\n    getDataset: function getDataset() {\n      return this.chart.data.datasets[this.index];\n    },\n    getMeta: function getMeta() {\n      return this.chart.getDatasetMeta(this.index);\n    },\n    getScaleForId: function getScaleForId(scaleID) {\n      return this.chart.scales[scaleID];\n    },\n\n    /**\n     * @private\n     */\n    _getValueScaleId: function _getValueScaleId() {\n      return this.getMeta().yAxisID;\n    },\n\n    /**\n     * @private\n     */\n    _getIndexScaleId: function _getIndexScaleId() {\n      return this.getMeta().xAxisID;\n    },\n\n    /**\n     * @private\n     */\n    _getValueScale: function _getValueScale() {\n      return this.getScaleForId(this._getValueScaleId());\n    },\n\n    /**\n     * @private\n     */\n    _getIndexScale: function _getIndexScale() {\n      return this.getScaleForId(this._getIndexScaleId());\n    },\n    reset: function reset() {\n      this._update(true);\n    },\n\n    /**\n     * @private\n     */\n    destroy: function destroy() {\n      if (this._data) {\n        unlistenArrayEvents(this._data, this);\n      }\n    },\n    createMetaDataset: function createMetaDataset() {\n      var me = this;\n      var type = me.datasetElementType;\n      return type && new type({\n        _chart: me.chart,\n        _datasetIndex: me.index\n      });\n    },\n    createMetaData: function createMetaData(index) {\n      var me = this;\n      var type = me.dataElementType;\n      return type && new type({\n        _chart: me.chart,\n        _datasetIndex: me.index,\n        _index: index\n      });\n    },\n    addElements: function addElements() {\n      var me = this;\n      var meta = me.getMeta();\n      var data = me.getDataset().data || [];\n      var metaData = meta.data;\n      var i, ilen;\n\n      for (i = 0, ilen = data.length; i < ilen; ++i) {\n        metaData[i] = metaData[i] || me.createMetaData(i);\n      }\n\n      meta.dataset = meta.dataset || me.createMetaDataset();\n    },\n    addElementAndReset: function addElementAndReset(index) {\n      var element = this.createMetaData(index);\n      this.getMeta().data.splice(index, 0, element);\n      this.updateElement(element, index, true);\n    },\n    buildOrUpdateElements: function buildOrUpdateElements() {\n      var me = this;\n      var dataset = me.getDataset();\n      var data = dataset.data || (dataset.data = []); // In order to correctly handle data addition/deletion animation (an thus simulate\n      // real-time charts), we need to monitor these data modifications and synchronize\n      // the internal meta data accordingly.\n\n      if (me._data !== data) {\n        if (me._data) {\n          // This case happens when the user replaced the data array instance.\n          unlistenArrayEvents(me._data, me);\n        }\n\n        if (data && Object.isExtensible(data)) {\n          listenArrayEvents(data, me);\n        }\n\n        me._data = data;\n      } // Re-sync meta data in case the user replaced the data array or if we missed\n      // any updates and so make sure that we handle number of datapoints changing.\n\n\n      me.resyncElements();\n    },\n\n    /**\n     * Returns the merged user-supplied and default dataset-level options\n     * @private\n     */\n    _configure: function _configure() {\n      var me = this;\n      me._config = helpers$1.merge({}, [me.chart.options.datasets[me._type], me.getDataset()], {\n        merger: function merger(key, target, source) {\n          if (key !== '_meta' && key !== 'data') {\n            helpers$1._merger(key, target, source);\n          }\n        }\n      });\n    },\n    _update: function _update(reset) {\n      var me = this;\n\n      me._configure();\n\n      me._cachedDataOpts = null;\n      me.update(reset);\n    },\n    update: helpers$1.noop,\n    transition: function transition(easingValue) {\n      var meta = this.getMeta();\n      var elements = meta.data || [];\n      var ilen = elements.length;\n      var i = 0;\n\n      for (; i < ilen; ++i) {\n        elements[i].transition(easingValue);\n      }\n\n      if (meta.dataset) {\n        meta.dataset.transition(easingValue);\n      }\n    },\n    draw: function draw() {\n      var meta = this.getMeta();\n      var elements = meta.data || [];\n      var ilen = elements.length;\n      var i = 0;\n\n      if (meta.dataset) {\n        meta.dataset.draw();\n      }\n\n      for (; i < ilen; ++i) {\n        elements[i].draw();\n      }\n    },\n\n    /**\n     * Returns a set of predefined style properties that should be used to represent the dataset\n     * or the data if the index is specified\n     * @param {number} index - data index\n     * @return {IStyleInterface} style object\n     */\n    getStyle: function getStyle(index) {\n      var me = this;\n      var meta = me.getMeta();\n      var dataset = meta.dataset;\n      var style;\n\n      me._configure();\n\n      if (dataset && index === undefined) {\n        style = me._resolveDatasetElementOptions(dataset || {});\n      } else {\n        index = index || 0;\n        style = me._resolveDataElementOptions(meta.data[index] || {}, index);\n      }\n\n      if (style.fill === false || style.fill === null) {\n        style.backgroundColor = style.borderColor;\n      }\n\n      return style;\n    },\n\n    /**\n     * @private\n     */\n    _resolveDatasetElementOptions: function _resolveDatasetElementOptions(element, hover) {\n      var me = this;\n      var chart = me.chart;\n      var datasetOpts = me._config;\n      var custom = element.custom || {};\n      var options = chart.options.elements[me.datasetElementType.prototype._type] || {};\n      var elementOptions = me._datasetElementOptions;\n      var values = {};\n      var i, ilen, key, readKey; // Scriptable options\n\n      var context = {\n        chart: chart,\n        dataset: me.getDataset(),\n        datasetIndex: me.index,\n        hover: hover\n      };\n\n      for (i = 0, ilen = elementOptions.length; i < ilen; ++i) {\n        key = elementOptions[i];\n        readKey = hover ? 'hover' + key.charAt(0).toUpperCase() + key.slice(1) : key;\n        values[key] = resolve([custom[readKey], datasetOpts[readKey], options[readKey]], context);\n      }\n\n      return values;\n    },\n\n    /**\n     * @private\n     */\n    _resolveDataElementOptions: function _resolveDataElementOptions(element, index) {\n      var me = this;\n      var custom = element && element.custom;\n      var cached = me._cachedDataOpts;\n\n      if (cached && !custom) {\n        return cached;\n      }\n\n      var chart = me.chart;\n      var datasetOpts = me._config;\n      var options = chart.options.elements[me.dataElementType.prototype._type] || {};\n      var elementOptions = me._dataElementOptions;\n      var values = {}; // Scriptable options\n\n      var context = {\n        chart: chart,\n        dataIndex: index,\n        dataset: me.getDataset(),\n        datasetIndex: me.index\n      }; // `resolve` sets cacheable to `false` if any option is indexed or scripted\n\n      var info = {\n        cacheable: !custom\n      };\n      var keys, i, ilen, key;\n      custom = custom || {};\n\n      if (helpers$1.isArray(elementOptions)) {\n        for (i = 0, ilen = elementOptions.length; i < ilen; ++i) {\n          key = elementOptions[i];\n          values[key] = resolve([custom[key], datasetOpts[key], options[key]], context, index, info);\n        }\n      } else {\n        keys = Object.keys(elementOptions);\n\n        for (i = 0, ilen = keys.length; i < ilen; ++i) {\n          key = keys[i];\n          values[key] = resolve([custom[key], datasetOpts[elementOptions[key]], datasetOpts[key], options[key]], context, index, info);\n        }\n      }\n\n      if (info.cacheable) {\n        me._cachedDataOpts = Object.freeze(values);\n      }\n\n      return values;\n    },\n    removeHoverStyle: function removeHoverStyle(element) {\n      helpers$1.merge(element._model, element.$previousStyle || {});\n      delete element.$previousStyle;\n    },\n    setHoverStyle: function setHoverStyle(element) {\n      var dataset = this.chart.data.datasets[element._datasetIndex];\n      var index = element._index;\n      var custom = element.custom || {};\n      var model = element._model;\n      var getHoverColor = helpers$1.getHoverColor;\n      element.$previousStyle = {\n        backgroundColor: model.backgroundColor,\n        borderColor: model.borderColor,\n        borderWidth: model.borderWidth\n      };\n      model.backgroundColor = resolve([custom.hoverBackgroundColor, dataset.hoverBackgroundColor, getHoverColor(model.backgroundColor)], undefined, index);\n      model.borderColor = resolve([custom.hoverBorderColor, dataset.hoverBorderColor, getHoverColor(model.borderColor)], undefined, index);\n      model.borderWidth = resolve([custom.hoverBorderWidth, dataset.hoverBorderWidth, model.borderWidth], undefined, index);\n    },\n\n    /**\n     * @private\n     */\n    _removeDatasetHoverStyle: function _removeDatasetHoverStyle() {\n      var element = this.getMeta().dataset;\n\n      if (element) {\n        this.removeHoverStyle(element);\n      }\n    },\n\n    /**\n     * @private\n     */\n    _setDatasetHoverStyle: function _setDatasetHoverStyle() {\n      var element = this.getMeta().dataset;\n      var prev = {};\n      var i, ilen, key, keys, hoverOptions, model;\n\n      if (!element) {\n        return;\n      }\n\n      model = element._model;\n      hoverOptions = this._resolveDatasetElementOptions(element, true);\n      keys = Object.keys(hoverOptions);\n\n      for (i = 0, ilen = keys.length; i < ilen; ++i) {\n        key = keys[i];\n        prev[key] = model[key];\n        model[key] = hoverOptions[key];\n      }\n\n      element.$previousStyle = prev;\n    },\n\n    /**\n     * @private\n     */\n    resyncElements: function resyncElements() {\n      var me = this;\n      var meta = me.getMeta();\n      var data = me.getDataset().data;\n      var numMeta = meta.data.length;\n      var numData = data.length;\n\n      if (numData < numMeta) {\n        meta.data.splice(numData, numMeta - numData);\n      } else if (numData > numMeta) {\n        me.insertElements(numMeta, numData - numMeta);\n      }\n    },\n\n    /**\n     * @private\n     */\n    insertElements: function insertElements(start, count) {\n      for (var i = 0; i < count; ++i) {\n        this.addElementAndReset(start + i);\n      }\n    },\n\n    /**\n     * @private\n     */\n    onDataPush: function onDataPush() {\n      var count = arguments.length;\n      this.insertElements(this.getDataset().data.length - count, count);\n    },\n\n    /**\n     * @private\n     */\n    onDataPop: function onDataPop() {\n      this.getMeta().data.pop();\n    },\n\n    /**\n     * @private\n     */\n    onDataShift: function onDataShift() {\n      this.getMeta().data.shift();\n    },\n\n    /**\n     * @private\n     */\n    onDataSplice: function onDataSplice(start, count) {\n      this.getMeta().data.splice(start, count);\n      this.insertElements(start, arguments.length - 2);\n    },\n\n    /**\n     * @private\n     */\n    onDataUnshift: function onDataUnshift() {\n      this.insertElements(0, arguments.length);\n    }\n  });\n  DatasetController.extend = helpers$1.inherits;\n  var core_datasetController = DatasetController;\n  var TAU = Math.PI * 2;\n\n  core_defaults._set('global', {\n    elements: {\n      arc: {\n        backgroundColor: core_defaults.global.defaultColor,\n        borderColor: '#fff',\n        borderWidth: 2,\n        borderAlign: 'center'\n      }\n    }\n  });\n\n  function clipArc(ctx, arc) {\n    var startAngle = arc.startAngle;\n    var endAngle = arc.endAngle;\n    var pixelMargin = arc.pixelMargin;\n    var angleMargin = pixelMargin / arc.outerRadius;\n    var x = arc.x;\n    var y = arc.y; // Draw an inner border by cliping the arc and drawing a double-width border\n    // Enlarge the clipping arc by 0.33 pixels to eliminate glitches between borders\n\n    ctx.beginPath();\n    ctx.arc(x, y, arc.outerRadius, startAngle - angleMargin, endAngle + angleMargin);\n\n    if (arc.innerRadius > pixelMargin) {\n      angleMargin = pixelMargin / arc.innerRadius;\n      ctx.arc(x, y, arc.innerRadius - pixelMargin, endAngle + angleMargin, startAngle - angleMargin, true);\n    } else {\n      ctx.arc(x, y, pixelMargin, endAngle + Math.PI / 2, startAngle - Math.PI / 2);\n    }\n\n    ctx.closePath();\n    ctx.clip();\n  }\n\n  function drawFullCircleBorders(ctx, vm, arc, inner) {\n    var endAngle = arc.endAngle;\n    var i;\n\n    if (inner) {\n      arc.endAngle = arc.startAngle + TAU;\n      clipArc(ctx, arc);\n      arc.endAngle = endAngle;\n\n      if (arc.endAngle === arc.startAngle && arc.fullCircles) {\n        arc.endAngle += TAU;\n        arc.fullCircles--;\n      }\n    }\n\n    ctx.beginPath();\n    ctx.arc(arc.x, arc.y, arc.innerRadius, arc.startAngle + TAU, arc.startAngle, true);\n\n    for (i = 0; i < arc.fullCircles; ++i) {\n      ctx.stroke();\n    }\n\n    ctx.beginPath();\n    ctx.arc(arc.x, arc.y, vm.outerRadius, arc.startAngle, arc.startAngle + TAU);\n\n    for (i = 0; i < arc.fullCircles; ++i) {\n      ctx.stroke();\n    }\n  }\n\n  function drawBorder(ctx, vm, arc) {\n    var inner = vm.borderAlign === 'inner';\n\n    if (inner) {\n      ctx.lineWidth = vm.borderWidth * 2;\n      ctx.lineJoin = 'round';\n    } else {\n      ctx.lineWidth = vm.borderWidth;\n      ctx.lineJoin = 'bevel';\n    }\n\n    if (arc.fullCircles) {\n      drawFullCircleBorders(ctx, vm, arc, inner);\n    }\n\n    if (inner) {\n      clipArc(ctx, arc);\n    }\n\n    ctx.beginPath();\n    ctx.arc(arc.x, arc.y, vm.outerRadius, arc.startAngle, arc.endAngle);\n    ctx.arc(arc.x, arc.y, arc.innerRadius, arc.endAngle, arc.startAngle, true);\n    ctx.closePath();\n    ctx.stroke();\n  }\n\n  var element_arc = core_element.extend({\n    _type: 'arc',\n    inLabelRange: function inLabelRange(mouseX) {\n      var vm = this._view;\n\n      if (vm) {\n        return Math.pow(mouseX - vm.x, 2) < Math.pow(vm.radius + vm.hoverRadius, 2);\n      }\n\n      return false;\n    },\n    inRange: function inRange(chartX, chartY) {\n      var vm = this._view;\n\n      if (vm) {\n        var pointRelativePosition = helpers$1.getAngleFromPoint(vm, {\n          x: chartX,\n          y: chartY\n        });\n        var angle = pointRelativePosition.angle;\n        var distance = pointRelativePosition.distance; // Sanitise angle range\n\n        var startAngle = vm.startAngle;\n        var endAngle = vm.endAngle;\n\n        while (endAngle < startAngle) {\n          endAngle += TAU;\n        }\n\n        while (angle > endAngle) {\n          angle -= TAU;\n        }\n\n        while (angle < startAngle) {\n          angle += TAU;\n        } // Check if within the range of the open/close angle\n\n\n        var betweenAngles = angle >= startAngle && angle <= endAngle;\n        var withinRadius = distance >= vm.innerRadius && distance <= vm.outerRadius;\n        return betweenAngles && withinRadius;\n      }\n\n      return false;\n    },\n    getCenterPoint: function getCenterPoint() {\n      var vm = this._view;\n      var halfAngle = (vm.startAngle + vm.endAngle) / 2;\n      var halfRadius = (vm.innerRadius + vm.outerRadius) / 2;\n      return {\n        x: vm.x + Math.cos(halfAngle) * halfRadius,\n        y: vm.y + Math.sin(halfAngle) * halfRadius\n      };\n    },\n    getArea: function getArea() {\n      var vm = this._view;\n      return Math.PI * ((vm.endAngle - vm.startAngle) / (2 * Math.PI)) * (Math.pow(vm.outerRadius, 2) - Math.pow(vm.innerRadius, 2));\n    },\n    tooltipPosition: function tooltipPosition() {\n      var vm = this._view;\n      var centreAngle = vm.startAngle + (vm.endAngle - vm.startAngle) / 2;\n      var rangeFromCentre = (vm.outerRadius - vm.innerRadius) / 2 + vm.innerRadius;\n      return {\n        x: vm.x + Math.cos(centreAngle) * rangeFromCentre,\n        y: vm.y + Math.sin(centreAngle) * rangeFromCentre\n      };\n    },\n    draw: function draw() {\n      var ctx = this._chart.ctx;\n      var vm = this._view;\n      var pixelMargin = vm.borderAlign === 'inner' ? 0.33 : 0;\n      var arc = {\n        x: vm.x,\n        y: vm.y,\n        innerRadius: vm.innerRadius,\n        outerRadius: Math.max(vm.outerRadius - pixelMargin, 0),\n        pixelMargin: pixelMargin,\n        startAngle: vm.startAngle,\n        endAngle: vm.endAngle,\n        fullCircles: Math.floor(vm.circumference / TAU)\n      };\n      var i;\n      ctx.save();\n      ctx.fillStyle = vm.backgroundColor;\n      ctx.strokeStyle = vm.borderColor;\n\n      if (arc.fullCircles) {\n        arc.endAngle = arc.startAngle + TAU;\n        ctx.beginPath();\n        ctx.arc(arc.x, arc.y, arc.outerRadius, arc.startAngle, arc.endAngle);\n        ctx.arc(arc.x, arc.y, arc.innerRadius, arc.endAngle, arc.startAngle, true);\n        ctx.closePath();\n\n        for (i = 0; i < arc.fullCircles; ++i) {\n          ctx.fill();\n        }\n\n        arc.endAngle = arc.startAngle + vm.circumference % TAU;\n      }\n\n      ctx.beginPath();\n      ctx.arc(arc.x, arc.y, arc.outerRadius, arc.startAngle, arc.endAngle);\n      ctx.arc(arc.x, arc.y, arc.innerRadius, arc.endAngle, arc.startAngle, true);\n      ctx.closePath();\n      ctx.fill();\n\n      if (vm.borderWidth) {\n        drawBorder(ctx, vm, arc);\n      }\n\n      ctx.restore();\n    }\n  });\n  var valueOrDefault$1 = helpers$1.valueOrDefault;\n  var defaultColor = core_defaults.global.defaultColor;\n\n  core_defaults._set('global', {\n    elements: {\n      line: {\n        tension: 0.4,\n        backgroundColor: defaultColor,\n        borderWidth: 3,\n        borderColor: defaultColor,\n        borderCapStyle: 'butt',\n        borderDash: [],\n        borderDashOffset: 0.0,\n        borderJoinStyle: 'miter',\n        capBezierPoints: true,\n        fill: true // do we fill in the area between the line and its base axis\n\n      }\n    }\n  });\n\n  var element_line = core_element.extend({\n    _type: 'line',\n    draw: function draw() {\n      var me = this;\n      var vm = me._view;\n      var ctx = me._chart.ctx;\n      var spanGaps = vm.spanGaps;\n\n      var points = me._children.slice(); // clone array\n\n\n      var globalDefaults = core_defaults.global;\n      var globalOptionLineElements = globalDefaults.elements.line;\n      var lastDrawnIndex = -1;\n      var closePath = me._loop;\n      var index, previous, currentVM;\n\n      if (!points.length) {\n        return;\n      }\n\n      if (me._loop) {\n        for (index = 0; index < points.length; ++index) {\n          previous = helpers$1.previousItem(points, index); // If the line has an open path, shift the point array\n\n          if (!points[index]._view.skip && previous._view.skip) {\n            points = points.slice(index).concat(points.slice(0, index));\n            closePath = spanGaps;\n            break;\n          }\n        } // If the line has a close path, add the first point again\n\n\n        if (closePath) {\n          points.push(points[0]);\n        }\n      }\n\n      ctx.save(); // Stroke Line Options\n\n      ctx.lineCap = vm.borderCapStyle || globalOptionLineElements.borderCapStyle; // IE 9 and 10 do not support line dash\n\n      if (ctx.setLineDash) {\n        ctx.setLineDash(vm.borderDash || globalOptionLineElements.borderDash);\n      }\n\n      ctx.lineDashOffset = valueOrDefault$1(vm.borderDashOffset, globalOptionLineElements.borderDashOffset);\n      ctx.lineJoin = vm.borderJoinStyle || globalOptionLineElements.borderJoinStyle;\n      ctx.lineWidth = valueOrDefault$1(vm.borderWidth, globalOptionLineElements.borderWidth);\n      ctx.strokeStyle = vm.borderColor || globalDefaults.defaultColor; // Stroke Line\n\n      ctx.beginPath(); // First point moves to it's starting position no matter what\n\n      currentVM = points[0]._view;\n\n      if (!currentVM.skip) {\n        ctx.moveTo(currentVM.x, currentVM.y);\n        lastDrawnIndex = 0;\n      }\n\n      for (index = 1; index < points.length; ++index) {\n        currentVM = points[index]._view;\n        previous = lastDrawnIndex === -1 ? helpers$1.previousItem(points, index) : points[lastDrawnIndex];\n\n        if (!currentVM.skip) {\n          if (lastDrawnIndex !== index - 1 && !spanGaps || lastDrawnIndex === -1) {\n            // There was a gap and this is the first point after the gap\n            ctx.moveTo(currentVM.x, currentVM.y);\n          } else {\n            // Line to next point\n            helpers$1.canvas.lineTo(ctx, previous._view, currentVM);\n          }\n\n          lastDrawnIndex = index;\n        }\n      }\n\n      if (closePath) {\n        ctx.closePath();\n      }\n\n      ctx.stroke();\n      ctx.restore();\n    }\n  });\n  var valueOrDefault$2 = helpers$1.valueOrDefault;\n  var defaultColor$1 = core_defaults.global.defaultColor;\n\n  core_defaults._set('global', {\n    elements: {\n      point: {\n        radius: 3,\n        pointStyle: 'circle',\n        backgroundColor: defaultColor$1,\n        borderColor: defaultColor$1,\n        borderWidth: 1,\n        // Hover\n        hitRadius: 1,\n        hoverRadius: 4,\n        hoverBorderWidth: 1\n      }\n    }\n  });\n\n  function xRange(mouseX) {\n    var vm = this._view;\n    return vm ? Math.abs(mouseX - vm.x) < vm.radius + vm.hitRadius : false;\n  }\n\n  function yRange(mouseY) {\n    var vm = this._view;\n    return vm ? Math.abs(mouseY - vm.y) < vm.radius + vm.hitRadius : false;\n  }\n\n  var element_point = core_element.extend({\n    _type: 'point',\n    inRange: function inRange(mouseX, mouseY) {\n      var vm = this._view;\n      return vm ? Math.pow(mouseX - vm.x, 2) + Math.pow(mouseY - vm.y, 2) < Math.pow(vm.hitRadius + vm.radius, 2) : false;\n    },\n    inLabelRange: xRange,\n    inXRange: xRange,\n    inYRange: yRange,\n    getCenterPoint: function getCenterPoint() {\n      var vm = this._view;\n      return {\n        x: vm.x,\n        y: vm.y\n      };\n    },\n    getArea: function getArea() {\n      return Math.PI * Math.pow(this._view.radius, 2);\n    },\n    tooltipPosition: function tooltipPosition() {\n      var vm = this._view;\n      return {\n        x: vm.x,\n        y: vm.y,\n        padding: vm.radius + vm.borderWidth\n      };\n    },\n    draw: function draw(chartArea) {\n      var vm = this._view;\n      var ctx = this._chart.ctx;\n      var pointStyle = vm.pointStyle;\n      var rotation = vm.rotation;\n      var radius = vm.radius;\n      var x = vm.x;\n      var y = vm.y;\n      var globalDefaults = core_defaults.global;\n      var defaultColor = globalDefaults.defaultColor; // eslint-disable-line no-shadow\n\n      if (vm.skip) {\n        return;\n      } // Clipping for Points.\n\n\n      if (chartArea === undefined || helpers$1.canvas._isPointInArea(vm, chartArea)) {\n        ctx.strokeStyle = vm.borderColor || defaultColor;\n        ctx.lineWidth = valueOrDefault$2(vm.borderWidth, globalDefaults.elements.point.borderWidth);\n        ctx.fillStyle = vm.backgroundColor || defaultColor;\n        helpers$1.canvas.drawPoint(ctx, pointStyle, radius, x, y, rotation);\n      }\n    }\n  });\n  var defaultColor$2 = core_defaults.global.defaultColor;\n\n  core_defaults._set('global', {\n    elements: {\n      rectangle: {\n        backgroundColor: defaultColor$2,\n        borderColor: defaultColor$2,\n        borderSkipped: 'bottom',\n        borderWidth: 0\n      }\n    }\n  });\n\n  function isVertical(vm) {\n    return vm && vm.width !== undefined;\n  }\n  /**\n   * Helper function to get the bounds of the bar regardless of the orientation\n   * @param bar {Chart.Element.Rectangle} the bar\n   * @return {Bounds} bounds of the bar\n   * @private\n   */\n\n\n  function getBarBounds(vm) {\n    var x1, x2, y1, y2, half;\n\n    if (isVertical(vm)) {\n      half = vm.width / 2;\n      x1 = vm.x - half;\n      x2 = vm.x + half;\n      y1 = Math.min(vm.y, vm.base);\n      y2 = Math.max(vm.y, vm.base);\n    } else {\n      half = vm.height / 2;\n      x1 = Math.min(vm.x, vm.base);\n      x2 = Math.max(vm.x, vm.base);\n      y1 = vm.y - half;\n      y2 = vm.y + half;\n    }\n\n    return {\n      left: x1,\n      top: y1,\n      right: x2,\n      bottom: y2\n    };\n  }\n\n  function swap(orig, v1, v2) {\n    return orig === v1 ? v2 : orig === v2 ? v1 : orig;\n  }\n\n  function parseBorderSkipped(vm) {\n    var edge = vm.borderSkipped;\n    var res = {};\n\n    if (!edge) {\n      return res;\n    }\n\n    if (vm.horizontal) {\n      if (vm.base > vm.x) {\n        edge = swap(edge, 'left', 'right');\n      }\n    } else if (vm.base < vm.y) {\n      edge = swap(edge, 'bottom', 'top');\n    }\n\n    res[edge] = true;\n    return res;\n  }\n\n  function parseBorderWidth(vm, maxW, maxH) {\n    var value = vm.borderWidth;\n    var skip = parseBorderSkipped(vm);\n    var t, r, b, l;\n\n    if (helpers$1.isObject(value)) {\n      t = +value.top || 0;\n      r = +value.right || 0;\n      b = +value.bottom || 0;\n      l = +value.left || 0;\n    } else {\n      t = r = b = l = +value || 0;\n    }\n\n    return {\n      t: skip.top || t < 0 ? 0 : t > maxH ? maxH : t,\n      r: skip.right || r < 0 ? 0 : r > maxW ? maxW : r,\n      b: skip.bottom || b < 0 ? 0 : b > maxH ? maxH : b,\n      l: skip.left || l < 0 ? 0 : l > maxW ? maxW : l\n    };\n  }\n\n  function boundingRects(vm) {\n    var bounds = getBarBounds(vm);\n    var width = bounds.right - bounds.left;\n    var height = bounds.bottom - bounds.top;\n    var border = parseBorderWidth(vm, width / 2, height / 2);\n    return {\n      outer: {\n        x: bounds.left,\n        y: bounds.top,\n        w: width,\n        h: height\n      },\n      inner: {\n        x: bounds.left + border.l,\n        y: bounds.top + border.t,\n        w: width - border.l - border.r,\n        h: height - border.t - border.b\n      }\n    };\n  }\n\n  function _inRange(vm, x, y) {\n    var skipX = x === null;\n    var skipY = y === null;\n    var bounds = !vm || skipX && skipY ? false : getBarBounds(vm);\n    return bounds && (skipX || x >= bounds.left && x <= bounds.right) && (skipY || y >= bounds.top && y <= bounds.bottom);\n  }\n\n  var element_rectangle = core_element.extend({\n    _type: 'rectangle',\n    draw: function draw() {\n      var ctx = this._chart.ctx;\n      var vm = this._view;\n      var rects = boundingRects(vm);\n      var outer = rects.outer;\n      var inner = rects.inner;\n      ctx.fillStyle = vm.backgroundColor;\n      ctx.fillRect(outer.x, outer.y, outer.w, outer.h);\n\n      if (outer.w === inner.w && outer.h === inner.h) {\n        return;\n      }\n\n      ctx.save();\n      ctx.beginPath();\n      ctx.rect(outer.x, outer.y, outer.w, outer.h);\n      ctx.clip();\n      ctx.fillStyle = vm.borderColor;\n      ctx.rect(inner.x, inner.y, inner.w, inner.h);\n      ctx.fill('evenodd');\n      ctx.restore();\n    },\n    height: function height() {\n      var vm = this._view;\n      return vm.base - vm.y;\n    },\n    inRange: function inRange(mouseX, mouseY) {\n      return _inRange(this._view, mouseX, mouseY);\n    },\n    inLabelRange: function inLabelRange(mouseX, mouseY) {\n      var vm = this._view;\n      return isVertical(vm) ? _inRange(vm, mouseX, null) : _inRange(vm, null, mouseY);\n    },\n    inXRange: function inXRange(mouseX) {\n      return _inRange(this._view, mouseX, null);\n    },\n    inYRange: function inYRange(mouseY) {\n      return _inRange(this._view, null, mouseY);\n    },\n    getCenterPoint: function getCenterPoint() {\n      var vm = this._view;\n      var x, y;\n\n      if (isVertical(vm)) {\n        x = vm.x;\n        y = (vm.y + vm.base) / 2;\n      } else {\n        x = (vm.x + vm.base) / 2;\n        y = vm.y;\n      }\n\n      return {\n        x: x,\n        y: y\n      };\n    },\n    getArea: function getArea() {\n      var vm = this._view;\n      return isVertical(vm) ? vm.width * Math.abs(vm.y - vm.base) : vm.height * Math.abs(vm.x - vm.base);\n    },\n    tooltipPosition: function tooltipPosition() {\n      var vm = this._view;\n      return {\n        x: vm.x,\n        y: vm.y\n      };\n    }\n  });\n  var elements = {};\n  var Arc = element_arc;\n  var Line = element_line;\n  var Point = element_point;\n  var Rectangle = element_rectangle;\n  elements.Arc = Arc;\n  elements.Line = Line;\n  elements.Point = Point;\n  elements.Rectangle = Rectangle;\n  var deprecated = helpers$1._deprecated;\n  var valueOrDefault$3 = helpers$1.valueOrDefault;\n\n  core_defaults._set('bar', {\n    hover: {\n      mode: 'label'\n    },\n    scales: {\n      xAxes: [{\n        type: 'category',\n        offset: true,\n        gridLines: {\n          offsetGridLines: true\n        }\n      }],\n      yAxes: [{\n        type: 'linear'\n      }]\n    }\n  });\n\n  core_defaults._set('global', {\n    datasets: {\n      bar: {\n        categoryPercentage: 0.8,\n        barPercentage: 0.9\n      }\n    }\n  });\n  /**\n   * Computes the \"optimal\" sample size to maintain bars equally sized while preventing overlap.\n   * @private\n   */\n\n\n  function computeMinSampleSize(scale, pixels) {\n    var min = scale._length;\n    var prev, curr, i, ilen;\n\n    for (i = 1, ilen = pixels.length; i < ilen; ++i) {\n      min = Math.min(min, Math.abs(pixels[i] - pixels[i - 1]));\n    }\n\n    for (i = 0, ilen = scale.getTicks().length; i < ilen; ++i) {\n      curr = scale.getPixelForTick(i);\n      min = i > 0 ? Math.min(min, Math.abs(curr - prev)) : min;\n      prev = curr;\n    }\n\n    return min;\n  }\n  /**\n   * Computes an \"ideal\" category based on the absolute bar thickness or, if undefined or null,\n   * uses the smallest interval (see computeMinSampleSize) that prevents bar overlapping. This\n   * mode currently always generates bars equally sized (until we introduce scriptable options?).\n   * @private\n   */\n\n\n  function computeFitCategoryTraits(index, ruler, options) {\n    var thickness = options.barThickness;\n    var count = ruler.stackCount;\n    var curr = ruler.pixels[index];\n    var min = helpers$1.isNullOrUndef(thickness) ? computeMinSampleSize(ruler.scale, ruler.pixels) : -1;\n    var size, ratio;\n\n    if (helpers$1.isNullOrUndef(thickness)) {\n      size = min * options.categoryPercentage;\n      ratio = options.barPercentage;\n    } else {\n      // When bar thickness is enforced, category and bar percentages are ignored.\n      // Note(SB): we could add support for relative bar thickness (e.g. barThickness: '50%')\n      // and deprecate barPercentage since this value is ignored when thickness is absolute.\n      size = thickness * count;\n      ratio = 1;\n    }\n\n    return {\n      chunk: size / count,\n      ratio: ratio,\n      start: curr - size / 2\n    };\n  }\n  /**\n   * Computes an \"optimal\" category that globally arranges bars side by side (no gap when\n   * percentage options are 1), based on the previous and following categories. This mode\n   * generates bars with different widths when data are not evenly spaced.\n   * @private\n   */\n\n\n  function computeFlexCategoryTraits(index, ruler, options) {\n    var pixels = ruler.pixels;\n    var curr = pixels[index];\n    var prev = index > 0 ? pixels[index - 1] : null;\n    var next = index < pixels.length - 1 ? pixels[index + 1] : null;\n    var percent = options.categoryPercentage;\n    var start, size;\n\n    if (prev === null) {\n      // first data: its size is double based on the next point or,\n      // if it's also the last data, we use the scale size.\n      prev = curr - (next === null ? ruler.end - ruler.start : next - curr);\n    }\n\n    if (next === null) {\n      // last data: its size is also double based on the previous point.\n      next = curr + curr - prev;\n    }\n\n    start = curr - (curr - Math.min(prev, next)) / 2 * percent;\n    size = Math.abs(next - prev) / 2 * percent;\n    return {\n      chunk: size / ruler.stackCount,\n      ratio: options.barPercentage,\n      start: start\n    };\n  }\n\n  var controller_bar = core_datasetController.extend({\n    dataElementType: elements.Rectangle,\n\n    /**\n     * @private\n     */\n    _dataElementOptions: ['backgroundColor', 'borderColor', 'borderSkipped', 'borderWidth', 'barPercentage', 'barThickness', 'categoryPercentage', 'maxBarThickness', 'minBarLength'],\n    initialize: function initialize() {\n      var me = this;\n      var meta, scaleOpts;\n      core_datasetController.prototype.initialize.apply(me, arguments);\n      meta = me.getMeta();\n      meta.stack = me.getDataset().stack;\n      meta.bar = true;\n      scaleOpts = me._getIndexScale().options;\n      deprecated('bar chart', scaleOpts.barPercentage, 'scales.[x/y]Axes.barPercentage', 'dataset.barPercentage');\n      deprecated('bar chart', scaleOpts.barThickness, 'scales.[x/y]Axes.barThickness', 'dataset.barThickness');\n      deprecated('bar chart', scaleOpts.categoryPercentage, 'scales.[x/y]Axes.categoryPercentage', 'dataset.categoryPercentage');\n      deprecated('bar chart', me._getValueScale().options.minBarLength, 'scales.[x/y]Axes.minBarLength', 'dataset.minBarLength');\n      deprecated('bar chart', scaleOpts.maxBarThickness, 'scales.[x/y]Axes.maxBarThickness', 'dataset.maxBarThickness');\n    },\n    update: function update(reset) {\n      var me = this;\n      var rects = me.getMeta().data;\n      var i, ilen;\n      me._ruler = me.getRuler();\n\n      for (i = 0, ilen = rects.length; i < ilen; ++i) {\n        me.updateElement(rects[i], i, reset);\n      }\n    },\n    updateElement: function updateElement(rectangle, index, reset) {\n      var me = this;\n      var meta = me.getMeta();\n      var dataset = me.getDataset();\n\n      var options = me._resolveDataElementOptions(rectangle, index);\n\n      rectangle._xScale = me.getScaleForId(meta.xAxisID);\n      rectangle._yScale = me.getScaleForId(meta.yAxisID);\n      rectangle._datasetIndex = me.index;\n      rectangle._index = index;\n      rectangle._model = {\n        backgroundColor: options.backgroundColor,\n        borderColor: options.borderColor,\n        borderSkipped: options.borderSkipped,\n        borderWidth: options.borderWidth,\n        datasetLabel: dataset.label,\n        label: me.chart.data.labels[index]\n      };\n\n      if (helpers$1.isArray(dataset.data[index])) {\n        rectangle._model.borderSkipped = null;\n      }\n\n      me._updateElementGeometry(rectangle, index, reset, options);\n\n      rectangle.pivot();\n    },\n\n    /**\n     * @private\n     */\n    _updateElementGeometry: function _updateElementGeometry(rectangle, index, reset, options) {\n      var me = this;\n      var model = rectangle._model;\n\n      var vscale = me._getValueScale();\n\n      var base = vscale.getBasePixel();\n      var horizontal = vscale.isHorizontal();\n      var ruler = me._ruler || me.getRuler();\n      var vpixels = me.calculateBarValuePixels(me.index, index, options);\n      var ipixels = me.calculateBarIndexPixels(me.index, index, ruler, options);\n      model.horizontal = horizontal;\n      model.base = reset ? base : vpixels.base;\n      model.x = horizontal ? reset ? base : vpixels.head : ipixels.center;\n      model.y = horizontal ? ipixels.center : reset ? base : vpixels.head;\n      model.height = horizontal ? ipixels.size : undefined;\n      model.width = horizontal ? undefined : ipixels.size;\n    },\n\n    /**\n     * Returns the stacks based on groups and bar visibility.\n     * @param {number} [last] - The dataset index\n     * @returns {string[]} The list of stack IDs\n     * @private\n     */\n    _getStacks: function _getStacks(last) {\n      var me = this;\n\n      var scale = me._getIndexScale();\n\n      var metasets = scale._getMatchingVisibleMetas(me._type);\n\n      var stacked = scale.options.stacked;\n      var ilen = metasets.length;\n      var stacks = [];\n      var i, meta;\n\n      for (i = 0; i < ilen; ++i) {\n        meta = metasets[i]; // stacked   | meta.stack\n        //           | found | not found | undefined\n        // false     |   x   |     x     |     x\n        // true      |       |     x     |\n        // undefined |       |     x     |     x\n\n        if (stacked === false || stacks.indexOf(meta.stack) === -1 || stacked === undefined && meta.stack === undefined) {\n          stacks.push(meta.stack);\n        }\n\n        if (meta.index === last) {\n          break;\n        }\n      }\n\n      return stacks;\n    },\n\n    /**\n     * Returns the effective number of stacks based on groups and bar visibility.\n     * @private\n     */\n    getStackCount: function getStackCount() {\n      return this._getStacks().length;\n    },\n\n    /**\n     * Returns the stack index for the given dataset based on groups and bar visibility.\n     * @param {number} [datasetIndex] - The dataset index\n     * @param {string} [name] - The stack name to find\n     * @returns {number} The stack index\n     * @private\n     */\n    getStackIndex: function getStackIndex(datasetIndex, name) {\n      var stacks = this._getStacks(datasetIndex);\n\n      var index = name !== undefined ? stacks.indexOf(name) : -1; // indexOf returns -1 if element is not present\n\n      return index === -1 ? stacks.length - 1 : index;\n    },\n\n    /**\n     * @private\n     */\n    getRuler: function getRuler() {\n      var me = this;\n\n      var scale = me._getIndexScale();\n\n      var pixels = [];\n      var i, ilen;\n\n      for (i = 0, ilen = me.getMeta().data.length; i < ilen; ++i) {\n        pixels.push(scale.getPixelForValue(null, i, me.index));\n      }\n\n      return {\n        pixels: pixels,\n        start: scale._startPixel,\n        end: scale._endPixel,\n        stackCount: me.getStackCount(),\n        scale: scale\n      };\n    },\n\n    /**\n     * Note: pixel values are not clamped to the scale area.\n     * @private\n     */\n    calculateBarValuePixels: function calculateBarValuePixels(datasetIndex, index, options) {\n      var me = this;\n      var chart = me.chart;\n\n      var scale = me._getValueScale();\n\n      var isHorizontal = scale.isHorizontal();\n      var datasets = chart.data.datasets;\n\n      var metasets = scale._getMatchingVisibleMetas(me._type);\n\n      var value = scale._parseValue(datasets[datasetIndex].data[index]);\n\n      var minBarLength = options.minBarLength;\n      var stacked = scale.options.stacked;\n      var stack = me.getMeta().stack;\n      var start = value.start === undefined ? 0 : value.max >= 0 && value.min >= 0 ? value.min : value.max;\n      var length = value.start === undefined ? value.end : value.max >= 0 && value.min >= 0 ? value.max - value.min : value.min - value.max;\n      var ilen = metasets.length;\n      var i, imeta, ivalue, base, head, size, stackLength;\n\n      if (stacked || stacked === undefined && stack !== undefined) {\n        for (i = 0; i < ilen; ++i) {\n          imeta = metasets[i];\n\n          if (imeta.index === datasetIndex) {\n            break;\n          }\n\n          if (imeta.stack === stack) {\n            stackLength = scale._parseValue(datasets[imeta.index].data[index]);\n            ivalue = stackLength.start === undefined ? stackLength.end : stackLength.min >= 0 && stackLength.max >= 0 ? stackLength.max : stackLength.min;\n\n            if (value.min < 0 && ivalue < 0 || value.max >= 0 && ivalue > 0) {\n              start += ivalue;\n            }\n          }\n        }\n      }\n\n      base = scale.getPixelForValue(start);\n      head = scale.getPixelForValue(start + length);\n      size = head - base;\n\n      if (minBarLength !== undefined && Math.abs(size) < minBarLength) {\n        size = minBarLength;\n\n        if (length >= 0 && !isHorizontal || length < 0 && isHorizontal) {\n          head = base - minBarLength;\n        } else {\n          head = base + minBarLength;\n        }\n      }\n\n      return {\n        size: size,\n        base: base,\n        head: head,\n        center: head + size / 2\n      };\n    },\n\n    /**\n     * @private\n     */\n    calculateBarIndexPixels: function calculateBarIndexPixels(datasetIndex, index, ruler, options) {\n      var me = this;\n      var range = options.barThickness === 'flex' ? computeFlexCategoryTraits(index, ruler, options) : computeFitCategoryTraits(index, ruler, options);\n      var stackIndex = me.getStackIndex(datasetIndex, me.getMeta().stack);\n      var center = range.start + range.chunk * stackIndex + range.chunk / 2;\n      var size = Math.min(valueOrDefault$3(options.maxBarThickness, Infinity), range.chunk * range.ratio);\n      return {\n        base: center - size / 2,\n        head: center + size / 2,\n        center: center,\n        size: size\n      };\n    },\n    draw: function draw() {\n      var me = this;\n      var chart = me.chart;\n\n      var scale = me._getValueScale();\n\n      var rects = me.getMeta().data;\n      var dataset = me.getDataset();\n      var ilen = rects.length;\n      var i = 0;\n      helpers$1.canvas.clipArea(chart.ctx, chart.chartArea);\n\n      for (; i < ilen; ++i) {\n        var val = scale._parseValue(dataset.data[i]);\n\n        if (!isNaN(val.min) && !isNaN(val.max)) {\n          rects[i].draw();\n        }\n      }\n\n      helpers$1.canvas.unclipArea(chart.ctx);\n    },\n\n    /**\n     * @private\n     */\n    _resolveDataElementOptions: function _resolveDataElementOptions() {\n      var me = this;\n      var values = helpers$1.extend({}, core_datasetController.prototype._resolveDataElementOptions.apply(me, arguments));\n\n      var indexOpts = me._getIndexScale().options;\n\n      var valueOpts = me._getValueScale().options;\n\n      values.barPercentage = valueOrDefault$3(indexOpts.barPercentage, values.barPercentage);\n      values.barThickness = valueOrDefault$3(indexOpts.barThickness, values.barThickness);\n      values.categoryPercentage = valueOrDefault$3(indexOpts.categoryPercentage, values.categoryPercentage);\n      values.maxBarThickness = valueOrDefault$3(indexOpts.maxBarThickness, values.maxBarThickness);\n      values.minBarLength = valueOrDefault$3(valueOpts.minBarLength, values.minBarLength);\n      return values;\n    }\n  });\n  var valueOrDefault$4 = helpers$1.valueOrDefault;\n  var resolve$1 = helpers$1.options.resolve;\n\n  core_defaults._set('bubble', {\n    hover: {\n      mode: 'single'\n    },\n    scales: {\n      xAxes: [{\n        type: 'linear',\n        // bubble should probably use a linear scale by default\n        position: 'bottom',\n        id: 'x-axis-0' // need an ID so datasets can reference the scale\n\n      }],\n      yAxes: [{\n        type: 'linear',\n        position: 'left',\n        id: 'y-axis-0'\n      }]\n    },\n    tooltips: {\n      callbacks: {\n        title: function title() {\n          // Title doesn't make sense for scatter since we format the data as a point\n          return '';\n        },\n        label: function label(item, data) {\n          var datasetLabel = data.datasets[item.datasetIndex].label || '';\n          var dataPoint = data.datasets[item.datasetIndex].data[item.index];\n          return datasetLabel + ': (' + item.xLabel + ', ' + item.yLabel + ', ' + dataPoint.r + ')';\n        }\n      }\n    }\n  });\n\n  var controller_bubble = core_datasetController.extend({\n    /**\n     * @protected\n     */\n    dataElementType: elements.Point,\n\n    /**\n     * @private\n     */\n    _dataElementOptions: ['backgroundColor', 'borderColor', 'borderWidth', 'hoverBackgroundColor', 'hoverBorderColor', 'hoverBorderWidth', 'hoverRadius', 'hitRadius', 'pointStyle', 'rotation'],\n\n    /**\n     * @protected\n     */\n    update: function update(reset) {\n      var me = this;\n      var meta = me.getMeta();\n      var points = meta.data; // Update Points\n\n      helpers$1.each(points, function (point, index) {\n        me.updateElement(point, index, reset);\n      });\n    },\n\n    /**\n     * @protected\n     */\n    updateElement: function updateElement(point, index, reset) {\n      var me = this;\n      var meta = me.getMeta();\n      var custom = point.custom || {};\n      var xScale = me.getScaleForId(meta.xAxisID);\n      var yScale = me.getScaleForId(meta.yAxisID);\n\n      var options = me._resolveDataElementOptions(point, index);\n\n      var data = me.getDataset().data[index];\n      var dsIndex = me.index;\n      var x = reset ? xScale.getPixelForDecimal(0.5) : xScale.getPixelForValue(typeof data === 'object' ? data : NaN, index, dsIndex);\n      var y = reset ? yScale.getBasePixel() : yScale.getPixelForValue(data, index, dsIndex);\n      point._xScale = xScale;\n      point._yScale = yScale;\n      point._options = options;\n      point._datasetIndex = dsIndex;\n      point._index = index;\n      point._model = {\n        backgroundColor: options.backgroundColor,\n        borderColor: options.borderColor,\n        borderWidth: options.borderWidth,\n        hitRadius: options.hitRadius,\n        pointStyle: options.pointStyle,\n        rotation: options.rotation,\n        radius: reset ? 0 : options.radius,\n        skip: custom.skip || isNaN(x) || isNaN(y),\n        x: x,\n        y: y\n      };\n      point.pivot();\n    },\n\n    /**\n     * @protected\n     */\n    setHoverStyle: function setHoverStyle(point) {\n      var model = point._model;\n      var options = point._options;\n      var getHoverColor = helpers$1.getHoverColor;\n      point.$previousStyle = {\n        backgroundColor: model.backgroundColor,\n        borderColor: model.borderColor,\n        borderWidth: model.borderWidth,\n        radius: model.radius\n      };\n      model.backgroundColor = valueOrDefault$4(options.hoverBackgroundColor, getHoverColor(options.backgroundColor));\n      model.borderColor = valueOrDefault$4(options.hoverBorderColor, getHoverColor(options.borderColor));\n      model.borderWidth = valueOrDefault$4(options.hoverBorderWidth, options.borderWidth);\n      model.radius = options.radius + options.hoverRadius;\n    },\n\n    /**\n     * @private\n     */\n    _resolveDataElementOptions: function _resolveDataElementOptions(point, index) {\n      var me = this;\n      var chart = me.chart;\n      var dataset = me.getDataset();\n      var custom = point.custom || {};\n      var data = dataset.data[index] || {};\n\n      var values = core_datasetController.prototype._resolveDataElementOptions.apply(me, arguments); // Scriptable options\n\n\n      var context = {\n        chart: chart,\n        dataIndex: index,\n        dataset: dataset,\n        datasetIndex: me.index\n      }; // In case values were cached (and thus frozen), we need to clone the values\n\n      if (me._cachedDataOpts === values) {\n        values = helpers$1.extend({}, values);\n      } // Custom radius resolution\n\n\n      values.radius = resolve$1([custom.radius, data.r, me._config.radius, chart.options.elements.point.radius], context, index);\n      return values;\n    }\n  });\n  var valueOrDefault$5 = helpers$1.valueOrDefault;\n  var PI$1 = Math.PI;\n  var DOUBLE_PI$1 = PI$1 * 2;\n  var HALF_PI$1 = PI$1 / 2;\n\n  core_defaults._set('doughnut', {\n    animation: {\n      // Boolean - Whether we animate the rotation of the Doughnut\n      animateRotate: true,\n      // Boolean - Whether we animate scaling the Doughnut from the centre\n      animateScale: false\n    },\n    hover: {\n      mode: 'single'\n    },\n    legendCallback: function legendCallback(chart) {\n      var list = document.createElement('ul');\n      var data = chart.data;\n      var datasets = data.datasets;\n      var labels = data.labels;\n      var i, ilen, listItem, listItemSpan;\n      list.setAttribute('class', chart.id + '-legend');\n\n      if (datasets.length) {\n        for (i = 0, ilen = datasets[0].data.length; i < ilen; ++i) {\n          listItem = list.appendChild(document.createElement('li'));\n          listItemSpan = listItem.appendChild(document.createElement('span'));\n          listItemSpan.style.backgroundColor = datasets[0].backgroundColor[i];\n\n          if (labels[i]) {\n            listItem.appendChild(document.createTextNode(labels[i]));\n          }\n        }\n      }\n\n      return list.outerHTML;\n    },\n    legend: {\n      labels: {\n        generateLabels: function generateLabels(chart) {\n          var data = chart.data;\n\n          if (data.labels.length && data.datasets.length) {\n            return data.labels.map(function (label, i) {\n              var meta = chart.getDatasetMeta(0);\n              var style = meta.controller.getStyle(i);\n              return {\n                text: label,\n                fillStyle: style.backgroundColor,\n                strokeStyle: style.borderColor,\n                lineWidth: style.borderWidth,\n                hidden: isNaN(data.datasets[0].data[i]) || meta.data[i].hidden,\n                // Extra data used for toggling the correct item\n                index: i\n              };\n            });\n          }\n\n          return [];\n        }\n      },\n      onClick: function onClick(e, legendItem) {\n        var index = legendItem.index;\n        var chart = this.chart;\n        var i, ilen, meta;\n\n        for (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) {\n          meta = chart.getDatasetMeta(i); // toggle visibility of index if exists\n\n          if (meta.data[index]) {\n            meta.data[index].hidden = !meta.data[index].hidden;\n          }\n        }\n\n        chart.update();\n      }\n    },\n    // The percentage of the chart that we cut out of the middle.\n    cutoutPercentage: 50,\n    // The rotation of the chart, where the first data arc begins.\n    rotation: -HALF_PI$1,\n    // The total circumference of the chart.\n    circumference: DOUBLE_PI$1,\n    // Need to override these to give a nice default\n    tooltips: {\n      callbacks: {\n        title: function title() {\n          return '';\n        },\n        label: function label(tooltipItem, data) {\n          var dataLabel = data.labels[tooltipItem.index];\n          var value = ': ' + data.datasets[tooltipItem.datasetIndex].data[tooltipItem.index];\n\n          if (helpers$1.isArray(dataLabel)) {\n            // show value on first line of multiline label\n            // need to clone because we are changing the value\n            dataLabel = dataLabel.slice();\n            dataLabel[0] += value;\n          } else {\n            dataLabel += value;\n          }\n\n          return dataLabel;\n        }\n      }\n    }\n  });\n\n  var controller_doughnut = core_datasetController.extend({\n    dataElementType: elements.Arc,\n    linkScales: helpers$1.noop,\n\n    /**\n     * @private\n     */\n    _dataElementOptions: ['backgroundColor', 'borderColor', 'borderWidth', 'borderAlign', 'hoverBackgroundColor', 'hoverBorderColor', 'hoverBorderWidth'],\n    // Get index of the dataset in relation to the visible datasets. This allows determining the inner and outer radius correctly\n    getRingIndex: function getRingIndex(datasetIndex) {\n      var ringIndex = 0;\n\n      for (var j = 0; j < datasetIndex; ++j) {\n        if (this.chart.isDatasetVisible(j)) {\n          ++ringIndex;\n        }\n      }\n\n      return ringIndex;\n    },\n    update: function update(reset) {\n      var me = this;\n      var chart = me.chart;\n      var chartArea = chart.chartArea;\n      var opts = chart.options;\n      var ratioX = 1;\n      var ratioY = 1;\n      var offsetX = 0;\n      var offsetY = 0;\n      var meta = me.getMeta();\n      var arcs = meta.data;\n      var cutout = opts.cutoutPercentage / 100 || 0;\n      var circumference = opts.circumference;\n\n      var chartWeight = me._getRingWeight(me.index);\n\n      var maxWidth, maxHeight, i, ilen; // If the chart's circumference isn't a full circle, calculate size as a ratio of the width/height of the arc\n\n      if (circumference < DOUBLE_PI$1) {\n        var startAngle = opts.rotation % DOUBLE_PI$1;\n        startAngle += startAngle >= PI$1 ? -DOUBLE_PI$1 : startAngle < -PI$1 ? DOUBLE_PI$1 : 0;\n        var endAngle = startAngle + circumference;\n        var startX = Math.cos(startAngle);\n        var startY = Math.sin(startAngle);\n        var endX = Math.cos(endAngle);\n        var endY = Math.sin(endAngle);\n        var contains0 = startAngle <= 0 && endAngle >= 0 || endAngle >= DOUBLE_PI$1;\n        var contains90 = startAngle <= HALF_PI$1 && endAngle >= HALF_PI$1 || endAngle >= DOUBLE_PI$1 + HALF_PI$1;\n        var contains180 = startAngle === -PI$1 || endAngle >= PI$1;\n        var contains270 = startAngle <= -HALF_PI$1 && endAngle >= -HALF_PI$1 || endAngle >= PI$1 + HALF_PI$1;\n        var minX = contains180 ? -1 : Math.min(startX, startX * cutout, endX, endX * cutout);\n        var minY = contains270 ? -1 : Math.min(startY, startY * cutout, endY, endY * cutout);\n        var maxX = contains0 ? 1 : Math.max(startX, startX * cutout, endX, endX * cutout);\n        var maxY = contains90 ? 1 : Math.max(startY, startY * cutout, endY, endY * cutout);\n        ratioX = (maxX - minX) / 2;\n        ratioY = (maxY - minY) / 2;\n        offsetX = -(maxX + minX) / 2;\n        offsetY = -(maxY + minY) / 2;\n      }\n\n      for (i = 0, ilen = arcs.length; i < ilen; ++i) {\n        arcs[i]._options = me._resolveDataElementOptions(arcs[i], i);\n      }\n\n      chart.borderWidth = me.getMaxBorderWidth();\n      maxWidth = (chartArea.right - chartArea.left - chart.borderWidth) / ratioX;\n      maxHeight = (chartArea.bottom - chartArea.top - chart.borderWidth) / ratioY;\n      chart.outerRadius = Math.max(Math.min(maxWidth, maxHeight) / 2, 0);\n      chart.innerRadius = Math.max(chart.outerRadius * cutout, 0);\n      chart.radiusLength = (chart.outerRadius - chart.innerRadius) / (me._getVisibleDatasetWeightTotal() || 1);\n      chart.offsetX = offsetX * chart.outerRadius;\n      chart.offsetY = offsetY * chart.outerRadius;\n      meta.total = me.calculateTotal();\n      me.outerRadius = chart.outerRadius - chart.radiusLength * me._getRingWeightOffset(me.index);\n      me.innerRadius = Math.max(me.outerRadius - chart.radiusLength * chartWeight, 0);\n\n      for (i = 0, ilen = arcs.length; i < ilen; ++i) {\n        me.updateElement(arcs[i], i, reset);\n      }\n    },\n    updateElement: function updateElement(arc, index, reset) {\n      var me = this;\n      var chart = me.chart;\n      var chartArea = chart.chartArea;\n      var opts = chart.options;\n      var animationOpts = opts.animation;\n      var centerX = (chartArea.left + chartArea.right) / 2;\n      var centerY = (chartArea.top + chartArea.bottom) / 2;\n      var startAngle = opts.rotation; // non reset case handled later\n\n      var endAngle = opts.rotation; // non reset case handled later\n\n      var dataset = me.getDataset();\n      var circumference = reset && animationOpts.animateRotate ? 0 : arc.hidden ? 0 : me.calculateCircumference(dataset.data[index]) * (opts.circumference / DOUBLE_PI$1);\n      var innerRadius = reset && animationOpts.animateScale ? 0 : me.innerRadius;\n      var outerRadius = reset && animationOpts.animateScale ? 0 : me.outerRadius;\n      var options = arc._options || {};\n      helpers$1.extend(arc, {\n        // Utility\n        _datasetIndex: me.index,\n        _index: index,\n        // Desired view properties\n        _model: {\n          backgroundColor: options.backgroundColor,\n          borderColor: options.borderColor,\n          borderWidth: options.borderWidth,\n          borderAlign: options.borderAlign,\n          x: centerX + chart.offsetX,\n          y: centerY + chart.offsetY,\n          startAngle: startAngle,\n          endAngle: endAngle,\n          circumference: circumference,\n          outerRadius: outerRadius,\n          innerRadius: innerRadius,\n          label: helpers$1.valueAtIndexOrDefault(dataset.label, index, chart.data.labels[index])\n        }\n      });\n      var model = arc._model; // Set correct angles if not resetting\n\n      if (!reset || !animationOpts.animateRotate) {\n        if (index === 0) {\n          model.startAngle = opts.rotation;\n        } else {\n          model.startAngle = me.getMeta().data[index - 1]._model.endAngle;\n        }\n\n        model.endAngle = model.startAngle + model.circumference;\n      }\n\n      arc.pivot();\n    },\n    calculateTotal: function calculateTotal() {\n      var dataset = this.getDataset();\n      var meta = this.getMeta();\n      var total = 0;\n      var value;\n      helpers$1.each(meta.data, function (element, index) {\n        value = dataset.data[index];\n\n        if (!isNaN(value) && !element.hidden) {\n          total += Math.abs(value);\n        }\n      });\n      /* if (total === 0) {\n      \ttotal = NaN;\n      }*/\n\n      return total;\n    },\n    calculateCircumference: function calculateCircumference(value) {\n      var total = this.getMeta().total;\n\n      if (total > 0 && !isNaN(value)) {\n        return DOUBLE_PI$1 * (Math.abs(value) / total);\n      }\n\n      return 0;\n    },\n    // gets the max border or hover width to properly scale pie charts\n    getMaxBorderWidth: function getMaxBorderWidth(arcs) {\n      var me = this;\n      var max = 0;\n      var chart = me.chart;\n      var i, ilen, meta, arc, controller, options, borderWidth, hoverWidth;\n\n      if (!arcs) {\n        // Find the outmost visible dataset\n        for (i = 0, ilen = chart.data.datasets.length; i < ilen; ++i) {\n          if (chart.isDatasetVisible(i)) {\n            meta = chart.getDatasetMeta(i);\n            arcs = meta.data;\n\n            if (i !== me.index) {\n              controller = meta.controller;\n            }\n\n            break;\n          }\n        }\n      }\n\n      if (!arcs) {\n        return 0;\n      }\n\n      for (i = 0, ilen = arcs.length; i < ilen; ++i) {\n        arc = arcs[i];\n\n        if (controller) {\n          controller._configure();\n\n          options = controller._resolveDataElementOptions(arc, i);\n        } else {\n          options = arc._options;\n        }\n\n        if (options.borderAlign !== 'inner') {\n          borderWidth = options.borderWidth;\n          hoverWidth = options.hoverBorderWidth;\n          max = borderWidth > max ? borderWidth : max;\n          max = hoverWidth > max ? hoverWidth : max;\n        }\n      }\n\n      return max;\n    },\n\n    /**\n     * @protected\n     */\n    setHoverStyle: function setHoverStyle(arc) {\n      var model = arc._model;\n      var options = arc._options;\n      var getHoverColor = helpers$1.getHoverColor;\n      arc.$previousStyle = {\n        backgroundColor: model.backgroundColor,\n        borderColor: model.borderColor,\n        borderWidth: model.borderWidth\n      };\n      model.backgroundColor = valueOrDefault$5(options.hoverBackgroundColor, getHoverColor(options.backgroundColor));\n      model.borderColor = valueOrDefault$5(options.hoverBorderColor, getHoverColor(options.borderColor));\n      model.borderWidth = valueOrDefault$5(options.hoverBorderWidth, options.borderWidth);\n    },\n\n    /**\n     * Get radius length offset of the dataset in relation to the visible datasets weights. This allows determining the inner and outer radius correctly\n     * @private\n     */\n    _getRingWeightOffset: function _getRingWeightOffset(datasetIndex) {\n      var ringWeightOffset = 0;\n\n      for (var i = 0; i < datasetIndex; ++i) {\n        if (this.chart.isDatasetVisible(i)) {\n          ringWeightOffset += this._getRingWeight(i);\n        }\n      }\n\n      return ringWeightOffset;\n    },\n\n    /**\n     * @private\n     */\n    _getRingWeight: function _getRingWeight(dataSetIndex) {\n      return Math.max(valueOrDefault$5(this.chart.data.datasets[dataSetIndex].weight, 1), 0);\n    },\n\n    /**\n     * Returns the sum of all visibile data set weights.  This value can be 0.\n     * @private\n     */\n    _getVisibleDatasetWeightTotal: function _getVisibleDatasetWeightTotal() {\n      return this._getRingWeightOffset(this.chart.data.datasets.length);\n    }\n  });\n\n  core_defaults._set('horizontalBar', {\n    hover: {\n      mode: 'index',\n      axis: 'y'\n    },\n    scales: {\n      xAxes: [{\n        type: 'linear',\n        position: 'bottom'\n      }],\n      yAxes: [{\n        type: 'category',\n        position: 'left',\n        offset: true,\n        gridLines: {\n          offsetGridLines: true\n        }\n      }]\n    },\n    elements: {\n      rectangle: {\n        borderSkipped: 'left'\n      }\n    },\n    tooltips: {\n      mode: 'index',\n      axis: 'y'\n    }\n  });\n\n  core_defaults._set('global', {\n    datasets: {\n      horizontalBar: {\n        categoryPercentage: 0.8,\n        barPercentage: 0.9\n      }\n    }\n  });\n\n  var controller_horizontalBar = controller_bar.extend({\n    /**\n     * @private\n     */\n    _getValueScaleId: function _getValueScaleId() {\n      return this.getMeta().xAxisID;\n    },\n\n    /**\n     * @private\n     */\n    _getIndexScaleId: function _getIndexScaleId() {\n      return this.getMeta().yAxisID;\n    }\n  });\n  var valueOrDefault$6 = helpers$1.valueOrDefault;\n  var resolve$2 = helpers$1.options.resolve;\n  var isPointInArea = helpers$1.canvas._isPointInArea;\n\n  core_defaults._set('line', {\n    showLines: true,\n    spanGaps: false,\n    hover: {\n      mode: 'label'\n    },\n    scales: {\n      xAxes: [{\n        type: 'category',\n        id: 'x-axis-0'\n      }],\n      yAxes: [{\n        type: 'linear',\n        id: 'y-axis-0'\n      }]\n    }\n  });\n\n  function scaleClip(scale, halfBorderWidth) {\n    var tickOpts = scale && scale.options.ticks || {};\n    var reverse = tickOpts.reverse;\n    var min = tickOpts.min === undefined ? halfBorderWidth : 0;\n    var max = tickOpts.max === undefined ? halfBorderWidth : 0;\n    return {\n      start: reverse ? max : min,\n      end: reverse ? min : max\n    };\n  }\n\n  function defaultClip(xScale, yScale, borderWidth) {\n    var halfBorderWidth = borderWidth / 2;\n    var x = scaleClip(xScale, halfBorderWidth);\n    var y = scaleClip(yScale, halfBorderWidth);\n    return {\n      top: y.end,\n      right: x.end,\n      bottom: y.start,\n      left: x.start\n    };\n  }\n\n  function toClip(value) {\n    var t, r, b, l;\n\n    if (helpers$1.isObject(value)) {\n      t = value.top;\n      r = value.right;\n      b = value.bottom;\n      l = value.left;\n    } else {\n      t = r = b = l = value;\n    }\n\n    return {\n      top: t,\n      right: r,\n      bottom: b,\n      left: l\n    };\n  }\n\n  var controller_line = core_datasetController.extend({\n    datasetElementType: elements.Line,\n    dataElementType: elements.Point,\n\n    /**\n     * @private\n     */\n    _datasetElementOptions: ['backgroundColor', 'borderCapStyle', 'borderColor', 'borderDash', 'borderDashOffset', 'borderJoinStyle', 'borderWidth', 'cubicInterpolationMode', 'fill'],\n\n    /**\n     * @private\n     */\n    _dataElementOptions: {\n      backgroundColor: 'pointBackgroundColor',\n      borderColor: 'pointBorderColor',\n      borderWidth: 'pointBorderWidth',\n      hitRadius: 'pointHitRadius',\n      hoverBackgroundColor: 'pointHoverBackgroundColor',\n      hoverBorderColor: 'pointHoverBorderColor',\n      hoverBorderWidth: 'pointHoverBorderWidth',\n      hoverRadius: 'pointHoverRadius',\n      pointStyle: 'pointStyle',\n      radius: 'pointRadius',\n      rotation: 'pointRotation'\n    },\n    update: function update(reset) {\n      var me = this;\n      var meta = me.getMeta();\n      var line = meta.dataset;\n      var points = meta.data || [];\n      var options = me.chart.options;\n      var config = me._config;\n      var showLine = me._showLine = valueOrDefault$6(config.showLine, options.showLines);\n      var i, ilen;\n      me._xScale = me.getScaleForId(meta.xAxisID);\n      me._yScale = me.getScaleForId(meta.yAxisID); // Update Line\n\n      if (showLine) {\n        // Compatibility: If the properties are defined with only the old name, use those values\n        if (config.tension !== undefined && config.lineTension === undefined) {\n          config.lineTension = config.tension;\n        } // Utility\n\n\n        line._scale = me._yScale;\n        line._datasetIndex = me.index; // Data\n\n        line._children = points; // Model\n\n        line._model = me._resolveDatasetElementOptions(line);\n        line.pivot();\n      } // Update Points\n\n\n      for (i = 0, ilen = points.length; i < ilen; ++i) {\n        me.updateElement(points[i], i, reset);\n      }\n\n      if (showLine && line._model.tension !== 0) {\n        me.updateBezierControlPoints();\n      } // Now pivot the point for animation\n\n\n      for (i = 0, ilen = points.length; i < ilen; ++i) {\n        points[i].pivot();\n      }\n    },\n    updateElement: function updateElement(point, index, reset) {\n      var me = this;\n      var meta = me.getMeta();\n      var custom = point.custom || {};\n      var dataset = me.getDataset();\n      var datasetIndex = me.index;\n      var value = dataset.data[index];\n      var xScale = me._xScale;\n      var yScale = me._yScale;\n      var lineModel = meta.dataset._model;\n      var x, y;\n\n      var options = me._resolveDataElementOptions(point, index);\n\n      x = xScale.getPixelForValue(typeof value === 'object' ? value : NaN, index, datasetIndex);\n      y = reset ? yScale.getBasePixel() : me.calculatePointY(value, index, datasetIndex); // Utility\n\n      point._xScale = xScale;\n      point._yScale = yScale;\n      point._options = options;\n      point._datasetIndex = datasetIndex;\n      point._index = index; // Desired view properties\n\n      point._model = {\n        x: x,\n        y: y,\n        skip: custom.skip || isNaN(x) || isNaN(y),\n        // Appearance\n        radius: options.radius,\n        pointStyle: options.pointStyle,\n        rotation: options.rotation,\n        backgroundColor: options.backgroundColor,\n        borderColor: options.borderColor,\n        borderWidth: options.borderWidth,\n        tension: valueOrDefault$6(custom.tension, lineModel ? lineModel.tension : 0),\n        steppedLine: lineModel ? lineModel.steppedLine : false,\n        // Tooltip\n        hitRadius: options.hitRadius\n      };\n    },\n\n    /**\n     * @private\n     */\n    _resolveDatasetElementOptions: function _resolveDatasetElementOptions(element) {\n      var me = this;\n      var config = me._config;\n      var custom = element.custom || {};\n      var options = me.chart.options;\n      var lineOptions = options.elements.line;\n\n      var values = core_datasetController.prototype._resolveDatasetElementOptions.apply(me, arguments); // The default behavior of lines is to break at null values, according\n      // to https://github.com/chartjs/Chart.js/issues/2435#issuecomment-216718158\n      // This option gives lines the ability to span gaps\n\n\n      values.spanGaps = valueOrDefault$6(config.spanGaps, options.spanGaps);\n      values.tension = valueOrDefault$6(config.lineTension, lineOptions.tension);\n      values.steppedLine = resolve$2([custom.steppedLine, config.steppedLine, lineOptions.stepped]);\n      values.clip = toClip(valueOrDefault$6(config.clip, defaultClip(me._xScale, me._yScale, values.borderWidth)));\n      return values;\n    },\n    calculatePointY: function calculatePointY(value, index, datasetIndex) {\n      var me = this;\n      var chart = me.chart;\n      var yScale = me._yScale;\n      var sumPos = 0;\n      var sumNeg = 0;\n      var i, ds, dsMeta, stackedRightValue, rightValue, metasets, ilen;\n\n      if (yScale.options.stacked) {\n        rightValue = +yScale.getRightValue(value);\n        metasets = chart._getSortedVisibleDatasetMetas();\n        ilen = metasets.length;\n\n        for (i = 0; i < ilen; ++i) {\n          dsMeta = metasets[i];\n\n          if (dsMeta.index === datasetIndex) {\n            break;\n          }\n\n          ds = chart.data.datasets[dsMeta.index];\n\n          if (dsMeta.type === 'line' && dsMeta.yAxisID === yScale.id) {\n            stackedRightValue = +yScale.getRightValue(ds.data[index]);\n\n            if (stackedRightValue < 0) {\n              sumNeg += stackedRightValue || 0;\n            } else {\n              sumPos += stackedRightValue || 0;\n            }\n          }\n        }\n\n        if (rightValue < 0) {\n          return yScale.getPixelForValue(sumNeg + rightValue);\n        }\n\n        return yScale.getPixelForValue(sumPos + rightValue);\n      }\n\n      return yScale.getPixelForValue(value);\n    },\n    updateBezierControlPoints: function updateBezierControlPoints() {\n      var me = this;\n      var chart = me.chart;\n      var meta = me.getMeta();\n      var lineModel = meta.dataset._model;\n      var area = chart.chartArea;\n      var points = meta.data || [];\n      var i, ilen, model, controlPoints; // Only consider points that are drawn in case the spanGaps option is used\n\n      if (lineModel.spanGaps) {\n        points = points.filter(function (pt) {\n          return !pt._model.skip;\n        });\n      }\n\n      function capControlPoint(pt, min, max) {\n        return Math.max(Math.min(pt, max), min);\n      }\n\n      if (lineModel.cubicInterpolationMode === 'monotone') {\n        helpers$1.splineCurveMonotone(points);\n      } else {\n        for (i = 0, ilen = points.length; i < ilen; ++i) {\n          model = points[i]._model;\n          controlPoints = helpers$1.splineCurve(helpers$1.previousItem(points, i)._model, model, helpers$1.nextItem(points, i)._model, lineModel.tension);\n          model.controlPointPreviousX = controlPoints.previous.x;\n          model.controlPointPreviousY = controlPoints.previous.y;\n          model.controlPointNextX = controlPoints.next.x;\n          model.controlPointNextY = controlPoints.next.y;\n        }\n      }\n\n      if (chart.options.elements.line.capBezierPoints) {\n        for (i = 0, ilen = points.length; i < ilen; ++i) {\n          model = points[i]._model;\n\n          if (isPointInArea(model, area)) {\n            if (i > 0 && isPointInArea(points[i - 1]._model, area)) {\n              model.controlPointPreviousX = capControlPoint(model.controlPointPreviousX, area.left, area.right);\n              model.controlPointPreviousY = capControlPoint(model.controlPointPreviousY, area.top, area.bottom);\n            }\n\n            if (i < points.length - 1 && isPointInArea(points[i + 1]._model, area)) {\n              model.controlPointNextX = capControlPoint(model.controlPointNextX, area.left, area.right);\n              model.controlPointNextY = capControlPoint(model.controlPointNextY, area.top, area.bottom);\n            }\n          }\n        }\n      }\n    },\n    draw: function draw() {\n      var me = this;\n      var chart = me.chart;\n      var meta = me.getMeta();\n      var points = meta.data || [];\n      var area = chart.chartArea;\n      var canvas = chart.canvas;\n      var i = 0;\n      var ilen = points.length;\n      var clip;\n\n      if (me._showLine) {\n        clip = meta.dataset._model.clip;\n        helpers$1.canvas.clipArea(chart.ctx, {\n          left: clip.left === false ? 0 : area.left - clip.left,\n          right: clip.right === false ? canvas.width : area.right + clip.right,\n          top: clip.top === false ? 0 : area.top - clip.top,\n          bottom: clip.bottom === false ? canvas.height : area.bottom + clip.bottom\n        });\n        meta.dataset.draw();\n        helpers$1.canvas.unclipArea(chart.ctx);\n      } // Draw the points\n\n\n      for (; i < ilen; ++i) {\n        points[i].draw(area);\n      }\n    },\n\n    /**\n     * @protected\n     */\n    setHoverStyle: function setHoverStyle(point) {\n      var model = point._model;\n      var options = point._options;\n      var getHoverColor = helpers$1.getHoverColor;\n      point.$previousStyle = {\n        backgroundColor: model.backgroundColor,\n        borderColor: model.borderColor,\n        borderWidth: model.borderWidth,\n        radius: model.radius\n      };\n      model.backgroundColor = valueOrDefault$6(options.hoverBackgroundColor, getHoverColor(options.backgroundColor));\n      model.borderColor = valueOrDefault$6(options.hoverBorderColor, getHoverColor(options.borderColor));\n      model.borderWidth = valueOrDefault$6(options.hoverBorderWidth, options.borderWidth);\n      model.radius = valueOrDefault$6(options.hoverRadius, options.radius);\n    }\n  });\n  var resolve$3 = helpers$1.options.resolve;\n\n  core_defaults._set('polarArea', {\n    scale: {\n      type: 'radialLinear',\n      angleLines: {\n        display: false\n      },\n      gridLines: {\n        circular: true\n      },\n      pointLabels: {\n        display: false\n      },\n      ticks: {\n        beginAtZero: true\n      }\n    },\n    // Boolean - Whether to animate the rotation of the chart\n    animation: {\n      animateRotate: true,\n      animateScale: true\n    },\n    startAngle: -0.5 * Math.PI,\n    legendCallback: function legendCallback(chart) {\n      var list = document.createElement('ul');\n      var data = chart.data;\n      var datasets = data.datasets;\n      var labels = data.labels;\n      var i, ilen, listItem, listItemSpan;\n      list.setAttribute('class', chart.id + '-legend');\n\n      if (datasets.length) {\n        for (i = 0, ilen = datasets[0].data.length; i < ilen; ++i) {\n          listItem = list.appendChild(document.createElement('li'));\n          listItemSpan = listItem.appendChild(document.createElement('span'));\n          listItemSpan.style.backgroundColor = datasets[0].backgroundColor[i];\n\n          if (labels[i]) {\n            listItem.appendChild(document.createTextNode(labels[i]));\n          }\n        }\n      }\n\n      return list.outerHTML;\n    },\n    legend: {\n      labels: {\n        generateLabels: function generateLabels(chart) {\n          var data = chart.data;\n\n          if (data.labels.length && data.datasets.length) {\n            return data.labels.map(function (label, i) {\n              var meta = chart.getDatasetMeta(0);\n              var style = meta.controller.getStyle(i);\n              return {\n                text: label,\n                fillStyle: style.backgroundColor,\n                strokeStyle: style.borderColor,\n                lineWidth: style.borderWidth,\n                hidden: isNaN(data.datasets[0].data[i]) || meta.data[i].hidden,\n                // Extra data used for toggling the correct item\n                index: i\n              };\n            });\n          }\n\n          return [];\n        }\n      },\n      onClick: function onClick(e, legendItem) {\n        var index = legendItem.index;\n        var chart = this.chart;\n        var i, ilen, meta;\n\n        for (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) {\n          meta = chart.getDatasetMeta(i);\n          meta.data[index].hidden = !meta.data[index].hidden;\n        }\n\n        chart.update();\n      }\n    },\n    // Need to override these to give a nice default\n    tooltips: {\n      callbacks: {\n        title: function title() {\n          return '';\n        },\n        label: function label(item, data) {\n          return data.labels[item.index] + ': ' + item.yLabel;\n        }\n      }\n    }\n  });\n\n  var controller_polarArea = core_datasetController.extend({\n    dataElementType: elements.Arc,\n    linkScales: helpers$1.noop,\n\n    /**\n     * @private\n     */\n    _dataElementOptions: ['backgroundColor', 'borderColor', 'borderWidth', 'borderAlign', 'hoverBackgroundColor', 'hoverBorderColor', 'hoverBorderWidth'],\n\n    /**\n     * @private\n     */\n    _getIndexScaleId: function _getIndexScaleId() {\n      return this.chart.scale.id;\n    },\n\n    /**\n     * @private\n     */\n    _getValueScaleId: function _getValueScaleId() {\n      return this.chart.scale.id;\n    },\n    update: function update(reset) {\n      var me = this;\n      var dataset = me.getDataset();\n      var meta = me.getMeta();\n      var start = me.chart.options.startAngle || 0;\n      var starts = me._starts = [];\n      var angles = me._angles = [];\n      var arcs = meta.data;\n      var i, ilen, angle;\n\n      me._updateRadius();\n\n      meta.count = me.countVisibleElements();\n\n      for (i = 0, ilen = dataset.data.length; i < ilen; i++) {\n        starts[i] = start;\n        angle = me._computeAngle(i);\n        angles[i] = angle;\n        start += angle;\n      }\n\n      for (i = 0, ilen = arcs.length; i < ilen; ++i) {\n        arcs[i]._options = me._resolveDataElementOptions(arcs[i], i);\n        me.updateElement(arcs[i], i, reset);\n      }\n    },\n\n    /**\n     * @private\n     */\n    _updateRadius: function _updateRadius() {\n      var me = this;\n      var chart = me.chart;\n      var chartArea = chart.chartArea;\n      var opts = chart.options;\n      var minSize = Math.min(chartArea.right - chartArea.left, chartArea.bottom - chartArea.top);\n      chart.outerRadius = Math.max(minSize / 2, 0);\n      chart.innerRadius = Math.max(opts.cutoutPercentage ? chart.outerRadius / 100 * opts.cutoutPercentage : 1, 0);\n      chart.radiusLength = (chart.outerRadius - chart.innerRadius) / chart.getVisibleDatasetCount();\n      me.outerRadius = chart.outerRadius - chart.radiusLength * me.index;\n      me.innerRadius = me.outerRadius - chart.radiusLength;\n    },\n    updateElement: function updateElement(arc, index, reset) {\n      var me = this;\n      var chart = me.chart;\n      var dataset = me.getDataset();\n      var opts = chart.options;\n      var animationOpts = opts.animation;\n      var scale = chart.scale;\n      var labels = chart.data.labels;\n      var centerX = scale.xCenter;\n      var centerY = scale.yCenter; // var negHalfPI = -0.5 * Math.PI;\n\n      var datasetStartAngle = opts.startAngle;\n      var distance = arc.hidden ? 0 : scale.getDistanceFromCenterForValue(dataset.data[index]);\n      var startAngle = me._starts[index];\n      var endAngle = startAngle + (arc.hidden ? 0 : me._angles[index]);\n      var resetRadius = animationOpts.animateScale ? 0 : scale.getDistanceFromCenterForValue(dataset.data[index]);\n      var options = arc._options || {};\n      helpers$1.extend(arc, {\n        // Utility\n        _datasetIndex: me.index,\n        _index: index,\n        _scale: scale,\n        // Desired view properties\n        _model: {\n          backgroundColor: options.backgroundColor,\n          borderColor: options.borderColor,\n          borderWidth: options.borderWidth,\n          borderAlign: options.borderAlign,\n          x: centerX,\n          y: centerY,\n          innerRadius: 0,\n          outerRadius: reset ? resetRadius : distance,\n          startAngle: reset && animationOpts.animateRotate ? datasetStartAngle : startAngle,\n          endAngle: reset && animationOpts.animateRotate ? datasetStartAngle : endAngle,\n          label: helpers$1.valueAtIndexOrDefault(labels, index, labels[index])\n        }\n      });\n      arc.pivot();\n    },\n    countVisibleElements: function countVisibleElements() {\n      var dataset = this.getDataset();\n      var meta = this.getMeta();\n      var count = 0;\n      helpers$1.each(meta.data, function (element, index) {\n        if (!isNaN(dataset.data[index]) && !element.hidden) {\n          count++;\n        }\n      });\n      return count;\n    },\n\n    /**\n     * @protected\n     */\n    setHoverStyle: function setHoverStyle(arc) {\n      var model = arc._model;\n      var options = arc._options;\n      var getHoverColor = helpers$1.getHoverColor;\n      var valueOrDefault = helpers$1.valueOrDefault;\n      arc.$previousStyle = {\n        backgroundColor: model.backgroundColor,\n        borderColor: model.borderColor,\n        borderWidth: model.borderWidth\n      };\n      model.backgroundColor = valueOrDefault(options.hoverBackgroundColor, getHoverColor(options.backgroundColor));\n      model.borderColor = valueOrDefault(options.hoverBorderColor, getHoverColor(options.borderColor));\n      model.borderWidth = valueOrDefault(options.hoverBorderWidth, options.borderWidth);\n    },\n\n    /**\n     * @private\n     */\n    _computeAngle: function _computeAngle(index) {\n      var me = this;\n      var count = this.getMeta().count;\n      var dataset = me.getDataset();\n      var meta = me.getMeta();\n\n      if (isNaN(dataset.data[index]) || meta.data[index].hidden) {\n        return 0;\n      } // Scriptable options\n\n\n      var context = {\n        chart: me.chart,\n        dataIndex: index,\n        dataset: dataset,\n        datasetIndex: me.index\n      };\n      return resolve$3([me.chart.options.elements.arc.angle, 2 * Math.PI / count], context, index);\n    }\n  });\n\n  core_defaults._set('pie', helpers$1.clone(core_defaults.doughnut));\n\n  core_defaults._set('pie', {\n    cutoutPercentage: 0\n  }); // Pie charts are Doughnut chart with different defaults\n\n\n  var controller_pie = controller_doughnut;\n  var valueOrDefault$7 = helpers$1.valueOrDefault;\n\n  core_defaults._set('radar', {\n    spanGaps: false,\n    scale: {\n      type: 'radialLinear'\n    },\n    elements: {\n      line: {\n        fill: 'start',\n        tension: 0 // no bezier in radar\n\n      }\n    }\n  });\n\n  var controller_radar = core_datasetController.extend({\n    datasetElementType: elements.Line,\n    dataElementType: elements.Point,\n    linkScales: helpers$1.noop,\n\n    /**\n     * @private\n     */\n    _datasetElementOptions: ['backgroundColor', 'borderWidth', 'borderColor', 'borderCapStyle', 'borderDash', 'borderDashOffset', 'borderJoinStyle', 'fill'],\n\n    /**\n     * @private\n     */\n    _dataElementOptions: {\n      backgroundColor: 'pointBackgroundColor',\n      borderColor: 'pointBorderColor',\n      borderWidth: 'pointBorderWidth',\n      hitRadius: 'pointHitRadius',\n      hoverBackgroundColor: 'pointHoverBackgroundColor',\n      hoverBorderColor: 'pointHoverBorderColor',\n      hoverBorderWidth: 'pointHoverBorderWidth',\n      hoverRadius: 'pointHoverRadius',\n      pointStyle: 'pointStyle',\n      radius: 'pointRadius',\n      rotation: 'pointRotation'\n    },\n\n    /**\n     * @private\n     */\n    _getIndexScaleId: function _getIndexScaleId() {\n      return this.chart.scale.id;\n    },\n\n    /**\n     * @private\n     */\n    _getValueScaleId: function _getValueScaleId() {\n      return this.chart.scale.id;\n    },\n    update: function update(reset) {\n      var me = this;\n      var meta = me.getMeta();\n      var line = meta.dataset;\n      var points = meta.data || [];\n      var scale = me.chart.scale;\n      var config = me._config;\n      var i, ilen; // Compatibility: If the properties are defined with only the old name, use those values\n\n      if (config.tension !== undefined && config.lineTension === undefined) {\n        config.lineTension = config.tension;\n      } // Utility\n\n\n      line._scale = scale;\n      line._datasetIndex = me.index; // Data\n\n      line._children = points;\n      line._loop = true; // Model\n\n      line._model = me._resolveDatasetElementOptions(line);\n      line.pivot(); // Update Points\n\n      for (i = 0, ilen = points.length; i < ilen; ++i) {\n        me.updateElement(points[i], i, reset);\n      } // Update bezier control points\n\n\n      me.updateBezierControlPoints(); // Now pivot the point for animation\n\n      for (i = 0, ilen = points.length; i < ilen; ++i) {\n        points[i].pivot();\n      }\n    },\n    updateElement: function updateElement(point, index, reset) {\n      var me = this;\n      var custom = point.custom || {};\n      var dataset = me.getDataset();\n      var scale = me.chart.scale;\n      var pointPosition = scale.getPointPositionForValue(index, dataset.data[index]);\n\n      var options = me._resolveDataElementOptions(point, index);\n\n      var lineModel = me.getMeta().dataset._model;\n\n      var x = reset ? scale.xCenter : pointPosition.x;\n      var y = reset ? scale.yCenter : pointPosition.y; // Utility\n\n      point._scale = scale;\n      point._options = options;\n      point._datasetIndex = me.index;\n      point._index = index; // Desired view properties\n\n      point._model = {\n        x: x,\n        // value not used in dataset scale, but we want a consistent API between scales\n        y: y,\n        skip: custom.skip || isNaN(x) || isNaN(y),\n        // Appearance\n        radius: options.radius,\n        pointStyle: options.pointStyle,\n        rotation: options.rotation,\n        backgroundColor: options.backgroundColor,\n        borderColor: options.borderColor,\n        borderWidth: options.borderWidth,\n        tension: valueOrDefault$7(custom.tension, lineModel ? lineModel.tension : 0),\n        // Tooltip\n        hitRadius: options.hitRadius\n      };\n    },\n\n    /**\n     * @private\n     */\n    _resolveDatasetElementOptions: function _resolveDatasetElementOptions() {\n      var me = this;\n      var config = me._config;\n      var options = me.chart.options;\n\n      var values = core_datasetController.prototype._resolveDatasetElementOptions.apply(me, arguments);\n\n      values.spanGaps = valueOrDefault$7(config.spanGaps, options.spanGaps);\n      values.tension = valueOrDefault$7(config.lineTension, options.elements.line.tension);\n      return values;\n    },\n    updateBezierControlPoints: function updateBezierControlPoints() {\n      var me = this;\n      var meta = me.getMeta();\n      var area = me.chart.chartArea;\n      var points = meta.data || [];\n      var i, ilen, model, controlPoints; // Only consider points that are drawn in case the spanGaps option is used\n\n      if (meta.dataset._model.spanGaps) {\n        points = points.filter(function (pt) {\n          return !pt._model.skip;\n        });\n      }\n\n      function capControlPoint(pt, min, max) {\n        return Math.max(Math.min(pt, max), min);\n      }\n\n      for (i = 0, ilen = points.length; i < ilen; ++i) {\n        model = points[i]._model;\n        controlPoints = helpers$1.splineCurve(helpers$1.previousItem(points, i, true)._model, model, helpers$1.nextItem(points, i, true)._model, model.tension); // Prevent the bezier going outside of the bounds of the graph\n\n        model.controlPointPreviousX = capControlPoint(controlPoints.previous.x, area.left, area.right);\n        model.controlPointPreviousY = capControlPoint(controlPoints.previous.y, area.top, area.bottom);\n        model.controlPointNextX = capControlPoint(controlPoints.next.x, area.left, area.right);\n        model.controlPointNextY = capControlPoint(controlPoints.next.y, area.top, area.bottom);\n      }\n    },\n    setHoverStyle: function setHoverStyle(point) {\n      var model = point._model;\n      var options = point._options;\n      var getHoverColor = helpers$1.getHoverColor;\n      point.$previousStyle = {\n        backgroundColor: model.backgroundColor,\n        borderColor: model.borderColor,\n        borderWidth: model.borderWidth,\n        radius: model.radius\n      };\n      model.backgroundColor = valueOrDefault$7(options.hoverBackgroundColor, getHoverColor(options.backgroundColor));\n      model.borderColor = valueOrDefault$7(options.hoverBorderColor, getHoverColor(options.borderColor));\n      model.borderWidth = valueOrDefault$7(options.hoverBorderWidth, options.borderWidth);\n      model.radius = valueOrDefault$7(options.hoverRadius, options.radius);\n    }\n  });\n\n  core_defaults._set('scatter', {\n    hover: {\n      mode: 'single'\n    },\n    scales: {\n      xAxes: [{\n        id: 'x-axis-1',\n        // need an ID so datasets can reference the scale\n        type: 'linear',\n        // scatter should not use a category axis\n        position: 'bottom'\n      }],\n      yAxes: [{\n        id: 'y-axis-1',\n        type: 'linear',\n        position: 'left'\n      }]\n    },\n    tooltips: {\n      callbacks: {\n        title: function title() {\n          return ''; // doesn't make sense for scatter since data are formatted as a point\n        },\n        label: function label(item) {\n          return '(' + item.xLabel + ', ' + item.yLabel + ')';\n        }\n      }\n    }\n  });\n\n  core_defaults._set('global', {\n    datasets: {\n      scatter: {\n        showLine: false\n      }\n    }\n  }); // Scatter charts use line controllers\n\n\n  var controller_scatter = controller_line; // NOTE export a map in which the key represents the controller type, not\n  // the class, and so must be CamelCase in order to be correctly retrieved\n  // by the controller in core.controller.js (`controllers[meta.type]`).\n\n  var controllers = {\n    bar: controller_bar,\n    bubble: controller_bubble,\n    doughnut: controller_doughnut,\n    horizontalBar: controller_horizontalBar,\n    line: controller_line,\n    polarArea: controller_polarArea,\n    pie: controller_pie,\n    radar: controller_radar,\n    scatter: controller_scatter\n  };\n  /**\n   * Helper function to get relative position for an event\n   * @param {Event|IEvent} event - The event to get the position for\n   * @param {Chart} chart - The chart\n   * @returns {object} the event position\n   */\n\n  function getRelativePosition(e, chart) {\n    if (e[\"native\"]) {\n      return {\n        x: e.x,\n        y: e.y\n      };\n    }\n\n    return helpers$1.getRelativePosition(e, chart);\n  }\n  /**\n   * Helper function to traverse all of the visible elements in the chart\n   * @param {Chart} chart - the chart\n   * @param {function} handler - the callback to execute for each visible item\n   */\n\n\n  function parseVisibleItems(chart, handler) {\n    var metasets = chart._getSortedVisibleDatasetMetas();\n\n    var metadata, i, j, ilen, jlen, element;\n\n    for (i = 0, ilen = metasets.length; i < ilen; ++i) {\n      metadata = metasets[i].data;\n\n      for (j = 0, jlen = metadata.length; j < jlen; ++j) {\n        element = metadata[j];\n\n        if (!element._view.skip) {\n          handler(element);\n        }\n      }\n    }\n  }\n  /**\n   * Helper function to get the items that intersect the event position\n   * @param {ChartElement[]} items - elements to filter\n   * @param {object} position - the point to be nearest to\n   * @return {ChartElement[]} the nearest items\n   */\n\n\n  function getIntersectItems(chart, position) {\n    var elements = [];\n    parseVisibleItems(chart, function (element) {\n      if (element.inRange(position.x, position.y)) {\n        elements.push(element);\n      }\n    });\n    return elements;\n  }\n  /**\n   * Helper function to get the items nearest to the event position considering all visible items in teh chart\n   * @param {Chart} chart - the chart to look at elements from\n   * @param {object} position - the point to be nearest to\n   * @param {boolean} intersect - if true, only consider items that intersect the position\n   * @param {function} distanceMetric - function to provide the distance between points\n   * @return {ChartElement[]} the nearest items\n   */\n\n\n  function getNearestItems(chart, position, intersect, distanceMetric) {\n    var minDistance = Number.POSITIVE_INFINITY;\n    var nearestItems = [];\n    parseVisibleItems(chart, function (element) {\n      if (intersect && !element.inRange(position.x, position.y)) {\n        return;\n      }\n\n      var center = element.getCenterPoint();\n      var distance = distanceMetric(position, center);\n\n      if (distance < minDistance) {\n        nearestItems = [element];\n        minDistance = distance;\n      } else if (distance === minDistance) {\n        // Can have multiple items at the same distance in which case we sort by size\n        nearestItems.push(element);\n      }\n    });\n    return nearestItems;\n  }\n  /**\n   * Get a distance metric function for two points based on the\n   * axis mode setting\n   * @param {string} axis - the axis mode. x|y|xy\n   */\n\n\n  function getDistanceMetricForAxis(axis) {\n    var useX = axis.indexOf('x') !== -1;\n    var useY = axis.indexOf('y') !== -1;\n    return function (pt1, pt2) {\n      var deltaX = useX ? Math.abs(pt1.x - pt2.x) : 0;\n      var deltaY = useY ? Math.abs(pt1.y - pt2.y) : 0;\n      return Math.sqrt(Math.pow(deltaX, 2) + Math.pow(deltaY, 2));\n    };\n  }\n\n  function indexMode(chart, e, options) {\n    var position = getRelativePosition(e, chart); // Default axis for index mode is 'x' to match old behaviour\n\n    options.axis = options.axis || 'x';\n    var distanceMetric = getDistanceMetricForAxis(options.axis);\n    var items = options.intersect ? getIntersectItems(chart, position) : getNearestItems(chart, position, false, distanceMetric);\n    var elements = [];\n\n    if (!items.length) {\n      return [];\n    }\n\n    chart._getSortedVisibleDatasetMetas().forEach(function (meta) {\n      var element = meta.data[items[0]._index]; // don't count items that are skipped (null data)\n\n      if (element && !element._view.skip) {\n        elements.push(element);\n      }\n    });\n\n    return elements;\n  }\n  /**\n   * @interface IInteractionOptions\n   */\n\n  /**\n   * If true, only consider items that intersect the point\n   * @name IInterfaceOptions#boolean\n   * @type Boolean\n   */\n\n  /**\n   * Contains interaction related functions\n   * @namespace Chart.Interaction\n   */\n\n\n  var core_interaction = {\n    // Helper function for different modes\n    modes: {\n      single: function single(chart, e) {\n        var position = getRelativePosition(e, chart);\n        var elements = [];\n        parseVisibleItems(chart, function (element) {\n          if (element.inRange(position.x, position.y)) {\n            elements.push(element);\n            return elements;\n          }\n        });\n        return elements.slice(0, 1);\n      },\n\n      /**\n       * @function Chart.Interaction.modes.label\n       * @deprecated since version 2.4.0\n       * @todo remove at version 3\n       * @private\n       */\n      label: indexMode,\n\n      /**\n       * Returns items at the same index. If the options.intersect parameter is true, we only return items if we intersect something\n       * If the options.intersect mode is false, we find the nearest item and return the items at the same index as that item\n       * @function Chart.Interaction.modes.index\n       * @since v2.4.0\n       * @param {Chart} chart - the chart we are returning items from\n       * @param {Event} e - the event we are find things at\n       * @param {IInteractionOptions} options - options to use during interaction\n       * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\n       */\n      index: indexMode,\n\n      /**\n       * Returns items in the same dataset. If the options.intersect parameter is true, we only return items if we intersect something\n       * If the options.intersect is false, we find the nearest item and return the items in that dataset\n       * @function Chart.Interaction.modes.dataset\n       * @param {Chart} chart - the chart we are returning items from\n       * @param {Event} e - the event we are find things at\n       * @param {IInteractionOptions} options - options to use during interaction\n       * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\n       */\n      dataset: function dataset(chart, e, options) {\n        var position = getRelativePosition(e, chart);\n        options.axis = options.axis || 'xy';\n        var distanceMetric = getDistanceMetricForAxis(options.axis);\n        var items = options.intersect ? getIntersectItems(chart, position) : getNearestItems(chart, position, false, distanceMetric);\n\n        if (items.length > 0) {\n          items = chart.getDatasetMeta(items[0]._datasetIndex).data;\n        }\n\n        return items;\n      },\n\n      /**\n       * @function Chart.Interaction.modes.x-axis\n       * @deprecated since version 2.4.0. Use index mode and intersect == true\n       * @todo remove at version 3\n       * @private\n       */\n      'x-axis': function xAxis(chart, e) {\n        return indexMode(chart, e, {\n          intersect: false\n        });\n      },\n\n      /**\n       * Point mode returns all elements that hit test based on the event position\n       * of the event\n       * @function Chart.Interaction.modes.intersect\n       * @param {Chart} chart - the chart we are returning items from\n       * @param {Event} e - the event we are find things at\n       * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\n       */\n      point: function point(chart, e) {\n        var position = getRelativePosition(e, chart);\n        return getIntersectItems(chart, position);\n      },\n\n      /**\n       * nearest mode returns the element closest to the point\n       * @function Chart.Interaction.modes.intersect\n       * @param {Chart} chart - the chart we are returning items from\n       * @param {Event} e - the event we are find things at\n       * @param {IInteractionOptions} options - options to use\n       * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\n       */\n      nearest: function nearest(chart, e, options) {\n        var position = getRelativePosition(e, chart);\n        options.axis = options.axis || 'xy';\n        var distanceMetric = getDistanceMetricForAxis(options.axis);\n        return getNearestItems(chart, position, options.intersect, distanceMetric);\n      },\n\n      /**\n       * x mode returns the elements that hit-test at the current x coordinate\n       * @function Chart.Interaction.modes.x\n       * @param {Chart} chart - the chart we are returning items from\n       * @param {Event} e - the event we are find things at\n       * @param {IInteractionOptions} options - options to use\n       * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\n       */\n      x: function x(chart, e, options) {\n        var position = getRelativePosition(e, chart);\n        var items = [];\n        var intersectsItem = false;\n        parseVisibleItems(chart, function (element) {\n          if (element.inXRange(position.x)) {\n            items.push(element);\n          }\n\n          if (element.inRange(position.x, position.y)) {\n            intersectsItem = true;\n          }\n        }); // If we want to trigger on an intersect and we don't have any items\n        // that intersect the position, return nothing\n\n        if (options.intersect && !intersectsItem) {\n          items = [];\n        }\n\n        return items;\n      },\n\n      /**\n       * y mode returns the elements that hit-test at the current y coordinate\n       * @function Chart.Interaction.modes.y\n       * @param {Chart} chart - the chart we are returning items from\n       * @param {Event} e - the event we are find things at\n       * @param {IInteractionOptions} options - options to use\n       * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\n       */\n      y: function y(chart, e, options) {\n        var position = getRelativePosition(e, chart);\n        var items = [];\n        var intersectsItem = false;\n        parseVisibleItems(chart, function (element) {\n          if (element.inYRange(position.y)) {\n            items.push(element);\n          }\n\n          if (element.inRange(position.x, position.y)) {\n            intersectsItem = true;\n          }\n        }); // If we want to trigger on an intersect and we don't have any items\n        // that intersect the position, return nothing\n\n        if (options.intersect && !intersectsItem) {\n          items = [];\n        }\n\n        return items;\n      }\n    }\n  };\n  var extend = helpers$1.extend;\n\n  function filterByPosition(array, position) {\n    return helpers$1.where(array, function (v) {\n      return v.pos === position;\n    });\n  }\n\n  function sortByWeight(array, reverse) {\n    return array.sort(function (a, b) {\n      var v0 = reverse ? b : a;\n      var v1 = reverse ? a : b;\n      return v0.weight === v1.weight ? v0.index - v1.index : v0.weight - v1.weight;\n    });\n  }\n\n  function wrapBoxes(boxes) {\n    var layoutBoxes = [];\n    var i, ilen, box;\n\n    for (i = 0, ilen = (boxes || []).length; i < ilen; ++i) {\n      box = boxes[i];\n      layoutBoxes.push({\n        index: i,\n        box: box,\n        pos: box.position,\n        horizontal: box.isHorizontal(),\n        weight: box.weight\n      });\n    }\n\n    return layoutBoxes;\n  }\n\n  function setLayoutDims(layouts, params) {\n    var i, ilen, layout;\n\n    for (i = 0, ilen = layouts.length; i < ilen; ++i) {\n      layout = layouts[i]; // store width used instead of chartArea.w in fitBoxes\n\n      layout.width = layout.horizontal ? layout.box.fullWidth && params.availableWidth : params.vBoxMaxWidth; // store height used instead of chartArea.h in fitBoxes\n\n      layout.height = layout.horizontal && params.hBoxMaxHeight;\n    }\n  }\n\n  function buildLayoutBoxes(boxes) {\n    var layoutBoxes = wrapBoxes(boxes);\n    var left = sortByWeight(filterByPosition(layoutBoxes, 'left'), true);\n    var right = sortByWeight(filterByPosition(layoutBoxes, 'right'));\n    var top = sortByWeight(filterByPosition(layoutBoxes, 'top'), true);\n    var bottom = sortByWeight(filterByPosition(layoutBoxes, 'bottom'));\n    return {\n      leftAndTop: left.concat(top),\n      rightAndBottom: right.concat(bottom),\n      chartArea: filterByPosition(layoutBoxes, 'chartArea'),\n      vertical: left.concat(right),\n      horizontal: top.concat(bottom)\n    };\n  }\n\n  function getCombinedMax(maxPadding, chartArea, a, b) {\n    return Math.max(maxPadding[a], chartArea[a]) + Math.max(maxPadding[b], chartArea[b]);\n  }\n\n  function updateDims(chartArea, params, layout) {\n    var box = layout.box;\n    var maxPadding = chartArea.maxPadding;\n    var newWidth, newHeight;\n\n    if (layout.size) {\n      // this layout was already counted for, lets first reduce old size\n      chartArea[layout.pos] -= layout.size;\n    }\n\n    layout.size = layout.horizontal ? box.height : box.width;\n    chartArea[layout.pos] += layout.size;\n\n    if (box.getPadding) {\n      var boxPadding = box.getPadding();\n      maxPadding.top = Math.max(maxPadding.top, boxPadding.top);\n      maxPadding.left = Math.max(maxPadding.left, boxPadding.left);\n      maxPadding.bottom = Math.max(maxPadding.bottom, boxPadding.bottom);\n      maxPadding.right = Math.max(maxPadding.right, boxPadding.right);\n    }\n\n    newWidth = params.outerWidth - getCombinedMax(maxPadding, chartArea, 'left', 'right');\n    newHeight = params.outerHeight - getCombinedMax(maxPadding, chartArea, 'top', 'bottom');\n\n    if (newWidth !== chartArea.w || newHeight !== chartArea.h) {\n      chartArea.w = newWidth;\n      chartArea.h = newHeight; // return true if chart area changed in layout's direction\n\n      return layout.horizontal ? newWidth !== chartArea.w : newHeight !== chartArea.h;\n    }\n  }\n\n  function handleMaxPadding(chartArea) {\n    var maxPadding = chartArea.maxPadding;\n\n    function updatePos(pos) {\n      var change = Math.max(maxPadding[pos] - chartArea[pos], 0);\n      chartArea[pos] += change;\n      return change;\n    }\n\n    chartArea.y += updatePos('top');\n    chartArea.x += updatePos('left');\n    updatePos('right');\n    updatePos('bottom');\n  }\n\n  function getMargins(horizontal, chartArea) {\n    var maxPadding = chartArea.maxPadding;\n\n    function marginForPositions(positions) {\n      var margin = {\n        left: 0,\n        top: 0,\n        right: 0,\n        bottom: 0\n      };\n      positions.forEach(function (pos) {\n        margin[pos] = Math.max(chartArea[pos], maxPadding[pos]);\n      });\n      return margin;\n    }\n\n    return horizontal ? marginForPositions(['left', 'right']) : marginForPositions(['top', 'bottom']);\n  }\n\n  function fitBoxes(boxes, chartArea, params) {\n    var refitBoxes = [];\n    var i, ilen, layout, box, refit, changed;\n\n    for (i = 0, ilen = boxes.length; i < ilen; ++i) {\n      layout = boxes[i];\n      box = layout.box;\n      box.update(layout.width || chartArea.w, layout.height || chartArea.h, getMargins(layout.horizontal, chartArea));\n\n      if (updateDims(chartArea, params, layout)) {\n        changed = true;\n\n        if (refitBoxes.length) {\n          // Dimensions changed and there were non full width boxes before this\n          // -> we have to refit those\n          refit = true;\n        }\n      }\n\n      if (!box.fullWidth) {\n        // fullWidth boxes don't need to be re-fitted in any case\n        refitBoxes.push(layout);\n      }\n    }\n\n    return refit ? fitBoxes(refitBoxes, chartArea, params) || changed : changed;\n  }\n\n  function placeBoxes(boxes, chartArea, params) {\n    var userPadding = params.padding;\n    var x = chartArea.x;\n    var y = chartArea.y;\n    var i, ilen, layout, box;\n\n    for (i = 0, ilen = boxes.length; i < ilen; ++i) {\n      layout = boxes[i];\n      box = layout.box;\n\n      if (layout.horizontal) {\n        box.left = box.fullWidth ? userPadding.left : chartArea.left;\n        box.right = box.fullWidth ? params.outerWidth - userPadding.right : chartArea.left + chartArea.w;\n        box.top = y;\n        box.bottom = y + box.height;\n        box.width = box.right - box.left;\n        y = box.bottom;\n      } else {\n        box.left = x;\n        box.right = x + box.width;\n        box.top = chartArea.top;\n        box.bottom = chartArea.top + chartArea.h;\n        box.height = box.bottom - box.top;\n        x = box.right;\n      }\n    }\n\n    chartArea.x = x;\n    chartArea.y = y;\n  }\n\n  core_defaults._set('global', {\n    layout: {\n      padding: {\n        top: 0,\n        right: 0,\n        bottom: 0,\n        left: 0\n      }\n    }\n  });\n  /**\n   * @interface ILayoutItem\n   * @prop {string} position - The position of the item in the chart layout. Possible values are\n   * 'left', 'top', 'right', 'bottom', and 'chartArea'\n   * @prop {number} weight - The weight used to sort the item. Higher weights are further away from the chart area\n   * @prop {boolean} fullWidth - if true, and the item is horizontal, then push vertical boxes down\n   * @prop {function} isHorizontal - returns true if the layout item is horizontal (ie. top or bottom)\n   * @prop {function} update - Takes two parameters: width and height. Returns size of item\n   * @prop {function} getPadding -  Returns an object with padding on the edges\n   * @prop {number} width - Width of item. Must be valid after update()\n   * @prop {number} height - Height of item. Must be valid after update()\n   * @prop {number} left - Left edge of the item. Set by layout system and cannot be used in update\n   * @prop {number} top - Top edge of the item. Set by layout system and cannot be used in update\n   * @prop {number} right - Right edge of the item. Set by layout system and cannot be used in update\n   * @prop {number} bottom - Bottom edge of the item. Set by layout system and cannot be used in update\n   */\n  // The layout service is very self explanatory.  It's responsible for the layout within a chart.\n  // Scales, Legends and Plugins all rely on the layout service and can easily register to be placed anywhere they need\n  // It is this service's responsibility of carrying out that layout.\n\n\n  var core_layouts = {\n    defaults: {},\n\n    /**\n     * Register a box to a chart.\n     * A box is simply a reference to an object that requires layout. eg. Scales, Legend, Title.\n     * @param {Chart} chart - the chart to use\n     * @param {ILayoutItem} item - the item to add to be layed out\n     */\n    addBox: function addBox(chart, item) {\n      if (!chart.boxes) {\n        chart.boxes = [];\n      } // initialize item with default values\n\n\n      item.fullWidth = item.fullWidth || false;\n      item.position = item.position || 'top';\n      item.weight = item.weight || 0;\n\n      item._layers = item._layers || function () {\n        return [{\n          z: 0,\n          draw: function draw() {\n            item.draw.apply(item, arguments);\n          }\n        }];\n      };\n\n      chart.boxes.push(item);\n    },\n\n    /**\n     * Remove a layoutItem from a chart\n     * @param {Chart} chart - the chart to remove the box from\n     * @param {ILayoutItem} layoutItem - the item to remove from the layout\n     */\n    removeBox: function removeBox(chart, layoutItem) {\n      var index = chart.boxes ? chart.boxes.indexOf(layoutItem) : -1;\n\n      if (index !== -1) {\n        chart.boxes.splice(index, 1);\n      }\n    },\n\n    /**\n     * Sets (or updates) options on the given `item`.\n     * @param {Chart} chart - the chart in which the item lives (or will be added to)\n     * @param {ILayoutItem} item - the item to configure with the given options\n     * @param {object} options - the new item options.\n     */\n    configure: function configure(chart, item, options) {\n      var props = ['fullWidth', 'position', 'weight'];\n      var ilen = props.length;\n      var i = 0;\n      var prop;\n\n      for (; i < ilen; ++i) {\n        prop = props[i];\n\n        if (options.hasOwnProperty(prop)) {\n          item[prop] = options[prop];\n        }\n      }\n    },\n\n    /**\n     * Fits boxes of the given chart into the given size by having each box measure itself\n     * then running a fitting algorithm\n     * @param {Chart} chart - the chart\n     * @param {number} width - the width to fit into\n     * @param {number} height - the height to fit into\n     */\n    update: function update(chart, width, height) {\n      if (!chart) {\n        return;\n      }\n\n      var layoutOptions = chart.options.layout || {};\n      var padding = helpers$1.options.toPadding(layoutOptions.padding);\n      var availableWidth = width - padding.width;\n      var availableHeight = height - padding.height;\n      var boxes = buildLayoutBoxes(chart.boxes);\n      var verticalBoxes = boxes.vertical;\n      var horizontalBoxes = boxes.horizontal; // Essentially we now have any number of boxes on each of the 4 sides.\n      // Our canvas looks like the following.\n      // The areas L1 and L2 are the left axes. R1 is the right axis, T1 is the top axis and\n      // B1 is the bottom axis\n      // There are also 4 quadrant-like locations (left to right instead of clockwise) reserved for chart overlays\n      // These locations are single-box locations only, when trying to register a chartArea location that is already taken,\n      // an error will be thrown.\n      //\n      // |----------------------------------------------------|\n      // |                  T1 (Full Width)                   |\n      // |----------------------------------------------------|\n      // |    |    |                 T2                  |    |\n      // |    |----|-------------------------------------|----|\n      // |    |    | C1 |                           | C2 |    |\n      // |    |    |----|                           |----|    |\n      // |    |    |                                     |    |\n      // | L1 | L2 |           ChartArea (C0)            | R1 |\n      // |    |    |                                     |    |\n      // |    |    |----|                           |----|    |\n      // |    |    | C3 |                           | C4 |    |\n      // |    |----|-------------------------------------|----|\n      // |    |    |                 B1                  |    |\n      // |----------------------------------------------------|\n      // |                  B2 (Full Width)                   |\n      // |----------------------------------------------------|\n      //\n\n      var params = Object.freeze({\n        outerWidth: width,\n        outerHeight: height,\n        padding: padding,\n        availableWidth: availableWidth,\n        vBoxMaxWidth: availableWidth / 2 / verticalBoxes.length,\n        hBoxMaxHeight: availableHeight / 2\n      });\n      var chartArea = extend({\n        maxPadding: extend({}, padding),\n        w: availableWidth,\n        h: availableHeight,\n        x: padding.left,\n        y: padding.top\n      }, padding);\n      setLayoutDims(verticalBoxes.concat(horizontalBoxes), params); // First fit vertical boxes\n\n      fitBoxes(verticalBoxes, chartArea, params); // Then fit horizontal boxes\n\n      if (fitBoxes(horizontalBoxes, chartArea, params)) {\n        // if the area changed, re-fit vertical boxes\n        fitBoxes(verticalBoxes, chartArea, params);\n      }\n\n      handleMaxPadding(chartArea); // Finally place the boxes to correct coordinates\n\n      placeBoxes(boxes.leftAndTop, chartArea, params); // Move to opposite side of chart\n\n      chartArea.x += chartArea.w;\n      chartArea.y += chartArea.h;\n      placeBoxes(boxes.rightAndBottom, chartArea, params);\n      chart.chartArea = {\n        left: chartArea.left,\n        top: chartArea.top,\n        right: chartArea.left + chartArea.w,\n        bottom: chartArea.top + chartArea.h\n      }; // Finally update boxes in chartArea (radial scale for example)\n\n      helpers$1.each(boxes.chartArea, function (layout) {\n        var box = layout.box;\n        extend(box, chart.chartArea);\n        box.update(chartArea.w, chartArea.h);\n      });\n    }\n  };\n  /**\n   * Platform fallback implementation (minimal).\n   * @see https://github.com/chartjs/Chart.js/pull/4591#issuecomment-319575939\n   */\n\n  var platform_basic = {\n    acquireContext: function acquireContext(item) {\n      if (item && item.canvas) {\n        // Support for any object associated to a canvas (including a context2d)\n        item = item.canvas;\n      }\n\n      return item && item.getContext('2d') || null;\n    }\n  };\n  var platform_dom = \"/*\\n * DOM element rendering detection\\n * https://davidwalsh.name/detect-node-insertion\\n */\\n@keyframes chartjs-render-animation {\\n\\tfrom { opacity: 0.99; }\\n\\tto { opacity: 1; }\\n}\\n\\n.chartjs-render-monitor {\\n\\tanimation: chartjs-render-animation 0.001s;\\n}\\n\\n/*\\n * DOM element resizing detection\\n * https://github.com/marcj/css-element-queries\\n */\\n.chartjs-size-monitor,\\n.chartjs-size-monitor-expand,\\n.chartjs-size-monitor-shrink {\\n\\tposition: absolute;\\n\\tdirection: ltr;\\n\\tleft: 0;\\n\\ttop: 0;\\n\\tright: 0;\\n\\tbottom: 0;\\n\\toverflow: hidden;\\n\\tpointer-events: none;\\n\\tvisibility: hidden;\\n\\tz-index: -1;\\n}\\n\\n.chartjs-size-monitor-expand > div {\\n\\tposition: absolute;\\n\\twidth: 1000000px;\\n\\theight: 1000000px;\\n\\tleft: 0;\\n\\ttop: 0;\\n}\\n\\n.chartjs-size-monitor-shrink > div {\\n\\tposition: absolute;\\n\\twidth: 200%;\\n\\theight: 200%;\\n\\tleft: 0;\\n\\ttop: 0;\\n}\\n\";\n  var platform_dom$1 =\n  /*#__PURE__*/\n  Object.freeze({\n    __proto__: null,\n    'default': platform_dom\n  });\n  var stylesheet = getCjsExportFromNamespace(platform_dom$1);\n  var EXPANDO_KEY = '$chartjs';\n  var CSS_PREFIX = 'chartjs-';\n  var CSS_SIZE_MONITOR = CSS_PREFIX + 'size-monitor';\n  var CSS_RENDER_MONITOR = CSS_PREFIX + 'render-monitor';\n  var CSS_RENDER_ANIMATION = CSS_PREFIX + 'render-animation';\n  var ANIMATION_START_EVENTS = ['animationstart', 'webkitAnimationStart'];\n  /**\n   * DOM event types -> Chart.js event types.\n   * Note: only events with different types are mapped.\n   * @see https://developer.mozilla.org/en-US/docs/Web/Events\n   */\n\n  var EVENT_TYPES = {\n    touchstart: 'mousedown',\n    touchmove: 'mousemove',\n    touchend: 'mouseup',\n    pointerenter: 'mouseenter',\n    pointerdown: 'mousedown',\n    pointermove: 'mousemove',\n    pointerup: 'mouseup',\n    pointerleave: 'mouseout',\n    pointerout: 'mouseout'\n  };\n  /**\n   * The \"used\" size is the final value of a dimension property after all calculations have\n   * been performed. This method uses the computed style of `element` but returns undefined\n   * if the computed style is not expressed in pixels. That can happen in some cases where\n   * `element` has a size relative to its parent and this last one is not yet displayed,\n   * for example because of `display: none` on a parent node.\n   * @see https://developer.mozilla.org/en-US/docs/Web/CSS/used_value\n   * @returns {number} Size in pixels or undefined if unknown.\n   */\n\n  function readUsedSize(element, property) {\n    var value = helpers$1.getStyle(element, property);\n    var matches = value && value.match(/^(\\d+)(\\.\\d+)?px$/);\n    return matches ? Number(matches[1]) : undefined;\n  }\n  /**\n   * Initializes the canvas style and render size without modifying the canvas display size,\n   * since responsiveness is handled by the controller.resize() method. The config is used\n   * to determine the aspect ratio to apply in case no explicit height has been specified.\n   */\n\n\n  function initCanvas(canvas, config) {\n    var style = canvas.style; // NOTE(SB) canvas.getAttribute('width') !== canvas.width: in the first case it\n    // returns null or '' if no explicit value has been set to the canvas attribute.\n\n    var renderHeight = canvas.getAttribute('height');\n    var renderWidth = canvas.getAttribute('width'); // Chart.js modifies some canvas values that we want to restore on destroy\n\n    canvas[EXPANDO_KEY] = {\n      initial: {\n        height: renderHeight,\n        width: renderWidth,\n        style: {\n          display: style.display,\n          height: style.height,\n          width: style.width\n        }\n      }\n    }; // Force canvas to display as block to avoid extra space caused by inline\n    // elements, which would interfere with the responsive resize process.\n    // https://github.com/chartjs/Chart.js/issues/2538\n\n    style.display = style.display || 'block';\n\n    if (renderWidth === null || renderWidth === '') {\n      var displayWidth = readUsedSize(canvas, 'width');\n\n      if (displayWidth !== undefined) {\n        canvas.width = displayWidth;\n      }\n    }\n\n    if (renderHeight === null || renderHeight === '') {\n      if (canvas.style.height === '') {\n        // If no explicit render height and style height, let's apply the aspect ratio,\n        // which one can be specified by the user but also by charts as default option\n        // (i.e. options.aspectRatio). If not specified, use canvas aspect ratio of 2.\n        canvas.height = canvas.width / (config.options.aspectRatio || 2);\n      } else {\n        var displayHeight = readUsedSize(canvas, 'height');\n\n        if (displayWidth !== undefined) {\n          canvas.height = displayHeight;\n        }\n      }\n    }\n\n    return canvas;\n  }\n  /**\n   * Detects support for options object argument in addEventListener.\n   * https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#Safely_detecting_option_support\n   * @private\n   */\n\n\n  var supportsEventListenerOptions = function () {\n    var supports = false;\n\n    try {\n      var options = Object.defineProperty({}, 'passive', {\n        // eslint-disable-next-line getter-return\n        get: function get() {\n          supports = true;\n        }\n      });\n      window.addEventListener('e', null, options);\n    } catch (e) {// continue regardless of error\n    }\n\n    return supports;\n  }(); // Default passive to true as expected by Chrome for 'touchstart' and 'touchend' events.\n  // https://github.com/chartjs/Chart.js/issues/4287\n\n\n  var eventListenerOptions = supportsEventListenerOptions ? {\n    passive: true\n  } : false;\n\n  function addListener(node, type, listener) {\n    node.addEventListener(type, listener, eventListenerOptions);\n  }\n\n  function removeListener(node, type, listener) {\n    node.removeEventListener(type, listener, eventListenerOptions);\n  }\n\n  function createEvent(type, chart, x, y, nativeEvent) {\n    return {\n      type: type,\n      chart: chart,\n      \"native\": nativeEvent || null,\n      x: x !== undefined ? x : null,\n      y: y !== undefined ? y : null\n    };\n  }\n\n  function fromNativeEvent(event, chart) {\n    var type = EVENT_TYPES[event.type] || event.type;\n    var pos = helpers$1.getRelativePosition(event, chart);\n    return createEvent(type, chart, pos.x, pos.y, event);\n  }\n\n  function throttled(fn, thisArg) {\n    var ticking = false;\n    var args = [];\n    return function () {\n      args = Array.prototype.slice.call(arguments);\n      thisArg = thisArg || this;\n\n      if (!ticking) {\n        ticking = true;\n        helpers$1.requestAnimFrame.call(window, function () {\n          ticking = false;\n          fn.apply(thisArg, args);\n        });\n      }\n    };\n  }\n\n  function createDiv(cls) {\n    var el = document.createElement('div');\n    el.className = cls || '';\n    return el;\n  } // Implementation based on https://github.com/marcj/css-element-queries\n\n\n  function createResizer(handler) {\n    var maxSize = 1000000; // NOTE(SB) Don't use innerHTML because it could be considered unsafe.\n    // https://github.com/chartjs/Chart.js/issues/5902\n\n    var resizer = createDiv(CSS_SIZE_MONITOR);\n    var expand = createDiv(CSS_SIZE_MONITOR + '-expand');\n    var shrink = createDiv(CSS_SIZE_MONITOR + '-shrink');\n    expand.appendChild(createDiv());\n    shrink.appendChild(createDiv());\n    resizer.appendChild(expand);\n    resizer.appendChild(shrink);\n\n    resizer._reset = function () {\n      expand.scrollLeft = maxSize;\n      expand.scrollTop = maxSize;\n      shrink.scrollLeft = maxSize;\n      shrink.scrollTop = maxSize;\n    };\n\n    var onScroll = function onScroll() {\n      resizer._reset();\n\n      handler();\n    };\n\n    addListener(expand, 'scroll', onScroll.bind(expand, 'expand'));\n    addListener(shrink, 'scroll', onScroll.bind(shrink, 'shrink'));\n    return resizer;\n  } // https://davidwalsh.name/detect-node-insertion\n\n\n  function watchForRender(node, handler) {\n    var expando = node[EXPANDO_KEY] || (node[EXPANDO_KEY] = {});\n\n    var proxy = expando.renderProxy = function (e) {\n      if (e.animationName === CSS_RENDER_ANIMATION) {\n        handler();\n      }\n    };\n\n    helpers$1.each(ANIMATION_START_EVENTS, function (type) {\n      addListener(node, type, proxy);\n    }); // #4737: Chrome might skip the CSS animation when the CSS_RENDER_MONITOR class\n    // is removed then added back immediately (same animation frame?). Accessing the\n    // `offsetParent` property will force a reflow and re-evaluate the CSS animation.\n    // https://gist.github.com/paulirish/5d52fb081b3570c81e3a#box-metrics\n    // https://github.com/chartjs/Chart.js/issues/4737\n\n    expando.reflow = !!node.offsetParent;\n    node.classList.add(CSS_RENDER_MONITOR);\n  }\n\n  function unwatchForRender(node) {\n    var expando = node[EXPANDO_KEY] || {};\n    var proxy = expando.renderProxy;\n\n    if (proxy) {\n      helpers$1.each(ANIMATION_START_EVENTS, function (type) {\n        removeListener(node, type, proxy);\n      });\n      delete expando.renderProxy;\n    }\n\n    node.classList.remove(CSS_RENDER_MONITOR);\n  }\n\n  function addResizeListener(node, listener, chart) {\n    var expando = node[EXPANDO_KEY] || (node[EXPANDO_KEY] = {}); // Let's keep track of this added resizer and thus avoid DOM query when removing it.\n\n    var resizer = expando.resizer = createResizer(throttled(function () {\n      if (expando.resizer) {\n        var container = chart.options.maintainAspectRatio && node.parentNode;\n        var w = container ? container.clientWidth : 0;\n        listener(createEvent('resize', chart));\n\n        if (container && container.clientWidth < w && chart.canvas) {\n          // If the container size shrank during chart resize, let's assume\n          // scrollbar appeared. So we resize again with the scrollbar visible -\n          // effectively making chart smaller and the scrollbar hidden again.\n          // Because we are inside `throttled`, and currently `ticking`, scroll\n          // events are ignored during this whole 2 resize process.\n          // If we assumed wrong and something else happened, we are resizing\n          // twice in a frame (potential performance issue)\n          listener(createEvent('resize', chart));\n        }\n      }\n    })); // The resizer needs to be attached to the node parent, so we first need to be\n    // sure that `node` is attached to the DOM before injecting the resizer element.\n\n    watchForRender(node, function () {\n      if (expando.resizer) {\n        var container = node.parentNode;\n\n        if (container && container !== resizer.parentNode) {\n          container.insertBefore(resizer, container.firstChild);\n        } // The container size might have changed, let's reset the resizer state.\n\n\n        resizer._reset();\n      }\n    });\n  }\n\n  function removeResizeListener(node) {\n    var expando = node[EXPANDO_KEY] || {};\n    var resizer = expando.resizer;\n    delete expando.resizer;\n    unwatchForRender(node);\n\n    if (resizer && resizer.parentNode) {\n      resizer.parentNode.removeChild(resizer);\n    }\n  }\n  /**\n   * Injects CSS styles inline if the styles are not already present.\n   * @param {HTMLDocument|ShadowRoot} rootNode - the node to contain the <style>.\n   * @param {string} css - the CSS to be injected.\n   */\n\n\n  function injectCSS(rootNode, css) {\n    // https://stackoverflow.com/q/3922139\n    var expando = rootNode[EXPANDO_KEY] || (rootNode[EXPANDO_KEY] = {});\n\n    if (!expando.containsStyles) {\n      expando.containsStyles = true;\n      css = '/* Chart.js */\\n' + css;\n      var style = document.createElement('style');\n      style.setAttribute('type', 'text/css');\n      style.appendChild(document.createTextNode(css));\n      rootNode.appendChild(style);\n    }\n  }\n\n  var platform_dom$2 = {\n    /**\n     * When `true`, prevents the automatic injection of the stylesheet required to\n     * correctly detect when the chart is added to the DOM and then resized. This\n     * switch has been added to allow external stylesheet (`dist/Chart(.min)?.js`)\n     * to be manually imported to make this library compatible with any CSP.\n     * See https://github.com/chartjs/Chart.js/issues/5208\n     */\n    disableCSSInjection: false,\n\n    /**\n     * This property holds whether this platform is enabled for the current environment.\n     * Currently used by platform.js to select the proper implementation.\n     * @private\n     */\n    _enabled: typeof window !== 'undefined' && typeof document !== 'undefined',\n\n    /**\n     * Initializes resources that depend on platform options.\n     * @param {HTMLCanvasElement} canvas - The Canvas element.\n     * @private\n     */\n    _ensureLoaded: function _ensureLoaded(canvas) {\n      if (!this.disableCSSInjection) {\n        // If the canvas is in a shadow DOM, then the styles must also be inserted\n        // into the same shadow DOM.\n        // https://github.com/chartjs/Chart.js/issues/5763\n        var root = canvas.getRootNode ? canvas.getRootNode() : document;\n        var targetNode = root.host ? root : document.head;\n        injectCSS(targetNode, stylesheet);\n      }\n    },\n    acquireContext: function acquireContext(item, config) {\n      if (typeof item === 'string') {\n        item = document.getElementById(item);\n      } else if (item.length) {\n        // Support for array based queries (such as jQuery)\n        item = item[0];\n      }\n\n      if (item && item.canvas) {\n        // Support for any object associated to a canvas (including a context2d)\n        item = item.canvas;\n      } // To prevent canvas fingerprinting, some add-ons undefine the getContext\n      // method, for example: https://github.com/kkapsner/CanvasBlocker\n      // https://github.com/chartjs/Chart.js/issues/2807\n\n\n      var context = item && item.getContext && item.getContext('2d'); // `instanceof HTMLCanvasElement/CanvasRenderingContext2D` fails when the item is\n      // inside an iframe or when running in a protected environment. We could guess the\n      // types from their toString() value but let's keep things flexible and assume it's\n      // a sufficient condition if the item has a context2D which has item as `canvas`.\n      // https://github.com/chartjs/Chart.js/issues/3887\n      // https://github.com/chartjs/Chart.js/issues/4102\n      // https://github.com/chartjs/Chart.js/issues/4152\n\n      if (context && context.canvas === item) {\n        // Load platform resources on first chart creation, to make it possible to\n        // import the library before setting platform options.\n        this._ensureLoaded(item);\n\n        initCanvas(item, config);\n        return context;\n      }\n\n      return null;\n    },\n    releaseContext: function releaseContext(context) {\n      var canvas = context.canvas;\n\n      if (!canvas[EXPANDO_KEY]) {\n        return;\n      }\n\n      var initial = canvas[EXPANDO_KEY].initial;\n      ['height', 'width'].forEach(function (prop) {\n        var value = initial[prop];\n\n        if (helpers$1.isNullOrUndef(value)) {\n          canvas.removeAttribute(prop);\n        } else {\n          canvas.setAttribute(prop, value);\n        }\n      });\n      helpers$1.each(initial.style || {}, function (value, key) {\n        canvas.style[key] = value;\n      }); // The canvas render size might have been changed (and thus the state stack discarded),\n      // we can't use save() and restore() to restore the initial state. So make sure that at\n      // least the canvas context is reset to the default state by setting the canvas width.\n      // https://www.w3.org/TR/2011/WD-html5-20110525/the-canvas-element.html\n      // eslint-disable-next-line no-self-assign\n\n      canvas.width = canvas.width;\n      delete canvas[EXPANDO_KEY];\n    },\n    addEventListener: function addEventListener(chart, type, listener) {\n      var canvas = chart.canvas;\n\n      if (type === 'resize') {\n        // Note: the resize event is not supported on all browsers.\n        addResizeListener(canvas, listener, chart);\n        return;\n      }\n\n      var expando = listener[EXPANDO_KEY] || (listener[EXPANDO_KEY] = {});\n      var proxies = expando.proxies || (expando.proxies = {});\n\n      var proxy = proxies[chart.id + '_' + type] = function (event) {\n        listener(fromNativeEvent(event, chart));\n      };\n\n      addListener(canvas, type, proxy);\n    },\n    removeEventListener: function removeEventListener(chart, type, listener) {\n      var canvas = chart.canvas;\n\n      if (type === 'resize') {\n        // Note: the resize event is not supported on all browsers.\n        removeResizeListener(canvas);\n        return;\n      }\n\n      var expando = listener[EXPANDO_KEY] || {};\n      var proxies = expando.proxies || {};\n      var proxy = proxies[chart.id + '_' + type];\n\n      if (!proxy) {\n        return;\n      }\n\n      removeListener(canvas, type, proxy);\n    }\n  }; // DEPRECATIONS\n\n  /**\n   * Provided for backward compatibility, use EventTarget.addEventListener instead.\n   * EventTarget.addEventListener compatibility: Chrome, Opera 7, Safari, FF1.5+, IE9+\n   * @see https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener\n   * @function Chart.helpers.addEvent\n   * @deprecated since version 2.7.0\n   * @todo remove at version 3\n   * @private\n   */\n\n  helpers$1.addEvent = addListener;\n  /**\n   * Provided for backward compatibility, use EventTarget.removeEventListener instead.\n   * EventTarget.removeEventListener compatibility: Chrome, Opera 7, Safari, FF1.5+, IE9+\n   * @see https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/removeEventListener\n   * @function Chart.helpers.removeEvent\n   * @deprecated since version 2.7.0\n   * @todo remove at version 3\n   * @private\n   */\n\n  helpers$1.removeEvent = removeListener; // @TODO Make possible to select another platform at build time.\n\n  var implementation = platform_dom$2._enabled ? platform_dom$2 : platform_basic;\n  /**\n   * @namespace Chart.platform\n   * @see https://chartjs.gitbooks.io/proposals/content/Platform.html\n   * @since 2.4.0\n   */\n\n  var platform = helpers$1.extend({\n    /**\n     * @since 2.7.0\n     */\n    initialize: function initialize() {},\n\n    /**\n     * Called at chart construction time, returns a context2d instance implementing\n     * the [W3C Canvas 2D Context API standard]{@link https://www.w3.org/TR/2dcontext/}.\n     * @param {*} item - The native item from which to acquire context (platform specific)\n     * @param {object} options - The chart options\n     * @returns {CanvasRenderingContext2D} context2d instance\n     */\n    acquireContext: function acquireContext() {},\n\n    /**\n     * Called at chart destruction time, releases any resources associated to the context\n     * previously returned by the acquireContext() method.\n     * @param {CanvasRenderingContext2D} context - The context2d instance\n     * @returns {boolean} true if the method succeeded, else false\n     */\n    releaseContext: function releaseContext() {},\n\n    /**\n     * Registers the specified listener on the given chart.\n     * @param {Chart} chart - Chart from which to listen for event\n     * @param {string} type - The ({@link IEvent}) type to listen for\n     * @param {function} listener - Receives a notification (an object that implements\n     * the {@link IEvent} interface) when an event of the specified type occurs.\n     */\n    addEventListener: function addEventListener() {},\n\n    /**\n     * Removes the specified listener previously registered with addEventListener.\n     * @param {Chart} chart - Chart from which to remove the listener\n     * @param {string} type - The ({@link IEvent}) type to remove\n     * @param {function} listener - The listener function to remove from the event target.\n     */\n    removeEventListener: function removeEventListener() {}\n  }, implementation);\n\n  core_defaults._set('global', {\n    plugins: {}\n  });\n  /**\n   * The plugin service singleton\n   * @namespace Chart.plugins\n   * @since 2.1.0\n   */\n\n\n  var core_plugins = {\n    /**\n     * Globally registered plugins.\n     * @private\n     */\n    _plugins: [],\n\n    /**\n     * This identifier is used to invalidate the descriptors cache attached to each chart\n     * when a global plugin is registered or unregistered. In this case, the cache ID is\n     * incremented and descriptors are regenerated during following API calls.\n     * @private\n     */\n    _cacheId: 0,\n\n    /**\n     * Registers the given plugin(s) if not already registered.\n     * @param {IPlugin[]|IPlugin} plugins plugin instance(s).\n     */\n    register: function register(plugins) {\n      var p = this._plugins;\n      [].concat(plugins).forEach(function (plugin) {\n        if (p.indexOf(plugin) === -1) {\n          p.push(plugin);\n        }\n      });\n      this._cacheId++;\n    },\n\n    /**\n     * Unregisters the given plugin(s) only if registered.\n     * @param {IPlugin[]|IPlugin} plugins plugin instance(s).\n     */\n    unregister: function unregister(plugins) {\n      var p = this._plugins;\n      [].concat(plugins).forEach(function (plugin) {\n        var idx = p.indexOf(plugin);\n\n        if (idx !== -1) {\n          p.splice(idx, 1);\n        }\n      });\n      this._cacheId++;\n    },\n\n    /**\n     * Remove all registered plugins.\n     * @since 2.1.5\n     */\n    clear: function clear() {\n      this._plugins = [];\n      this._cacheId++;\n    },\n\n    /**\n     * Returns the number of registered plugins?\n     * @returns {number}\n     * @since 2.1.5\n     */\n    count: function count() {\n      return this._plugins.length;\n    },\n\n    /**\n     * Returns all registered plugin instances.\n     * @returns {IPlugin[]} array of plugin objects.\n     * @since 2.1.5\n     */\n    getAll: function getAll() {\n      return this._plugins;\n    },\n\n    /**\n     * Calls enabled plugins for `chart` on the specified hook and with the given args.\n     * This method immediately returns as soon as a plugin explicitly returns false. The\n     * returned value can be used, for instance, to interrupt the current action.\n     * @param {Chart} chart - The chart instance for which plugins should be called.\n     * @param {string} hook - The name of the plugin method to call (e.g. 'beforeUpdate').\n     * @param {Array} [args] - Extra arguments to apply to the hook call.\n     * @returns {boolean} false if any of the plugins return false, else returns true.\n     */\n    notify: function notify(chart, hook, args) {\n      var descriptors = this.descriptors(chart);\n      var ilen = descriptors.length;\n      var i, descriptor, plugin, params, method;\n\n      for (i = 0; i < ilen; ++i) {\n        descriptor = descriptors[i];\n        plugin = descriptor.plugin;\n        method = plugin[hook];\n\n        if (typeof method === 'function') {\n          params = [chart].concat(args || []);\n          params.push(descriptor.options);\n\n          if (method.apply(plugin, params) === false) {\n            return false;\n          }\n        }\n      }\n\n      return true;\n    },\n\n    /**\n     * Returns descriptors of enabled plugins for the given chart.\n     * @returns {object[]} [{ plugin, options }]\n     * @private\n     */\n    descriptors: function descriptors(chart) {\n      var cache = chart.$plugins || (chart.$plugins = {});\n\n      if (cache.id === this._cacheId) {\n        return cache.descriptors;\n      }\n\n      var plugins = [];\n      var descriptors = [];\n      var config = chart && chart.config || {};\n      var options = config.options && config.options.plugins || {};\n\n      this._plugins.concat(config.plugins || []).forEach(function (plugin) {\n        var idx = plugins.indexOf(plugin);\n\n        if (idx !== -1) {\n          return;\n        }\n\n        var id = plugin.id;\n        var opts = options[id];\n\n        if (opts === false) {\n          return;\n        }\n\n        if (opts === true) {\n          opts = helpers$1.clone(core_defaults.global.plugins[id]);\n        }\n\n        plugins.push(plugin);\n        descriptors.push({\n          plugin: plugin,\n          options: opts || {}\n        });\n      });\n\n      cache.descriptors = descriptors;\n      cache.id = this._cacheId;\n      return descriptors;\n    },\n\n    /**\n     * Invalidates cache for the given chart: descriptors hold a reference on plugin option,\n     * but in some cases, this reference can be changed by the user when updating options.\n     * https://github.com/chartjs/Chart.js/issues/5111#issuecomment-355934167\n     * @private\n     */\n    _invalidate: function _invalidate(chart) {\n      delete chart.$plugins;\n    }\n  };\n  var core_scaleService = {\n    // Scale registration object. Extensions can register new scale types (such as log or DB scales) and then\n    // use the new chart options to grab the correct scale\n    constructors: {},\n    // Use a registration function so that we can move to an ES6 map when we no longer need to support\n    // old browsers\n    // Scale config defaults\n    defaults: {},\n    registerScaleType: function registerScaleType(type, scaleConstructor, scaleDefaults) {\n      this.constructors[type] = scaleConstructor;\n      this.defaults[type] = helpers$1.clone(scaleDefaults);\n    },\n    getScaleConstructor: function getScaleConstructor(type) {\n      return this.constructors.hasOwnProperty(type) ? this.constructors[type] : undefined;\n    },\n    getScaleDefaults: function getScaleDefaults(type) {\n      // Return the scale defaults merged with the global settings so that we always use the latest ones\n      return this.defaults.hasOwnProperty(type) ? helpers$1.merge({}, [core_defaults.scale, this.defaults[type]]) : {};\n    },\n    updateScaleDefaults: function updateScaleDefaults(type, additions) {\n      var me = this;\n\n      if (me.defaults.hasOwnProperty(type)) {\n        me.defaults[type] = helpers$1.extend(me.defaults[type], additions);\n      }\n    },\n    addScalesToLayout: function addScalesToLayout(chart) {\n      // Adds each scale to the chart.boxes array to be sized accordingly\n      helpers$1.each(chart.scales, function (scale) {\n        // Set ILayoutItem parameters for backwards compatibility\n        scale.fullWidth = scale.options.fullWidth;\n        scale.position = scale.options.position;\n        scale.weight = scale.options.weight;\n        core_layouts.addBox(chart, scale);\n      });\n    }\n  };\n  var valueOrDefault$8 = helpers$1.valueOrDefault;\n  var getRtlHelper = helpers$1.rtl.getRtlAdapter;\n\n  core_defaults._set('global', {\n    tooltips: {\n      enabled: true,\n      custom: null,\n      mode: 'nearest',\n      position: 'average',\n      intersect: true,\n      backgroundColor: 'rgba(0,0,0,0.8)',\n      titleFontStyle: 'bold',\n      titleSpacing: 2,\n      titleMarginBottom: 6,\n      titleFontColor: '#fff',\n      titleAlign: 'left',\n      bodySpacing: 2,\n      bodyFontColor: '#fff',\n      bodyAlign: 'left',\n      footerFontStyle: 'bold',\n      footerSpacing: 2,\n      footerMarginTop: 6,\n      footerFontColor: '#fff',\n      footerAlign: 'left',\n      yPadding: 6,\n      xPadding: 6,\n      caretPadding: 2,\n      caretSize: 5,\n      cornerRadius: 6,\n      multiKeyBackground: '#fff',\n      displayColors: true,\n      borderColor: 'rgba(0,0,0,0)',\n      borderWidth: 0,\n      callbacks: {\n        // Args are: (tooltipItems, data)\n        beforeTitle: helpers$1.noop,\n        title: function title(tooltipItems, data) {\n          var title = '';\n          var labels = data.labels;\n          var labelCount = labels ? labels.length : 0;\n\n          if (tooltipItems.length > 0) {\n            var item = tooltipItems[0];\n\n            if (item.label) {\n              title = item.label;\n            } else if (item.xLabel) {\n              title = item.xLabel;\n            } else if (labelCount > 0 && item.index < labelCount) {\n              title = labels[item.index];\n            }\n          }\n\n          return title;\n        },\n        afterTitle: helpers$1.noop,\n        // Args are: (tooltipItems, data)\n        beforeBody: helpers$1.noop,\n        // Args are: (tooltipItem, data)\n        beforeLabel: helpers$1.noop,\n        label: function label(tooltipItem, data) {\n          var label = data.datasets[tooltipItem.datasetIndex].label || '';\n\n          if (label) {\n            label += ': ';\n          }\n\n          if (!helpers$1.isNullOrUndef(tooltipItem.value)) {\n            label += tooltipItem.value;\n          } else {\n            label += tooltipItem.yLabel;\n          }\n\n          return label;\n        },\n        labelColor: function labelColor(tooltipItem, chart) {\n          var meta = chart.getDatasetMeta(tooltipItem.datasetIndex);\n          var activeElement = meta.data[tooltipItem.index];\n          var view = activeElement._view;\n          return {\n            borderColor: view.borderColor,\n            backgroundColor: view.backgroundColor\n          };\n        },\n        labelTextColor: function labelTextColor() {\n          return this._options.bodyFontColor;\n        },\n        afterLabel: helpers$1.noop,\n        // Args are: (tooltipItems, data)\n        afterBody: helpers$1.noop,\n        // Args are: (tooltipItems, data)\n        beforeFooter: helpers$1.noop,\n        footer: helpers$1.noop,\n        afterFooter: helpers$1.noop\n      }\n    }\n  });\n\n  var positioners = {\n    /**\n     * Average mode places the tooltip at the average position of the elements shown\n     * @function Chart.Tooltip.positioners.average\n     * @param elements {ChartElement[]} the elements being displayed in the tooltip\n     * @returns {object} tooltip position\n     */\n    average: function average(elements) {\n      if (!elements.length) {\n        return false;\n      }\n\n      var i, len;\n      var x = 0;\n      var y = 0;\n      var count = 0;\n\n      for (i = 0, len = elements.length; i < len; ++i) {\n        var el = elements[i];\n\n        if (el && el.hasValue()) {\n          var pos = el.tooltipPosition();\n          x += pos.x;\n          y += pos.y;\n          ++count;\n        }\n      }\n\n      return {\n        x: x / count,\n        y: y / count\n      };\n    },\n\n    /**\n     * Gets the tooltip position nearest of the item nearest to the event position\n     * @function Chart.Tooltip.positioners.nearest\n     * @param elements {Chart.Element[]} the tooltip elements\n     * @param eventPosition {object} the position of the event in canvas coordinates\n     * @returns {object} the tooltip position\n     */\n    nearest: function nearest(elements, eventPosition) {\n      var x = eventPosition.x;\n      var y = eventPosition.y;\n      var minDistance = Number.POSITIVE_INFINITY;\n      var i, len, nearestElement;\n\n      for (i = 0, len = elements.length; i < len; ++i) {\n        var el = elements[i];\n\n        if (el && el.hasValue()) {\n          var center = el.getCenterPoint();\n          var d = helpers$1.distanceBetweenPoints(eventPosition, center);\n\n          if (d < minDistance) {\n            minDistance = d;\n            nearestElement = el;\n          }\n        }\n      }\n\n      if (nearestElement) {\n        var tp = nearestElement.tooltipPosition();\n        x = tp.x;\n        y = tp.y;\n      }\n\n      return {\n        x: x,\n        y: y\n      };\n    }\n  }; // Helper to push or concat based on if the 2nd parameter is an array or not\n\n  function pushOrConcat(base, toPush) {\n    if (toPush) {\n      if (helpers$1.isArray(toPush)) {\n        // base = base.concat(toPush);\n        Array.prototype.push.apply(base, toPush);\n      } else {\n        base.push(toPush);\n      }\n    }\n\n    return base;\n  }\n  /**\n   * Returns array of strings split by newline\n   * @param {string} value - The value to split by newline.\n   * @returns {string[]} value if newline present - Returned from String split() method\n   * @function\n   */\n\n\n  function splitNewlines(str) {\n    if ((typeof str === 'string' || str instanceof String) && str.indexOf('\\n') > -1) {\n      return str.split('\\n');\n    }\n\n    return str;\n  }\n  /**\n   * Private helper to create a tooltip item model\n   * @param element - the chart element (point, arc, bar) to create the tooltip item for\n   * @return new tooltip item\n   */\n\n\n  function createTooltipItem(element) {\n    var xScale = element._xScale;\n    var yScale = element._yScale || element._scale; // handle radar || polarArea charts\n\n    var index = element._index;\n    var datasetIndex = element._datasetIndex;\n\n    var controller = element._chart.getDatasetMeta(datasetIndex).controller;\n\n    var indexScale = controller._getIndexScale();\n\n    var valueScale = controller._getValueScale();\n\n    return {\n      xLabel: xScale ? xScale.getLabelForIndex(index, datasetIndex) : '',\n      yLabel: yScale ? yScale.getLabelForIndex(index, datasetIndex) : '',\n      label: indexScale ? '' + indexScale.getLabelForIndex(index, datasetIndex) : '',\n      value: valueScale ? '' + valueScale.getLabelForIndex(index, datasetIndex) : '',\n      index: index,\n      datasetIndex: datasetIndex,\n      x: element._model.x,\n      y: element._model.y\n    };\n  }\n  /**\n   * Helper to get the reset model for the tooltip\n   * @param tooltipOpts {object} the tooltip options\n   */\n\n\n  function getBaseModel(tooltipOpts) {\n    var globalDefaults = core_defaults.global;\n    return {\n      // Positioning\n      xPadding: tooltipOpts.xPadding,\n      yPadding: tooltipOpts.yPadding,\n      xAlign: tooltipOpts.xAlign,\n      yAlign: tooltipOpts.yAlign,\n      // Drawing direction and text direction\n      rtl: tooltipOpts.rtl,\n      textDirection: tooltipOpts.textDirection,\n      // Body\n      bodyFontColor: tooltipOpts.bodyFontColor,\n      _bodyFontFamily: valueOrDefault$8(tooltipOpts.bodyFontFamily, globalDefaults.defaultFontFamily),\n      _bodyFontStyle: valueOrDefault$8(tooltipOpts.bodyFontStyle, globalDefaults.defaultFontStyle),\n      _bodyAlign: tooltipOpts.bodyAlign,\n      bodyFontSize: valueOrDefault$8(tooltipOpts.bodyFontSize, globalDefaults.defaultFontSize),\n      bodySpacing: tooltipOpts.bodySpacing,\n      // Title\n      titleFontColor: tooltipOpts.titleFontColor,\n      _titleFontFamily: valueOrDefault$8(tooltipOpts.titleFontFamily, globalDefaults.defaultFontFamily),\n      _titleFontStyle: valueOrDefault$8(tooltipOpts.titleFontStyle, globalDefaults.defaultFontStyle),\n      titleFontSize: valueOrDefault$8(tooltipOpts.titleFontSize, globalDefaults.defaultFontSize),\n      _titleAlign: tooltipOpts.titleAlign,\n      titleSpacing: tooltipOpts.titleSpacing,\n      titleMarginBottom: tooltipOpts.titleMarginBottom,\n      // Footer\n      footerFontColor: tooltipOpts.footerFontColor,\n      _footerFontFamily: valueOrDefault$8(tooltipOpts.footerFontFamily, globalDefaults.defaultFontFamily),\n      _footerFontStyle: valueOrDefault$8(tooltipOpts.footerFontStyle, globalDefaults.defaultFontStyle),\n      footerFontSize: valueOrDefault$8(tooltipOpts.footerFontSize, globalDefaults.defaultFontSize),\n      _footerAlign: tooltipOpts.footerAlign,\n      footerSpacing: tooltipOpts.footerSpacing,\n      footerMarginTop: tooltipOpts.footerMarginTop,\n      // Appearance\n      caretSize: tooltipOpts.caretSize,\n      cornerRadius: tooltipOpts.cornerRadius,\n      backgroundColor: tooltipOpts.backgroundColor,\n      opacity: 0,\n      legendColorBackground: tooltipOpts.multiKeyBackground,\n      displayColors: tooltipOpts.displayColors,\n      borderColor: tooltipOpts.borderColor,\n      borderWidth: tooltipOpts.borderWidth\n    };\n  }\n  /**\n   * Get the size of the tooltip\n   */\n\n\n  function getTooltipSize(tooltip, model) {\n    var ctx = tooltip._chart.ctx;\n    var height = model.yPadding * 2; // Tooltip Padding\n\n    var width = 0; // Count of all lines in the body\n\n    var body = model.body;\n    var combinedBodyLength = body.reduce(function (count, bodyItem) {\n      return count + bodyItem.before.length + bodyItem.lines.length + bodyItem.after.length;\n    }, 0);\n    combinedBodyLength += model.beforeBody.length + model.afterBody.length;\n    var titleLineCount = model.title.length;\n    var footerLineCount = model.footer.length;\n    var titleFontSize = model.titleFontSize;\n    var bodyFontSize = model.bodyFontSize;\n    var footerFontSize = model.footerFontSize;\n    height += titleLineCount * titleFontSize; // Title Lines\n\n    height += titleLineCount ? (titleLineCount - 1) * model.titleSpacing : 0; // Title Line Spacing\n\n    height += titleLineCount ? model.titleMarginBottom : 0; // Title's bottom Margin\n\n    height += combinedBodyLength * bodyFontSize; // Body Lines\n\n    height += combinedBodyLength ? (combinedBodyLength - 1) * model.bodySpacing : 0; // Body Line Spacing\n\n    height += footerLineCount ? model.footerMarginTop : 0; // Footer Margin\n\n    height += footerLineCount * footerFontSize; // Footer Lines\n\n    height += footerLineCount ? (footerLineCount - 1) * model.footerSpacing : 0; // Footer Line Spacing\n    // Title width\n\n    var widthPadding = 0;\n\n    var maxLineWidth = function maxLineWidth(line) {\n      width = Math.max(width, ctx.measureText(line).width + widthPadding);\n    };\n\n    ctx.font = helpers$1.fontString(titleFontSize, model._titleFontStyle, model._titleFontFamily);\n    helpers$1.each(model.title, maxLineWidth); // Body width\n\n    ctx.font = helpers$1.fontString(bodyFontSize, model._bodyFontStyle, model._bodyFontFamily);\n    helpers$1.each(model.beforeBody.concat(model.afterBody), maxLineWidth); // Body lines may include some extra width due to the color box\n\n    widthPadding = model.displayColors ? bodyFontSize + 2 : 0;\n    helpers$1.each(body, function (bodyItem) {\n      helpers$1.each(bodyItem.before, maxLineWidth);\n      helpers$1.each(bodyItem.lines, maxLineWidth);\n      helpers$1.each(bodyItem.after, maxLineWidth);\n    }); // Reset back to 0\n\n    widthPadding = 0; // Footer width\n\n    ctx.font = helpers$1.fontString(footerFontSize, model._footerFontStyle, model._footerFontFamily);\n    helpers$1.each(model.footer, maxLineWidth); // Add padding\n\n    width += 2 * model.xPadding;\n    return {\n      width: width,\n      height: height\n    };\n  }\n  /**\n   * Helper to get the alignment of a tooltip given the size\n   */\n\n\n  function determineAlignment(tooltip, size) {\n    var model = tooltip._model;\n    var chart = tooltip._chart;\n    var chartArea = tooltip._chart.chartArea;\n    var xAlign = 'center';\n    var yAlign = 'center';\n\n    if (model.y < size.height) {\n      yAlign = 'top';\n    } else if (model.y > chart.height - size.height) {\n      yAlign = 'bottom';\n    }\n\n    var lf, rf; // functions to determine left, right alignment\n\n    var olf, orf; // functions to determine if left/right alignment causes tooltip to go outside chart\n\n    var yf; // function to get the y alignment if the tooltip goes outside of the left or right edges\n\n    var midX = (chartArea.left + chartArea.right) / 2;\n    var midY = (chartArea.top + chartArea.bottom) / 2;\n\n    if (yAlign === 'center') {\n      lf = function lf(x) {\n        return x <= midX;\n      };\n\n      rf = function rf(x) {\n        return x > midX;\n      };\n    } else {\n      lf = function lf(x) {\n        return x <= size.width / 2;\n      };\n\n      rf = function rf(x) {\n        return x >= chart.width - size.width / 2;\n      };\n    }\n\n    olf = function olf(x) {\n      return x + size.width + model.caretSize + model.caretPadding > chart.width;\n    };\n\n    orf = function orf(x) {\n      return x - size.width - model.caretSize - model.caretPadding < 0;\n    };\n\n    yf = function yf(y) {\n      return y <= midY ? 'top' : 'bottom';\n    };\n\n    if (lf(model.x)) {\n      xAlign = 'left'; // Is tooltip too wide and goes over the right side of the chart.?\n\n      if (olf(model.x)) {\n        xAlign = 'center';\n        yAlign = yf(model.y);\n      }\n    } else if (rf(model.x)) {\n      xAlign = 'right'; // Is tooltip too wide and goes outside left edge of canvas?\n\n      if (orf(model.x)) {\n        xAlign = 'center';\n        yAlign = yf(model.y);\n      }\n    }\n\n    var opts = tooltip._options;\n    return {\n      xAlign: opts.xAlign ? opts.xAlign : xAlign,\n      yAlign: opts.yAlign ? opts.yAlign : yAlign\n    };\n  }\n  /**\n   * Helper to get the location a tooltip needs to be placed at given the initial position (via the vm) and the size and alignment\n   */\n\n\n  function getBackgroundPoint(vm, size, alignment, chart) {\n    // Background Position\n    var x = vm.x;\n    var y = vm.y;\n    var caretSize = vm.caretSize;\n    var caretPadding = vm.caretPadding;\n    var cornerRadius = vm.cornerRadius;\n    var xAlign = alignment.xAlign;\n    var yAlign = alignment.yAlign;\n    var paddingAndSize = caretSize + caretPadding;\n    var radiusAndPadding = cornerRadius + caretPadding;\n\n    if (xAlign === 'right') {\n      x -= size.width;\n    } else if (xAlign === 'center') {\n      x -= size.width / 2;\n\n      if (x + size.width > chart.width) {\n        x = chart.width - size.width;\n      }\n\n      if (x < 0) {\n        x = 0;\n      }\n    }\n\n    if (yAlign === 'top') {\n      y += paddingAndSize;\n    } else if (yAlign === 'bottom') {\n      y -= size.height + paddingAndSize;\n    } else {\n      y -= size.height / 2;\n    }\n\n    if (yAlign === 'center') {\n      if (xAlign === 'left') {\n        x += paddingAndSize;\n      } else if (xAlign === 'right') {\n        x -= paddingAndSize;\n      }\n    } else if (xAlign === 'left') {\n      x -= radiusAndPadding;\n    } else if (xAlign === 'right') {\n      x += radiusAndPadding;\n    }\n\n    return {\n      x: x,\n      y: y\n    };\n  }\n\n  function getAlignedX(vm, align) {\n    return align === 'center' ? vm.x + vm.width / 2 : align === 'right' ? vm.x + vm.width - vm.xPadding : vm.x + vm.xPadding;\n  }\n  /**\n   * Helper to build before and after body lines\n   */\n\n\n  function getBeforeAfterBodyLines(callback) {\n    return pushOrConcat([], splitNewlines(callback));\n  }\n\n  var exports$4 = core_element.extend({\n    initialize: function initialize() {\n      this._model = getBaseModel(this._options);\n      this._lastActive = [];\n    },\n    // Get the title\n    // Args are: (tooltipItem, data)\n    getTitle: function getTitle() {\n      var me = this;\n      var opts = me._options;\n      var callbacks = opts.callbacks;\n      var beforeTitle = callbacks.beforeTitle.apply(me, arguments);\n      var title = callbacks.title.apply(me, arguments);\n      var afterTitle = callbacks.afterTitle.apply(me, arguments);\n      var lines = [];\n      lines = pushOrConcat(lines, splitNewlines(beforeTitle));\n      lines = pushOrConcat(lines, splitNewlines(title));\n      lines = pushOrConcat(lines, splitNewlines(afterTitle));\n      return lines;\n    },\n    // Args are: (tooltipItem, data)\n    getBeforeBody: function getBeforeBody() {\n      return getBeforeAfterBodyLines(this._options.callbacks.beforeBody.apply(this, arguments));\n    },\n    // Args are: (tooltipItem, data)\n    getBody: function getBody(tooltipItems, data) {\n      var me = this;\n      var callbacks = me._options.callbacks;\n      var bodyItems = [];\n      helpers$1.each(tooltipItems, function (tooltipItem) {\n        var bodyItem = {\n          before: [],\n          lines: [],\n          after: []\n        };\n        pushOrConcat(bodyItem.before, splitNewlines(callbacks.beforeLabel.call(me, tooltipItem, data)));\n        pushOrConcat(bodyItem.lines, callbacks.label.call(me, tooltipItem, data));\n        pushOrConcat(bodyItem.after, splitNewlines(callbacks.afterLabel.call(me, tooltipItem, data)));\n        bodyItems.push(bodyItem);\n      });\n      return bodyItems;\n    },\n    // Args are: (tooltipItem, data)\n    getAfterBody: function getAfterBody() {\n      return getBeforeAfterBodyLines(this._options.callbacks.afterBody.apply(this, arguments));\n    },\n    // Get the footer and beforeFooter and afterFooter lines\n    // Args are: (tooltipItem, data)\n    getFooter: function getFooter() {\n      var me = this;\n      var callbacks = me._options.callbacks;\n      var beforeFooter = callbacks.beforeFooter.apply(me, arguments);\n      var footer = callbacks.footer.apply(me, arguments);\n      var afterFooter = callbacks.afterFooter.apply(me, arguments);\n      var lines = [];\n      lines = pushOrConcat(lines, splitNewlines(beforeFooter));\n      lines = pushOrConcat(lines, splitNewlines(footer));\n      lines = pushOrConcat(lines, splitNewlines(afterFooter));\n      return lines;\n    },\n    update: function update(changed) {\n      var me = this;\n      var opts = me._options; // Need to regenerate the model because its faster than using extend and it is necessary due to the optimization in Chart.Element.transition\n      // that does _view = _model if ease === 1. This causes the 2nd tooltip update to set properties in both the view and model at the same time\n      // which breaks any animations.\n\n      var existingModel = me._model;\n      var model = me._model = getBaseModel(opts);\n      var active = me._active;\n      var data = me._data; // In the case where active.length === 0 we need to keep these at existing values for good animations\n\n      var alignment = {\n        xAlign: existingModel.xAlign,\n        yAlign: existingModel.yAlign\n      };\n      var backgroundPoint = {\n        x: existingModel.x,\n        y: existingModel.y\n      };\n      var tooltipSize = {\n        width: existingModel.width,\n        height: existingModel.height\n      };\n      var tooltipPosition = {\n        x: existingModel.caretX,\n        y: existingModel.caretY\n      };\n      var i, len;\n\n      if (active.length) {\n        model.opacity = 1;\n        var labelColors = [];\n        var labelTextColors = [];\n        tooltipPosition = positioners[opts.position].call(me, active, me._eventPosition);\n        var tooltipItems = [];\n\n        for (i = 0, len = active.length; i < len; ++i) {\n          tooltipItems.push(createTooltipItem(active[i]));\n        } // If the user provided a filter function, use it to modify the tooltip items\n\n\n        if (opts.filter) {\n          tooltipItems = tooltipItems.filter(function (a) {\n            return opts.filter(a, data);\n          });\n        } // If the user provided a sorting function, use it to modify the tooltip items\n\n\n        if (opts.itemSort) {\n          tooltipItems = tooltipItems.sort(function (a, b) {\n            return opts.itemSort(a, b, data);\n          });\n        } // Determine colors for boxes\n\n\n        helpers$1.each(tooltipItems, function (tooltipItem) {\n          labelColors.push(opts.callbacks.labelColor.call(me, tooltipItem, me._chart));\n          labelTextColors.push(opts.callbacks.labelTextColor.call(me, tooltipItem, me._chart));\n        }); // Build the Text Lines\n\n        model.title = me.getTitle(tooltipItems, data);\n        model.beforeBody = me.getBeforeBody(tooltipItems, data);\n        model.body = me.getBody(tooltipItems, data);\n        model.afterBody = me.getAfterBody(tooltipItems, data);\n        model.footer = me.getFooter(tooltipItems, data); // Initial positioning and colors\n\n        model.x = tooltipPosition.x;\n        model.y = tooltipPosition.y;\n        model.caretPadding = opts.caretPadding;\n        model.labelColors = labelColors;\n        model.labelTextColors = labelTextColors; // data points\n\n        model.dataPoints = tooltipItems; // We need to determine alignment of the tooltip\n\n        tooltipSize = getTooltipSize(this, model);\n        alignment = determineAlignment(this, tooltipSize); // Final Size and Position\n\n        backgroundPoint = getBackgroundPoint(model, tooltipSize, alignment, me._chart);\n      } else {\n        model.opacity = 0;\n      }\n\n      model.xAlign = alignment.xAlign;\n      model.yAlign = alignment.yAlign;\n      model.x = backgroundPoint.x;\n      model.y = backgroundPoint.y;\n      model.width = tooltipSize.width;\n      model.height = tooltipSize.height; // Point where the caret on the tooltip points to\n\n      model.caretX = tooltipPosition.x;\n      model.caretY = tooltipPosition.y;\n      me._model = model;\n\n      if (changed && opts.custom) {\n        opts.custom.call(me, model);\n      }\n\n      return me;\n    },\n    drawCaret: function drawCaret(tooltipPoint, size) {\n      var ctx = this._chart.ctx;\n      var vm = this._view;\n      var caretPosition = this.getCaretPosition(tooltipPoint, size, vm);\n      ctx.lineTo(caretPosition.x1, caretPosition.y1);\n      ctx.lineTo(caretPosition.x2, caretPosition.y2);\n      ctx.lineTo(caretPosition.x3, caretPosition.y3);\n    },\n    getCaretPosition: function getCaretPosition(tooltipPoint, size, vm) {\n      var x1, x2, x3, y1, y2, y3;\n      var caretSize = vm.caretSize;\n      var cornerRadius = vm.cornerRadius;\n      var xAlign = vm.xAlign;\n      var yAlign = vm.yAlign;\n      var ptX = tooltipPoint.x;\n      var ptY = tooltipPoint.y;\n      var width = size.width;\n      var height = size.height;\n\n      if (yAlign === 'center') {\n        y2 = ptY + height / 2;\n\n        if (xAlign === 'left') {\n          x1 = ptX;\n          x2 = x1 - caretSize;\n          x3 = x1;\n          y1 = y2 + caretSize;\n          y3 = y2 - caretSize;\n        } else {\n          x1 = ptX + width;\n          x2 = x1 + caretSize;\n          x3 = x1;\n          y1 = y2 - caretSize;\n          y3 = y2 + caretSize;\n        }\n      } else {\n        if (xAlign === 'left') {\n          x2 = ptX + cornerRadius + caretSize;\n          x1 = x2 - caretSize;\n          x3 = x2 + caretSize;\n        } else if (xAlign === 'right') {\n          x2 = ptX + width - cornerRadius - caretSize;\n          x1 = x2 - caretSize;\n          x3 = x2 + caretSize;\n        } else {\n          x2 = vm.caretX;\n          x1 = x2 - caretSize;\n          x3 = x2 + caretSize;\n        }\n\n        if (yAlign === 'top') {\n          y1 = ptY;\n          y2 = y1 - caretSize;\n          y3 = y1;\n        } else {\n          y1 = ptY + height;\n          y2 = y1 + caretSize;\n          y3 = y1; // invert drawing order\n\n          var tmp = x3;\n          x3 = x1;\n          x1 = tmp;\n        }\n      }\n\n      return {\n        x1: x1,\n        x2: x2,\n        x3: x3,\n        y1: y1,\n        y2: y2,\n        y3: y3\n      };\n    },\n    drawTitle: function drawTitle(pt, vm, ctx) {\n      var title = vm.title;\n      var length = title.length;\n      var titleFontSize, titleSpacing, i;\n\n      if (length) {\n        var rtlHelper = getRtlHelper(vm.rtl, vm.x, vm.width);\n        pt.x = getAlignedX(vm, vm._titleAlign);\n        ctx.textAlign = rtlHelper.textAlign(vm._titleAlign);\n        ctx.textBaseline = 'middle';\n        titleFontSize = vm.titleFontSize;\n        titleSpacing = vm.titleSpacing;\n        ctx.fillStyle = vm.titleFontColor;\n        ctx.font = helpers$1.fontString(titleFontSize, vm._titleFontStyle, vm._titleFontFamily);\n\n        for (i = 0; i < length; ++i) {\n          ctx.fillText(title[i], rtlHelper.x(pt.x), pt.y + titleFontSize / 2);\n          pt.y += titleFontSize + titleSpacing; // Line Height and spacing\n\n          if (i + 1 === length) {\n            pt.y += vm.titleMarginBottom - titleSpacing; // If Last, add margin, remove spacing\n          }\n        }\n      }\n    },\n    drawBody: function drawBody(pt, vm, ctx) {\n      var bodyFontSize = vm.bodyFontSize;\n      var bodySpacing = vm.bodySpacing;\n      var bodyAlign = vm._bodyAlign;\n      var body = vm.body;\n      var drawColorBoxes = vm.displayColors;\n      var xLinePadding = 0;\n      var colorX = drawColorBoxes ? getAlignedX(vm, 'left') : 0;\n      var rtlHelper = getRtlHelper(vm.rtl, vm.x, vm.width);\n\n      var fillLineOfText = function fillLineOfText(line) {\n        ctx.fillText(line, rtlHelper.x(pt.x + xLinePadding), pt.y + bodyFontSize / 2);\n        pt.y += bodyFontSize + bodySpacing;\n      };\n\n      var bodyItem, textColor, labelColors, lines, i, j, ilen, jlen;\n      var bodyAlignForCalculation = rtlHelper.textAlign(bodyAlign);\n      ctx.textAlign = bodyAlign;\n      ctx.textBaseline = 'middle';\n      ctx.font = helpers$1.fontString(bodyFontSize, vm._bodyFontStyle, vm._bodyFontFamily);\n      pt.x = getAlignedX(vm, bodyAlignForCalculation); // Before body lines\n\n      ctx.fillStyle = vm.bodyFontColor;\n      helpers$1.each(vm.beforeBody, fillLineOfText);\n      xLinePadding = drawColorBoxes && bodyAlignForCalculation !== 'right' ? bodyAlign === 'center' ? bodyFontSize / 2 + 1 : bodyFontSize + 2 : 0; // Draw body lines now\n\n      for (i = 0, ilen = body.length; i < ilen; ++i) {\n        bodyItem = body[i];\n        textColor = vm.labelTextColors[i];\n        labelColors = vm.labelColors[i];\n        ctx.fillStyle = textColor;\n        helpers$1.each(bodyItem.before, fillLineOfText);\n        lines = bodyItem.lines;\n\n        for (j = 0, jlen = lines.length; j < jlen; ++j) {\n          // Draw Legend-like boxes if needed\n          if (drawColorBoxes) {\n            var rtlColorX = rtlHelper.x(colorX); // Fill a white rect so that colours merge nicely if the opacity is < 1\n\n            ctx.fillStyle = vm.legendColorBackground;\n            ctx.fillRect(rtlHelper.leftForLtr(rtlColorX, bodyFontSize), pt.y, bodyFontSize, bodyFontSize); // Border\n\n            ctx.lineWidth = 1;\n            ctx.strokeStyle = labelColors.borderColor;\n            ctx.strokeRect(rtlHelper.leftForLtr(rtlColorX, bodyFontSize), pt.y, bodyFontSize, bodyFontSize); // Inner square\n\n            ctx.fillStyle = labelColors.backgroundColor;\n            ctx.fillRect(rtlHelper.leftForLtr(rtlHelper.xPlus(rtlColorX, 1), bodyFontSize - 2), pt.y + 1, bodyFontSize - 2, bodyFontSize - 2);\n            ctx.fillStyle = textColor;\n          }\n\n          fillLineOfText(lines[j]);\n        }\n\n        helpers$1.each(bodyItem.after, fillLineOfText);\n      } // Reset back to 0 for after body\n\n\n      xLinePadding = 0; // After body lines\n\n      helpers$1.each(vm.afterBody, fillLineOfText);\n      pt.y -= bodySpacing; // Remove last body spacing\n    },\n    drawFooter: function drawFooter(pt, vm, ctx) {\n      var footer = vm.footer;\n      var length = footer.length;\n      var footerFontSize, i;\n\n      if (length) {\n        var rtlHelper = getRtlHelper(vm.rtl, vm.x, vm.width);\n        pt.x = getAlignedX(vm, vm._footerAlign);\n        pt.y += vm.footerMarginTop;\n        ctx.textAlign = rtlHelper.textAlign(vm._footerAlign);\n        ctx.textBaseline = 'middle';\n        footerFontSize = vm.footerFontSize;\n        ctx.fillStyle = vm.footerFontColor;\n        ctx.font = helpers$1.fontString(footerFontSize, vm._footerFontStyle, vm._footerFontFamily);\n\n        for (i = 0; i < length; ++i) {\n          ctx.fillText(footer[i], rtlHelper.x(pt.x), pt.y + footerFontSize / 2);\n          pt.y += footerFontSize + vm.footerSpacing;\n        }\n      }\n    },\n    drawBackground: function drawBackground(pt, vm, ctx, tooltipSize) {\n      ctx.fillStyle = vm.backgroundColor;\n      ctx.strokeStyle = vm.borderColor;\n      ctx.lineWidth = vm.borderWidth;\n      var xAlign = vm.xAlign;\n      var yAlign = vm.yAlign;\n      var x = pt.x;\n      var y = pt.y;\n      var width = tooltipSize.width;\n      var height = tooltipSize.height;\n      var radius = vm.cornerRadius;\n      ctx.beginPath();\n      ctx.moveTo(x + radius, y);\n\n      if (yAlign === 'top') {\n        this.drawCaret(pt, tooltipSize);\n      }\n\n      ctx.lineTo(x + width - radius, y);\n      ctx.quadraticCurveTo(x + width, y, x + width, y + radius);\n\n      if (yAlign === 'center' && xAlign === 'right') {\n        this.drawCaret(pt, tooltipSize);\n      }\n\n      ctx.lineTo(x + width, y + height - radius);\n      ctx.quadraticCurveTo(x + width, y + height, x + width - radius, y + height);\n\n      if (yAlign === 'bottom') {\n        this.drawCaret(pt, tooltipSize);\n      }\n\n      ctx.lineTo(x + radius, y + height);\n      ctx.quadraticCurveTo(x, y + height, x, y + height - radius);\n\n      if (yAlign === 'center' && xAlign === 'left') {\n        this.drawCaret(pt, tooltipSize);\n      }\n\n      ctx.lineTo(x, y + radius);\n      ctx.quadraticCurveTo(x, y, x + radius, y);\n      ctx.closePath();\n      ctx.fill();\n\n      if (vm.borderWidth > 0) {\n        ctx.stroke();\n      }\n    },\n    draw: function draw() {\n      var ctx = this._chart.ctx;\n      var vm = this._view;\n\n      if (vm.opacity === 0) {\n        return;\n      }\n\n      var tooltipSize = {\n        width: vm.width,\n        height: vm.height\n      };\n      var pt = {\n        x: vm.x,\n        y: vm.y\n      }; // IE11/Edge does not like very small opacities, so snap to 0\n\n      var opacity = Math.abs(vm.opacity < 1e-3) ? 0 : vm.opacity; // Truthy/falsey value for empty tooltip\n\n      var hasTooltipContent = vm.title.length || vm.beforeBody.length || vm.body.length || vm.afterBody.length || vm.footer.length;\n\n      if (this._options.enabled && hasTooltipContent) {\n        ctx.save();\n        ctx.globalAlpha = opacity; // Draw Background\n\n        this.drawBackground(pt, vm, ctx, tooltipSize); // Draw Title, Body, and Footer\n\n        pt.y += vm.yPadding;\n        helpers$1.rtl.overrideTextDirection(ctx, vm.textDirection); // Titles\n\n        this.drawTitle(pt, vm, ctx); // Body\n\n        this.drawBody(pt, vm, ctx); // Footer\n\n        this.drawFooter(pt, vm, ctx);\n        helpers$1.rtl.restoreTextDirection(ctx, vm.textDirection);\n        ctx.restore();\n      }\n    },\n\n    /**\n     * Handle an event\n     * @private\n     * @param {IEvent} event - The event to handle\n     * @returns {boolean} true if the tooltip changed\n     */\n    handleEvent: function handleEvent(e) {\n      var me = this;\n      var options = me._options;\n      var changed = false;\n      me._lastActive = me._lastActive || []; // Find Active Elements for tooltips\n\n      if (e.type === 'mouseout') {\n        me._active = [];\n      } else {\n        me._active = me._chart.getElementsAtEventForMode(e, options.mode, options);\n\n        if (options.reverse) {\n          me._active.reverse();\n        }\n      } // Remember Last Actives\n\n\n      changed = !helpers$1.arrayEquals(me._active, me._lastActive); // Only handle target event on tooltip change\n\n      if (changed) {\n        me._lastActive = me._active;\n\n        if (options.enabled || options.custom) {\n          me._eventPosition = {\n            x: e.x,\n            y: e.y\n          };\n          me.update(true);\n          me.pivot();\n        }\n      }\n\n      return changed;\n    }\n  });\n  /**\n   * @namespace Chart.Tooltip.positioners\n   */\n\n  var positioners_1 = positioners;\n  var core_tooltip = exports$4;\n  core_tooltip.positioners = positioners_1;\n  var valueOrDefault$9 = helpers$1.valueOrDefault;\n\n  core_defaults._set('global', {\n    elements: {},\n    events: ['mousemove', 'mouseout', 'click', 'touchstart', 'touchmove'],\n    hover: {\n      onHover: null,\n      mode: 'nearest',\n      intersect: true,\n      animationDuration: 400\n    },\n    onClick: null,\n    maintainAspectRatio: true,\n    responsive: true,\n    responsiveAnimationDuration: 0\n  });\n  /**\n   * Recursively merge the given config objects representing the `scales` option\n   * by incorporating scale defaults in `xAxes` and `yAxes` array items, then\n   * returns a deep copy of the result, thus doesn't alter inputs.\n   */\n\n\n  function mergeScaleConfig()\n  /* config objects ... */\n  {\n    return helpers$1.merge({}, [].slice.call(arguments), {\n      merger: function merger(key, target, source, options) {\n        if (key === 'xAxes' || key === 'yAxes') {\n          var slen = source[key].length;\n          var i, type, scale;\n\n          if (!target[key]) {\n            target[key] = [];\n          }\n\n          for (i = 0; i < slen; ++i) {\n            scale = source[key][i];\n            type = valueOrDefault$9(scale.type, key === 'xAxes' ? 'category' : 'linear');\n\n            if (i >= target[key].length) {\n              target[key].push({});\n            }\n\n            if (!target[key][i].type || scale.type && scale.type !== target[key][i].type) {\n              // new/untyped scale or type changed: let's apply the new defaults\n              // then merge source scale to correctly overwrite the defaults.\n              helpers$1.merge(target[key][i], [core_scaleService.getScaleDefaults(type), scale]);\n            } else {\n              // scales type are the same\n              helpers$1.merge(target[key][i], scale);\n            }\n          }\n        } else {\n          helpers$1._merger(key, target, source, options);\n        }\n      }\n    });\n  }\n  /**\n   * Recursively merge the given config objects as the root options by handling\n   * default scale options for the `scales` and `scale` properties, then returns\n   * a deep copy of the result, thus doesn't alter inputs.\n   */\n\n\n  function mergeConfig()\n  /* config objects ... */\n  {\n    return helpers$1.merge({}, [].slice.call(arguments), {\n      merger: function merger(key, target, source, options) {\n        var tval = target[key] || {};\n        var sval = source[key];\n\n        if (key === 'scales') {\n          // scale config merging is complex. Add our own function here for that\n          target[key] = mergeScaleConfig(tval, sval);\n        } else if (key === 'scale') {\n          // used in polar area & radar charts since there is only one scale\n          target[key] = helpers$1.merge(tval, [core_scaleService.getScaleDefaults(sval.type), sval]);\n        } else {\n          helpers$1._merger(key, target, source, options);\n        }\n      }\n    });\n  }\n\n  function initConfig(config) {\n    config = config || {}; // Do NOT use mergeConfig for the data object because this method merges arrays\n    // and so would change references to labels and datasets, preventing data updates.\n\n    var data = config.data = config.data || {};\n    data.datasets = data.datasets || [];\n    data.labels = data.labels || [];\n    config.options = mergeConfig(core_defaults.global, core_defaults[config.type], config.options || {});\n    return config;\n  }\n\n  function updateConfig(chart) {\n    var newOptions = chart.options;\n    helpers$1.each(chart.scales, function (scale) {\n      core_layouts.removeBox(chart, scale);\n    });\n    newOptions = mergeConfig(core_defaults.global, core_defaults[chart.config.type], newOptions);\n    chart.options = chart.config.options = newOptions;\n    chart.ensureScalesHaveIDs();\n    chart.buildOrUpdateScales(); // Tooltip\n\n    chart.tooltip._options = newOptions.tooltips;\n    chart.tooltip.initialize();\n  }\n\n  function nextAvailableScaleId(axesOpts, prefix, index) {\n    var id;\n\n    var hasId = function hasId(obj) {\n      return obj.id === id;\n    };\n\n    do {\n      id = prefix + index++;\n    } while (helpers$1.findIndex(axesOpts, hasId) >= 0);\n\n    return id;\n  }\n\n  function positionIsHorizontal(position) {\n    return position === 'top' || position === 'bottom';\n  }\n\n  function compare2Level(l1, l2) {\n    return function (a, b) {\n      return a[l1] === b[l1] ? a[l2] - b[l2] : a[l1] - b[l1];\n    };\n  }\n\n  var Chart = function Chart(item, config) {\n    this.construct(item, config);\n    return this;\n  };\n\n  helpers$1.extend(Chart.prototype,\n  /** @lends Chart */\n  {\n    /**\n     * @private\n     */\n    construct: function construct(item, config) {\n      var me = this;\n      config = initConfig(config);\n      var context = platform.acquireContext(item, config);\n      var canvas = context && context.canvas;\n      var height = canvas && canvas.height;\n      var width = canvas && canvas.width;\n      me.id = helpers$1.uid();\n      me.ctx = context;\n      me.canvas = canvas;\n      me.config = config;\n      me.width = width;\n      me.height = height;\n      me.aspectRatio = height ? width / height : null;\n      me.options = config.options;\n      me._bufferedRender = false;\n      me._layers = [];\n      /**\n       * Provided for backward compatibility, Chart and Chart.Controller have been merged,\n       * the \"instance\" still need to be defined since it might be called from plugins.\n       * @prop Chart#chart\n       * @deprecated since version 2.6.0\n       * @todo remove at version 3\n       * @private\n       */\n\n      me.chart = me;\n      me.controller = me; // chart.chart.controller #inception\n      // Add the chart instance to the global namespace\n\n      Chart.instances[me.id] = me; // Define alias to the config data: `chart.data === chart.config.data`\n\n      Object.defineProperty(me, 'data', {\n        get: function get() {\n          return me.config.data;\n        },\n        set: function set(value) {\n          me.config.data = value;\n        }\n      });\n\n      if (!context || !canvas) {\n        // The given item is not a compatible context2d element, let's return before finalizing\n        // the chart initialization but after setting basic chart / controller properties that\n        // can help to figure out that the chart is not valid (e.g chart.canvas !== null);\n        // https://github.com/chartjs/Chart.js/issues/2807\n        console.error(\"Failed to create chart: can't acquire context from the given item\");\n        return;\n      }\n\n      me.initialize();\n      me.update();\n    },\n\n    /**\n     * @private\n     */\n    initialize: function initialize() {\n      var me = this; // Before init plugin notification\n\n      core_plugins.notify(me, 'beforeInit');\n      helpers$1.retinaScale(me, me.options.devicePixelRatio);\n      me.bindEvents();\n\n      if (me.options.responsive) {\n        // Initial resize before chart draws (must be silent to preserve initial animations).\n        me.resize(true);\n      }\n\n      me.initToolTip(); // After init plugin notification\n\n      core_plugins.notify(me, 'afterInit');\n      return me;\n    },\n    clear: function clear() {\n      helpers$1.canvas.clear(this);\n      return this;\n    },\n    stop: function stop() {\n      // Stops any current animation loop occurring\n      core_animations.cancelAnimation(this);\n      return this;\n    },\n    resize: function resize(silent) {\n      var me = this;\n      var options = me.options;\n      var canvas = me.canvas;\n      var aspectRatio = options.maintainAspectRatio && me.aspectRatio || null; // the canvas render width and height will be casted to integers so make sure that\n      // the canvas display style uses the same integer values to avoid blurring effect.\n      // Set to 0 instead of canvas.size because the size defaults to 300x150 if the element is collapsed\n\n      var newWidth = Math.max(0, Math.floor(helpers$1.getMaximumWidth(canvas)));\n      var newHeight = Math.max(0, Math.floor(aspectRatio ? newWidth / aspectRatio : helpers$1.getMaximumHeight(canvas)));\n\n      if (me.width === newWidth && me.height === newHeight) {\n        return;\n      }\n\n      canvas.width = me.width = newWidth;\n      canvas.height = me.height = newHeight;\n      canvas.style.width = newWidth + 'px';\n      canvas.style.height = newHeight + 'px';\n      helpers$1.retinaScale(me, options.devicePixelRatio);\n\n      if (!silent) {\n        // Notify any plugins about the resize\n        var newSize = {\n          width: newWidth,\n          height: newHeight\n        };\n        core_plugins.notify(me, 'resize', [newSize]); // Notify of resize\n\n        if (options.onResize) {\n          options.onResize(me, newSize);\n        }\n\n        me.stop();\n        me.update({\n          duration: options.responsiveAnimationDuration\n        });\n      }\n    },\n    ensureScalesHaveIDs: function ensureScalesHaveIDs() {\n      var options = this.options;\n      var scalesOptions = options.scales || {};\n      var scaleOptions = options.scale;\n      helpers$1.each(scalesOptions.xAxes, function (xAxisOptions, index) {\n        if (!xAxisOptions.id) {\n          xAxisOptions.id = nextAvailableScaleId(scalesOptions.xAxes, 'x-axis-', index);\n        }\n      });\n      helpers$1.each(scalesOptions.yAxes, function (yAxisOptions, index) {\n        if (!yAxisOptions.id) {\n          yAxisOptions.id = nextAvailableScaleId(scalesOptions.yAxes, 'y-axis-', index);\n        }\n      });\n\n      if (scaleOptions) {\n        scaleOptions.id = scaleOptions.id || 'scale';\n      }\n    },\n\n    /**\n     * Builds a map of scale ID to scale object for future lookup.\n     */\n    buildOrUpdateScales: function buildOrUpdateScales() {\n      var me = this;\n      var options = me.options;\n      var scales = me.scales || {};\n      var items = [];\n      var updated = Object.keys(scales).reduce(function (obj, id) {\n        obj[id] = false;\n        return obj;\n      }, {});\n\n      if (options.scales) {\n        items = items.concat((options.scales.xAxes || []).map(function (xAxisOptions) {\n          return {\n            options: xAxisOptions,\n            dtype: 'category',\n            dposition: 'bottom'\n          };\n        }), (options.scales.yAxes || []).map(function (yAxisOptions) {\n          return {\n            options: yAxisOptions,\n            dtype: 'linear',\n            dposition: 'left'\n          };\n        }));\n      }\n\n      if (options.scale) {\n        items.push({\n          options: options.scale,\n          dtype: 'radialLinear',\n          isDefault: true,\n          dposition: 'chartArea'\n        });\n      }\n\n      helpers$1.each(items, function (item) {\n        var scaleOptions = item.options;\n        var id = scaleOptions.id;\n        var scaleType = valueOrDefault$9(scaleOptions.type, item.dtype);\n\n        if (positionIsHorizontal(scaleOptions.position) !== positionIsHorizontal(item.dposition)) {\n          scaleOptions.position = item.dposition;\n        }\n\n        updated[id] = true;\n        var scale = null;\n\n        if (id in scales && scales[id].type === scaleType) {\n          scale = scales[id];\n          scale.options = scaleOptions;\n          scale.ctx = me.ctx;\n          scale.chart = me;\n        } else {\n          var scaleClass = core_scaleService.getScaleConstructor(scaleType);\n\n          if (!scaleClass) {\n            return;\n          }\n\n          scale = new scaleClass({\n            id: id,\n            type: scaleType,\n            options: scaleOptions,\n            ctx: me.ctx,\n            chart: me\n          });\n          scales[scale.id] = scale;\n        }\n\n        scale.mergeTicksOptions(); // TODO(SB): I think we should be able to remove this custom case (options.scale)\n        // and consider it as a regular scale part of the \"scales\"\" map only! This would\n        // make the logic easier and remove some useless? custom code.\n\n        if (item.isDefault) {\n          me.scale = scale;\n        }\n      }); // clear up discarded scales\n\n      helpers$1.each(updated, function (hasUpdated, id) {\n        if (!hasUpdated) {\n          delete scales[id];\n        }\n      });\n      me.scales = scales;\n      core_scaleService.addScalesToLayout(this);\n    },\n    buildOrUpdateControllers: function buildOrUpdateControllers() {\n      var me = this;\n      var newControllers = [];\n      var datasets = me.data.datasets;\n      var i, ilen;\n\n      for (i = 0, ilen = datasets.length; i < ilen; i++) {\n        var dataset = datasets[i];\n        var meta = me.getDatasetMeta(i);\n        var type = dataset.type || me.config.type;\n\n        if (meta.type && meta.type !== type) {\n          me.destroyDatasetMeta(i);\n          meta = me.getDatasetMeta(i);\n        }\n\n        meta.type = type;\n        meta.order = dataset.order || 0;\n        meta.index = i;\n\n        if (meta.controller) {\n          meta.controller.updateIndex(i);\n          meta.controller.linkScales();\n        } else {\n          var ControllerClass = controllers[meta.type];\n\n          if (ControllerClass === undefined) {\n            throw new Error('\"' + meta.type + '\" is not a chart type.');\n          }\n\n          meta.controller = new ControllerClass(me, i);\n          newControllers.push(meta.controller);\n        }\n      }\n\n      return newControllers;\n    },\n\n    /**\n     * Reset the elements of all datasets\n     * @private\n     */\n    resetElements: function resetElements() {\n      var me = this;\n      helpers$1.each(me.data.datasets, function (dataset, datasetIndex) {\n        me.getDatasetMeta(datasetIndex).controller.reset();\n      }, me);\n    },\n\n    /**\n    * Resets the chart back to it's state before the initial animation\n    */\n    reset: function reset() {\n      this.resetElements();\n      this.tooltip.initialize();\n    },\n    update: function update(config) {\n      var me = this;\n      var i, ilen;\n\n      if (!config || typeof config !== 'object') {\n        // backwards compatibility\n        config = {\n          duration: config,\n          lazy: arguments[1]\n        };\n      }\n\n      updateConfig(me); // plugins options references might have change, let's invalidate the cache\n      // https://github.com/chartjs/Chart.js/issues/5111#issuecomment-355934167\n\n      core_plugins._invalidate(me);\n\n      if (core_plugins.notify(me, 'beforeUpdate') === false) {\n        return;\n      } // In case the entire data object changed\n\n\n      me.tooltip._data = me.data; // Make sure dataset controllers are updated and new controllers are reset\n\n      var newControllers = me.buildOrUpdateControllers(); // Make sure all dataset controllers have correct meta data counts\n\n      for (i = 0, ilen = me.data.datasets.length; i < ilen; i++) {\n        me.getDatasetMeta(i).controller.buildOrUpdateElements();\n      }\n\n      me.updateLayout(); // Can only reset the new controllers after the scales have been updated\n\n      if (me.options.animation && me.options.animation.duration) {\n        helpers$1.each(newControllers, function (controller) {\n          controller.reset();\n        });\n      }\n\n      me.updateDatasets(); // Need to reset tooltip in case it is displayed with elements that are removed\n      // after update.\n\n      me.tooltip.initialize(); // Last active contains items that were previously in the tooltip.\n      // When we reset the tooltip, we need to clear it\n\n      me.lastActive = []; // Do this before render so that any plugins that need final scale updates can use it\n\n      core_plugins.notify(me, 'afterUpdate');\n\n      me._layers.sort(compare2Level('z', '_idx'));\n\n      if (me._bufferedRender) {\n        me._bufferedRequest = {\n          duration: config.duration,\n          easing: config.easing,\n          lazy: config.lazy\n        };\n      } else {\n        me.render(config);\n      }\n    },\n\n    /**\n     * Updates the chart layout unless a plugin returns `false` to the `beforeLayout`\n     * hook, in which case, plugins will not be called on `afterLayout`.\n     * @private\n     */\n    updateLayout: function updateLayout() {\n      var me = this;\n\n      if (core_plugins.notify(me, 'beforeLayout') === false) {\n        return;\n      }\n\n      core_layouts.update(this, this.width, this.height);\n      me._layers = [];\n      helpers$1.each(me.boxes, function (box) {\n        // _configure is called twice, once in core.scale.update and once here.\n        // Here the boxes are fully updated and at their final positions.\n        if (box._configure) {\n          box._configure();\n        }\n\n        me._layers.push.apply(me._layers, box._layers());\n      }, me);\n\n      me._layers.forEach(function (item, index) {\n        item._idx = index;\n      });\n      /**\n       * Provided for backward compatibility, use `afterLayout` instead.\n       * @method IPlugin#afterScaleUpdate\n       * @deprecated since version 2.5.0\n       * @todo remove at version 3\n       * @private\n       */\n\n\n      core_plugins.notify(me, 'afterScaleUpdate');\n      core_plugins.notify(me, 'afterLayout');\n    },\n\n    /**\n     * Updates all datasets unless a plugin returns `false` to the `beforeDatasetsUpdate`\n     * hook, in which case, plugins will not be called on `afterDatasetsUpdate`.\n     * @private\n     */\n    updateDatasets: function updateDatasets() {\n      var me = this;\n\n      if (core_plugins.notify(me, 'beforeDatasetsUpdate') === false) {\n        return;\n      }\n\n      for (var i = 0, ilen = me.data.datasets.length; i < ilen; ++i) {\n        me.updateDataset(i);\n      }\n\n      core_plugins.notify(me, 'afterDatasetsUpdate');\n    },\n\n    /**\n     * Updates dataset at index unless a plugin returns `false` to the `beforeDatasetUpdate`\n     * hook, in which case, plugins will not be called on `afterDatasetUpdate`.\n     * @private\n     */\n    updateDataset: function updateDataset(index) {\n      var me = this;\n      var meta = me.getDatasetMeta(index);\n      var args = {\n        meta: meta,\n        index: index\n      };\n\n      if (core_plugins.notify(me, 'beforeDatasetUpdate', [args]) === false) {\n        return;\n      }\n\n      meta.controller._update();\n\n      core_plugins.notify(me, 'afterDatasetUpdate', [args]);\n    },\n    render: function render(config) {\n      var me = this;\n\n      if (!config || typeof config !== 'object') {\n        // backwards compatibility\n        config = {\n          duration: config,\n          lazy: arguments[1]\n        };\n      }\n\n      var animationOptions = me.options.animation;\n      var duration = valueOrDefault$9(config.duration, animationOptions && animationOptions.duration);\n      var lazy = config.lazy;\n\n      if (core_plugins.notify(me, 'beforeRender') === false) {\n        return;\n      }\n\n      var onComplete = function onComplete(animation) {\n        core_plugins.notify(me, 'afterRender');\n        helpers$1.callback(animationOptions && animationOptions.onComplete, [animation], me);\n      };\n\n      if (animationOptions && duration) {\n        var animation = new core_animation({\n          numSteps: duration / 16.66,\n          // 60 fps\n          easing: config.easing || animationOptions.easing,\n          render: function render(chart, animationObject) {\n            var easingFunction = helpers$1.easing.effects[animationObject.easing];\n            var currentStep = animationObject.currentStep;\n            var stepDecimal = currentStep / animationObject.numSteps;\n            chart.draw(easingFunction(stepDecimal), stepDecimal, currentStep);\n          },\n          onAnimationProgress: animationOptions.onProgress,\n          onAnimationComplete: onComplete\n        });\n        core_animations.addAnimation(me, animation, duration, lazy);\n      } else {\n        me.draw(); // See https://github.com/chartjs/Chart.js/issues/3781\n\n        onComplete(new core_animation({\n          numSteps: 0,\n          chart: me\n        }));\n      }\n\n      return me;\n    },\n    draw: function draw(easingValue) {\n      var me = this;\n      var i, layers;\n      me.clear();\n\n      if (helpers$1.isNullOrUndef(easingValue)) {\n        easingValue = 1;\n      }\n\n      me.transition(easingValue);\n\n      if (me.width <= 0 || me.height <= 0) {\n        return;\n      }\n\n      if (core_plugins.notify(me, 'beforeDraw', [easingValue]) === false) {\n        return;\n      } // Because of plugin hooks (before/afterDatasetsDraw), datasets can't\n      // currently be part of layers. Instead, we draw\n      // layers <= 0 before(default, backward compat), and the rest after\n\n\n      layers = me._layers;\n\n      for (i = 0; i < layers.length && layers[i].z <= 0; ++i) {\n        layers[i].draw(me.chartArea);\n      }\n\n      me.drawDatasets(easingValue); // Rest of layers\n\n      for (; i < layers.length; ++i) {\n        layers[i].draw(me.chartArea);\n      }\n\n      me._drawTooltip(easingValue);\n\n      core_plugins.notify(me, 'afterDraw', [easingValue]);\n    },\n\n    /**\n     * @private\n     */\n    transition: function transition(easingValue) {\n      var me = this;\n\n      for (var i = 0, ilen = (me.data.datasets || []).length; i < ilen; ++i) {\n        if (me.isDatasetVisible(i)) {\n          me.getDatasetMeta(i).controller.transition(easingValue);\n        }\n      }\n\n      me.tooltip.transition(easingValue);\n    },\n\n    /**\n     * @private\n     */\n    _getSortedDatasetMetas: function _getSortedDatasetMetas(filterVisible) {\n      var me = this;\n      var datasets = me.data.datasets || [];\n      var result = [];\n      var i, ilen;\n\n      for (i = 0, ilen = datasets.length; i < ilen; ++i) {\n        if (!filterVisible || me.isDatasetVisible(i)) {\n          result.push(me.getDatasetMeta(i));\n        }\n      }\n\n      result.sort(compare2Level('order', 'index'));\n      return result;\n    },\n\n    /**\n     * @private\n     */\n    _getSortedVisibleDatasetMetas: function _getSortedVisibleDatasetMetas() {\n      return this._getSortedDatasetMetas(true);\n    },\n\n    /**\n     * Draws all datasets unless a plugin returns `false` to the `beforeDatasetsDraw`\n     * hook, in which case, plugins will not be called on `afterDatasetsDraw`.\n     * @private\n     */\n    drawDatasets: function drawDatasets(easingValue) {\n      var me = this;\n      var metasets, i;\n\n      if (core_plugins.notify(me, 'beforeDatasetsDraw', [easingValue]) === false) {\n        return;\n      }\n\n      metasets = me._getSortedVisibleDatasetMetas();\n\n      for (i = metasets.length - 1; i >= 0; --i) {\n        me.drawDataset(metasets[i], easingValue);\n      }\n\n      core_plugins.notify(me, 'afterDatasetsDraw', [easingValue]);\n    },\n\n    /**\n     * Draws dataset at index unless a plugin returns `false` to the `beforeDatasetDraw`\n     * hook, in which case, plugins will not be called on `afterDatasetDraw`.\n     * @private\n     */\n    drawDataset: function drawDataset(meta, easingValue) {\n      var me = this;\n      var args = {\n        meta: meta,\n        index: meta.index,\n        easingValue: easingValue\n      };\n\n      if (core_plugins.notify(me, 'beforeDatasetDraw', [args]) === false) {\n        return;\n      }\n\n      meta.controller.draw(easingValue);\n      core_plugins.notify(me, 'afterDatasetDraw', [args]);\n    },\n\n    /**\n     * Draws tooltip unless a plugin returns `false` to the `beforeTooltipDraw`\n     * hook, in which case, plugins will not be called on `afterTooltipDraw`.\n     * @private\n     */\n    _drawTooltip: function _drawTooltip(easingValue) {\n      var me = this;\n      var tooltip = me.tooltip;\n      var args = {\n        tooltip: tooltip,\n        easingValue: easingValue\n      };\n\n      if (core_plugins.notify(me, 'beforeTooltipDraw', [args]) === false) {\n        return;\n      }\n\n      tooltip.draw();\n      core_plugins.notify(me, 'afterTooltipDraw', [args]);\n    },\n\n    /**\n     * Get the single element that was clicked on\n     * @return An object containing the dataset index and element index of the matching element. Also contains the rectangle that was draw\n     */\n    getElementAtEvent: function getElementAtEvent(e) {\n      return core_interaction.modes.single(this, e);\n    },\n    getElementsAtEvent: function getElementsAtEvent(e) {\n      return core_interaction.modes.label(this, e, {\n        intersect: true\n      });\n    },\n    getElementsAtXAxis: function getElementsAtXAxis(e) {\n      return core_interaction.modes['x-axis'](this, e, {\n        intersect: true\n      });\n    },\n    getElementsAtEventForMode: function getElementsAtEventForMode(e, mode, options) {\n      var method = core_interaction.modes[mode];\n\n      if (typeof method === 'function') {\n        return method(this, e, options);\n      }\n\n      return [];\n    },\n    getDatasetAtEvent: function getDatasetAtEvent(e) {\n      return core_interaction.modes.dataset(this, e, {\n        intersect: true\n      });\n    },\n    getDatasetMeta: function getDatasetMeta(datasetIndex) {\n      var me = this;\n      var dataset = me.data.datasets[datasetIndex];\n\n      if (!dataset._meta) {\n        dataset._meta = {};\n      }\n\n      var meta = dataset._meta[me.id];\n\n      if (!meta) {\n        meta = dataset._meta[me.id] = {\n          type: null,\n          data: [],\n          dataset: null,\n          controller: null,\n          hidden: null,\n          // See isDatasetVisible() comment\n          xAxisID: null,\n          yAxisID: null,\n          order: dataset.order || 0,\n          index: datasetIndex\n        };\n      }\n\n      return meta;\n    },\n    getVisibleDatasetCount: function getVisibleDatasetCount() {\n      var count = 0;\n\n      for (var i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n        if (this.isDatasetVisible(i)) {\n          count++;\n        }\n      }\n\n      return count;\n    },\n    isDatasetVisible: function isDatasetVisible(datasetIndex) {\n      var meta = this.getDatasetMeta(datasetIndex); // meta.hidden is a per chart dataset hidden flag override with 3 states: if true or false,\n      // the dataset.hidden value is ignored, else if null, the dataset hidden state is returned.\n\n      return typeof meta.hidden === 'boolean' ? !meta.hidden : !this.data.datasets[datasetIndex].hidden;\n    },\n    generateLegend: function generateLegend() {\n      return this.options.legendCallback(this);\n    },\n\n    /**\n     * @private\n     */\n    destroyDatasetMeta: function destroyDatasetMeta(datasetIndex) {\n      var id = this.id;\n      var dataset = this.data.datasets[datasetIndex];\n      var meta = dataset._meta && dataset._meta[id];\n\n      if (meta) {\n        meta.controller.destroy();\n        delete dataset._meta[id];\n      }\n    },\n    destroy: function destroy() {\n      var me = this;\n      var canvas = me.canvas;\n      var i, ilen;\n      me.stop(); // dataset controllers need to cleanup associated data\n\n      for (i = 0, ilen = me.data.datasets.length; i < ilen; ++i) {\n        me.destroyDatasetMeta(i);\n      }\n\n      if (canvas) {\n        me.unbindEvents();\n        helpers$1.canvas.clear(me);\n        platform.releaseContext(me.ctx);\n        me.canvas = null;\n        me.ctx = null;\n      }\n\n      core_plugins.notify(me, 'destroy');\n      delete Chart.instances[me.id];\n    },\n    toBase64Image: function toBase64Image() {\n      return this.canvas.toDataURL.apply(this.canvas, arguments);\n    },\n    initToolTip: function initToolTip() {\n      var me = this;\n      me.tooltip = new core_tooltip({\n        _chart: me,\n        _chartInstance: me,\n        // deprecated, backward compatibility\n        _data: me.data,\n        _options: me.options.tooltips\n      }, me);\n    },\n\n    /**\n     * @private\n     */\n    bindEvents: function bindEvents() {\n      var me = this;\n      var listeners = me._listeners = {};\n\n      var listener = function listener() {\n        me.eventHandler.apply(me, arguments);\n      };\n\n      helpers$1.each(me.options.events, function (type) {\n        platform.addEventListener(me, type, listener);\n        listeners[type] = listener;\n      }); // Elements used to detect size change should not be injected for non responsive charts.\n      // See https://github.com/chartjs/Chart.js/issues/2210\n\n      if (me.options.responsive) {\n        listener = function listener() {\n          me.resize();\n        };\n\n        platform.addEventListener(me, 'resize', listener);\n        listeners.resize = listener;\n      }\n    },\n\n    /**\n     * @private\n     */\n    unbindEvents: function unbindEvents() {\n      var me = this;\n      var listeners = me._listeners;\n\n      if (!listeners) {\n        return;\n      }\n\n      delete me._listeners;\n      helpers$1.each(listeners, function (listener, type) {\n        platform.removeEventListener(me, type, listener);\n      });\n    },\n    updateHoverStyle: function updateHoverStyle(elements, mode, enabled) {\n      var prefix = enabled ? 'set' : 'remove';\n      var element, i, ilen;\n\n      for (i = 0, ilen = elements.length; i < ilen; ++i) {\n        element = elements[i];\n\n        if (element) {\n          this.getDatasetMeta(element._datasetIndex).controller[prefix + 'HoverStyle'](element);\n        }\n      }\n\n      if (mode === 'dataset') {\n        this.getDatasetMeta(elements[0]._datasetIndex).controller['_' + prefix + 'DatasetHoverStyle']();\n      }\n    },\n\n    /**\n     * @private\n     */\n    eventHandler: function eventHandler(e) {\n      var me = this;\n      var tooltip = me.tooltip;\n\n      if (core_plugins.notify(me, 'beforeEvent', [e]) === false) {\n        return;\n      } // Buffer any update calls so that renders do not occur\n\n\n      me._bufferedRender = true;\n      me._bufferedRequest = null;\n      var changed = me.handleEvent(e); // for smooth tooltip animations issue #4989\n      // the tooltip should be the source of change\n      // Animation check workaround:\n      // tooltip._start will be null when tooltip isn't animating\n\n      if (tooltip) {\n        changed = tooltip._start ? tooltip.handleEvent(e) : changed | tooltip.handleEvent(e);\n      }\n\n      core_plugins.notify(me, 'afterEvent', [e]);\n      var bufferedRequest = me._bufferedRequest;\n\n      if (bufferedRequest) {\n        // If we have an update that was triggered, we need to do a normal render\n        me.render(bufferedRequest);\n      } else if (changed && !me.animating) {\n        // If entering, leaving, or changing elements, animate the change via pivot\n        me.stop(); // We only need to render at this point. Updating will cause scales to be\n        // recomputed generating flicker & using more memory than necessary.\n\n        me.render({\n          duration: me.options.hover.animationDuration,\n          lazy: true\n        });\n      }\n\n      me._bufferedRender = false;\n      me._bufferedRequest = null;\n      return me;\n    },\n\n    /**\n     * Handle an event\n     * @private\n     * @param {IEvent} event the event to handle\n     * @return {boolean} true if the chart needs to re-render\n     */\n    handleEvent: function handleEvent(e) {\n      var me = this;\n      var options = me.options || {};\n      var hoverOptions = options.hover;\n      var changed = false;\n      me.lastActive = me.lastActive || []; // Find Active Elements for hover and tooltips\n\n      if (e.type === 'mouseout') {\n        me.active = [];\n      } else {\n        me.active = me.getElementsAtEventForMode(e, hoverOptions.mode, hoverOptions);\n      } // Invoke onHover hook\n      // Need to call with native event here to not break backwards compatibility\n\n\n      helpers$1.callback(options.onHover || options.hover.onHover, [e[\"native\"], me.active], me);\n\n      if (e.type === 'mouseup' || e.type === 'click') {\n        if (options.onClick) {\n          // Use e.native here for backwards compatibility\n          options.onClick.call(me, e[\"native\"], me.active);\n        }\n      } // Remove styling for last active (even if it may still be active)\n\n\n      if (me.lastActive.length) {\n        me.updateHoverStyle(me.lastActive, hoverOptions.mode, false);\n      } // Built in hover styling\n\n\n      if (me.active.length && hoverOptions.mode) {\n        me.updateHoverStyle(me.active, hoverOptions.mode, true);\n      }\n\n      changed = !helpers$1.arrayEquals(me.active, me.lastActive); // Remember Last Actives\n\n      me.lastActive = me.active;\n      return changed;\n    }\n  });\n  /**\n   * NOTE(SB) We actually don't use this container anymore but we need to keep it\n   * for backward compatibility. Though, it can still be useful for plugins that\n   * would need to work on multiple charts?!\n   */\n\n  Chart.instances = {};\n  var core_controller = Chart; // DEPRECATIONS\n\n  /**\n   * Provided for backward compatibility, use Chart instead.\n   * @class Chart.Controller\n   * @deprecated since version 2.6\n   * @todo remove at version 3\n   * @private\n   */\n\n  Chart.Controller = Chart;\n  /**\n   * Provided for backward compatibility, not available anymore.\n   * @namespace Chart\n   * @deprecated since version 2.8\n   * @todo remove at version 3\n   * @private\n   */\n\n  Chart.types = {};\n  /**\n   * Provided for backward compatibility, not available anymore.\n   * @namespace Chart.helpers.configMerge\n   * @deprecated since version 2.8.0\n   * @todo remove at version 3\n   * @private\n   */\n\n  helpers$1.configMerge = mergeConfig;\n  /**\n   * Provided for backward compatibility, not available anymore.\n   * @namespace Chart.helpers.scaleMerge\n   * @deprecated since version 2.8.0\n   * @todo remove at version 3\n   * @private\n   */\n\n  helpers$1.scaleMerge = mergeScaleConfig;\n\n  var core_helpers = function core_helpers() {\n    // -- Basic js utility methods\n    helpers$1.where = function (collection, filterCallback) {\n      if (helpers$1.isArray(collection) && Array.prototype.filter) {\n        return collection.filter(filterCallback);\n      }\n\n      var filtered = [];\n      helpers$1.each(collection, function (item) {\n        if (filterCallback(item)) {\n          filtered.push(item);\n        }\n      });\n      return filtered;\n    };\n\n    helpers$1.findIndex = Array.prototype.findIndex ? function (array, callback, scope) {\n      return array.findIndex(callback, scope);\n    } : function (array, callback, scope) {\n      scope = scope === undefined ? array : scope;\n\n      for (var i = 0, ilen = array.length; i < ilen; ++i) {\n        if (callback.call(scope, array[i], i, array)) {\n          return i;\n        }\n      }\n\n      return -1;\n    };\n\n    helpers$1.findNextWhere = function (arrayToSearch, filterCallback, startIndex) {\n      // Default to start of the array\n      if (helpers$1.isNullOrUndef(startIndex)) {\n        startIndex = -1;\n      }\n\n      for (var i = startIndex + 1; i < arrayToSearch.length; i++) {\n        var currentItem = arrayToSearch[i];\n\n        if (filterCallback(currentItem)) {\n          return currentItem;\n        }\n      }\n    };\n\n    helpers$1.findPreviousWhere = function (arrayToSearch, filterCallback, startIndex) {\n      // Default to end of the array\n      if (helpers$1.isNullOrUndef(startIndex)) {\n        startIndex = arrayToSearch.length;\n      }\n\n      for (var i = startIndex - 1; i >= 0; i--) {\n        var currentItem = arrayToSearch[i];\n\n        if (filterCallback(currentItem)) {\n          return currentItem;\n        }\n      }\n    }; // -- Math methods\n\n\n    helpers$1.isNumber = function (n) {\n      return !isNaN(parseFloat(n)) && isFinite(n);\n    };\n\n    helpers$1.almostEquals = function (x, y, epsilon) {\n      return Math.abs(x - y) < epsilon;\n    };\n\n    helpers$1.almostWhole = function (x, epsilon) {\n      var rounded = Math.round(x);\n      return rounded - epsilon <= x && rounded + epsilon >= x;\n    };\n\n    helpers$1.max = function (array) {\n      return array.reduce(function (max, value) {\n        if (!isNaN(value)) {\n          return Math.max(max, value);\n        }\n\n        return max;\n      }, Number.NEGATIVE_INFINITY);\n    };\n\n    helpers$1.min = function (array) {\n      return array.reduce(function (min, value) {\n        if (!isNaN(value)) {\n          return Math.min(min, value);\n        }\n\n        return min;\n      }, Number.POSITIVE_INFINITY);\n    };\n\n    helpers$1.sign = Math.sign ? function (x) {\n      return Math.sign(x);\n    } : function (x) {\n      x = +x; // convert to a number\n\n      if (x === 0 || isNaN(x)) {\n        return x;\n      }\n\n      return x > 0 ? 1 : -1;\n    };\n\n    helpers$1.toRadians = function (degrees) {\n      return degrees * (Math.PI / 180);\n    };\n\n    helpers$1.toDegrees = function (radians) {\n      return radians * (180 / Math.PI);\n    };\n    /**\n     * Returns the number of decimal places\n     * i.e. the number of digits after the decimal point, of the value of this Number.\n     * @param {number} x - A number.\n     * @returns {number} The number of decimal places.\n     * @private\n     */\n\n\n    helpers$1._decimalPlaces = function (x) {\n      if (!helpers$1.isFinite(x)) {\n        return;\n      }\n\n      var e = 1;\n      var p = 0;\n\n      while (Math.round(x * e) / e !== x) {\n        e *= 10;\n        p++;\n      }\n\n      return p;\n    }; // Gets the angle from vertical upright to the point about a centre.\n\n\n    helpers$1.getAngleFromPoint = function (centrePoint, anglePoint) {\n      var distanceFromXCenter = anglePoint.x - centrePoint.x;\n      var distanceFromYCenter = anglePoint.y - centrePoint.y;\n      var radialDistanceFromCenter = Math.sqrt(distanceFromXCenter * distanceFromXCenter + distanceFromYCenter * distanceFromYCenter);\n      var angle = Math.atan2(distanceFromYCenter, distanceFromXCenter);\n\n      if (angle < -0.5 * Math.PI) {\n        angle += 2.0 * Math.PI; // make sure the returned angle is in the range of (-PI/2, 3PI/2]\n      }\n\n      return {\n        angle: angle,\n        distance: radialDistanceFromCenter\n      };\n    };\n\n    helpers$1.distanceBetweenPoints = function (pt1, pt2) {\n      return Math.sqrt(Math.pow(pt2.x - pt1.x, 2) + Math.pow(pt2.y - pt1.y, 2));\n    };\n    /**\n     * Provided for backward compatibility, not available anymore\n     * @function Chart.helpers.aliasPixel\n     * @deprecated since version 2.8.0\n     * @todo remove at version 3\n     */\n\n\n    helpers$1.aliasPixel = function (pixelWidth) {\n      return pixelWidth % 2 === 0 ? 0 : 0.5;\n    };\n    /**\n     * Returns the aligned pixel value to avoid anti-aliasing blur\n     * @param {Chart} chart - The chart instance.\n     * @param {number} pixel - A pixel value.\n     * @param {number} width - The width of the element.\n     * @returns {number} The aligned pixel value.\n     * @private\n     */\n\n\n    helpers$1._alignPixel = function (chart, pixel, width) {\n      var devicePixelRatio = chart.currentDevicePixelRatio;\n      var halfWidth = width / 2;\n      return Math.round((pixel - halfWidth) * devicePixelRatio) / devicePixelRatio + halfWidth;\n    };\n\n    helpers$1.splineCurve = function (firstPoint, middlePoint, afterPoint, t) {\n      // Props to Rob Spencer at scaled innovation for his post on splining between points\n      // http://scaledinnovation.com/analytics/splines/aboutSplines.html\n      // This function must also respect \"skipped\" points\n      var previous = firstPoint.skip ? middlePoint : firstPoint;\n      var current = middlePoint;\n      var next = afterPoint.skip ? middlePoint : afterPoint;\n      var d01 = Math.sqrt(Math.pow(current.x - previous.x, 2) + Math.pow(current.y - previous.y, 2));\n      var d12 = Math.sqrt(Math.pow(next.x - current.x, 2) + Math.pow(next.y - current.y, 2));\n      var s01 = d01 / (d01 + d12);\n      var s12 = d12 / (d01 + d12); // If all points are the same, s01 & s02 will be inf\n\n      s01 = isNaN(s01) ? 0 : s01;\n      s12 = isNaN(s12) ? 0 : s12;\n      var fa = t * s01; // scaling factor for triangle Ta\n\n      var fb = t * s12;\n      return {\n        previous: {\n          x: current.x - fa * (next.x - previous.x),\n          y: current.y - fa * (next.y - previous.y)\n        },\n        next: {\n          x: current.x + fb * (next.x - previous.x),\n          y: current.y + fb * (next.y - previous.y)\n        }\n      };\n    };\n\n    helpers$1.EPSILON = Number.EPSILON || 1e-14;\n\n    helpers$1.splineCurveMonotone = function (points) {\n      // This function calculates Bézier control points in a similar way than |splineCurve|,\n      // but preserves monotonicity of the provided data and ensures no local extremums are added\n      // between the dataset discrete points due to the interpolation.\n      // See : https://en.wikipedia.org/wiki/Monotone_cubic_interpolation\n      var pointsWithTangents = (points || []).map(function (point) {\n        return {\n          model: point._model,\n          deltaK: 0,\n          mK: 0\n        };\n      }); // Calculate slopes (deltaK) and initialize tangents (mK)\n\n      var pointsLen = pointsWithTangents.length;\n      var i, pointBefore, pointCurrent, pointAfter;\n\n      for (i = 0; i < pointsLen; ++i) {\n        pointCurrent = pointsWithTangents[i];\n\n        if (pointCurrent.model.skip) {\n          continue;\n        }\n\n        pointBefore = i > 0 ? pointsWithTangents[i - 1] : null;\n        pointAfter = i < pointsLen - 1 ? pointsWithTangents[i + 1] : null;\n\n        if (pointAfter && !pointAfter.model.skip) {\n          var slopeDeltaX = pointAfter.model.x - pointCurrent.model.x; // In the case of two points that appear at the same x pixel, slopeDeltaX is 0\n\n          pointCurrent.deltaK = slopeDeltaX !== 0 ? (pointAfter.model.y - pointCurrent.model.y) / slopeDeltaX : 0;\n        }\n\n        if (!pointBefore || pointBefore.model.skip) {\n          pointCurrent.mK = pointCurrent.deltaK;\n        } else if (!pointAfter || pointAfter.model.skip) {\n          pointCurrent.mK = pointBefore.deltaK;\n        } else if (this.sign(pointBefore.deltaK) !== this.sign(pointCurrent.deltaK)) {\n          pointCurrent.mK = 0;\n        } else {\n          pointCurrent.mK = (pointBefore.deltaK + pointCurrent.deltaK) / 2;\n        }\n      } // Adjust tangents to ensure monotonic properties\n\n\n      var alphaK, betaK, tauK, squaredMagnitude;\n\n      for (i = 0; i < pointsLen - 1; ++i) {\n        pointCurrent = pointsWithTangents[i];\n        pointAfter = pointsWithTangents[i + 1];\n\n        if (pointCurrent.model.skip || pointAfter.model.skip) {\n          continue;\n        }\n\n        if (helpers$1.almostEquals(pointCurrent.deltaK, 0, this.EPSILON)) {\n          pointCurrent.mK = pointAfter.mK = 0;\n          continue;\n        }\n\n        alphaK = pointCurrent.mK / pointCurrent.deltaK;\n        betaK = pointAfter.mK / pointCurrent.deltaK;\n        squaredMagnitude = Math.pow(alphaK, 2) + Math.pow(betaK, 2);\n\n        if (squaredMagnitude <= 9) {\n          continue;\n        }\n\n        tauK = 3 / Math.sqrt(squaredMagnitude);\n        pointCurrent.mK = alphaK * tauK * pointCurrent.deltaK;\n        pointAfter.mK = betaK * tauK * pointCurrent.deltaK;\n      } // Compute control points\n\n\n      var deltaX;\n\n      for (i = 0; i < pointsLen; ++i) {\n        pointCurrent = pointsWithTangents[i];\n\n        if (pointCurrent.model.skip) {\n          continue;\n        }\n\n        pointBefore = i > 0 ? pointsWithTangents[i - 1] : null;\n        pointAfter = i < pointsLen - 1 ? pointsWithTangents[i + 1] : null;\n\n        if (pointBefore && !pointBefore.model.skip) {\n          deltaX = (pointCurrent.model.x - pointBefore.model.x) / 3;\n          pointCurrent.model.controlPointPreviousX = pointCurrent.model.x - deltaX;\n          pointCurrent.model.controlPointPreviousY = pointCurrent.model.y - deltaX * pointCurrent.mK;\n        }\n\n        if (pointAfter && !pointAfter.model.skip) {\n          deltaX = (pointAfter.model.x - pointCurrent.model.x) / 3;\n          pointCurrent.model.controlPointNextX = pointCurrent.model.x + deltaX;\n          pointCurrent.model.controlPointNextY = pointCurrent.model.y + deltaX * pointCurrent.mK;\n        }\n      }\n    };\n\n    helpers$1.nextItem = function (collection, index, loop) {\n      if (loop) {\n        return index >= collection.length - 1 ? collection[0] : collection[index + 1];\n      }\n\n      return index >= collection.length - 1 ? collection[collection.length - 1] : collection[index + 1];\n    };\n\n    helpers$1.previousItem = function (collection, index, loop) {\n      if (loop) {\n        return index <= 0 ? collection[collection.length - 1] : collection[index - 1];\n      }\n\n      return index <= 0 ? collection[0] : collection[index - 1];\n    }; // Implementation of the nice number algorithm used in determining where axis labels will go\n\n\n    helpers$1.niceNum = function (range, round) {\n      var exponent = Math.floor(helpers$1.log10(range));\n      var fraction = range / Math.pow(10, exponent);\n      var niceFraction;\n\n      if (round) {\n        if (fraction < 1.5) {\n          niceFraction = 1;\n        } else if (fraction < 3) {\n          niceFraction = 2;\n        } else if (fraction < 7) {\n          niceFraction = 5;\n        } else {\n          niceFraction = 10;\n        }\n      } else if (fraction <= 1.0) {\n        niceFraction = 1;\n      } else if (fraction <= 2) {\n        niceFraction = 2;\n      } else if (fraction <= 5) {\n        niceFraction = 5;\n      } else {\n        niceFraction = 10;\n      }\n\n      return niceFraction * Math.pow(10, exponent);\n    }; // Request animation polyfill - https://www.paulirish.com/2011/requestanimationframe-for-smart-animating/\n\n\n    helpers$1.requestAnimFrame = function () {\n      if (typeof window === 'undefined') {\n        return function (callback) {\n          callback();\n        };\n      }\n\n      return window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame || window.msRequestAnimationFrame || function (callback) {\n        return window.setTimeout(callback, 1000 / 60);\n      };\n    }(); // -- DOM methods\n\n\n    helpers$1.getRelativePosition = function (evt, chart) {\n      var mouseX, mouseY;\n      var e = evt.originalEvent || evt;\n      var canvas = evt.target || evt.srcElement;\n      var boundingRect = canvas.getBoundingClientRect();\n      var touches = e.touches;\n\n      if (touches && touches.length > 0) {\n        mouseX = touches[0].clientX;\n        mouseY = touches[0].clientY;\n      } else {\n        mouseX = e.clientX;\n        mouseY = e.clientY;\n      } // Scale mouse coordinates into canvas coordinates\n      // by following the pattern laid out by 'jerryj' in the comments of\n      // https://www.html5canvastutorials.com/advanced/html5-canvas-mouse-coordinates/\n\n\n      var paddingLeft = parseFloat(helpers$1.getStyle(canvas, 'padding-left'));\n      var paddingTop = parseFloat(helpers$1.getStyle(canvas, 'padding-top'));\n      var paddingRight = parseFloat(helpers$1.getStyle(canvas, 'padding-right'));\n      var paddingBottom = parseFloat(helpers$1.getStyle(canvas, 'padding-bottom'));\n      var width = boundingRect.right - boundingRect.left - paddingLeft - paddingRight;\n      var height = boundingRect.bottom - boundingRect.top - paddingTop - paddingBottom; // We divide by the current device pixel ratio, because the canvas is scaled up by that amount in each direction. However\n      // the backend model is in unscaled coordinates. Since we are going to deal with our model coordinates, we go back here\n\n      mouseX = Math.round((mouseX - boundingRect.left - paddingLeft) / width * canvas.width / chart.currentDevicePixelRatio);\n      mouseY = Math.round((mouseY - boundingRect.top - paddingTop) / height * canvas.height / chart.currentDevicePixelRatio);\n      return {\n        x: mouseX,\n        y: mouseY\n      };\n    }; // Private helper function to convert max-width/max-height values that may be percentages into a number\n\n\n    function parseMaxStyle(styleValue, node, parentProperty) {\n      var valueInPixels;\n\n      if (typeof styleValue === 'string') {\n        valueInPixels = parseInt(styleValue, 10);\n\n        if (styleValue.indexOf('%') !== -1) {\n          // percentage * size in dimension\n          valueInPixels = valueInPixels / 100 * node.parentNode[parentProperty];\n        }\n      } else {\n        valueInPixels = styleValue;\n      }\n\n      return valueInPixels;\n    }\n    /**\n     * Returns if the given value contains an effective constraint.\n     * @private\n     */\n\n\n    function isConstrainedValue(value) {\n      return value !== undefined && value !== null && value !== 'none';\n    }\n    /**\n     * Returns the max width or height of the given DOM node in a cross-browser compatible fashion\n     * @param {HTMLElement} domNode - the node to check the constraint on\n     * @param {string} maxStyle - the style that defines the maximum for the direction we are using ('max-width' / 'max-height')\n     * @param {string} percentageProperty - property of parent to use when calculating width as a percentage\n     * @see {@link https://www.nathanaeljones.com/blog/2013/reading-max-width-cross-browser}\n     */\n\n\n    function getConstraintDimension(domNode, maxStyle, percentageProperty) {\n      var view = document.defaultView;\n\n      var parentNode = helpers$1._getParentNode(domNode);\n\n      var constrainedNode = view.getComputedStyle(domNode)[maxStyle];\n      var constrainedContainer = view.getComputedStyle(parentNode)[maxStyle];\n      var hasCNode = isConstrainedValue(constrainedNode);\n      var hasCContainer = isConstrainedValue(constrainedContainer);\n      var infinity = Number.POSITIVE_INFINITY;\n\n      if (hasCNode || hasCContainer) {\n        return Math.min(hasCNode ? parseMaxStyle(constrainedNode, domNode, percentageProperty) : infinity, hasCContainer ? parseMaxStyle(constrainedContainer, parentNode, percentageProperty) : infinity);\n      }\n\n      return 'none';\n    } // returns Number or undefined if no constraint\n\n\n    helpers$1.getConstraintWidth = function (domNode) {\n      return getConstraintDimension(domNode, 'max-width', 'clientWidth');\n    }; // returns Number or undefined if no constraint\n\n\n    helpers$1.getConstraintHeight = function (domNode) {\n      return getConstraintDimension(domNode, 'max-height', 'clientHeight');\n    };\n    /**\n     * @private\n    \t */\n\n\n    helpers$1._calculatePadding = function (container, padding, parentDimension) {\n      padding = helpers$1.getStyle(container, padding);\n      return padding.indexOf('%') > -1 ? parentDimension * parseInt(padding, 10) / 100 : parseInt(padding, 10);\n    };\n    /**\n     * @private\n     */\n\n\n    helpers$1._getParentNode = function (domNode) {\n      var parent = domNode.parentNode;\n\n      if (parent && parent.toString() === '[object ShadowRoot]') {\n        parent = parent.host;\n      }\n\n      return parent;\n    };\n\n    helpers$1.getMaximumWidth = function (domNode) {\n      var container = helpers$1._getParentNode(domNode);\n\n      if (!container) {\n        return domNode.clientWidth;\n      }\n\n      var clientWidth = container.clientWidth;\n\n      var paddingLeft = helpers$1._calculatePadding(container, 'padding-left', clientWidth);\n\n      var paddingRight = helpers$1._calculatePadding(container, 'padding-right', clientWidth);\n\n      var w = clientWidth - paddingLeft - paddingRight;\n      var cw = helpers$1.getConstraintWidth(domNode);\n      return isNaN(cw) ? w : Math.min(w, cw);\n    };\n\n    helpers$1.getMaximumHeight = function (domNode) {\n      var container = helpers$1._getParentNode(domNode);\n\n      if (!container) {\n        return domNode.clientHeight;\n      }\n\n      var clientHeight = container.clientHeight;\n\n      var paddingTop = helpers$1._calculatePadding(container, 'padding-top', clientHeight);\n\n      var paddingBottom = helpers$1._calculatePadding(container, 'padding-bottom', clientHeight);\n\n      var h = clientHeight - paddingTop - paddingBottom;\n      var ch = helpers$1.getConstraintHeight(domNode);\n      return isNaN(ch) ? h : Math.min(h, ch);\n    };\n\n    helpers$1.getStyle = function (el, property) {\n      return el.currentStyle ? el.currentStyle[property] : document.defaultView.getComputedStyle(el, null).getPropertyValue(property);\n    };\n\n    helpers$1.retinaScale = function (chart, forceRatio) {\n      var pixelRatio = chart.currentDevicePixelRatio = forceRatio || typeof window !== 'undefined' && window.devicePixelRatio || 1;\n\n      if (pixelRatio === 1) {\n        return;\n      }\n\n      var canvas = chart.canvas;\n      var height = chart.height;\n      var width = chart.width;\n      canvas.height = height * pixelRatio;\n      canvas.width = width * pixelRatio;\n      chart.ctx.scale(pixelRatio, pixelRatio); // If no style has been set on the canvas, the render size is used as display size,\n      // making the chart visually bigger, so let's enforce it to the \"correct\" values.\n      // See https://github.com/chartjs/Chart.js/issues/3575\n\n      if (!canvas.style.height && !canvas.style.width) {\n        canvas.style.height = height + 'px';\n        canvas.style.width = width + 'px';\n      }\n    }; // -- Canvas methods\n\n\n    helpers$1.fontString = function (pixelSize, fontStyle, fontFamily) {\n      return fontStyle + ' ' + pixelSize + 'px ' + fontFamily;\n    };\n\n    helpers$1.longestText = function (ctx, font, arrayOfThings, cache) {\n      cache = cache || {};\n      var data = cache.data = cache.data || {};\n      var gc = cache.garbageCollect = cache.garbageCollect || [];\n\n      if (cache.font !== font) {\n        data = cache.data = {};\n        gc = cache.garbageCollect = [];\n        cache.font = font;\n      }\n\n      ctx.font = font;\n      var longest = 0;\n      var ilen = arrayOfThings.length;\n      var i, j, jlen, thing, nestedThing;\n\n      for (i = 0; i < ilen; i++) {\n        thing = arrayOfThings[i]; // Undefined strings and arrays should not be measured\n\n        if (thing !== undefined && thing !== null && helpers$1.isArray(thing) !== true) {\n          longest = helpers$1.measureText(ctx, data, gc, longest, thing);\n        } else if (helpers$1.isArray(thing)) {\n          // if it is an array lets measure each element\n          // to do maybe simplify this function a bit so we can do this more recursively?\n          for (j = 0, jlen = thing.length; j < jlen; j++) {\n            nestedThing = thing[j]; // Undefined strings and arrays should not be measured\n\n            if (nestedThing !== undefined && nestedThing !== null && !helpers$1.isArray(nestedThing)) {\n              longest = helpers$1.measureText(ctx, data, gc, longest, nestedThing);\n            }\n          }\n        }\n      }\n\n      var gcLen = gc.length / 2;\n\n      if (gcLen > arrayOfThings.length) {\n        for (i = 0; i < gcLen; i++) {\n          delete data[gc[i]];\n        }\n\n        gc.splice(0, gcLen);\n      }\n\n      return longest;\n    };\n\n    helpers$1.measureText = function (ctx, data, gc, longest, string) {\n      var textWidth = data[string];\n\n      if (!textWidth) {\n        textWidth = data[string] = ctx.measureText(string).width;\n        gc.push(string);\n      }\n\n      if (textWidth > longest) {\n        longest = textWidth;\n      }\n\n      return longest;\n    };\n    /**\n     * @deprecated\n     */\n\n\n    helpers$1.numberOfLabelLines = function (arrayOfThings) {\n      var numberOfLines = 1;\n      helpers$1.each(arrayOfThings, function (thing) {\n        if (helpers$1.isArray(thing)) {\n          if (thing.length > numberOfLines) {\n            numberOfLines = thing.length;\n          }\n        }\n      });\n      return numberOfLines;\n    };\n\n    helpers$1.color = !chartjsColor ? function (value) {\n      console.error('Color.js not found!');\n      return value;\n    } : function (value) {\n      /* global CanvasGradient */\n      if (value instanceof CanvasGradient) {\n        value = core_defaults.global.defaultColor;\n      }\n\n      return chartjsColor(value);\n    };\n\n    helpers$1.getHoverColor = function (colorValue) {\n      /* global CanvasPattern */\n      return colorValue instanceof CanvasPattern || colorValue instanceof CanvasGradient ? colorValue : helpers$1.color(colorValue).saturate(0.5).darken(0.1).rgbString();\n    };\n  };\n\n  function _abstract() {\n    throw new Error('This method is not implemented: either no adapter can ' + 'be found or an incomplete integration was provided.');\n  }\n  /**\n   * Date adapter (current used by the time scale)\n   * @namespace Chart._adapters._date\n   * @memberof Chart._adapters\n   * @private\n   */\n\n  /**\n   * Currently supported unit string values.\n   * @typedef {('millisecond'|'second'|'minute'|'hour'|'day'|'week'|'month'|'quarter'|'year')}\n   * @memberof Chart._adapters._date\n   * @name Unit\n   */\n\n  /**\n   * @class\n   */\n\n\n  function DateAdapter(options) {\n    this.options = options || {};\n  }\n\n  helpers$1.extend(DateAdapter.prototype,\n  /** @lends DateAdapter */\n  {\n    /**\n     * Returns a map of time formats for the supported formatting units defined\n     * in Unit as well as 'datetime' representing a detailed date/time string.\n     * @returns {{string: string}}\n     */\n    formats: _abstract,\n\n    /**\n     * Parses the given `value` and return the associated timestamp.\n     * @param {any} value - the value to parse (usually comes from the data)\n     * @param {string} [format] - the expected data format\n     * @returns {(number|null)}\n     * @function\n     */\n    parse: _abstract,\n\n    /**\n     * Returns the formatted date in the specified `format` for a given `timestamp`.\n     * @param {number} timestamp - the timestamp to format\n     * @param {string} format - the date/time token\n     * @return {string}\n     * @function\n     */\n    format: _abstract,\n\n    /**\n     * Adds the specified `amount` of `unit` to the given `timestamp`.\n     * @param {number} timestamp - the input timestamp\n     * @param {number} amount - the amount to add\n     * @param {Unit} unit - the unit as string\n     * @return {number}\n     * @function\n     */\n    add: _abstract,\n\n    /**\n     * Returns the number of `unit` between the given timestamps.\n     * @param {number} max - the input timestamp (reference)\n     * @param {number} min - the timestamp to substract\n     * @param {Unit} unit - the unit as string\n     * @return {number}\n     * @function\n     */\n    diff: _abstract,\n\n    /**\n     * Returns start of `unit` for the given `timestamp`.\n     * @param {number} timestamp - the input timestamp\n     * @param {Unit} unit - the unit as string\n     * @param {number} [weekday] - the ISO day of the week with 1 being Monday\n     * and 7 being Sunday (only needed if param *unit* is `isoWeek`).\n     * @function\n     */\n    startOf: _abstract,\n\n    /**\n     * Returns end of `unit` for the given `timestamp`.\n     * @param {number} timestamp - the input timestamp\n     * @param {Unit} unit - the unit as string\n     * @function\n     */\n    endOf: _abstract,\n    // DEPRECATIONS\n\n    /**\n     * Provided for backward compatibility for scale.getValueForPixel(),\n     * this method should be overridden only by the moment adapter.\n     * @deprecated since version 2.8.0\n     * @todo remove at version 3\n     * @private\n     */\n    _create: function _create(value) {\n      return value;\n    }\n  });\n\n  DateAdapter.override = function (members) {\n    helpers$1.extend(DateAdapter.prototype, members);\n  };\n\n  var _date = DateAdapter;\n  var core_adapters = {\n    _date: _date\n  };\n  /**\n   * Namespace to hold static tick generation functions\n   * @namespace Chart.Ticks\n   */\n\n  var core_ticks = {\n    /**\n     * Namespace to hold formatters for different types of ticks\n     * @namespace Chart.Ticks.formatters\n     */\n    formatters: {\n      /**\n       * Formatter for value labels\n       * @method Chart.Ticks.formatters.values\n       * @param value the value to display\n       * @return {string|string[]} the label to display\n       */\n      values: function values(value) {\n        return helpers$1.isArray(value) ? value : '' + value;\n      },\n\n      /**\n       * Formatter for linear numeric ticks\n       * @method Chart.Ticks.formatters.linear\n       * @param tickValue {number} the value to be formatted\n       * @param index {number} the position of the tickValue parameter in the ticks array\n       * @param ticks {number[]} the list of ticks being converted\n       * @return {string} string representation of the tickValue parameter\n       */\n      linear: function linear(tickValue, index, ticks) {\n        // If we have lots of ticks, don't use the ones\n        var delta = ticks.length > 3 ? ticks[2] - ticks[1] : ticks[1] - ticks[0]; // If we have a number like 2.5 as the delta, figure out how many decimal places we need\n\n        if (Math.abs(delta) > 1) {\n          if (tickValue !== Math.floor(tickValue)) {\n            // not an integer\n            delta = tickValue - Math.floor(tickValue);\n          }\n        }\n\n        var logDelta = helpers$1.log10(Math.abs(delta));\n        var tickString = '';\n\n        if (tickValue !== 0) {\n          var maxTick = Math.max(Math.abs(ticks[0]), Math.abs(ticks[ticks.length - 1]));\n\n          if (maxTick < 1e-4) {\n            // all ticks are small numbers; use scientific notation\n            var logTick = helpers$1.log10(Math.abs(tickValue));\n            var numExponential = Math.floor(logTick) - Math.floor(logDelta);\n            numExponential = Math.max(Math.min(numExponential, 20), 0);\n            tickString = tickValue.toExponential(numExponential);\n          } else {\n            var numDecimal = -1 * Math.floor(logDelta);\n            numDecimal = Math.max(Math.min(numDecimal, 20), 0); // toFixed has a max of 20 decimal places\n\n            tickString = tickValue.toFixed(numDecimal);\n          }\n        } else {\n          tickString = '0'; // never show decimal places for 0\n        }\n\n        return tickString;\n      },\n      logarithmic: function logarithmic(tickValue, index, ticks) {\n        var remain = tickValue / Math.pow(10, Math.floor(helpers$1.log10(tickValue)));\n\n        if (tickValue === 0) {\n          return '0';\n        } else if (remain === 1 || remain === 2 || remain === 5 || index === 0 || index === ticks.length - 1) {\n          return tickValue.toExponential();\n        }\n\n        return '';\n      }\n    }\n  };\n  var isArray = helpers$1.isArray;\n  var isNullOrUndef = helpers$1.isNullOrUndef;\n  var valueOrDefault$a = helpers$1.valueOrDefault;\n  var valueAtIndexOrDefault = helpers$1.valueAtIndexOrDefault;\n\n  core_defaults._set('scale', {\n    display: true,\n    position: 'left',\n    offset: false,\n    // grid line settings\n    gridLines: {\n      display: true,\n      color: 'rgba(0,0,0,0.1)',\n      lineWidth: 1,\n      drawBorder: true,\n      drawOnChartArea: true,\n      drawTicks: true,\n      tickMarkLength: 10,\n      zeroLineWidth: 1,\n      zeroLineColor: 'rgba(0,0,0,0.25)',\n      zeroLineBorderDash: [],\n      zeroLineBorderDashOffset: 0.0,\n      offsetGridLines: false,\n      borderDash: [],\n      borderDashOffset: 0.0\n    },\n    // scale label\n    scaleLabel: {\n      // display property\n      display: false,\n      // actual label\n      labelString: '',\n      // top/bottom padding\n      padding: {\n        top: 4,\n        bottom: 4\n      }\n    },\n    // label settings\n    ticks: {\n      beginAtZero: false,\n      minRotation: 0,\n      maxRotation: 50,\n      mirror: false,\n      padding: 0,\n      reverse: false,\n      display: true,\n      autoSkip: true,\n      autoSkipPadding: 0,\n      labelOffset: 0,\n      // We pass through arrays to be rendered as multiline labels, we convert Others to strings here.\n      callback: core_ticks.formatters.values,\n      minor: {},\n      major: {}\n    }\n  });\n  /** Returns a new array containing numItems from arr */\n\n\n  function sample(arr, numItems) {\n    var result = [];\n    var increment = arr.length / numItems;\n    var i = 0;\n    var len = arr.length;\n\n    for (; i < len; i += increment) {\n      result.push(arr[Math.floor(i)]);\n    }\n\n    return result;\n  }\n\n  function getPixelForGridLine(scale, index, offsetGridLines) {\n    var length = scale.getTicks().length;\n    var validIndex = Math.min(index, length - 1);\n    var lineValue = scale.getPixelForTick(validIndex);\n    var start = scale._startPixel;\n    var end = scale._endPixel;\n    var epsilon = 1e-6; // 1e-6 is margin in pixels for accumulated error.\n\n    var offset;\n\n    if (offsetGridLines) {\n      if (length === 1) {\n        offset = Math.max(lineValue - start, end - lineValue);\n      } else if (index === 0) {\n        offset = (scale.getPixelForTick(1) - lineValue) / 2;\n      } else {\n        offset = (lineValue - scale.getPixelForTick(validIndex - 1)) / 2;\n      }\n\n      lineValue += validIndex < index ? offset : -offset; // Return undefined if the pixel is out of the range\n\n      if (lineValue < start - epsilon || lineValue > end + epsilon) {\n        return;\n      }\n    }\n\n    return lineValue;\n  }\n\n  function garbageCollect(caches, length) {\n    helpers$1.each(caches, function (cache) {\n      var gc = cache.gc;\n      var gcLen = gc.length / 2;\n      var i;\n\n      if (gcLen > length) {\n        for (i = 0; i < gcLen; ++i) {\n          delete cache.data[gc[i]];\n        }\n\n        gc.splice(0, gcLen);\n      }\n    });\n  }\n  /**\n   * Returns {width, height, offset} objects for the first, last, widest, highest tick\n   * labels where offset indicates the anchor point offset from the top in pixels.\n   */\n\n\n  function computeLabelSizes(ctx, tickFonts, ticks, caches) {\n    var length = ticks.length;\n    var widths = [];\n    var heights = [];\n    var offsets = [];\n    var i, j, jlen, label, tickFont, fontString, cache, lineHeight, width, height, nestedLabel, widest, highest;\n\n    for (i = 0; i < length; ++i) {\n      label = ticks[i].label;\n      tickFont = ticks[i].major ? tickFonts.major : tickFonts.minor;\n      ctx.font = fontString = tickFont.string;\n      cache = caches[fontString] = caches[fontString] || {\n        data: {},\n        gc: []\n      };\n      lineHeight = tickFont.lineHeight;\n      width = height = 0; // Undefined labels and arrays should not be measured\n\n      if (!isNullOrUndef(label) && !isArray(label)) {\n        width = helpers$1.measureText(ctx, cache.data, cache.gc, width, label);\n        height = lineHeight;\n      } else if (isArray(label)) {\n        // if it is an array let's measure each element\n        for (j = 0, jlen = label.length; j < jlen; ++j) {\n          nestedLabel = label[j]; // Undefined labels and arrays should not be measured\n\n          if (!isNullOrUndef(nestedLabel) && !isArray(nestedLabel)) {\n            width = helpers$1.measureText(ctx, cache.data, cache.gc, width, nestedLabel);\n            height += lineHeight;\n          }\n        }\n      }\n\n      widths.push(width);\n      heights.push(height);\n      offsets.push(lineHeight / 2);\n    }\n\n    garbageCollect(caches, length);\n    widest = widths.indexOf(Math.max.apply(null, widths));\n    highest = heights.indexOf(Math.max.apply(null, heights));\n\n    function valueAt(idx) {\n      return {\n        width: widths[idx] || 0,\n        height: heights[idx] || 0,\n        offset: offsets[idx] || 0\n      };\n    }\n\n    return {\n      first: valueAt(0),\n      last: valueAt(length - 1),\n      widest: valueAt(widest),\n      highest: valueAt(highest)\n    };\n  }\n\n  function getTickMarkLength(options) {\n    return options.drawTicks ? options.tickMarkLength : 0;\n  }\n\n  function getScaleLabelHeight(options) {\n    var font, padding;\n\n    if (!options.display) {\n      return 0;\n    }\n\n    font = helpers$1.options._parseFont(options);\n    padding = helpers$1.options.toPadding(options.padding);\n    return font.lineHeight + padding.height;\n  }\n\n  function parseFontOptions(options, nestedOpts) {\n    return helpers$1.extend(helpers$1.options._parseFont({\n      fontFamily: valueOrDefault$a(nestedOpts.fontFamily, options.fontFamily),\n      fontSize: valueOrDefault$a(nestedOpts.fontSize, options.fontSize),\n      fontStyle: valueOrDefault$a(nestedOpts.fontStyle, options.fontStyle),\n      lineHeight: valueOrDefault$a(nestedOpts.lineHeight, options.lineHeight)\n    }), {\n      color: helpers$1.options.resolve([nestedOpts.fontColor, options.fontColor, core_defaults.global.defaultFontColor])\n    });\n  }\n\n  function parseTickFontOptions(options) {\n    var minor = parseFontOptions(options, options.minor);\n    var major = options.major.enabled ? parseFontOptions(options, options.major) : minor;\n    return {\n      minor: minor,\n      major: major\n    };\n  }\n\n  function nonSkipped(ticksToFilter) {\n    var filtered = [];\n    var item, index, len;\n\n    for (index = 0, len = ticksToFilter.length; index < len; ++index) {\n      item = ticksToFilter[index];\n\n      if (typeof item._index !== 'undefined') {\n        filtered.push(item);\n      }\n    }\n\n    return filtered;\n  }\n\n  function getEvenSpacing(arr) {\n    var len = arr.length;\n    var i, diff;\n\n    if (len < 2) {\n      return false;\n    }\n\n    for (diff = arr[0], i = 1; i < len; ++i) {\n      if (arr[i] - arr[i - 1] !== diff) {\n        return false;\n      }\n    }\n\n    return diff;\n  }\n\n  function calculateSpacing(majorIndices, ticks, axisLength, ticksLimit) {\n    var evenMajorSpacing = getEvenSpacing(majorIndices);\n    var spacing = (ticks.length - 1) / ticksLimit;\n    var factors, factor, i, ilen; // If the major ticks are evenly spaced apart, place the minor ticks\n    // so that they divide the major ticks into even chunks\n\n    if (!evenMajorSpacing) {\n      return Math.max(spacing, 1);\n    }\n\n    factors = helpers$1.math._factorize(evenMajorSpacing);\n\n    for (i = 0, ilen = factors.length - 1; i < ilen; i++) {\n      factor = factors[i];\n\n      if (factor > spacing) {\n        return factor;\n      }\n    }\n\n    return Math.max(spacing, 1);\n  }\n\n  function getMajorIndices(ticks) {\n    var result = [];\n    var i, ilen;\n\n    for (i = 0, ilen = ticks.length; i < ilen; i++) {\n      if (ticks[i].major) {\n        result.push(i);\n      }\n    }\n\n    return result;\n  }\n\n  function skipMajors(ticks, majorIndices, spacing) {\n    var count = 0;\n    var next = majorIndices[0];\n    var i, tick;\n    spacing = Math.ceil(spacing);\n\n    for (i = 0; i < ticks.length; i++) {\n      tick = ticks[i];\n\n      if (i === next) {\n        tick._index = i;\n        count++;\n        next = majorIndices[count * spacing];\n      } else {\n        delete tick.label;\n      }\n    }\n  }\n\n  function skip(ticks, spacing, majorStart, majorEnd) {\n    var start = valueOrDefault$a(majorStart, 0);\n    var end = Math.min(valueOrDefault$a(majorEnd, ticks.length), ticks.length);\n    var count = 0;\n    var length, i, tick, next;\n    spacing = Math.ceil(spacing);\n\n    if (majorEnd) {\n      length = majorEnd - majorStart;\n      spacing = length / Math.floor(length / spacing);\n    }\n\n    next = start;\n\n    while (next < 0) {\n      count++;\n      next = Math.round(start + count * spacing);\n    }\n\n    for (i = Math.max(start, 0); i < end; i++) {\n      tick = ticks[i];\n\n      if (i === next) {\n        tick._index = i;\n        count++;\n        next = Math.round(start + count * spacing);\n      } else {\n        delete tick.label;\n      }\n    }\n  }\n\n  var Scale = core_element.extend({\n    zeroLineIndex: 0,\n\n    /**\n     * Get the padding needed for the scale\n     * @method getPadding\n     * @private\n     * @returns {Padding} the necessary padding\n     */\n    getPadding: function getPadding() {\n      var me = this;\n      return {\n        left: me.paddingLeft || 0,\n        top: me.paddingTop || 0,\n        right: me.paddingRight || 0,\n        bottom: me.paddingBottom || 0\n      };\n    },\n\n    /**\n     * Returns the scale tick objects ({label, major})\n     * @since 2.7\n     */\n    getTicks: function getTicks() {\n      return this._ticks;\n    },\n\n    /**\n    * @private\n    */\n    _getLabels: function _getLabels() {\n      var data = this.chart.data;\n      return this.options.labels || (this.isHorizontal() ? data.xLabels : data.yLabels) || data.labels || [];\n    },\n    // These methods are ordered by lifecyle. Utilities then follow.\n    // Any function defined here is inherited by all scale types.\n    // Any function can be extended by the scale type\n\n    /**\n     * Provided for backward compatibility, not available anymore\n     * @function Chart.Scale.mergeTicksOptions\n     * @deprecated since version 2.8.0\n     * @todo remove at version 3\n     */\n    mergeTicksOptions: function mergeTicksOptions() {// noop\n    },\n    beforeUpdate: function beforeUpdate() {\n      helpers$1.callback(this.options.beforeUpdate, [this]);\n    },\n\n    /**\n     * @param {number} maxWidth - the max width in pixels\n     * @param {number} maxHeight - the max height in pixels\n     * @param {object} margins - the space between the edge of the other scales and edge of the chart\n     *   This space comes from two sources:\n     *     - padding - space that's required to show the labels at the edges of the scale\n     *     - thickness of scales or legends in another orientation\n     */\n    update: function update(maxWidth, maxHeight, margins) {\n      var me = this;\n      var tickOpts = me.options.ticks;\n      var sampleSize = tickOpts.sampleSize;\n      var i, ilen, labels, ticks, samplingEnabled; // Update Lifecycle - Probably don't want to ever extend or overwrite this function ;)\n\n      me.beforeUpdate(); // Absorb the master measurements\n\n      me.maxWidth = maxWidth;\n      me.maxHeight = maxHeight;\n      me.margins = helpers$1.extend({\n        left: 0,\n        right: 0,\n        top: 0,\n        bottom: 0\n      }, margins);\n      me._ticks = null;\n      me.ticks = null;\n      me._labelSizes = null;\n      me._maxLabelLines = 0;\n      me.longestLabelWidth = 0;\n      me.longestTextCache = me.longestTextCache || {};\n      me._gridLineItems = null;\n      me._labelItems = null; // Dimensions\n\n      me.beforeSetDimensions();\n      me.setDimensions();\n      me.afterSetDimensions(); // Data min/max\n\n      me.beforeDataLimits();\n      me.determineDataLimits();\n      me.afterDataLimits(); // Ticks - `this.ticks` is now DEPRECATED!\n      // Internal ticks are now stored as objects in the PRIVATE `this._ticks` member\n      // and must not be accessed directly from outside this class. `this.ticks` being\n      // around for long time and not marked as private, we can't change its structure\n      // without unexpected breaking changes. If you need to access the scale ticks,\n      // use scale.getTicks() instead.\n\n      me.beforeBuildTicks(); // New implementations should return an array of objects but for BACKWARD COMPAT,\n      // we still support no return (`this.ticks` internally set by calling this method).\n\n      ticks = me.buildTicks() || []; // Allow modification of ticks in callback.\n\n      ticks = me.afterBuildTicks(ticks) || ticks; // Ensure ticks contains ticks in new tick format\n\n      if ((!ticks || !ticks.length) && me.ticks) {\n        ticks = [];\n\n        for (i = 0, ilen = me.ticks.length; i < ilen; ++i) {\n          ticks.push({\n            value: me.ticks[i],\n            major: false\n          });\n        }\n      }\n\n      me._ticks = ticks; // Compute tick rotation and fit using a sampled subset of labels\n      // We generally don't need to compute the size of every single label for determining scale size\n\n      samplingEnabled = sampleSize < ticks.length;\n      labels = me._convertTicksToLabels(samplingEnabled ? sample(ticks, sampleSize) : ticks); // _configure is called twice, once here, once from core.controller.updateLayout.\n      // Here we haven't been positioned yet, but dimensions are correct.\n      // Variables set in _configure are needed for calculateTickRotation, and\n      // it's ok that coordinates are not correct there, only dimensions matter.\n\n      me._configure(); // Tick Rotation\n\n\n      me.beforeCalculateTickRotation();\n      me.calculateTickRotation();\n      me.afterCalculateTickRotation();\n      me.beforeFit();\n      me.fit();\n      me.afterFit(); // Auto-skip\n\n      me._ticksToDraw = tickOpts.display && (tickOpts.autoSkip || tickOpts.source === 'auto') ? me._autoSkip(ticks) : ticks;\n\n      if (samplingEnabled) {\n        // Generate labels using all non-skipped ticks\n        labels = me._convertTicksToLabels(me._ticksToDraw);\n      }\n\n      me.ticks = labels; // BACKWARD COMPATIBILITY\n      // IMPORTANT: after this point, we consider that `this.ticks` will NEVER change!\n\n      me.afterUpdate(); // TODO(v3): remove minSize as a public property and return value from all layout boxes. It is unused\n      // make maxWidth and maxHeight private\n\n      return me.minSize;\n    },\n\n    /**\n     * @private\n     */\n    _configure: function _configure() {\n      var me = this;\n      var reversePixels = me.options.ticks.reverse;\n      var startPixel, endPixel;\n\n      if (me.isHorizontal()) {\n        startPixel = me.left;\n        endPixel = me.right;\n      } else {\n        startPixel = me.top;\n        endPixel = me.bottom; // by default vertical scales are from bottom to top, so pixels are reversed\n\n        reversePixels = !reversePixels;\n      }\n\n      me._startPixel = startPixel;\n      me._endPixel = endPixel;\n      me._reversePixels = reversePixels;\n      me._length = endPixel - startPixel;\n    },\n    afterUpdate: function afterUpdate() {\n      helpers$1.callback(this.options.afterUpdate, [this]);\n    },\n    //\n    beforeSetDimensions: function beforeSetDimensions() {\n      helpers$1.callback(this.options.beforeSetDimensions, [this]);\n    },\n    setDimensions: function setDimensions() {\n      var me = this; // Set the unconstrained dimension before label rotation\n\n      if (me.isHorizontal()) {\n        // Reset position before calculating rotation\n        me.width = me.maxWidth;\n        me.left = 0;\n        me.right = me.width;\n      } else {\n        me.height = me.maxHeight; // Reset position before calculating rotation\n\n        me.top = 0;\n        me.bottom = me.height;\n      } // Reset padding\n\n\n      me.paddingLeft = 0;\n      me.paddingTop = 0;\n      me.paddingRight = 0;\n      me.paddingBottom = 0;\n    },\n    afterSetDimensions: function afterSetDimensions() {\n      helpers$1.callback(this.options.afterSetDimensions, [this]);\n    },\n    // Data limits\n    beforeDataLimits: function beforeDataLimits() {\n      helpers$1.callback(this.options.beforeDataLimits, [this]);\n    },\n    determineDataLimits: helpers$1.noop,\n    afterDataLimits: function afterDataLimits() {\n      helpers$1.callback(this.options.afterDataLimits, [this]);\n    },\n    //\n    beforeBuildTicks: function beforeBuildTicks() {\n      helpers$1.callback(this.options.beforeBuildTicks, [this]);\n    },\n    buildTicks: helpers$1.noop,\n    afterBuildTicks: function afterBuildTicks(ticks) {\n      var me = this; // ticks is empty for old axis implementations here\n\n      if (isArray(ticks) && ticks.length) {\n        return helpers$1.callback(me.options.afterBuildTicks, [me, ticks]);\n      } // Support old implementations (that modified `this.ticks` directly in buildTicks)\n\n\n      me.ticks = helpers$1.callback(me.options.afterBuildTicks, [me, me.ticks]) || me.ticks;\n      return ticks;\n    },\n    beforeTickToLabelConversion: function beforeTickToLabelConversion() {\n      helpers$1.callback(this.options.beforeTickToLabelConversion, [this]);\n    },\n    convertTicksToLabels: function convertTicksToLabels() {\n      var me = this; // Convert ticks to strings\n\n      var tickOpts = me.options.ticks;\n      me.ticks = me.ticks.map(tickOpts.userCallback || tickOpts.callback, this);\n    },\n    afterTickToLabelConversion: function afterTickToLabelConversion() {\n      helpers$1.callback(this.options.afterTickToLabelConversion, [this]);\n    },\n    //\n    beforeCalculateTickRotation: function beforeCalculateTickRotation() {\n      helpers$1.callback(this.options.beforeCalculateTickRotation, [this]);\n    },\n    calculateTickRotation: function calculateTickRotation() {\n      var me = this;\n      var options = me.options;\n      var tickOpts = options.ticks;\n      var numTicks = me.getTicks().length;\n      var minRotation = tickOpts.minRotation || 0;\n      var maxRotation = tickOpts.maxRotation;\n      var labelRotation = minRotation;\n      var labelSizes, maxLabelWidth, maxLabelHeight, maxWidth, tickWidth, maxHeight, maxLabelDiagonal;\n\n      if (!me._isVisible() || !tickOpts.display || minRotation >= maxRotation || numTicks <= 1 || !me.isHorizontal()) {\n        me.labelRotation = minRotation;\n        return;\n      }\n\n      labelSizes = me._getLabelSizes();\n      maxLabelWidth = labelSizes.widest.width;\n      maxLabelHeight = labelSizes.highest.height - labelSizes.highest.offset; // Estimate the width of each grid based on the canvas width, the maximum\n      // label width and the number of tick intervals\n\n      maxWidth = Math.min(me.maxWidth, me.chart.width - maxLabelWidth);\n      tickWidth = options.offset ? me.maxWidth / numTicks : maxWidth / (numTicks - 1); // Allow 3 pixels x2 padding either side for label readability\n\n      if (maxLabelWidth + 6 > tickWidth) {\n        tickWidth = maxWidth / (numTicks - (options.offset ? 0.5 : 1));\n        maxHeight = me.maxHeight - getTickMarkLength(options.gridLines) - tickOpts.padding - getScaleLabelHeight(options.scaleLabel);\n        maxLabelDiagonal = Math.sqrt(maxLabelWidth * maxLabelWidth + maxLabelHeight * maxLabelHeight);\n        labelRotation = helpers$1.toDegrees(Math.min(Math.asin(Math.min((labelSizes.highest.height + 6) / tickWidth, 1)), Math.asin(Math.min(maxHeight / maxLabelDiagonal, 1)) - Math.asin(maxLabelHeight / maxLabelDiagonal)));\n        labelRotation = Math.max(minRotation, Math.min(maxRotation, labelRotation));\n      }\n\n      me.labelRotation = labelRotation;\n    },\n    afterCalculateTickRotation: function afterCalculateTickRotation() {\n      helpers$1.callback(this.options.afterCalculateTickRotation, [this]);\n    },\n    //\n    beforeFit: function beforeFit() {\n      helpers$1.callback(this.options.beforeFit, [this]);\n    },\n    fit: function fit() {\n      var me = this; // Reset\n\n      var minSize = me.minSize = {\n        width: 0,\n        height: 0\n      };\n      var chart = me.chart;\n      var opts = me.options;\n      var tickOpts = opts.ticks;\n      var scaleLabelOpts = opts.scaleLabel;\n      var gridLineOpts = opts.gridLines;\n\n      var display = me._isVisible();\n\n      var isBottom = opts.position === 'bottom';\n      var isHorizontal = me.isHorizontal(); // Width\n\n      if (isHorizontal) {\n        minSize.width = me.maxWidth;\n      } else if (display) {\n        minSize.width = getTickMarkLength(gridLineOpts) + getScaleLabelHeight(scaleLabelOpts);\n      } // height\n\n\n      if (!isHorizontal) {\n        minSize.height = me.maxHeight; // fill all the height\n      } else if (display) {\n        minSize.height = getTickMarkLength(gridLineOpts) + getScaleLabelHeight(scaleLabelOpts);\n      } // Don't bother fitting the ticks if we are not showing the labels\n\n\n      if (tickOpts.display && display) {\n        var tickFonts = parseTickFontOptions(tickOpts);\n\n        var labelSizes = me._getLabelSizes();\n\n        var firstLabelSize = labelSizes.first;\n        var lastLabelSize = labelSizes.last;\n        var widestLabelSize = labelSizes.widest;\n        var highestLabelSize = labelSizes.highest;\n        var lineSpace = tickFonts.minor.lineHeight * 0.4;\n        var tickPadding = tickOpts.padding;\n\n        if (isHorizontal) {\n          // A horizontal axis is more constrained by the height.\n          var isRotated = me.labelRotation !== 0;\n          var angleRadians = helpers$1.toRadians(me.labelRotation);\n          var cosRotation = Math.cos(angleRadians);\n          var sinRotation = Math.sin(angleRadians);\n          var labelHeight = sinRotation * widestLabelSize.width + cosRotation * (highestLabelSize.height - (isRotated ? highestLabelSize.offset : 0)) + (isRotated ? 0 : lineSpace); // padding\n\n          minSize.height = Math.min(me.maxHeight, minSize.height + labelHeight + tickPadding);\n          var offsetLeft = me.getPixelForTick(0) - me.left;\n          var offsetRight = me.right - me.getPixelForTick(me.getTicks().length - 1);\n          var paddingLeft, paddingRight; // Ensure that our ticks are always inside the canvas. When rotated, ticks are right aligned\n          // which means that the right padding is dominated by the font height\n\n          if (isRotated) {\n            paddingLeft = isBottom ? cosRotation * firstLabelSize.width + sinRotation * firstLabelSize.offset : sinRotation * (firstLabelSize.height - firstLabelSize.offset);\n            paddingRight = isBottom ? sinRotation * (lastLabelSize.height - lastLabelSize.offset) : cosRotation * lastLabelSize.width + sinRotation * lastLabelSize.offset;\n          } else {\n            paddingLeft = firstLabelSize.width / 2;\n            paddingRight = lastLabelSize.width / 2;\n          } // Adjust padding taking into account changes in offsets\n          // and add 3 px to move away from canvas edges\n\n\n          me.paddingLeft = Math.max((paddingLeft - offsetLeft) * me.width / (me.width - offsetLeft), 0) + 3;\n          me.paddingRight = Math.max((paddingRight - offsetRight) * me.width / (me.width - offsetRight), 0) + 3;\n        } else {\n          // A vertical axis is more constrained by the width. Labels are the\n          // dominant factor here, so get that length first and account for padding\n          var labelWidth = tickOpts.mirror ? 0 : // use lineSpace for consistency with horizontal axis\n          // tickPadding is not implemented for horizontal\n          widestLabelSize.width + tickPadding + lineSpace;\n          minSize.width = Math.min(me.maxWidth, minSize.width + labelWidth);\n          me.paddingTop = firstLabelSize.height / 2;\n          me.paddingBottom = lastLabelSize.height / 2;\n        }\n      }\n\n      me.handleMargins();\n\n      if (isHorizontal) {\n        me.width = me._length = chart.width - me.margins.left - me.margins.right;\n        me.height = minSize.height;\n      } else {\n        me.width = minSize.width;\n        me.height = me._length = chart.height - me.margins.top - me.margins.bottom;\n      }\n    },\n\n    /**\n     * Handle margins and padding interactions\n     * @private\n     */\n    handleMargins: function handleMargins() {\n      var me = this;\n\n      if (me.margins) {\n        me.margins.left = Math.max(me.paddingLeft, me.margins.left);\n        me.margins.top = Math.max(me.paddingTop, me.margins.top);\n        me.margins.right = Math.max(me.paddingRight, me.margins.right);\n        me.margins.bottom = Math.max(me.paddingBottom, me.margins.bottom);\n      }\n    },\n    afterFit: function afterFit() {\n      helpers$1.callback(this.options.afterFit, [this]);\n    },\n    // Shared Methods\n    isHorizontal: function isHorizontal() {\n      var pos = this.options.position;\n      return pos === 'top' || pos === 'bottom';\n    },\n    isFullWidth: function isFullWidth() {\n      return this.options.fullWidth;\n    },\n    // Get the correct value. NaN bad inputs, If the value type is object get the x or y based on whether we are horizontal or not\n    getRightValue: function getRightValue(rawValue) {\n      // Null and undefined values first\n      if (isNullOrUndef(rawValue)) {\n        return NaN;\n      } // isNaN(object) returns true, so make sure NaN is checking for a number; Discard Infinite values\n\n\n      if ((typeof rawValue === 'number' || rawValue instanceof Number) && !isFinite(rawValue)) {\n        return NaN;\n      } // If it is in fact an object, dive in one more level\n\n\n      if (rawValue) {\n        if (this.isHorizontal()) {\n          if (rawValue.x !== undefined) {\n            return this.getRightValue(rawValue.x);\n          }\n        } else if (rawValue.y !== undefined) {\n          return this.getRightValue(rawValue.y);\n        }\n      } // Value is good, return it\n\n\n      return rawValue;\n    },\n    _convertTicksToLabels: function _convertTicksToLabels(ticks) {\n      var me = this;\n      var labels, i, ilen;\n      me.ticks = ticks.map(function (tick) {\n        return tick.value;\n      });\n      me.beforeTickToLabelConversion(); // New implementations should return the formatted tick labels but for BACKWARD\n      // COMPAT, we still support no return (`this.ticks` internally changed by calling\n      // this method and supposed to contain only string values).\n\n      labels = me.convertTicksToLabels(ticks) || me.ticks;\n      me.afterTickToLabelConversion(); // BACKWARD COMPAT: synchronize `_ticks` with labels (so potentially `this.ticks`)\n\n      for (i = 0, ilen = ticks.length; i < ilen; ++i) {\n        ticks[i].label = labels[i];\n      }\n\n      return labels;\n    },\n\n    /**\n     * @private\n     */\n    _getLabelSizes: function _getLabelSizes() {\n      var me = this;\n      var labelSizes = me._labelSizes;\n\n      if (!labelSizes) {\n        me._labelSizes = labelSizes = computeLabelSizes(me.ctx, parseTickFontOptions(me.options.ticks), me.getTicks(), me.longestTextCache);\n        me.longestLabelWidth = labelSizes.widest.width;\n      }\n\n      return labelSizes;\n    },\n\n    /**\n     * @private\n     */\n    _parseValue: function _parseValue(value) {\n      var start, end, min, max;\n\n      if (isArray(value)) {\n        start = +this.getRightValue(value[0]);\n        end = +this.getRightValue(value[1]);\n        min = Math.min(start, end);\n        max = Math.max(start, end);\n      } else {\n        value = +this.getRightValue(value);\n        start = undefined;\n        end = value;\n        min = value;\n        max = value;\n      }\n\n      return {\n        min: min,\n        max: max,\n        start: start,\n        end: end\n      };\n    },\n\n    /**\n    * @private\n    */\n    _getScaleLabel: function _getScaleLabel(rawValue) {\n      var v = this._parseValue(rawValue);\n\n      if (v.start !== undefined) {\n        return '[' + v.start + ', ' + v.end + ']';\n      }\n\n      return +this.getRightValue(rawValue);\n    },\n\n    /**\n     * Used to get the value to display in the tooltip for the data at the given index\n     * @param index\n     * @param datasetIndex\n     */\n    getLabelForIndex: helpers$1.noop,\n\n    /**\n     * Returns the location of the given data point. Value can either be an index or a numerical value\n     * The coordinate (0, 0) is at the upper-left corner of the canvas\n     * @param value\n     * @param index\n     * @param datasetIndex\n     */\n    getPixelForValue: helpers$1.noop,\n\n    /**\n     * Used to get the data value from a given pixel. This is the inverse of getPixelForValue\n     * The coordinate (0, 0) is at the upper-left corner of the canvas\n     * @param pixel\n     */\n    getValueForPixel: helpers$1.noop,\n\n    /**\n     * Returns the location of the tick at the given index\n     * The coordinate (0, 0) is at the upper-left corner of the canvas\n     */\n    getPixelForTick: function getPixelForTick(index) {\n      var me = this;\n      var offset = me.options.offset;\n      var numTicks = me._ticks.length;\n      var tickWidth = 1 / Math.max(numTicks - (offset ? 0 : 1), 1);\n      return index < 0 || index > numTicks - 1 ? null : me.getPixelForDecimal(index * tickWidth + (offset ? tickWidth / 2 : 0));\n    },\n\n    /**\n     * Utility for getting the pixel location of a percentage of scale\n     * The coordinate (0, 0) is at the upper-left corner of the canvas\n     */\n    getPixelForDecimal: function getPixelForDecimal(decimal) {\n      var me = this;\n\n      if (me._reversePixels) {\n        decimal = 1 - decimal;\n      }\n\n      return me._startPixel + decimal * me._length;\n    },\n    getDecimalForPixel: function getDecimalForPixel(pixel) {\n      var decimal = (pixel - this._startPixel) / this._length;\n      return this._reversePixels ? 1 - decimal : decimal;\n    },\n\n    /**\n     * Returns the pixel for the minimum chart value\n     * The coordinate (0, 0) is at the upper-left corner of the canvas\n     */\n    getBasePixel: function getBasePixel() {\n      return this.getPixelForValue(this.getBaseValue());\n    },\n    getBaseValue: function getBaseValue() {\n      var me = this;\n      var min = me.min;\n      var max = me.max;\n      return me.beginAtZero ? 0 : min < 0 && max < 0 ? max : min > 0 && max > 0 ? min : 0;\n    },\n\n    /**\n     * Returns a subset of ticks to be plotted to avoid overlapping labels.\n     * @private\n     */\n    _autoSkip: function _autoSkip(ticks) {\n      var me = this;\n      var tickOpts = me.options.ticks;\n      var axisLength = me._length;\n      var ticksLimit = tickOpts.maxTicksLimit || axisLength / me._tickSize() + 1;\n      var majorIndices = tickOpts.major.enabled ? getMajorIndices(ticks) : [];\n      var numMajorIndices = majorIndices.length;\n      var first = majorIndices[0];\n      var last = majorIndices[numMajorIndices - 1];\n      var i, ilen, spacing, avgMajorSpacing; // If there are too many major ticks to display them all\n\n      if (numMajorIndices > ticksLimit) {\n        skipMajors(ticks, majorIndices, numMajorIndices / ticksLimit);\n        return nonSkipped(ticks);\n      }\n\n      spacing = calculateSpacing(majorIndices, ticks, axisLength, ticksLimit);\n\n      if (numMajorIndices > 0) {\n        for (i = 0, ilen = numMajorIndices - 1; i < ilen; i++) {\n          skip(ticks, spacing, majorIndices[i], majorIndices[i + 1]);\n        }\n\n        avgMajorSpacing = numMajorIndices > 1 ? (last - first) / (numMajorIndices - 1) : null;\n        skip(ticks, spacing, helpers$1.isNullOrUndef(avgMajorSpacing) ? 0 : first - avgMajorSpacing, first);\n        skip(ticks, spacing, last, helpers$1.isNullOrUndef(avgMajorSpacing) ? ticks.length : last + avgMajorSpacing);\n        return nonSkipped(ticks);\n      }\n\n      skip(ticks, spacing);\n      return nonSkipped(ticks);\n    },\n\n    /**\n     * @private\n     */\n    _tickSize: function _tickSize() {\n      var me = this;\n      var optionTicks = me.options.ticks; // Calculate space needed by label in axis direction.\n\n      var rot = helpers$1.toRadians(me.labelRotation);\n      var cos = Math.abs(Math.cos(rot));\n      var sin = Math.abs(Math.sin(rot));\n\n      var labelSizes = me._getLabelSizes();\n\n      var padding = optionTicks.autoSkipPadding || 0;\n      var w = labelSizes ? labelSizes.widest.width + padding : 0;\n      var h = labelSizes ? labelSizes.highest.height + padding : 0; // Calculate space needed for 1 tick in axis direction.\n\n      return me.isHorizontal() ? h * cos > w * sin ? w / cos : h / sin : h * sin < w * cos ? h / cos : w / sin;\n    },\n\n    /**\n     * @private\n     */\n    _isVisible: function _isVisible() {\n      var me = this;\n      var chart = me.chart;\n      var display = me.options.display;\n      var i, ilen, meta;\n\n      if (display !== 'auto') {\n        return !!display;\n      } // When 'auto', the scale is visible if at least one associated dataset is visible.\n\n\n      for (i = 0, ilen = chart.data.datasets.length; i < ilen; ++i) {\n        if (chart.isDatasetVisible(i)) {\n          meta = chart.getDatasetMeta(i);\n\n          if (meta.xAxisID === me.id || meta.yAxisID === me.id) {\n            return true;\n          }\n        }\n      }\n\n      return false;\n    },\n\n    /**\n     * @private\n     */\n    _computeGridLineItems: function _computeGridLineItems(chartArea) {\n      var me = this;\n      var chart = me.chart;\n      var options = me.options;\n      var gridLines = options.gridLines;\n      var position = options.position;\n      var offsetGridLines = gridLines.offsetGridLines;\n      var isHorizontal = me.isHorizontal();\n      var ticks = me._ticksToDraw;\n      var ticksLength = ticks.length + (offsetGridLines ? 1 : 0);\n      var tl = getTickMarkLength(gridLines);\n      var items = [];\n      var axisWidth = gridLines.drawBorder ? valueAtIndexOrDefault(gridLines.lineWidth, 0, 0) : 0;\n      var axisHalfWidth = axisWidth / 2;\n      var alignPixel = helpers$1._alignPixel;\n\n      var alignBorderValue = function alignBorderValue(pixel) {\n        return alignPixel(chart, pixel, axisWidth);\n      };\n\n      var borderValue, i, tick, lineValue, alignedLineValue;\n      var tx1, ty1, tx2, ty2, x1, y1, x2, y2, lineWidth, lineColor, borderDash, borderDashOffset;\n\n      if (position === 'top') {\n        borderValue = alignBorderValue(me.bottom);\n        ty1 = me.bottom - tl;\n        ty2 = borderValue - axisHalfWidth;\n        y1 = alignBorderValue(chartArea.top) + axisHalfWidth;\n        y2 = chartArea.bottom;\n      } else if (position === 'bottom') {\n        borderValue = alignBorderValue(me.top);\n        y1 = chartArea.top;\n        y2 = alignBorderValue(chartArea.bottom) - axisHalfWidth;\n        ty1 = borderValue + axisHalfWidth;\n        ty2 = me.top + tl;\n      } else if (position === 'left') {\n        borderValue = alignBorderValue(me.right);\n        tx1 = me.right - tl;\n        tx2 = borderValue - axisHalfWidth;\n        x1 = alignBorderValue(chartArea.left) + axisHalfWidth;\n        x2 = chartArea.right;\n      } else {\n        borderValue = alignBorderValue(me.left);\n        x1 = chartArea.left;\n        x2 = alignBorderValue(chartArea.right) - axisHalfWidth;\n        tx1 = borderValue + axisHalfWidth;\n        tx2 = me.left + tl;\n      }\n\n      for (i = 0; i < ticksLength; ++i) {\n        tick = ticks[i] || {}; // autoskipper skipped this tick (#4635)\n\n        if (isNullOrUndef(tick.label) && i < ticks.length) {\n          continue;\n        }\n\n        if (i === me.zeroLineIndex && options.offset === offsetGridLines) {\n          // Draw the first index specially\n          lineWidth = gridLines.zeroLineWidth;\n          lineColor = gridLines.zeroLineColor;\n          borderDash = gridLines.zeroLineBorderDash || [];\n          borderDashOffset = gridLines.zeroLineBorderDashOffset || 0.0;\n        } else {\n          lineWidth = valueAtIndexOrDefault(gridLines.lineWidth, i, 1);\n          lineColor = valueAtIndexOrDefault(gridLines.color, i, 'rgba(0,0,0,0.1)');\n          borderDash = gridLines.borderDash || [];\n          borderDashOffset = gridLines.borderDashOffset || 0.0;\n        }\n\n        lineValue = getPixelForGridLine(me, tick._index || i, offsetGridLines); // Skip if the pixel is out of the range\n\n        if (lineValue === undefined) {\n          continue;\n        }\n\n        alignedLineValue = alignPixel(chart, lineValue, lineWidth);\n\n        if (isHorizontal) {\n          tx1 = tx2 = x1 = x2 = alignedLineValue;\n        } else {\n          ty1 = ty2 = y1 = y2 = alignedLineValue;\n        }\n\n        items.push({\n          tx1: tx1,\n          ty1: ty1,\n          tx2: tx2,\n          ty2: ty2,\n          x1: x1,\n          y1: y1,\n          x2: x2,\n          y2: y2,\n          width: lineWidth,\n          color: lineColor,\n          borderDash: borderDash,\n          borderDashOffset: borderDashOffset\n        });\n      }\n\n      items.ticksLength = ticksLength;\n      items.borderValue = borderValue;\n      return items;\n    },\n\n    /**\n     * @private\n     */\n    _computeLabelItems: function _computeLabelItems() {\n      var me = this;\n      var options = me.options;\n      var optionTicks = options.ticks;\n      var position = options.position;\n      var isMirrored = optionTicks.mirror;\n      var isHorizontal = me.isHorizontal();\n      var ticks = me._ticksToDraw;\n      var fonts = parseTickFontOptions(optionTicks);\n      var tickPadding = optionTicks.padding;\n      var tl = getTickMarkLength(options.gridLines);\n      var rotation = -helpers$1.toRadians(me.labelRotation);\n      var items = [];\n      var i, ilen, tick, label, x, y, textAlign, pixel, font, lineHeight, lineCount, textOffset;\n\n      if (position === 'top') {\n        y = me.bottom - tl - tickPadding;\n        textAlign = !rotation ? 'center' : 'left';\n      } else if (position === 'bottom') {\n        y = me.top + tl + tickPadding;\n        textAlign = !rotation ? 'center' : 'right';\n      } else if (position === 'left') {\n        x = me.right - (isMirrored ? 0 : tl) - tickPadding;\n        textAlign = isMirrored ? 'left' : 'right';\n      } else {\n        x = me.left + (isMirrored ? 0 : tl) + tickPadding;\n        textAlign = isMirrored ? 'right' : 'left';\n      }\n\n      for (i = 0, ilen = ticks.length; i < ilen; ++i) {\n        tick = ticks[i];\n        label = tick.label; // autoskipper skipped this tick (#4635)\n\n        if (isNullOrUndef(label)) {\n          continue;\n        }\n\n        pixel = me.getPixelForTick(tick._index || i) + optionTicks.labelOffset;\n        font = tick.major ? fonts.major : fonts.minor;\n        lineHeight = font.lineHeight;\n        lineCount = isArray(label) ? label.length : 1;\n\n        if (isHorizontal) {\n          x = pixel;\n          textOffset = position === 'top' ? ((!rotation ? 0.5 : 1) - lineCount) * lineHeight : (!rotation ? 0.5 : 0) * lineHeight;\n        } else {\n          y = pixel;\n          textOffset = (1 - lineCount) * lineHeight / 2;\n        }\n\n        items.push({\n          x: x,\n          y: y,\n          rotation: rotation,\n          label: label,\n          font: font,\n          textOffset: textOffset,\n          textAlign: textAlign\n        });\n      }\n\n      return items;\n    },\n\n    /**\n     * @private\n     */\n    _drawGrid: function _drawGrid(chartArea) {\n      var me = this;\n      var gridLines = me.options.gridLines;\n\n      if (!gridLines.display) {\n        return;\n      }\n\n      var ctx = me.ctx;\n      var chart = me.chart;\n      var alignPixel = helpers$1._alignPixel;\n      var axisWidth = gridLines.drawBorder ? valueAtIndexOrDefault(gridLines.lineWidth, 0, 0) : 0;\n\n      var items = me._gridLineItems || (me._gridLineItems = me._computeGridLineItems(chartArea));\n\n      var width, color, i, ilen, item;\n\n      for (i = 0, ilen = items.length; i < ilen; ++i) {\n        item = items[i];\n        width = item.width;\n        color = item.color;\n\n        if (width && color) {\n          ctx.save();\n          ctx.lineWidth = width;\n          ctx.strokeStyle = color;\n\n          if (ctx.setLineDash) {\n            ctx.setLineDash(item.borderDash);\n            ctx.lineDashOffset = item.borderDashOffset;\n          }\n\n          ctx.beginPath();\n\n          if (gridLines.drawTicks) {\n            ctx.moveTo(item.tx1, item.ty1);\n            ctx.lineTo(item.tx2, item.ty2);\n          }\n\n          if (gridLines.drawOnChartArea) {\n            ctx.moveTo(item.x1, item.y1);\n            ctx.lineTo(item.x2, item.y2);\n          }\n\n          ctx.stroke();\n          ctx.restore();\n        }\n      }\n\n      if (axisWidth) {\n        // Draw the line at the edge of the axis\n        var firstLineWidth = axisWidth;\n        var lastLineWidth = valueAtIndexOrDefault(gridLines.lineWidth, items.ticksLength - 1, 1);\n        var borderValue = items.borderValue;\n        var x1, x2, y1, y2;\n\n        if (me.isHorizontal()) {\n          x1 = alignPixel(chart, me.left, firstLineWidth) - firstLineWidth / 2;\n          x2 = alignPixel(chart, me.right, lastLineWidth) + lastLineWidth / 2;\n          y1 = y2 = borderValue;\n        } else {\n          y1 = alignPixel(chart, me.top, firstLineWidth) - firstLineWidth / 2;\n          y2 = alignPixel(chart, me.bottom, lastLineWidth) + lastLineWidth / 2;\n          x1 = x2 = borderValue;\n        }\n\n        ctx.lineWidth = axisWidth;\n        ctx.strokeStyle = valueAtIndexOrDefault(gridLines.color, 0);\n        ctx.beginPath();\n        ctx.moveTo(x1, y1);\n        ctx.lineTo(x2, y2);\n        ctx.stroke();\n      }\n    },\n\n    /**\n     * @private\n     */\n    _drawLabels: function _drawLabels() {\n      var me = this;\n      var optionTicks = me.options.ticks;\n\n      if (!optionTicks.display) {\n        return;\n      }\n\n      var ctx = me.ctx;\n\n      var items = me._labelItems || (me._labelItems = me._computeLabelItems());\n\n      var i, j, ilen, jlen, item, tickFont, label, y;\n\n      for (i = 0, ilen = items.length; i < ilen; ++i) {\n        item = items[i];\n        tickFont = item.font; // Make sure we draw text in the correct color and font\n\n        ctx.save();\n        ctx.translate(item.x, item.y);\n        ctx.rotate(item.rotation);\n        ctx.font = tickFont.string;\n        ctx.fillStyle = tickFont.color;\n        ctx.textBaseline = 'middle';\n        ctx.textAlign = item.textAlign;\n        label = item.label;\n        y = item.textOffset;\n\n        if (isArray(label)) {\n          for (j = 0, jlen = label.length; j < jlen; ++j) {\n            // We just make sure the multiline element is a string here..\n            ctx.fillText('' + label[j], 0, y);\n            y += tickFont.lineHeight;\n          }\n        } else {\n          ctx.fillText(label, 0, y);\n        }\n\n        ctx.restore();\n      }\n    },\n\n    /**\n     * @private\n     */\n    _drawTitle: function _drawTitle() {\n      var me = this;\n      var ctx = me.ctx;\n      var options = me.options;\n      var scaleLabel = options.scaleLabel;\n\n      if (!scaleLabel.display) {\n        return;\n      }\n\n      var scaleLabelFontColor = valueOrDefault$a(scaleLabel.fontColor, core_defaults.global.defaultFontColor);\n\n      var scaleLabelFont = helpers$1.options._parseFont(scaleLabel);\n\n      var scaleLabelPadding = helpers$1.options.toPadding(scaleLabel.padding);\n      var halfLineHeight = scaleLabelFont.lineHeight / 2;\n      var position = options.position;\n      var rotation = 0;\n      var scaleLabelX, scaleLabelY;\n\n      if (me.isHorizontal()) {\n        scaleLabelX = me.left + me.width / 2; // midpoint of the width\n\n        scaleLabelY = position === 'bottom' ? me.bottom - halfLineHeight - scaleLabelPadding.bottom : me.top + halfLineHeight + scaleLabelPadding.top;\n      } else {\n        var isLeft = position === 'left';\n        scaleLabelX = isLeft ? me.left + halfLineHeight + scaleLabelPadding.top : me.right - halfLineHeight - scaleLabelPadding.top;\n        scaleLabelY = me.top + me.height / 2;\n        rotation = isLeft ? -0.5 * Math.PI : 0.5 * Math.PI;\n      }\n\n      ctx.save();\n      ctx.translate(scaleLabelX, scaleLabelY);\n      ctx.rotate(rotation);\n      ctx.textAlign = 'center';\n      ctx.textBaseline = 'middle';\n      ctx.fillStyle = scaleLabelFontColor; // render in correct colour\n\n      ctx.font = scaleLabelFont.string;\n      ctx.fillText(scaleLabel.labelString, 0, 0);\n      ctx.restore();\n    },\n    draw: function draw(chartArea) {\n      var me = this;\n\n      if (!me._isVisible()) {\n        return;\n      }\n\n      me._drawGrid(chartArea);\n\n      me._drawTitle();\n\n      me._drawLabels();\n    },\n\n    /**\n     * @private\n     */\n    _layers: function _layers() {\n      var me = this;\n      var opts = me.options;\n      var tz = opts.ticks && opts.ticks.z || 0;\n      var gz = opts.gridLines && opts.gridLines.z || 0;\n\n      if (!me._isVisible() || tz === gz || me.draw !== me._draw) {\n        // backward compatibility: draw has been overridden by custom scale\n        return [{\n          z: tz,\n          draw: function draw() {\n            me.draw.apply(me, arguments);\n          }\n        }];\n      }\n\n      return [{\n        z: gz,\n        draw: function draw() {\n          me._drawGrid.apply(me, arguments);\n\n          me._drawTitle.apply(me, arguments);\n        }\n      }, {\n        z: tz,\n        draw: function draw() {\n          me._drawLabels.apply(me, arguments);\n        }\n      }];\n    },\n\n    /**\n     * @private\n     */\n    _getMatchingVisibleMetas: function _getMatchingVisibleMetas(type) {\n      var me = this;\n      var isHorizontal = me.isHorizontal();\n      return me.chart._getSortedVisibleDatasetMetas().filter(function (meta) {\n        return (!type || meta.type === type) && (isHorizontal ? meta.xAxisID === me.id : meta.yAxisID === me.id);\n      });\n    }\n  });\n  Scale.prototype._draw = Scale.prototype.draw;\n  var core_scale = Scale;\n  var isNullOrUndef$1 = helpers$1.isNullOrUndef;\n  var defaultConfig = {\n    position: 'bottom'\n  };\n  var scale_category = core_scale.extend({\n    determineDataLimits: function determineDataLimits() {\n      var me = this;\n\n      var labels = me._getLabels();\n\n      var ticksOpts = me.options.ticks;\n      var min = ticksOpts.min;\n      var max = ticksOpts.max;\n      var minIndex = 0;\n      var maxIndex = labels.length - 1;\n      var findIndex;\n\n      if (min !== undefined) {\n        // user specified min value\n        findIndex = labels.indexOf(min);\n\n        if (findIndex >= 0) {\n          minIndex = findIndex;\n        }\n      }\n\n      if (max !== undefined) {\n        // user specified max value\n        findIndex = labels.indexOf(max);\n\n        if (findIndex >= 0) {\n          maxIndex = findIndex;\n        }\n      }\n\n      me.minIndex = minIndex;\n      me.maxIndex = maxIndex;\n      me.min = labels[minIndex];\n      me.max = labels[maxIndex];\n    },\n    buildTicks: function buildTicks() {\n      var me = this;\n\n      var labels = me._getLabels();\n\n      var minIndex = me.minIndex;\n      var maxIndex = me.maxIndex; // If we are viewing some subset of labels, slice the original array\n\n      me.ticks = minIndex === 0 && maxIndex === labels.length - 1 ? labels : labels.slice(minIndex, maxIndex + 1);\n    },\n    getLabelForIndex: function getLabelForIndex(index, datasetIndex) {\n      var me = this;\n      var chart = me.chart;\n\n      if (chart.getDatasetMeta(datasetIndex).controller._getValueScaleId() === me.id) {\n        return me.getRightValue(chart.data.datasets[datasetIndex].data[index]);\n      }\n\n      return me._getLabels()[index];\n    },\n    _configure: function _configure() {\n      var me = this;\n      var offset = me.options.offset;\n      var ticks = me.ticks;\n\n      core_scale.prototype._configure.call(me);\n\n      if (!me.isHorizontal()) {\n        // For backward compatibility, vertical category scale reverse is inverted.\n        me._reversePixels = !me._reversePixels;\n      }\n\n      if (!ticks) {\n        return;\n      }\n\n      me._startValue = me.minIndex - (offset ? 0.5 : 0);\n      me._valueRange = Math.max(ticks.length - (offset ? 0 : 1), 1);\n    },\n    // Used to get data value locations.  Value can either be an index or a numerical value\n    getPixelForValue: function getPixelForValue(value, index, datasetIndex) {\n      var me = this;\n      var valueCategory, labels, idx;\n\n      if (!isNullOrUndef$1(index) && !isNullOrUndef$1(datasetIndex)) {\n        value = me.chart.data.datasets[datasetIndex].data[index];\n      } // If value is a data object, then index is the index in the data array,\n      // not the index of the scale. We need to change that.\n\n\n      if (!isNullOrUndef$1(value)) {\n        valueCategory = me.isHorizontal() ? value.x : value.y;\n      }\n\n      if (valueCategory !== undefined || value !== undefined && isNaN(index)) {\n        labels = me._getLabels();\n        value = helpers$1.valueOrDefault(valueCategory, value);\n        idx = labels.indexOf(value);\n        index = idx !== -1 ? idx : index;\n\n        if (isNaN(index)) {\n          index = value;\n        }\n      }\n\n      return me.getPixelForDecimal((index - me._startValue) / me._valueRange);\n    },\n    getPixelForTick: function getPixelForTick(index) {\n      var ticks = this.ticks;\n      return index < 0 || index > ticks.length - 1 ? null : this.getPixelForValue(ticks[index], index + this.minIndex);\n    },\n    getValueForPixel: function getValueForPixel(pixel) {\n      var me = this;\n      var value = Math.round(me._startValue + me.getDecimalForPixel(pixel) * me._valueRange);\n      return Math.min(Math.max(value, 0), me.ticks.length - 1);\n    },\n    getBasePixel: function getBasePixel() {\n      return this.bottom;\n    }\n  }); // INTERNAL: static default options, registered in src/index.js\n\n  var _defaults = defaultConfig;\n  scale_category._defaults = _defaults;\n  var noop = helpers$1.noop;\n  var isNullOrUndef$2 = helpers$1.isNullOrUndef;\n  /**\n   * Generate a set of linear ticks\n   * @param generationOptions the options used to generate the ticks\n   * @param dataRange the range of the data\n   * @returns {number[]} array of tick values\n   */\n\n  function generateTicks(generationOptions, dataRange) {\n    var ticks = []; // To get a \"nice\" value for the tick spacing, we will use the appropriately named\n    // \"nice number\" algorithm. See https://stackoverflow.com/questions/8506881/nice-label-algorithm-for-charts-with-minimum-ticks\n    // for details.\n\n    var MIN_SPACING = 1e-14;\n    var stepSize = generationOptions.stepSize;\n    var unit = stepSize || 1;\n    var maxNumSpaces = generationOptions.maxTicks - 1;\n    var min = generationOptions.min;\n    var max = generationOptions.max;\n    var precision = generationOptions.precision;\n    var rmin = dataRange.min;\n    var rmax = dataRange.max;\n    var spacing = helpers$1.niceNum((rmax - rmin) / maxNumSpaces / unit) * unit;\n    var factor, niceMin, niceMax, numSpaces; // Beyond MIN_SPACING floating point numbers being to lose precision\n    // such that we can't do the math necessary to generate ticks\n\n    if (spacing < MIN_SPACING && isNullOrUndef$2(min) && isNullOrUndef$2(max)) {\n      return [rmin, rmax];\n    }\n\n    numSpaces = Math.ceil(rmax / spacing) - Math.floor(rmin / spacing);\n\n    if (numSpaces > maxNumSpaces) {\n      // If the calculated num of spaces exceeds maxNumSpaces, recalculate it\n      spacing = helpers$1.niceNum(numSpaces * spacing / maxNumSpaces / unit) * unit;\n    }\n\n    if (stepSize || isNullOrUndef$2(precision)) {\n      // If a precision is not specified, calculate factor based on spacing\n      factor = Math.pow(10, helpers$1._decimalPlaces(spacing));\n    } else {\n      // If the user specified a precision, round to that number of decimal places\n      factor = Math.pow(10, precision);\n      spacing = Math.ceil(spacing * factor) / factor;\n    }\n\n    niceMin = Math.floor(rmin / spacing) * spacing;\n    niceMax = Math.ceil(rmax / spacing) * spacing; // If min, max and stepSize is set and they make an evenly spaced scale use it.\n\n    if (stepSize) {\n      // If very close to our whole number, use it.\n      if (!isNullOrUndef$2(min) && helpers$1.almostWhole(min / spacing, spacing / 1000)) {\n        niceMin = min;\n      }\n\n      if (!isNullOrUndef$2(max) && helpers$1.almostWhole(max / spacing, spacing / 1000)) {\n        niceMax = max;\n      }\n    }\n\n    numSpaces = (niceMax - niceMin) / spacing; // If very close to our rounded value, use it.\n\n    if (helpers$1.almostEquals(numSpaces, Math.round(numSpaces), spacing / 1000)) {\n      numSpaces = Math.round(numSpaces);\n    } else {\n      numSpaces = Math.ceil(numSpaces);\n    }\n\n    niceMin = Math.round(niceMin * factor) / factor;\n    niceMax = Math.round(niceMax * factor) / factor;\n    ticks.push(isNullOrUndef$2(min) ? niceMin : min);\n\n    for (var j = 1; j < numSpaces; ++j) {\n      ticks.push(Math.round((niceMin + j * spacing) * factor) / factor);\n    }\n\n    ticks.push(isNullOrUndef$2(max) ? niceMax : max);\n    return ticks;\n  }\n\n  var scale_linearbase = core_scale.extend({\n    getRightValue: function getRightValue(value) {\n      if (typeof value === 'string') {\n        return +value;\n      }\n\n      return core_scale.prototype.getRightValue.call(this, value);\n    },\n    handleTickRangeOptions: function handleTickRangeOptions() {\n      var me = this;\n      var opts = me.options;\n      var tickOpts = opts.ticks; // If we are forcing it to begin at 0, but 0 will already be rendered on the chart,\n      // do nothing since that would make the chart weird. If the user really wants a weird chart\n      // axis, they can manually override it\n\n      if (tickOpts.beginAtZero) {\n        var minSign = helpers$1.sign(me.min);\n        var maxSign = helpers$1.sign(me.max);\n\n        if (minSign < 0 && maxSign < 0) {\n          // move the top up to 0\n          me.max = 0;\n        } else if (minSign > 0 && maxSign > 0) {\n          // move the bottom down to 0\n          me.min = 0;\n        }\n      }\n\n      var setMin = tickOpts.min !== undefined || tickOpts.suggestedMin !== undefined;\n      var setMax = tickOpts.max !== undefined || tickOpts.suggestedMax !== undefined;\n\n      if (tickOpts.min !== undefined) {\n        me.min = tickOpts.min;\n      } else if (tickOpts.suggestedMin !== undefined) {\n        if (me.min === null) {\n          me.min = tickOpts.suggestedMin;\n        } else {\n          me.min = Math.min(me.min, tickOpts.suggestedMin);\n        }\n      }\n\n      if (tickOpts.max !== undefined) {\n        me.max = tickOpts.max;\n      } else if (tickOpts.suggestedMax !== undefined) {\n        if (me.max === null) {\n          me.max = tickOpts.suggestedMax;\n        } else {\n          me.max = Math.max(me.max, tickOpts.suggestedMax);\n        }\n      }\n\n      if (setMin !== setMax) {\n        // We set the min or the max but not both.\n        // So ensure that our range is good\n        // Inverted or 0 length range can happen when\n        // ticks.min is set, and no datasets are visible\n        if (me.min >= me.max) {\n          if (setMin) {\n            me.max = me.min + 1;\n          } else {\n            me.min = me.max - 1;\n          }\n        }\n      }\n\n      if (me.min === me.max) {\n        me.max++;\n\n        if (!tickOpts.beginAtZero) {\n          me.min--;\n        }\n      }\n    },\n    getTickLimit: function getTickLimit() {\n      var me = this;\n      var tickOpts = me.options.ticks;\n      var stepSize = tickOpts.stepSize;\n      var maxTicksLimit = tickOpts.maxTicksLimit;\n      var maxTicks;\n\n      if (stepSize) {\n        maxTicks = Math.ceil(me.max / stepSize) - Math.floor(me.min / stepSize) + 1;\n      } else {\n        maxTicks = me._computeTickLimit();\n        maxTicksLimit = maxTicksLimit || 11;\n      }\n\n      if (maxTicksLimit) {\n        maxTicks = Math.min(maxTicksLimit, maxTicks);\n      }\n\n      return maxTicks;\n    },\n    _computeTickLimit: function _computeTickLimit() {\n      return Number.POSITIVE_INFINITY;\n    },\n    handleDirectionalChanges: noop,\n    buildTicks: function buildTicks() {\n      var me = this;\n      var opts = me.options;\n      var tickOpts = opts.ticks; // Figure out what the max number of ticks we can support it is based on the size of\n      // the axis area. For now, we say that the minimum tick spacing in pixels must be 40\n      // We also limit the maximum number of ticks to 11 which gives a nice 10 squares on\n      // the graph. Make sure we always have at least 2 ticks\n\n      var maxTicks = me.getTickLimit();\n      maxTicks = Math.max(2, maxTicks);\n      var numericGeneratorOptions = {\n        maxTicks: maxTicks,\n        min: tickOpts.min,\n        max: tickOpts.max,\n        precision: tickOpts.precision,\n        stepSize: helpers$1.valueOrDefault(tickOpts.fixedStepSize, tickOpts.stepSize)\n      };\n      var ticks = me.ticks = generateTicks(numericGeneratorOptions, me);\n      me.handleDirectionalChanges(); // At this point, we need to update our max and min given the tick values since we have expanded the\n      // range of the scale\n\n      me.max = helpers$1.max(ticks);\n      me.min = helpers$1.min(ticks);\n\n      if (tickOpts.reverse) {\n        ticks.reverse();\n        me.start = me.max;\n        me.end = me.min;\n      } else {\n        me.start = me.min;\n        me.end = me.max;\n      }\n    },\n    convertTicksToLabels: function convertTicksToLabels() {\n      var me = this;\n      me.ticksAsNumbers = me.ticks.slice();\n      me.zeroLineIndex = me.ticks.indexOf(0);\n      core_scale.prototype.convertTicksToLabels.call(me);\n    },\n    _configure: function _configure() {\n      var me = this;\n      var ticks = me.getTicks();\n      var start = me.min;\n      var end = me.max;\n      var offset;\n\n      core_scale.prototype._configure.call(me);\n\n      if (me.options.offset && ticks.length) {\n        offset = (end - start) / Math.max(ticks.length - 1, 1) / 2;\n        start -= offset;\n        end += offset;\n      }\n\n      me._startValue = start;\n      me._endValue = end;\n      me._valueRange = end - start;\n    }\n  });\n  var defaultConfig$1 = {\n    position: 'left',\n    ticks: {\n      callback: core_ticks.formatters.linear\n    }\n  };\n  var DEFAULT_MIN = 0;\n  var DEFAULT_MAX = 1;\n\n  function getOrCreateStack(stacks, stacked, meta) {\n    var key = [meta.type, // we have a separate stack for stack=undefined datasets when the opts.stacked is undefined\n    stacked === undefined && meta.stack === undefined ? meta.index : '', meta.stack].join('.');\n\n    if (stacks[key] === undefined) {\n      stacks[key] = {\n        pos: [],\n        neg: []\n      };\n    }\n\n    return stacks[key];\n  }\n\n  function stackData(scale, stacks, meta, data) {\n    var opts = scale.options;\n    var stacked = opts.stacked;\n    var stack = getOrCreateStack(stacks, stacked, meta);\n    var pos = stack.pos;\n    var neg = stack.neg;\n    var ilen = data.length;\n    var i, value;\n\n    for (i = 0; i < ilen; ++i) {\n      value = scale._parseValue(data[i]);\n\n      if (isNaN(value.min) || isNaN(value.max) || meta.data[i].hidden) {\n        continue;\n      }\n\n      pos[i] = pos[i] || 0;\n      neg[i] = neg[i] || 0;\n\n      if (opts.relativePoints) {\n        pos[i] = 100;\n      } else if (value.min < 0 || value.max < 0) {\n        neg[i] += value.min;\n      } else {\n        pos[i] += value.max;\n      }\n    }\n  }\n\n  function updateMinMax(scale, meta, data) {\n    var ilen = data.length;\n    var i, value;\n\n    for (i = 0; i < ilen; ++i) {\n      value = scale._parseValue(data[i]);\n\n      if (isNaN(value.min) || isNaN(value.max) || meta.data[i].hidden) {\n        continue;\n      }\n\n      scale.min = Math.min(scale.min, value.min);\n      scale.max = Math.max(scale.max, value.max);\n    }\n  }\n\n  var scale_linear = scale_linearbase.extend({\n    determineDataLimits: function determineDataLimits() {\n      var me = this;\n      var opts = me.options;\n      var chart = me.chart;\n      var datasets = chart.data.datasets;\n\n      var metasets = me._getMatchingVisibleMetas();\n\n      var hasStacks = opts.stacked;\n      var stacks = {};\n      var ilen = metasets.length;\n      var i, meta, data, values;\n      me.min = Number.POSITIVE_INFINITY;\n      me.max = Number.NEGATIVE_INFINITY;\n\n      if (hasStacks === undefined) {\n        for (i = 0; !hasStacks && i < ilen; ++i) {\n          meta = metasets[i];\n          hasStacks = meta.stack !== undefined;\n        }\n      }\n\n      for (i = 0; i < ilen; ++i) {\n        meta = metasets[i];\n        data = datasets[meta.index].data;\n\n        if (hasStacks) {\n          stackData(me, stacks, meta, data);\n        } else {\n          updateMinMax(me, meta, data);\n        }\n      }\n\n      helpers$1.each(stacks, function (stackValues) {\n        values = stackValues.pos.concat(stackValues.neg);\n        me.min = Math.min(me.min, helpers$1.min(values));\n        me.max = Math.max(me.max, helpers$1.max(values));\n      });\n      me.min = helpers$1.isFinite(me.min) && !isNaN(me.min) ? me.min : DEFAULT_MIN;\n      me.max = helpers$1.isFinite(me.max) && !isNaN(me.max) ? me.max : DEFAULT_MAX; // Common base implementation to handle ticks.min, ticks.max, ticks.beginAtZero\n\n      me.handleTickRangeOptions();\n    },\n    // Returns the maximum number of ticks based on the scale dimension\n    _computeTickLimit: function _computeTickLimit() {\n      var me = this;\n      var tickFont;\n\n      if (me.isHorizontal()) {\n        return Math.ceil(me.width / 40);\n      }\n\n      tickFont = helpers$1.options._parseFont(me.options.ticks);\n      return Math.ceil(me.height / tickFont.lineHeight);\n    },\n    // Called after the ticks are built. We need\n    handleDirectionalChanges: function handleDirectionalChanges() {\n      if (!this.isHorizontal()) {\n        // We are in a vertical orientation. The top value is the highest. So reverse the array\n        this.ticks.reverse();\n      }\n    },\n    getLabelForIndex: function getLabelForIndex(index, datasetIndex) {\n      return this._getScaleLabel(this.chart.data.datasets[datasetIndex].data[index]);\n    },\n    // Utils\n    getPixelForValue: function getPixelForValue(value) {\n      var me = this;\n      return me.getPixelForDecimal((+me.getRightValue(value) - me._startValue) / me._valueRange);\n    },\n    getValueForPixel: function getValueForPixel(pixel) {\n      return this._startValue + this.getDecimalForPixel(pixel) * this._valueRange;\n    },\n    getPixelForTick: function getPixelForTick(index) {\n      var ticks = this.ticksAsNumbers;\n\n      if (index < 0 || index > ticks.length - 1) {\n        return null;\n      }\n\n      return this.getPixelForValue(ticks[index]);\n    }\n  }); // INTERNAL: static default options, registered in src/index.js\n\n  var _defaults$1 = defaultConfig$1;\n  scale_linear._defaults = _defaults$1;\n  var valueOrDefault$b = helpers$1.valueOrDefault;\n  var log10 = helpers$1.math.log10;\n  /**\n   * Generate a set of logarithmic ticks\n   * @param generationOptions the options used to generate the ticks\n   * @param dataRange the range of the data\n   * @returns {number[]} array of tick values\n   */\n\n  function generateTicks$1(generationOptions, dataRange) {\n    var ticks = [];\n    var tickVal = valueOrDefault$b(generationOptions.min, Math.pow(10, Math.floor(log10(dataRange.min))));\n    var endExp = Math.floor(log10(dataRange.max));\n    var endSignificand = Math.ceil(dataRange.max / Math.pow(10, endExp));\n    var exp, significand;\n\n    if (tickVal === 0) {\n      exp = Math.floor(log10(dataRange.minNotZero));\n      significand = Math.floor(dataRange.minNotZero / Math.pow(10, exp));\n      ticks.push(tickVal);\n      tickVal = significand * Math.pow(10, exp);\n    } else {\n      exp = Math.floor(log10(tickVal));\n      significand = Math.floor(tickVal / Math.pow(10, exp));\n    }\n\n    var precision = exp < 0 ? Math.pow(10, Math.abs(exp)) : 1;\n\n    do {\n      ticks.push(tickVal);\n      ++significand;\n\n      if (significand === 10) {\n        significand = 1;\n        ++exp;\n        precision = exp >= 0 ? 1 : precision;\n      }\n\n      tickVal = Math.round(significand * Math.pow(10, exp) * precision) / precision;\n    } while (exp < endExp || exp === endExp && significand < endSignificand);\n\n    var lastTick = valueOrDefault$b(generationOptions.max, tickVal);\n    ticks.push(lastTick);\n    return ticks;\n  }\n\n  var defaultConfig$2 = {\n    position: 'left',\n    // label settings\n    ticks: {\n      callback: core_ticks.formatters.logarithmic\n    }\n  }; // TODO(v3): change this to positiveOrDefault\n\n  function nonNegativeOrDefault(value, defaultValue) {\n    return helpers$1.isFinite(value) && value >= 0 ? value : defaultValue;\n  }\n\n  var scale_logarithmic = core_scale.extend({\n    determineDataLimits: function determineDataLimits() {\n      var me = this;\n      var opts = me.options;\n      var chart = me.chart;\n      var datasets = chart.data.datasets;\n      var isHorizontal = me.isHorizontal();\n\n      function IDMatches(meta) {\n        return isHorizontal ? meta.xAxisID === me.id : meta.yAxisID === me.id;\n      }\n\n      var datasetIndex, meta, value, data, i, ilen; // Calculate Range\n\n      me.min = Number.POSITIVE_INFINITY;\n      me.max = Number.NEGATIVE_INFINITY;\n      me.minNotZero = Number.POSITIVE_INFINITY;\n      var hasStacks = opts.stacked;\n\n      if (hasStacks === undefined) {\n        for (datasetIndex = 0; datasetIndex < datasets.length; datasetIndex++) {\n          meta = chart.getDatasetMeta(datasetIndex);\n\n          if (chart.isDatasetVisible(datasetIndex) && IDMatches(meta) && meta.stack !== undefined) {\n            hasStacks = true;\n            break;\n          }\n        }\n      }\n\n      if (opts.stacked || hasStacks) {\n        var valuesPerStack = {};\n\n        for (datasetIndex = 0; datasetIndex < datasets.length; datasetIndex++) {\n          meta = chart.getDatasetMeta(datasetIndex);\n          var key = [meta.type, // we have a separate stack for stack=undefined datasets when the opts.stacked is undefined\n          opts.stacked === undefined && meta.stack === undefined ? datasetIndex : '', meta.stack].join('.');\n\n          if (chart.isDatasetVisible(datasetIndex) && IDMatches(meta)) {\n            if (valuesPerStack[key] === undefined) {\n              valuesPerStack[key] = [];\n            }\n\n            data = datasets[datasetIndex].data;\n\n            for (i = 0, ilen = data.length; i < ilen; i++) {\n              var values = valuesPerStack[key];\n              value = me._parseValue(data[i]); // invalid, hidden and negative values are ignored\n\n              if (isNaN(value.min) || isNaN(value.max) || meta.data[i].hidden || value.min < 0 || value.max < 0) {\n                continue;\n              }\n\n              values[i] = values[i] || 0;\n              values[i] += value.max;\n            }\n          }\n        }\n\n        helpers$1.each(valuesPerStack, function (valuesForType) {\n          if (valuesForType.length > 0) {\n            var minVal = helpers$1.min(valuesForType);\n            var maxVal = helpers$1.max(valuesForType);\n            me.min = Math.min(me.min, minVal);\n            me.max = Math.max(me.max, maxVal);\n          }\n        });\n      } else {\n        for (datasetIndex = 0; datasetIndex < datasets.length; datasetIndex++) {\n          meta = chart.getDatasetMeta(datasetIndex);\n\n          if (chart.isDatasetVisible(datasetIndex) && IDMatches(meta)) {\n            data = datasets[datasetIndex].data;\n\n            for (i = 0, ilen = data.length; i < ilen; i++) {\n              value = me._parseValue(data[i]); // invalid, hidden and negative values are ignored\n\n              if (isNaN(value.min) || isNaN(value.max) || meta.data[i].hidden || value.min < 0 || value.max < 0) {\n                continue;\n              }\n\n              me.min = Math.min(value.min, me.min);\n              me.max = Math.max(value.max, me.max);\n\n              if (value.min !== 0) {\n                me.minNotZero = Math.min(value.min, me.minNotZero);\n              }\n            }\n          }\n        }\n      }\n\n      me.min = helpers$1.isFinite(me.min) ? me.min : null;\n      me.max = helpers$1.isFinite(me.max) ? me.max : null;\n      me.minNotZero = helpers$1.isFinite(me.minNotZero) ? me.minNotZero : null; // Common base implementation to handle ticks.min, ticks.max\n\n      this.handleTickRangeOptions();\n    },\n    handleTickRangeOptions: function handleTickRangeOptions() {\n      var me = this;\n      var tickOpts = me.options.ticks;\n      var DEFAULT_MIN = 1;\n      var DEFAULT_MAX = 10;\n      me.min = nonNegativeOrDefault(tickOpts.min, me.min);\n      me.max = nonNegativeOrDefault(tickOpts.max, me.max);\n\n      if (me.min === me.max) {\n        if (me.min !== 0 && me.min !== null) {\n          me.min = Math.pow(10, Math.floor(log10(me.min)) - 1);\n          me.max = Math.pow(10, Math.floor(log10(me.max)) + 1);\n        } else {\n          me.min = DEFAULT_MIN;\n          me.max = DEFAULT_MAX;\n        }\n      }\n\n      if (me.min === null) {\n        me.min = Math.pow(10, Math.floor(log10(me.max)) - 1);\n      }\n\n      if (me.max === null) {\n        me.max = me.min !== 0 ? Math.pow(10, Math.floor(log10(me.min)) + 1) : DEFAULT_MAX;\n      }\n\n      if (me.minNotZero === null) {\n        if (me.min > 0) {\n          me.minNotZero = me.min;\n        } else if (me.max < 1) {\n          me.minNotZero = Math.pow(10, Math.floor(log10(me.max)));\n        } else {\n          me.minNotZero = DEFAULT_MIN;\n        }\n      }\n    },\n    buildTicks: function buildTicks() {\n      var me = this;\n      var tickOpts = me.options.ticks;\n      var reverse = !me.isHorizontal();\n      var generationOptions = {\n        min: nonNegativeOrDefault(tickOpts.min),\n        max: nonNegativeOrDefault(tickOpts.max)\n      };\n      var ticks = me.ticks = generateTicks$1(generationOptions, me); // At this point, we need to update our max and min given the tick values since we have expanded the\n      // range of the scale\n\n      me.max = helpers$1.max(ticks);\n      me.min = helpers$1.min(ticks);\n\n      if (tickOpts.reverse) {\n        reverse = !reverse;\n        me.start = me.max;\n        me.end = me.min;\n      } else {\n        me.start = me.min;\n        me.end = me.max;\n      }\n\n      if (reverse) {\n        ticks.reverse();\n      }\n    },\n    convertTicksToLabels: function convertTicksToLabels() {\n      this.tickValues = this.ticks.slice();\n      core_scale.prototype.convertTicksToLabels.call(this);\n    },\n    // Get the correct tooltip label\n    getLabelForIndex: function getLabelForIndex(index, datasetIndex) {\n      return this._getScaleLabel(this.chart.data.datasets[datasetIndex].data[index]);\n    },\n    getPixelForTick: function getPixelForTick(index) {\n      var ticks = this.tickValues;\n\n      if (index < 0 || index > ticks.length - 1) {\n        return null;\n      }\n\n      return this.getPixelForValue(ticks[index]);\n    },\n\n    /**\n     * Returns the value of the first tick.\n     * @param {number} value - The minimum not zero value.\n     * @return {number} The first tick value.\n     * @private\n     */\n    _getFirstTickValue: function _getFirstTickValue(value) {\n      var exp = Math.floor(log10(value));\n      var significand = Math.floor(value / Math.pow(10, exp));\n      return significand * Math.pow(10, exp);\n    },\n    _configure: function _configure() {\n      var me = this;\n      var start = me.min;\n      var offset = 0;\n\n      core_scale.prototype._configure.call(me);\n\n      if (start === 0) {\n        start = me._getFirstTickValue(me.minNotZero);\n        offset = valueOrDefault$b(me.options.ticks.fontSize, core_defaults.global.defaultFontSize) / me._length;\n      }\n\n      me._startValue = log10(start);\n      me._valueOffset = offset;\n      me._valueRange = (log10(me.max) - log10(start)) / (1 - offset);\n    },\n    getPixelForValue: function getPixelForValue(value) {\n      var me = this;\n      var decimal = 0;\n      value = +me.getRightValue(value);\n\n      if (value > me.min && value > 0) {\n        decimal = (log10(value) - me._startValue) / me._valueRange + me._valueOffset;\n      }\n\n      return me.getPixelForDecimal(decimal);\n    },\n    getValueForPixel: function getValueForPixel(pixel) {\n      var me = this;\n      var decimal = me.getDecimalForPixel(pixel);\n      return decimal === 0 && me.min === 0 ? 0 : Math.pow(10, me._startValue + (decimal - me._valueOffset) * me._valueRange);\n    }\n  }); // INTERNAL: static default options, registered in src/index.js\n\n  var _defaults$2 = defaultConfig$2;\n  scale_logarithmic._defaults = _defaults$2;\n  var valueOrDefault$c = helpers$1.valueOrDefault;\n  var valueAtIndexOrDefault$1 = helpers$1.valueAtIndexOrDefault;\n  var resolve$4 = helpers$1.options.resolve;\n  var defaultConfig$3 = {\n    display: true,\n    // Boolean - Whether to animate scaling the chart from the centre\n    animate: true,\n    position: 'chartArea',\n    angleLines: {\n      display: true,\n      color: 'rgba(0,0,0,0.1)',\n      lineWidth: 1,\n      borderDash: [],\n      borderDashOffset: 0.0\n    },\n    gridLines: {\n      circular: false\n    },\n    // label settings\n    ticks: {\n      // Boolean - Show a backdrop to the scale label\n      showLabelBackdrop: true,\n      // String - The colour of the label backdrop\n      backdropColor: 'rgba(255,255,255,0.75)',\n      // Number - The backdrop padding above & below the label in pixels\n      backdropPaddingY: 2,\n      // Number - The backdrop padding to the side of the label in pixels\n      backdropPaddingX: 2,\n      callback: core_ticks.formatters.linear\n    },\n    pointLabels: {\n      // Boolean - if true, show point labels\n      display: true,\n      // Number - Point label font size in pixels\n      fontSize: 10,\n      // Function - Used to convert point labels\n      callback: function callback(label) {\n        return label;\n      }\n    }\n  };\n\n  function getTickBackdropHeight(opts) {\n    var tickOpts = opts.ticks;\n\n    if (tickOpts.display && opts.display) {\n      return valueOrDefault$c(tickOpts.fontSize, core_defaults.global.defaultFontSize) + tickOpts.backdropPaddingY * 2;\n    }\n\n    return 0;\n  }\n\n  function measureLabelSize(ctx, lineHeight, label) {\n    if (helpers$1.isArray(label)) {\n      return {\n        w: helpers$1.longestText(ctx, ctx.font, label),\n        h: label.length * lineHeight\n      };\n    }\n\n    return {\n      w: ctx.measureText(label).width,\n      h: lineHeight\n    };\n  }\n\n  function determineLimits(angle, pos, size, min, max) {\n    if (angle === min || angle === max) {\n      return {\n        start: pos - size / 2,\n        end: pos + size / 2\n      };\n    } else if (angle < min || angle > max) {\n      return {\n        start: pos - size,\n        end: pos\n      };\n    }\n\n    return {\n      start: pos,\n      end: pos + size\n    };\n  }\n  /**\n   * Helper function to fit a radial linear scale with point labels\n   */\n\n\n  function fitWithPointLabels(scale) {\n    // Right, this is really confusing and there is a lot of maths going on here\n    // The gist of the problem is here: https://gist.github.com/nnnick/696cc9c55f4b0beb8fe9\n    //\n    // Reaction: https://dl.dropboxusercontent.com/u/34601363/toomuchscience.gif\n    //\n    // Solution:\n    //\n    // We assume the radius of the polygon is half the size of the canvas at first\n    // at each index we check if the text overlaps.\n    //\n    // Where it does, we store that angle and that index.\n    //\n    // After finding the largest index and angle we calculate how much we need to remove\n    // from the shape radius to move the point inwards by that x.\n    //\n    // We average the left and right distances to get the maximum shape radius that can fit in the box\n    // along with labels.\n    //\n    // Once we have that, we can find the centre point for the chart, by taking the x text protrusion\n    // on each side, removing that from the size, halving it and adding the left x protrusion width.\n    //\n    // This will mean we have a shape fitted to the canvas, as large as it can be with the labels\n    // and position it in the most space efficient manner\n    //\n    // https://dl.dropboxusercontent.com/u/34601363/yeahscience.gif\n    var plFont = helpers$1.options._parseFont(scale.options.pointLabels); // Get maximum radius of the polygon. Either half the height (minus the text width) or half the width.\n    // Use this to calculate the offset + change. - Make sure L/R protrusion is at least 0 to stop issues with centre points\n\n\n    var furthestLimits = {\n      l: 0,\n      r: scale.width,\n      t: 0,\n      b: scale.height - scale.paddingTop\n    };\n    var furthestAngles = {};\n    var i, textSize, pointPosition;\n    scale.ctx.font = plFont.string;\n    scale._pointLabelSizes = [];\n    var valueCount = scale.chart.data.labels.length;\n\n    for (i = 0; i < valueCount; i++) {\n      pointPosition = scale.getPointPosition(i, scale.drawingArea + 5);\n      textSize = measureLabelSize(scale.ctx, plFont.lineHeight, scale.pointLabels[i]);\n      scale._pointLabelSizes[i] = textSize; // Add quarter circle to make degree 0 mean top of circle\n\n      var angleRadians = scale.getIndexAngle(i);\n      var angle = helpers$1.toDegrees(angleRadians) % 360;\n      var hLimits = determineLimits(angle, pointPosition.x, textSize.w, 0, 180);\n      var vLimits = determineLimits(angle, pointPosition.y, textSize.h, 90, 270);\n\n      if (hLimits.start < furthestLimits.l) {\n        furthestLimits.l = hLimits.start;\n        furthestAngles.l = angleRadians;\n      }\n\n      if (hLimits.end > furthestLimits.r) {\n        furthestLimits.r = hLimits.end;\n        furthestAngles.r = angleRadians;\n      }\n\n      if (vLimits.start < furthestLimits.t) {\n        furthestLimits.t = vLimits.start;\n        furthestAngles.t = angleRadians;\n      }\n\n      if (vLimits.end > furthestLimits.b) {\n        furthestLimits.b = vLimits.end;\n        furthestAngles.b = angleRadians;\n      }\n    }\n\n    scale.setReductions(scale.drawingArea, furthestLimits, furthestAngles);\n  }\n\n  function getTextAlignForAngle(angle) {\n    if (angle === 0 || angle === 180) {\n      return 'center';\n    } else if (angle < 180) {\n      return 'left';\n    }\n\n    return 'right';\n  }\n\n  function fillText(ctx, text, position, lineHeight) {\n    var y = position.y + lineHeight / 2;\n    var i, ilen;\n\n    if (helpers$1.isArray(text)) {\n      for (i = 0, ilen = text.length; i < ilen; ++i) {\n        ctx.fillText(text[i], position.x, y);\n        y += lineHeight;\n      }\n    } else {\n      ctx.fillText(text, position.x, y);\n    }\n  }\n\n  function adjustPointPositionForLabelHeight(angle, textSize, position) {\n    if (angle === 90 || angle === 270) {\n      position.y -= textSize.h / 2;\n    } else if (angle > 270 || angle < 90) {\n      position.y -= textSize.h;\n    }\n  }\n\n  function drawPointLabels(scale) {\n    var ctx = scale.ctx;\n    var opts = scale.options;\n    var pointLabelOpts = opts.pointLabels;\n    var tickBackdropHeight = getTickBackdropHeight(opts);\n    var outerDistance = scale.getDistanceFromCenterForValue(opts.ticks.reverse ? scale.min : scale.max);\n\n    var plFont = helpers$1.options._parseFont(pointLabelOpts);\n\n    ctx.save();\n    ctx.font = plFont.string;\n    ctx.textBaseline = 'middle';\n\n    for (var i = scale.chart.data.labels.length - 1; i >= 0; i--) {\n      // Extra pixels out for some label spacing\n      var extra = i === 0 ? tickBackdropHeight / 2 : 0;\n      var pointLabelPosition = scale.getPointPosition(i, outerDistance + extra + 5); // Keep this in loop since we may support array properties here\n\n      var pointLabelFontColor = valueAtIndexOrDefault$1(pointLabelOpts.fontColor, i, core_defaults.global.defaultFontColor);\n      ctx.fillStyle = pointLabelFontColor;\n      var angleRadians = scale.getIndexAngle(i);\n      var angle = helpers$1.toDegrees(angleRadians);\n      ctx.textAlign = getTextAlignForAngle(angle);\n      adjustPointPositionForLabelHeight(angle, scale._pointLabelSizes[i], pointLabelPosition);\n      fillText(ctx, scale.pointLabels[i], pointLabelPosition, plFont.lineHeight);\n    }\n\n    ctx.restore();\n  }\n\n  function drawRadiusLine(scale, gridLineOpts, radius, index) {\n    var ctx = scale.ctx;\n    var circular = gridLineOpts.circular;\n    var valueCount = scale.chart.data.labels.length;\n    var lineColor = valueAtIndexOrDefault$1(gridLineOpts.color, index - 1);\n    var lineWidth = valueAtIndexOrDefault$1(gridLineOpts.lineWidth, index - 1);\n    var pointPosition;\n\n    if (!circular && !valueCount || !lineColor || !lineWidth) {\n      return;\n    }\n\n    ctx.save();\n    ctx.strokeStyle = lineColor;\n    ctx.lineWidth = lineWidth;\n\n    if (ctx.setLineDash) {\n      ctx.setLineDash(gridLineOpts.borderDash || []);\n      ctx.lineDashOffset = gridLineOpts.borderDashOffset || 0.0;\n    }\n\n    ctx.beginPath();\n\n    if (circular) {\n      // Draw circular arcs between the points\n      ctx.arc(scale.xCenter, scale.yCenter, radius, 0, Math.PI * 2);\n    } else {\n      // Draw straight lines connecting each index\n      pointPosition = scale.getPointPosition(0, radius);\n      ctx.moveTo(pointPosition.x, pointPosition.y);\n\n      for (var i = 1; i < valueCount; i++) {\n        pointPosition = scale.getPointPosition(i, radius);\n        ctx.lineTo(pointPosition.x, pointPosition.y);\n      }\n    }\n\n    ctx.closePath();\n    ctx.stroke();\n    ctx.restore();\n  }\n\n  function numberOrZero(param) {\n    return helpers$1.isNumber(param) ? param : 0;\n  }\n\n  var scale_radialLinear = scale_linearbase.extend({\n    setDimensions: function setDimensions() {\n      var me = this; // Set the unconstrained dimension before label rotation\n\n      me.width = me.maxWidth;\n      me.height = me.maxHeight;\n      me.paddingTop = getTickBackdropHeight(me.options) / 2;\n      me.xCenter = Math.floor(me.width / 2);\n      me.yCenter = Math.floor((me.height - me.paddingTop) / 2);\n      me.drawingArea = Math.min(me.height - me.paddingTop, me.width) / 2;\n    },\n    determineDataLimits: function determineDataLimits() {\n      var me = this;\n      var chart = me.chart;\n      var min = Number.POSITIVE_INFINITY;\n      var max = Number.NEGATIVE_INFINITY;\n      helpers$1.each(chart.data.datasets, function (dataset, datasetIndex) {\n        if (chart.isDatasetVisible(datasetIndex)) {\n          var meta = chart.getDatasetMeta(datasetIndex);\n          helpers$1.each(dataset.data, function (rawValue, index) {\n            var value = +me.getRightValue(rawValue);\n\n            if (isNaN(value) || meta.data[index].hidden) {\n              return;\n            }\n\n            min = Math.min(value, min);\n            max = Math.max(value, max);\n          });\n        }\n      });\n      me.min = min === Number.POSITIVE_INFINITY ? 0 : min;\n      me.max = max === Number.NEGATIVE_INFINITY ? 0 : max; // Common base implementation to handle ticks.min, ticks.max, ticks.beginAtZero\n\n      me.handleTickRangeOptions();\n    },\n    // Returns the maximum number of ticks based on the scale dimension\n    _computeTickLimit: function _computeTickLimit() {\n      return Math.ceil(this.drawingArea / getTickBackdropHeight(this.options));\n    },\n    convertTicksToLabels: function convertTicksToLabels() {\n      var me = this;\n      scale_linearbase.prototype.convertTicksToLabels.call(me); // Point labels\n\n      me.pointLabels = me.chart.data.labels.map(function () {\n        var label = helpers$1.callback(me.options.pointLabels.callback, arguments, me);\n        return label || label === 0 ? label : '';\n      });\n    },\n    getLabelForIndex: function getLabelForIndex(index, datasetIndex) {\n      return +this.getRightValue(this.chart.data.datasets[datasetIndex].data[index]);\n    },\n    fit: function fit() {\n      var me = this;\n      var opts = me.options;\n\n      if (opts.display && opts.pointLabels.display) {\n        fitWithPointLabels(me);\n      } else {\n        me.setCenterPoint(0, 0, 0, 0);\n      }\n    },\n\n    /**\n     * Set radius reductions and determine new radius and center point\n     * @private\n     */\n    setReductions: function setReductions(largestPossibleRadius, furthestLimits, furthestAngles) {\n      var me = this;\n      var radiusReductionLeft = furthestLimits.l / Math.sin(furthestAngles.l);\n      var radiusReductionRight = Math.max(furthestLimits.r - me.width, 0) / Math.sin(furthestAngles.r);\n      var radiusReductionTop = -furthestLimits.t / Math.cos(furthestAngles.t);\n      var radiusReductionBottom = -Math.max(furthestLimits.b - (me.height - me.paddingTop), 0) / Math.cos(furthestAngles.b);\n      radiusReductionLeft = numberOrZero(radiusReductionLeft);\n      radiusReductionRight = numberOrZero(radiusReductionRight);\n      radiusReductionTop = numberOrZero(radiusReductionTop);\n      radiusReductionBottom = numberOrZero(radiusReductionBottom);\n      me.drawingArea = Math.min(Math.floor(largestPossibleRadius - (radiusReductionLeft + radiusReductionRight) / 2), Math.floor(largestPossibleRadius - (radiusReductionTop + radiusReductionBottom) / 2));\n      me.setCenterPoint(radiusReductionLeft, radiusReductionRight, radiusReductionTop, radiusReductionBottom);\n    },\n    setCenterPoint: function setCenterPoint(leftMovement, rightMovement, topMovement, bottomMovement) {\n      var me = this;\n      var maxRight = me.width - rightMovement - me.drawingArea;\n      var maxLeft = leftMovement + me.drawingArea;\n      var maxTop = topMovement + me.drawingArea;\n      var maxBottom = me.height - me.paddingTop - bottomMovement - me.drawingArea;\n      me.xCenter = Math.floor((maxLeft + maxRight) / 2 + me.left);\n      me.yCenter = Math.floor((maxTop + maxBottom) / 2 + me.top + me.paddingTop);\n    },\n    getIndexAngle: function getIndexAngle(index) {\n      var chart = this.chart;\n      var angleMultiplier = 360 / chart.data.labels.length;\n      var options = chart.options || {};\n      var startAngle = options.startAngle || 0; // Start from the top instead of right, so remove a quarter of the circle\n\n      var angle = (index * angleMultiplier + startAngle) % 360;\n      return (angle < 0 ? angle + 360 : angle) * Math.PI * 2 / 360;\n    },\n    getDistanceFromCenterForValue: function getDistanceFromCenterForValue(value) {\n      var me = this;\n\n      if (helpers$1.isNullOrUndef(value)) {\n        return NaN;\n      } // Take into account half font size + the yPadding of the top value\n\n\n      var scalingFactor = me.drawingArea / (me.max - me.min);\n\n      if (me.options.ticks.reverse) {\n        return (me.max - value) * scalingFactor;\n      }\n\n      return (value - me.min) * scalingFactor;\n    },\n    getPointPosition: function getPointPosition(index, distanceFromCenter) {\n      var me = this;\n      var thisAngle = me.getIndexAngle(index) - Math.PI / 2;\n      return {\n        x: Math.cos(thisAngle) * distanceFromCenter + me.xCenter,\n        y: Math.sin(thisAngle) * distanceFromCenter + me.yCenter\n      };\n    },\n    getPointPositionForValue: function getPointPositionForValue(index, value) {\n      return this.getPointPosition(index, this.getDistanceFromCenterForValue(value));\n    },\n    getBasePosition: function getBasePosition(index) {\n      var me = this;\n      var min = me.min;\n      var max = me.max;\n      return me.getPointPositionForValue(index || 0, me.beginAtZero ? 0 : min < 0 && max < 0 ? max : min > 0 && max > 0 ? min : 0);\n    },\n\n    /**\n     * @private\n     */\n    _drawGrid: function _drawGrid() {\n      var me = this;\n      var ctx = me.ctx;\n      var opts = me.options;\n      var gridLineOpts = opts.gridLines;\n      var angleLineOpts = opts.angleLines;\n      var lineWidth = valueOrDefault$c(angleLineOpts.lineWidth, gridLineOpts.lineWidth);\n      var lineColor = valueOrDefault$c(angleLineOpts.color, gridLineOpts.color);\n      var i, offset, position;\n\n      if (opts.pointLabels.display) {\n        drawPointLabels(me);\n      }\n\n      if (gridLineOpts.display) {\n        helpers$1.each(me.ticks, function (label, index) {\n          if (index !== 0) {\n            offset = me.getDistanceFromCenterForValue(me.ticksAsNumbers[index]);\n            drawRadiusLine(me, gridLineOpts, offset, index);\n          }\n        });\n      }\n\n      if (angleLineOpts.display && lineWidth && lineColor) {\n        ctx.save();\n        ctx.lineWidth = lineWidth;\n        ctx.strokeStyle = lineColor;\n\n        if (ctx.setLineDash) {\n          ctx.setLineDash(resolve$4([angleLineOpts.borderDash, gridLineOpts.borderDash, []]));\n          ctx.lineDashOffset = resolve$4([angleLineOpts.borderDashOffset, gridLineOpts.borderDashOffset, 0.0]);\n        }\n\n        for (i = me.chart.data.labels.length - 1; i >= 0; i--) {\n          offset = me.getDistanceFromCenterForValue(opts.ticks.reverse ? me.min : me.max);\n          position = me.getPointPosition(i, offset);\n          ctx.beginPath();\n          ctx.moveTo(me.xCenter, me.yCenter);\n          ctx.lineTo(position.x, position.y);\n          ctx.stroke();\n        }\n\n        ctx.restore();\n      }\n    },\n\n    /**\n     * @private\n     */\n    _drawLabels: function _drawLabels() {\n      var me = this;\n      var ctx = me.ctx;\n      var opts = me.options;\n      var tickOpts = opts.ticks;\n\n      if (!tickOpts.display) {\n        return;\n      }\n\n      var startAngle = me.getIndexAngle(0);\n\n      var tickFont = helpers$1.options._parseFont(tickOpts);\n\n      var tickFontColor = valueOrDefault$c(tickOpts.fontColor, core_defaults.global.defaultFontColor);\n      var offset, width;\n      ctx.save();\n      ctx.font = tickFont.string;\n      ctx.translate(me.xCenter, me.yCenter);\n      ctx.rotate(startAngle);\n      ctx.textAlign = 'center';\n      ctx.textBaseline = 'middle';\n      helpers$1.each(me.ticks, function (label, index) {\n        if (index === 0 && !tickOpts.reverse) {\n          return;\n        }\n\n        offset = me.getDistanceFromCenterForValue(me.ticksAsNumbers[index]);\n\n        if (tickOpts.showLabelBackdrop) {\n          width = ctx.measureText(label).width;\n          ctx.fillStyle = tickOpts.backdropColor;\n          ctx.fillRect(-width / 2 - tickOpts.backdropPaddingX, -offset - tickFont.size / 2 - tickOpts.backdropPaddingY, width + tickOpts.backdropPaddingX * 2, tickFont.size + tickOpts.backdropPaddingY * 2);\n        }\n\n        ctx.fillStyle = tickFontColor;\n        ctx.fillText(label, 0, -offset);\n      });\n      ctx.restore();\n    },\n\n    /**\n     * @private\n     */\n    _drawTitle: helpers$1.noop\n  }); // INTERNAL: static default options, registered in src/index.js\n\n  var _defaults$3 = defaultConfig$3;\n  scale_radialLinear._defaults = _defaults$3;\n  var deprecated$1 = helpers$1._deprecated;\n  var resolve$5 = helpers$1.options.resolve;\n  var valueOrDefault$d = helpers$1.valueOrDefault; // Integer constants are from the ES6 spec.\n\n  var MIN_INTEGER = Number.MIN_SAFE_INTEGER || -9007199254740991;\n  var MAX_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991;\n  var INTERVALS = {\n    millisecond: {\n      common: true,\n      size: 1,\n      steps: 1000\n    },\n    second: {\n      common: true,\n      size: 1000,\n      steps: 60\n    },\n    minute: {\n      common: true,\n      size: 60000,\n      steps: 60\n    },\n    hour: {\n      common: true,\n      size: 3600000,\n      steps: 24\n    },\n    day: {\n      common: true,\n      size: 86400000,\n      steps: 30\n    },\n    week: {\n      common: false,\n      size: 604800000,\n      steps: 4\n    },\n    month: {\n      common: true,\n      size: 2.628e9,\n      steps: 12\n    },\n    quarter: {\n      common: false,\n      size: 7.884e9,\n      steps: 4\n    },\n    year: {\n      common: true,\n      size: 3.154e10\n    }\n  };\n  var UNITS = Object.keys(INTERVALS);\n\n  function sorter(a, b) {\n    return a - b;\n  }\n\n  function arrayUnique(items) {\n    var hash = {};\n    var out = [];\n    var i, ilen, item;\n\n    for (i = 0, ilen = items.length; i < ilen; ++i) {\n      item = items[i];\n\n      if (!hash[item]) {\n        hash[item] = true;\n        out.push(item);\n      }\n    }\n\n    return out;\n  }\n\n  function getMin(options) {\n    return helpers$1.valueOrDefault(options.time.min, options.ticks.min);\n  }\n\n  function getMax(options) {\n    return helpers$1.valueOrDefault(options.time.max, options.ticks.max);\n  }\n  /**\n   * Returns an array of {time, pos} objects used to interpolate a specific `time` or position\n   * (`pos`) on the scale, by searching entries before and after the requested value. `pos` is\n   * a decimal between 0 and 1: 0 being the start of the scale (left or top) and 1 the other\n   * extremity (left + width or top + height). Note that it would be more optimized to directly\n   * store pre-computed pixels, but the scale dimensions are not guaranteed at the time we need\n   * to create the lookup table. The table ALWAYS contains at least two items: min and max.\n   *\n   * @param {number[]} timestamps - timestamps sorted from lowest to highest.\n   * @param {string} distribution - If 'linear', timestamps will be spread linearly along the min\n   * and max range, so basically, the table will contains only two items: {min, 0} and {max, 1}.\n   * If 'series', timestamps will be positioned at the same distance from each other. In this\n   * case, only timestamps that break the time linearity are registered, meaning that in the\n   * best case, all timestamps are linear, the table contains only min and max.\n   */\n\n\n  function buildLookupTable(timestamps, min, max, distribution) {\n    if (distribution === 'linear' || !timestamps.length) {\n      return [{\n        time: min,\n        pos: 0\n      }, {\n        time: max,\n        pos: 1\n      }];\n    }\n\n    var table = [];\n    var items = [min];\n    var i, ilen, prev, curr, next;\n\n    for (i = 0, ilen = timestamps.length; i < ilen; ++i) {\n      curr = timestamps[i];\n\n      if (curr > min && curr < max) {\n        items.push(curr);\n      }\n    }\n\n    items.push(max);\n\n    for (i = 0, ilen = items.length; i < ilen; ++i) {\n      next = items[i + 1];\n      prev = items[i - 1];\n      curr = items[i]; // only add points that breaks the scale linearity\n\n      if (prev === undefined || next === undefined || Math.round((next + prev) / 2) !== curr) {\n        table.push({\n          time: curr,\n          pos: i / (ilen - 1)\n        });\n      }\n    }\n\n    return table;\n  } // @see adapted from https://www.anujgakhar.com/2014/03/01/binary-search-in-javascript/\n\n\n  function lookup(table, key, value) {\n    var lo = 0;\n    var hi = table.length - 1;\n    var mid, i0, i1;\n\n    while (lo >= 0 && lo <= hi) {\n      mid = lo + hi >> 1;\n      i0 = table[mid - 1] || null;\n      i1 = table[mid];\n\n      if (!i0) {\n        // given value is outside table (before first item)\n        return {\n          lo: null,\n          hi: i1\n        };\n      } else if (i1[key] < value) {\n        lo = mid + 1;\n      } else if (i0[key] > value) {\n        hi = mid - 1;\n      } else {\n        return {\n          lo: i0,\n          hi: i1\n        };\n      }\n    } // given value is outside table (after last item)\n\n\n    return {\n      lo: i1,\n      hi: null\n    };\n  }\n  /**\n   * Linearly interpolates the given source `value` using the table items `skey` values and\n   * returns the associated `tkey` value. For example, interpolate(table, 'time', 42, 'pos')\n   * returns the position for a timestamp equal to 42. If value is out of bounds, values at\n   * index [0, 1] or [n - 1, n] are used for the interpolation.\n   */\n\n\n  function interpolate$1(table, skey, sval, tkey) {\n    var range = lookup(table, skey, sval); // Note: the lookup table ALWAYS contains at least 2 items (min and max)\n\n    var prev = !range.lo ? table[0] : !range.hi ? table[table.length - 2] : range.lo;\n    var next = !range.lo ? table[1] : !range.hi ? table[table.length - 1] : range.hi;\n    var span = next[skey] - prev[skey];\n    var ratio = span ? (sval - prev[skey]) / span : 0;\n    var offset = (next[tkey] - prev[tkey]) * ratio;\n    return prev[tkey] + offset;\n  }\n\n  function toTimestamp(scale, input) {\n    var adapter = scale._adapter;\n    var options = scale.options.time;\n    var parser = options.parser;\n    var format = parser || options.format;\n    var value = input;\n\n    if (typeof parser === 'function') {\n      value = parser(value);\n    } // Only parse if its not a timestamp already\n\n\n    if (!helpers$1.isFinite(value)) {\n      value = typeof format === 'string' ? adapter.parse(value, format) : adapter.parse(value);\n    }\n\n    if (value !== null) {\n      return +value;\n    } // Labels are in an incompatible format and no `parser` has been provided.\n    // The user might still use the deprecated `format` option for parsing.\n\n\n    if (!parser && typeof format === 'function') {\n      value = format(input); // `format` could return something else than a timestamp, if so, parse it\n\n      if (!helpers$1.isFinite(value)) {\n        value = adapter.parse(value);\n      }\n    }\n\n    return value;\n  }\n\n  function parse(scale, input) {\n    if (helpers$1.isNullOrUndef(input)) {\n      return null;\n    }\n\n    var options = scale.options.time;\n    var value = toTimestamp(scale, scale.getRightValue(input));\n\n    if (value === null) {\n      return value;\n    }\n\n    if (options.round) {\n      value = +scale._adapter.startOf(value, options.round);\n    }\n\n    return value;\n  }\n  /**\n   * Figures out what unit results in an appropriate number of auto-generated ticks\n   */\n\n\n  function determineUnitForAutoTicks(minUnit, min, max, capacity) {\n    var ilen = UNITS.length;\n    var i, interval, factor;\n\n    for (i = UNITS.indexOf(minUnit); i < ilen - 1; ++i) {\n      interval = INTERVALS[UNITS[i]];\n      factor = interval.steps ? interval.steps : MAX_INTEGER;\n\n      if (interval.common && Math.ceil((max - min) / (factor * interval.size)) <= capacity) {\n        return UNITS[i];\n      }\n    }\n\n    return UNITS[ilen - 1];\n  }\n  /**\n   * Figures out what unit to format a set of ticks with\n   */\n\n\n  function determineUnitForFormatting(scale, numTicks, minUnit, min, max) {\n    var i, unit;\n\n    for (i = UNITS.length - 1; i >= UNITS.indexOf(minUnit); i--) {\n      unit = UNITS[i];\n\n      if (INTERVALS[unit].common && scale._adapter.diff(max, min, unit) >= numTicks - 1) {\n        return unit;\n      }\n    }\n\n    return UNITS[minUnit ? UNITS.indexOf(minUnit) : 0];\n  }\n\n  function determineMajorUnit(unit) {\n    for (var i = UNITS.indexOf(unit) + 1, ilen = UNITS.length; i < ilen; ++i) {\n      if (INTERVALS[UNITS[i]].common) {\n        return UNITS[i];\n      }\n    }\n  }\n  /**\n   * Generates a maximum of `capacity` timestamps between min and max, rounded to the\n   * `minor` unit using the given scale time `options`.\n   * Important: this method can return ticks outside the min and max range, it's the\n   * responsibility of the calling code to clamp values if needed.\n   */\n\n\n  function generate(scale, min, max, capacity) {\n    var adapter = scale._adapter;\n    var options = scale.options;\n    var timeOpts = options.time;\n    var minor = timeOpts.unit || determineUnitForAutoTicks(timeOpts.minUnit, min, max, capacity);\n    var stepSize = resolve$5([timeOpts.stepSize, timeOpts.unitStepSize, 1]);\n    var weekday = minor === 'week' ? timeOpts.isoWeekday : false;\n    var first = min;\n    var ticks = [];\n    var time; // For 'week' unit, handle the first day of week option\n\n    if (weekday) {\n      first = +adapter.startOf(first, 'isoWeek', weekday);\n    } // Align first ticks on unit\n\n\n    first = +adapter.startOf(first, weekday ? 'day' : minor); // Prevent browser from freezing in case user options request millions of milliseconds\n\n    if (adapter.diff(max, min, minor) > 100000 * stepSize) {\n      throw min + ' and ' + max + ' are too far apart with stepSize of ' + stepSize + ' ' + minor;\n    }\n\n    for (time = first; time < max; time = +adapter.add(time, stepSize, minor)) {\n      ticks.push(time);\n    }\n\n    if (time === max || options.bounds === 'ticks') {\n      ticks.push(time);\n    }\n\n    return ticks;\n  }\n  /**\n   * Returns the start and end offsets from edges in the form of {start, end}\n   * where each value is a relative width to the scale and ranges between 0 and 1.\n   * They add extra margins on the both sides by scaling down the original scale.\n   * Offsets are added when the `offset` option is true.\n   */\n\n\n  function computeOffsets(table, ticks, min, max, options) {\n    var start = 0;\n    var end = 0;\n    var first, last;\n\n    if (options.offset && ticks.length) {\n      first = interpolate$1(table, 'time', ticks[0], 'pos');\n\n      if (ticks.length === 1) {\n        start = 1 - first;\n      } else {\n        start = (interpolate$1(table, 'time', ticks[1], 'pos') - first) / 2;\n      }\n\n      last = interpolate$1(table, 'time', ticks[ticks.length - 1], 'pos');\n\n      if (ticks.length === 1) {\n        end = last;\n      } else {\n        end = (last - interpolate$1(table, 'time', ticks[ticks.length - 2], 'pos')) / 2;\n      }\n    }\n\n    return {\n      start: start,\n      end: end,\n      factor: 1 / (start + 1 + end)\n    };\n  }\n\n  function setMajorTicks(scale, ticks, map, majorUnit) {\n    var adapter = scale._adapter;\n    var first = +adapter.startOf(ticks[0].value, majorUnit);\n    var last = ticks[ticks.length - 1].value;\n    var major, index;\n\n    for (major = first; major <= last; major = +adapter.add(major, 1, majorUnit)) {\n      index = map[major];\n\n      if (index >= 0) {\n        ticks[index].major = true;\n      }\n    }\n\n    return ticks;\n  }\n\n  function ticksFromTimestamps(scale, values, majorUnit) {\n    var ticks = [];\n    var map = {};\n    var ilen = values.length;\n    var i, value;\n\n    for (i = 0; i < ilen; ++i) {\n      value = values[i];\n      map[value] = i;\n      ticks.push({\n        value: value,\n        major: false\n      });\n    } // We set the major ticks separately from the above loop because calling startOf for every tick\n    // is expensive when there is a large number of ticks\n\n\n    return ilen === 0 || !majorUnit ? ticks : setMajorTicks(scale, ticks, map, majorUnit);\n  }\n\n  var defaultConfig$4 = {\n    position: 'bottom',\n\n    /**\n     * Data distribution along the scale:\n     * - 'linear': data are spread according to their time (distances can vary),\n     * - 'series': data are spread at the same distance from each other.\n     * @see https://github.com/chartjs/Chart.js/pull/4507\n     * @since 2.7.0\n     */\n    distribution: 'linear',\n\n    /**\n     * Scale boundary strategy (bypassed by min/max time options)\n     * - `data`: make sure data are fully visible, ticks outside are removed\n     * - `ticks`: make sure ticks are fully visible, data outside are truncated\n     * @see https://github.com/chartjs/Chart.js/pull/4556\n     * @since 2.7.0\n     */\n    bounds: 'data',\n    adapters: {},\n    time: {\n      parser: false,\n      // false == a pattern string from https://momentjs.com/docs/#/parsing/string-format/ or a custom callback that converts its argument to a moment\n      unit: false,\n      // false == automatic or override with week, month, year, etc.\n      round: false,\n      // none, or override with week, month, year, etc.\n      displayFormat: false,\n      // DEPRECATED\n      isoWeekday: false,\n      // override week start day - see https://momentjs.com/docs/#/get-set/iso-weekday/\n      minUnit: 'millisecond',\n      displayFormats: {}\n    },\n    ticks: {\n      autoSkip: false,\n\n      /**\n       * Ticks generation input values:\n       * - 'auto': generates \"optimal\" ticks based on scale size and time options.\n       * - 'data': generates ticks from data (including labels from data {t|x|y} objects).\n       * - 'labels': generates ticks from user given `data.labels` values ONLY.\n       * @see https://github.com/chartjs/Chart.js/pull/4507\n       * @since 2.7.0\n       */\n      source: 'auto',\n      major: {\n        enabled: false\n      }\n    }\n  };\n  var scale_time = core_scale.extend({\n    initialize: function initialize() {\n      this.mergeTicksOptions();\n      core_scale.prototype.initialize.call(this);\n    },\n    update: function update() {\n      var me = this;\n      var options = me.options;\n      var time = options.time || (options.time = {});\n      var adapter = me._adapter = new core_adapters._date(options.adapters.date); // DEPRECATIONS: output a message only one time per update\n\n      deprecated$1('time scale', time.format, 'time.format', 'time.parser');\n      deprecated$1('time scale', time.min, 'time.min', 'ticks.min');\n      deprecated$1('time scale', time.max, 'time.max', 'ticks.max'); // Backward compatibility: before introducing adapter, `displayFormats` was\n      // supposed to contain *all* unit/string pairs but this can't be resolved\n      // when loading the scale (adapters are loaded afterward), so let's populate\n      // missing formats on update\n\n      helpers$1.mergeIf(time.displayFormats, adapter.formats());\n      return core_scale.prototype.update.apply(me, arguments);\n    },\n\n    /**\n     * Allows data to be referenced via 't' attribute\n     */\n    getRightValue: function getRightValue(rawValue) {\n      if (rawValue && rawValue.t !== undefined) {\n        rawValue = rawValue.t;\n      }\n\n      return core_scale.prototype.getRightValue.call(this, rawValue);\n    },\n    determineDataLimits: function determineDataLimits() {\n      var me = this;\n      var chart = me.chart;\n      var adapter = me._adapter;\n      var options = me.options;\n      var unit = options.time.unit || 'day';\n      var min = MAX_INTEGER;\n      var max = MIN_INTEGER;\n      var timestamps = [];\n      var datasets = [];\n      var labels = [];\n      var i, j, ilen, jlen, data, timestamp, labelsAdded;\n\n      var dataLabels = me._getLabels();\n\n      for (i = 0, ilen = dataLabels.length; i < ilen; ++i) {\n        labels.push(parse(me, dataLabels[i]));\n      }\n\n      for (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) {\n        if (chart.isDatasetVisible(i)) {\n          data = chart.data.datasets[i].data; // Let's consider that all data have the same format.\n\n          if (helpers$1.isObject(data[0])) {\n            datasets[i] = [];\n\n            for (j = 0, jlen = data.length; j < jlen; ++j) {\n              timestamp = parse(me, data[j]);\n              timestamps.push(timestamp);\n              datasets[i][j] = timestamp;\n            }\n          } else {\n            datasets[i] = labels.slice(0);\n\n            if (!labelsAdded) {\n              timestamps = timestamps.concat(labels);\n              labelsAdded = true;\n            }\n          }\n        } else {\n          datasets[i] = [];\n        }\n      }\n\n      if (labels.length) {\n        min = Math.min(min, labels[0]);\n        max = Math.max(max, labels[labels.length - 1]);\n      }\n\n      if (timestamps.length) {\n        timestamps = ilen > 1 ? arrayUnique(timestamps).sort(sorter) : timestamps.sort(sorter);\n        min = Math.min(min, timestamps[0]);\n        max = Math.max(max, timestamps[timestamps.length - 1]);\n      }\n\n      min = parse(me, getMin(options)) || min;\n      max = parse(me, getMax(options)) || max; // In case there is no valid min/max, set limits based on unit time option\n\n      min = min === MAX_INTEGER ? +adapter.startOf(Date.now(), unit) : min;\n      max = max === MIN_INTEGER ? +adapter.endOf(Date.now(), unit) + 1 : max; // Make sure that max is strictly higher than min (required by the lookup table)\n\n      me.min = Math.min(min, max);\n      me.max = Math.max(min + 1, max); // PRIVATE\n\n      me._table = [];\n      me._timestamps = {\n        data: timestamps,\n        datasets: datasets,\n        labels: labels\n      };\n    },\n    buildTicks: function buildTicks() {\n      var me = this;\n      var min = me.min;\n      var max = me.max;\n      var options = me.options;\n      var tickOpts = options.ticks;\n      var timeOpts = options.time;\n      var timestamps = me._timestamps;\n      var ticks = [];\n      var capacity = me.getLabelCapacity(min);\n      var source = tickOpts.source;\n      var distribution = options.distribution;\n      var i, ilen, timestamp;\n\n      if (source === 'data' || source === 'auto' && distribution === 'series') {\n        timestamps = timestamps.data;\n      } else if (source === 'labels') {\n        timestamps = timestamps.labels;\n      } else {\n        timestamps = generate(me, min, max, capacity);\n      }\n\n      if (options.bounds === 'ticks' && timestamps.length) {\n        min = timestamps[0];\n        max = timestamps[timestamps.length - 1];\n      } // Enforce limits with user min/max options\n\n\n      min = parse(me, getMin(options)) || min;\n      max = parse(me, getMax(options)) || max; // Remove ticks outside the min/max range\n\n      for (i = 0, ilen = timestamps.length; i < ilen; ++i) {\n        timestamp = timestamps[i];\n\n        if (timestamp >= min && timestamp <= max) {\n          ticks.push(timestamp);\n        }\n      }\n\n      me.min = min;\n      me.max = max; // PRIVATE\n      // determineUnitForFormatting relies on the number of ticks so we don't use it when\n      // autoSkip is enabled because we don't yet know what the final number of ticks will be\n\n      me._unit = timeOpts.unit || (tickOpts.autoSkip ? determineUnitForAutoTicks(timeOpts.minUnit, me.min, me.max, capacity) : determineUnitForFormatting(me, ticks.length, timeOpts.minUnit, me.min, me.max));\n      me._majorUnit = !tickOpts.major.enabled || me._unit === 'year' ? undefined : determineMajorUnit(me._unit);\n      me._table = buildLookupTable(me._timestamps.data, min, max, distribution);\n      me._offsets = computeOffsets(me._table, ticks, min, max, options);\n\n      if (tickOpts.reverse) {\n        ticks.reverse();\n      }\n\n      return ticksFromTimestamps(me, ticks, me._majorUnit);\n    },\n    getLabelForIndex: function getLabelForIndex(index, datasetIndex) {\n      var me = this;\n      var adapter = me._adapter;\n      var data = me.chart.data;\n      var timeOpts = me.options.time;\n      var label = data.labels && index < data.labels.length ? data.labels[index] : '';\n      var value = data.datasets[datasetIndex].data[index];\n\n      if (helpers$1.isObject(value)) {\n        label = me.getRightValue(value);\n      }\n\n      if (timeOpts.tooltipFormat) {\n        return adapter.format(toTimestamp(me, label), timeOpts.tooltipFormat);\n      }\n\n      if (typeof label === 'string') {\n        return label;\n      }\n\n      return adapter.format(toTimestamp(me, label), timeOpts.displayFormats.datetime);\n    },\n\n    /**\n     * Function to format an individual tick mark\n     * @private\n     */\n    tickFormatFunction: function tickFormatFunction(time, index, ticks, format) {\n      var me = this;\n      var adapter = me._adapter;\n      var options = me.options;\n      var formats = options.time.displayFormats;\n      var minorFormat = formats[me._unit];\n      var majorUnit = me._majorUnit;\n      var majorFormat = formats[majorUnit];\n      var tick = ticks[index];\n      var tickOpts = options.ticks;\n      var major = majorUnit && majorFormat && tick && tick.major;\n      var label = adapter.format(time, format ? format : major ? majorFormat : minorFormat);\n      var nestedTickOpts = major ? tickOpts.major : tickOpts.minor;\n      var formatter = resolve$5([nestedTickOpts.callback, nestedTickOpts.userCallback, tickOpts.callback, tickOpts.userCallback]);\n      return formatter ? formatter(label, index, ticks) : label;\n    },\n    convertTicksToLabels: function convertTicksToLabels(ticks) {\n      var labels = [];\n      var i, ilen;\n\n      for (i = 0, ilen = ticks.length; i < ilen; ++i) {\n        labels.push(this.tickFormatFunction(ticks[i].value, i, ticks));\n      }\n\n      return labels;\n    },\n\n    /**\n     * @private\n     */\n    getPixelForOffset: function getPixelForOffset(time) {\n      var me = this;\n      var offsets = me._offsets;\n      var pos = interpolate$1(me._table, 'time', time, 'pos');\n      return me.getPixelForDecimal((offsets.start + pos) * offsets.factor);\n    },\n    getPixelForValue: function getPixelForValue(value, index, datasetIndex) {\n      var me = this;\n      var time = null;\n\n      if (index !== undefined && datasetIndex !== undefined) {\n        time = me._timestamps.datasets[datasetIndex][index];\n      }\n\n      if (time === null) {\n        time = parse(me, value);\n      }\n\n      if (time !== null) {\n        return me.getPixelForOffset(time);\n      }\n    },\n    getPixelForTick: function getPixelForTick(index) {\n      var ticks = this.getTicks();\n      return index >= 0 && index < ticks.length ? this.getPixelForOffset(ticks[index].value) : null;\n    },\n    getValueForPixel: function getValueForPixel(pixel) {\n      var me = this;\n      var offsets = me._offsets;\n      var pos = me.getDecimalForPixel(pixel) / offsets.factor - offsets.end;\n      var time = interpolate$1(me._table, 'pos', pos, 'time'); // DEPRECATION, we should return time directly\n\n      return me._adapter._create(time);\n    },\n\n    /**\n     * @private\n     */\n    _getLabelSize: function _getLabelSize(label) {\n      var me = this;\n      var ticksOpts = me.options.ticks;\n      var tickLabelWidth = me.ctx.measureText(label).width;\n      var angle = helpers$1.toRadians(me.isHorizontal() ? ticksOpts.maxRotation : ticksOpts.minRotation);\n      var cosRotation = Math.cos(angle);\n      var sinRotation = Math.sin(angle);\n      var tickFontSize = valueOrDefault$d(ticksOpts.fontSize, core_defaults.global.defaultFontSize);\n      return {\n        w: tickLabelWidth * cosRotation + tickFontSize * sinRotation,\n        h: tickLabelWidth * sinRotation + tickFontSize * cosRotation\n      };\n    },\n\n    /**\n     * Crude approximation of what the label width might be\n     * @private\n     */\n    getLabelWidth: function getLabelWidth(label) {\n      return this._getLabelSize(label).w;\n    },\n\n    /**\n     * @private\n     */\n    getLabelCapacity: function getLabelCapacity(exampleTime) {\n      var me = this;\n      var timeOpts = me.options.time;\n      var displayFormats = timeOpts.displayFormats; // pick the longest format (milliseconds) for guestimation\n\n      var format = displayFormats[timeOpts.unit] || displayFormats.millisecond;\n      var exampleLabel = me.tickFormatFunction(exampleTime, 0, ticksFromTimestamps(me, [exampleTime], me._majorUnit), format);\n\n      var size = me._getLabelSize(exampleLabel);\n\n      var capacity = Math.floor(me.isHorizontal() ? me.width / size.w : me.height / size.h);\n\n      if (me.options.offset) {\n        capacity--;\n      }\n\n      return capacity > 0 ? capacity : 1;\n    }\n  }); // INTERNAL: static default options, registered in src/index.js\n\n  var _defaults$4 = defaultConfig$4;\n  scale_time._defaults = _defaults$4;\n  var scales = {\n    category: scale_category,\n    linear: scale_linear,\n    logarithmic: scale_logarithmic,\n    radialLinear: scale_radialLinear,\n    time: scale_time\n  };\n  var FORMATS = {\n    datetime: 'MMM D, YYYY, h:mm:ss a',\n    millisecond: 'h:mm:ss.SSS a',\n    second: 'h:mm:ss a',\n    minute: 'h:mm a',\n    hour: 'hA',\n    day: 'MMM D',\n    week: 'll',\n    month: 'MMM YYYY',\n    quarter: '[Q]Q - YYYY',\n    year: 'YYYY'\n  };\n\n  core_adapters._date.override(typeof moment === 'function' ? {\n    _id: 'moment',\n    // DEBUG ONLY\n    formats: function formats() {\n      return FORMATS;\n    },\n    parse: function parse(value, format) {\n      if (typeof value === 'string' && typeof format === 'string') {\n        value = moment(value, format);\n      } else if (!(value instanceof moment)) {\n        value = moment(value);\n      }\n\n      return value.isValid() ? value.valueOf() : null;\n    },\n    format: function format(time, _format) {\n      return moment(time).format(_format);\n    },\n    add: function add(time, amount, unit) {\n      return moment(time).add(amount, unit).valueOf();\n    },\n    diff: function diff(max, min, unit) {\n      return moment(max).diff(moment(min), unit);\n    },\n    startOf: function startOf(time, unit, weekday) {\n      time = moment(time);\n\n      if (unit === 'isoWeek') {\n        return time.isoWeekday(weekday).valueOf();\n      }\n\n      return time.startOf(unit).valueOf();\n    },\n    endOf: function endOf(time, unit) {\n      return moment(time).endOf(unit).valueOf();\n    },\n    // DEPRECATIONS\n\n    /**\n     * Provided for backward compatibility with scale.getValueForPixel().\n     * @deprecated since version 2.8.0\n     * @todo remove at version 3\n     * @private\n     */\n    _create: function _create(time) {\n      return moment(time);\n    }\n  } : {});\n\n  core_defaults._set('global', {\n    plugins: {\n      filler: {\n        propagate: true\n      }\n    }\n  });\n\n  var mappers = {\n    dataset: function dataset(source) {\n      var index = source.fill;\n      var chart = source.chart;\n      var meta = chart.getDatasetMeta(index);\n      var visible = meta && chart.isDatasetVisible(index);\n      var points = visible && meta.dataset._children || [];\n      var length = points.length || 0;\n      return !length ? null : function (point, i) {\n        return i < length && points[i]._view || null;\n      };\n    },\n    boundary: function boundary(source) {\n      var boundary = source.boundary;\n      var x = boundary ? boundary.x : null;\n      var y = boundary ? boundary.y : null;\n\n      if (helpers$1.isArray(boundary)) {\n        return function (point, i) {\n          return boundary[i];\n        };\n      }\n\n      return function (point) {\n        return {\n          x: x === null ? point.x : x,\n          y: y === null ? point.y : y\n        };\n      };\n    }\n  }; // @todo if (fill[0] === '#')\n\n  function decodeFill(el, index, count) {\n    var model = el._model || {};\n    var fill = model.fill;\n    var target;\n\n    if (fill === undefined) {\n      fill = !!model.backgroundColor;\n    }\n\n    if (fill === false || fill === null) {\n      return false;\n    }\n\n    if (fill === true) {\n      return 'origin';\n    }\n\n    target = parseFloat(fill, 10);\n\n    if (isFinite(target) && Math.floor(target) === target) {\n      if (fill[0] === '-' || fill[0] === '+') {\n        target = index + target;\n      }\n\n      if (target === index || target < 0 || target >= count) {\n        return false;\n      }\n\n      return target;\n    }\n\n    switch (fill) {\n      // compatibility\n      case 'bottom':\n        return 'start';\n\n      case 'top':\n        return 'end';\n\n      case 'zero':\n        return 'origin';\n      // supported boundaries\n\n      case 'origin':\n      case 'start':\n      case 'end':\n        return fill;\n      // invalid fill values\n\n      default:\n        return false;\n    }\n  }\n\n  function computeLinearBoundary(source) {\n    var model = source.el._model || {};\n    var scale = source.el._scale || {};\n    var fill = source.fill;\n    var target = null;\n    var horizontal;\n\n    if (isFinite(fill)) {\n      return null;\n    } // Backward compatibility: until v3, we still need to support boundary values set on\n    // the model (scaleTop, scaleBottom and scaleZero) because some external plugins and\n    // controllers might still use it (e.g. the Smith chart).\n\n\n    if (fill === 'start') {\n      target = model.scaleBottom === undefined ? scale.bottom : model.scaleBottom;\n    } else if (fill === 'end') {\n      target = model.scaleTop === undefined ? scale.top : model.scaleTop;\n    } else if (model.scaleZero !== undefined) {\n      target = model.scaleZero;\n    } else if (scale.getBasePixel) {\n      target = scale.getBasePixel();\n    }\n\n    if (target !== undefined && target !== null) {\n      if (target.x !== undefined && target.y !== undefined) {\n        return target;\n      }\n\n      if (helpers$1.isFinite(target)) {\n        horizontal = scale.isHorizontal();\n        return {\n          x: horizontal ? target : null,\n          y: horizontal ? null : target\n        };\n      }\n    }\n\n    return null;\n  }\n\n  function computeCircularBoundary(source) {\n    var scale = source.el._scale;\n    var options = scale.options;\n    var length = scale.chart.data.labels.length;\n    var fill = source.fill;\n    var target = [];\n    var start, end, center, i, point;\n\n    if (!length) {\n      return null;\n    }\n\n    start = options.ticks.reverse ? scale.max : scale.min;\n    end = options.ticks.reverse ? scale.min : scale.max;\n    center = scale.getPointPositionForValue(0, start);\n\n    for (i = 0; i < length; ++i) {\n      point = fill === 'start' || fill === 'end' ? scale.getPointPositionForValue(i, fill === 'start' ? start : end) : scale.getBasePosition(i);\n\n      if (options.gridLines.circular) {\n        point.cx = center.x;\n        point.cy = center.y;\n        point.angle = scale.getIndexAngle(i) - Math.PI / 2;\n      }\n\n      target.push(point);\n    }\n\n    return target;\n  }\n\n  function computeBoundary(source) {\n    var scale = source.el._scale || {};\n\n    if (scale.getPointPositionForValue) {\n      return computeCircularBoundary(source);\n    }\n\n    return computeLinearBoundary(source);\n  }\n\n  function resolveTarget(sources, index, propagate) {\n    var source = sources[index];\n    var fill = source.fill;\n    var visited = [index];\n    var target;\n\n    if (!propagate) {\n      return fill;\n    }\n\n    while (fill !== false && visited.indexOf(fill) === -1) {\n      if (!isFinite(fill)) {\n        return fill;\n      }\n\n      target = sources[fill];\n\n      if (!target) {\n        return false;\n      }\n\n      if (target.visible) {\n        return fill;\n      }\n\n      visited.push(fill);\n      fill = target.fill;\n    }\n\n    return false;\n  }\n\n  function createMapper(source) {\n    var fill = source.fill;\n    var type = 'dataset';\n\n    if (fill === false) {\n      return null;\n    }\n\n    if (!isFinite(fill)) {\n      type = 'boundary';\n    }\n\n    return mappers[type](source);\n  }\n\n  function isDrawable(point) {\n    return point && !point.skip;\n  }\n\n  function drawArea(ctx, curve0, curve1, len0, len1) {\n    var i, cx, cy, r;\n\n    if (!len0 || !len1) {\n      return;\n    } // building first area curve (normal)\n\n\n    ctx.moveTo(curve0[0].x, curve0[0].y);\n\n    for (i = 1; i < len0; ++i) {\n      helpers$1.canvas.lineTo(ctx, curve0[i - 1], curve0[i]);\n    }\n\n    if (curve1[0].angle !== undefined) {\n      cx = curve1[0].cx;\n      cy = curve1[0].cy;\n      r = Math.sqrt(Math.pow(curve1[0].x - cx, 2) + Math.pow(curve1[0].y - cy, 2));\n\n      for (i = len1 - 1; i > 0; --i) {\n        ctx.arc(cx, cy, r, curve1[i].angle, curve1[i - 1].angle, true);\n      }\n\n      return;\n    } // joining the two area curves\n\n\n    ctx.lineTo(curve1[len1 - 1].x, curve1[len1 - 1].y); // building opposite area curve (reverse)\n\n    for (i = len1 - 1; i > 0; --i) {\n      helpers$1.canvas.lineTo(ctx, curve1[i], curve1[i - 1], true);\n    }\n  }\n\n  function doFill(ctx, points, mapper, view, color, loop) {\n    var count = points.length;\n    var span = view.spanGaps;\n    var curve0 = [];\n    var curve1 = [];\n    var len0 = 0;\n    var len1 = 0;\n    var i, ilen, index, p0, p1, d0, d1, loopOffset;\n    ctx.beginPath();\n\n    for (i = 0, ilen = count; i < ilen; ++i) {\n      index = i % count;\n      p0 = points[index]._view;\n      p1 = mapper(p0, index, view);\n      d0 = isDrawable(p0);\n      d1 = isDrawable(p1);\n\n      if (loop && loopOffset === undefined && d0) {\n        loopOffset = i + 1;\n        ilen = count + loopOffset;\n      }\n\n      if (d0 && d1) {\n        len0 = curve0.push(p0);\n        len1 = curve1.push(p1);\n      } else if (len0 && len1) {\n        if (!span) {\n          drawArea(ctx, curve0, curve1, len0, len1);\n          len0 = len1 = 0;\n          curve0 = [];\n          curve1 = [];\n        } else {\n          if (d0) {\n            curve0.push(p0);\n          }\n\n          if (d1) {\n            curve1.push(p1);\n          }\n        }\n      }\n    }\n\n    drawArea(ctx, curve0, curve1, len0, len1);\n    ctx.closePath();\n    ctx.fillStyle = color;\n    ctx.fill();\n  }\n\n  var plugin_filler = {\n    id: 'filler',\n    afterDatasetsUpdate: function afterDatasetsUpdate(chart, options) {\n      var count = (chart.data.datasets || []).length;\n      var propagate = options.propagate;\n      var sources = [];\n      var meta, i, el, source;\n\n      for (i = 0; i < count; ++i) {\n        meta = chart.getDatasetMeta(i);\n        el = meta.dataset;\n        source = null;\n\n        if (el && el._model && el instanceof elements.Line) {\n          source = {\n            visible: chart.isDatasetVisible(i),\n            fill: decodeFill(el, i, count),\n            chart: chart,\n            el: el\n          };\n        }\n\n        meta.$filler = source;\n        sources.push(source);\n      }\n\n      for (i = 0; i < count; ++i) {\n        source = sources[i];\n\n        if (!source) {\n          continue;\n        }\n\n        source.fill = resolveTarget(sources, i, propagate);\n        source.boundary = computeBoundary(source);\n        source.mapper = createMapper(source);\n      }\n    },\n    beforeDatasetsDraw: function beforeDatasetsDraw(chart) {\n      var metasets = chart._getSortedVisibleDatasetMetas();\n\n      var ctx = chart.ctx;\n      var meta, i, el, view, points, mapper, color;\n\n      for (i = metasets.length - 1; i >= 0; --i) {\n        meta = metasets[i].$filler;\n\n        if (!meta || !meta.visible) {\n          continue;\n        }\n\n        el = meta.el;\n        view = el._view;\n        points = el._children || [];\n        mapper = meta.mapper;\n        color = view.backgroundColor || core_defaults.global.defaultColor;\n\n        if (mapper && color && points.length) {\n          helpers$1.canvas.clipArea(ctx, chart.chartArea);\n          doFill(ctx, points, mapper, view, color, el._loop);\n          helpers$1.canvas.unclipArea(ctx);\n        }\n      }\n    }\n  };\n  var getRtlHelper$1 = helpers$1.rtl.getRtlAdapter;\n  var noop$1 = helpers$1.noop;\n  var valueOrDefault$e = helpers$1.valueOrDefault;\n\n  core_defaults._set('global', {\n    legend: {\n      display: true,\n      position: 'top',\n      align: 'center',\n      fullWidth: true,\n      reverse: false,\n      weight: 1000,\n      // a callback that will handle\n      onClick: function onClick(e, legendItem) {\n        var index = legendItem.datasetIndex;\n        var ci = this.chart;\n        var meta = ci.getDatasetMeta(index); // See controller.isDatasetVisible comment\n\n        meta.hidden = meta.hidden === null ? !ci.data.datasets[index].hidden : null; // We hid a dataset ... rerender the chart\n\n        ci.update();\n      },\n      onHover: null,\n      onLeave: null,\n      labels: {\n        boxWidth: 40,\n        padding: 10,\n        // Generates labels shown in the legend\n        // Valid properties to return:\n        // text : text to display\n        // fillStyle : fill of coloured box\n        // strokeStyle: stroke of coloured box\n        // hidden : if this legend item refers to a hidden item\n        // lineCap : cap style for line\n        // lineDash\n        // lineDashOffset :\n        // lineJoin :\n        // lineWidth :\n        generateLabels: function generateLabels(chart) {\n          var datasets = chart.data.datasets;\n          var options = chart.options.legend || {};\n          var usePointStyle = options.labels && options.labels.usePointStyle;\n          return chart._getSortedDatasetMetas().map(function (meta) {\n            var style = meta.controller.getStyle(usePointStyle ? 0 : undefined);\n            return {\n              text: datasets[meta.index].label,\n              fillStyle: style.backgroundColor,\n              hidden: !chart.isDatasetVisible(meta.index),\n              lineCap: style.borderCapStyle,\n              lineDash: style.borderDash,\n              lineDashOffset: style.borderDashOffset,\n              lineJoin: style.borderJoinStyle,\n              lineWidth: style.borderWidth,\n              strokeStyle: style.borderColor,\n              pointStyle: style.pointStyle,\n              rotation: style.rotation,\n              // Below is extra data used for toggling the datasets\n              datasetIndex: meta.index\n            };\n          }, this);\n        }\n      }\n    },\n    legendCallback: function legendCallback(chart) {\n      var list = document.createElement('ul');\n      var datasets = chart.data.datasets;\n      var i, ilen, listItem, listItemSpan;\n      list.setAttribute('class', chart.id + '-legend');\n\n      for (i = 0, ilen = datasets.length; i < ilen; i++) {\n        listItem = list.appendChild(document.createElement('li'));\n        listItemSpan = listItem.appendChild(document.createElement('span'));\n        listItemSpan.style.backgroundColor = datasets[i].backgroundColor;\n\n        if (datasets[i].label) {\n          listItem.appendChild(document.createTextNode(datasets[i].label));\n        }\n      }\n\n      return list.outerHTML;\n    }\n  });\n  /**\n   * Helper function to get the box width based on the usePointStyle option\n   * @param {object} labelopts - the label options on the legend\n   * @param {number} fontSize - the label font size\n   * @return {number} width of the color box area\n   */\n\n\n  function getBoxWidth(labelOpts, fontSize) {\n    return labelOpts.usePointStyle && labelOpts.boxWidth > fontSize ? fontSize : labelOpts.boxWidth;\n  }\n  /**\n   * IMPORTANT: this class is exposed publicly as Chart.Legend, backward compatibility required!\n   */\n\n\n  var Legend = core_element.extend({\n    initialize: function initialize(config) {\n      var me = this;\n      helpers$1.extend(me, config); // Contains hit boxes for each dataset (in dataset order)\n\n      me.legendHitBoxes = [];\n      /**\n      \t * @private\n      \t */\n\n      me._hoveredItem = null; // Are we in doughnut mode which has a different data type\n\n      me.doughnutMode = false;\n    },\n    // These methods are ordered by lifecycle. Utilities then follow.\n    // Any function defined here is inherited by all legend types.\n    // Any function can be extended by the legend type\n    beforeUpdate: noop$1,\n    update: function update(maxWidth, maxHeight, margins) {\n      var me = this; // Update Lifecycle - Probably don't want to ever extend or overwrite this function ;)\n\n      me.beforeUpdate(); // Absorb the master measurements\n\n      me.maxWidth = maxWidth;\n      me.maxHeight = maxHeight;\n      me.margins = margins; // Dimensions\n\n      me.beforeSetDimensions();\n      me.setDimensions();\n      me.afterSetDimensions(); // Labels\n\n      me.beforeBuildLabels();\n      me.buildLabels();\n      me.afterBuildLabels(); // Fit\n\n      me.beforeFit();\n      me.fit();\n      me.afterFit(); //\n\n      me.afterUpdate();\n      return me.minSize;\n    },\n    afterUpdate: noop$1,\n    //\n    beforeSetDimensions: noop$1,\n    setDimensions: function setDimensions() {\n      var me = this; // Set the unconstrained dimension before label rotation\n\n      if (me.isHorizontal()) {\n        // Reset position before calculating rotation\n        me.width = me.maxWidth;\n        me.left = 0;\n        me.right = me.width;\n      } else {\n        me.height = me.maxHeight; // Reset position before calculating rotation\n\n        me.top = 0;\n        me.bottom = me.height;\n      } // Reset padding\n\n\n      me.paddingLeft = 0;\n      me.paddingTop = 0;\n      me.paddingRight = 0;\n      me.paddingBottom = 0; // Reset minSize\n\n      me.minSize = {\n        width: 0,\n        height: 0\n      };\n    },\n    afterSetDimensions: noop$1,\n    //\n    beforeBuildLabels: noop$1,\n    buildLabels: function buildLabels() {\n      var me = this;\n      var labelOpts = me.options.labels || {};\n      var legendItems = helpers$1.callback(labelOpts.generateLabels, [me.chart], me) || [];\n\n      if (labelOpts.filter) {\n        legendItems = legendItems.filter(function (item) {\n          return labelOpts.filter(item, me.chart.data);\n        });\n      }\n\n      if (me.options.reverse) {\n        legendItems.reverse();\n      }\n\n      me.legendItems = legendItems;\n    },\n    afterBuildLabels: noop$1,\n    //\n    beforeFit: noop$1,\n    fit: function fit() {\n      var me = this;\n      var opts = me.options;\n      var labelOpts = opts.labels;\n      var display = opts.display;\n      var ctx = me.ctx;\n\n      var labelFont = helpers$1.options._parseFont(labelOpts);\n\n      var fontSize = labelFont.size; // Reset hit boxes\n\n      var hitboxes = me.legendHitBoxes = [];\n      var minSize = me.minSize;\n      var isHorizontal = me.isHorizontal();\n\n      if (isHorizontal) {\n        minSize.width = me.maxWidth; // fill all the width\n\n        minSize.height = display ? 10 : 0;\n      } else {\n        minSize.width = display ? 10 : 0;\n        minSize.height = me.maxHeight; // fill all the height\n      } // Increase sizes here\n\n\n      if (!display) {\n        me.width = minSize.width = me.height = minSize.height = 0;\n        return;\n      }\n\n      ctx.font = labelFont.string;\n\n      if (isHorizontal) {\n        // Labels\n        // Width of each line of legend boxes. Labels wrap onto multiple lines when there are too many to fit on one\n        var lineWidths = me.lineWidths = [0];\n        var totalHeight = 0;\n        ctx.textAlign = 'left';\n        ctx.textBaseline = 'middle';\n        helpers$1.each(me.legendItems, function (legendItem, i) {\n          var boxWidth = getBoxWidth(labelOpts, fontSize);\n          var width = boxWidth + fontSize / 2 + ctx.measureText(legendItem.text).width;\n\n          if (i === 0 || lineWidths[lineWidths.length - 1] + width + 2 * labelOpts.padding > minSize.width) {\n            totalHeight += fontSize + labelOpts.padding;\n            lineWidths[lineWidths.length - (i > 0 ? 0 : 1)] = 0;\n          } // Store the hitbox width and height here. Final position will be updated in `draw`\n\n\n          hitboxes[i] = {\n            left: 0,\n            top: 0,\n            width: width,\n            height: fontSize\n          };\n          lineWidths[lineWidths.length - 1] += width + labelOpts.padding;\n        });\n        minSize.height += totalHeight;\n      } else {\n        var vPadding = labelOpts.padding;\n        var columnWidths = me.columnWidths = [];\n        var columnHeights = me.columnHeights = [];\n        var totalWidth = labelOpts.padding;\n        var currentColWidth = 0;\n        var currentColHeight = 0;\n        helpers$1.each(me.legendItems, function (legendItem, i) {\n          var boxWidth = getBoxWidth(labelOpts, fontSize);\n          var itemWidth = boxWidth + fontSize / 2 + ctx.measureText(legendItem.text).width; // If too tall, go to new column\n\n          if (i > 0 && currentColHeight + fontSize + 2 * vPadding > minSize.height) {\n            totalWidth += currentColWidth + labelOpts.padding;\n            columnWidths.push(currentColWidth); // previous column width\n\n            columnHeights.push(currentColHeight);\n            currentColWidth = 0;\n            currentColHeight = 0;\n          } // Get max width\n\n\n          currentColWidth = Math.max(currentColWidth, itemWidth);\n          currentColHeight += fontSize + vPadding; // Store the hitbox width and height here. Final position will be updated in `draw`\n\n          hitboxes[i] = {\n            left: 0,\n            top: 0,\n            width: itemWidth,\n            height: fontSize\n          };\n        });\n        totalWidth += currentColWidth;\n        columnWidths.push(currentColWidth);\n        columnHeights.push(currentColHeight);\n        minSize.width += totalWidth;\n      }\n\n      me.width = minSize.width;\n      me.height = minSize.height;\n    },\n    afterFit: noop$1,\n    // Shared Methods\n    isHorizontal: function isHorizontal() {\n      return this.options.position === 'top' || this.options.position === 'bottom';\n    },\n    // Actually draw the legend on the canvas\n    draw: function draw() {\n      var me = this;\n      var opts = me.options;\n      var labelOpts = opts.labels;\n      var globalDefaults = core_defaults.global;\n      var defaultColor = globalDefaults.defaultColor;\n      var lineDefault = globalDefaults.elements.line;\n      var legendHeight = me.height;\n      var columnHeights = me.columnHeights;\n      var legendWidth = me.width;\n      var lineWidths = me.lineWidths;\n\n      if (!opts.display) {\n        return;\n      }\n\n      var rtlHelper = getRtlHelper$1(opts.rtl, me.left, me.minSize.width);\n      var ctx = me.ctx;\n      var fontColor = valueOrDefault$e(labelOpts.fontColor, globalDefaults.defaultFontColor);\n\n      var labelFont = helpers$1.options._parseFont(labelOpts);\n\n      var fontSize = labelFont.size;\n      var cursor; // Canvas setup\n\n      ctx.textAlign = rtlHelper.textAlign('left');\n      ctx.textBaseline = 'middle';\n      ctx.lineWidth = 0.5;\n      ctx.strokeStyle = fontColor; // for strikethrough effect\n\n      ctx.fillStyle = fontColor; // render in correct colour\n\n      ctx.font = labelFont.string;\n      var boxWidth = getBoxWidth(labelOpts, fontSize);\n      var hitboxes = me.legendHitBoxes; // current position\n\n      var drawLegendBox = function drawLegendBox(x, y, legendItem) {\n        if (isNaN(boxWidth) || boxWidth <= 0) {\n          return;\n        } // Set the ctx for the box\n\n\n        ctx.save();\n        var lineWidth = valueOrDefault$e(legendItem.lineWidth, lineDefault.borderWidth);\n        ctx.fillStyle = valueOrDefault$e(legendItem.fillStyle, defaultColor);\n        ctx.lineCap = valueOrDefault$e(legendItem.lineCap, lineDefault.borderCapStyle);\n        ctx.lineDashOffset = valueOrDefault$e(legendItem.lineDashOffset, lineDefault.borderDashOffset);\n        ctx.lineJoin = valueOrDefault$e(legendItem.lineJoin, lineDefault.borderJoinStyle);\n        ctx.lineWidth = lineWidth;\n        ctx.strokeStyle = valueOrDefault$e(legendItem.strokeStyle, defaultColor);\n\n        if (ctx.setLineDash) {\n          // IE 9 and 10 do not support line dash\n          ctx.setLineDash(valueOrDefault$e(legendItem.lineDash, lineDefault.borderDash));\n        }\n\n        if (labelOpts && labelOpts.usePointStyle) {\n          // Recalculate x and y for drawPoint() because its expecting\n          // x and y to be center of figure (instead of top left)\n          var radius = boxWidth * Math.SQRT2 / 2;\n          var centerX = rtlHelper.xPlus(x, boxWidth / 2);\n          var centerY = y + fontSize / 2; // Draw pointStyle as legend symbol\n\n          helpers$1.canvas.drawPoint(ctx, legendItem.pointStyle, radius, centerX, centerY, legendItem.rotation);\n        } else {\n          // Draw box as legend symbol\n          ctx.fillRect(rtlHelper.leftForLtr(x, boxWidth), y, boxWidth, fontSize);\n\n          if (lineWidth !== 0) {\n            ctx.strokeRect(rtlHelper.leftForLtr(x, boxWidth), y, boxWidth, fontSize);\n          }\n        }\n\n        ctx.restore();\n      };\n\n      var fillText = function fillText(x, y, legendItem, textWidth) {\n        var halfFontSize = fontSize / 2;\n        var xLeft = rtlHelper.xPlus(x, boxWidth + halfFontSize);\n        var yMiddle = y + halfFontSize;\n        ctx.fillText(legendItem.text, xLeft, yMiddle);\n\n        if (legendItem.hidden) {\n          // Strikethrough the text if hidden\n          ctx.beginPath();\n          ctx.lineWidth = 2;\n          ctx.moveTo(xLeft, yMiddle);\n          ctx.lineTo(rtlHelper.xPlus(xLeft, textWidth), yMiddle);\n          ctx.stroke();\n        }\n      };\n\n      var alignmentOffset = function alignmentOffset(dimension, blockSize) {\n        switch (opts.align) {\n          case 'start':\n            return labelOpts.padding;\n\n          case 'end':\n            return dimension - blockSize;\n\n          default:\n            // center\n            return (dimension - blockSize + labelOpts.padding) / 2;\n        }\n      }; // Horizontal\n\n\n      var isHorizontal = me.isHorizontal();\n\n      if (isHorizontal) {\n        cursor = {\n          x: me.left + alignmentOffset(legendWidth, lineWidths[0]),\n          y: me.top + labelOpts.padding,\n          line: 0\n        };\n      } else {\n        cursor = {\n          x: me.left + labelOpts.padding,\n          y: me.top + alignmentOffset(legendHeight, columnHeights[0]),\n          line: 0\n        };\n      }\n\n      helpers$1.rtl.overrideTextDirection(me.ctx, opts.textDirection);\n      var itemHeight = fontSize + labelOpts.padding;\n      helpers$1.each(me.legendItems, function (legendItem, i) {\n        var textWidth = ctx.measureText(legendItem.text).width;\n        var width = boxWidth + fontSize / 2 + textWidth;\n        var x = cursor.x;\n        var y = cursor.y;\n        rtlHelper.setWidth(me.minSize.width); // Use (me.left + me.minSize.width) and (me.top + me.minSize.height)\n        // instead of me.right and me.bottom because me.width and me.height\n        // may have been changed since me.minSize was calculated\n\n        if (isHorizontal) {\n          if (i > 0 && x + width + labelOpts.padding > me.left + me.minSize.width) {\n            y = cursor.y += itemHeight;\n            cursor.line++;\n            x = cursor.x = me.left + alignmentOffset(legendWidth, lineWidths[cursor.line]);\n          }\n        } else if (i > 0 && y + itemHeight > me.top + me.minSize.height) {\n          x = cursor.x = x + me.columnWidths[cursor.line] + labelOpts.padding;\n          cursor.line++;\n          y = cursor.y = me.top + alignmentOffset(legendHeight, columnHeights[cursor.line]);\n        }\n\n        var realX = rtlHelper.x(x);\n        drawLegendBox(realX, y, legendItem);\n        hitboxes[i].left = rtlHelper.leftForLtr(realX, hitboxes[i].width);\n        hitboxes[i].top = y; // Fill the actual label\n\n        fillText(realX, y, legendItem, textWidth);\n\n        if (isHorizontal) {\n          cursor.x += width + labelOpts.padding;\n        } else {\n          cursor.y += itemHeight;\n        }\n      });\n      helpers$1.rtl.restoreTextDirection(me.ctx, opts.textDirection);\n    },\n\n    /**\n     * @private\n     */\n    _getLegendItemAt: function _getLegendItemAt(x, y) {\n      var me = this;\n      var i, hitBox, lh;\n\n      if (x >= me.left && x <= me.right && y >= me.top && y <= me.bottom) {\n        // See if we are touching one of the dataset boxes\n        lh = me.legendHitBoxes;\n\n        for (i = 0; i < lh.length; ++i) {\n          hitBox = lh[i];\n\n          if (x >= hitBox.left && x <= hitBox.left + hitBox.width && y >= hitBox.top && y <= hitBox.top + hitBox.height) {\n            // Touching an element\n            return me.legendItems[i];\n          }\n        }\n      }\n\n      return null;\n    },\n\n    /**\n     * Handle an event\n     * @private\n     * @param {IEvent} event - The event to handle\n     */\n    handleEvent: function handleEvent(e) {\n      var me = this;\n      var opts = me.options;\n      var type = e.type === 'mouseup' ? 'click' : e.type;\n      var hoveredItem;\n\n      if (type === 'mousemove') {\n        if (!opts.onHover && !opts.onLeave) {\n          return;\n        }\n      } else if (type === 'click') {\n        if (!opts.onClick) {\n          return;\n        }\n      } else {\n        return;\n      } // Chart event already has relative position in it\n\n\n      hoveredItem = me._getLegendItemAt(e.x, e.y);\n\n      if (type === 'click') {\n        if (hoveredItem && opts.onClick) {\n          // use e.native for backwards compatibility\n          opts.onClick.call(me, e[\"native\"], hoveredItem);\n        }\n      } else {\n        if (opts.onLeave && hoveredItem !== me._hoveredItem) {\n          if (me._hoveredItem) {\n            opts.onLeave.call(me, e[\"native\"], me._hoveredItem);\n          }\n\n          me._hoveredItem = hoveredItem;\n        }\n\n        if (opts.onHover && hoveredItem) {\n          // use e.native for backwards compatibility\n          opts.onHover.call(me, e[\"native\"], hoveredItem);\n        }\n      }\n    }\n  });\n\n  function createNewLegendAndAttach(chart, legendOpts) {\n    var legend = new Legend({\n      ctx: chart.ctx,\n      options: legendOpts,\n      chart: chart\n    });\n    core_layouts.configure(chart, legend, legendOpts);\n    core_layouts.addBox(chart, legend);\n    chart.legend = legend;\n  }\n\n  var plugin_legend = {\n    id: 'legend',\n\n    /**\n     * Backward compatibility: since 2.1.5, the legend is registered as a plugin, making\n     * Chart.Legend obsolete. To avoid a breaking change, we export the Legend as part of\n     * the plugin, which one will be re-exposed in the chart.js file.\n     * https://github.com/chartjs/Chart.js/pull/2640\n     * @private\n     */\n    _element: Legend,\n    beforeInit: function beforeInit(chart) {\n      var legendOpts = chart.options.legend;\n\n      if (legendOpts) {\n        createNewLegendAndAttach(chart, legendOpts);\n      }\n    },\n    beforeUpdate: function beforeUpdate(chart) {\n      var legendOpts = chart.options.legend;\n      var legend = chart.legend;\n\n      if (legendOpts) {\n        helpers$1.mergeIf(legendOpts, core_defaults.global.legend);\n\n        if (legend) {\n          core_layouts.configure(chart, legend, legendOpts);\n          legend.options = legendOpts;\n        } else {\n          createNewLegendAndAttach(chart, legendOpts);\n        }\n      } else if (legend) {\n        core_layouts.removeBox(chart, legend);\n        delete chart.legend;\n      }\n    },\n    afterEvent: function afterEvent(chart, e) {\n      var legend = chart.legend;\n\n      if (legend) {\n        legend.handleEvent(e);\n      }\n    }\n  };\n  var noop$2 = helpers$1.noop;\n\n  core_defaults._set('global', {\n    title: {\n      display: false,\n      fontStyle: 'bold',\n      fullWidth: true,\n      padding: 10,\n      position: 'top',\n      text: '',\n      weight: 2000 // by default greater than legend (1000) to be above\n\n    }\n  });\n  /**\n   * IMPORTANT: this class is exposed publicly as Chart.Legend, backward compatibility required!\n   */\n\n\n  var Title = core_element.extend({\n    initialize: function initialize(config) {\n      var me = this;\n      helpers$1.extend(me, config); // Contains hit boxes for each dataset (in dataset order)\n\n      me.legendHitBoxes = [];\n    },\n    // These methods are ordered by lifecycle. Utilities then follow.\n    beforeUpdate: noop$2,\n    update: function update(maxWidth, maxHeight, margins) {\n      var me = this; // Update Lifecycle - Probably don't want to ever extend or overwrite this function ;)\n\n      me.beforeUpdate(); // Absorb the master measurements\n\n      me.maxWidth = maxWidth;\n      me.maxHeight = maxHeight;\n      me.margins = margins; // Dimensions\n\n      me.beforeSetDimensions();\n      me.setDimensions();\n      me.afterSetDimensions(); // Labels\n\n      me.beforeBuildLabels();\n      me.buildLabels();\n      me.afterBuildLabels(); // Fit\n\n      me.beforeFit();\n      me.fit();\n      me.afterFit(); //\n\n      me.afterUpdate();\n      return me.minSize;\n    },\n    afterUpdate: noop$2,\n    //\n    beforeSetDimensions: noop$2,\n    setDimensions: function setDimensions() {\n      var me = this; // Set the unconstrained dimension before label rotation\n\n      if (me.isHorizontal()) {\n        // Reset position before calculating rotation\n        me.width = me.maxWidth;\n        me.left = 0;\n        me.right = me.width;\n      } else {\n        me.height = me.maxHeight; // Reset position before calculating rotation\n\n        me.top = 0;\n        me.bottom = me.height;\n      } // Reset padding\n\n\n      me.paddingLeft = 0;\n      me.paddingTop = 0;\n      me.paddingRight = 0;\n      me.paddingBottom = 0; // Reset minSize\n\n      me.minSize = {\n        width: 0,\n        height: 0\n      };\n    },\n    afterSetDimensions: noop$2,\n    //\n    beforeBuildLabels: noop$2,\n    buildLabels: noop$2,\n    afterBuildLabels: noop$2,\n    //\n    beforeFit: noop$2,\n    fit: function fit() {\n      var me = this;\n      var opts = me.options;\n      var minSize = me.minSize = {};\n      var isHorizontal = me.isHorizontal();\n      var lineCount, textSize;\n\n      if (!opts.display) {\n        me.width = minSize.width = me.height = minSize.height = 0;\n        return;\n      }\n\n      lineCount = helpers$1.isArray(opts.text) ? opts.text.length : 1;\n      textSize = lineCount * helpers$1.options._parseFont(opts).lineHeight + opts.padding * 2;\n      me.width = minSize.width = isHorizontal ? me.maxWidth : textSize;\n      me.height = minSize.height = isHorizontal ? textSize : me.maxHeight;\n    },\n    afterFit: noop$2,\n    // Shared Methods\n    isHorizontal: function isHorizontal() {\n      var pos = this.options.position;\n      return pos === 'top' || pos === 'bottom';\n    },\n    // Actually draw the title block on the canvas\n    draw: function draw() {\n      var me = this;\n      var ctx = me.ctx;\n      var opts = me.options;\n\n      if (!opts.display) {\n        return;\n      }\n\n      var fontOpts = helpers$1.options._parseFont(opts);\n\n      var lineHeight = fontOpts.lineHeight;\n      var offset = lineHeight / 2 + opts.padding;\n      var rotation = 0;\n      var top = me.top;\n      var left = me.left;\n      var bottom = me.bottom;\n      var right = me.right;\n      var maxWidth, titleX, titleY;\n      ctx.fillStyle = helpers$1.valueOrDefault(opts.fontColor, core_defaults.global.defaultFontColor); // render in correct colour\n\n      ctx.font = fontOpts.string; // Horizontal\n\n      if (me.isHorizontal()) {\n        titleX = left + (right - left) / 2; // midpoint of the width\n\n        titleY = top + offset;\n        maxWidth = right - left;\n      } else {\n        titleX = opts.position === 'left' ? left + offset : right - offset;\n        titleY = top + (bottom - top) / 2;\n        maxWidth = bottom - top;\n        rotation = Math.PI * (opts.position === 'left' ? -0.5 : 0.5);\n      }\n\n      ctx.save();\n      ctx.translate(titleX, titleY);\n      ctx.rotate(rotation);\n      ctx.textAlign = 'center';\n      ctx.textBaseline = 'middle';\n      var text = opts.text;\n\n      if (helpers$1.isArray(text)) {\n        var y = 0;\n\n        for (var i = 0; i < text.length; ++i) {\n          ctx.fillText(text[i], 0, y, maxWidth);\n          y += lineHeight;\n        }\n      } else {\n        ctx.fillText(text, 0, 0, maxWidth);\n      }\n\n      ctx.restore();\n    }\n  });\n\n  function createNewTitleBlockAndAttach(chart, titleOpts) {\n    var title = new Title({\n      ctx: chart.ctx,\n      options: titleOpts,\n      chart: chart\n    });\n    core_layouts.configure(chart, title, titleOpts);\n    core_layouts.addBox(chart, title);\n    chart.titleBlock = title;\n  }\n\n  var plugin_title = {\n    id: 'title',\n\n    /**\n     * Backward compatibility: since 2.1.5, the title is registered as a plugin, making\n     * Chart.Title obsolete. To avoid a breaking change, we export the Title as part of\n     * the plugin, which one will be re-exposed in the chart.js file.\n     * https://github.com/chartjs/Chart.js/pull/2640\n     * @private\n     */\n    _element: Title,\n    beforeInit: function beforeInit(chart) {\n      var titleOpts = chart.options.title;\n\n      if (titleOpts) {\n        createNewTitleBlockAndAttach(chart, titleOpts);\n      }\n    },\n    beforeUpdate: function beforeUpdate(chart) {\n      var titleOpts = chart.options.title;\n      var titleBlock = chart.titleBlock;\n\n      if (titleOpts) {\n        helpers$1.mergeIf(titleOpts, core_defaults.global.title);\n\n        if (titleBlock) {\n          core_layouts.configure(chart, titleBlock, titleOpts);\n          titleBlock.options = titleOpts;\n        } else {\n          createNewTitleBlockAndAttach(chart, titleOpts);\n        }\n      } else if (titleBlock) {\n        core_layouts.removeBox(chart, titleBlock);\n        delete chart.titleBlock;\n      }\n    }\n  };\n  var plugins = {};\n  var filler = plugin_filler;\n  var legend = plugin_legend;\n  var title = plugin_title;\n  plugins.filler = filler;\n  plugins.legend = legend;\n  plugins.title = title;\n  /**\n   * @namespace Chart\n   */\n\n  core_controller.helpers = helpers$1; // @todo dispatch these helpers into appropriated helpers/helpers.* file and write unit tests!\n\n  core_helpers();\n  core_controller._adapters = core_adapters;\n  core_controller.Animation = core_animation;\n  core_controller.animationService = core_animations;\n  core_controller.controllers = controllers;\n  core_controller.DatasetController = core_datasetController;\n  core_controller.defaults = core_defaults;\n  core_controller.Element = core_element;\n  core_controller.elements = elements;\n  core_controller.Interaction = core_interaction;\n  core_controller.layouts = core_layouts;\n  core_controller.platform = platform;\n  core_controller.plugins = core_plugins;\n  core_controller.Scale = core_scale;\n  core_controller.scaleService = core_scaleService;\n  core_controller.Ticks = core_ticks;\n  core_controller.Tooltip = core_tooltip; // Register built-in scales\n\n  core_controller.helpers.each(scales, function (scale, type) {\n    core_controller.scaleService.registerScaleType(type, scale, scale._defaults);\n  }); // Load to register built-in adapters (as side effects)\n  // Loading built-in plugins\n\n  for (var k in plugins) {\n    if (plugins.hasOwnProperty(k)) {\n      core_controller.plugins.register(plugins[k]);\n    }\n  }\n\n  core_controller.platform.initialize();\n  var src = core_controller;\n\n  if (typeof window !== 'undefined') {\n    window.Chart = core_controller;\n  } // DEPRECATIONS\n\n  /**\n   * Provided for backward compatibility, not available anymore\n   * @namespace Chart.Chart\n   * @deprecated since version 2.8.0\n   * @todo remove at version 3\n   * @private\n   */\n\n\n  core_controller.Chart = core_controller;\n  /**\n   * Provided for backward compatibility, not available anymore\n   * @namespace Chart.Legend\n   * @deprecated since version 2.1.5\n   * @todo remove at version 3\n   * @private\n   */\n\n  core_controller.Legend = plugins.legend._element;\n  /**\n   * Provided for backward compatibility, not available anymore\n   * @namespace Chart.Title\n   * @deprecated since version 2.1.5\n   * @todo remove at version 3\n   * @private\n   */\n\n  core_controller.Title = plugins.title._element;\n  /**\n   * Provided for backward compatibility, use Chart.plugins instead\n   * @namespace Chart.pluginService\n   * @deprecated since version 2.1.5\n   * @todo remove at version 3\n   * @private\n   */\n\n  core_controller.pluginService = core_controller.plugins;\n  /**\n   * Provided for backward compatibility, inheriting from Chart.PlugingBase has no\n   * effect, instead simply create/register plugins via plain JavaScript objects.\n   * @interface Chart.PluginBase\n   * @deprecated since version 2.5.0\n   * @todo remove at version 3\n   * @private\n   */\n\n  core_controller.PluginBase = core_controller.Element.extend({});\n  /**\n   * Provided for backward compatibility, use Chart.helpers.canvas instead.\n   * @namespace Chart.canvasHelpers\n   * @deprecated since version 2.6.0\n   * @todo remove at version 3\n   * @private\n   */\n\n  core_controller.canvasHelpers = core_controller.helpers.canvas;\n  /**\n   * Provided for backward compatibility, use Chart.layouts instead.\n   * @namespace Chart.layoutService\n   * @deprecated since version 2.7.3\n   * @todo remove at version 3\n   * @private\n   */\n\n  core_controller.layoutService = core_controller.layouts;\n  /**\n   * Provided for backward compatibility, not available anymore.\n   * @namespace Chart.LinearScaleBase\n   * @deprecated since version 2.8\n   * @todo remove at version 3\n   * @private\n   */\n\n  core_controller.LinearScaleBase = scale_linearbase;\n  /**\n   * Provided for backward compatibility, instead we should create a new Chart\n   * by setting the type in the config (`new Chart(id, {type: '{chart-type}'}`).\n   * @deprecated since version 2.8.0\n   * @todo remove at version 3\n   */\n\n  core_controller.helpers.each(['Bar', 'Bubble', 'Doughnut', 'Line', 'PolarArea', 'Radar', 'Scatter'], function (klass) {\n    core_controller[klass] = function (ctx, cfg) {\n      return new core_controller(ctx, core_controller.helpers.merge(cfg || {}, {\n        type: klass.charAt(0).toLowerCase() + klass.slice(1)\n      }));\n    };\n  });\n  return src;\n});","require(\"core-js/modules/es6.symbol\");\n\nvar arrayFilter = require('./_arrayFilter'),\n    stubArray = require('./stubArray');\n/** Used for built-in method references. */\n\n\nvar objectProto = Object.prototype;\n/** Built-in value references. */\n\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n/* Built-in method references for those with the same name as other `lodash` methods. */\n\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n\nvar getSymbols = !nativeGetSymbols ? stubArray : function (object) {\n  if (object == null) {\n    return [];\n  }\n\n  object = Object(object);\n  return arrayFilter(nativeGetSymbols(object), function (symbol) {\n    return propertyIsEnumerable.call(object, symbol);\n  });\n};\nmodule.exports = getSymbols;","require(\"core-js/modules/es6.regexp.replace\");\n\nrequire(\"core-js/modules/es6.regexp.constructor\");\n\nrequire(\"core-js/modules/es6.regexp.to-string\");\n\nrequire(\"core-js/modules/es6.date.to-string\");\n\nrequire(\"core-js/modules/es6.object.to-string\");\n\nvar isFunction = require('./isFunction'),\n    isMasked = require('./_isMasked'),\n    isObject = require('./isObject'),\n    toSource = require('./_toSource');\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\n\n\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n/** Used to detect host constructors (Safari). */\n\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n/** Used for built-in method references. */\n\nvar funcProto = Function.prototype,\n    objectProto = Object.prototype;\n/** Used to resolve the decompiled source of functions. */\n\nvar funcToString = funcProto.toString;\n/** Used to check objects for own properties. */\n\nvar hasOwnProperty = objectProto.hasOwnProperty;\n/** Used to detect if a method is native. */\n\nvar reIsNative = RegExp('^' + funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&').replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$');\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n *  else `false`.\n */\n\nfunction baseIsNative(value) {\n  if (!isObject(value) || isMasked(value)) {\n    return false;\n  }\n\n  var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n  return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n  return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;","// 22.1.3.6 Array.prototype.fill(value, start = 0, end = this.length)\n'use strict';\nvar toObject = require('./_to-object');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nvar toLength = require('./_to-length');\nmodule.exports = function fill(value /* , start = 0, end = @length */) {\n  var O = toObject(this);\n  var length = toLength(O.length);\n  var aLen = arguments.length;\n  var index = toAbsoluteIndex(aLen > 1 ? arguments[1] : undefined, length);\n  var end = aLen > 2 ? arguments[2] : undefined;\n  var endPos = end === undefined ? length : toAbsoluteIndex(end, length);\n  while (endPos > index) O[index++] = value;\n  return O;\n};\n","var Symbol = require('./_Symbol'),\n    getRawTag = require('./_getRawTag'),\n    objectToString = require('./_objectToString');\n/** `Object#toString` result references. */\n\n\nvar nullTag = '[object Null]',\n    undefinedTag = '[object Undefined]';\n/** Built-in value references. */\n\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n\nfunction baseGetTag(value) {\n  if (value == null) {\n    return value === undefined ? undefinedTag : nullTag;\n  }\n\n  return symToStringTag && symToStringTag in Object(value) ? getRawTag(value) : objectToString(value);\n}\n\nmodule.exports = baseGetTag;","var getNative = require('./_getNative');\n\nvar defineProperty = function () {\n  try {\n    var func = getNative(Object, 'defineProperty');\n    func({}, '', {});\n    return func;\n  } catch (e) {}\n}();\n\nmodule.exports = defineProperty;","var isStrictComparable = require('./_isStrictComparable'),\n    keys = require('./keys');\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\n\n\nfunction getMatchData(object) {\n  var result = keys(object),\n      length = result.length;\n\n  while (length--) {\n    var key = result[length],\n        value = object[key];\n    result[length] = [key, value, isStrictComparable(value)];\n  }\n\n  return result;\n}\n\nmodule.exports = getMatchData;","var getNative = require('./_getNative'),\n    root = require('./_root');\n/* Built-in method references that are verified to be native. */\n\n\nvar WeakMap = getNative(root, 'WeakMap');\nmodule.exports = WeakMap;","var baseAssignValue = require('./_baseAssignValue'),\n    createAggregator = require('./_createAggregator');\n/**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the last element responsible for generating the key. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * var array = [\n *   { 'dir': 'left', 'code': 97 },\n *   { 'dir': 'right', 'code': 100 }\n * ];\n *\n * _.keyBy(array, function(o) {\n *   return String.fromCharCode(o.code);\n * });\n * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }\n *\n * _.keyBy(array, 'dir');\n * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }\n */\n\n\nvar keyBy = createAggregator(function (result, value, key) {\n  baseAssignValue(result, key, value);\n});\nmodule.exports = keyBy;","require(\"core-js/modules/es6.array.map\");\n\nvar isKeyable = require('./_isKeyable');\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\n\n\nfunction getMapData(map, key) {\n  var data = map.__data__;\n  return isKeyable(key) ? data[typeof key == 'string' ? 'string' : 'hash'] : data.map;\n}\n\nmodule.exports = getMapData;","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n *  else `false`.\n */\nfunction arraySome(array, predicate) {\n  var index = -1,\n      length = array == null ? 0 : array.length;\n\n  while (++index < length) {\n    if (predicate(array[index], index, array)) {\n      return true;\n    }\n  }\n\n  return false;\n}\n\nmodule.exports = arraySome;","var DataView = require('./_DataView'),\n    Map = require('./_Map'),\n    Promise = require('./_Promise'),\n    Set = require('./_Set'),\n    WeakMap = require('./_WeakMap'),\n    baseGetTag = require('./_baseGetTag'),\n    toSource = require('./_toSource');\n/** `Object#toString` result references. */\n\n\nvar mapTag = '[object Map]',\n    objectTag = '[object Object]',\n    promiseTag = '[object Promise]',\n    setTag = '[object Set]',\n    weakMapTag = '[object WeakMap]';\nvar dataViewTag = '[object DataView]';\n/** Used to detect maps, sets, and weakmaps. */\n\nvar dataViewCtorString = toSource(DataView),\n    mapCtorString = toSource(Map),\n    promiseCtorString = toSource(Promise),\n    setCtorString = toSource(Set),\n    weakMapCtorString = toSource(WeakMap);\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n\nvar getTag = baseGetTag; // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\n\nif (DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag || Map && getTag(new Map()) != mapTag || Promise && getTag(Promise.resolve()) != promiseTag || Set && getTag(new Set()) != setTag || WeakMap && getTag(new WeakMap()) != weakMapTag) {\n  getTag = function getTag(value) {\n    var result = baseGetTag(value),\n        Ctor = result == objectTag ? value.constructor : undefined,\n        ctorString = Ctor ? toSource(Ctor) : '';\n\n    if (ctorString) {\n      switch (ctorString) {\n        case dataViewCtorString:\n          return dataViewTag;\n\n        case mapCtorString:\n          return mapTag;\n\n        case promiseCtorString:\n          return promiseTag;\n\n        case setCtorString:\n          return setTag;\n\n        case weakMapCtorString:\n          return weakMapTag;\n      }\n    }\n\n    return result;\n  };\n}\n\nmodule.exports = getTag;","var baseForOwn = require('./_baseForOwn'),\n    createBaseEach = require('./_createBaseEach');\n/**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n\n\nvar baseEach = createBaseEach(baseForOwn);\nmodule.exports = baseEach;","var nativeCreate = require('./_nativeCreate');\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\n\n\nfunction hashClear() {\n  this.__data__ = nativeCreate ? nativeCreate(null) : {};\n  this.size = 0;\n}\n\nmodule.exports = hashClear;","import \"core-js/modules/web.dom.iterable\";\nimport \"core-js/modules/es6.array.iterator\";\nimport \"core-js/modules/es6.object.to-string\";\nimport \"core-js/modules/es7.object.values\";\nimport \"core-js/modules/es6.array.for-each\";\nimport \"core-js/modules/es6.array.map\";\nimport \"core-js/modules/es6.object.set-prototype-of\";\nimport \"core-js/modules/es6.object.create\";\nimport \"core-js/modules/es6.array.index-of\";\nimport \"core-js/modules/es6.object.assign\";\n\nvar _extends = Object.assign || function (target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments[i];\n\n    for (var key in source) {\n      if (Object.prototype.hasOwnProperty.call(source, key)) {\n        target[key] = source[key];\n      }\n    }\n  }\n\n  return target;\n};\n\nfunction _objectWithoutProperties(obj, keys) {\n  var target = {};\n\n  for (var i in obj) {\n    if (keys.indexOf(i) >= 0) continue;\n    if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;\n    target[i] = obj[i];\n  }\n\n  return target;\n}\n\nfunction _classCallCheck(instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n}\n\nfunction _possibleConstructorReturn(self, call) {\n  if (!self) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n\n  return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n}\n\nfunction _inherits(subClass, superClass) {\n  if (typeof superClass !== \"function\" && superClass !== null) {\n    throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n  }\n\n  subClass.prototype = Object.create(superClass && superClass.prototype, {\n    constructor: {\n      value: subClass,\n      enumerable: false,\n      writable: true,\n      configurable: true\n    }\n  });\n  if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport Chart from 'chart.js';\nimport isEqual from 'lodash/isEqual';\nimport keyBy from 'lodash/keyBy';\nvar NODE_ENV = typeof process !== 'undefined' && process.env && process.env.NODE_ENV;\n\nvar ChartComponent = function (_React$Component) {\n  _inherits(ChartComponent, _React$Component);\n\n  function ChartComponent() {\n    _classCallCheck(this, ChartComponent);\n\n    var _this = _possibleConstructorReturn(this, _React$Component.call(this));\n\n    _this.handleOnClick = function (event) {\n      var instance = _this.chartInstance;\n      var _this$props = _this.props,\n          getDatasetAtEvent = _this$props.getDatasetAtEvent,\n          getElementAtEvent = _this$props.getElementAtEvent,\n          getElementsAtEvent = _this$props.getElementsAtEvent,\n          onElementsClick = _this$props.onElementsClick;\n      getDatasetAtEvent && getDatasetAtEvent(instance.getDatasetAtEvent(event), event);\n      getElementAtEvent && getElementAtEvent(instance.getElementAtEvent(event), event);\n      getElementsAtEvent && getElementsAtEvent(instance.getElementsAtEvent(event), event);\n      onElementsClick && onElementsClick(instance.getElementsAtEvent(event), event); // Backward compatibility\n    };\n\n    _this.ref = function (element) {\n      _this.element = element;\n    };\n\n    _this.chartInstance = undefined;\n    return _this;\n  }\n\n  ChartComponent.prototype.componentDidMount = function componentDidMount() {\n    this.renderChart();\n  };\n\n  ChartComponent.prototype.componentDidUpdate = function componentDidUpdate() {\n    if (this.props.redraw) {\n      this.destroyChart();\n      this.renderChart();\n      return;\n    }\n\n    this.updateChart();\n  };\n\n  ChartComponent.prototype.shouldComponentUpdate = function shouldComponentUpdate(nextProps) {\n    var _props = this.props,\n        redraw = _props.redraw,\n        type = _props.type,\n        options = _props.options,\n        plugins = _props.plugins,\n        legend = _props.legend,\n        height = _props.height,\n        width = _props.width;\n\n    if (nextProps.redraw === true) {\n      return true;\n    }\n\n    if (height !== nextProps.height || width !== nextProps.width) {\n      return true;\n    }\n\n    if (type !== nextProps.type) {\n      return true;\n    }\n\n    if (!isEqual(legend, nextProps.legend)) {\n      return true;\n    }\n\n    if (!isEqual(options, nextProps.options)) {\n      return true;\n    }\n\n    var nextData = this.transformDataProp(nextProps);\n\n    if (!isEqual(this.shadowDataProp, nextData)) {\n      return true;\n    }\n\n    return !isEqual(plugins, nextProps.plugins);\n  };\n\n  ChartComponent.prototype.componentWillUnmount = function componentWillUnmount() {\n    this.destroyChart();\n  };\n\n  ChartComponent.prototype.transformDataProp = function transformDataProp(props) {\n    var data = props.data;\n\n    if (typeof data == 'function') {\n      var node = this.element;\n      return data(node);\n    } else {\n      return data;\n    }\n  }; // Chart.js directly mutates the data.dataset objects by adding _meta proprerty\n  // this makes impossible to compare the current and next data changes\n  // therefore we memoize the data prop while sending a fake to Chart.js for mutation.\n  // see https://github.com/chartjs/Chart.js/blob/master/src/core/core.controller.js#L615-L617\n\n\n  ChartComponent.prototype.memoizeDataProps = function memoizeDataProps() {\n    if (!this.props.data) {\n      return;\n    }\n\n    var data = this.transformDataProp(this.props);\n    this.shadowDataProp = _extends({}, data, {\n      datasets: data.datasets && data.datasets.map(function (set) {\n        return _extends({}, set);\n      })\n    });\n    this.saveCurrentDatasets(); // to remove the dataset metadata from this chart when the chart is destroyed\n\n    return data;\n  };\n\n  ChartComponent.prototype.checkDatasets = function checkDatasets(datasets) {\n    var isDev = NODE_ENV !== 'production' && NODE_ENV !== 'prod';\n    var usingCustomKeyProvider = this.props.datasetKeyProvider !== ChartComponent.getLabelAsKey;\n    var multipleDatasets = datasets.length > 1;\n\n    if (isDev && multipleDatasets && !usingCustomKeyProvider) {\n      var shouldWarn = false;\n      datasets.forEach(function (dataset) {\n        if (!dataset.label) {\n          shouldWarn = true;\n        }\n      });\n\n      if (shouldWarn) {\n        console.error('[react-chartjs-2] Warning: Each dataset needs a unique key. By default, the \"label\" property on each dataset is used. Alternatively, you may provide a \"datasetKeyProvider\" as a prop that returns a unique key.');\n      }\n    }\n  };\n\n  ChartComponent.prototype.getCurrentDatasets = function getCurrentDatasets() {\n    return this.chartInstance && this.chartInstance.config.data && this.chartInstance.config.data.datasets || [];\n  };\n\n  ChartComponent.prototype.saveCurrentDatasets = function saveCurrentDatasets() {\n    var _this2 = this;\n\n    this.datasets = this.datasets || {};\n    var currentDatasets = this.getCurrentDatasets();\n    currentDatasets.forEach(function (d) {\n      _this2.datasets[_this2.props.datasetKeyProvider(d)] = d;\n    });\n  };\n\n  ChartComponent.prototype.updateChart = function updateChart() {\n    var _this3 = this;\n\n    var options = this.props.options;\n    var data = this.memoizeDataProps(this.props);\n    if (!this.chartInstance) return;\n\n    if (options) {\n      this.chartInstance.options = Chart.helpers.configMerge(this.chartInstance.options, options);\n    } // Pipe datasets to chart instance datasets enabling\n    // seamless transitions\n\n\n    var currentDatasets = this.getCurrentDatasets();\n    var nextDatasets = data.datasets || [];\n    this.checkDatasets(currentDatasets);\n    var currentDatasetsIndexed = keyBy(currentDatasets, this.props.datasetKeyProvider); // We can safely replace the dataset array, as long as we retain the _meta property\n    // on each dataset.\n\n    this.chartInstance.config.data.datasets = nextDatasets.map(function (next) {\n      var current = currentDatasetsIndexed[_this3.props.datasetKeyProvider(next)];\n\n      if (current && current.type === next.type && next.data) {\n        // Be robust to no data. Relevant for other update mechanisms as in chartjs-plugin-streaming.\n        // The data array must be edited in place. As chart.js adds listeners to it.\n        current.data.splice(next.data.length);\n        next.data.forEach(function (point, pid) {\n          current.data[pid] = next.data[pid];\n        });\n\n        var _data = next.data,\n            otherProps = _objectWithoutProperties(next, ['data']); // Merge properties. Notice a weakness here. If a property is removed\n        // from next, it will be retained by current and never disappears.\n        // Workaround is to set value to null or undefined in next.\n\n\n        return _extends({}, current, otherProps);\n      } else {\n        return next;\n      }\n    });\n\n    var datasets = data.datasets,\n        rest = _objectWithoutProperties(data, ['datasets']);\n\n    this.chartInstance.config.data = _extends({}, this.chartInstance.config.data, rest);\n    this.chartInstance.update();\n  };\n\n  ChartComponent.prototype.renderChart = function renderChart() {\n    var _props2 = this.props,\n        options = _props2.options,\n        legend = _props2.legend,\n        type = _props2.type,\n        plugins = _props2.plugins;\n    var node = this.element;\n    var data = this.memoizeDataProps();\n\n    if (typeof legend !== 'undefined' && !isEqual(ChartComponent.defaultProps.legend, legend)) {\n      options.legend = legend;\n    }\n\n    this.chartInstance = new Chart(node, {\n      type: type,\n      data: data,\n      options: options,\n      plugins: plugins\n    });\n  };\n\n  ChartComponent.prototype.destroyChart = function destroyChart() {\n    if (!this.chartInstance) {\n      return;\n    } // Put all of the datasets that have existed in the chart back on the chart\n    // so that the metadata associated with this chart get destroyed.\n    // This allows the datasets to be used in another chart. This can happen,\n    // for example, in a tabbed UI where the chart gets created each time the\n    // tab gets switched to the chart and uses the same data).\n\n\n    this.saveCurrentDatasets();\n    var datasets = Object.values(this.datasets);\n    this.chartInstance.config.data.datasets = datasets;\n    this.chartInstance.destroy();\n  };\n\n  ChartComponent.prototype.render = function render() {\n    var _props3 = this.props,\n        height = _props3.height,\n        width = _props3.width,\n        id = _props3.id;\n    return React.createElement('canvas', {\n      ref: this.ref,\n      height: height,\n      width: width,\n      id: id,\n      onClick: this.handleOnClick\n    });\n  };\n\n  return ChartComponent;\n}(React.Component);\n\nChartComponent.getLabelAsKey = function (d) {\n  return d.label;\n};\n\nChartComponent.propTypes = {\n  data: PropTypes.oneOfType([PropTypes.object, PropTypes.func]).isRequired,\n  getDatasetAtEvent: PropTypes.func,\n  getElementAtEvent: PropTypes.func,\n  getElementsAtEvent: PropTypes.func,\n  height: PropTypes.number,\n  legend: PropTypes.object,\n  onElementsClick: PropTypes.func,\n  options: PropTypes.object,\n  plugins: PropTypes.arrayOf(PropTypes.object),\n  redraw: PropTypes.bool,\n  type: function type(props, propName, componentName) {\n    if (!Chart.controllers[props[propName]]) {\n      return new Error('Invalid chart type `' + props[propName] + '` supplied to' + ' `' + componentName + '`.');\n    }\n  },\n  width: PropTypes.number,\n  datasetKeyProvider: PropTypes.func\n};\nChartComponent.defaultProps = {\n  legend: {\n    display: true,\n    position: 'bottom'\n  },\n  type: 'doughnut',\n  height: 150,\n  width: 300,\n  redraw: false,\n  options: {},\n  datasetKeyProvider: ChartComponent.getLabelAsKey\n};\nexport default ChartComponent;\nexport var Doughnut = function (_React$Component2) {\n  _inherits(Doughnut, _React$Component2);\n\n  function Doughnut() {\n    _classCallCheck(this, Doughnut);\n\n    return _possibleConstructorReturn(this, _React$Component2.apply(this, arguments));\n  }\n\n  Doughnut.prototype.render = function render() {\n    var _this5 = this;\n\n    return React.createElement(ChartComponent, _extends({}, this.props, {\n      ref: function ref(_ref) {\n        return _this5.chartInstance = _ref && _ref.chartInstance;\n      },\n      type: 'doughnut'\n    }));\n  };\n\n  return Doughnut;\n}(React.Component);\nexport var Pie = function (_React$Component3) {\n  _inherits(Pie, _React$Component3);\n\n  function Pie() {\n    _classCallCheck(this, Pie);\n\n    return _possibleConstructorReturn(this, _React$Component3.apply(this, arguments));\n  }\n\n  Pie.prototype.render = function render() {\n    var _this7 = this;\n\n    return React.createElement(ChartComponent, _extends({}, this.props, {\n      ref: function ref(_ref2) {\n        return _this7.chartInstance = _ref2 && _ref2.chartInstance;\n      },\n      type: 'pie'\n    }));\n  };\n\n  return Pie;\n}(React.Component);\nexport var Line = function (_React$Component4) {\n  _inherits(Line, _React$Component4);\n\n  function Line() {\n    _classCallCheck(this, Line);\n\n    return _possibleConstructorReturn(this, _React$Component4.apply(this, arguments));\n  }\n\n  Line.prototype.render = function render() {\n    var _this9 = this;\n\n    return React.createElement(ChartComponent, _extends({}, this.props, {\n      ref: function ref(_ref3) {\n        return _this9.chartInstance = _ref3 && _ref3.chartInstance;\n      },\n      type: 'line'\n    }));\n  };\n\n  return Line;\n}(React.Component);\nexport var Bar = function (_React$Component5) {\n  _inherits(Bar, _React$Component5);\n\n  function Bar() {\n    _classCallCheck(this, Bar);\n\n    return _possibleConstructorReturn(this, _React$Component5.apply(this, arguments));\n  }\n\n  Bar.prototype.render = function render() {\n    var _this11 = this;\n\n    return React.createElement(ChartComponent, _extends({}, this.props, {\n      ref: function ref(_ref4) {\n        return _this11.chartInstance = _ref4 && _ref4.chartInstance;\n      },\n      type: 'bar'\n    }));\n  };\n\n  return Bar;\n}(React.Component);\nexport var HorizontalBar = function (_React$Component6) {\n  _inherits(HorizontalBar, _React$Component6);\n\n  function HorizontalBar() {\n    _classCallCheck(this, HorizontalBar);\n\n    return _possibleConstructorReturn(this, _React$Component6.apply(this, arguments));\n  }\n\n  HorizontalBar.prototype.render = function render() {\n    var _this13 = this;\n\n    return React.createElement(ChartComponent, _extends({}, this.props, {\n      ref: function ref(_ref5) {\n        return _this13.chartInstance = _ref5 && _ref5.chartInstance;\n      },\n      type: 'horizontalBar'\n    }));\n  };\n\n  return HorizontalBar;\n}(React.Component);\nexport var Radar = function (_React$Component7) {\n  _inherits(Radar, _React$Component7);\n\n  function Radar() {\n    _classCallCheck(this, Radar);\n\n    return _possibleConstructorReturn(this, _React$Component7.apply(this, arguments));\n  }\n\n  Radar.prototype.render = function render() {\n    var _this15 = this;\n\n    return React.createElement(ChartComponent, _extends({}, this.props, {\n      ref: function ref(_ref6) {\n        return _this15.chartInstance = _ref6 && _ref6.chartInstance;\n      },\n      type: 'radar'\n    }));\n  };\n\n  return Radar;\n}(React.Component);\nexport var Polar = function (_React$Component8) {\n  _inherits(Polar, _React$Component8);\n\n  function Polar() {\n    _classCallCheck(this, Polar);\n\n    return _possibleConstructorReturn(this, _React$Component8.apply(this, arguments));\n  }\n\n  Polar.prototype.render = function render() {\n    var _this17 = this;\n\n    return React.createElement(ChartComponent, _extends({}, this.props, {\n      ref: function ref(_ref7) {\n        return _this17.chartInstance = _ref7 && _ref7.chartInstance;\n      },\n      type: 'polarArea'\n    }));\n  };\n\n  return Polar;\n}(React.Component);\nexport var Bubble = function (_React$Component9) {\n  _inherits(Bubble, _React$Component9);\n\n  function Bubble() {\n    _classCallCheck(this, Bubble);\n\n    return _possibleConstructorReturn(this, _React$Component9.apply(this, arguments));\n  }\n\n  Bubble.prototype.render = function render() {\n    var _this19 = this;\n\n    return React.createElement(ChartComponent, _extends({}, this.props, {\n      ref: function ref(_ref8) {\n        return _this19.chartInstance = _ref8 && _ref8.chartInstance;\n      },\n      type: 'bubble'\n    }));\n  };\n\n  return Bubble;\n}(React.Component);\nexport var Scatter = function (_React$Component10) {\n  _inherits(Scatter, _React$Component10);\n\n  function Scatter() {\n    _classCallCheck(this, Scatter);\n\n    return _possibleConstructorReturn(this, _React$Component10.apply(this, arguments));\n  }\n\n  Scatter.prototype.render = function render() {\n    var _this21 = this;\n\n    return React.createElement(ChartComponent, _extends({}, this.props, {\n      ref: function ref(_ref9) {\n        return _this21.chartInstance = _ref9 && _ref9.chartInstance;\n      },\n      type: 'scatter'\n    }));\n  };\n\n  return Scatter;\n}(React.Component);\nexport var defaults = Chart.defaults;\nexport { Chart };","var DESCRIPTORS = require('./_descriptors');\nvar getKeys = require('./_object-keys');\nvar toIObject = require('./_to-iobject');\nvar isEnum = require('./_object-pie').f;\nmodule.exports = function (isEntries) {\n  return function (it) {\n    var O = toIObject(it);\n    var keys = getKeys(O);\n    var length = keys.length;\n    var i = 0;\n    var result = [];\n    var key;\n    while (length > i) {\n      key = keys[i++];\n      if (!DESCRIPTORS || isEnum.call(O, key)) {\n        result.push(isEntries ? [key, O[key]] : O[key]);\n      }\n    }\n    return result;\n  };\n};\n","var arrayAggregator = require('./_arrayAggregator'),\n    baseAggregator = require('./_baseAggregator'),\n    baseIteratee = require('./_baseIteratee'),\n    isArray = require('./isArray');\n/**\n * Creates a function like `_.groupBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} [initializer] The accumulator object initializer.\n * @returns {Function} Returns the new aggregator function.\n */\n\n\nfunction createAggregator(setter, initializer) {\n  return function (collection, iteratee) {\n    var func = isArray(collection) ? arrayAggregator : baseAggregator,\n        accumulator = initializer ? initializer() : {};\n    return func(collection, setter, baseIteratee(iteratee, 2), accumulator);\n  };\n}\n\nmodule.exports = createAggregator;","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n  var index = -1,\n      result = Array(n);\n\n  while (++index < n) {\n    result[index] = iteratee(index);\n  }\n\n  return result;\n}\n\nmodule.exports = baseTimes;","require(\"core-js/modules/web.dom.iterable\");\n\nrequire(\"core-js/modules/es6.array.iterator\");\n\nrequire(\"core-js/modules/es6.object.to-string\");\n\nrequire(\"core-js/modules/es6.object.keys\");\n\nvar overArg = require('./_overArg');\n/* Built-in method references for those with the same name as other `lodash` methods. */\n\n\nvar nativeKeys = overArg(Object.keys, Object);\nmodule.exports = nativeKeys;","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n  return this.__data__.has(key);\n}\n\nmodule.exports = stackHas;","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\nmodule.exports = freeGlobal;","var listCacheClear = require('./_listCacheClear'),\n    listCacheDelete = require('./_listCacheDelete'),\n    listCacheGet = require('./_listCacheGet'),\n    listCacheHas = require('./_listCacheHas'),\n    listCacheSet = require('./_listCacheSet');\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n\n\nfunction ListCache(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n  this.clear();\n\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n} // Add methods to `ListCache`.\n\n\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\nmodule.exports = ListCache;","var baseIsEqual = require('./_baseIsEqual');\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\n\n\nfunction isEqual(value, other) {\n  return baseIsEqual(value, other);\n}\n\nmodule.exports = isEqual;","var getNative = require('./_getNative');\n/* Built-in method references that are verified to be native. */\n\n\nvar nativeCreate = getNative(Object, 'create');\nmodule.exports = nativeCreate;","require(\"core-js/modules/es6.object.define-property\");\n\nmodule.exports = function (module) {\n  if (!module.webpackPolyfill) {\n    module.deprecate = function () {};\n\n    module.paths = []; // module.parent = undefined by default\n\n    if (!module.children) module.children = [];\n    Object.defineProperty(module, \"loaded\", {\n      enumerable: true,\n      get: function get() {\n        return module.l;\n      }\n    });\n    Object.defineProperty(module, \"id\", {\n      enumerable: true,\n      get: function get() {\n        return module.i;\n      }\n    });\n    module.webpackPolyfill = 1;\n  }\n\n  return module;\n};","require(\"core-js/modules/es6.array.is-array\");\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\nmodule.exports = isArray;","var assocIndexOf = require('./_assocIndexOf');\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\n\n\nfunction listCacheSet(key, value) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    ++this.size;\n    data.push([key, value]);\n  } else {\n    data[index][1] = value;\n  }\n\n  return this;\n}\n\nmodule.exports = listCacheSet;","var baseIsMatch = require('./_baseIsMatch'),\n    getMatchData = require('./_getMatchData'),\n    matchesStrictComparable = require('./_matchesStrictComparable');\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\n\n\nfunction baseMatches(source) {\n  var matchData = getMatchData(source);\n\n  if (matchData.length == 1 && matchData[0][2]) {\n    return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n  }\n\n  return function (object) {\n    return object === source || baseIsMatch(object, source, matchData);\n  };\n}\n\nmodule.exports = baseMatches;","var castPath = require('./_castPath'),\n    toKey = require('./_toKey');\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\n\n\nfunction baseGet(object, path) {\n  path = castPath(path, object);\n  var index = 0,\n      length = path.length;\n\n  while (object != null && index < length) {\n    object = object[toKey(path[index++])];\n  }\n\n  return index && index == length ? object : undefined;\n}\n\nmodule.exports = baseGet;","// 19.1.2.12 Object.isFrozen(O)\nvar isObject = require('./_is-object');\n\nrequire('./_object-sap')('isFrozen', function ($isFrozen) {\n  return function isFrozen(it) {\n    return isObject(it) ? $isFrozen ? $isFrozen(it) : false : true;\n  };\n});\n","var assocIndexOf = require('./_assocIndexOf');\n/** Used for built-in method references. */\n\n\nvar arrayProto = Array.prototype;\n/** Built-in value references. */\n\nvar splice = arrayProto.splice;\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n\nfunction listCacheDelete(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    return false;\n  }\n\n  var lastIndex = data.length - 1;\n\n  if (index == lastIndex) {\n    data.pop();\n  } else {\n    splice.call(data, index, 1);\n  }\n\n  --this.size;\n  return true;\n}\n\nmodule.exports = listCacheDelete;","var baseTimes = require('./_baseTimes'),\n    isArguments = require('./isArguments'),\n    isArray = require('./isArray'),\n    isBuffer = require('./isBuffer'),\n    isIndex = require('./_isIndex'),\n    isTypedArray = require('./isTypedArray');\n/** Used for built-in method references. */\n\n\nvar objectProto = Object.prototype;\n/** Used to check objects for own properties. */\n\nvar hasOwnProperty = objectProto.hasOwnProperty;\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\n\nfunction arrayLikeKeys(value, inherited) {\n  var isArr = isArray(value),\n      isArg = !isArr && isArguments(value),\n      isBuff = !isArr && !isArg && isBuffer(value),\n      isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n      skipIndexes = isArr || isArg || isBuff || isType,\n      result = skipIndexes ? baseTimes(value.length, String) : [],\n      length = result.length;\n\n  for (var key in value) {\n    if ((inherited || hasOwnProperty.call(value, key)) && !(skipIndexes && ( // Safari 9 has enumerable `arguments.length` in strict mode.\n    key == 'length' || // Node.js 0.10 has enumerable non-index properties on buffers.\n    isBuff && (key == 'offset' || key == 'parent') || // PhantomJS 2 has enumerable non-index properties on typed arrays.\n    isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset') || // Skip index properties.\n    isIndex(key, length)))) {\n      result.push(key);\n    }\n  }\n\n  return result;\n}\n\nmodule.exports = arrayLikeKeys;","// 22.1.3.6 Array.prototype.fill(value, start = 0, end = this.length)\nvar $export = require('./_export');\n\n$export($export.P, 'Array', { fill: require('./_array-fill') });\n\nrequire('./_add-to-unscopables')('fill');\n","var baseIsTypedArray = require('./_baseIsTypedArray'),\n    baseUnary = require('./_baseUnary'),\n    nodeUtil = require('./_nodeUtil');\n/* Node.js helper references. */\n\n\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\n\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\nmodule.exports = isTypedArray;","var createBaseFor = require('./_createBaseFor');\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n\n\nvar baseFor = createBaseFor();\nmodule.exports = baseFor;","var baseGetTag = require('./_baseGetTag'),\n    isLength = require('./isLength'),\n    isObjectLike = require('./isObjectLike');\n/** `Object#toString` result references. */\n\n\nvar argsTag = '[object Arguments]',\n    arrayTag = '[object Array]',\n    boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    errorTag = '[object Error]',\n    funcTag = '[object Function]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    objectTag = '[object Object]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    weakMapTag = '[object WeakMap]';\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]',\n    float32Tag = '[object Float32Array]',\n    float64Tag = '[object Float64Array]',\n    int8Tag = '[object Int8Array]',\n    int16Tag = '[object Int16Array]',\n    int32Tag = '[object Int32Array]',\n    uint8Tag = '[object Uint8Array]',\n    uint8ClampedTag = '[object Uint8ClampedArray]',\n    uint16Tag = '[object Uint16Array]',\n    uint32Tag = '[object Uint32Array]';\n/** Used to identify `toStringTag` values of typed arrays. */\n\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] = typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = typedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] = typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = typedArrayTags[errorTag] = typedArrayTags[funcTag] = typedArrayTags[mapTag] = typedArrayTags[numberTag] = typedArrayTags[objectTag] = typedArrayTags[regexpTag] = typedArrayTags[setTag] = typedArrayTags[stringTag] = typedArrayTags[weakMapTag] = false;\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\n\nfunction baseIsTypedArray(value) {\n  return isObjectLike(value) && isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;","var baseToString = require('./_baseToString');\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\n\n\nfunction toString(value) {\n  return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;","var mapCacheClear = require('./_mapCacheClear'),\n    mapCacheDelete = require('./_mapCacheDelete'),\n    mapCacheGet = require('./_mapCacheGet'),\n    mapCacheHas = require('./_mapCacheHas'),\n    mapCacheSet = require('./_mapCacheSet');\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n\n\nfunction MapCache(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n  this.clear();\n\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n} // Add methods to `MapCache`.\n\n\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\nmodule.exports = MapCache;","var Stack = require('./_Stack'),\n    equalArrays = require('./_equalArrays'),\n    equalByTag = require('./_equalByTag'),\n    equalObjects = require('./_equalObjects'),\n    getTag = require('./_getTag'),\n    isArray = require('./isArray'),\n    isBuffer = require('./isBuffer'),\n    isTypedArray = require('./isTypedArray');\n/** Used to compose bitmasks for value comparisons. */\n\n\nvar COMPARE_PARTIAL_FLAG = 1;\n/** `Object#toString` result references. */\n\nvar argsTag = '[object Arguments]',\n    arrayTag = '[object Array]',\n    objectTag = '[object Object]';\n/** Used for built-in method references. */\n\nvar objectProto = Object.prototype;\n/** Used to check objects for own properties. */\n\nvar hasOwnProperty = objectProto.hasOwnProperty;\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n  var objIsArr = isArray(object),\n      othIsArr = isArray(other),\n      objTag = objIsArr ? arrayTag : getTag(object),\n      othTag = othIsArr ? arrayTag : getTag(other);\n  objTag = objTag == argsTag ? objectTag : objTag;\n  othTag = othTag == argsTag ? objectTag : othTag;\n  var objIsObj = objTag == objectTag,\n      othIsObj = othTag == objectTag,\n      isSameTag = objTag == othTag;\n\n  if (isSameTag && isBuffer(object)) {\n    if (!isBuffer(other)) {\n      return false;\n    }\n\n    objIsArr = true;\n    objIsObj = false;\n  }\n\n  if (isSameTag && !objIsObj) {\n    stack || (stack = new Stack());\n    return objIsArr || isTypedArray(object) ? equalArrays(object, other, bitmask, customizer, equalFunc, stack) : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n  }\n\n  if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n    var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n        othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n    if (objIsWrapped || othIsWrapped) {\n      var objUnwrapped = objIsWrapped ? object.value() : object,\n          othUnwrapped = othIsWrapped ? other.value() : other;\n      stack || (stack = new Stack());\n      return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n    }\n  }\n\n  if (!isSameTag) {\n    return false;\n  }\n\n  stack || (stack = new Stack());\n  return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nmodule.exports = baseIsEqualDeep;","// 20.2.2.21 Math.log10(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n  log10: function log10(x) {\n    return Math.log(x) * Math.LOG10E;\n  }\n});\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n  var index = -1,\n      length = array == null ? 0 : array.length,\n      result = Array(length);\n\n  while (++index < length) {\n    result[index] = iteratee(array[index], index, array);\n  }\n\n  return result;\n}\n\nmodule.exports = arrayMap;","var getNative = require('./_getNative'),\n    root = require('./_root');\n/* Built-in method references that are verified to be native. */\n\n\nvar Map = getNative(root, 'Map');\nmodule.exports = Map;","var nativeCreate = require('./_nativeCreate');\n/** Used for built-in method references. */\n\n\nvar objectProto = Object.prototype;\n/** Used to check objects for own properties. */\n\nvar hasOwnProperty = objectProto.hasOwnProperty;\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n\nfunction hashHas(key) {\n  var data = this.__data__;\n  return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;","var Hash = require('./_Hash'),\n    ListCache = require('./_ListCache'),\n    Map = require('./_Map');\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\n\n\nfunction mapCacheClear() {\n  this.size = 0;\n  this.__data__ = {\n    'hash': new Hash(),\n    'map': new (Map || ListCache)(),\n    'string': new Hash()\n  };\n}\n\nmodule.exports = mapCacheClear;","var arrayPush = require('./_arrayPush'),\n    isArray = require('./isArray');\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\n\n\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n  var result = keysFunc(object);\n  return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nmodule.exports = baseGetAllKeys;","var ListCache = require('./_ListCache'),\n    stackClear = require('./_stackClear'),\n    stackDelete = require('./_stackDelete'),\n    stackGet = require('./_stackGet'),\n    stackHas = require('./_stackHas'),\n    stackSet = require('./_stackSet');\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n\n\nfunction Stack(entries) {\n  var data = this.__data__ = new ListCache(entries);\n  this.size = data.size;\n} // Add methods to `Stack`.\n\n\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\nmodule.exports = Stack;","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\n\nfunction setCacheAdd(value) {\n  this.__data__.set(value, HASH_UNDEFINED);\n\n  return this;\n}\n\nmodule.exports = setCacheAdd;","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n  return this.__data__.get(key);\n}\n\nmodule.exports = stackGet;","// 20.1.2.6 Number.MAX_SAFE_INTEGER\nvar $export = require('./_export');\n\n$export($export.S, 'Number', { MAX_SAFE_INTEGER: 0x1fffffffffffff });\n","var baseHasIn = require('./_baseHasIn'),\n    hasPath = require('./_hasPath');\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\n\n\nfunction hasIn(object, path) {\n  return object != null && hasPath(object, path, baseHasIn);\n}\n\nmodule.exports = hasIn;","// https://github.com/tc39/proposal-object-values-entries\nvar $export = require('./_export');\nvar $values = require('./_object-to-array')(false);\n\n$export($export.S, 'Object', {\n  values: function values(it) {\n    return $values(it);\n  }\n});\n","var defineProperty = require('./_defineProperty');\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n\n\nfunction baseAssignValue(object, key, value) {\n  if (key == '__proto__' && defineProperty) {\n    defineProperty(object, key, {\n      'configurable': true,\n      'enumerable': true,\n      'value': value,\n      'writable': true\n    });\n  } else {\n    object[key] = value;\n  }\n}\n\nmodule.exports = baseAssignValue;","// 20.3.4.36 / 15.9.5.43 Date.prototype.toISOString()\nvar $export = require('./_export');\nvar toISOString = require('./_date-to-iso-string');\n\n// PhantomJS / old WebKit has a broken implementations\n$export($export.P + $export.F * (Date.prototype.toISOString !== toISOString), 'Date', {\n  toISOString: toISOString\n});\n","'use strict';\n// 20.3.4.36 / 15.9.5.43 Date.prototype.toISOString()\nvar fails = require('./_fails');\nvar getTime = Date.prototype.getTime;\nvar $toISOString = Date.prototype.toISOString;\n\nvar lz = function (num) {\n  return num > 9 ? num : '0' + num;\n};\n\n// PhantomJS / old WebKit has a broken implementations\nmodule.exports = (fails(function () {\n  return $toISOString.call(new Date(-5e13 - 1)) != '0385-07-25T07:06:39.999Z';\n}) || !fails(function () {\n  $toISOString.call(new Date(NaN));\n})) ? function toISOString() {\n  if (!isFinite(getTime.call(this))) throw RangeError('Invalid time value');\n  var d = this;\n  var y = d.getUTCFullYear();\n  var m = d.getUTCMilliseconds();\n  var s = y < 0 ? '-' : y > 9999 ? '+' : '';\n  return s + ('00000' + Math.abs(y)).slice(s ? -6 : -4) +\n    '-' + lz(d.getUTCMonth() + 1) + '-' + lz(d.getUTCDate()) +\n    'T' + lz(d.getUTCHours()) + ':' + lz(d.getUTCMinutes()) +\n    ':' + lz(d.getUTCSeconds()) + '.' + (m > 99 ? m : '0' + lz(m)) + 'Z';\n} : $toISOString;\n","var getMapData = require('./_getMapData');\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n\n\nfunction mapCacheDelete(key) {\n  var result = getMapData(this, key)['delete'](key);\n  this.size -= result ? 1 : 0;\n  return result;\n}\n\nmodule.exports = mapCacheDelete;","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n  return function (arg) {\n    return func(transform(arg));\n  };\n}\n\nmodule.exports = overArg;","// 20.1.2.10 Number.MIN_SAFE_INTEGER\nvar $export = require('./_export');\n\n$export($export.S, 'Number', { MIN_SAFE_INTEGER: -0x1fffffffffffff });\n","var isArrayLike = require('./isArrayLike');\n/**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n\n\nfunction createBaseEach(eachFunc, fromRight) {\n  return function (collection, iteratee) {\n    if (collection == null) {\n      return collection;\n    }\n\n    if (!isArrayLike(collection)) {\n      return eachFunc(collection, iteratee);\n    }\n\n    var length = collection.length,\n        index = fromRight ? length : -1,\n        iterable = Object(collection);\n\n    while (fromRight ? index-- : ++index < length) {\n      if (iteratee(iterable[index], index, iterable) === false) {\n        break;\n      }\n    }\n\n    return collection;\n  };\n}\n\nmodule.exports = createBaseEach;","var baseGetTag = require('./_baseGetTag'),\n    isObject = require('./isObject');\n/** `Object#toString` result references. */\n\n\nvar asyncTag = '[object AsyncFunction]',\n    funcTag = '[object Function]',\n    genTag = '[object GeneratorFunction]',\n    proxyTag = '[object Proxy]';\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\n\nfunction isFunction(value) {\n  if (!isObject(value)) {\n    return false;\n  } // The use of `Object#toString` avoids issues with the `typeof` operator\n  // in Safari 9 which returns 'object' for typed arrays and other constructors.\n\n\n  var tag = baseGetTag(value);\n  return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n  return value === other || value !== value && other !== other;\n}\n\nmodule.exports = eq;","var Stack = require('./_Stack'),\n    baseIsEqual = require('./_baseIsEqual');\n/** Used to compose bitmasks for value comparisons. */\n\n\nvar COMPARE_PARTIAL_FLAG = 1,\n    COMPARE_UNORDERED_FLAG = 2;\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\n\nfunction baseIsMatch(object, source, matchData, customizer) {\n  var index = matchData.length,\n      length = index,\n      noCustomizer = !customizer;\n\n  if (object == null) {\n    return !length;\n  }\n\n  object = Object(object);\n\n  while (index--) {\n    var data = matchData[index];\n\n    if (noCustomizer && data[2] ? data[1] !== object[data[0]] : !(data[0] in object)) {\n      return false;\n    }\n  }\n\n  while (++index < length) {\n    data = matchData[index];\n    var key = data[0],\n        objValue = object[key],\n        srcValue = data[1];\n\n    if (noCustomizer && data[2]) {\n      if (objValue === undefined && !(key in object)) {\n        return false;\n      }\n    } else {\n      var stack = new Stack();\n\n      if (customizer) {\n        var result = customizer(objValue, srcValue, key, object, source, stack);\n      }\n\n      if (!(result === undefined ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack) : result)) {\n        return false;\n      }\n    }\n  }\n\n  return true;\n}\n\nmodule.exports = baseIsMatch;","// 20.2.2.28 Math.sign(x)\nmodule.exports = Math.sign || function sign(x) {\n  // eslint-disable-next-line no-self-compare\n  return (x = +x) == 0 || x != x ? x : x < 0 ? -1 : 1;\n};\n","/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n  return function (object, iteratee, keysFunc) {\n    var index = -1,\n        iterable = Object(object),\n        props = keysFunc(object),\n        length = props.length;\n\n    while (length--) {\n      var key = props[fromRight ? length : ++index];\n\n      if (iteratee(iterable[key], key, iterable) === false) {\n        break;\n      }\n    }\n\n    return object;\n  };\n}\n\nmodule.exports = createBaseFor;","var freeGlobal = require('./_freeGlobal');\n/** Detect free variable `exports`. */\n\n\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n/** Detect free variable `module`. */\n\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n/** Detect the popular CommonJS extension `module.exports`. */\n\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n/** Detect free variable `process` from Node.js. */\n\nvar freeProcess = moduleExports && freeGlobal.process;\n/** Used to access faster Node.js helpers. */\n\nvar nodeUtil = function () {\n  try {\n    // Use `util.types` for Node.js 10+.\n    var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n    if (types) {\n      return types;\n    } // Legacy `process.binding('util')` for Node.js < 10.\n\n\n    return freeProcess && freeProcess.binding && freeProcess.binding('util');\n  } catch (e) {}\n}();\n\nmodule.exports = nodeUtil;","var baseGet = require('./_baseGet');\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\n\n\nfunction get(object, path, defaultValue) {\n  var result = object == null ? undefined : baseGet(object, path);\n  return result === undefined ? defaultValue : result;\n}\n\nmodule.exports = get;","var root = require('./_root');\n/** Built-in value references. */\n\n\nvar Symbol = root.Symbol;\nmodule.exports = Symbol;","/**\n * A specialized version of `baseAggregator` for arrays.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\nfunction arrayAggregator(array, setter, iteratee, accumulator) {\n  var index = -1,\n      length = array == null ? 0 : array.length;\n\n  while (++index < length) {\n    var value = array[index];\n    setter(accumulator, value, iteratee(value), array);\n  }\n\n  return accumulator;\n}\n\nmodule.exports = arrayAggregator;","var SetCache = require('./_SetCache'),\n    arraySome = require('./_arraySome'),\n    cacheHas = require('./_cacheHas');\n/** Used to compose bitmasks for value comparisons. */\n\n\nvar COMPARE_PARTIAL_FLAG = 1,\n    COMPARE_UNORDERED_FLAG = 2;\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\n\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n  var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n      arrLength = array.length,\n      othLength = other.length;\n\n  if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n    return false;\n  } // Assume cyclic values are equal.\n\n\n  var stacked = stack.get(array);\n\n  if (stacked && stack.get(other)) {\n    return stacked == other;\n  }\n\n  var index = -1,\n      result = true,\n      seen = bitmask & COMPARE_UNORDERED_FLAG ? new SetCache() : undefined;\n  stack.set(array, other);\n  stack.set(other, array); // Ignore non-index properties.\n\n  while (++index < arrLength) {\n    var arrValue = array[index],\n        othValue = other[index];\n\n    if (customizer) {\n      var compared = isPartial ? customizer(othValue, arrValue, index, other, array, stack) : customizer(arrValue, othValue, index, array, other, stack);\n    }\n\n    if (compared !== undefined) {\n      if (compared) {\n        continue;\n      }\n\n      result = false;\n      break;\n    } // Recursively compare arrays (susceptible to call stack limits).\n\n\n    if (seen) {\n      if (!arraySome(other, function (othValue, othIndex) {\n        if (!cacheHas(seen, othIndex) && (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n          return seen.push(othIndex);\n        }\n      })) {\n        result = false;\n        break;\n      }\n    } else if (!(arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n      result = false;\n      break;\n    }\n  }\n\n  stack['delete'](array);\n  stack['delete'](other);\n  return result;\n}\n\nmodule.exports = equalArrays;","import React, {Component} from \"react\";\n\nimport { Line, } from 'react-chartjs-2';\n\nclass LineChart extends Component {\n   state = {\n        lineChartData: this.props.lineChartData,\n    }\n\n    static defaultProps = {\n        displayLegend: true,\n        legendPosition:'bottom',\n    }\n\n    render(){\n        return(\n            <div>\n                <Line\n                    data={this.state.lineChartData}\n                    height={220}\n                    width={250}\n                    options={{\n                        scales:{\n                            xAxes: [{\n                                display: true,\n                                ticks: {\n                                    fontColor: \"white\",\n                                    maxTicksLimit: 3,\n                                },\n                                gridLines: {\n                                    color: \"white\",\n                                },\n                                scaleLabel: {\n                                    display: true,\n                                    labelString: this.props.xAxis,\n                                    fontColor: 'white'                                    \n                                  }\n                            }],\n                            yAxes: [{\n                                display: true,\n                                ticks: {\n                                    fontColor: \"white\",\n                                    maxTicksLimit: 3,\n                    \n                                },\n                                gridLines: {\n                                    color: \"white\",\n                                },\n                                scaleLabel: {\n                                    display: true,\n                                    labelString: this.props.yAxis,\n                                    fontColor: 'white'                                    \n                                  }\n                            }]\n\n                        },\n                        legend:{\n                            labels : {\n                                fontColor: \"white\"\n                            },\n                            display:this.props.displayLegend,\n                            position:this.props.legendPosition\n                        },\n                        animation: {\n                            duration: 2000,\n                            easing: 'easeOutCubic',\n                        },\n                    }}\n                />\n                \n            </div>\n        )\n    }\n}\n\nexport default LineChart;","import React, {Component} from \"react\";\n\nimport { Bar } from 'react-chartjs-2';\n\nclass BarChart extends Component {\n    state = {\n        barChartData: this.props.barChartData,\n    }\n    \n    static defaultProps = {\n        displayLegend: false,\n        legendPosition:'bottom',\n    }\n\n    render(){\n        return(\n            <div>\n                <Bar\n                    data={this.state.barChartData}\n                    height={220}\n                    width={250}\n                    options={{\n                        scales:{\n                            xAxes: [{\n                                display: true,\n                                ticks: {\n                                    fontColor: \"white\",\n                                },\n                                gridLines: {\n                                    color: \"white\",\n                                },\n                                scaleLabel: {\n                                    display: false,\n                                    labelString: this.props.xAxis,\n                                    fontColor: 'white'                                    \n                                  }\n                            }],\n                            yAxes: [{\n                                display: true,\n                                ticks: {\n                                    fontColor: \"white\",\n                                    maxTicksLimit: 4,\n                                    padding:2,\n                                    beginAtZero: true\n                                },\n                                gridLines: {\n                                    color: \"white\",\n                                },\n                                scaleLabel: {\n                                    display: true,\n                                    labelString: this.props.yAxis,\n                                    fontColor: 'white'                                    \n                                }\n                            }]\n\n                        },\n                        legend:{\n                            display:this.props.displayLegend,\n                            position:this.props.legendPosition\n                        },\n                        animation: {\n                            duration: 2000,\n                            easing: 'easeOutCubic',\n                        },\n                      }}\n                />                \n            </div>\n        )\n    }\n}\n\nexport default BarChart;","// Copyright (c) 2017, 2020 IBM Corp. and others\n\n// This program and the accompanying materials are made available under\n// the terms of the Eclipse Public License 2.0 which accompanies this\n// distribution and is available at https://www.eclipse.org/legal/epl-2.0/\n// or the Apache License, Version 2.0 which accompanies this distribution and\n// is available at https://www.apache.org/licenses/LICENSE-2.0.\n\n// This Source Code may also be made available under the following\n// Secondary Licenses when the conditions for such availability set\n// forth in the Eclipse Public License, v. 2.0 are satisfied: GNU\n// General Public License, version 2 with the GNU Classpath\n// Exception [1] and GNU General Public License, version 2 with the\n// OpenJDK Assembly Exception [2].\n\n// [1] https://www.gnu.org/software/classpath/license.html\n// [2] http://openjdk.java.net/legal/assembly-exception.html\n\n// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 OR LicenseRef-GPL-2.0 WITH Assembly-exception\n\n// The project website pages cannot be redistributed\n\n/** @jsx jsx */\n\nimport { jsx } from \"theme-ui\";\nimport LineChart from \"../components/lineChart\";\nimport BarChart from \"../components/barChart\";\nconst PerformanceCard = ({ children, primary, graph, heading, chartType, xAxis, yAxis }) => {\n    if (chartType === \"line\") {\n        return (\n            <div\n              sx={{\n                boxShadow: primary ? \"cardShadow\" : null,\n                borderRadius: \"card\",\n                backgroundColor: \"primary\",\n                color: \"white\",\n                marginY: 5,\n                marginX: 1,\n                width:\"18rem\",\n                display: \"flex\",\n                flexDirection: \"column\",\n                justifyContent: \"center\",\n                alignItems: \"center\",\n              }}\n            >\n                <h5 sx={{fontSize:\"1.1rem\",margin:\"0.5rem 1.5rem 0.5rem 1.5rem\", textAlign:\"center\", height:\"3rem\",}}>{heading}</h5>\n                 <LineChart lineChartData={graph} legendPosition=\"bottom\" xAxis={xAxis} yAxis={yAxis}/>\n              <div\n              sx={{\n                boxShadowBottom: primary ? \"cardShadow\" : null,\n                borderBottomRightRadius: \"card\",\n                borderBottomLeftRadius: \"card\",\n                backgroundColor: \"white\",\n                borderTop: \"5px solid #5DA7A3\",\n                color: \"darkText\",\n                height:\"50%\",\n                padding:\"4rem 1rem\",\n                display: \"flex\",\n                justifyContent: \"center\",\n                alignItems: \"center\",\n                width:\"100%\",\n                marginBottom:\"-4rem\",\n                marginTop:\"1rem\"\n \n              }}\n            >\n              {children}\n            </div>\n            </div>\n            \n          );\n    } else {\n        return (\n            <div\n              sx={{\n        \n                boxShadow: primary ? \"cardShadow\" : null,\n                borderRadius: \"card\",\n                backgroundColor: \"primary\",\n                color: \"white\",\n                marginY: 5,\n                marginX: 1,\n                width:\"18rem\",\n                display: \"flex\",\n                flexDirection: \"column\",\n                justifyContent: \"center\",\n                alignItems: \"center\",\n              }}\n            >\n                <h5 sx={{fontSize:\"1.1rem\",margin:\"0.5rem 1rem 0.5rem 1rem\", textAlign:\"center\", height:\"3rem\",}}>{heading}</h5>\n                <BarChart barChartData={graph} yAxis={yAxis}/>\n              <div\n              sx={{\n                boxShadowBottom: primary ? \"cardShadow\" : null,\n                borderBottomRightRadius: \"card\",\n                borderBottomLeftRadius: \"card\",\n                backgroundColor: \"white\",\n                borderTop: \"5px solid #5DA7A3\",\n                color: \"darkText\",\n                height:\"50%\",\n                padding:\"4rem 1rem\",\n                display: \"flex\",\n                justifyContent: \"center\",\n                alignItems: \"center\",\n                width:\"100%\",\n                marginBottom:\"-4rem\",\n                marginTop:\"1rem\"\n              }}\n            >\n              {children}\n            </div>\n            </div>\n            \n          );\n    }\n};\n\nexport default PerformanceCard;\n","// Copyright (c) 2017, 2020 IBM Corp. and others\n\n// This program and the accompanying materials are made available under\n// the terms of the Eclipse Public License 2.0 which accompanies this\n// distribution and is available at https://www.eclipse.org/legal/epl-2.0/\n// or the Apache License, Version 2.0 which accompanies this distribution and\n// is available at https://www.apache.org/licenses/LICENSE-2.0.\n\n// This Source Code may also be made available under the following\n// Secondary Licenses when the conditions for such availability set\n// forth in the Eclipse Public License, v. 2.0 are satisfied: GNU\n// General Public License, version 2 with the GNU Classpath\n// Exception [1] and GNU General Public License, version 2 with the\n// OpenJDK Assembly Exception [2].\n\n// [1] https://www.gnu.org/software/classpath/license.html\n// [2] http://openjdk.java.net/legal/assembly-exception.html\n\n// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 OR LicenseRef-GPL-2.0 WITH Assembly-exception\n\n// The project website pages cannot be redistributed\n\nimport Layout from \"../components/layout\";\n\n/** @jsx jsx */\nimport { jsx, Styled } from \"theme-ui\";\nimport {Component} from \"react\";\n\nimport PerformanceCard from \"../components/performanceCard\";\n\nclass performance extends Component {\n\n  state = {\n      barChartJDK8Footprint:{ \n        labels: ['OpenJ9', 'HotSpot'],\n        datasets:[\n          {\n            data:[\n              0.34,              \n              1\n            ],\n            backgroundColor:[\n              '#5DA7A3',\n              '#E58B23'\n            ]\n          }\n        ]\n      },\n      lineChartJK8FootprintDuringrampup:{ \n        labels: [0, 200, 400, 600, 800, 1000, 1200, 1400, 1600, 1800],\n        datasets:[\n          {\n            label: 'OpenJ9',\n            data:[\n              232,\n              488,\n              505,\n              511,\n              516,\n              517,\n              520,\n              521,\n              521,\n              522\n            ],\n            fill: false,\n            borderColor: \"#5DA7A3\",\n            backgroundColor:'#5DA7A3'\n          },\n          {\n            label: 'HotSpot',\n            data:[\n              563,\n              902,\n              1023,\n              1140,\n              1200,\n              1218,\n              1220,\n              1289,\n              1359,\n              1368\n            ],\n            fill: false,\n            borderColor:'#E58B23',\n            backgroundColor:'#E58B23'\n          },\n        ]\n      },\n      barChartJDK8Startup:{ \n        labels: ['OpenJ9', 'HotSpot'],\n        datasets:[\n          {\n            data:[\n              0.58,              \n              1\n            ],\n            backgroundColor:[\n              '#5DA7A3',\n              '#E58B23'\n            ]\n          }\n        ]\n      },\n      lineChartJK8FasterRampupInTheCloud:{ \n        labels: [0, 150, 300, 450, 600, 750, 900, 1050, 1200, 1350],\n        datasets:[\n          {\n            label: 'OpenJ9',\n            data:[\n              8.5,\n              1064,\n              1063,\n              1133,\n              1188.5,\n              1071,\n              1125.5,\n              1084.5,\n              1095,\n              1104.5,\n           \n            ],\n            fill: false,\n            borderColor: \"#5DA7A3\",\n            backgroundColor:'#5DA7A3'\n          },\n          {\n            label: 'HotSpot',\n            data:[\n              10.5,\n              529.5,\n              700.5,\n              832.5,\n              796,\n              829.5,\n              698.5,\n              791.5,\n              1017,\n              1175.5,\n            ],\n            fill: false,\n            borderColor:'#E58B23',\n            backgroundColor:'#E58B23'\n          },\n        ]\n      },\n    } \n  \n  render (){\n    return(\n      <Layout isHome={false} title=\"Eclipse OpenJ9 performance\" description=\"OpenJDK with OpenJ9 demonstrates significantly better performance than HotSpot.\">\n      <div sx={{ backgroundColor: \"#F5F9FC\",  paddingX: \"10%\", paddingTop: \"3%\", paddingBottom: \"1%\" }}>\n        <Styled.h1 sx={{marginBottom:\"1rem\"}}>Performance Overview</Styled.h1>\n          <Styled.p>\n            Application performance can be measured using many different metrics, including startup time,\n            ramp-up time, footprint, and response time, as well as throughput. At Eclipse OpenJ9, we keep a watchful eye on all\n            of these metrics, making sensible tradeoffs and providing tuning options that allow the virtual machine (VM) to be optimized for different workloads.\n          </Styled.p>\n      </div>\n      \n      <div\n        sx={{\n          backgroundColor: \"#F5F9FC\",\n          paddingX: \"10%\",\n          paddingTop: \"1%\",\n          paddingBottom: \"3%\"\n        }}\n      >\n        <Styled.h2>OpenJDK 8 performance with Eclipse OpenJ9</Styled.h2>\n        <Styled.p sx={{marginBottom:\"0.5rem\"}}>\n          The result is that OpenJDK 8 with OpenJ9 demonstrates significantly better performance than with Hotspot.\n        </Styled.p>\n    \n        <div\n          sx={{\n            display: \"flex\",\n            justifyContent: \"space-around\",\n            flexWrap: \"wrap\"\n          }}\n        >\n          <PerformanceCard graph={this.state.barChartJDK8Footprint} heading=\"66% smaller footprint after startup\" primary={true} chartType=\"bar\" yAxis=\"Relative resident set size\"> \n            <p>OpenJ9 is highly optimized for cloud workloads, where minimizing memory footprint is important.\n              Out of the box, the footprint is 66% smaller than HotSpot.</p>\n          </PerformanceCard>\n          <PerformanceCard graph={this.state.lineChartJK8FootprintDuringrampup} heading=\"63% smaller footprint during ramp up\" primary={true} chartType=\"line\" yAxis=\"Resident Set Size (MB)\" xAxis=\"Time (s)\"> \n            <p>Memory footprint increases rapidly when load is applied. However, at steady state,\n              OpenJ9 consistently used around 63% less physical memory than HotSpot.</p>\n          </PerformanceCard>\n          <PerformanceCard graph={this.state.barChartJDK8Startup} heading=\"42% faster startup time\" primary={true} chartType=\"bar\" yAxis=\"Relative start-up time\"> \n            <p>Shared classes and Ahead-of-Time (AOT) technologies typically reduce startup time. By using -Xquickstart mode as well,\n              you can reduce startup time by up to 42%.</p>\n          </PerformanceCard>\n          <PerformanceCard graph={this.state.lineChartJK8FasterRampupInTheCloud} heading=\"Faster ramp-up time in the cloud\" primary={true} chartType=\"line\" xAxis=\"Time (s)\" yAxis=\"Throughput\"> \n            <p>OpenJ9 reaches peak throughput on a single CPU core in 8.5 minutes compared with 30 minutes for Hotspot.\n              Ideal for short-lived VMs running in the cloud.</p>\n          </PerformanceCard>\n        </div>\n        <div\n          sx={{\n            display: \"flex\",\n            justifyContent: \"center\",\n            paddingBottom: \"5%\"\n          }}\n        >\n          <a sx={{\n              variant: \"buttons.secondary\",\n              display: \"flex\",\n              alignItems: \"center\",\n              justifyContent: \"center\",\n              textDecoration: \"none\",\n              width:\"16rem\",\n              marginTop:\"5rem\"\n              }} \n              href=\"https://github.com/eclipse/openj9-website/blob/master/benchmark/daytrader7.md\" rel=\"noopener noreferrer\" target=\"_blank\">Read more performance details</a>\n        </div>\n      </div>\n    </Layout>\n    )\n  }\n}\n\nexport default performance;\n \n","var getMapData = require('./_getMapData');\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n\n\nfunction mapCacheHas(key) {\n  return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;","var baseGetAllKeys = require('./_baseGetAllKeys'),\n    getSymbols = require('./_getSymbols'),\n    keys = require('./keys');\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n\n\nfunction getAllKeys(object) {\n  return baseGetAllKeys(object, keys, getSymbols);\n}\n\nmodule.exports = getAllKeys;","require(\"core-js/modules/es6.array.for-each\");\n\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n  var index = -1,\n      result = Array(set.size);\n  set.forEach(function (value) {\n    result[++index] = value;\n  });\n  return result;\n}\n\nmodule.exports = setToArray;","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n  return function (value) {\n    return func(value);\n  };\n}\n\nmodule.exports = baseUnary;","var getAllKeys = require('./_getAllKeys');\n/** Used to compose bitmasks for value comparisons. */\n\n\nvar COMPARE_PARTIAL_FLAG = 1;\n/** Used for built-in method references. */\n\nvar objectProto = Object.prototype;\n/** Used to check objects for own properties. */\n\nvar hasOwnProperty = objectProto.hasOwnProperty;\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n  var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n      objProps = getAllKeys(object),\n      objLength = objProps.length,\n      othProps = getAllKeys(other),\n      othLength = othProps.length;\n\n  if (objLength != othLength && !isPartial) {\n    return false;\n  }\n\n  var index = objLength;\n\n  while (index--) {\n    var key = objProps[index];\n\n    if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n      return false;\n    }\n  } // Assume cyclic values are equal.\n\n\n  var stacked = stack.get(object);\n\n  if (stacked && stack.get(other)) {\n    return stacked == other;\n  }\n\n  var result = true;\n  stack.set(object, other);\n  stack.set(other, object);\n  var skipCtor = isPartial;\n\n  while (++index < objLength) {\n    key = objProps[index];\n    var objValue = object[key],\n        othValue = other[key];\n\n    if (customizer) {\n      var compared = isPartial ? customizer(othValue, objValue, key, other, object, stack) : customizer(objValue, othValue, key, object, other, stack);\n    } // Recursively compare objects (susceptible to call stack limits).\n\n\n    if (!(compared === undefined ? objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack) : compared)) {\n      result = false;\n      break;\n    }\n\n    skipCtor || (skipCtor = key == 'constructor');\n  }\n\n  if (result && !skipCtor) {\n    var objCtor = object.constructor,\n        othCtor = other.constructor; // Non `Object` object instances with different constructors are not equal.\n\n    if (objCtor != othCtor && 'constructor' in object && 'constructor' in other && !(typeof objCtor == 'function' && objCtor instanceof objCtor && typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n      result = false;\n    }\n  }\n\n  stack['delete'](object);\n  stack['delete'](other);\n  return result;\n}\n\nmodule.exports = equalObjects;","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\n\nfunction isLength(value) {\n  return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;","var assocIndexOf = require('./_assocIndexOf');\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n\n\nfunction listCacheGet(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n  return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;","var getNative = require('./_getNative'),\n    root = require('./_root');\n/* Built-in method references that are verified to be native. */\n\n\nvar DataView = getNative(root, 'DataView');\nmodule.exports = DataView;","var nativeCreate = require('./_nativeCreate');\n/** Used to stand-in for `undefined` hash values. */\n\n\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n/** Used for built-in method references. */\n\nvar objectProto = Object.prototype;\n/** Used to check objects for own properties. */\n\nvar hasOwnProperty = objectProto.hasOwnProperty;\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n\nfunction hashGet(key) {\n  var data = this.__data__;\n\n  if (nativeCreate) {\n    var result = data[key];\n    return result === HASH_UNDEFINED ? undefined : result;\n  }\n\n  return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;","var baseMatches = require('./_baseMatches'),\n    baseMatchesProperty = require('./_baseMatchesProperty'),\n    identity = require('./identity'),\n    isArray = require('./isArray'),\n    property = require('./property');\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\n\n\nfunction baseIteratee(value) {\n  // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n  // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n  if (typeof value == 'function') {\n    return value;\n  }\n\n  if (value == null) {\n    return identity;\n  }\n\n  if (typeof value == 'object') {\n    return isArray(value) ? baseMatchesProperty(value[0], value[1]) : baseMatches(value);\n  }\n\n  return property(value);\n}\n\nmodule.exports = baseIteratee;","var baseIsEqualDeep = require('./_baseIsEqualDeep'),\n    isObjectLike = require('./isObjectLike');\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n *  1 - Unordered comparison\n *  2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\n\n\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n  if (value === other) {\n    return true;\n  }\n\n  if (value == null || other == null || !isObjectLike(value) && !isObjectLike(other)) {\n    return value !== value && other !== other;\n  }\n\n  return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nmodule.exports = baseIsEqual;","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n/** Used to detect unsigned integer values. */\n\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\n\nfunction isIndex(value, length) {\n  var type = typeof value;\n  length = length == null ? MAX_SAFE_INTEGER : length;\n  return !!length && (type == 'number' || type != 'symbol' && reIsUint.test(value)) && value > -1 && value % 1 == 0 && value < length;\n}\n\nmodule.exports = isIndex;","require(\"core-js/modules/es6.date.to-json\");\n\nrequire(\"core-js/modules/es6.date.to-iso-string\");\n\nrequire(\"core-js/modules/es6.date.now\");\n\nrequire(\"core-js/modules/es6.function.name\");\n\nrequire(\"core-js/modules/es6.array.for-each\");\n\nrequire(\"core-js/modules/es6.regexp.split\");\n\nrequire(\"core-js/modules/es6.array.index-of\");\n\nrequire(\"core-js/modules/es6.regexp.match\");\n\nrequire(\"core-js/modules/es6.array.sort\");\n\nrequire(\"core-js/modules/es6.regexp.replace\");\n\nrequire(\"core-js/modules/web.dom.iterable\");\n\nrequire(\"core-js/modules/es6.array.iterator\");\n\nrequire(\"core-js/modules/es6.object.keys\");\n\nrequire(\"core-js/modules/es6.regexp.constructor\");\n\nrequire(\"core-js/modules/es6.object.is-frozen\");\n\nrequire(\"core-js/modules/es6.array.some\");\n\nrequire(\"core-js/modules/es6.regexp.to-string\");\n\nrequire(\"core-js/modules/es6.date.to-string\");\n\nrequire(\"core-js/modules/es6.object.to-string\");\n\n//! moment.js\n;\n\n(function (global, factory) {\n  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : typeof define === 'function' && define.amd ? define(factory) : global.moment = factory();\n})(this, function () {\n  'use strict';\n\n  var hookCallback;\n\n  function hooks() {\n    return hookCallback.apply(null, arguments);\n  } // This is done to register the method called with moment()\n  // without creating circular dependencies.\n\n\n  function setHookCallback(callback) {\n    hookCallback = callback;\n  }\n\n  function isArray(input) {\n    return input instanceof Array || Object.prototype.toString.call(input) === '[object Array]';\n  }\n\n  function isObject(input) {\n    // IE8 will treat undefined and null as object if it wasn't for\n    // input != null\n    return input != null && Object.prototype.toString.call(input) === '[object Object]';\n  }\n\n  function isObjectEmpty(obj) {\n    if (Object.getOwnPropertyNames) {\n      return Object.getOwnPropertyNames(obj).length === 0;\n    } else {\n      var k;\n\n      for (k in obj) {\n        if (obj.hasOwnProperty(k)) {\n          return false;\n        }\n      }\n\n      return true;\n    }\n  }\n\n  function isUndefined(input) {\n    return input === void 0;\n  }\n\n  function isNumber(input) {\n    return typeof input === 'number' || Object.prototype.toString.call(input) === '[object Number]';\n  }\n\n  function isDate(input) {\n    return input instanceof Date || Object.prototype.toString.call(input) === '[object Date]';\n  }\n\n  function map(arr, fn) {\n    var res = [],\n        i;\n\n    for (i = 0; i < arr.length; ++i) {\n      res.push(fn(arr[i], i));\n    }\n\n    return res;\n  }\n\n  function hasOwnProp(a, b) {\n    return Object.prototype.hasOwnProperty.call(a, b);\n  }\n\n  function extend(a, b) {\n    for (var i in b) {\n      if (hasOwnProp(b, i)) {\n        a[i] = b[i];\n      }\n    }\n\n    if (hasOwnProp(b, 'toString')) {\n      a.toString = b.toString;\n    }\n\n    if (hasOwnProp(b, 'valueOf')) {\n      a.valueOf = b.valueOf;\n    }\n\n    return a;\n  }\n\n  function createUTC(input, format, locale, strict) {\n    return createLocalOrUTC(input, format, locale, strict, true).utc();\n  }\n\n  function defaultParsingFlags() {\n    // We need to deep clone this object.\n    return {\n      empty: false,\n      unusedTokens: [],\n      unusedInput: [],\n      overflow: -2,\n      charsLeftOver: 0,\n      nullInput: false,\n      invalidMonth: null,\n      invalidFormat: false,\n      userInvalidated: false,\n      iso: false,\n      parsedDateParts: [],\n      meridiem: null,\n      rfc2822: false,\n      weekdayMismatch: false\n    };\n  }\n\n  function getParsingFlags(m) {\n    if (m._pf == null) {\n      m._pf = defaultParsingFlags();\n    }\n\n    return m._pf;\n  }\n\n  var some;\n\n  if (Array.prototype.some) {\n    some = Array.prototype.some;\n  } else {\n    some = function some(fun) {\n      var t = Object(this);\n      var len = t.length >>> 0;\n\n      for (var i = 0; i < len; i++) {\n        if (i in t && fun.call(this, t[i], i, t)) {\n          return true;\n        }\n      }\n\n      return false;\n    };\n  }\n\n  function isValid(m) {\n    if (m._isValid == null) {\n      var flags = getParsingFlags(m);\n      var parsedParts = some.call(flags.parsedDateParts, function (i) {\n        return i != null;\n      });\n      var isNowValid = !isNaN(m._d.getTime()) && flags.overflow < 0 && !flags.empty && !flags.invalidMonth && !flags.invalidWeekday && !flags.weekdayMismatch && !flags.nullInput && !flags.invalidFormat && !flags.userInvalidated && (!flags.meridiem || flags.meridiem && parsedParts);\n\n      if (m._strict) {\n        isNowValid = isNowValid && flags.charsLeftOver === 0 && flags.unusedTokens.length === 0 && flags.bigHour === undefined;\n      }\n\n      if (Object.isFrozen == null || !Object.isFrozen(m)) {\n        m._isValid = isNowValid;\n      } else {\n        return isNowValid;\n      }\n    }\n\n    return m._isValid;\n  }\n\n  function createInvalid(flags) {\n    var m = createUTC(NaN);\n\n    if (flags != null) {\n      extend(getParsingFlags(m), flags);\n    } else {\n      getParsingFlags(m).userInvalidated = true;\n    }\n\n    return m;\n  } // Plugins that add properties should also add the key here (null value),\n  // so we can properly clone ourselves.\n\n\n  var momentProperties = hooks.momentProperties = [];\n\n  function copyConfig(to, from) {\n    var i, prop, val;\n\n    if (!isUndefined(from._isAMomentObject)) {\n      to._isAMomentObject = from._isAMomentObject;\n    }\n\n    if (!isUndefined(from._i)) {\n      to._i = from._i;\n    }\n\n    if (!isUndefined(from._f)) {\n      to._f = from._f;\n    }\n\n    if (!isUndefined(from._l)) {\n      to._l = from._l;\n    }\n\n    if (!isUndefined(from._strict)) {\n      to._strict = from._strict;\n    }\n\n    if (!isUndefined(from._tzm)) {\n      to._tzm = from._tzm;\n    }\n\n    if (!isUndefined(from._isUTC)) {\n      to._isUTC = from._isUTC;\n    }\n\n    if (!isUndefined(from._offset)) {\n      to._offset = from._offset;\n    }\n\n    if (!isUndefined(from._pf)) {\n      to._pf = getParsingFlags(from);\n    }\n\n    if (!isUndefined(from._locale)) {\n      to._locale = from._locale;\n    }\n\n    if (momentProperties.length > 0) {\n      for (i = 0; i < momentProperties.length; i++) {\n        prop = momentProperties[i];\n        val = from[prop];\n\n        if (!isUndefined(val)) {\n          to[prop] = val;\n        }\n      }\n    }\n\n    return to;\n  }\n\n  var updateInProgress = false; // Moment prototype object\n\n  function Moment(config) {\n    copyConfig(this, config);\n    this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n\n    if (!this.isValid()) {\n      this._d = new Date(NaN);\n    } // Prevent infinite loop in case updateOffset creates new moment\n    // objects.\n\n\n    if (updateInProgress === false) {\n      updateInProgress = true;\n      hooks.updateOffset(this);\n      updateInProgress = false;\n    }\n  }\n\n  function isMoment(obj) {\n    return obj instanceof Moment || obj != null && obj._isAMomentObject != null;\n  }\n\n  function absFloor(number) {\n    if (number < 0) {\n      // -0 -> 0\n      return Math.ceil(number) || 0;\n    } else {\n      return Math.floor(number);\n    }\n  }\n\n  function toInt(argumentForCoercion) {\n    var coercedNumber = +argumentForCoercion,\n        value = 0;\n\n    if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n      value = absFloor(coercedNumber);\n    }\n\n    return value;\n  } // compare two arrays, return the number of differences\n\n\n  function compareArrays(array1, array2, dontConvert) {\n    var len = Math.min(array1.length, array2.length),\n        lengthDiff = Math.abs(array1.length - array2.length),\n        diffs = 0,\n        i;\n\n    for (i = 0; i < len; i++) {\n      if (dontConvert && array1[i] !== array2[i] || !dontConvert && toInt(array1[i]) !== toInt(array2[i])) {\n        diffs++;\n      }\n    }\n\n    return diffs + lengthDiff;\n  }\n\n  function warn(msg) {\n    if (hooks.suppressDeprecationWarnings === false && typeof console !== 'undefined' && console.warn) {\n      console.warn('Deprecation warning: ' + msg);\n    }\n  }\n\n  function deprecate(msg, fn) {\n    var firstTime = true;\n    return extend(function () {\n      if (hooks.deprecationHandler != null) {\n        hooks.deprecationHandler(null, msg);\n      }\n\n      if (firstTime) {\n        var args = [];\n        var arg;\n\n        for (var i = 0; i < arguments.length; i++) {\n          arg = '';\n\n          if (typeof arguments[i] === 'object') {\n            arg += '\\n[' + i + '] ';\n\n            for (var key in arguments[0]) {\n              arg += key + ': ' + arguments[0][key] + ', ';\n            }\n\n            arg = arg.slice(0, -2); // Remove trailing comma and space\n          } else {\n            arg = arguments[i];\n          }\n\n          args.push(arg);\n        }\n\n        warn(msg + '\\nArguments: ' + Array.prototype.slice.call(args).join('') + '\\n' + new Error().stack);\n        firstTime = false;\n      }\n\n      return fn.apply(this, arguments);\n    }, fn);\n  }\n\n  var deprecations = {};\n\n  function deprecateSimple(name, msg) {\n    if (hooks.deprecationHandler != null) {\n      hooks.deprecationHandler(name, msg);\n    }\n\n    if (!deprecations[name]) {\n      warn(msg);\n      deprecations[name] = true;\n    }\n  }\n\n  hooks.suppressDeprecationWarnings = false;\n  hooks.deprecationHandler = null;\n\n  function isFunction(input) {\n    return input instanceof Function || Object.prototype.toString.call(input) === '[object Function]';\n  }\n\n  function set(config) {\n    var prop, i;\n\n    for (i in config) {\n      prop = config[i];\n\n      if (isFunction(prop)) {\n        this[i] = prop;\n      } else {\n        this['_' + i] = prop;\n      }\n    }\n\n    this._config = config; // Lenient ordinal parsing accepts just a number in addition to\n    // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n    // TODO: Remove \"ordinalParse\" fallback in next major release.\n\n    this._dayOfMonthOrdinalParseLenient = new RegExp((this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) + '|' + /\\d{1,2}/.source);\n  }\n\n  function mergeConfigs(parentConfig, childConfig) {\n    var res = extend({}, parentConfig),\n        prop;\n\n    for (prop in childConfig) {\n      if (hasOwnProp(childConfig, prop)) {\n        if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n          res[prop] = {};\n          extend(res[prop], parentConfig[prop]);\n          extend(res[prop], childConfig[prop]);\n        } else if (childConfig[prop] != null) {\n          res[prop] = childConfig[prop];\n        } else {\n          delete res[prop];\n        }\n      }\n    }\n\n    for (prop in parentConfig) {\n      if (hasOwnProp(parentConfig, prop) && !hasOwnProp(childConfig, prop) && isObject(parentConfig[prop])) {\n        // make sure changes to properties don't modify parent config\n        res[prop] = extend({}, res[prop]);\n      }\n    }\n\n    return res;\n  }\n\n  function Locale(config) {\n    if (config != null) {\n      this.set(config);\n    }\n  }\n\n  var keys;\n\n  if (Object.keys) {\n    keys = Object.keys;\n  } else {\n    keys = function keys(obj) {\n      var i,\n          res = [];\n\n      for (i in obj) {\n        if (hasOwnProp(obj, i)) {\n          res.push(i);\n        }\n      }\n\n      return res;\n    };\n  }\n\n  var defaultCalendar = {\n    sameDay: '[Today at] LT',\n    nextDay: '[Tomorrow at] LT',\n    nextWeek: 'dddd [at] LT',\n    lastDay: '[Yesterday at] LT',\n    lastWeek: '[Last] dddd [at] LT',\n    sameElse: 'L'\n  };\n\n  function calendar(key, mom, now) {\n    var output = this._calendar[key] || this._calendar['sameElse'];\n    return isFunction(output) ? output.call(mom, now) : output;\n  }\n\n  var defaultLongDateFormat = {\n    LTS: 'h:mm:ss A',\n    LT: 'h:mm A',\n    L: 'MM/DD/YYYY',\n    LL: 'MMMM D, YYYY',\n    LLL: 'MMMM D, YYYY h:mm A',\n    LLLL: 'dddd, MMMM D, YYYY h:mm A'\n  };\n\n  function longDateFormat(key) {\n    var format = this._longDateFormat[key],\n        formatUpper = this._longDateFormat[key.toUpperCase()];\n\n    if (format || !formatUpper) {\n      return format;\n    }\n\n    this._longDateFormat[key] = formatUpper.replace(/MMMM|MM|DD|dddd/g, function (val) {\n      return val.slice(1);\n    });\n    return this._longDateFormat[key];\n  }\n\n  var defaultInvalidDate = 'Invalid date';\n\n  function invalidDate() {\n    return this._invalidDate;\n  }\n\n  var defaultOrdinal = '%d';\n  var defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\n  function ordinal(number) {\n    return this._ordinal.replace('%d', number);\n  }\n\n  var defaultRelativeTime = {\n    future: 'in %s',\n    past: '%s ago',\n    s: 'a few seconds',\n    ss: '%d seconds',\n    m: 'a minute',\n    mm: '%d minutes',\n    h: 'an hour',\n    hh: '%d hours',\n    d: 'a day',\n    dd: '%d days',\n    M: 'a month',\n    MM: '%d months',\n    y: 'a year',\n    yy: '%d years'\n  };\n\n  function relativeTime(number, withoutSuffix, string, isFuture) {\n    var output = this._relativeTime[string];\n    return isFunction(output) ? output(number, withoutSuffix, string, isFuture) : output.replace(/%d/i, number);\n  }\n\n  function pastFuture(diff, output) {\n    var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n    return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n  }\n\n  var aliases = {};\n\n  function addUnitAlias(unit, shorthand) {\n    var lowerCase = unit.toLowerCase();\n    aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;\n  }\n\n  function normalizeUnits(units) {\n    return typeof units === 'string' ? aliases[units] || aliases[units.toLowerCase()] : undefined;\n  }\n\n  function normalizeObjectUnits(inputObject) {\n    var normalizedInput = {},\n        normalizedProp,\n        prop;\n\n    for (prop in inputObject) {\n      if (hasOwnProp(inputObject, prop)) {\n        normalizedProp = normalizeUnits(prop);\n\n        if (normalizedProp) {\n          normalizedInput[normalizedProp] = inputObject[prop];\n        }\n      }\n    }\n\n    return normalizedInput;\n  }\n\n  var priorities = {};\n\n  function addUnitPriority(unit, priority) {\n    priorities[unit] = priority;\n  }\n\n  function getPrioritizedUnits(unitsObj) {\n    var units = [];\n\n    for (var u in unitsObj) {\n      units.push({\n        unit: u,\n        priority: priorities[u]\n      });\n    }\n\n    units.sort(function (a, b) {\n      return a.priority - b.priority;\n    });\n    return units;\n  }\n\n  function zeroFill(number, targetLength, forceSign) {\n    var absNumber = '' + Math.abs(number),\n        zerosToFill = targetLength - absNumber.length,\n        sign = number >= 0;\n    return (sign ? forceSign ? '+' : '' : '-') + Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) + absNumber;\n  }\n\n  var formattingTokens = /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g;\n  var localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g;\n  var formatFunctions = {};\n  var formatTokenFunctions = {}; // token:    'M'\n  // padded:   ['MM', 2]\n  // ordinal:  'Mo'\n  // callback: function () { this.month() + 1 }\n\n  function addFormatToken(token, padded, ordinal, callback) {\n    var func = callback;\n\n    if (typeof callback === 'string') {\n      func = function func() {\n        return this[callback]();\n      };\n    }\n\n    if (token) {\n      formatTokenFunctions[token] = func;\n    }\n\n    if (padded) {\n      formatTokenFunctions[padded[0]] = function () {\n        return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n      };\n    }\n\n    if (ordinal) {\n      formatTokenFunctions[ordinal] = function () {\n        return this.localeData().ordinal(func.apply(this, arguments), token);\n      };\n    }\n  }\n\n  function removeFormattingTokens(input) {\n    if (input.match(/\\[[\\s\\S]/)) {\n      return input.replace(/^\\[|\\]$/g, '');\n    }\n\n    return input.replace(/\\\\/g, '');\n  }\n\n  function makeFormatFunction(format) {\n    var array = format.match(formattingTokens),\n        i,\n        length;\n\n    for (i = 0, length = array.length; i < length; i++) {\n      if (formatTokenFunctions[array[i]]) {\n        array[i] = formatTokenFunctions[array[i]];\n      } else {\n        array[i] = removeFormattingTokens(array[i]);\n      }\n    }\n\n    return function (mom) {\n      var output = '',\n          i;\n\n      for (i = 0; i < length; i++) {\n        output += isFunction(array[i]) ? array[i].call(mom, format) : array[i];\n      }\n\n      return output;\n    };\n  } // format date using native date object\n\n\n  function formatMoment(m, format) {\n    if (!m.isValid()) {\n      return m.localeData().invalidDate();\n    }\n\n    format = expandFormat(format, m.localeData());\n    formatFunctions[format] = formatFunctions[format] || makeFormatFunction(format);\n    return formatFunctions[format](m);\n  }\n\n  function expandFormat(format, locale) {\n    var i = 5;\n\n    function replaceLongDateFormatTokens(input) {\n      return locale.longDateFormat(input) || input;\n    }\n\n    localFormattingTokens.lastIndex = 0;\n\n    while (i >= 0 && localFormattingTokens.test(format)) {\n      format = format.replace(localFormattingTokens, replaceLongDateFormatTokens);\n      localFormattingTokens.lastIndex = 0;\n      i -= 1;\n    }\n\n    return format;\n  }\n\n  var match1 = /\\d/; //       0 - 9\n\n  var match2 = /\\d\\d/; //      00 - 99\n\n  var match3 = /\\d{3}/; //     000 - 999\n\n  var match4 = /\\d{4}/; //    0000 - 9999\n\n  var match6 = /[+-]?\\d{6}/; // -999999 - 999999\n\n  var match1to2 = /\\d\\d?/; //       0 - 99\n\n  var match3to4 = /\\d\\d\\d\\d?/; //     999 - 9999\n\n  var match5to6 = /\\d\\d\\d\\d\\d\\d?/; //   99999 - 999999\n\n  var match1to3 = /\\d{1,3}/; //       0 - 999\n\n  var match1to4 = /\\d{1,4}/; //       0 - 9999\n\n  var match1to6 = /[+-]?\\d{1,6}/; // -999999 - 999999\n\n  var matchUnsigned = /\\d+/; //       0 - inf\n\n  var matchSigned = /[+-]?\\d+/; //    -inf - inf\n\n  var matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi; // +00:00 -00:00 +0000 -0000 or Z\n\n  var matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi; // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n\n  var matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/; // 123456789 123456789.123\n  // any word (or two) characters or numbers including two/three word month in arabic.\n  // includes scottish gaelic two word and hyphenated months\n\n  var matchWord = /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i;\n  var regexes = {};\n\n  function addRegexToken(token, regex, strictRegex) {\n    regexes[token] = isFunction(regex) ? regex : function (isStrict, localeData) {\n      return isStrict && strictRegex ? strictRegex : regex;\n    };\n  }\n\n  function getParseRegexForToken(token, config) {\n    if (!hasOwnProp(regexes, token)) {\n      return new RegExp(unescapeFormat(token));\n    }\n\n    return regexes[token](config._strict, config._locale);\n  } // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n\n\n  function unescapeFormat(s) {\n    return regexEscape(s.replace('\\\\', '').replace(/\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g, function (matched, p1, p2, p3, p4) {\n      return p1 || p2 || p3 || p4;\n    }));\n  }\n\n  function regexEscape(s) {\n    return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n  }\n\n  var tokens = {};\n\n  function addParseToken(token, callback) {\n    var i,\n        func = callback;\n\n    if (typeof token === 'string') {\n      token = [token];\n    }\n\n    if (isNumber(callback)) {\n      func = function func(input, array) {\n        array[callback] = toInt(input);\n      };\n    }\n\n    for (i = 0; i < token.length; i++) {\n      tokens[token[i]] = func;\n    }\n  }\n\n  function addWeekParseToken(token, callback) {\n    addParseToken(token, function (input, array, config, token) {\n      config._w = config._w || {};\n      callback(input, config._w, config, token);\n    });\n  }\n\n  function addTimeToArrayFromToken(token, input, config) {\n    if (input != null && hasOwnProp(tokens, token)) {\n      tokens[token](input, config._a, config, token);\n    }\n  }\n\n  var YEAR = 0;\n  var MONTH = 1;\n  var DATE = 2;\n  var HOUR = 3;\n  var MINUTE = 4;\n  var SECOND = 5;\n  var MILLISECOND = 6;\n  var WEEK = 7;\n  var WEEKDAY = 8; // FORMATTING\n\n  addFormatToken('Y', 0, 0, function () {\n    var y = this.year();\n    return y <= 9999 ? '' + y : '+' + y;\n  });\n  addFormatToken(0, ['YY', 2], 0, function () {\n    return this.year() % 100;\n  });\n  addFormatToken(0, ['YYYY', 4], 0, 'year');\n  addFormatToken(0, ['YYYYY', 5], 0, 'year');\n  addFormatToken(0, ['YYYYYY', 6, true], 0, 'year'); // ALIASES\n\n  addUnitAlias('year', 'y'); // PRIORITIES\n\n  addUnitPriority('year', 1); // PARSING\n\n  addRegexToken('Y', matchSigned);\n  addRegexToken('YY', match1to2, match2);\n  addRegexToken('YYYY', match1to4, match4);\n  addRegexToken('YYYYY', match1to6, match6);\n  addRegexToken('YYYYYY', match1to6, match6);\n  addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n  addParseToken('YYYY', function (input, array) {\n    array[YEAR] = input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n  });\n  addParseToken('YY', function (input, array) {\n    array[YEAR] = hooks.parseTwoDigitYear(input);\n  });\n  addParseToken('Y', function (input, array) {\n    array[YEAR] = parseInt(input, 10);\n  }); // HELPERS\n\n  function daysInYear(year) {\n    return isLeapYear(year) ? 366 : 365;\n  }\n\n  function isLeapYear(year) {\n    return year % 4 === 0 && year % 100 !== 0 || year % 400 === 0;\n  } // HOOKS\n\n\n  hooks.parseTwoDigitYear = function (input) {\n    return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n  }; // MOMENTS\n\n\n  var getSetYear = makeGetSet('FullYear', true);\n\n  function getIsLeapYear() {\n    return isLeapYear(this.year());\n  }\n\n  function makeGetSet(unit, keepTime) {\n    return function (value) {\n      if (value != null) {\n        set$1(this, unit, value);\n        hooks.updateOffset(this, keepTime);\n        return this;\n      } else {\n        return get(this, unit);\n      }\n    };\n  }\n\n  function get(mom, unit) {\n    return mom.isValid() ? mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]() : NaN;\n  }\n\n  function set$1(mom, unit, value) {\n    if (mom.isValid() && !isNaN(value)) {\n      if (unit === 'FullYear' && isLeapYear(mom.year()) && mom.month() === 1 && mom.date() === 29) {\n        mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value, mom.month(), daysInMonth(value, mom.month()));\n      } else {\n        mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);\n      }\n    }\n  } // MOMENTS\n\n\n  function stringGet(units) {\n    units = normalizeUnits(units);\n\n    if (isFunction(this[units])) {\n      return this[units]();\n    }\n\n    return this;\n  }\n\n  function stringSet(units, value) {\n    if (typeof units === 'object') {\n      units = normalizeObjectUnits(units);\n      var prioritized = getPrioritizedUnits(units);\n\n      for (var i = 0; i < prioritized.length; i++) {\n        this[prioritized[i].unit](units[prioritized[i].unit]);\n      }\n    } else {\n      units = normalizeUnits(units);\n\n      if (isFunction(this[units])) {\n        return this[units](value);\n      }\n    }\n\n    return this;\n  }\n\n  function mod(n, x) {\n    return (n % x + x) % x;\n  }\n\n  var indexOf;\n\n  if (Array.prototype.indexOf) {\n    indexOf = Array.prototype.indexOf;\n  } else {\n    indexOf = function indexOf(o) {\n      // I know\n      var i;\n\n      for (i = 0; i < this.length; ++i) {\n        if (this[i] === o) {\n          return i;\n        }\n      }\n\n      return -1;\n    };\n  }\n\n  function daysInMonth(year, month) {\n    if (isNaN(year) || isNaN(month)) {\n      return NaN;\n    }\n\n    var modMonth = mod(month, 12);\n    year += (month - modMonth) / 12;\n    return modMonth === 1 ? isLeapYear(year) ? 29 : 28 : 31 - modMonth % 7 % 2;\n  } // FORMATTING\n\n\n  addFormatToken('M', ['MM', 2], 'Mo', function () {\n    return this.month() + 1;\n  });\n  addFormatToken('MMM', 0, 0, function (format) {\n    return this.localeData().monthsShort(this, format);\n  });\n  addFormatToken('MMMM', 0, 0, function (format) {\n    return this.localeData().months(this, format);\n  }); // ALIASES\n\n  addUnitAlias('month', 'M'); // PRIORITY\n\n  addUnitPriority('month', 8); // PARSING\n\n  addRegexToken('M', match1to2);\n  addRegexToken('MM', match1to2, match2);\n  addRegexToken('MMM', function (isStrict, locale) {\n    return locale.monthsShortRegex(isStrict);\n  });\n  addRegexToken('MMMM', function (isStrict, locale) {\n    return locale.monthsRegex(isStrict);\n  });\n  addParseToken(['M', 'MM'], function (input, array) {\n    array[MONTH] = toInt(input) - 1;\n  });\n  addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n    var month = config._locale.monthsParse(input, token, config._strict); // if we didn't find a month name, mark the date as invalid.\n\n\n    if (month != null) {\n      array[MONTH] = month;\n    } else {\n      getParsingFlags(config).invalidMonth = input;\n    }\n  }); // LOCALES\n\n  var MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/;\n  var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_');\n\n  function localeMonths(m, format) {\n    if (!m) {\n      return isArray(this._months) ? this._months : this._months['standalone'];\n    }\n\n    return isArray(this._months) ? this._months[m.month()] : this._months[(this._months.isFormat || MONTHS_IN_FORMAT).test(format) ? 'format' : 'standalone'][m.month()];\n  }\n\n  var defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_');\n\n  function localeMonthsShort(m, format) {\n    if (!m) {\n      return isArray(this._monthsShort) ? this._monthsShort : this._monthsShort['standalone'];\n    }\n\n    return isArray(this._monthsShort) ? this._monthsShort[m.month()] : this._monthsShort[MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'][m.month()];\n  }\n\n  function handleStrictParse(monthName, format, strict) {\n    var i,\n        ii,\n        mom,\n        llc = monthName.toLocaleLowerCase();\n\n    if (!this._monthsParse) {\n      // this is not used\n      this._monthsParse = [];\n      this._longMonthsParse = [];\n      this._shortMonthsParse = [];\n\n      for (i = 0; i < 12; ++i) {\n        mom = createUTC([2000, i]);\n        this._shortMonthsParse[i] = this.monthsShort(mom, '').toLocaleLowerCase();\n        this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n      }\n    }\n\n    if (strict) {\n      if (format === 'MMM') {\n        ii = indexOf.call(this._shortMonthsParse, llc);\n        return ii !== -1 ? ii : null;\n      } else {\n        ii = indexOf.call(this._longMonthsParse, llc);\n        return ii !== -1 ? ii : null;\n      }\n    } else {\n      if (format === 'MMM') {\n        ii = indexOf.call(this._shortMonthsParse, llc);\n\n        if (ii !== -1) {\n          return ii;\n        }\n\n        ii = indexOf.call(this._longMonthsParse, llc);\n        return ii !== -1 ? ii : null;\n      } else {\n        ii = indexOf.call(this._longMonthsParse, llc);\n\n        if (ii !== -1) {\n          return ii;\n        }\n\n        ii = indexOf.call(this._shortMonthsParse, llc);\n        return ii !== -1 ? ii : null;\n      }\n    }\n  }\n\n  function localeMonthsParse(monthName, format, strict) {\n    var i, mom, regex;\n\n    if (this._monthsParseExact) {\n      return handleStrictParse.call(this, monthName, format, strict);\n    }\n\n    if (!this._monthsParse) {\n      this._monthsParse = [];\n      this._longMonthsParse = [];\n      this._shortMonthsParse = [];\n    } // TODO: add sorting\n    // Sorting makes sure if one month (or abbr) is a prefix of another\n    // see sorting in computeMonthsParse\n\n\n    for (i = 0; i < 12; i++) {\n      // make the regex if we don't have it already\n      mom = createUTC([2000, i]);\n\n      if (strict && !this._longMonthsParse[i]) {\n        this._longMonthsParse[i] = new RegExp('^' + this.months(mom, '').replace('.', '') + '$', 'i');\n        this._shortMonthsParse[i] = new RegExp('^' + this.monthsShort(mom, '').replace('.', '') + '$', 'i');\n      }\n\n      if (!strict && !this._monthsParse[i]) {\n        regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n        this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n      } // test the regex\n\n\n      if (strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName)) {\n        return i;\n      } else if (strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName)) {\n        return i;\n      } else if (!strict && this._monthsParse[i].test(monthName)) {\n        return i;\n      }\n    }\n  } // MOMENTS\n\n\n  function setMonth(mom, value) {\n    var dayOfMonth;\n\n    if (!mom.isValid()) {\n      // No op\n      return mom;\n    }\n\n    if (typeof value === 'string') {\n      if (/^\\d+$/.test(value)) {\n        value = toInt(value);\n      } else {\n        value = mom.localeData().monthsParse(value); // TODO: Another silent failure?\n\n        if (!isNumber(value)) {\n          return mom;\n        }\n      }\n    }\n\n    dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));\n\n    mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);\n\n    return mom;\n  }\n\n  function getSetMonth(value) {\n    if (value != null) {\n      setMonth(this, value);\n      hooks.updateOffset(this, true);\n      return this;\n    } else {\n      return get(this, 'Month');\n    }\n  }\n\n  function getDaysInMonth() {\n    return daysInMonth(this.year(), this.month());\n  }\n\n  var defaultMonthsShortRegex = matchWord;\n\n  function monthsShortRegex(isStrict) {\n    if (this._monthsParseExact) {\n      if (!hasOwnProp(this, '_monthsRegex')) {\n        computeMonthsParse.call(this);\n      }\n\n      if (isStrict) {\n        return this._monthsShortStrictRegex;\n      } else {\n        return this._monthsShortRegex;\n      }\n    } else {\n      if (!hasOwnProp(this, '_monthsShortRegex')) {\n        this._monthsShortRegex = defaultMonthsShortRegex;\n      }\n\n      return this._monthsShortStrictRegex && isStrict ? this._monthsShortStrictRegex : this._monthsShortRegex;\n    }\n  }\n\n  var defaultMonthsRegex = matchWord;\n\n  function monthsRegex(isStrict) {\n    if (this._monthsParseExact) {\n      if (!hasOwnProp(this, '_monthsRegex')) {\n        computeMonthsParse.call(this);\n      }\n\n      if (isStrict) {\n        return this._monthsStrictRegex;\n      } else {\n        return this._monthsRegex;\n      }\n    } else {\n      if (!hasOwnProp(this, '_monthsRegex')) {\n        this._monthsRegex = defaultMonthsRegex;\n      }\n\n      return this._monthsStrictRegex && isStrict ? this._monthsStrictRegex : this._monthsRegex;\n    }\n  }\n\n  function computeMonthsParse() {\n    function cmpLenRev(a, b) {\n      return b.length - a.length;\n    }\n\n    var shortPieces = [],\n        longPieces = [],\n        mixedPieces = [],\n        i,\n        mom;\n\n    for (i = 0; i < 12; i++) {\n      // make the regex if we don't have it already\n      mom = createUTC([2000, i]);\n      shortPieces.push(this.monthsShort(mom, ''));\n      longPieces.push(this.months(mom, ''));\n      mixedPieces.push(this.months(mom, ''));\n      mixedPieces.push(this.monthsShort(mom, ''));\n    } // Sorting makes sure if one month (or abbr) is a prefix of another it\n    // will match the longer piece.\n\n\n    shortPieces.sort(cmpLenRev);\n    longPieces.sort(cmpLenRev);\n    mixedPieces.sort(cmpLenRev);\n\n    for (i = 0; i < 12; i++) {\n      shortPieces[i] = regexEscape(shortPieces[i]);\n      longPieces[i] = regexEscape(longPieces[i]);\n    }\n\n    for (i = 0; i < 24; i++) {\n      mixedPieces[i] = regexEscape(mixedPieces[i]);\n    }\n\n    this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n    this._monthsShortRegex = this._monthsRegex;\n    this._monthsStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i');\n    this._monthsShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i');\n  }\n\n  function createDate(y, m, d, h, M, s, ms) {\n    // can't just apply() to create a date:\n    // https://stackoverflow.com/q/181348\n    var date; // the date constructor remaps years 0-99 to 1900-1999\n\n    if (y < 100 && y >= 0) {\n      // preserve leap years using a full 400 year cycle, then reset\n      date = new Date(y + 400, m, d, h, M, s, ms);\n\n      if (isFinite(date.getFullYear())) {\n        date.setFullYear(y);\n      }\n    } else {\n      date = new Date(y, m, d, h, M, s, ms);\n    }\n\n    return date;\n  }\n\n  function createUTCDate(y) {\n    var date; // the Date.UTC function remaps years 0-99 to 1900-1999\n\n    if (y < 100 && y >= 0) {\n      var args = Array.prototype.slice.call(arguments); // preserve leap years using a full 400 year cycle, then reset\n\n      args[0] = y + 400;\n      date = new Date(Date.UTC.apply(null, args));\n\n      if (isFinite(date.getUTCFullYear())) {\n        date.setUTCFullYear(y);\n      }\n    } else {\n      date = new Date(Date.UTC.apply(null, arguments));\n    }\n\n    return date;\n  } // start-of-first-week - start-of-year\n\n\n  function firstWeekOffset(year, dow, doy) {\n    var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n    fwd = 7 + dow - doy,\n        // first-week day local weekday -- which local weekday is fwd\n    fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n    return -fwdlw + fwd - 1;\n  } // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n\n\n  function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n    var localWeekday = (7 + weekday - dow) % 7,\n        weekOffset = firstWeekOffset(year, dow, doy),\n        dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n        resYear,\n        resDayOfYear;\n\n    if (dayOfYear <= 0) {\n      resYear = year - 1;\n      resDayOfYear = daysInYear(resYear) + dayOfYear;\n    } else if (dayOfYear > daysInYear(year)) {\n      resYear = year + 1;\n      resDayOfYear = dayOfYear - daysInYear(year);\n    } else {\n      resYear = year;\n      resDayOfYear = dayOfYear;\n    }\n\n    return {\n      year: resYear,\n      dayOfYear: resDayOfYear\n    };\n  }\n\n  function weekOfYear(mom, dow, doy) {\n    var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n        week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n        resWeek,\n        resYear;\n\n    if (week < 1) {\n      resYear = mom.year() - 1;\n      resWeek = week + weeksInYear(resYear, dow, doy);\n    } else if (week > weeksInYear(mom.year(), dow, doy)) {\n      resWeek = week - weeksInYear(mom.year(), dow, doy);\n      resYear = mom.year() + 1;\n    } else {\n      resYear = mom.year();\n      resWeek = week;\n    }\n\n    return {\n      week: resWeek,\n      year: resYear\n    };\n  }\n\n  function weeksInYear(year, dow, doy) {\n    var weekOffset = firstWeekOffset(year, dow, doy),\n        weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n    return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n  } // FORMATTING\n\n\n  addFormatToken('w', ['ww', 2], 'wo', 'week');\n  addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek'); // ALIASES\n\n  addUnitAlias('week', 'w');\n  addUnitAlias('isoWeek', 'W'); // PRIORITIES\n\n  addUnitPriority('week', 5);\n  addUnitPriority('isoWeek', 5); // PARSING\n\n  addRegexToken('w', match1to2);\n  addRegexToken('ww', match1to2, match2);\n  addRegexToken('W', match1to2);\n  addRegexToken('WW', match1to2, match2);\n  addWeekParseToken(['w', 'ww', 'W', 'WW'], function (input, week, config, token) {\n    week[token.substr(0, 1)] = toInt(input);\n  }); // HELPERS\n  // LOCALES\n\n  function localeWeek(mom) {\n    return weekOfYear(mom, this._week.dow, this._week.doy).week;\n  }\n\n  var defaultLocaleWeek = {\n    dow: 0,\n    // Sunday is the first day of the week.\n    doy: 6 // The week that contains Jan 6th is the first week of the year.\n\n  };\n\n  function localeFirstDayOfWeek() {\n    return this._week.dow;\n  }\n\n  function localeFirstDayOfYear() {\n    return this._week.doy;\n  } // MOMENTS\n\n\n  function getSetWeek(input) {\n    var week = this.localeData().week(this);\n    return input == null ? week : this.add((input - week) * 7, 'd');\n  }\n\n  function getSetISOWeek(input) {\n    var week = weekOfYear(this, 1, 4).week;\n    return input == null ? week : this.add((input - week) * 7, 'd');\n  } // FORMATTING\n\n\n  addFormatToken('d', 0, 'do', 'day');\n  addFormatToken('dd', 0, 0, function (format) {\n    return this.localeData().weekdaysMin(this, format);\n  });\n  addFormatToken('ddd', 0, 0, function (format) {\n    return this.localeData().weekdaysShort(this, format);\n  });\n  addFormatToken('dddd', 0, 0, function (format) {\n    return this.localeData().weekdays(this, format);\n  });\n  addFormatToken('e', 0, 0, 'weekday');\n  addFormatToken('E', 0, 0, 'isoWeekday'); // ALIASES\n\n  addUnitAlias('day', 'd');\n  addUnitAlias('weekday', 'e');\n  addUnitAlias('isoWeekday', 'E'); // PRIORITY\n\n  addUnitPriority('day', 11);\n  addUnitPriority('weekday', 11);\n  addUnitPriority('isoWeekday', 11); // PARSING\n\n  addRegexToken('d', match1to2);\n  addRegexToken('e', match1to2);\n  addRegexToken('E', match1to2);\n  addRegexToken('dd', function (isStrict, locale) {\n    return locale.weekdaysMinRegex(isStrict);\n  });\n  addRegexToken('ddd', function (isStrict, locale) {\n    return locale.weekdaysShortRegex(isStrict);\n  });\n  addRegexToken('dddd', function (isStrict, locale) {\n    return locale.weekdaysRegex(isStrict);\n  });\n  addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n    var weekday = config._locale.weekdaysParse(input, token, config._strict); // if we didn't get a weekday name, mark the date as invalid\n\n\n    if (weekday != null) {\n      week.d = weekday;\n    } else {\n      getParsingFlags(config).invalidWeekday = input;\n    }\n  });\n  addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n    week[token] = toInt(input);\n  }); // HELPERS\n\n  function parseWeekday(input, locale) {\n    if (typeof input !== 'string') {\n      return input;\n    }\n\n    if (!isNaN(input)) {\n      return parseInt(input, 10);\n    }\n\n    input = locale.weekdaysParse(input);\n\n    if (typeof input === 'number') {\n      return input;\n    }\n\n    return null;\n  }\n\n  function parseIsoWeekday(input, locale) {\n    if (typeof input === 'string') {\n      return locale.weekdaysParse(input) % 7 || 7;\n    }\n\n    return isNaN(input) ? null : input;\n  } // LOCALES\n\n\n  function shiftWeekdays(ws, n) {\n    return ws.slice(n, 7).concat(ws.slice(0, n));\n  }\n\n  var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_');\n\n  function localeWeekdays(m, format) {\n    var weekdays = isArray(this._weekdays) ? this._weekdays : this._weekdays[m && m !== true && this._weekdays.isFormat.test(format) ? 'format' : 'standalone'];\n    return m === true ? shiftWeekdays(weekdays, this._week.dow) : m ? weekdays[m.day()] : weekdays;\n  }\n\n  var defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_');\n\n  function localeWeekdaysShort(m) {\n    return m === true ? shiftWeekdays(this._weekdaysShort, this._week.dow) : m ? this._weekdaysShort[m.day()] : this._weekdaysShort;\n  }\n\n  var defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_');\n\n  function localeWeekdaysMin(m) {\n    return m === true ? shiftWeekdays(this._weekdaysMin, this._week.dow) : m ? this._weekdaysMin[m.day()] : this._weekdaysMin;\n  }\n\n  function handleStrictParse$1(weekdayName, format, strict) {\n    var i,\n        ii,\n        mom,\n        llc = weekdayName.toLocaleLowerCase();\n\n    if (!this._weekdaysParse) {\n      this._weekdaysParse = [];\n      this._shortWeekdaysParse = [];\n      this._minWeekdaysParse = [];\n\n      for (i = 0; i < 7; ++i) {\n        mom = createUTC([2000, 1]).day(i);\n        this._minWeekdaysParse[i] = this.weekdaysMin(mom, '').toLocaleLowerCase();\n        this._shortWeekdaysParse[i] = this.weekdaysShort(mom, '').toLocaleLowerCase();\n        this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n      }\n    }\n\n    if (strict) {\n      if (format === 'dddd') {\n        ii = indexOf.call(this._weekdaysParse, llc);\n        return ii !== -1 ? ii : null;\n      } else if (format === 'ddd') {\n        ii = indexOf.call(this._shortWeekdaysParse, llc);\n        return ii !== -1 ? ii : null;\n      } else {\n        ii = indexOf.call(this._minWeekdaysParse, llc);\n        return ii !== -1 ? ii : null;\n      }\n    } else {\n      if (format === 'dddd') {\n        ii = indexOf.call(this._weekdaysParse, llc);\n\n        if (ii !== -1) {\n          return ii;\n        }\n\n        ii = indexOf.call(this._shortWeekdaysParse, llc);\n\n        if (ii !== -1) {\n          return ii;\n        }\n\n        ii = indexOf.call(this._minWeekdaysParse, llc);\n        return ii !== -1 ? ii : null;\n      } else if (format === 'ddd') {\n        ii = indexOf.call(this._shortWeekdaysParse, llc);\n\n        if (ii !== -1) {\n          return ii;\n        }\n\n        ii = indexOf.call(this._weekdaysParse, llc);\n\n        if (ii !== -1) {\n          return ii;\n        }\n\n        ii = indexOf.call(this._minWeekdaysParse, llc);\n        return ii !== -1 ? ii : null;\n      } else {\n        ii = indexOf.call(this._minWeekdaysParse, llc);\n\n        if (ii !== -1) {\n          return ii;\n        }\n\n        ii = indexOf.call(this._weekdaysParse, llc);\n\n        if (ii !== -1) {\n          return ii;\n        }\n\n        ii = indexOf.call(this._shortWeekdaysParse, llc);\n        return ii !== -1 ? ii : null;\n      }\n    }\n  }\n\n  function localeWeekdaysParse(weekdayName, format, strict) {\n    var i, mom, regex;\n\n    if (this._weekdaysParseExact) {\n      return handleStrictParse$1.call(this, weekdayName, format, strict);\n    }\n\n    if (!this._weekdaysParse) {\n      this._weekdaysParse = [];\n      this._minWeekdaysParse = [];\n      this._shortWeekdaysParse = [];\n      this._fullWeekdaysParse = [];\n    }\n\n    for (i = 0; i < 7; i++) {\n      // make the regex if we don't have it already\n      mom = createUTC([2000, 1]).day(i);\n\n      if (strict && !this._fullWeekdaysParse[i]) {\n        this._fullWeekdaysParse[i] = new RegExp('^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$', 'i');\n        this._shortWeekdaysParse[i] = new RegExp('^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$', 'i');\n        this._minWeekdaysParse[i] = new RegExp('^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$', 'i');\n      }\n\n      if (!this._weekdaysParse[i]) {\n        regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, '');\n        this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n      } // test the regex\n\n\n      if (strict && format === 'dddd' && this._fullWeekdaysParse[i].test(weekdayName)) {\n        return i;\n      } else if (strict && format === 'ddd' && this._shortWeekdaysParse[i].test(weekdayName)) {\n        return i;\n      } else if (strict && format === 'dd' && this._minWeekdaysParse[i].test(weekdayName)) {\n        return i;\n      } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n        return i;\n      }\n    }\n  } // MOMENTS\n\n\n  function getSetDayOfWeek(input) {\n    if (!this.isValid()) {\n      return input != null ? this : NaN;\n    }\n\n    var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();\n\n    if (input != null) {\n      input = parseWeekday(input, this.localeData());\n      return this.add(input - day, 'd');\n    } else {\n      return day;\n    }\n  }\n\n  function getSetLocaleDayOfWeek(input) {\n    if (!this.isValid()) {\n      return input != null ? this : NaN;\n    }\n\n    var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n    return input == null ? weekday : this.add(input - weekday, 'd');\n  }\n\n  function getSetISODayOfWeek(input) {\n    if (!this.isValid()) {\n      return input != null ? this : NaN;\n    } // behaves the same as moment#day except\n    // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n    // as a setter, sunday should belong to the previous week.\n\n\n    if (input != null) {\n      var weekday = parseIsoWeekday(input, this.localeData());\n      return this.day(this.day() % 7 ? weekday : weekday - 7);\n    } else {\n      return this.day() || 7;\n    }\n  }\n\n  var defaultWeekdaysRegex = matchWord;\n\n  function weekdaysRegex(isStrict) {\n    if (this._weekdaysParseExact) {\n      if (!hasOwnProp(this, '_weekdaysRegex')) {\n        computeWeekdaysParse.call(this);\n      }\n\n      if (isStrict) {\n        return this._weekdaysStrictRegex;\n      } else {\n        return this._weekdaysRegex;\n      }\n    } else {\n      if (!hasOwnProp(this, '_weekdaysRegex')) {\n        this._weekdaysRegex = defaultWeekdaysRegex;\n      }\n\n      return this._weekdaysStrictRegex && isStrict ? this._weekdaysStrictRegex : this._weekdaysRegex;\n    }\n  }\n\n  var defaultWeekdaysShortRegex = matchWord;\n\n  function weekdaysShortRegex(isStrict) {\n    if (this._weekdaysParseExact) {\n      if (!hasOwnProp(this, '_weekdaysRegex')) {\n        computeWeekdaysParse.call(this);\n      }\n\n      if (isStrict) {\n        return this._weekdaysShortStrictRegex;\n      } else {\n        return this._weekdaysShortRegex;\n      }\n    } else {\n      if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n        this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n      }\n\n      return this._weekdaysShortStrictRegex && isStrict ? this._weekdaysShortStrictRegex : this._weekdaysShortRegex;\n    }\n  }\n\n  var defaultWeekdaysMinRegex = matchWord;\n\n  function weekdaysMinRegex(isStrict) {\n    if (this._weekdaysParseExact) {\n      if (!hasOwnProp(this, '_weekdaysRegex')) {\n        computeWeekdaysParse.call(this);\n      }\n\n      if (isStrict) {\n        return this._weekdaysMinStrictRegex;\n      } else {\n        return this._weekdaysMinRegex;\n      }\n    } else {\n      if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n        this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n      }\n\n      return this._weekdaysMinStrictRegex && isStrict ? this._weekdaysMinStrictRegex : this._weekdaysMinRegex;\n    }\n  }\n\n  function computeWeekdaysParse() {\n    function cmpLenRev(a, b) {\n      return b.length - a.length;\n    }\n\n    var minPieces = [],\n        shortPieces = [],\n        longPieces = [],\n        mixedPieces = [],\n        i,\n        mom,\n        minp,\n        shortp,\n        longp;\n\n    for (i = 0; i < 7; i++) {\n      // make the regex if we don't have it already\n      mom = createUTC([2000, 1]).day(i);\n      minp = this.weekdaysMin(mom, '');\n      shortp = this.weekdaysShort(mom, '');\n      longp = this.weekdays(mom, '');\n      minPieces.push(minp);\n      shortPieces.push(shortp);\n      longPieces.push(longp);\n      mixedPieces.push(minp);\n      mixedPieces.push(shortp);\n      mixedPieces.push(longp);\n    } // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n    // will match the longer piece.\n\n\n    minPieces.sort(cmpLenRev);\n    shortPieces.sort(cmpLenRev);\n    longPieces.sort(cmpLenRev);\n    mixedPieces.sort(cmpLenRev);\n\n    for (i = 0; i < 7; i++) {\n      shortPieces[i] = regexEscape(shortPieces[i]);\n      longPieces[i] = regexEscape(longPieces[i]);\n      mixedPieces[i] = regexEscape(mixedPieces[i]);\n    }\n\n    this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n    this._weekdaysShortRegex = this._weekdaysRegex;\n    this._weekdaysMinRegex = this._weekdaysRegex;\n    this._weekdaysStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i');\n    this._weekdaysShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i');\n    this._weekdaysMinStrictRegex = new RegExp('^(' + minPieces.join('|') + ')', 'i');\n  } // FORMATTING\n\n\n  function hFormat() {\n    return this.hours() % 12 || 12;\n  }\n\n  function kFormat() {\n    return this.hours() || 24;\n  }\n\n  addFormatToken('H', ['HH', 2], 0, 'hour');\n  addFormatToken('h', ['hh', 2], 0, hFormat);\n  addFormatToken('k', ['kk', 2], 0, kFormat);\n  addFormatToken('hmm', 0, 0, function () {\n    return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n  });\n  addFormatToken('hmmss', 0, 0, function () {\n    return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2) + zeroFill(this.seconds(), 2);\n  });\n  addFormatToken('Hmm', 0, 0, function () {\n    return '' + this.hours() + zeroFill(this.minutes(), 2);\n  });\n  addFormatToken('Hmmss', 0, 0, function () {\n    return '' + this.hours() + zeroFill(this.minutes(), 2) + zeroFill(this.seconds(), 2);\n  });\n\n  function meridiem(token, lowercase) {\n    addFormatToken(token, 0, 0, function () {\n      return this.localeData().meridiem(this.hours(), this.minutes(), lowercase);\n    });\n  }\n\n  meridiem('a', true);\n  meridiem('A', false); // ALIASES\n\n  addUnitAlias('hour', 'h'); // PRIORITY\n\n  addUnitPriority('hour', 13); // PARSING\n\n  function matchMeridiem(isStrict, locale) {\n    return locale._meridiemParse;\n  }\n\n  addRegexToken('a', matchMeridiem);\n  addRegexToken('A', matchMeridiem);\n  addRegexToken('H', match1to2);\n  addRegexToken('h', match1to2);\n  addRegexToken('k', match1to2);\n  addRegexToken('HH', match1to2, match2);\n  addRegexToken('hh', match1to2, match2);\n  addRegexToken('kk', match1to2, match2);\n  addRegexToken('hmm', match3to4);\n  addRegexToken('hmmss', match5to6);\n  addRegexToken('Hmm', match3to4);\n  addRegexToken('Hmmss', match5to6);\n  addParseToken(['H', 'HH'], HOUR);\n  addParseToken(['k', 'kk'], function (input, array, config) {\n    var kInput = toInt(input);\n    array[HOUR] = kInput === 24 ? 0 : kInput;\n  });\n  addParseToken(['a', 'A'], function (input, array, config) {\n    config._isPm = config._locale.isPM(input);\n    config._meridiem = input;\n  });\n  addParseToken(['h', 'hh'], function (input, array, config) {\n    array[HOUR] = toInt(input);\n    getParsingFlags(config).bigHour = true;\n  });\n  addParseToken('hmm', function (input, array, config) {\n    var pos = input.length - 2;\n    array[HOUR] = toInt(input.substr(0, pos));\n    array[MINUTE] = toInt(input.substr(pos));\n    getParsingFlags(config).bigHour = true;\n  });\n  addParseToken('hmmss', function (input, array, config) {\n    var pos1 = input.length - 4;\n    var pos2 = input.length - 2;\n    array[HOUR] = toInt(input.substr(0, pos1));\n    array[MINUTE] = toInt(input.substr(pos1, 2));\n    array[SECOND] = toInt(input.substr(pos2));\n    getParsingFlags(config).bigHour = true;\n  });\n  addParseToken('Hmm', function (input, array, config) {\n    var pos = input.length - 2;\n    array[HOUR] = toInt(input.substr(0, pos));\n    array[MINUTE] = toInt(input.substr(pos));\n  });\n  addParseToken('Hmmss', function (input, array, config) {\n    var pos1 = input.length - 4;\n    var pos2 = input.length - 2;\n    array[HOUR] = toInt(input.substr(0, pos1));\n    array[MINUTE] = toInt(input.substr(pos1, 2));\n    array[SECOND] = toInt(input.substr(pos2));\n  }); // LOCALES\n\n  function localeIsPM(input) {\n    // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n    // Using charAt should be more compatible.\n    return (input + '').toLowerCase().charAt(0) === 'p';\n  }\n\n  var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i;\n\n  function localeMeridiem(hours, minutes, isLower) {\n    if (hours > 11) {\n      return isLower ? 'pm' : 'PM';\n    } else {\n      return isLower ? 'am' : 'AM';\n    }\n  } // MOMENTS\n  // Setting the hour should keep the time, because the user explicitly\n  // specified which hour they want. So trying to maintain the same hour (in\n  // a new timezone) makes sense. Adding/subtracting hours does not follow\n  // this rule.\n\n\n  var getSetHour = makeGetSet('Hours', true);\n  var baseConfig = {\n    calendar: defaultCalendar,\n    longDateFormat: defaultLongDateFormat,\n    invalidDate: defaultInvalidDate,\n    ordinal: defaultOrdinal,\n    dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n    relativeTime: defaultRelativeTime,\n    months: defaultLocaleMonths,\n    monthsShort: defaultLocaleMonthsShort,\n    week: defaultLocaleWeek,\n    weekdays: defaultLocaleWeekdays,\n    weekdaysMin: defaultLocaleWeekdaysMin,\n    weekdaysShort: defaultLocaleWeekdaysShort,\n    meridiemParse: defaultLocaleMeridiemParse\n  }; // internal storage for locale config files\n\n  var locales = {};\n  var localeFamilies = {};\n  var globalLocale;\n\n  function normalizeLocale(key) {\n    return key ? key.toLowerCase().replace('_', '-') : key;\n  } // pick the locale from the array\n  // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n  // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n\n\n  function chooseLocale(names) {\n    var i = 0,\n        j,\n        next,\n        locale,\n        split;\n\n    while (i < names.length) {\n      split = normalizeLocale(names[i]).split('-');\n      j = split.length;\n      next = normalizeLocale(names[i + 1]);\n      next = next ? next.split('-') : null;\n\n      while (j > 0) {\n        locale = loadLocale(split.slice(0, j).join('-'));\n\n        if (locale) {\n          return locale;\n        }\n\n        if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) {\n          //the next array item is better than a shallower substring of this one\n          break;\n        }\n\n        j--;\n      }\n\n      i++;\n    }\n\n    return globalLocale;\n  }\n\n  function loadLocale(name) {\n    var oldLocale = null; // TODO: Find a better way to register and load all the locales in Node\n\n    if (!locales[name] && typeof module !== 'undefined' && module && module.exports) {\n      try {\n        oldLocale = globalLocale._abbr;\n        var aliasedRequire = require;\n        aliasedRequire('./locale/' + name);\n        getSetGlobalLocale(oldLocale);\n      } catch (e) {}\n    }\n\n    return locales[name];\n  } // This function will load locale and then set the global locale.  If\n  // no arguments are passed in, it will simply return the current global\n  // locale key.\n\n\n  function getSetGlobalLocale(key, values) {\n    var data;\n\n    if (key) {\n      if (isUndefined(values)) {\n        data = getLocale(key);\n      } else {\n        data = defineLocale(key, values);\n      }\n\n      if (data) {\n        // moment.duration._locale = moment._locale = data;\n        globalLocale = data;\n      } else {\n        if (typeof console !== 'undefined' && console.warn) {\n          //warn user if arguments are passed but the locale could not be set\n          console.warn('Locale ' + key + ' not found. Did you forget to load it?');\n        }\n      }\n    }\n\n    return globalLocale._abbr;\n  }\n\n  function defineLocale(name, config) {\n    if (config !== null) {\n      var locale,\n          parentConfig = baseConfig;\n      config.abbr = name;\n\n      if (locales[name] != null) {\n        deprecateSimple('defineLocaleOverride', 'use moment.updateLocale(localeName, config) to change ' + 'an existing locale. moment.defineLocale(localeName, ' + 'config) should only be used for creating a new locale ' + 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.');\n        parentConfig = locales[name]._config;\n      } else if (config.parentLocale != null) {\n        if (locales[config.parentLocale] != null) {\n          parentConfig = locales[config.parentLocale]._config;\n        } else {\n          locale = loadLocale(config.parentLocale);\n\n          if (locale != null) {\n            parentConfig = locale._config;\n          } else {\n            if (!localeFamilies[config.parentLocale]) {\n              localeFamilies[config.parentLocale] = [];\n            }\n\n            localeFamilies[config.parentLocale].push({\n              name: name,\n              config: config\n            });\n            return null;\n          }\n        }\n      }\n\n      locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n      if (localeFamilies[name]) {\n        localeFamilies[name].forEach(function (x) {\n          defineLocale(x.name, x.config);\n        });\n      } // backwards compat for now: also set the locale\n      // make sure we set the locale AFTER all child locales have been\n      // created, so we won't end up with the child locale set.\n\n\n      getSetGlobalLocale(name);\n      return locales[name];\n    } else {\n      // useful for testing\n      delete locales[name];\n      return null;\n    }\n  }\n\n  function updateLocale(name, config) {\n    if (config != null) {\n      var locale,\n          tmpLocale,\n          parentConfig = baseConfig; // MERGE\n\n      tmpLocale = loadLocale(name);\n\n      if (tmpLocale != null) {\n        parentConfig = tmpLocale._config;\n      }\n\n      config = mergeConfigs(parentConfig, config);\n      locale = new Locale(config);\n      locale.parentLocale = locales[name];\n      locales[name] = locale; // backwards compat for now: also set the locale\n\n      getSetGlobalLocale(name);\n    } else {\n      // pass null for config to unupdate, useful for tests\n      if (locales[name] != null) {\n        if (locales[name].parentLocale != null) {\n          locales[name] = locales[name].parentLocale;\n        } else if (locales[name] != null) {\n          delete locales[name];\n        }\n      }\n    }\n\n    return locales[name];\n  } // returns locale data\n\n\n  function getLocale(key) {\n    var locale;\n\n    if (key && key._locale && key._locale._abbr) {\n      key = key._locale._abbr;\n    }\n\n    if (!key) {\n      return globalLocale;\n    }\n\n    if (!isArray(key)) {\n      //short-circuit everything else\n      locale = loadLocale(key);\n\n      if (locale) {\n        return locale;\n      }\n\n      key = [key];\n    }\n\n    return chooseLocale(key);\n  }\n\n  function listLocales() {\n    return keys(locales);\n  }\n\n  function checkOverflow(m) {\n    var overflow;\n    var a = m._a;\n\n    if (a && getParsingFlags(m).overflow === -2) {\n      overflow = a[MONTH] < 0 || a[MONTH] > 11 ? MONTH : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH]) ? DATE : a[HOUR] < 0 || a[HOUR] > 24 || a[HOUR] === 24 && (a[MINUTE] !== 0 || a[SECOND] !== 0 || a[MILLISECOND] !== 0) ? HOUR : a[MINUTE] < 0 || a[MINUTE] > 59 ? MINUTE : a[SECOND] < 0 || a[SECOND] > 59 ? SECOND : a[MILLISECOND] < 0 || a[MILLISECOND] > 999 ? MILLISECOND : -1;\n\n      if (getParsingFlags(m)._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) {\n        overflow = DATE;\n      }\n\n      if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n        overflow = WEEK;\n      }\n\n      if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n        overflow = WEEKDAY;\n      }\n\n      getParsingFlags(m).overflow = overflow;\n    }\n\n    return m;\n  } // Pick the first defined of two or three arguments.\n\n\n  function defaults(a, b, c) {\n    if (a != null) {\n      return a;\n    }\n\n    if (b != null) {\n      return b;\n    }\n\n    return c;\n  }\n\n  function currentDateArray(config) {\n    // hooks is actually the exported moment object\n    var nowValue = new Date(hooks.now());\n\n    if (config._useUTC) {\n      return [nowValue.getUTCFullYear(), nowValue.getUTCMonth(), nowValue.getUTCDate()];\n    }\n\n    return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n  } // convert an array to a date.\n  // the array should mirror the parameters below\n  // note: all values past the year are optional and will default to the lowest possible value.\n  // [year, month, day , hour, minute, second, millisecond]\n\n\n  function configFromArray(config) {\n    var i,\n        date,\n        input = [],\n        currentDate,\n        expectedWeekday,\n        yearToUse;\n\n    if (config._d) {\n      return;\n    }\n\n    currentDate = currentDateArray(config); //compute day of the year from weeks and weekdays\n\n    if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n      dayOfYearFromWeekInfo(config);\n    } //if the day of the year is set, figure out what it is\n\n\n    if (config._dayOfYear != null) {\n      yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n      if (config._dayOfYear > daysInYear(yearToUse) || config._dayOfYear === 0) {\n        getParsingFlags(config)._overflowDayOfYear = true;\n      }\n\n      date = createUTCDate(yearToUse, 0, config._dayOfYear);\n      config._a[MONTH] = date.getUTCMonth();\n      config._a[DATE] = date.getUTCDate();\n    } // Default to current date.\n    // * if no year, month, day of month are given, default to today\n    // * if day of month is given, default month and year\n    // * if month is given, default only year\n    // * if year is given, don't default anything\n\n\n    for (i = 0; i < 3 && config._a[i] == null; ++i) {\n      config._a[i] = input[i] = currentDate[i];\n    } // Zero out whatever was not defaulted, including time\n\n\n    for (; i < 7; i++) {\n      config._a[i] = input[i] = config._a[i] == null ? i === 2 ? 1 : 0 : config._a[i];\n    } // Check for 24:00:00.000\n\n\n    if (config._a[HOUR] === 24 && config._a[MINUTE] === 0 && config._a[SECOND] === 0 && config._a[MILLISECOND] === 0) {\n      config._nextDay = true;\n      config._a[HOUR] = 0;\n    }\n\n    config._d = (config._useUTC ? createUTCDate : createDate).apply(null, input);\n    expectedWeekday = config._useUTC ? config._d.getUTCDay() : config._d.getDay(); // Apply timezone offset from input. The actual utcOffset can be changed\n    // with parseZone.\n\n    if (config._tzm != null) {\n      config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n    }\n\n    if (config._nextDay) {\n      config._a[HOUR] = 24;\n    } // check for mismatching day of week\n\n\n    if (config._w && typeof config._w.d !== 'undefined' && config._w.d !== expectedWeekday) {\n      getParsingFlags(config).weekdayMismatch = true;\n    }\n  }\n\n  function dayOfYearFromWeekInfo(config) {\n    var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow;\n    w = config._w;\n\n    if (w.GG != null || w.W != null || w.E != null) {\n      dow = 1;\n      doy = 4; // TODO: We need to take the current isoWeekYear, but that depends on\n      // how we interpret now (local, utc, fixed offset). So create\n      // a now version of current config (take local/utc/offset flags, and\n      // create now).\n\n      weekYear = defaults(w.GG, config._a[YEAR], weekOfYear(createLocal(), 1, 4).year);\n      week = defaults(w.W, 1);\n      weekday = defaults(w.E, 1);\n\n      if (weekday < 1 || weekday > 7) {\n        weekdayOverflow = true;\n      }\n    } else {\n      dow = config._locale._week.dow;\n      doy = config._locale._week.doy;\n      var curWeek = weekOfYear(createLocal(), dow, doy);\n      weekYear = defaults(w.gg, config._a[YEAR], curWeek.year); // Default to current week.\n\n      week = defaults(w.w, curWeek.week);\n\n      if (w.d != null) {\n        // weekday -- low day numbers are considered next week\n        weekday = w.d;\n\n        if (weekday < 0 || weekday > 6) {\n          weekdayOverflow = true;\n        }\n      } else if (w.e != null) {\n        // local weekday -- counting starts from beginning of week\n        weekday = w.e + dow;\n\n        if (w.e < 0 || w.e > 6) {\n          weekdayOverflow = true;\n        }\n      } else {\n        // default to beginning of week\n        weekday = dow;\n      }\n    }\n\n    if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n      getParsingFlags(config)._overflowWeeks = true;\n    } else if (weekdayOverflow != null) {\n      getParsingFlags(config)._overflowWeekday = true;\n    } else {\n      temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n      config._a[YEAR] = temp.year;\n      config._dayOfYear = temp.dayOfYear;\n    }\n  } // iso 8601 regex\n  // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n\n\n  var extendedIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/;\n  var basicIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/;\n  var tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/;\n  var isoDates = [['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/], ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/], ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/], ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false], ['YYYY-DDD', /\\d{4}-\\d{3}/], ['YYYY-MM', /\\d{4}-\\d\\d/, false], ['YYYYYYMMDD', /[+-]\\d{10}/], ['YYYYMMDD', /\\d{8}/], // YYYYMM is NOT allowed by the standard\n  ['GGGG[W]WWE', /\\d{4}W\\d{3}/], ['GGGG[W]WW', /\\d{4}W\\d{2}/, false], ['YYYYDDD', /\\d{7}/]]; // iso time formats and regexes\n\n  var isoTimes = [['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/], ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/], ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/], ['HH:mm', /\\d\\d:\\d\\d/], ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/], ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/], ['HHmmss', /\\d\\d\\d\\d\\d\\d/], ['HHmm', /\\d\\d\\d\\d/], ['HH', /\\d\\d/]];\n  var aspNetJsonRegex = /^\\/?Date\\((\\-?\\d+)/i; // date from iso format\n\n  function configFromISO(config) {\n    var i,\n        l,\n        string = config._i,\n        match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n        allowTime,\n        dateFormat,\n        timeFormat,\n        tzFormat;\n\n    if (match) {\n      getParsingFlags(config).iso = true;\n\n      for (i = 0, l = isoDates.length; i < l; i++) {\n        if (isoDates[i][1].exec(match[1])) {\n          dateFormat = isoDates[i][0];\n          allowTime = isoDates[i][2] !== false;\n          break;\n        }\n      }\n\n      if (dateFormat == null) {\n        config._isValid = false;\n        return;\n      }\n\n      if (match[3]) {\n        for (i = 0, l = isoTimes.length; i < l; i++) {\n          if (isoTimes[i][1].exec(match[3])) {\n            // match[2] should be 'T' or space\n            timeFormat = (match[2] || ' ') + isoTimes[i][0];\n            break;\n          }\n        }\n\n        if (timeFormat == null) {\n          config._isValid = false;\n          return;\n        }\n      }\n\n      if (!allowTime && timeFormat != null) {\n        config._isValid = false;\n        return;\n      }\n\n      if (match[4]) {\n        if (tzRegex.exec(match[4])) {\n          tzFormat = 'Z';\n        } else {\n          config._isValid = false;\n          return;\n        }\n      }\n\n      config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n      configFromStringAndFormat(config);\n    } else {\n      config._isValid = false;\n    }\n  } // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n\n\n  var rfc2822 = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/;\n\n  function extractFromRFC2822Strings(yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr) {\n    var result = [untruncateYear(yearStr), defaultLocaleMonthsShort.indexOf(monthStr), parseInt(dayStr, 10), parseInt(hourStr, 10), parseInt(minuteStr, 10)];\n\n    if (secondStr) {\n      result.push(parseInt(secondStr, 10));\n    }\n\n    return result;\n  }\n\n  function untruncateYear(yearStr) {\n    var year = parseInt(yearStr, 10);\n\n    if (year <= 49) {\n      return 2000 + year;\n    } else if (year <= 999) {\n      return 1900 + year;\n    }\n\n    return year;\n  }\n\n  function preprocessRFC2822(s) {\n    // Remove comments and folding whitespace and replace multiple-spaces with a single space\n    return s.replace(/\\([^)]*\\)|[\\n\\t]/g, ' ').replace(/(\\s\\s+)/g, ' ').replace(/^\\s\\s*/, '').replace(/\\s\\s*$/, '');\n  }\n\n  function checkWeekday(weekdayStr, parsedInput, config) {\n    if (weekdayStr) {\n      // TODO: Replace the vanilla JS Date object with an indepentent day-of-week check.\n      var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n          weekdayActual = new Date(parsedInput[0], parsedInput[1], parsedInput[2]).getDay();\n\n      if (weekdayProvided !== weekdayActual) {\n        getParsingFlags(config).weekdayMismatch = true;\n        config._isValid = false;\n        return false;\n      }\n    }\n\n    return true;\n  }\n\n  var obsOffsets = {\n    UT: 0,\n    GMT: 0,\n    EDT: -4 * 60,\n    EST: -5 * 60,\n    CDT: -5 * 60,\n    CST: -6 * 60,\n    MDT: -6 * 60,\n    MST: -7 * 60,\n    PDT: -7 * 60,\n    PST: -8 * 60\n  };\n\n  function calculateOffset(obsOffset, militaryOffset, numOffset) {\n    if (obsOffset) {\n      return obsOffsets[obsOffset];\n    } else if (militaryOffset) {\n      // the only allowed military tz is Z\n      return 0;\n    } else {\n      var hm = parseInt(numOffset, 10);\n      var m = hm % 100,\n          h = (hm - m) / 100;\n      return h * 60 + m;\n    }\n  } // date and time from ref 2822 format\n\n\n  function configFromRFC2822(config) {\n    var match = rfc2822.exec(preprocessRFC2822(config._i));\n\n    if (match) {\n      var parsedArray = extractFromRFC2822Strings(match[4], match[3], match[2], match[5], match[6], match[7]);\n\n      if (!checkWeekday(match[1], parsedArray, config)) {\n        return;\n      }\n\n      config._a = parsedArray;\n      config._tzm = calculateOffset(match[8], match[9], match[10]);\n      config._d = createUTCDate.apply(null, config._a);\n\n      config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n      getParsingFlags(config).rfc2822 = true;\n    } else {\n      config._isValid = false;\n    }\n  } // date from iso format or fallback\n\n\n  function configFromString(config) {\n    var matched = aspNetJsonRegex.exec(config._i);\n\n    if (matched !== null) {\n      config._d = new Date(+matched[1]);\n      return;\n    }\n\n    configFromISO(config);\n\n    if (config._isValid === false) {\n      delete config._isValid;\n    } else {\n      return;\n    }\n\n    configFromRFC2822(config);\n\n    if (config._isValid === false) {\n      delete config._isValid;\n    } else {\n      return;\n    } // Final attempt, use Input Fallback\n\n\n    hooks.createFromInputFallback(config);\n  }\n\n  hooks.createFromInputFallback = deprecate('value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' + 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' + 'discouraged and will be removed in an upcoming major release. Please refer to ' + 'http://momentjs.com/guides/#/warnings/js-date/ for more info.', function (config) {\n    config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n  }); // constant that refers to the ISO standard\n\n  hooks.ISO_8601 = function () {}; // constant that refers to the RFC 2822 form\n\n\n  hooks.RFC_2822 = function () {}; // date from string and format string\n\n\n  function configFromStringAndFormat(config) {\n    // TODO: Move this to another part of the creation flow to prevent circular deps\n    if (config._f === hooks.ISO_8601) {\n      configFromISO(config);\n      return;\n    }\n\n    if (config._f === hooks.RFC_2822) {\n      configFromRFC2822(config);\n      return;\n    }\n\n    config._a = [];\n    getParsingFlags(config).empty = true; // This array is used to make a Date, either with `new Date` or `Date.UTC`\n\n    var string = '' + config._i,\n        i,\n        parsedInput,\n        tokens,\n        token,\n        skipped,\n        stringLength = string.length,\n        totalParsedInputLength = 0;\n    tokens = expandFormat(config._f, config._locale).match(formattingTokens) || [];\n\n    for (i = 0; i < tokens.length; i++) {\n      token = tokens[i];\n      parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0]; // console.log('token', token, 'parsedInput', parsedInput,\n      //         'regex', getParseRegexForToken(token, config));\n\n      if (parsedInput) {\n        skipped = string.substr(0, string.indexOf(parsedInput));\n\n        if (skipped.length > 0) {\n          getParsingFlags(config).unusedInput.push(skipped);\n        }\n\n        string = string.slice(string.indexOf(parsedInput) + parsedInput.length);\n        totalParsedInputLength += parsedInput.length;\n      } // don't parse if it's not a known token\n\n\n      if (formatTokenFunctions[token]) {\n        if (parsedInput) {\n          getParsingFlags(config).empty = false;\n        } else {\n          getParsingFlags(config).unusedTokens.push(token);\n        }\n\n        addTimeToArrayFromToken(token, parsedInput, config);\n      } else if (config._strict && !parsedInput) {\n        getParsingFlags(config).unusedTokens.push(token);\n      }\n    } // add remaining unparsed input length to the string\n\n\n    getParsingFlags(config).charsLeftOver = stringLength - totalParsedInputLength;\n\n    if (string.length > 0) {\n      getParsingFlags(config).unusedInput.push(string);\n    } // clear _12h flag if hour is <= 12\n\n\n    if (config._a[HOUR] <= 12 && getParsingFlags(config).bigHour === true && config._a[HOUR] > 0) {\n      getParsingFlags(config).bigHour = undefined;\n    }\n\n    getParsingFlags(config).parsedDateParts = config._a.slice(0);\n    getParsingFlags(config).meridiem = config._meridiem; // handle meridiem\n\n    config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], config._meridiem);\n    configFromArray(config);\n    checkOverflow(config);\n  }\n\n  function meridiemFixWrap(locale, hour, meridiem) {\n    var isPm;\n\n    if (meridiem == null) {\n      // nothing to do\n      return hour;\n    }\n\n    if (locale.meridiemHour != null) {\n      return locale.meridiemHour(hour, meridiem);\n    } else if (locale.isPM != null) {\n      // Fallback\n      isPm = locale.isPM(meridiem);\n\n      if (isPm && hour < 12) {\n        hour += 12;\n      }\n\n      if (!isPm && hour === 12) {\n        hour = 0;\n      }\n\n      return hour;\n    } else {\n      // this is not supposed to happen\n      return hour;\n    }\n  } // date from string and array of format strings\n\n\n  function configFromStringAndArray(config) {\n    var tempConfig, bestMoment, scoreToBeat, i, currentScore;\n\n    if (config._f.length === 0) {\n      getParsingFlags(config).invalidFormat = true;\n      config._d = new Date(NaN);\n      return;\n    }\n\n    for (i = 0; i < config._f.length; i++) {\n      currentScore = 0;\n      tempConfig = copyConfig({}, config);\n\n      if (config._useUTC != null) {\n        tempConfig._useUTC = config._useUTC;\n      }\n\n      tempConfig._f = config._f[i];\n      configFromStringAndFormat(tempConfig);\n\n      if (!isValid(tempConfig)) {\n        continue;\n      } // if there is any input that was not parsed add a penalty for that format\n\n\n      currentScore += getParsingFlags(tempConfig).charsLeftOver; //or tokens\n\n      currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n      getParsingFlags(tempConfig).score = currentScore;\n\n      if (scoreToBeat == null || currentScore < scoreToBeat) {\n        scoreToBeat = currentScore;\n        bestMoment = tempConfig;\n      }\n    }\n\n    extend(config, bestMoment || tempConfig);\n  }\n\n  function configFromObject(config) {\n    if (config._d) {\n      return;\n    }\n\n    var i = normalizeObjectUnits(config._i);\n    config._a = map([i.year, i.month, i.day || i.date, i.hour, i.minute, i.second, i.millisecond], function (obj) {\n      return obj && parseInt(obj, 10);\n    });\n    configFromArray(config);\n  }\n\n  function createFromConfig(config) {\n    var res = new Moment(checkOverflow(prepareConfig(config)));\n\n    if (res._nextDay) {\n      // Adding is smart enough around DST\n      res.add(1, 'd');\n      res._nextDay = undefined;\n    }\n\n    return res;\n  }\n\n  function prepareConfig(config) {\n    var input = config._i,\n        format = config._f;\n    config._locale = config._locale || getLocale(config._l);\n\n    if (input === null || format === undefined && input === '') {\n      return createInvalid({\n        nullInput: true\n      });\n    }\n\n    if (typeof input === 'string') {\n      config._i = input = config._locale.preparse(input);\n    }\n\n    if (isMoment(input)) {\n      return new Moment(checkOverflow(input));\n    } else if (isDate(input)) {\n      config._d = input;\n    } else if (isArray(format)) {\n      configFromStringAndArray(config);\n    } else if (format) {\n      configFromStringAndFormat(config);\n    } else {\n      configFromInput(config);\n    }\n\n    if (!isValid(config)) {\n      config._d = null;\n    }\n\n    return config;\n  }\n\n  function configFromInput(config) {\n    var input = config._i;\n\n    if (isUndefined(input)) {\n      config._d = new Date(hooks.now());\n    } else if (isDate(input)) {\n      config._d = new Date(input.valueOf());\n    } else if (typeof input === 'string') {\n      configFromString(config);\n    } else if (isArray(input)) {\n      config._a = map(input.slice(0), function (obj) {\n        return parseInt(obj, 10);\n      });\n      configFromArray(config);\n    } else if (isObject(input)) {\n      configFromObject(config);\n    } else if (isNumber(input)) {\n      // from milliseconds\n      config._d = new Date(input);\n    } else {\n      hooks.createFromInputFallback(config);\n    }\n  }\n\n  function createLocalOrUTC(input, format, locale, strict, isUTC) {\n    var c = {};\n\n    if (locale === true || locale === false) {\n      strict = locale;\n      locale = undefined;\n    }\n\n    if (isObject(input) && isObjectEmpty(input) || isArray(input) && input.length === 0) {\n      input = undefined;\n    } // object construction must be done this way.\n    // https://github.com/moment/moment/issues/1423\n\n\n    c._isAMomentObject = true;\n    c._useUTC = c._isUTC = isUTC;\n    c._l = locale;\n    c._i = input;\n    c._f = format;\n    c._strict = strict;\n    return createFromConfig(c);\n  }\n\n  function createLocal(input, format, locale, strict) {\n    return createLocalOrUTC(input, format, locale, strict, false);\n  }\n\n  var prototypeMin = deprecate('moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/', function () {\n    var other = createLocal.apply(null, arguments);\n\n    if (this.isValid() && other.isValid()) {\n      return other < this ? this : other;\n    } else {\n      return createInvalid();\n    }\n  });\n  var prototypeMax = deprecate('moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/', function () {\n    var other = createLocal.apply(null, arguments);\n\n    if (this.isValid() && other.isValid()) {\n      return other > this ? this : other;\n    } else {\n      return createInvalid();\n    }\n  }); // Pick a moment m from moments so that m[fn](other) is true for all\n  // other. This relies on the function fn to be transitive.\n  //\n  // moments should either be an array of moment objects or an array, whose\n  // first element is an array of moment objects.\n\n  function pickBy(fn, moments) {\n    var res, i;\n\n    if (moments.length === 1 && isArray(moments[0])) {\n      moments = moments[0];\n    }\n\n    if (!moments.length) {\n      return createLocal();\n    }\n\n    res = moments[0];\n\n    for (i = 1; i < moments.length; ++i) {\n      if (!moments[i].isValid() || moments[i][fn](res)) {\n        res = moments[i];\n      }\n    }\n\n    return res;\n  } // TODO: Use [].sort instead?\n\n\n  function min() {\n    var args = [].slice.call(arguments, 0);\n    return pickBy('isBefore', args);\n  }\n\n  function max() {\n    var args = [].slice.call(arguments, 0);\n    return pickBy('isAfter', args);\n  }\n\n  var now = function now() {\n    return Date.now ? Date.now() : +new Date();\n  };\n\n  var ordering = ['year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second', 'millisecond'];\n\n  function isDurationValid(m) {\n    for (var key in m) {\n      if (!(indexOf.call(ordering, key) !== -1 && (m[key] == null || !isNaN(m[key])))) {\n        return false;\n      }\n    }\n\n    var unitHasDecimal = false;\n\n    for (var i = 0; i < ordering.length; ++i) {\n      if (m[ordering[i]]) {\n        if (unitHasDecimal) {\n          return false; // only allow non-integers for smallest unit\n        }\n\n        if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n          unitHasDecimal = true;\n        }\n      }\n    }\n\n    return true;\n  }\n\n  function isValid$1() {\n    return this._isValid;\n  }\n\n  function createInvalid$1() {\n    return createDuration(NaN);\n  }\n\n  function Duration(duration) {\n    var normalizedInput = normalizeObjectUnits(duration),\n        years = normalizedInput.year || 0,\n        quarters = normalizedInput.quarter || 0,\n        months = normalizedInput.month || 0,\n        weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n        days = normalizedInput.day || 0,\n        hours = normalizedInput.hour || 0,\n        minutes = normalizedInput.minute || 0,\n        seconds = normalizedInput.second || 0,\n        milliseconds = normalizedInput.millisecond || 0;\n    this._isValid = isDurationValid(normalizedInput); // representation for dateAddRemove\n\n    this._milliseconds = +milliseconds + seconds * 1e3 + // 1000\n    minutes * 6e4 + // 1000 * 60\n    hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n    // Because of dateAddRemove treats 24 hours as different from a\n    // day when working around DST, we need to store them separately\n\n    this._days = +days + weeks * 7; // It is impossible to translate months into days without knowing\n    // which months you are are talking about, so we have to store\n    // it separately.\n\n    this._months = +months + quarters * 3 + years * 12;\n    this._data = {};\n    this._locale = getLocale();\n\n    this._bubble();\n  }\n\n  function isDuration(obj) {\n    return obj instanceof Duration;\n  }\n\n  function absRound(number) {\n    if (number < 0) {\n      return Math.round(-1 * number) * -1;\n    } else {\n      return Math.round(number);\n    }\n  } // FORMATTING\n\n\n  function offset(token, separator) {\n    addFormatToken(token, 0, 0, function () {\n      var offset = this.utcOffset();\n      var sign = '+';\n\n      if (offset < 0) {\n        offset = -offset;\n        sign = '-';\n      }\n\n      return sign + zeroFill(~~(offset / 60), 2) + separator + zeroFill(~~offset % 60, 2);\n    });\n  }\n\n  offset('Z', ':');\n  offset('ZZ', ''); // PARSING\n\n  addRegexToken('Z', matchShortOffset);\n  addRegexToken('ZZ', matchShortOffset);\n  addParseToken(['Z', 'ZZ'], function (input, array, config) {\n    config._useUTC = true;\n    config._tzm = offsetFromString(matchShortOffset, input);\n  }); // HELPERS\n  // timezone chunker\n  // '+10:00' > ['10',  '00']\n  // '-1530'  > ['-15', '30']\n\n  var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n  function offsetFromString(matcher, string) {\n    var matches = (string || '').match(matcher);\n\n    if (matches === null) {\n      return null;\n    }\n\n    var chunk = matches[matches.length - 1] || [];\n    var parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n    var minutes = +(parts[1] * 60) + toInt(parts[2]);\n    return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;\n  } // Return a moment from input, that is local/utc/zone equivalent to model.\n\n\n  function cloneWithOffset(input, model) {\n    var res, diff;\n\n    if (model._isUTC) {\n      res = model.clone();\n      diff = (isMoment(input) || isDate(input) ? input.valueOf() : createLocal(input).valueOf()) - res.valueOf(); // Use low-level api, because this fn is low-level api.\n\n      res._d.setTime(res._d.valueOf() + diff);\n\n      hooks.updateOffset(res, false);\n      return res;\n    } else {\n      return createLocal(input).local();\n    }\n  }\n\n  function getDateOffset(m) {\n    // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n    // https://github.com/moment/moment/pull/1871\n    return -Math.round(m._d.getTimezoneOffset() / 15) * 15;\n  } // HOOKS\n  // This function will be called whenever a moment is mutated.\n  // It is intended to keep the offset in sync with the timezone.\n\n\n  hooks.updateOffset = function () {}; // MOMENTS\n  // keepLocalTime = true means only change the timezone, without\n  // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n  // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n  // +0200, so we adjust the time as needed, to be valid.\n  //\n  // Keeping the time actually adds/subtracts (one hour)\n  // from the actual represented time. That is why we call updateOffset\n  // a second time. In case it wants us to change the offset again\n  // _changeInProgress == true case, then we have to adjust, because\n  // there is no such time in the given timezone.\n\n\n  function getSetOffset(input, keepLocalTime, keepMinutes) {\n    var offset = this._offset || 0,\n        localAdjust;\n\n    if (!this.isValid()) {\n      return input != null ? this : NaN;\n    }\n\n    if (input != null) {\n      if (typeof input === 'string') {\n        input = offsetFromString(matchShortOffset, input);\n\n        if (input === null) {\n          return this;\n        }\n      } else if (Math.abs(input) < 16 && !keepMinutes) {\n        input = input * 60;\n      }\n\n      if (!this._isUTC && keepLocalTime) {\n        localAdjust = getDateOffset(this);\n      }\n\n      this._offset = input;\n      this._isUTC = true;\n\n      if (localAdjust != null) {\n        this.add(localAdjust, 'm');\n      }\n\n      if (offset !== input) {\n        if (!keepLocalTime || this._changeInProgress) {\n          addSubtract(this, createDuration(input - offset, 'm'), 1, false);\n        } else if (!this._changeInProgress) {\n          this._changeInProgress = true;\n          hooks.updateOffset(this, true);\n          this._changeInProgress = null;\n        }\n      }\n\n      return this;\n    } else {\n      return this._isUTC ? offset : getDateOffset(this);\n    }\n  }\n\n  function getSetZone(input, keepLocalTime) {\n    if (input != null) {\n      if (typeof input !== 'string') {\n        input = -input;\n      }\n\n      this.utcOffset(input, keepLocalTime);\n      return this;\n    } else {\n      return -this.utcOffset();\n    }\n  }\n\n  function setOffsetToUTC(keepLocalTime) {\n    return this.utcOffset(0, keepLocalTime);\n  }\n\n  function setOffsetToLocal(keepLocalTime) {\n    if (this._isUTC) {\n      this.utcOffset(0, keepLocalTime);\n      this._isUTC = false;\n\n      if (keepLocalTime) {\n        this.subtract(getDateOffset(this), 'm');\n      }\n    }\n\n    return this;\n  }\n\n  function setOffsetToParsedOffset() {\n    if (this._tzm != null) {\n      this.utcOffset(this._tzm, false, true);\n    } else if (typeof this._i === 'string') {\n      var tZone = offsetFromString(matchOffset, this._i);\n\n      if (tZone != null) {\n        this.utcOffset(tZone);\n      } else {\n        this.utcOffset(0, true);\n      }\n    }\n\n    return this;\n  }\n\n  function hasAlignedHourOffset(input) {\n    if (!this.isValid()) {\n      return false;\n    }\n\n    input = input ? createLocal(input).utcOffset() : 0;\n    return (this.utcOffset() - input) % 60 === 0;\n  }\n\n  function isDaylightSavingTime() {\n    return this.utcOffset() > this.clone().month(0).utcOffset() || this.utcOffset() > this.clone().month(5).utcOffset();\n  }\n\n  function isDaylightSavingTimeShifted() {\n    if (!isUndefined(this._isDSTShifted)) {\n      return this._isDSTShifted;\n    }\n\n    var c = {};\n    copyConfig(c, this);\n    c = prepareConfig(c);\n\n    if (c._a) {\n      var other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n      this._isDSTShifted = this.isValid() && compareArrays(c._a, other.toArray()) > 0;\n    } else {\n      this._isDSTShifted = false;\n    }\n\n    return this._isDSTShifted;\n  }\n\n  function isLocal() {\n    return this.isValid() ? !this._isUTC : false;\n  }\n\n  function isUtcOffset() {\n    return this.isValid() ? this._isUTC : false;\n  }\n\n  function isUtc() {\n    return this.isValid() ? this._isUTC && this._offset === 0 : false;\n  } // ASP.NET json date format regex\n\n\n  var aspNetRegex = /^(\\-|\\+)?(?:(\\d*)[. ])?(\\d+)\\:(\\d+)(?:\\:(\\d+)(\\.\\d*)?)?$/; // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n  // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n  // and further modified to allow for strings containing both week and day\n\n  var isoRegex = /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n  function createDuration(input, key) {\n    var duration = input,\n        // matching against regexp is expensive, do it on demand\n    match = null,\n        sign,\n        ret,\n        diffRes;\n\n    if (isDuration(input)) {\n      duration = {\n        ms: input._milliseconds,\n        d: input._days,\n        M: input._months\n      };\n    } else if (isNumber(input)) {\n      duration = {};\n\n      if (key) {\n        duration[key] = input;\n      } else {\n        duration.milliseconds = input;\n      }\n    } else if (!!(match = aspNetRegex.exec(input))) {\n      sign = match[1] === '-' ? -1 : 1;\n      duration = {\n        y: 0,\n        d: toInt(match[DATE]) * sign,\n        h: toInt(match[HOUR]) * sign,\n        m: toInt(match[MINUTE]) * sign,\n        s: toInt(match[SECOND]) * sign,\n        ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign // the millisecond decimal point is included in the match\n\n      };\n    } else if (!!(match = isoRegex.exec(input))) {\n      sign = match[1] === '-' ? -1 : 1;\n      duration = {\n        y: parseIso(match[2], sign),\n        M: parseIso(match[3], sign),\n        w: parseIso(match[4], sign),\n        d: parseIso(match[5], sign),\n        h: parseIso(match[6], sign),\n        m: parseIso(match[7], sign),\n        s: parseIso(match[8], sign)\n      };\n    } else if (duration == null) {\n      // checks for null or undefined\n      duration = {};\n    } else if (typeof duration === 'object' && ('from' in duration || 'to' in duration)) {\n      diffRes = momentsDifference(createLocal(duration.from), createLocal(duration.to));\n      duration = {};\n      duration.ms = diffRes.milliseconds;\n      duration.M = diffRes.months;\n    }\n\n    ret = new Duration(duration);\n\n    if (isDuration(input) && hasOwnProp(input, '_locale')) {\n      ret._locale = input._locale;\n    }\n\n    return ret;\n  }\n\n  createDuration.fn = Duration.prototype;\n  createDuration.invalid = createInvalid$1;\n\n  function parseIso(inp, sign) {\n    // We'd normally use ~~inp for this, but unfortunately it also\n    // converts floats to ints.\n    // inp may be undefined, so careful calling replace on it.\n    var res = inp && parseFloat(inp.replace(',', '.')); // apply sign while we're at it\n\n    return (isNaN(res) ? 0 : res) * sign;\n  }\n\n  function positiveMomentsDifference(base, other) {\n    var res = {};\n    res.months = other.month() - base.month() + (other.year() - base.year()) * 12;\n\n    if (base.clone().add(res.months, 'M').isAfter(other)) {\n      --res.months;\n    }\n\n    res.milliseconds = +other - +base.clone().add(res.months, 'M');\n    return res;\n  }\n\n  function momentsDifference(base, other) {\n    var res;\n\n    if (!(base.isValid() && other.isValid())) {\n      return {\n        milliseconds: 0,\n        months: 0\n      };\n    }\n\n    other = cloneWithOffset(other, base);\n\n    if (base.isBefore(other)) {\n      res = positiveMomentsDifference(base, other);\n    } else {\n      res = positiveMomentsDifference(other, base);\n      res.milliseconds = -res.milliseconds;\n      res.months = -res.months;\n    }\n\n    return res;\n  } // TODO: remove 'name' arg after deprecation is removed\n\n\n  function createAdder(direction, name) {\n    return function (val, period) {\n      var dur, tmp; //invert the arguments, but complain about it\n\n      if (period !== null && !isNaN(+period)) {\n        deprecateSimple(name, 'moment().' + name + '(period, number) is deprecated. Please use moment().' + name + '(number, period). ' + 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.');\n        tmp = val;\n        val = period;\n        period = tmp;\n      }\n\n      val = typeof val === 'string' ? +val : val;\n      dur = createDuration(val, period);\n      addSubtract(this, dur, direction);\n      return this;\n    };\n  }\n\n  function addSubtract(mom, duration, isAdding, updateOffset) {\n    var milliseconds = duration._milliseconds,\n        days = absRound(duration._days),\n        months = absRound(duration._months);\n\n    if (!mom.isValid()) {\n      // No op\n      return;\n    }\n\n    updateOffset = updateOffset == null ? true : updateOffset;\n\n    if (months) {\n      setMonth(mom, get(mom, 'Month') + months * isAdding);\n    }\n\n    if (days) {\n      set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n    }\n\n    if (milliseconds) {\n      mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n    }\n\n    if (updateOffset) {\n      hooks.updateOffset(mom, days || months);\n    }\n  }\n\n  var add = createAdder(1, 'add');\n  var subtract = createAdder(-1, 'subtract');\n\n  function getCalendarFormat(myMoment, now) {\n    var diff = myMoment.diff(now, 'days', true);\n    return diff < -6 ? 'sameElse' : diff < -1 ? 'lastWeek' : diff < 0 ? 'lastDay' : diff < 1 ? 'sameDay' : diff < 2 ? 'nextDay' : diff < 7 ? 'nextWeek' : 'sameElse';\n  }\n\n  function calendar$1(time, formats) {\n    // We want to compare the start of today, vs this.\n    // Getting start-of-today depends on whether we're local/utc/offset or not.\n    var now = time || createLocal(),\n        sod = cloneWithOffset(now, this).startOf('day'),\n        format = hooks.calendarFormat(this, sod) || 'sameElse';\n    var output = formats && (isFunction(formats[format]) ? formats[format].call(this, now) : formats[format]);\n    return this.format(output || this.localeData().calendar(format, this, createLocal(now)));\n  }\n\n  function clone() {\n    return new Moment(this);\n  }\n\n  function isAfter(input, units) {\n    var localInput = isMoment(input) ? input : createLocal(input);\n\n    if (!(this.isValid() && localInput.isValid())) {\n      return false;\n    }\n\n    units = normalizeUnits(units) || 'millisecond';\n\n    if (units === 'millisecond') {\n      return this.valueOf() > localInput.valueOf();\n    } else {\n      return localInput.valueOf() < this.clone().startOf(units).valueOf();\n    }\n  }\n\n  function isBefore(input, units) {\n    var localInput = isMoment(input) ? input : createLocal(input);\n\n    if (!(this.isValid() && localInput.isValid())) {\n      return false;\n    }\n\n    units = normalizeUnits(units) || 'millisecond';\n\n    if (units === 'millisecond') {\n      return this.valueOf() < localInput.valueOf();\n    } else {\n      return this.clone().endOf(units).valueOf() < localInput.valueOf();\n    }\n  }\n\n  function isBetween(from, to, units, inclusivity) {\n    var localFrom = isMoment(from) ? from : createLocal(from),\n        localTo = isMoment(to) ? to : createLocal(to);\n\n    if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n      return false;\n    }\n\n    inclusivity = inclusivity || '()';\n    return (inclusivity[0] === '(' ? this.isAfter(localFrom, units) : !this.isBefore(localFrom, units)) && (inclusivity[1] === ')' ? this.isBefore(localTo, units) : !this.isAfter(localTo, units));\n  }\n\n  function isSame(input, units) {\n    var localInput = isMoment(input) ? input : createLocal(input),\n        inputMs;\n\n    if (!(this.isValid() && localInput.isValid())) {\n      return false;\n    }\n\n    units = normalizeUnits(units) || 'millisecond';\n\n    if (units === 'millisecond') {\n      return this.valueOf() === localInput.valueOf();\n    } else {\n      inputMs = localInput.valueOf();\n      return this.clone().startOf(units).valueOf() <= inputMs && inputMs <= this.clone().endOf(units).valueOf();\n    }\n  }\n\n  function isSameOrAfter(input, units) {\n    return this.isSame(input, units) || this.isAfter(input, units);\n  }\n\n  function isSameOrBefore(input, units) {\n    return this.isSame(input, units) || this.isBefore(input, units);\n  }\n\n  function diff(input, units, asFloat) {\n    var that, zoneDelta, output;\n\n    if (!this.isValid()) {\n      return NaN;\n    }\n\n    that = cloneWithOffset(input, this);\n\n    if (!that.isValid()) {\n      return NaN;\n    }\n\n    zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n    units = normalizeUnits(units);\n\n    switch (units) {\n      case 'year':\n        output = monthDiff(this, that) / 12;\n        break;\n\n      case 'month':\n        output = monthDiff(this, that);\n        break;\n\n      case 'quarter':\n        output = monthDiff(this, that) / 3;\n        break;\n\n      case 'second':\n        output = (this - that) / 1e3;\n        break;\n      // 1000\n\n      case 'minute':\n        output = (this - that) / 6e4;\n        break;\n      // 1000 * 60\n\n      case 'hour':\n        output = (this - that) / 36e5;\n        break;\n      // 1000 * 60 * 60\n\n      case 'day':\n        output = (this - that - zoneDelta) / 864e5;\n        break;\n      // 1000 * 60 * 60 * 24, negate dst\n\n      case 'week':\n        output = (this - that - zoneDelta) / 6048e5;\n        break;\n      // 1000 * 60 * 60 * 24 * 7, negate dst\n\n      default:\n        output = this - that;\n    }\n\n    return asFloat ? output : absFloor(output);\n  }\n\n  function monthDiff(a, b) {\n    // difference in months\n    var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),\n        // b is in (anchor - 1 month, anchor + 1 month)\n    anchor = a.clone().add(wholeMonthDiff, 'months'),\n        anchor2,\n        adjust;\n\n    if (b - anchor < 0) {\n      anchor2 = a.clone().add(wholeMonthDiff - 1, 'months'); // linear across the month\n\n      adjust = (b - anchor) / (anchor - anchor2);\n    } else {\n      anchor2 = a.clone().add(wholeMonthDiff + 1, 'months'); // linear across the month\n\n      adjust = (b - anchor) / (anchor2 - anchor);\n    } //check for negative zero, return zero if negative zero\n\n\n    return -(wholeMonthDiff + adjust) || 0;\n  }\n\n  hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n  hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\n  function toString() {\n    return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n  }\n\n  function toISOString(keepOffset) {\n    if (!this.isValid()) {\n      return null;\n    }\n\n    var utc = keepOffset !== true;\n    var m = utc ? this.clone().utc() : this;\n\n    if (m.year() < 0 || m.year() > 9999) {\n      return formatMoment(m, utc ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ');\n    }\n\n    if (isFunction(Date.prototype.toISOString)) {\n      // native implementation is ~50x faster, use it when we can\n      if (utc) {\n        return this.toDate().toISOString();\n      } else {\n        return new Date(this.valueOf() + this.utcOffset() * 60 * 1000).toISOString().replace('Z', formatMoment(m, 'Z'));\n      }\n    }\n\n    return formatMoment(m, utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ');\n  }\n  /**\n   * Return a human readable representation of a moment that can\n   * also be evaluated to get a new moment which is the same\n   *\n   * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n   */\n\n\n  function inspect() {\n    if (!this.isValid()) {\n      return 'moment.invalid(/* ' + this._i + ' */)';\n    }\n\n    var func = 'moment';\n    var zone = '';\n\n    if (!this.isLocal()) {\n      func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n      zone = 'Z';\n    }\n\n    var prefix = '[' + func + '(\"]';\n    var year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';\n    var datetime = '-MM-DD[T]HH:mm:ss.SSS';\n    var suffix = zone + '[\")]';\n    return this.format(prefix + year + datetime + suffix);\n  }\n\n  function format(inputString) {\n    if (!inputString) {\n      inputString = this.isUtc() ? hooks.defaultFormatUtc : hooks.defaultFormat;\n    }\n\n    var output = formatMoment(this, inputString);\n    return this.localeData().postformat(output);\n  }\n\n  function from(time, withoutSuffix) {\n    if (this.isValid() && (isMoment(time) && time.isValid() || createLocal(time).isValid())) {\n      return createDuration({\n        to: this,\n        from: time\n      }).locale(this.locale()).humanize(!withoutSuffix);\n    } else {\n      return this.localeData().invalidDate();\n    }\n  }\n\n  function fromNow(withoutSuffix) {\n    return this.from(createLocal(), withoutSuffix);\n  }\n\n  function to(time, withoutSuffix) {\n    if (this.isValid() && (isMoment(time) && time.isValid() || createLocal(time).isValid())) {\n      return createDuration({\n        from: this,\n        to: time\n      }).locale(this.locale()).humanize(!withoutSuffix);\n    } else {\n      return this.localeData().invalidDate();\n    }\n  }\n\n  function toNow(withoutSuffix) {\n    return this.to(createLocal(), withoutSuffix);\n  } // If passed a locale key, it will set the locale for this\n  // instance.  Otherwise, it will return the locale configuration\n  // variables for this instance.\n\n\n  function locale(key) {\n    var newLocaleData;\n\n    if (key === undefined) {\n      return this._locale._abbr;\n    } else {\n      newLocaleData = getLocale(key);\n\n      if (newLocaleData != null) {\n        this._locale = newLocaleData;\n      }\n\n      return this;\n    }\n  }\n\n  var lang = deprecate('moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.', function (key) {\n    if (key === undefined) {\n      return this.localeData();\n    } else {\n      return this.locale(key);\n    }\n  });\n\n  function localeData() {\n    return this._locale;\n  }\n\n  var MS_PER_SECOND = 1000;\n  var MS_PER_MINUTE = 60 * MS_PER_SECOND;\n  var MS_PER_HOUR = 60 * MS_PER_MINUTE;\n  var MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR; // actual modulo - handles negative numbers (for dates before 1970):\n\n  function mod$1(dividend, divisor) {\n    return (dividend % divisor + divisor) % divisor;\n  }\n\n  function localStartOfDate(y, m, d) {\n    // the date constructor remaps years 0-99 to 1900-1999\n    if (y < 100 && y >= 0) {\n      // preserve leap years using a full 400 year cycle, then reset\n      return new Date(y + 400, m, d) - MS_PER_400_YEARS;\n    } else {\n      return new Date(y, m, d).valueOf();\n    }\n  }\n\n  function utcStartOfDate(y, m, d) {\n    // Date.UTC remaps years 0-99 to 1900-1999\n    if (y < 100 && y >= 0) {\n      // preserve leap years using a full 400 year cycle, then reset\n      return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;\n    } else {\n      return Date.UTC(y, m, d);\n    }\n  }\n\n  function startOf(units) {\n    var time;\n    units = normalizeUnits(units);\n\n    if (units === undefined || units === 'millisecond' || !this.isValid()) {\n      return this;\n    }\n\n    var startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n    switch (units) {\n      case 'year':\n        time = startOfDate(this.year(), 0, 1);\n        break;\n\n      case 'quarter':\n        time = startOfDate(this.year(), this.month() - this.month() % 3, 1);\n        break;\n\n      case 'month':\n        time = startOfDate(this.year(), this.month(), 1);\n        break;\n\n      case 'week':\n        time = startOfDate(this.year(), this.month(), this.date() - this.weekday());\n        break;\n\n      case 'isoWeek':\n        time = startOfDate(this.year(), this.month(), this.date() - (this.isoWeekday() - 1));\n        break;\n\n      case 'day':\n      case 'date':\n        time = startOfDate(this.year(), this.month(), this.date());\n        break;\n\n      case 'hour':\n        time = this._d.valueOf();\n        time -= mod$1(time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE), MS_PER_HOUR);\n        break;\n\n      case 'minute':\n        time = this._d.valueOf();\n        time -= mod$1(time, MS_PER_MINUTE);\n        break;\n\n      case 'second':\n        time = this._d.valueOf();\n        time -= mod$1(time, MS_PER_SECOND);\n        break;\n    }\n\n    this._d.setTime(time);\n\n    hooks.updateOffset(this, true);\n    return this;\n  }\n\n  function endOf(units) {\n    var time;\n    units = normalizeUnits(units);\n\n    if (units === undefined || units === 'millisecond' || !this.isValid()) {\n      return this;\n    }\n\n    var startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n    switch (units) {\n      case 'year':\n        time = startOfDate(this.year() + 1, 0, 1) - 1;\n        break;\n\n      case 'quarter':\n        time = startOfDate(this.year(), this.month() - this.month() % 3 + 3, 1) - 1;\n        break;\n\n      case 'month':\n        time = startOfDate(this.year(), this.month() + 1, 1) - 1;\n        break;\n\n      case 'week':\n        time = startOfDate(this.year(), this.month(), this.date() - this.weekday() + 7) - 1;\n        break;\n\n      case 'isoWeek':\n        time = startOfDate(this.year(), this.month(), this.date() - (this.isoWeekday() - 1) + 7) - 1;\n        break;\n\n      case 'day':\n      case 'date':\n        time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;\n        break;\n\n      case 'hour':\n        time = this._d.valueOf();\n        time += MS_PER_HOUR - mod$1(time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE), MS_PER_HOUR) - 1;\n        break;\n\n      case 'minute':\n        time = this._d.valueOf();\n        time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;\n        break;\n\n      case 'second':\n        time = this._d.valueOf();\n        time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;\n        break;\n    }\n\n    this._d.setTime(time);\n\n    hooks.updateOffset(this, true);\n    return this;\n  }\n\n  function valueOf() {\n    return this._d.valueOf() - (this._offset || 0) * 60000;\n  }\n\n  function unix() {\n    return Math.floor(this.valueOf() / 1000);\n  }\n\n  function toDate() {\n    return new Date(this.valueOf());\n  }\n\n  function toArray() {\n    var m = this;\n    return [m.year(), m.month(), m.date(), m.hour(), m.minute(), m.second(), m.millisecond()];\n  }\n\n  function toObject() {\n    var m = this;\n    return {\n      years: m.year(),\n      months: m.month(),\n      date: m.date(),\n      hours: m.hours(),\n      minutes: m.minutes(),\n      seconds: m.seconds(),\n      milliseconds: m.milliseconds()\n    };\n  }\n\n  function toJSON() {\n    // new Date(NaN).toJSON() === null\n    return this.isValid() ? this.toISOString() : null;\n  }\n\n  function isValid$2() {\n    return isValid(this);\n  }\n\n  function parsingFlags() {\n    return extend({}, getParsingFlags(this));\n  }\n\n  function invalidAt() {\n    return getParsingFlags(this).overflow;\n  }\n\n  function creationData() {\n    return {\n      input: this._i,\n      format: this._f,\n      locale: this._locale,\n      isUTC: this._isUTC,\n      strict: this._strict\n    };\n  } // FORMATTING\n\n\n  addFormatToken(0, ['gg', 2], 0, function () {\n    return this.weekYear() % 100;\n  });\n  addFormatToken(0, ['GG', 2], 0, function () {\n    return this.isoWeekYear() % 100;\n  });\n\n  function addWeekYearFormatToken(token, getter) {\n    addFormatToken(0, [token, token.length], 0, getter);\n  }\n\n  addWeekYearFormatToken('gggg', 'weekYear');\n  addWeekYearFormatToken('ggggg', 'weekYear');\n  addWeekYearFormatToken('GGGG', 'isoWeekYear');\n  addWeekYearFormatToken('GGGGG', 'isoWeekYear'); // ALIASES\n\n  addUnitAlias('weekYear', 'gg');\n  addUnitAlias('isoWeekYear', 'GG'); // PRIORITY\n\n  addUnitPriority('weekYear', 1);\n  addUnitPriority('isoWeekYear', 1); // PARSING\n\n  addRegexToken('G', matchSigned);\n  addRegexToken('g', matchSigned);\n  addRegexToken('GG', match1to2, match2);\n  addRegexToken('gg', match1to2, match2);\n  addRegexToken('GGGG', match1to4, match4);\n  addRegexToken('gggg', match1to4, match4);\n  addRegexToken('GGGGG', match1to6, match6);\n  addRegexToken('ggggg', match1to6, match6);\n  addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (input, week, config, token) {\n    week[token.substr(0, 2)] = toInt(input);\n  });\n  addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n    week[token] = hooks.parseTwoDigitYear(input);\n  }); // MOMENTS\n\n  function getSetWeekYear(input) {\n    return getSetWeekYearHelper.call(this, input, this.week(), this.weekday(), this.localeData()._week.dow, this.localeData()._week.doy);\n  }\n\n  function getSetISOWeekYear(input) {\n    return getSetWeekYearHelper.call(this, input, this.isoWeek(), this.isoWeekday(), 1, 4);\n  }\n\n  function getISOWeeksInYear() {\n    return weeksInYear(this.year(), 1, 4);\n  }\n\n  function getWeeksInYear() {\n    var weekInfo = this.localeData()._week;\n\n    return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n  }\n\n  function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n    var weeksTarget;\n\n    if (input == null) {\n      return weekOfYear(this, dow, doy).year;\n    } else {\n      weeksTarget = weeksInYear(input, dow, doy);\n\n      if (week > weeksTarget) {\n        week = weeksTarget;\n      }\n\n      return setWeekAll.call(this, input, week, weekday, dow, doy);\n    }\n  }\n\n  function setWeekAll(weekYear, week, weekday, dow, doy) {\n    var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n        date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n    this.year(date.getUTCFullYear());\n    this.month(date.getUTCMonth());\n    this.date(date.getUTCDate());\n    return this;\n  } // FORMATTING\n\n\n  addFormatToken('Q', 0, 'Qo', 'quarter'); // ALIASES\n\n  addUnitAlias('quarter', 'Q'); // PRIORITY\n\n  addUnitPriority('quarter', 7); // PARSING\n\n  addRegexToken('Q', match1);\n  addParseToken('Q', function (input, array) {\n    array[MONTH] = (toInt(input) - 1) * 3;\n  }); // MOMENTS\n\n  function getSetQuarter(input) {\n    return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3);\n  } // FORMATTING\n\n\n  addFormatToken('D', ['DD', 2], 'Do', 'date'); // ALIASES\n\n  addUnitAlias('date', 'D'); // PRIORITY\n\n  addUnitPriority('date', 9); // PARSING\n\n  addRegexToken('D', match1to2);\n  addRegexToken('DD', match1to2, match2);\n  addRegexToken('Do', function (isStrict, locale) {\n    // TODO: Remove \"ordinalParse\" fallback in next major release.\n    return isStrict ? locale._dayOfMonthOrdinalParse || locale._ordinalParse : locale._dayOfMonthOrdinalParseLenient;\n  });\n  addParseToken(['D', 'DD'], DATE);\n  addParseToken('Do', function (input, array) {\n    array[DATE] = toInt(input.match(match1to2)[0]);\n  }); // MOMENTS\n\n  var getSetDayOfMonth = makeGetSet('Date', true); // FORMATTING\n\n  addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear'); // ALIASES\n\n  addUnitAlias('dayOfYear', 'DDD'); // PRIORITY\n\n  addUnitPriority('dayOfYear', 4); // PARSING\n\n  addRegexToken('DDD', match1to3);\n  addRegexToken('DDDD', match3);\n  addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n    config._dayOfYear = toInt(input);\n  }); // HELPERS\n  // MOMENTS\n\n  function getSetDayOfYear(input) {\n    var dayOfYear = Math.round((this.clone().startOf('day') - this.clone().startOf('year')) / 864e5) + 1;\n    return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');\n  } // FORMATTING\n\n\n  addFormatToken('m', ['mm', 2], 0, 'minute'); // ALIASES\n\n  addUnitAlias('minute', 'm'); // PRIORITY\n\n  addUnitPriority('minute', 14); // PARSING\n\n  addRegexToken('m', match1to2);\n  addRegexToken('mm', match1to2, match2);\n  addParseToken(['m', 'mm'], MINUTE); // MOMENTS\n\n  var getSetMinute = makeGetSet('Minutes', false); // FORMATTING\n\n  addFormatToken('s', ['ss', 2], 0, 'second'); // ALIASES\n\n  addUnitAlias('second', 's'); // PRIORITY\n\n  addUnitPriority('second', 15); // PARSING\n\n  addRegexToken('s', match1to2);\n  addRegexToken('ss', match1to2, match2);\n  addParseToken(['s', 'ss'], SECOND); // MOMENTS\n\n  var getSetSecond = makeGetSet('Seconds', false); // FORMATTING\n\n  addFormatToken('S', 0, 0, function () {\n    return ~~(this.millisecond() / 100);\n  });\n  addFormatToken(0, ['SS', 2], 0, function () {\n    return ~~(this.millisecond() / 10);\n  });\n  addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n  addFormatToken(0, ['SSSS', 4], 0, function () {\n    return this.millisecond() * 10;\n  });\n  addFormatToken(0, ['SSSSS', 5], 0, function () {\n    return this.millisecond() * 100;\n  });\n  addFormatToken(0, ['SSSSSS', 6], 0, function () {\n    return this.millisecond() * 1000;\n  });\n  addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n    return this.millisecond() * 10000;\n  });\n  addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n    return this.millisecond() * 100000;\n  });\n  addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n    return this.millisecond() * 1000000;\n  }); // ALIASES\n\n  addUnitAlias('millisecond', 'ms'); // PRIORITY\n\n  addUnitPriority('millisecond', 16); // PARSING\n\n  addRegexToken('S', match1to3, match1);\n  addRegexToken('SS', match1to3, match2);\n  addRegexToken('SSS', match1to3, match3);\n  var token;\n\n  for (token = 'SSSS'; token.length <= 9; token += 'S') {\n    addRegexToken(token, matchUnsigned);\n  }\n\n  function parseMs(input, array) {\n    array[MILLISECOND] = toInt(('0.' + input) * 1000);\n  }\n\n  for (token = 'S'; token.length <= 9; token += 'S') {\n    addParseToken(token, parseMs);\n  } // MOMENTS\n\n\n  var getSetMillisecond = makeGetSet('Milliseconds', false); // FORMATTING\n\n  addFormatToken('z', 0, 0, 'zoneAbbr');\n  addFormatToken('zz', 0, 0, 'zoneName'); // MOMENTS\n\n  function getZoneAbbr() {\n    return this._isUTC ? 'UTC' : '';\n  }\n\n  function getZoneName() {\n    return this._isUTC ? 'Coordinated Universal Time' : '';\n  }\n\n  var proto = Moment.prototype;\n  proto.add = add;\n  proto.calendar = calendar$1;\n  proto.clone = clone;\n  proto.diff = diff;\n  proto.endOf = endOf;\n  proto.format = format;\n  proto.from = from;\n  proto.fromNow = fromNow;\n  proto.to = to;\n  proto.toNow = toNow;\n  proto.get = stringGet;\n  proto.invalidAt = invalidAt;\n  proto.isAfter = isAfter;\n  proto.isBefore = isBefore;\n  proto.isBetween = isBetween;\n  proto.isSame = isSame;\n  proto.isSameOrAfter = isSameOrAfter;\n  proto.isSameOrBefore = isSameOrBefore;\n  proto.isValid = isValid$2;\n  proto.lang = lang;\n  proto.locale = locale;\n  proto.localeData = localeData;\n  proto.max = prototypeMax;\n  proto.min = prototypeMin;\n  proto.parsingFlags = parsingFlags;\n  proto.set = stringSet;\n  proto.startOf = startOf;\n  proto.subtract = subtract;\n  proto.toArray = toArray;\n  proto.toObject = toObject;\n  proto.toDate = toDate;\n  proto.toISOString = toISOString;\n  proto.inspect = inspect;\n  proto.toJSON = toJSON;\n  proto.toString = toString;\n  proto.unix = unix;\n  proto.valueOf = valueOf;\n  proto.creationData = creationData;\n  proto.year = getSetYear;\n  proto.isLeapYear = getIsLeapYear;\n  proto.weekYear = getSetWeekYear;\n  proto.isoWeekYear = getSetISOWeekYear;\n  proto.quarter = proto.quarters = getSetQuarter;\n  proto.month = getSetMonth;\n  proto.daysInMonth = getDaysInMonth;\n  proto.week = proto.weeks = getSetWeek;\n  proto.isoWeek = proto.isoWeeks = getSetISOWeek;\n  proto.weeksInYear = getWeeksInYear;\n  proto.isoWeeksInYear = getISOWeeksInYear;\n  proto.date = getSetDayOfMonth;\n  proto.day = proto.days = getSetDayOfWeek;\n  proto.weekday = getSetLocaleDayOfWeek;\n  proto.isoWeekday = getSetISODayOfWeek;\n  proto.dayOfYear = getSetDayOfYear;\n  proto.hour = proto.hours = getSetHour;\n  proto.minute = proto.minutes = getSetMinute;\n  proto.second = proto.seconds = getSetSecond;\n  proto.millisecond = proto.milliseconds = getSetMillisecond;\n  proto.utcOffset = getSetOffset;\n  proto.utc = setOffsetToUTC;\n  proto.local = setOffsetToLocal;\n  proto.parseZone = setOffsetToParsedOffset;\n  proto.hasAlignedHourOffset = hasAlignedHourOffset;\n  proto.isDST = isDaylightSavingTime;\n  proto.isLocal = isLocal;\n  proto.isUtcOffset = isUtcOffset;\n  proto.isUtc = isUtc;\n  proto.isUTC = isUtc;\n  proto.zoneAbbr = getZoneAbbr;\n  proto.zoneName = getZoneName;\n  proto.dates = deprecate('dates accessor is deprecated. Use date instead.', getSetDayOfMonth);\n  proto.months = deprecate('months accessor is deprecated. Use month instead', getSetMonth);\n  proto.years = deprecate('years accessor is deprecated. Use year instead', getSetYear);\n  proto.zone = deprecate('moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/', getSetZone);\n  proto.isDSTShifted = deprecate('isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information', isDaylightSavingTimeShifted);\n\n  function createUnix(input) {\n    return createLocal(input * 1000);\n  }\n\n  function createInZone() {\n    return createLocal.apply(null, arguments).parseZone();\n  }\n\n  function preParsePostFormat(string) {\n    return string;\n  }\n\n  var proto$1 = Locale.prototype;\n  proto$1.calendar = calendar;\n  proto$1.longDateFormat = longDateFormat;\n  proto$1.invalidDate = invalidDate;\n  proto$1.ordinal = ordinal;\n  proto$1.preparse = preParsePostFormat;\n  proto$1.postformat = preParsePostFormat;\n  proto$1.relativeTime = relativeTime;\n  proto$1.pastFuture = pastFuture;\n  proto$1.set = set;\n  proto$1.months = localeMonths;\n  proto$1.monthsShort = localeMonthsShort;\n  proto$1.monthsParse = localeMonthsParse;\n  proto$1.monthsRegex = monthsRegex;\n  proto$1.monthsShortRegex = monthsShortRegex;\n  proto$1.week = localeWeek;\n  proto$1.firstDayOfYear = localeFirstDayOfYear;\n  proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n  proto$1.weekdays = localeWeekdays;\n  proto$1.weekdaysMin = localeWeekdaysMin;\n  proto$1.weekdaysShort = localeWeekdaysShort;\n  proto$1.weekdaysParse = localeWeekdaysParse;\n  proto$1.weekdaysRegex = weekdaysRegex;\n  proto$1.weekdaysShortRegex = weekdaysShortRegex;\n  proto$1.weekdaysMinRegex = weekdaysMinRegex;\n  proto$1.isPM = localeIsPM;\n  proto$1.meridiem = localeMeridiem;\n\n  function get$1(format, index, field, setter) {\n    var locale = getLocale();\n    var utc = createUTC().set(setter, index);\n    return locale[field](utc, format);\n  }\n\n  function listMonthsImpl(format, index, field) {\n    if (isNumber(format)) {\n      index = format;\n      format = undefined;\n    }\n\n    format = format || '';\n\n    if (index != null) {\n      return get$1(format, index, field, 'month');\n    }\n\n    var i;\n    var out = [];\n\n    for (i = 0; i < 12; i++) {\n      out[i] = get$1(format, i, field, 'month');\n    }\n\n    return out;\n  } // ()\n  // (5)\n  // (fmt, 5)\n  // (fmt)\n  // (true)\n  // (true, 5)\n  // (true, fmt, 5)\n  // (true, fmt)\n\n\n  function listWeekdaysImpl(localeSorted, format, index, field) {\n    if (typeof localeSorted === 'boolean') {\n      if (isNumber(format)) {\n        index = format;\n        format = undefined;\n      }\n\n      format = format || '';\n    } else {\n      format = localeSorted;\n      index = format;\n      localeSorted = false;\n\n      if (isNumber(format)) {\n        index = format;\n        format = undefined;\n      }\n\n      format = format || '';\n    }\n\n    var locale = getLocale(),\n        shift = localeSorted ? locale._week.dow : 0;\n\n    if (index != null) {\n      return get$1(format, (index + shift) % 7, field, 'day');\n    }\n\n    var i;\n    var out = [];\n\n    for (i = 0; i < 7; i++) {\n      out[i] = get$1(format, (i + shift) % 7, field, 'day');\n    }\n\n    return out;\n  }\n\n  function listMonths(format, index) {\n    return listMonthsImpl(format, index, 'months');\n  }\n\n  function listMonthsShort(format, index) {\n    return listMonthsImpl(format, index, 'monthsShort');\n  }\n\n  function listWeekdays(localeSorted, format, index) {\n    return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n  }\n\n  function listWeekdaysShort(localeSorted, format, index) {\n    return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n  }\n\n  function listWeekdaysMin(localeSorted, format, index) {\n    return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n  }\n\n  getSetGlobalLocale('en', {\n    dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n    ordinal: function ordinal(number) {\n      var b = number % 10,\n          output = toInt(number % 100 / 10) === 1 ? 'th' : b === 1 ? 'st' : b === 2 ? 'nd' : b === 3 ? 'rd' : 'th';\n      return number + output;\n    }\n  }); // Side effect imports\n\n  hooks.lang = deprecate('moment.lang is deprecated. Use moment.locale instead.', getSetGlobalLocale);\n  hooks.langData = deprecate('moment.langData is deprecated. Use moment.localeData instead.', getLocale);\n  var mathAbs = Math.abs;\n\n  function abs() {\n    var data = this._data;\n    this._milliseconds = mathAbs(this._milliseconds);\n    this._days = mathAbs(this._days);\n    this._months = mathAbs(this._months);\n    data.milliseconds = mathAbs(data.milliseconds);\n    data.seconds = mathAbs(data.seconds);\n    data.minutes = mathAbs(data.minutes);\n    data.hours = mathAbs(data.hours);\n    data.months = mathAbs(data.months);\n    data.years = mathAbs(data.years);\n    return this;\n  }\n\n  function addSubtract$1(duration, input, value, direction) {\n    var other = createDuration(input, value);\n    duration._milliseconds += direction * other._milliseconds;\n    duration._days += direction * other._days;\n    duration._months += direction * other._months;\n    return duration._bubble();\n  } // supports only 2.0-style add(1, 's') or add(duration)\n\n\n  function add$1(input, value) {\n    return addSubtract$1(this, input, value, 1);\n  } // supports only 2.0-style subtract(1, 's') or subtract(duration)\n\n\n  function subtract$1(input, value) {\n    return addSubtract$1(this, input, value, -1);\n  }\n\n  function absCeil(number) {\n    if (number < 0) {\n      return Math.floor(number);\n    } else {\n      return Math.ceil(number);\n    }\n  }\n\n  function bubble() {\n    var milliseconds = this._milliseconds;\n    var days = this._days;\n    var months = this._months;\n    var data = this._data;\n    var seconds, minutes, hours, years, monthsFromDays; // if we have a mix of positive and negative values, bubble down first\n    // check: https://github.com/moment/moment/issues/2166\n\n    if (!(milliseconds >= 0 && days >= 0 && months >= 0 || milliseconds <= 0 && days <= 0 && months <= 0)) {\n      milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n      days = 0;\n      months = 0;\n    } // The following code bubbles up values, see the tests for\n    // examples of what that means.\n\n\n    data.milliseconds = milliseconds % 1000;\n    seconds = absFloor(milliseconds / 1000);\n    data.seconds = seconds % 60;\n    minutes = absFloor(seconds / 60);\n    data.minutes = minutes % 60;\n    hours = absFloor(minutes / 60);\n    data.hours = hours % 24;\n    days += absFloor(hours / 24); // convert days to months\n\n    monthsFromDays = absFloor(daysToMonths(days));\n    months += monthsFromDays;\n    days -= absCeil(monthsToDays(monthsFromDays)); // 12 months -> 1 year\n\n    years = absFloor(months / 12);\n    months %= 12;\n    data.days = days;\n    data.months = months;\n    data.years = years;\n    return this;\n  }\n\n  function daysToMonths(days) {\n    // 400 years have 146097 days (taking into account leap year rules)\n    // 400 years have 12 months === 4800\n    return days * 4800 / 146097;\n  }\n\n  function monthsToDays(months) {\n    // the reverse of daysToMonths\n    return months * 146097 / 4800;\n  }\n\n  function as(units) {\n    if (!this.isValid()) {\n      return NaN;\n    }\n\n    var days;\n    var months;\n    var milliseconds = this._milliseconds;\n    units = normalizeUnits(units);\n\n    if (units === 'month' || units === 'quarter' || units === 'year') {\n      days = this._days + milliseconds / 864e5;\n      months = this._months + daysToMonths(days);\n\n      switch (units) {\n        case 'month':\n          return months;\n\n        case 'quarter':\n          return months / 3;\n\n        case 'year':\n          return months / 12;\n      }\n    } else {\n      // handle milliseconds separately because of floating point math errors (issue #1867)\n      days = this._days + Math.round(monthsToDays(this._months));\n\n      switch (units) {\n        case 'week':\n          return days / 7 + milliseconds / 6048e5;\n\n        case 'day':\n          return days + milliseconds / 864e5;\n\n        case 'hour':\n          return days * 24 + milliseconds / 36e5;\n\n        case 'minute':\n          return days * 1440 + milliseconds / 6e4;\n\n        case 'second':\n          return days * 86400 + milliseconds / 1000;\n        // Math.floor prevents floating point math errors here\n\n        case 'millisecond':\n          return Math.floor(days * 864e5) + milliseconds;\n\n        default:\n          throw new Error('Unknown unit ' + units);\n      }\n    }\n  } // TODO: Use this.as('ms')?\n\n\n  function valueOf$1() {\n    if (!this.isValid()) {\n      return NaN;\n    }\n\n    return this._milliseconds + this._days * 864e5 + this._months % 12 * 2592e6 + toInt(this._months / 12) * 31536e6;\n  }\n\n  function makeAs(alias) {\n    return function () {\n      return this.as(alias);\n    };\n  }\n\n  var asMilliseconds = makeAs('ms');\n  var asSeconds = makeAs('s');\n  var asMinutes = makeAs('m');\n  var asHours = makeAs('h');\n  var asDays = makeAs('d');\n  var asWeeks = makeAs('w');\n  var asMonths = makeAs('M');\n  var asQuarters = makeAs('Q');\n  var asYears = makeAs('y');\n\n  function clone$1() {\n    return createDuration(this);\n  }\n\n  function get$2(units) {\n    units = normalizeUnits(units);\n    return this.isValid() ? this[units + 's']() : NaN;\n  }\n\n  function makeGetter(name) {\n    return function () {\n      return this.isValid() ? this._data[name] : NaN;\n    };\n  }\n\n  var milliseconds = makeGetter('milliseconds');\n  var seconds = makeGetter('seconds');\n  var minutes = makeGetter('minutes');\n  var hours = makeGetter('hours');\n  var days = makeGetter('days');\n  var months = makeGetter('months');\n  var years = makeGetter('years');\n\n  function weeks() {\n    return absFloor(this.days() / 7);\n  }\n\n  var round = Math.round;\n  var thresholds = {\n    ss: 44,\n    // a few seconds to seconds\n    s: 45,\n    // seconds to minute\n    m: 45,\n    // minutes to hour\n    h: 22,\n    // hours to day\n    d: 26,\n    // days to month\n    M: 11 // months to year\n\n  }; // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n\n  function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n    return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n  }\n\n  function relativeTime$1(posNegDuration, withoutSuffix, locale) {\n    var duration = createDuration(posNegDuration).abs();\n    var seconds = round(duration.as('s'));\n    var minutes = round(duration.as('m'));\n    var hours = round(duration.as('h'));\n    var days = round(duration.as('d'));\n    var months = round(duration.as('M'));\n    var years = round(duration.as('y'));\n    var a = seconds <= thresholds.ss && ['s', seconds] || seconds < thresholds.s && ['ss', seconds] || minutes <= 1 && ['m'] || minutes < thresholds.m && ['mm', minutes] || hours <= 1 && ['h'] || hours < thresholds.h && ['hh', hours] || days <= 1 && ['d'] || days < thresholds.d && ['dd', days] || months <= 1 && ['M'] || months < thresholds.M && ['MM', months] || years <= 1 && ['y'] || ['yy', years];\n    a[2] = withoutSuffix;\n    a[3] = +posNegDuration > 0;\n    a[4] = locale;\n    return substituteTimeAgo.apply(null, a);\n  } // This function allows you to set the rounding function for relative time strings\n\n\n  function getSetRelativeTimeRounding(roundingFunction) {\n    if (roundingFunction === undefined) {\n      return round;\n    }\n\n    if (typeof roundingFunction === 'function') {\n      round = roundingFunction;\n      return true;\n    }\n\n    return false;\n  } // This function allows you to set a threshold for relative time strings\n\n\n  function getSetRelativeTimeThreshold(threshold, limit) {\n    if (thresholds[threshold] === undefined) {\n      return false;\n    }\n\n    if (limit === undefined) {\n      return thresholds[threshold];\n    }\n\n    thresholds[threshold] = limit;\n\n    if (threshold === 's') {\n      thresholds.ss = limit - 1;\n    }\n\n    return true;\n  }\n\n  function humanize(withSuffix) {\n    if (!this.isValid()) {\n      return this.localeData().invalidDate();\n    }\n\n    var locale = this.localeData();\n    var output = relativeTime$1(this, !withSuffix, locale);\n\n    if (withSuffix) {\n      output = locale.pastFuture(+this, output);\n    }\n\n    return locale.postformat(output);\n  }\n\n  var abs$1 = Math.abs;\n\n  function sign(x) {\n    return (x > 0) - (x < 0) || +x;\n  }\n\n  function toISOString$1() {\n    // for ISO strings we do not use the normal bubbling rules:\n    //  * milliseconds bubble up until they become hours\n    //  * days do not bubble at all\n    //  * months bubble up until they become years\n    // This is because there is no context-free conversion between hours and days\n    // (think of clock changes)\n    // and also not between days and months (28-31 days per month)\n    if (!this.isValid()) {\n      return this.localeData().invalidDate();\n    }\n\n    var seconds = abs$1(this._milliseconds) / 1000;\n    var days = abs$1(this._days);\n    var months = abs$1(this._months);\n    var minutes, hours, years; // 3600 seconds -> 60 minutes -> 1 hour\n\n    minutes = absFloor(seconds / 60);\n    hours = absFloor(minutes / 60);\n    seconds %= 60;\n    minutes %= 60; // 12 months -> 1 year\n\n    years = absFloor(months / 12);\n    months %= 12; // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n\n    var Y = years;\n    var M = months;\n    var D = days;\n    var h = hours;\n    var m = minutes;\n    var s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n    var total = this.asSeconds();\n\n    if (!total) {\n      // this is the same as C#'s (Noda) and python (isodate)...\n      // but not other JS (goog.date)\n      return 'P0D';\n    }\n\n    var totalSign = total < 0 ? '-' : '';\n    var ymSign = sign(this._months) !== sign(total) ? '-' : '';\n    var daysSign = sign(this._days) !== sign(total) ? '-' : '';\n    var hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n    return totalSign + 'P' + (Y ? ymSign + Y + 'Y' : '') + (M ? ymSign + M + 'M' : '') + (D ? daysSign + D + 'D' : '') + (h || m || s ? 'T' : '') + (h ? hmsSign + h + 'H' : '') + (m ? hmsSign + m + 'M' : '') + (s ? hmsSign + s + 'S' : '');\n  }\n\n  var proto$2 = Duration.prototype;\n  proto$2.isValid = isValid$1;\n  proto$2.abs = abs;\n  proto$2.add = add$1;\n  proto$2.subtract = subtract$1;\n  proto$2.as = as;\n  proto$2.asMilliseconds = asMilliseconds;\n  proto$2.asSeconds = asSeconds;\n  proto$2.asMinutes = asMinutes;\n  proto$2.asHours = asHours;\n  proto$2.asDays = asDays;\n  proto$2.asWeeks = asWeeks;\n  proto$2.asMonths = asMonths;\n  proto$2.asQuarters = asQuarters;\n  proto$2.asYears = asYears;\n  proto$2.valueOf = valueOf$1;\n  proto$2._bubble = bubble;\n  proto$2.clone = clone$1;\n  proto$2.get = get$2;\n  proto$2.milliseconds = milliseconds;\n  proto$2.seconds = seconds;\n  proto$2.minutes = minutes;\n  proto$2.hours = hours;\n  proto$2.days = days;\n  proto$2.weeks = weeks;\n  proto$2.months = months;\n  proto$2.years = years;\n  proto$2.humanize = humanize;\n  proto$2.toISOString = toISOString$1;\n  proto$2.toString = toISOString$1;\n  proto$2.toJSON = toISOString$1;\n  proto$2.locale = locale;\n  proto$2.localeData = localeData;\n  proto$2.toIsoString = deprecate('toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)', toISOString$1);\n  proto$2.lang = lang; // Side effect imports\n  // FORMATTING\n\n  addFormatToken('X', 0, 0, 'unix');\n  addFormatToken('x', 0, 0, 'valueOf'); // PARSING\n\n  addRegexToken('x', matchSigned);\n  addRegexToken('X', matchTimestamp);\n  addParseToken('X', function (input, array, config) {\n    config._d = new Date(parseFloat(input, 10) * 1000);\n  });\n  addParseToken('x', function (input, array, config) {\n    config._d = new Date(toInt(input));\n  }); // Side effect imports\n\n  hooks.version = '2.24.0';\n  setHookCallback(createLocal);\n  hooks.fn = proto;\n  hooks.min = min;\n  hooks.max = max;\n  hooks.now = now;\n  hooks.utc = createUTC;\n  hooks.unix = createUnix;\n  hooks.months = listMonths;\n  hooks.isDate = isDate;\n  hooks.locale = getSetGlobalLocale;\n  hooks.invalid = createInvalid;\n  hooks.duration = createDuration;\n  hooks.isMoment = isMoment;\n  hooks.weekdays = listWeekdays;\n  hooks.parseZone = createInZone;\n  hooks.localeData = getLocale;\n  hooks.isDuration = isDuration;\n  hooks.monthsShort = listMonthsShort;\n  hooks.weekdaysMin = listWeekdaysMin;\n  hooks.defineLocale = defineLocale;\n  hooks.updateLocale = updateLocale;\n  hooks.locales = listLocales;\n  hooks.weekdaysShort = listWeekdaysShort;\n  hooks.normalizeUnits = normalizeUnits;\n  hooks.relativeTimeRounding = getSetRelativeTimeRounding;\n  hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n  hooks.calendarFormat = getCalendarFormat;\n  hooks.prototype = proto; // currently HTML5 input type only supports 24-hour formats\n\n  hooks.HTML5_FMT = {\n    DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm',\n    // <input type=\"datetime-local\" />\n    DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss',\n    // <input type=\"datetime-local\" step=\"1\" />\n    DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS',\n    // <input type=\"datetime-local\" step=\"0.001\" />\n    DATE: 'YYYY-MM-DD',\n    // <input type=\"date\" />\n    TIME: 'HH:mm',\n    // <input type=\"time\" />\n    TIME_SECONDS: 'HH:mm:ss',\n    // <input type=\"time\" step=\"1\" />\n    TIME_MS: 'HH:mm:ss.SSS',\n    // <input type=\"time\" step=\"0.001\" />\n    WEEK: 'GGGG-[W]WW',\n    // <input type=\"week\" />\n    MONTH: 'YYYY-MM' // <input type=\"month\" />\n\n  };\n  return hooks;\n});","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n  return cache.has(key);\n}\n\nmodule.exports = cacheHas;","'use strict';\nvar global = require('./_global');\nvar has = require('./_has');\nvar cof = require('./_cof');\nvar inheritIfRequired = require('./_inherit-if-required');\nvar toPrimitive = require('./_to-primitive');\nvar fails = require('./_fails');\nvar gOPN = require('./_object-gopn').f;\nvar gOPD = require('./_object-gopd').f;\nvar dP = require('./_object-dp').f;\nvar $trim = require('./_string-trim').trim;\nvar NUMBER = 'Number';\nvar $Number = global[NUMBER];\nvar Base = $Number;\nvar proto = $Number.prototype;\n// Opera ~12 has broken Object#toString\nvar BROKEN_COF = cof(require('./_object-create')(proto)) == NUMBER;\nvar TRIM = 'trim' in String.prototype;\n\n// 7.1.3 ToNumber(argument)\nvar toNumber = function (argument) {\n  var it = toPrimitive(argument, false);\n  if (typeof it == 'string' && it.length > 2) {\n    it = TRIM ? it.trim() : $trim(it, 3);\n    var first = it.charCodeAt(0);\n    var third, radix, maxCode;\n    if (first === 43 || first === 45) {\n      third = it.charCodeAt(2);\n      if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix\n    } else if (first === 48) {\n      switch (it.charCodeAt(1)) {\n        case 66: case 98: radix = 2; maxCode = 49; break; // fast equal /^0b[01]+$/i\n        case 79: case 111: radix = 8; maxCode = 55; break; // fast equal /^0o[0-7]+$/i\n        default: return +it;\n      }\n      for (var digits = it.slice(2), i = 0, l = digits.length, code; i < l; i++) {\n        code = digits.charCodeAt(i);\n        // parseInt parses a string to a first unavailable symbol\n        // but ToNumber should return NaN if a string contains unavailable symbols\n        if (code < 48 || code > maxCode) return NaN;\n      } return parseInt(digits, radix);\n    }\n  } return +it;\n};\n\nif (!$Number(' 0o1') || !$Number('0b1') || $Number('+0x1')) {\n  $Number = function Number(value) {\n    var it = arguments.length < 1 ? 0 : value;\n    var that = this;\n    return that instanceof $Number\n      // check on 1..constructor(foo) case\n      && (BROKEN_COF ? fails(function () { proto.valueOf.call(that); }) : cof(that) != NUMBER)\n        ? inheritIfRequired(new Base(toNumber(it)), that, $Number) : toNumber(it);\n  };\n  for (var keys = require('./_descriptors') ? gOPN(Base) : (\n    // ES3:\n    'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' +\n    // ES6 (in case, if modules with ES6 Number statics required before):\n    'EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,' +\n    'MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger'\n  ).split(','), j = 0, key; keys.length > j; j++) {\n    if (has(Base, key = keys[j]) && !has($Number, key)) {\n      dP($Number, key, gOPD(Base, key));\n    }\n  }\n  $Number.prototype = proto;\n  proto.constructor = $Number;\n  require('./_redefine')(global, NUMBER, $Number);\n}\n","var eq = require('./eq');\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n\n\nfunction assocIndexOf(array, key) {\n  var length = array.length;\n\n  while (length--) {\n    if (eq(array[length][0], key)) {\n      return length;\n    }\n  }\n\n  return -1;\n}\n\nmodule.exports = assocIndexOf;","var getNative = require('./_getNative'),\n    root = require('./_root');\n/* Built-in method references that are verified to be native. */\n\n\nvar Set = getNative(root, 'Set');\nmodule.exports = Set;","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n  return value;\n}\n\nmodule.exports = identity;","require(\"core-js/modules/es6.regexp.to-string\");\n\nrequire(\"core-js/modules/es6.date.to-string\");\n\nrequire(\"core-js/modules/es6.object.to-string\");\n\nvar Symbol = require('./_Symbol'),\n    arrayMap = require('./_arrayMap'),\n    isArray = require('./isArray'),\n    isSymbol = require('./isSymbol');\n/** Used as references for various `Number` constants. */\n\n\nvar INFINITY = 1 / 0;\n/** Used to convert symbols to primitives and strings. */\n\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n    symbolToString = symbolProto ? symbolProto.toString : undefined;\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\n\nfunction baseToString(value) {\n  // Exit early for strings to avoid a performance hit in some environments.\n  if (typeof value == 'string') {\n    return value;\n  }\n\n  if (isArray(value)) {\n    // Recursively convert values (susceptible to call stack limits).\n    return arrayMap(value, baseToString) + '';\n  }\n\n  if (isSymbol(value)) {\n    return symbolToString ? symbolToString.call(value) : '';\n  }\n\n  var result = value + '';\n  return result == '0' && 1 / value == -INFINITY ? '-0' : result;\n}\n\nmodule.exports = baseToString;"],"sourceRoot":""}
\ No newline at end of file
diff --git a/component---src-pages-performance-js-31be57d58d932a4860aa.js b/component---src-pages-performance-js-985e1e9d446123113ec2.js
similarity index 76%
rename from component---src-pages-performance-js-31be57d58d932a4860aa.js
rename to component---src-pages-performance-js-985e1e9d446123113ec2.js
index b45d4b7..8d2358c 100644
--- a/component---src-pages-performance-js-31be57d58d932a4860aa.js
+++ b/component---src-pages-performance-js-985e1e9d446123113ec2.js
@@ -1,2 +1,2 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[5],{"+6XX":function(t,e,n){var r=n("y1pI");t.exports=function(t){return r(this.__data__,t)>-1}},"+c4W":function(t,e,n){var r=n("711d"),i=n("4/ic"),a=n("9ggG"),o=n("9Nap");t.exports=function(t){return a(t)?r(o(t)):i(t)}},"/9aa":function(t,e,n){var r=n("NykK"),i=n("ExA7");t.exports=function(t){return"symbol"==typeof t||i(t)&&"[object Symbol]"==r(t)}},"03A+":function(t,e,n){var r=n("JTzB"),i=n("ExA7"),a=Object.prototype,o=a.hasOwnProperty,s=a.propertyIsEnumerable,l=r(function(){return arguments}())?r:function(t){return i(t)&&o.call(t,"callee")&&!s.call(t,"callee")};t.exports=l},"0Cz8":function(t,e,n){var r=n("Xi7e"),i=n("ebwN"),a=n("e4Nc");t.exports=function(t,e){var n=this.__data__;if(n instanceof r){var o=n.__data__;if(!i||o.length<199)return o.push([t,e]),this.size=++n.size,this;n=this.__data__=new a(o)}return n.set(t,e),this.size=n.size,this}},"0ycA":function(t,e){t.exports=function(){return[]}},"1hJj":function(t,e,n){var r=n("e4Nc"),i=n("ftKO"),a=n("3A9y");function o(t){var e=-1,n=null==t?0:t.length;for(this.__data__=new r;++e<n;)this.add(t[e])}o.prototype.add=o.prototype.push=i,o.prototype.has=a,t.exports=o},"2gN3":function(t,e,n){var r=n("Kz5y")["__core-js_shared__"];t.exports=r},"3A9y":function(t,e){t.exports=function(t){return this.__data__.has(t)}},"3Fdi":function(t,e,n){n("a1Th"),n("h7Nl"),n("Btvt");var r=Function.prototype.toString;t.exports=function(t){if(null!=t){try{return r.call(t)}catch(e){}try{return t+""}catch(e){}}return""}},"4/ic":function(t,e,n){var r=n("ZWtO");t.exports=function(t){return function(e){return r(e,t)}}},"44Ds":function(t,e,n){var r=n("e4Nc");function i(t,e){if("function"!=typeof t||null!=e&&"function"!=typeof e)throw new TypeError("Expected a function");var n=function n(){var r=arguments,i=e?e.apply(this,r):r[0],a=n.cache;if(a.has(i))return a.get(i);var o=t.apply(this,r);return n.cache=a.set(i,o)||a,o};return n.cache=new(i.Cache||r),n}i.Cache=r,t.exports=i},"4kuk":function(t,e,n){var r=n("SfRM"),i=n("Hvzi"),a=n("u8Dt"),o=n("ekgI"),s=n("JSQU");function l(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var r=t[e];this.set(r[0],r[1])}}l.prototype.clear=r,l.prototype.delete=i,l.prototype.get=a,l.prototype.has=o,l.prototype.set=s,t.exports=l},"4sDh":function(t,e,n){var r=n("4uTw"),i=n("03A+"),a=n("Z0cm"),o=n("wJg7"),s=n("shjB"),l=n("9Nap");t.exports=function(t,e,n){for(var u=-1,c=(e=r(e,t)).length,h=!1;++u<c;){var d=l(e[u]);if(!(h=null!=t&&n(t,d)))break;t=t[d]}return h||++u!=c?h:!!(c=null==t?0:t.length)&&s(c)&&o(d,c)&&(a(t)||i(t))}},"4uTw":function(t,e,n){var r=n("Z0cm"),i=n("9ggG"),a=n("GNiM"),o=n("dt0z");t.exports=function(t,e){return r(t)?t:i(t,e)?[t]:a(o(t))}},"6sVZ":function(t,e){var n=Object.prototype;t.exports=function(t){var e=t&&t.constructor;return t===("function"==typeof e&&e.prototype||n)}},"711d":function(t,e){t.exports=function(t){return function(e){return null==e?void 0:e[t]}}},"77Zs":function(t,e,n){var r=n("Xi7e");t.exports=function(){this.__data__=new r,this.size=0}},"7GkX":function(t,e,n){var r=n("b80T"),i=n("A90E"),a=n("MMmD");t.exports=function(t){return a(t)?r(t):i(t)}},"7fqy":function(t,e,n){n("8+KV"),t.exports=function(t){var e=-1,n=Array(t.size);return t.forEach((function(t,r){n[++e]=[r,t]})),n}},"8oxB":function(t,e){var n,r,i=t.exports={};function a(){throw new Error("setTimeout has not been defined")}function o(){throw new Error("clearTimeout has not been defined")}function s(t){if(n===setTimeout)return setTimeout(t,0);if((n===a||!n)&&setTimeout)return n=setTimeout,setTimeout(t,0);try{return n(t,0)}catch(e){try{return n.call(null,t,0)}catch(e){return n.call(this,t,0)}}}!function(){try{n="function"==typeof setTimeout?setTimeout:a}catch(t){n=a}try{r="function"==typeof clearTimeout?clearTimeout:o}catch(t){r=o}}();var l,u=[],c=!1,h=-1;function d(){c&&l&&(c=!1,l.length?u=l.concat(u):h=-1,u.length&&f())}function f(){if(!c){var t=s(d);c=!0;for(var e=u.length;e;){for(l=u,u=[];++h<e;)l&&l[h].run();h=-1,e=u.length}l=null,c=!1,function(t){if(r===clearTimeout)return clearTimeout(t);if((r===o||!r)&&clearTimeout)return r=clearTimeout,clearTimeout(t);try{r(t)}catch(e){try{return r.call(null,t)}catch(e){return r.call(this,t)}}}(t)}}function p(t,e){this.fun=t,this.array=e}function g(){}i.nextTick=function(t){var e=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)e[n-1]=arguments[n];u.push(new p(t,e)),1!==u.length||c||s(f)},p.prototype.run=function(){this.fun.apply(null,this.array)},i.title="browser",i.browser=!0,i.env={},i.argv=[],i.version="",i.versions={},i.on=g,i.addListener=g,i.once=g,i.off=g,i.removeListener=g,i.removeAllListeners=g,i.emit=g,i.prependListener=g,i.prependOnceListener=g,i.listeners=function(t){return[]},i.binding=function(t){throw new Error("process.binding is not supported")},i.cwd=function(){return"/"},i.chdir=function(t){throw new Error("process.chdir is not supported")},i.umask=function(){return 0}},"9Nap":function(t,e,n){var r=n("/9aa");t.exports=function(t){if("string"==typeof t||r(t))return t;var e=t+"";return"0"==e&&1/t==-1/0?"-0":e}},"9ggG":function(t,e,n){var r=n("Z0cm"),i=n("/9aa"),a=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,o=/^\w*$/;t.exports=function(t,e){if(r(t))return!1;var n=typeof t;return!("number"!=n&&"symbol"!=n&&"boolean"!=n&&null!=t&&!i(t))||(o.test(t)||!a.test(t)||null!=e&&t in Object(e))}},A90E:function(t,e,n){var r=n("6sVZ"),i=n("V6Ve"),a=Object.prototype.hasOwnProperty;t.exports=function(t){if(!r(t))return i(t);var e=[];for(var n in Object(t))a.call(t,n)&&"constructor"!=n&&e.push(n);return e}},AP2z:function(t,e,n){n("a1Th"),n("h7Nl"),n("Btvt");var r=n("nmnc"),i=Object.prototype,a=i.hasOwnProperty,o=i.toString,s=r?r.toStringTag:void 0;t.exports=function(t){var e=a.call(t,s),n=t[s];try{t[s]=void 0;var r=!0}catch(l){}var i=o.call(t);return r&&(e?t[s]=n:delete t[s]),i}},AphP:function(t,e,n){"use strict";var r=n("XKFU"),i=n("S/j/"),a=n("apmT");r(r.P+r.F*n("eeVq")((function(){return null!==new Date(NaN).toJSON()||1!==Date.prototype.toJSON.call({toISOString:function(){return 1}})})),"Date",{toJSON:function(t){var e=i(this),n=a(e);return"number"!=typeof n||isFinite(n)?e.toISOString():null}})},B8du:function(t,e){t.exports=function(){return!1}},CH3K:function(t,e){t.exports=function(t,e){for(var n=-1,r=e.length,i=t.length;++n<r;)t[i+n]=e[n];return t}},CMye:function(t,e,n){var r=n("GoyQ");t.exports=function(t){return t==t&&!r(t)}},Cwc5:function(t,e,n){var r=n("NKxu"),i=n("Npjl");t.exports=function(t,e){var n=i(t,e);return r(n)?n:void 0}},CyHz:function(t,e,n){var r=n("XKFU");r(r.S,"Math",{sign:n("lvtm")})},DSRE:function(t,e,n){(function(t){var r=n("Kz5y"),i=n("B8du"),a=e&&!e.nodeType&&e,o=a&&"object"==typeof t&&t&&!t.nodeType&&t,s=o&&o.exports===a?r.Buffer:void 0,l=(s?s.isBuffer:void 0)||i;t.exports=l}).call(this,n("YuTi")(t))},DW2E:function(t,e,n){var r=n("0/R4"),i=n("Z6vF").onFreeze;n("Xtr8")("freeze",(function(t){return function(e){return t&&r(e)?t(i(e)):e}}))},E2jh:function(t,e,n){n("rGqo"),n("yt8O"),n("Btvt");var r,i=n("2gN3"),a=(r=/[^.]+$/.exec(i&&i.keys&&i.keys.IE_PROTO||""))?"Symbol(src)_1."+r:"";t.exports=function(t){return!!a&&a in t}},EpBk:function(t,e){t.exports=function(t){var e=typeof t;return"string"==e||"number"==e||"symbol"==e||"boolean"==e?"__proto__"!==t:null===t}},ExA7:function(t,e){t.exports=function(t){return null!=t&&"object"==typeof t}},FlsD:function(t,e,n){var r=n("0/R4");n("Xtr8")("isExtensible",(function(t){return function(e){return!!r(e)&&(!t||t(e))}}))},GDhZ:function(t,e,n){var r=n("wF/u"),i=n("mwIZ"),a=n("hgQt"),o=n("9ggG"),s=n("CMye"),l=n("IOzZ"),u=n("9Nap");t.exports=function(t,e){return o(t)&&s(e)?l(u(t),e):function(n){var o=i(n,t);return void 0===o&&o===e?a(n,t):r(e,o,3)}}},GNiM:function(t,e,n){n("pIFo");var r=n("I01J"),i=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,a=/\\(\\)?/g,o=r((function(t){var e=[];return 46===t.charCodeAt(0)&&e.push(""),t.replace(i,(function(t,n,r,i){e.push(r?i.replace(a,"$1"):n||t)})),e}));t.exports=o},GoyQ:function(t,e){t.exports=function(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)}},H8j4:function(t,e,n){var r=n("QkVE");t.exports=function(t,e){var n=r(this,t),i=n.size;return n.set(t,e),this.size+=n.size==i?0:1,this}},HDyB:function(t,e,n){n("f3/d");var r=n("nmnc"),i=n("JHRd"),a=n("ljhN"),o=n("or5M"),s=n("7fqy"),l=n("rEGp"),u=r?r.prototype:void 0,c=u?u.valueOf:void 0;t.exports=function(t,e,n,r,u,h,d){switch(n){case"[object DataView]":if(t.byteLength!=e.byteLength||t.byteOffset!=e.byteOffset)return!1;t=t.buffer,e=e.buffer;case"[object ArrayBuffer]":return!(t.byteLength!=e.byteLength||!h(new i(t),new i(e)));case"[object Boolean]":case"[object Date]":case"[object Number]":return a(+t,+e);case"[object Error]":return t.name==e.name&&t.message==e.message;case"[object RegExp]":case"[object String]":return t==e+"";case"[object Map]":var f=s;case"[object Set]":var p=1&r;if(f||(f=l),t.size!=e.size&&!p)return!1;var g=d.get(t);if(g)return g==e;r|=2,d.set(t,e);var m=o(f(t),f(e),r,u,h,d);return d.delete(t),m;case"[object Symbol]":if(c)return c.call(t)==c.call(e)}return!1}},HOxn:function(t,e,n){var r=n("Cwc5")(n("Kz5y"),"Promise");t.exports=r},Hvzi:function(t,e){t.exports=function(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e}},I01J:function(t,e,n){var r=n("44Ds");t.exports=function(t){var e=r(t,(function(t){return 500===n.size&&n.clear(),t})),n=e.cache;return e}},INYr:function(t,e,n){"use strict";var r=n("XKFU"),i=n("CkkT")(6),a="findIndex",o=!0;a in[]&&Array(1)[a]((function(){o=!1})),r(r.P+r.F*o,"Array",{findIndex:function(t){return i(this,t,arguments.length>1?arguments[1]:void 0)}}),n("nGyu")(a)},IOzZ:function(t,e){t.exports=function(t,e){return function(n){return null!=n&&(n[t]===e&&(void 0!==e||t in Object(n)))}}},JC6p:function(t,e,n){var r=n("cq/+"),i=n("7GkX");t.exports=function(t,e){return t&&r(t,e,i)}},JD84:function(t,e,n){var r=n("SKAX");t.exports=function(t,e,n,i){return r(t,(function(t,r,a){e(i,t,n(t),a)})),i}},JHRd:function(t,e,n){var r=n("Kz5y").Uint8Array;t.exports=r},JHgL:function(t,e,n){var r=n("QkVE");t.exports=function(t){return r(this,t).get(t)}},JSQU:function(t,e,n){var r=n("YESw");t.exports=function(t,e){var n=this.__data__;return this.size+=this.has(t)?0:1,n[t]=r&&void 0===e?"__lodash_hash_undefined__":e,this}},JTzB:function(t,e,n){var r=n("NykK"),i=n("ExA7");t.exports=function(t){return i(t)&&"[object Arguments]"==r(t)}},Juji:function(t,e){t.exports=function(t,e){return null!=t&&e in Object(t)}},KMkd:function(t,e){t.exports=function(){this.__data__=[],this.size=0}},KfNM:function(t,e,n){n("a1Th"),n("h7Nl"),n("Btvt");var r=Object.prototype.toString;t.exports=function(t){return r.call(t)}},Kz5y:function(t,e,n){var r=n("WFqU"),i="object"==typeof self&&self&&self.Object===Object&&self,a=r||i||Function("return this")();t.exports=a},L8xA:function(t,e){t.exports=function(t){var e=this.__data__,n=e.delete(t);return this.size=e.size,n}},LXxW:function(t,e){t.exports=function(t,e){for(var n=-1,r=null==t?0:t.length,i=0,a=[];++n<r;){var o=t[n];e(o,n,t)&&(a[i++]=o)}return a}},Ljet:function(t,e,n){var r=n("XKFU");r(r.S,"Number",{EPSILON:Math.pow(2,-52)})},MMmD:function(t,e,n){var r=n("lSCD"),i=n("shjB");t.exports=function(t){return null!=t&&i(t.length)&&!r(t)}},"MO+k":function(t,e,n){n("h/M4"),n("knhD"),n("Ljet"),n("CyHz"),n("DNiP"),n("2Spj"),n("0l/t"),n("DW2E"),n("FlsD"),n("INYr"),n("eM6i"),n("eHKK"),n("Vd3H"),n("bHtr"),n("V+eJ"),n("91GP"),n("xfY5"),n("LK8F"),n("8+KV"),n("rGqo"),n("yt8O"),n("RW0V"),n("KKXr"),n("bWfx"),n("SRfc"),n("a1Th"),n("h7Nl"),n("Btvt"),n("HAE/"),t.exports=function(t){"use strict";t=t&&t.hasOwnProperty("default")?t.default:t;var e={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]},n=function(t,e){return t(e={exports:{}},e.exports),e.exports}((function(t){var n={};for(var r in e)e.hasOwnProperty(r)&&(n[e[r]]=r);var i=t.exports={rgb:{channels:3,labels:"rgb"},hsl:{channels:3,labels:"hsl"},hsv:{channels:3,labels:"hsv"},hwb:{channels:3,labels:"hwb"},cmyk:{channels:4,labels:"cmyk"},xyz:{channels:3,labels:"xyz"},lab:{channels:3,labels:"lab"},lch:{channels:3,labels:"lch"},hex:{channels:1,labels:["hex"]},keyword:{channels:1,labels:["keyword"]},ansi16:{channels:1,labels:["ansi16"]},ansi256:{channels:1,labels:["ansi256"]},hcg:{channels:3,labels:["h","c","g"]},apple:{channels:3,labels:["r16","g16","b16"]},gray:{channels:1,labels:["gray"]}};for(var a in i)if(i.hasOwnProperty(a)){if(!("channels"in i[a]))throw new Error("missing channels property: "+a);if(!("labels"in i[a]))throw new Error("missing channel labels property: "+a);if(i[a].labels.length!==i[a].channels)throw new Error("channel and label counts mismatch: "+a);var o=i[a].channels,s=i[a].labels;delete i[a].channels,delete i[a].labels,Object.defineProperty(i[a],"channels",{value:o}),Object.defineProperty(i[a],"labels",{value:s})}i.rgb.hsl=function(t){var e,n,r=t[0]/255,i=t[1]/255,a=t[2]/255,o=Math.min(r,i,a),s=Math.max(r,i,a),l=s-o;return s===o?e=0:r===s?e=(i-a)/l:i===s?e=2+(a-r)/l:a===s&&(e=4+(r-i)/l),(e=Math.min(60*e,360))<0&&(e+=360),n=(o+s)/2,[e,100*(s===o?0:n<=.5?l/(s+o):l/(2-s-o)),100*n]},i.rgb.hsv=function(t){var e,n,r,i,a,o=t[0]/255,s=t[1]/255,l=t[2]/255,u=Math.max(o,s,l),c=u-Math.min(o,s,l),h=function(t){return(u-t)/6/c+.5};return 0===c?i=a=0:(a=c/u,e=h(o),n=h(s),r=h(l),o===u?i=r-n:s===u?i=1/3+e-r:l===u&&(i=2/3+n-e),i<0?i+=1:i>1&&(i-=1)),[360*i,100*a,100*u]},i.rgb.hwb=function(t){var e=t[0],n=t[1],r=t[2];return[i.rgb.hsl(t)[0],1/255*Math.min(e,Math.min(n,r))*100,100*(r=1-1/255*Math.max(e,Math.max(n,r)))]},i.rgb.cmyk=function(t){var e,n=t[0]/255,r=t[1]/255,i=t[2]/255;return[100*((1-n-(e=Math.min(1-n,1-r,1-i)))/(1-e)||0),100*((1-r-e)/(1-e)||0),100*((1-i-e)/(1-e)||0),100*e]},i.rgb.keyword=function(t){var r=n[t];if(r)return r;var i,a,o,s=1/0;for(var l in e)if(e.hasOwnProperty(l)){var u=e[l],c=(a=t,o=u,Math.pow(a[0]-o[0],2)+Math.pow(a[1]-o[1],2)+Math.pow(a[2]-o[2],2));c<s&&(s=c,i=l)}return i},i.keyword.rgb=function(t){return e[t]},i.rgb.xyz=function(t){var e=t[0]/255,n=t[1]/255,r=t[2]/255;return[100*(.4124*(e=e>.04045?Math.pow((e+.055)/1.055,2.4):e/12.92)+.3576*(n=n>.04045?Math.pow((n+.055)/1.055,2.4):n/12.92)+.1805*(r=r>.04045?Math.pow((r+.055)/1.055,2.4):r/12.92)),100*(.2126*e+.7152*n+.0722*r),100*(.0193*e+.1192*n+.9505*r)]},i.rgb.lab=function(t){var e=i.rgb.xyz(t),n=e[0],r=e[1],a=e[2];return r/=100,a/=108.883,n=(n/=95.047)>.008856?Math.pow(n,1/3):7.787*n+16/116,[116*(r=r>.008856?Math.pow(r,1/3):7.787*r+16/116)-16,500*(n-r),200*(r-(a=a>.008856?Math.pow(a,1/3):7.787*a+16/116))]},i.hsl.rgb=function(t){var e,n,r,i,a,o=t[0]/360,s=t[1]/100,l=t[2]/100;if(0===s)return[a=255*l,a,a];e=2*l-(n=l<.5?l*(1+s):l+s-l*s),i=[0,0,0];for(var u=0;u<3;u++)(r=o+1/3*-(u-1))<0&&r++,r>1&&r--,a=6*r<1?e+6*(n-e)*r:2*r<1?n:3*r<2?e+(n-e)*(2/3-r)*6:e,i[u]=255*a;return i},i.hsl.hsv=function(t){var e=t[0],n=t[1]/100,r=t[2]/100,i=n,a=Math.max(r,.01);return n*=(r*=2)<=1?r:2-r,i*=a<=1?a:2-a,[e,100*(0===r?2*i/(a+i):2*n/(r+n)),(r+n)/2*100]},i.hsv.rgb=function(t){var e=t[0]/60,n=t[1]/100,r=t[2]/100,i=Math.floor(e)%6,a=e-Math.floor(e),o=255*r*(1-n),s=255*r*(1-n*a),l=255*r*(1-n*(1-a));switch(r*=255,i){case 0:return[r,l,o];case 1:return[s,r,o];case 2:return[o,r,l];case 3:return[o,s,r];case 4:return[l,o,r];case 5:return[r,o,s]}},i.hsv.hsl=function(t){var e,n,r,i=t[0],a=t[1]/100,o=t[2]/100,s=Math.max(o,.01);return r=(2-a)*o,n=a*s,[i,100*(n=(n/=(e=(2-a)*s)<=1?e:2-e)||0),100*(r/=2)]},i.hwb.rgb=function(t){var e,n,r,i,a,o,s,l=t[0]/360,u=t[1]/100,c=t[2]/100,h=u+c;switch(h>1&&(u/=h,c/=h),r=6*l-(e=Math.floor(6*l)),0!=(1&e)&&(r=1-r),i=u+r*((n=1-c)-u),e){default:case 6:case 0:a=n,o=i,s=u;break;case 1:a=i,o=n,s=u;break;case 2:a=u,o=n,s=i;break;case 3:a=u,o=i,s=n;break;case 4:a=i,o=u,s=n;break;case 5:a=n,o=u,s=i}return[255*a,255*o,255*s]},i.cmyk.rgb=function(t){var e=t[0]/100,n=t[1]/100,r=t[2]/100,i=t[3]/100;return[255*(1-Math.min(1,e*(1-i)+i)),255*(1-Math.min(1,n*(1-i)+i)),255*(1-Math.min(1,r*(1-i)+i))]},i.xyz.rgb=function(t){var e,n,r,i=t[0]/100,a=t[1]/100,o=t[2]/100;return n=-.9689*i+1.8758*a+.0415*o,r=.0557*i+-.204*a+1.057*o,e=(e=3.2406*i+-1.5372*a+-.4986*o)>.0031308?1.055*Math.pow(e,1/2.4)-.055:12.92*e,n=n>.0031308?1.055*Math.pow(n,1/2.4)-.055:12.92*n,r=r>.0031308?1.055*Math.pow(r,1/2.4)-.055:12.92*r,[255*(e=Math.min(Math.max(0,e),1)),255*(n=Math.min(Math.max(0,n),1)),255*(r=Math.min(Math.max(0,r),1))]},i.xyz.lab=function(t){var e=t[0],n=t[1],r=t[2];return n/=100,r/=108.883,e=(e/=95.047)>.008856?Math.pow(e,1/3):7.787*e+16/116,[116*(n=n>.008856?Math.pow(n,1/3):7.787*n+16/116)-16,500*(e-n),200*(n-(r=r>.008856?Math.pow(r,1/3):7.787*r+16/116))]},i.lab.xyz=function(t){var e,n,r,i=t[0];e=t[1]/500+(n=(i+16)/116),r=n-t[2]/200;var a=Math.pow(n,3),o=Math.pow(e,3),s=Math.pow(r,3);return n=a>.008856?a:(n-16/116)/7.787,e=o>.008856?o:(e-16/116)/7.787,r=s>.008856?s:(r-16/116)/7.787,[e*=95.047,n*=100,r*=108.883]},i.lab.lch=function(t){var e,n=t[0],r=t[1],i=t[2];return(e=360*Math.atan2(i,r)/2/Math.PI)<0&&(e+=360),[n,Math.sqrt(r*r+i*i),e]},i.lch.lab=function(t){var e,n=t[0],r=t[1];return e=t[2]/360*2*Math.PI,[n,r*Math.cos(e),r*Math.sin(e)]},i.rgb.ansi16=function(t){var e=t[0],n=t[1],r=t[2],a=1 in arguments?arguments[1]:i.rgb.hsv(t)[2];if(0===(a=Math.round(a/50)))return 30;var o=30+(Math.round(r/255)<<2|Math.round(n/255)<<1|Math.round(e/255));return 2===a&&(o+=60),o},i.hsv.ansi16=function(t){return i.rgb.ansi16(i.hsv.rgb(t),t[2])},i.rgb.ansi256=function(t){var e=t[0],n=t[1],r=t[2];return e===n&&n===r?e<8?16:e>248?231:Math.round((e-8)/247*24)+232:16+36*Math.round(e/255*5)+6*Math.round(n/255*5)+Math.round(r/255*5)},i.ansi16.rgb=function(t){var e=t%10;if(0===e||7===e)return t>50&&(e+=3.5),[e=e/10.5*255,e,e];var n=.5*(1+~~(t>50));return[(1&e)*n*255,(e>>1&1)*n*255,(e>>2&1)*n*255]},i.ansi256.rgb=function(t){if(t>=232){var e=10*(t-232)+8;return[e,e,e]}var n;return t-=16,[Math.floor(t/36)/5*255,Math.floor((n=t%36)/6)/5*255,n%6/5*255]},i.rgb.hex=function(t){var e=(((255&Math.round(t[0]))<<16)+((255&Math.round(t[1]))<<8)+(255&Math.round(t[2]))).toString(16).toUpperCase();return"000000".substring(e.length)+e},i.hex.rgb=function(t){var e=t.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);if(!e)return[0,0,0];var n=e[0];3===e[0].length&&(n=n.split("").map((function(t){return t+t})).join(""));var r=parseInt(n,16);return[r>>16&255,r>>8&255,255&r]},i.rgb.hcg=function(t){var e,n=t[0]/255,r=t[1]/255,i=t[2]/255,a=Math.max(Math.max(n,r),i),o=Math.min(Math.min(n,r),i),s=a-o;return e=s<=0?0:a===n?(r-i)/s%6:a===r?2+(i-n)/s:4+(n-r)/s+4,e/=6,[360*(e%=1),100*s,100*(s<1?o/(1-s):0)]},i.hsl.hcg=function(t){var e=t[1]/100,n=t[2]/100,r=1,i=0;return(r=n<.5?2*e*n:2*e*(1-n))<1&&(i=(n-.5*r)/(1-r)),[t[0],100*r,100*i]},i.hsv.hcg=function(t){var e=t[1]/100,n=t[2]/100,r=e*n,i=0;return r<1&&(i=(n-r)/(1-r)),[t[0],100*r,100*i]},i.hcg.rgb=function(t){var e=t[0]/360,n=t[1]/100,r=t[2]/100;if(0===n)return[255*r,255*r,255*r];var i,a=[0,0,0],o=e%1*6,s=o%1,l=1-s;switch(Math.floor(o)){case 0:a[0]=1,a[1]=s,a[2]=0;break;case 1:a[0]=l,a[1]=1,a[2]=0;break;case 2:a[0]=0,a[1]=1,a[2]=s;break;case 3:a[0]=0,a[1]=l,a[2]=1;break;case 4:a[0]=s,a[1]=0,a[2]=1;break;default:a[0]=1,a[1]=0,a[2]=l}return i=(1-n)*r,[255*(n*a[0]+i),255*(n*a[1]+i),255*(n*a[2]+i)]},i.hcg.hsv=function(t){var e=t[1]/100,n=e+t[2]/100*(1-e),r=0;return n>0&&(r=e/n),[t[0],100*r,100*n]},i.hcg.hsl=function(t){var e=t[1]/100,n=t[2]/100*(1-e)+.5*e,r=0;return n>0&&n<.5?r=e/(2*n):n>=.5&&n<1&&(r=e/(2*(1-n))),[t[0],100*r,100*n]},i.hcg.hwb=function(t){var e=t[1]/100,n=e+t[2]/100*(1-e);return[t[0],100*(n-e),100*(1-n)]},i.hwb.hcg=function(t){var e=t[1]/100,n=1-t[2]/100,r=n-e,i=0;return r<1&&(i=(n-r)/(1-r)),[t[0],100*r,100*i]},i.apple.rgb=function(t){return[t[0]/65535*255,t[1]/65535*255,t[2]/65535*255]},i.rgb.apple=function(t){return[t[0]/255*65535,t[1]/255*65535,t[2]/255*65535]},i.gray.rgb=function(t){return[t[0]/100*255,t[0]/100*255,t[0]/100*255]},i.gray.hsl=i.gray.hsv=function(t){return[0,0,t[0]]},i.gray.hwb=function(t){return[0,100,t[0]]},i.gray.cmyk=function(t){return[0,0,0,t[0]]},i.gray.lab=function(t){return[t[0],0,0]},i.gray.hex=function(t){var e=255&Math.round(t[0]/100*255),n=((e<<16)+(e<<8)+e).toString(16).toUpperCase();return"000000".substring(n.length)+n},i.rgb.gray=function(t){return[(t[0]+t[1]+t[2])/3/255*100]}}));function r(t){var e=function(){for(var t={},e=Object.keys(n),r=e.length,i=0;i<r;i++)t[e[i]]={distance:-1,parent:null};return t}(),r=[t];for(e[t].distance=0;r.length;)for(var i=r.pop(),a=Object.keys(n[i]),o=a.length,s=0;s<o;s++){var l=a[s],u=e[l];-1===u.distance&&(u.distance=e[i].distance+1,u.parent=i,r.unshift(l))}return e}function i(t,e){return function(n){return e(t(n))}}function a(t,e){for(var r=[e[t].parent,t],a=n[e[t].parent][t],o=e[t].parent;e[o].parent;)r.unshift(e[o].parent),a=i(n[e[o].parent][o],a),o=e[o].parent;return a.conversion=r,a}n.rgb,n.hsl,n.hsv,n.hwb,n.cmyk,n.xyz,n.lab,n.lch,n.hex,n.keyword,n.ansi16,n.ansi256,n.hcg,n.apple,n.gray;var o={};Object.keys(n).forEach((function(t){o[t]={},Object.defineProperty(o[t],"channels",{value:n[t].channels}),Object.defineProperty(o[t],"labels",{value:n[t].labels});var e=function(t){for(var e=r(t),n={},i=Object.keys(e),o=i.length,s=0;s<o;s++){var l=i[s];null!==e[l].parent&&(n[l]=a(l,e))}return n}(t);Object.keys(e).forEach((function(n){var r=e[n];o[t][n]=function(t){var e=function(e){if(null==e)return e;arguments.length>1&&(e=Array.prototype.slice.call(arguments));var n=t(e);if("object"==typeof n)for(var r=n.length,i=0;i<r;i++)n[i]=Math.round(n[i]);return n};return"conversion"in t&&(e.conversion=t.conversion),e}(r),o[t][n].raw=function(t){var e=function(e){return null==e?e:(arguments.length>1&&(e=Array.prototype.slice.call(arguments)),t(e))};return"conversion"in t&&(e.conversion=t.conversion),e}(r)}))}));var s=o,l={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]},u={getRgba:c,getHsla:h,getRgb:function(t){var e=c(t);return e&&e.slice(0,3)},getHsl:function(t){var e=h(t);return e&&e.slice(0,3)},getHwb:d,getAlpha:function(t){var e=c(t);return e?e[3]:(e=h(t))?e[3]:(e=d(t))?e[3]:void 0},hexString:function(t,e){return e=void 0!==e&&3===t.length?e:t[3],"#"+v(t[0])+v(t[1])+v(t[2])+(e>=0&&e<1?v(Math.round(255*e)):"")},rgbString:function(t,e){return e<1||t[3]&&t[3]<1?f(t,e):"rgb("+t[0]+", "+t[1]+", "+t[2]+")"},rgbaString:f,percentString:function(t,e){if(e<1||t[3]&&t[3]<1)return p(t,e);var n=Math.round(t[0]/255*100),r=Math.round(t[1]/255*100),i=Math.round(t[2]/255*100);return"rgb("+n+"%, "+r+"%, "+i+"%)"},percentaString:p,hslString:function(t,e){return e<1||t[3]&&t[3]<1?g(t,e):"hsl("+t[0]+", "+t[1]+"%, "+t[2]+"%)"},hslaString:g,hwbString:function(t,e){return void 0===e&&(e=void 0!==t[3]?t[3]:1),"hwb("+t[0]+", "+t[1]+"%, "+t[2]+"%"+(void 0!==e&&1!==e?", "+e:"")+")"},keyword:function(t){return y[t.slice(0,3)]}};function c(t){if(t){var e=[0,0,0],n=1,r=t.match(/^#([a-fA-F0-9]{3,4})$/i),i="";if(r){i=(r=r[1])[3];for(var a=0;a<e.length;a++)e[a]=parseInt(r[a]+r[a],16);i&&(n=Math.round(parseInt(i+i,16)/255*100)/100)}else if(r=t.match(/^#([a-fA-F0-9]{6}([a-fA-F0-9]{2})?)$/i)){for(i=r[2],r=r[1],a=0;a<e.length;a++)e[a]=parseInt(r.slice(2*a,2*a+2),16);i&&(n=Math.round(parseInt(i,16)/255*100)/100)}else if(r=t.match(/^rgba?\(\s*([+-]?\d+)\s*,\s*([+-]?\d+)\s*,\s*([+-]?\d+)\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)$/i)){for(a=0;a<e.length;a++)e[a]=parseInt(r[a+1]);n=parseFloat(r[4])}else if(r=t.match(/^rgba?\(\s*([+-]?[\d\.]+)\%\s*,\s*([+-]?[\d\.]+)\%\s*,\s*([+-]?[\d\.]+)\%\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)$/i)){for(a=0;a<e.length;a++)e[a]=Math.round(2.55*parseFloat(r[a+1]));n=parseFloat(r[4])}else if(r=t.match(/(\w+)/)){if("transparent"==r[1])return[0,0,0,0];if(!(e=l[r[1]]))return}for(a=0;a<e.length;a++)e[a]=m(e[a],0,255);return n=n||0==n?m(n,0,1):1,e[3]=n,e}}function h(t){if(t){var e=t.match(/^hsla?\(\s*([+-]?\d+)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)/);if(e){var n=parseFloat(e[4]);return[m(parseInt(e[1]),0,360),m(parseFloat(e[2]),0,100),m(parseFloat(e[3]),0,100),m(isNaN(n)?1:n,0,1)]}}}function d(t){if(t){var e=t.match(/^hwb\(\s*([+-]?\d+)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)/);if(e){var n=parseFloat(e[4]);return[m(parseInt(e[1]),0,360),m(parseFloat(e[2]),0,100),m(parseFloat(e[3]),0,100),m(isNaN(n)?1:n,0,1)]}}}function f(t,e){return void 0===e&&(e=void 0!==t[3]?t[3]:1),"rgba("+t[0]+", "+t[1]+", "+t[2]+", "+e+")"}function p(t,e){return"rgba("+Math.round(t[0]/255*100)+"%, "+Math.round(t[1]/255*100)+"%, "+Math.round(t[2]/255*100)+"%, "+(e||t[3]||1)+")"}function g(t,e){return void 0===e&&(e=void 0!==t[3]?t[3]:1),"hsla("+t[0]+", "+t[1]+"%, "+t[2]+"%, "+e+")"}function m(t,e,n){return Math.min(Math.max(e,t),n)}function v(t){var e=t.toString(16).toUpperCase();return e.length<2?"0"+e:e}var y={};for(var b in l)y[l[b]]=b;var x=function t(e){return e instanceof t?e:this instanceof t?(this.valid=!1,this.values={rgb:[0,0,0],hsl:[0,0,0],hsv:[0,0,0],hwb:[0,0,0],cmyk:[0,0,0,0],alpha:1},void("string"==typeof e?(n=u.getRgba(e))?this.setValues("rgb",n):(n=u.getHsla(e))?this.setValues("hsl",n):(n=u.getHwb(e))&&this.setValues("hwb",n):"object"==typeof e&&(void 0!==(n=e).r||void 0!==n.red?this.setValues("rgb",n):void 0!==n.l||void 0!==n.lightness?this.setValues("hsl",n):void 0!==n.v||void 0!==n.value?this.setValues("hsv",n):void 0!==n.w||void 0!==n.whiteness?this.setValues("hwb",n):void 0===n.c&&void 0===n.cyan||this.setValues("cmyk",n)))):new t(e);var n};(x.prototype={isValid:function(){return this.valid},rgb:function(){return this.setSpace("rgb",arguments)},hsl:function(){return this.setSpace("hsl",arguments)},hsv:function(){return this.setSpace("hsv",arguments)},hwb:function(){return this.setSpace("hwb",arguments)},cmyk:function(){return this.setSpace("cmyk",arguments)},rgbArray:function(){return this.values.rgb},hslArray:function(){return this.values.hsl},hsvArray:function(){return this.values.hsv},hwbArray:function(){var t=this.values;return 1!==t.alpha?t.hwb.concat([t.alpha]):t.hwb},cmykArray:function(){return this.values.cmyk},rgbaArray:function(){var t=this.values;return t.rgb.concat([t.alpha])},hslaArray:function(){var t=this.values;return t.hsl.concat([t.alpha])},alpha:function(t){return void 0===t?this.values.alpha:(this.setValues("alpha",t),this)},red:function(t){return this.setChannel("rgb",0,t)},green:function(t){return this.setChannel("rgb",1,t)},blue:function(t){return this.setChannel("rgb",2,t)},hue:function(t){return t&&(t=(t%=360)<0?360+t:t),this.setChannel("hsl",0,t)},saturation:function(t){return this.setChannel("hsl",1,t)},lightness:function(t){return this.setChannel("hsl",2,t)},saturationv:function(t){return this.setChannel("hsv",1,t)},whiteness:function(t){return this.setChannel("hwb",1,t)},blackness:function(t){return this.setChannel("hwb",2,t)},value:function(t){return this.setChannel("hsv",2,t)},cyan:function(t){return this.setChannel("cmyk",0,t)},magenta:function(t){return this.setChannel("cmyk",1,t)},yellow:function(t){return this.setChannel("cmyk",2,t)},black:function(t){return this.setChannel("cmyk",3,t)},hexString:function(){return u.hexString(this.values.rgb)},rgbString:function(){return u.rgbString(this.values.rgb,this.values.alpha)},rgbaString:function(){return u.rgbaString(this.values.rgb,this.values.alpha)},percentString:function(){return u.percentString(this.values.rgb,this.values.alpha)},hslString:function(){return u.hslString(this.values.hsl,this.values.alpha)},hslaString:function(){return u.hslaString(this.values.hsl,this.values.alpha)},hwbString:function(){return u.hwbString(this.values.hwb,this.values.alpha)},keyword:function(){return u.keyword(this.values.rgb,this.values.alpha)},rgbNumber:function(){var t=this.values.rgb;return t[0]<<16|t[1]<<8|t[2]},luminosity:function(){for(var t=this.values.rgb,e=[],n=0;n<t.length;n++){var r=t[n]/255;e[n]=r<=.03928?r/12.92:Math.pow((r+.055)/1.055,2.4)}return.2126*e[0]+.7152*e[1]+.0722*e[2]},contrast:function(t){var e=this.luminosity(),n=t.luminosity();return e>n?(e+.05)/(n+.05):(n+.05)/(e+.05)},level:function(t){var e=this.contrast(t);return e>=7.1?"AAA":e>=4.5?"AA":""},dark:function(){var t=this.values.rgb;return(299*t[0]+587*t[1]+114*t[2])/1e3<128},light:function(){return!this.dark()},negate:function(){for(var t=[],e=0;e<3;e++)t[e]=255-this.values.rgb[e];return this.setValues("rgb",t),this},lighten:function(t){var e=this.values.hsl;return e[2]+=e[2]*t,this.setValues("hsl",e),this},darken:function(t){var e=this.values.hsl;return e[2]-=e[2]*t,this.setValues("hsl",e),this},saturate:function(t){var e=this.values.hsl;return e[1]+=e[1]*t,this.setValues("hsl",e),this},desaturate:function(t){var e=this.values.hsl;return e[1]-=e[1]*t,this.setValues("hsl",e),this},whiten:function(t){var e=this.values.hwb;return e[1]+=e[1]*t,this.setValues("hwb",e),this},blacken:function(t){var e=this.values.hwb;return e[2]+=e[2]*t,this.setValues("hwb",e),this},greyscale:function(){var t=this.values.rgb,e=.3*t[0]+.59*t[1]+.11*t[2];return this.setValues("rgb",[e,e,e]),this},clearer:function(t){var e=this.values.alpha;return this.setValues("alpha",e-e*t),this},opaquer:function(t){var e=this.values.alpha;return this.setValues("alpha",e+e*t),this},rotate:function(t){var e=this.values.hsl,n=(e[0]+t)%360;return e[0]=n<0?360+n:n,this.setValues("hsl",e),this},mix:function(t,e){var n=t,r=void 0===e?.5:e,i=2*r-1,a=this.alpha()-n.alpha(),o=((i*a==-1?i:(i+a)/(1+i*a))+1)/2,s=1-o;return this.rgb(o*this.red()+s*n.red(),o*this.green()+s*n.green(),o*this.blue()+s*n.blue()).alpha(this.alpha()*r+n.alpha()*(1-r))},toJSON:function(){return this.rgb()},clone:function(){var t,e,n=new x,r=this.values,i=n.values;for(var a in r)r.hasOwnProperty(a)&&(t=r[a],"[object Array]"===(e={}.toString.call(t))?i[a]=t.slice(0):"[object Number]"===e?i[a]=t:console.error("unexpected color value:",t));return n}}).spaces={rgb:["red","green","blue"],hsl:["hue","saturation","lightness"],hsv:["hue","saturation","value"],hwb:["hue","whiteness","blackness"],cmyk:["cyan","magenta","yellow","black"]},x.prototype.maxes={rgb:[255,255,255],hsl:[360,100,100],hsv:[360,100,100],hwb:[360,100,100],cmyk:[100,100,100,100]},x.prototype.getValues=function(t){for(var e=this.values,n={},r=0;r<t.length;r++)n[t.charAt(r)]=e[t][r];return 1!==e.alpha&&(n.a=e.alpha),n},x.prototype.setValues=function(t,e){var n,r,i=this.values,a=this.spaces,o=this.maxes,l=1;if(this.valid=!0,"alpha"===t)l=e;else if(e.length)i[t]=e.slice(0,t.length),l=e[t.length];else if(void 0!==e[t.charAt(0)]){for(n=0;n<t.length;n++)i[t][n]=e[t.charAt(n)];l=e.a}else if(void 0!==e[a[t][0]]){var u=a[t];for(n=0;n<t.length;n++)i[t][n]=e[u[n]];l=e.alpha}if(i.alpha=Math.max(0,Math.min(1,void 0===l?i.alpha:l)),"alpha"===t)return!1;for(n=0;n<t.length;n++)r=Math.max(0,Math.min(o[t][n],i[t][n])),i[t][n]=Math.round(r);for(var c in a)c!==t&&(i[c]=s[t][c](i[t]));return!0},x.prototype.setSpace=function(t,e){var n=e[0];return void 0===n?this.getValues(t):("number"==typeof n&&(n=Array.prototype.slice.call(e)),this.setValues(t,n),this)},x.prototype.setChannel=function(t,e,n){var r=this.values[t];return void 0===n?r[e]:n===r[e]?this:(r[e]=n,this.setValues(t,r),this)},"undefined"!=typeof window&&(window.Color=x);var _,w=x,k={noop:function(){},uid:(_=0,function(){return _++}),isNullOrUndef:function(t){return null==t},isArray:function(t){if(Array.isArray&&Array.isArray(t))return!0;var e=Object.prototype.toString.call(t);return"[object"===e.substr(0,7)&&"Array]"===e.substr(-6)},isObject:function(t){return null!==t&&"[object Object]"===Object.prototype.toString.call(t)},isFinite:function(t){function e(e){return t.apply(this,arguments)}return e.toString=function(){return t.toString()},e}((function(t){return("number"==typeof t||t instanceof Number)&&isFinite(t)})),valueOrDefault:function(t,e){return void 0===t?e:t},valueAtIndexOrDefault:function(t,e,n){return k.valueOrDefault(k.isArray(t)?t[e]:t,n)},callback:function(t,e,n){if(t&&"function"==typeof t.call)return t.apply(n,e)},each:function(t,e,n,r){var i,a,o;if(k.isArray(t))if(a=t.length,r)for(i=a-1;i>=0;i--)e.call(n,t[i],i);else for(i=0;i<a;i++)e.call(n,t[i],i);else if(k.isObject(t))for(a=(o=Object.keys(t)).length,i=0;i<a;i++)e.call(n,t[o[i]],o[i])},arrayEquals:function(t,e){var n,r,i,a;if(!t||!e||t.length!==e.length)return!1;for(n=0,r=t.length;n<r;++n)if(i=t[n],a=e[n],i instanceof Array&&a instanceof Array){if(!k.arrayEquals(i,a))return!1}else if(i!==a)return!1;return!0},clone:function(t){if(k.isArray(t))return t.map(k.clone);if(k.isObject(t)){for(var e={},n=Object.keys(t),r=n.length,i=0;i<r;++i)e[n[i]]=k.clone(t[n[i]]);return e}return t},_merger:function(t,e,n,r){var i=e[t],a=n[t];k.isObject(i)&&k.isObject(a)?k.merge(i,a,r):e[t]=k.clone(a)},_mergerIf:function(t,e,n){var r=e[t],i=n[t];k.isObject(r)&&k.isObject(i)?k.mergeIf(r,i):e.hasOwnProperty(t)||(e[t]=k.clone(i))},merge:function(t,e,n){var r,i,a,o,s,l=k.isArray(e)?e:[e],u=l.length;if(!k.isObject(t))return t;for(r=(n=n||{}).merger||k._merger,i=0;i<u;++i)if(e=l[i],k.isObject(e))for(s=0,o=(a=Object.keys(e)).length;s<o;++s)r(a[s],t,e,n);return t},mergeIf:function(t,e){return k.merge(t,e,{merger:k._mergerIf})},extend:Object.assign||function(t){return k.merge(t,[].slice.call(arguments,1),{merger:function(t,e,n){e[t]=n[t]}})},inherits:function(t){var e=this,n=t&&t.hasOwnProperty("constructor")?t.constructor:function(){return e.apply(this,arguments)},r=function(){this.constructor=n};return r.prototype=e.prototype,n.prototype=new r,n.extend=k.inherits,t&&k.extend(n.prototype,t),n.__super__=e.prototype,n},_deprecated:function(t,e,n,r){void 0!==e&&console.warn(t+': "'+n+'" is deprecated. Please use "'+r+'" instead')}},M=k;k.callCallback=k.callback,k.indexOf=function(t,e,n){return Array.prototype.indexOf.call(t,e,n)},k.getValueOrDefault=k.valueOrDefault,k.getValueAtIndexOrDefault=k.valueAtIndexOrDefault;var S={linear:function(t){return t},easeInQuad:function(t){return t*t},easeOutQuad:function(t){return-t*(t-2)},easeInOutQuad:function(t){return(t/=.5)<1?.5*t*t:-.5*(--t*(t-2)-1)},easeInCubic:function(t){return t*t*t},easeOutCubic:function(t){return(t-=1)*t*t+1},easeInOutCubic:function(t){return(t/=.5)<1?.5*t*t*t:.5*((t-=2)*t*t+2)},easeInQuart:function(t){return t*t*t*t},easeOutQuart:function(t){return-((t-=1)*t*t*t-1)},easeInOutQuart:function(t){return(t/=.5)<1?.5*t*t*t*t:-.5*((t-=2)*t*t*t-2)},easeInQuint:function(t){return t*t*t*t*t},easeOutQuint:function(t){return(t-=1)*t*t*t*t+1},easeInOutQuint:function(t){return(t/=.5)<1?.5*t*t*t*t*t:.5*((t-=2)*t*t*t*t+2)},easeInSine:function(t){return 1-Math.cos(t*(Math.PI/2))},easeOutSine:function(t){return Math.sin(t*(Math.PI/2))},easeInOutSine:function(t){return-.5*(Math.cos(Math.PI*t)-1)},easeInExpo:function(t){return 0===t?0:Math.pow(2,10*(t-1))},easeOutExpo:function(t){return 1===t?1:1-Math.pow(2,-10*t)},easeInOutExpo:function(t){return 0===t?0:1===t?1:(t/=.5)<1?.5*Math.pow(2,10*(t-1)):.5*(2-Math.pow(2,-10*--t))},easeInCirc:function(t){return t>=1?t:-(Math.sqrt(1-t*t)-1)},easeOutCirc:function(t){return Math.sqrt(1-(t-=1)*t)},easeInOutCirc:function(t){return(t/=.5)<1?-.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1)},easeInElastic:function(t){var e=1.70158,n=0,r=1;return 0===t?0:1===t?1:(n||(n=.3),r<1?(r=1,e=n/4):e=n/(2*Math.PI)*Math.asin(1/r),-r*Math.pow(2,10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/n))},easeOutElastic:function(t){var e=1.70158,n=0,r=1;return 0===t?0:1===t?1:(n||(n=.3),r<1?(r=1,e=n/4):e=n/(2*Math.PI)*Math.asin(1/r),r*Math.pow(2,-10*t)*Math.sin((t-e)*(2*Math.PI)/n)+1)},easeInOutElastic:function(t){var e=1.70158,n=0,r=1;return 0===t?0:2==(t/=.5)?1:(n||(n=.45),r<1?(r=1,e=n/4):e=n/(2*Math.PI)*Math.asin(1/r),t<1?r*Math.pow(2,10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/n)*-.5:r*Math.pow(2,-10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/n)*.5+1)},easeInBack:function(t){var e=1.70158;return t*t*((e+1)*t-e)},easeOutBack:function(t){var e=1.70158;return(t-=1)*t*((e+1)*t+e)+1},easeInOutBack:function(t){var e=1.70158;return(t/=.5)<1?t*t*((1+(e*=1.525))*t-e)*.5:.5*((t-=2)*t*((1+(e*=1.525))*t+e)+2)},easeInBounce:function(t){return 1-S.easeOutBounce(1-t)},easeOutBounce:function(t){return t<1/2.75?7.5625*t*t:t<2/2.75?7.5625*(t-=1.5/2.75)*t+.75:t<2.5/2.75?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375},easeInOutBounce:function(t){return t<.5?.5*S.easeInBounce(2*t):.5*S.easeOutBounce(2*t-1)+.5}},D={effects:S};M.easingEffects=S;var C=Math.PI,O=C/180,T=2*C,P=C/2,A=C/4,I=2*C/3,F={clear:function(t){t.ctx.clearRect(0,0,t.width,t.height)},roundedRect:function(t,e,n,r,i,a){if(a){var o=Math.min(a,i/2,r/2),s=e+o,l=n+o,u=e+r-o,c=n+i-o;t.moveTo(e,l),s<u&&l<c?(t.arc(s,l,o,-C,-P),t.arc(u,l,o,-P,0),t.arc(u,c,o,0,P),t.arc(s,c,o,P,C)):s<u?(t.moveTo(s,n),t.arc(u,l,o,-P,P),t.arc(s,l,o,P,C+P)):l<c?(t.arc(s,l,o,-C,0),t.arc(s,c,o,0,C)):t.arc(s,l,o,-C,C),t.closePath(),t.moveTo(e,n)}else t.rect(e,n,r,i)},drawPoint:function(t,e,n,r,i,a){var o,s,l,u,c,h=(a||0)*O;if(e&&"object"==typeof e&&("[object HTMLImageElement]"===(o=e.toString())||"[object HTMLCanvasElement]"===o))return t.save(),t.translate(r,i),t.rotate(h),t.drawImage(e,-e.width/2,-e.height/2,e.width,e.height),void t.restore();if(!(isNaN(n)||n<=0)){switch(t.beginPath(),e){default:t.arc(r,i,n,0,T),t.closePath();break;case"triangle":t.moveTo(r+Math.sin(h)*n,i-Math.cos(h)*n),h+=I,t.lineTo(r+Math.sin(h)*n,i-Math.cos(h)*n),h+=I,t.lineTo(r+Math.sin(h)*n,i-Math.cos(h)*n),t.closePath();break;case"rectRounded":u=n-(c=.516*n),s=Math.cos(h+A)*u,l=Math.sin(h+A)*u,t.arc(r-s,i-l,c,h-C,h-P),t.arc(r+l,i-s,c,h-P,h),t.arc(r+s,i+l,c,h,h+P),t.arc(r-l,i+s,c,h+P,h+C),t.closePath();break;case"rect":if(!a){u=Math.SQRT1_2*n,t.rect(r-u,i-u,2*u,2*u);break}h+=A;case"rectRot":s=Math.cos(h)*n,l=Math.sin(h)*n,t.moveTo(r-s,i-l),t.lineTo(r+l,i-s),t.lineTo(r+s,i+l),t.lineTo(r-l,i+s),t.closePath();break;case"crossRot":h+=A;case"cross":s=Math.cos(h)*n,l=Math.sin(h)*n,t.moveTo(r-s,i-l),t.lineTo(r+s,i+l),t.moveTo(r+l,i-s),t.lineTo(r-l,i+s);break;case"star":s=Math.cos(h)*n,l=Math.sin(h)*n,t.moveTo(r-s,i-l),t.lineTo(r+s,i+l),t.moveTo(r+l,i-s),t.lineTo(r-l,i+s),h+=A,s=Math.cos(h)*n,l=Math.sin(h)*n,t.moveTo(r-s,i-l),t.lineTo(r+s,i+l),t.moveTo(r+l,i-s),t.lineTo(r-l,i+s);break;case"line":s=Math.cos(h)*n,l=Math.sin(h)*n,t.moveTo(r-s,i-l),t.lineTo(r+s,i+l);break;case"dash":t.moveTo(r,i),t.lineTo(r+Math.cos(h)*n,i+Math.sin(h)*n)}t.fill(),t.stroke()}},_isPointInArea:function(t,e){return t.x>e.left-1e-6&&t.x<e.right+1e-6&&t.y>e.top-1e-6&&t.y<e.bottom+1e-6},clipArea:function(t,e){t.save(),t.beginPath(),t.rect(e.left,e.top,e.right-e.left,e.bottom-e.top),t.clip()},unclipArea:function(t){t.restore()},lineTo:function(t,e,n,r){var i=n.steppedLine;if(i){if("middle"===i){var a=(e.x+n.x)/2;t.lineTo(a,r?n.y:e.y),t.lineTo(a,r?e.y:n.y)}else"after"===i&&!r||"after"!==i&&r?t.lineTo(e.x,n.y):t.lineTo(n.x,e.y);t.lineTo(n.x,n.y)}else n.tension?t.bezierCurveTo(r?e.controlPointPreviousX:e.controlPointNextX,r?e.controlPointPreviousY:e.controlPointNextY,r?n.controlPointNextX:n.controlPointPreviousX,r?n.controlPointNextY:n.controlPointPreviousY,n.x,n.y):t.lineTo(n.x,n.y)}},L=F;M.clear=F.clear,M.drawRoundedRectangle=function(t){t.beginPath(),F.roundedRect.apply(F,arguments)};var R={_set:function(t,e){return M.merge(this[t]||(this[t]={}),e)}};R._set("global",{defaultColor:"rgba(0,0,0,0.1)",defaultFontColor:"#666",defaultFontFamily:"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",defaultFontSize:12,defaultFontStyle:"normal",defaultLineHeight:1.2,showLines:!0});var N=R,E=M.valueOrDefault,j={toLineHeight:function(t,e){var n=(""+t).match(/^(normal|(\d+(?:\.\d+)?)(px|em|%)?)$/);if(!n||"normal"===n[1])return 1.2*e;switch(t=+n[2],n[3]){case"px":return t;case"%":t/=100}return e*t},toPadding:function(t){var e,n,r,i;return M.isObject(t)?(e=+t.top||0,n=+t.right||0,r=+t.bottom||0,i=+t.left||0):e=n=r=i=+t||0,{top:e,right:n,bottom:r,left:i,height:e+r,width:i+n}},_parseFont:function(t){var e=N.global,n=E(t.fontSize,e.defaultFontSize),r={family:E(t.fontFamily,e.defaultFontFamily),lineHeight:M.options.toLineHeight(E(t.lineHeight,e.defaultLineHeight),n),size:n,style:E(t.fontStyle,e.defaultFontStyle),weight:null,string:""};return r.string=function(t){return!t||M.isNullOrUndef(t.size)||M.isNullOrUndef(t.family)?null:(t.style?t.style+" ":"")+(t.weight?t.weight+" ":"")+t.size+"px "+t.family}(r),r},resolve:function(t,e,n,r){var i,a,o,s=!0;for(i=0,a=t.length;i<a;++i)if(void 0!==(o=t[i])&&(void 0!==e&&"function"==typeof o&&(o=o(e),s=!1),void 0!==n&&M.isArray(o)&&(o=o[n],s=!1),void 0!==o))return r&&!s&&(r.cacheable=!1),o}},z={_factorize:function(t){var e,n=[],r=Math.sqrt(t);for(e=1;e<r;e++)t%e==0&&(n.push(e),n.push(t/e));return r===(0|r)&&n.push(r),n.sort((function(t,e){return t-e})).pop(),n},log10:Math.log10||function(t){var e=Math.log(t)*Math.LOG10E,n=Math.round(e);return t===Math.pow(10,n)?n:e}},W=z;M.log10=z.log10;var Y=M,V=D,B=L,H=j,U=W,G={getRtlAdapter:function(t,e,n){return t?function(t,e){return{x:function(n){return t+t+e-n},setWidth:function(t){e=t},textAlign:function(t){return"center"===t?t:"right"===t?"left":"right"},xPlus:function(t,e){return t-e},leftForLtr:function(t,e){return t-e}}}(e,n):{x:function(t){return t},setWidth:function(t){},textAlign:function(t){return t},xPlus:function(t,e){return t+e},leftForLtr:function(t,e){return t}}},overrideTextDirection:function(t,e){var n,r;"ltr"!==e&&"rtl"!==e||(r=[(n=t.canvas.style).getPropertyValue("direction"),n.getPropertyPriority("direction")],n.setProperty("direction",e,"important"),t.prevTextDirection=r)},restoreTextDirection:function(t){var e=t.prevTextDirection;void 0!==e&&(delete t.prevTextDirection,t.canvas.style.setProperty("direction",e[0],e[1]))}};Y.easing=V,Y.canvas=B,Y.options=H,Y.math=U,Y.rtl=G;var q=function(t){Y.extend(this,t),this.initialize.apply(this,arguments)};Y.extend(q.prototype,{_type:void 0,initialize:function(){this.hidden=!1},pivot:function(){var t=this;return t._view||(t._view=Y.extend({},t._model)),t._start={},t},transition:function(t){var e=this,n=e._model,r=e._start,i=e._view;return n&&1!==t?(i||(i=e._view={}),r||(r=e._start={}),function(t,e,n,r){var i,a,o,s,l,u,c,h,d,f=Object.keys(n);for(i=0,a=f.length;i<a;++i)if(u=n[o=f[i]],e.hasOwnProperty(o)||(e[o]=u),(s=e[o])!==u&&"_"!==o[0]){if(t.hasOwnProperty(o)||(t[o]=s),(c=typeof u)==typeof(l=t[o]))if("string"===c){if((h=w(l)).valid&&(d=w(u)).valid){e[o]=d.mix(h,r).rgbString();continue}}else if(Y.isFinite(l)&&Y.isFinite(u)){e[o]=l+(u-l)*r;continue}e[o]=u}}(r,i,n,t),e):(e._view=Y.extend({},n),e._start=null,e)},tooltipPosition:function(){return{x:this._model.x,y:this._model.y}},hasValue:function(){return Y.isNumber(this._model.x)&&Y.isNumber(this._model.y)}}),q.extend=Y.inherits;var K=q,Z=K.extend({chart:null,currentStep:0,numSteps:60,easing:"",render:null,onAnimationProgress:null,onAnimationComplete:null}),X=Z;Object.defineProperty(Z.prototype,"animationObject",{get:function(){return this}}),Object.defineProperty(Z.prototype,"chartInstance",{get:function(){return this.chart},set:function(t){this.chart=t}}),N._set("global",{animation:{duration:1e3,easing:"easeOutQuart",onProgress:Y.noop,onComplete:Y.noop}});var J={animations:[],request:null,addAnimation:function(t,e,n,r){var i,a,o=this.animations;for(e.chart=t,e.startTime=Date.now(),e.duration=n,r||(t.animating=!0),i=0,a=o.length;i<a;++i)if(o[i].chart===t)return void(o[i]=e);o.push(e),1===o.length&&this.requestAnimationFrame()},cancelAnimation:function(t){var e=Y.findIndex(this.animations,(function(e){return e.chart===t}));-1!==e&&(this.animations.splice(e,1),t.animating=!1)},requestAnimationFrame:function(){var t=this;null===t.request&&(t.request=Y.requestAnimFrame.call(window,(function(){t.request=null,t.startDigest()})))},startDigest:function(){this.advance(),this.animations.length>0&&this.requestAnimationFrame()},advance:function(){for(var t,e,n,r,i=this.animations,a=0;a<i.length;)e=(t=i[a]).chart,n=t.numSteps,r=Math.floor((Date.now()-t.startTime)/t.duration*n)+1,t.currentStep=Math.min(r,n),Y.callback(t.render,[e,t],e),Y.callback(t.onAnimationProgress,[t],e),t.currentStep>=n?(Y.callback(t.onAnimationComplete,[t],e),e.animating=!1,i.splice(a,1)):++a}},$=Y.options.resolve,Q=["push","pop","shift","splice","unshift"];function tt(t,e){var n=t._chartjs;if(n){var r=n.listeners,i=r.indexOf(e);-1!==i&&r.splice(i,1),r.length>0||(Q.forEach((function(e){delete t[e]})),delete t._chartjs)}}var et=function(t,e){this.initialize(t,e)};Y.extend(et.prototype,{datasetElementType:null,dataElementType:null,_datasetElementOptions:["backgroundColor","borderCapStyle","borderColor","borderDash","borderDashOffset","borderJoinStyle","borderWidth"],_dataElementOptions:["backgroundColor","borderColor","borderWidth","pointStyle"],initialize:function(t,e){var n=this;n.chart=t,n.index=e,n.linkScales(),n.addElements(),n._type=n.getMeta().type},updateIndex:function(t){this.index=t},linkScales:function(){var t=this.getMeta(),e=this.chart,n=e.scales,r=this.getDataset(),i=e.options.scales;null!==t.xAxisID&&t.xAxisID in n&&!r.xAxisID||(t.xAxisID=r.xAxisID||i.xAxes[0].id),null!==t.yAxisID&&t.yAxisID in n&&!r.yAxisID||(t.yAxisID=r.yAxisID||i.yAxes[0].id)},getDataset:function(){return this.chart.data.datasets[this.index]},getMeta:function(){return this.chart.getDatasetMeta(this.index)},getScaleForId:function(t){return this.chart.scales[t]},_getValueScaleId:function(){return this.getMeta().yAxisID},_getIndexScaleId:function(){return this.getMeta().xAxisID},_getValueScale:function(){return this.getScaleForId(this._getValueScaleId())},_getIndexScale:function(){return this.getScaleForId(this._getIndexScaleId())},reset:function(){this._update(!0)},destroy:function(){this._data&&tt(this._data,this)},createMetaDataset:function(){var t=this.datasetElementType;return t&&new t({_chart:this.chart,_datasetIndex:this.index})},createMetaData:function(t){var e=this.dataElementType;return e&&new e({_chart:this.chart,_datasetIndex:this.index,_index:t})},addElements:function(){var t,e,n=this.getMeta(),r=this.getDataset().data||[],i=n.data;for(t=0,e=r.length;t<e;++t)i[t]=i[t]||this.createMetaData(t);n.dataset=n.dataset||this.createMetaDataset()},addElementAndReset:function(t){var e=this.createMetaData(t);this.getMeta().data.splice(t,0,e),this.updateElement(e,t,!0)},buildOrUpdateElements:function(){var t,e,n=this,r=n.getDataset(),i=r.data||(r.data=[]);n._data!==i&&(n._data&&tt(n._data,n),i&&Object.isExtensible(i)&&(e=n,(t=i)._chartjs?t._chartjs.listeners.push(e):(Object.defineProperty(t,"_chartjs",{configurable:!0,enumerable:!1,value:{listeners:[e]}}),Q.forEach((function(e){var n="onData"+e.charAt(0).toUpperCase()+e.slice(1),r=t[e];Object.defineProperty(t,e,{configurable:!0,enumerable:!1,value:function(){var e=Array.prototype.slice.call(arguments),i=r.apply(this,e);return Y.each(t._chartjs.listeners,(function(t){"function"==typeof t[n]&&t[n].apply(t,e)})),i}})})))),n._data=i),n.resyncElements()},_configure:function(){this._config=Y.merge({},[this.chart.options.datasets[this._type],this.getDataset()],{merger:function(t,e,n){"_meta"!==t&&"data"!==t&&Y._merger(t,e,n)}})},_update:function(t){this._configure(),this._cachedDataOpts=null,this.update(t)},update:Y.noop,transition:function(t){for(var e=this.getMeta(),n=e.data||[],r=n.length,i=0;i<r;++i)n[i].transition(t);e.dataset&&e.dataset.transition(t)},draw:function(){var t=this.getMeta(),e=t.data||[],n=e.length,r=0;for(t.dataset&&t.dataset.draw();r<n;++r)e[r].draw()},getStyle:function(t){var e,n=this.getMeta(),r=n.dataset;return this._configure(),r&&void 0===t?e=this._resolveDatasetElementOptions(r||{}):(t=t||0,e=this._resolveDataElementOptions(n.data[t]||{},t)),!1!==e.fill&&null!==e.fill||(e.backgroundColor=e.borderColor),e},_resolveDatasetElementOptions:function(t,e){var n,r,i,a,o=this,s=o.chart,l=o._config,u=t.custom||{},c=s.options.elements[o.datasetElementType.prototype._type]||{},h=o._datasetElementOptions,d={},f={chart:s,dataset:o.getDataset(),datasetIndex:o.index,hover:e};for(n=0,r=h.length;n<r;++n)i=h[n],a=e?"hover"+i.charAt(0).toUpperCase()+i.slice(1):i,d[i]=$([u[a],l[a],c[a]],f);return d},_resolveDataElementOptions:function(t,e){var n=this,r=t&&t.custom,i=n._cachedDataOpts;if(i&&!r)return i;var a,o,s,l,u=n.chart,c=n._config,h=u.options.elements[n.dataElementType.prototype._type]||{},d=n._dataElementOptions,f={},p={chart:u,dataIndex:e,dataset:n.getDataset(),datasetIndex:n.index},g={cacheable:!r};if(r=r||{},Y.isArray(d))for(o=0,s=d.length;o<s;++o)f[l=d[o]]=$([r[l],c[l],h[l]],p,e,g);else for(o=0,s=(a=Object.keys(d)).length;o<s;++o)f[l=a[o]]=$([r[l],c[d[l]],c[l],h[l]],p,e,g);return g.cacheable&&(n._cachedDataOpts=Object.freeze(f)),f},removeHoverStyle:function(t){Y.merge(t._model,t.$previousStyle||{}),delete t.$previousStyle},setHoverStyle:function(t){var e=this.chart.data.datasets[t._datasetIndex],n=t._index,r=t.custom||{},i=t._model,a=Y.getHoverColor;t.$previousStyle={backgroundColor:i.backgroundColor,borderColor:i.borderColor,borderWidth:i.borderWidth},i.backgroundColor=$([r.hoverBackgroundColor,e.hoverBackgroundColor,a(i.backgroundColor)],void 0,n),i.borderColor=$([r.hoverBorderColor,e.hoverBorderColor,a(i.borderColor)],void 0,n),i.borderWidth=$([r.hoverBorderWidth,e.hoverBorderWidth,i.borderWidth],void 0,n)},_removeDatasetHoverStyle:function(){var t=this.getMeta().dataset;t&&this.removeHoverStyle(t)},_setDatasetHoverStyle:function(){var t,e,n,r,i,a,o=this.getMeta().dataset,s={};if(o){for(a=o._model,i=this._resolveDatasetElementOptions(o,!0),t=0,e=(r=Object.keys(i)).length;t<e;++t)s[n=r[t]]=a[n],a[n]=i[n];o.$previousStyle=s}},resyncElements:function(){var t=this.getMeta(),e=this.getDataset().data,n=t.data.length,r=e.length;r<n?t.data.splice(r,n-r):r>n&&this.insertElements(n,r-n)},insertElements:function(t,e){for(var n=0;n<e;++n)this.addElementAndReset(t+n)},onDataPush:function(){var t=arguments.length;this.insertElements(this.getDataset().data.length-t,t)},onDataPop:function(){this.getMeta().data.pop()},onDataShift:function(){this.getMeta().data.shift()},onDataSplice:function(t,e){this.getMeta().data.splice(t,e),this.insertElements(t,arguments.length-2)},onDataUnshift:function(){this.insertElements(0,arguments.length)}}),et.extend=Y.inherits;var nt=et,rt=2*Math.PI;function it(t,e){var n=e.startAngle,r=e.endAngle,i=e.pixelMargin,a=i/e.outerRadius,o=e.x,s=e.y;t.beginPath(),t.arc(o,s,e.outerRadius,n-a,r+a),e.innerRadius>i?(a=i/e.innerRadius,t.arc(o,s,e.innerRadius-i,r+a,n-a,!0)):t.arc(o,s,i,r+Math.PI/2,n-Math.PI/2),t.closePath(),t.clip()}function at(t,e,n){var r="inner"===e.borderAlign;r?(t.lineWidth=2*e.borderWidth,t.lineJoin="round"):(t.lineWidth=e.borderWidth,t.lineJoin="bevel"),n.fullCircles&&function(t,e,n,r){var i,a=n.endAngle;for(r&&(n.endAngle=n.startAngle+rt,it(t,n),n.endAngle=a,n.endAngle===n.startAngle&&n.fullCircles&&(n.endAngle+=rt,n.fullCircles--)),t.beginPath(),t.arc(n.x,n.y,n.innerRadius,n.startAngle+rt,n.startAngle,!0),i=0;i<n.fullCircles;++i)t.stroke();for(t.beginPath(),t.arc(n.x,n.y,e.outerRadius,n.startAngle,n.startAngle+rt),i=0;i<n.fullCircles;++i)t.stroke()}(t,e,n,r),r&&it(t,n),t.beginPath(),t.arc(n.x,n.y,e.outerRadius,n.startAngle,n.endAngle),t.arc(n.x,n.y,n.innerRadius,n.endAngle,n.startAngle,!0),t.closePath(),t.stroke()}N._set("global",{elements:{arc:{backgroundColor:N.global.defaultColor,borderColor:"#fff",borderWidth:2,borderAlign:"center"}}});var ot=K.extend({_type:"arc",inLabelRange:function(t){var e=this._view;return!!e&&Math.pow(t-e.x,2)<Math.pow(e.radius+e.hoverRadius,2)},inRange:function(t,e){var n=this._view;if(n){for(var r=Y.getAngleFromPoint(n,{x:t,y:e}),i=r.angle,a=r.distance,o=n.startAngle,s=n.endAngle;s<o;)s+=rt;for(;i>s;)i-=rt;for(;i<o;)i+=rt;var l=i>=o&&i<=s,u=a>=n.innerRadius&&a<=n.outerRadius;return l&&u}return!1},getCenterPoint:function(){var t=this._view,e=(t.startAngle+t.endAngle)/2,n=(t.innerRadius+t.outerRadius)/2;return{x:t.x+Math.cos(e)*n,y:t.y+Math.sin(e)*n}},getArea:function(){var t=this._view;return Math.PI*((t.endAngle-t.startAngle)/(2*Math.PI))*(Math.pow(t.outerRadius,2)-Math.pow(t.innerRadius,2))},tooltipPosition:function(){var t=this._view,e=t.startAngle+(t.endAngle-t.startAngle)/2,n=(t.outerRadius-t.innerRadius)/2+t.innerRadius;return{x:t.x+Math.cos(e)*n,y:t.y+Math.sin(e)*n}},draw:function(){var t,e=this._chart.ctx,n=this._view,r="inner"===n.borderAlign?.33:0,i={x:n.x,y:n.y,innerRadius:n.innerRadius,outerRadius:Math.max(n.outerRadius-r,0),pixelMargin:r,startAngle:n.startAngle,endAngle:n.endAngle,fullCircles:Math.floor(n.circumference/rt)};if(e.save(),e.fillStyle=n.backgroundColor,e.strokeStyle=n.borderColor,i.fullCircles){for(i.endAngle=i.startAngle+rt,e.beginPath(),e.arc(i.x,i.y,i.outerRadius,i.startAngle,i.endAngle),e.arc(i.x,i.y,i.innerRadius,i.endAngle,i.startAngle,!0),e.closePath(),t=0;t<i.fullCircles;++t)e.fill();i.endAngle=i.startAngle+n.circumference%rt}e.beginPath(),e.arc(i.x,i.y,i.outerRadius,i.startAngle,i.endAngle),e.arc(i.x,i.y,i.innerRadius,i.endAngle,i.startAngle,!0),e.closePath(),e.fill(),n.borderWidth&&at(e,n,i),e.restore()}}),st=Y.valueOrDefault,lt=N.global.defaultColor;N._set("global",{elements:{line:{tension:.4,backgroundColor:lt,borderWidth:3,borderColor:lt,borderCapStyle:"butt",borderDash:[],borderDashOffset:0,borderJoinStyle:"miter",capBezierPoints:!0,fill:!0}}});var ut=K.extend({_type:"line",draw:function(){var t,e,n,r=this,i=r._view,a=r._chart.ctx,o=i.spanGaps,s=r._children.slice(),l=N.global,u=l.elements.line,c=-1,h=r._loop;if(s.length){if(r._loop){for(t=0;t<s.length;++t)if(e=Y.previousItem(s,t),!s[t]._view.skip&&e._view.skip){s=s.slice(t).concat(s.slice(0,t)),h=o;break}h&&s.push(s[0])}for(a.save(),a.lineCap=i.borderCapStyle||u.borderCapStyle,a.setLineDash&&a.setLineDash(i.borderDash||u.borderDash),a.lineDashOffset=st(i.borderDashOffset,u.borderDashOffset),a.lineJoin=i.borderJoinStyle||u.borderJoinStyle,a.lineWidth=st(i.borderWidth,u.borderWidth),a.strokeStyle=i.borderColor||l.defaultColor,a.beginPath(),(n=s[0]._view).skip||(a.moveTo(n.x,n.y),c=0),t=1;t<s.length;++t)n=s[t]._view,e=-1===c?Y.previousItem(s,t):s[c],n.skip||(c!==t-1&&!o||-1===c?a.moveTo(n.x,n.y):Y.canvas.lineTo(a,e._view,n),c=t);h&&a.closePath(),a.stroke(),a.restore()}}}),ct=Y.valueOrDefault,ht=N.global.defaultColor;function dt(t){var e=this._view;return!!e&&Math.abs(t-e.x)<e.radius+e.hitRadius}N._set("global",{elements:{point:{radius:3,pointStyle:"circle",backgroundColor:ht,borderColor:ht,borderWidth:1,hitRadius:1,hoverRadius:4,hoverBorderWidth:1}}});var ft=K.extend({_type:"point",inRange:function(t,e){var n=this._view;return!!n&&Math.pow(t-n.x,2)+Math.pow(e-n.y,2)<Math.pow(n.hitRadius+n.radius,2)},inLabelRange:dt,inXRange:dt,inYRange:function(t){var e=this._view;return!!e&&Math.abs(t-e.y)<e.radius+e.hitRadius},getCenterPoint:function(){var t=this._view;return{x:t.x,y:t.y}},getArea:function(){return Math.PI*Math.pow(this._view.radius,2)},tooltipPosition:function(){var t=this._view;return{x:t.x,y:t.y,padding:t.radius+t.borderWidth}},draw:function(t){var e=this._view,n=this._chart.ctx,r=e.pointStyle,i=e.rotation,a=e.radius,o=e.x,s=e.y,l=N.global,u=l.defaultColor;e.skip||(void 0===t||Y.canvas._isPointInArea(e,t))&&(n.strokeStyle=e.borderColor||u,n.lineWidth=ct(e.borderWidth,l.elements.point.borderWidth),n.fillStyle=e.backgroundColor||u,Y.canvas.drawPoint(n,r,a,o,s,i))}}),pt=N.global.defaultColor;function gt(t){return t&&void 0!==t.width}function mt(t){var e,n,r,i,a;return gt(t)?(a=t.width/2,e=t.x-a,n=t.x+a,r=Math.min(t.y,t.base),i=Math.max(t.y,t.base)):(a=t.height/2,e=Math.min(t.x,t.base),n=Math.max(t.x,t.base),r=t.y-a,i=t.y+a),{left:e,top:r,right:n,bottom:i}}function vt(t,e,n){return t===e?n:t===n?e:t}function yt(t,e,n){var r,i,a,o,s=t.borderWidth,l=function(t){var e=t.borderSkipped,n={};return e?(t.horizontal?t.base>t.x&&(e=vt(e,"left","right")):t.base<t.y&&(e=vt(e,"bottom","top")),n[e]=!0,n):n}(t);return Y.isObject(s)?(r=+s.top||0,i=+s.right||0,a=+s.bottom||0,o=+s.left||0):r=i=a=o=+s||0,{t:l.top||r<0?0:r>n?n:r,r:l.right||i<0?0:i>e?e:i,b:l.bottom||a<0?0:a>n?n:a,l:l.left||o<0?0:o>e?e:o}}function bt(t,e,n){var r=null===e,i=null===n,a=!(!t||r&&i)&&mt(t);return a&&(r||e>=a.left&&e<=a.right)&&(i||n>=a.top&&n<=a.bottom)}N._set("global",{elements:{rectangle:{backgroundColor:pt,borderColor:pt,borderSkipped:"bottom",borderWidth:0}}});var xt=K.extend({_type:"rectangle",draw:function(){var t=this._chart.ctx,e=this._view,n=function(t){var e=mt(t),n=e.right-e.left,r=e.bottom-e.top,i=yt(t,n/2,r/2);return{outer:{x:e.left,y:e.top,w:n,h:r},inner:{x:e.left+i.l,y:e.top+i.t,w:n-i.l-i.r,h:r-i.t-i.b}}}(e),r=n.outer,i=n.inner;t.fillStyle=e.backgroundColor,t.fillRect(r.x,r.y,r.w,r.h),r.w===i.w&&r.h===i.h||(t.save(),t.beginPath(),t.rect(r.x,r.y,r.w,r.h),t.clip(),t.fillStyle=e.borderColor,t.rect(i.x,i.y,i.w,i.h),t.fill("evenodd"),t.restore())},height:function(){var t=this._view;return t.base-t.y},inRange:function(t,e){return bt(this._view,t,e)},inLabelRange:function(t,e){var n=this._view;return gt(n)?bt(n,t,null):bt(n,null,e)},inXRange:function(t){return bt(this._view,t,null)},inYRange:function(t){return bt(this._view,null,t)},getCenterPoint:function(){var t,e,n=this._view;return gt(n)?(t=n.x,e=(n.y+n.base)/2):(t=(n.x+n.base)/2,e=n.y),{x:t,y:e}},getArea:function(){var t=this._view;return gt(t)?t.width*Math.abs(t.y-t.base):t.height*Math.abs(t.x-t.base)},tooltipPosition:function(){var t=this._view;return{x:t.x,y:t.y}}}),_t={},wt=ot,kt=ut,Mt=ft,St=xt;_t.Arc=wt,_t.Line=kt,_t.Point=Mt,_t.Rectangle=St;var Dt=Y._deprecated,Ct=Y.valueOrDefault;function Ot(t,e,n){var r,i,a=n.barThickness,o=e.stackCount,s=e.pixels[t],l=Y.isNullOrUndef(a)?function(t,e){var n,r,i,a,o=t._length;for(i=1,a=e.length;i<a;++i)o=Math.min(o,Math.abs(e[i]-e[i-1]));for(i=0,a=t.getTicks().length;i<a;++i)r=t.getPixelForTick(i),o=i>0?Math.min(o,Math.abs(r-n)):o,n=r;return o}(e.scale,e.pixels):-1;return Y.isNullOrUndef(a)?(r=l*n.categoryPercentage,i=n.barPercentage):(r=a*o,i=1),{chunk:r/o,ratio:i,start:s-r/2}}N._set("bar",{hover:{mode:"label"},scales:{xAxes:[{type:"category",offset:!0,gridLines:{offsetGridLines:!0}}],yAxes:[{type:"linear"}]}}),N._set("global",{datasets:{bar:{categoryPercentage:.8,barPercentage:.9}}});var Tt=nt.extend({dataElementType:_t.Rectangle,_dataElementOptions:["backgroundColor","borderColor","borderSkipped","borderWidth","barPercentage","barThickness","categoryPercentage","maxBarThickness","minBarLength"],initialize:function(){var t,e,n=this;nt.prototype.initialize.apply(n,arguments),(t=n.getMeta()).stack=n.getDataset().stack,t.bar=!0,e=n._getIndexScale().options,Dt("bar chart",e.barPercentage,"scales.[x/y]Axes.barPercentage","dataset.barPercentage"),Dt("bar chart",e.barThickness,"scales.[x/y]Axes.barThickness","dataset.barThickness"),Dt("bar chart",e.categoryPercentage,"scales.[x/y]Axes.categoryPercentage","dataset.categoryPercentage"),Dt("bar chart",n._getValueScale().options.minBarLength,"scales.[x/y]Axes.minBarLength","dataset.minBarLength"),Dt("bar chart",e.maxBarThickness,"scales.[x/y]Axes.maxBarThickness","dataset.maxBarThickness")},update:function(t){var e,n,r=this.getMeta().data;for(this._ruler=this.getRuler(),e=0,n=r.length;e<n;++e)this.updateElement(r[e],e,t)},updateElement:function(t,e,n){var r=this,i=r.getMeta(),a=r.getDataset(),o=r._resolveDataElementOptions(t,e);t._xScale=r.getScaleForId(i.xAxisID),t._yScale=r.getScaleForId(i.yAxisID),t._datasetIndex=r.index,t._index=e,t._model={backgroundColor:o.backgroundColor,borderColor:o.borderColor,borderSkipped:o.borderSkipped,borderWidth:o.borderWidth,datasetLabel:a.label,label:r.chart.data.labels[e]},Y.isArray(a.data[e])&&(t._model.borderSkipped=null),r._updateElementGeometry(t,e,n,o),t.pivot()},_updateElementGeometry:function(t,e,n,r){var i=this,a=t._model,o=i._getValueScale(),s=o.getBasePixel(),l=o.isHorizontal(),u=i._ruler||i.getRuler(),c=i.calculateBarValuePixels(i.index,e,r),h=i.calculateBarIndexPixels(i.index,e,u,r);a.horizontal=l,a.base=n?s:c.base,a.x=l?n?s:c.head:h.center,a.y=l?h.center:n?s:c.head,a.height=l?h.size:void 0,a.width=l?void 0:h.size},_getStacks:function(t){var e,n,r=this._getIndexScale(),i=r._getMatchingVisibleMetas(this._type),a=r.options.stacked,o=i.length,s=[];for(e=0;e<o&&(n=i[e],(!1===a||-1===s.indexOf(n.stack)||void 0===a&&void 0===n.stack)&&s.push(n.stack),n.index!==t);++e);return s},getStackCount:function(){return this._getStacks().length},getStackIndex:function(t,e){var n=this._getStacks(t),r=void 0!==e?n.indexOf(e):-1;return-1===r?n.length-1:r},getRuler:function(){var t,e,n=this._getIndexScale(),r=[];for(t=0,e=this.getMeta().data.length;t<e;++t)r.push(n.getPixelForValue(null,t,this.index));return{pixels:r,start:n._startPixel,end:n._endPixel,stackCount:this.getStackCount(),scale:n}},calculateBarValuePixels:function(t,e,n){var r,i,a,o,s,l,u,c=this.chart,h=this._getValueScale(),d=h.isHorizontal(),f=c.data.datasets,p=h._getMatchingVisibleMetas(this._type),g=h._parseValue(f[t].data[e]),m=n.minBarLength,v=h.options.stacked,y=this.getMeta().stack,b=void 0===g.start?0:g.max>=0&&g.min>=0?g.min:g.max,x=void 0===g.start?g.end:g.max>=0&&g.min>=0?g.max-g.min:g.min-g.max,_=p.length;if(v||void 0===v&&void 0!==y)for(r=0;r<_&&(i=p[r]).index!==t;++r)i.stack===y&&(a=void 0===(u=h._parseValue(f[i.index].data[e])).start?u.end:u.min>=0&&u.max>=0?u.max:u.min,(g.min<0&&a<0||g.max>=0&&a>0)&&(b+=a));return o=h.getPixelForValue(b),l=(s=h.getPixelForValue(b+x))-o,void 0!==m&&Math.abs(l)<m&&(l=m,s=x>=0&&!d||x<0&&d?o-m:o+m),{size:l,base:o,head:s,center:s+l/2}},calculateBarIndexPixels:function(t,e,n,r){var i="flex"===r.barThickness?function(t,e,n){var r,i=e.pixels,a=i[t],o=t>0?i[t-1]:null,s=t<i.length-1?i[t+1]:null,l=n.categoryPercentage;return null===o&&(o=a-(null===s?e.end-e.start:s-a)),null===s&&(s=a+a-o),r=a-(a-Math.min(o,s))/2*l,{chunk:Math.abs(s-o)/2*l/e.stackCount,ratio:n.barPercentage,start:r}}(e,n,r):Ot(e,n,r),a=this.getStackIndex(t,this.getMeta().stack),o=i.start+i.chunk*a+i.chunk/2,s=Math.min(Ct(r.maxBarThickness,1/0),i.chunk*i.ratio);return{base:o-s/2,head:o+s/2,center:o,size:s}},draw:function(){var t=this.chart,e=this._getValueScale(),n=this.getMeta().data,r=this.getDataset(),i=n.length,a=0;for(Y.canvas.clipArea(t.ctx,t.chartArea);a<i;++a){var o=e._parseValue(r.data[a]);isNaN(o.min)||isNaN(o.max)||n[a].draw()}Y.canvas.unclipArea(t.ctx)},_resolveDataElementOptions:function(){var t=this,e=Y.extend({},nt.prototype._resolveDataElementOptions.apply(t,arguments)),n=t._getIndexScale().options,r=t._getValueScale().options;return e.barPercentage=Ct(n.barPercentage,e.barPercentage),e.barThickness=Ct(n.barThickness,e.barThickness),e.categoryPercentage=Ct(n.categoryPercentage,e.categoryPercentage),e.maxBarThickness=Ct(n.maxBarThickness,e.maxBarThickness),e.minBarLength=Ct(r.minBarLength,e.minBarLength),e}}),Pt=Y.valueOrDefault,At=Y.options.resolve;N._set("bubble",{hover:{mode:"single"},scales:{xAxes:[{type:"linear",position:"bottom",id:"x-axis-0"}],yAxes:[{type:"linear",position:"left",id:"y-axis-0"}]},tooltips:{callbacks:{title:function(){return""},label:function(t,e){var n=e.datasets[t.datasetIndex].label||"",r=e.datasets[t.datasetIndex].data[t.index];return n+": ("+t.xLabel+", "+t.yLabel+", "+r.r+")"}}}});var It=nt.extend({dataElementType:_t.Point,_dataElementOptions:["backgroundColor","borderColor","borderWidth","hoverBackgroundColor","hoverBorderColor","hoverBorderWidth","hoverRadius","hitRadius","pointStyle","rotation"],update:function(t){var e=this,n=e.getMeta().data;Y.each(n,(function(n,r){e.updateElement(n,r,t)}))},updateElement:function(t,e,n){var r=this,i=r.getMeta(),a=t.custom||{},o=r.getScaleForId(i.xAxisID),s=r.getScaleForId(i.yAxisID),l=r._resolveDataElementOptions(t,e),u=r.getDataset().data[e],c=r.index,h=n?o.getPixelForDecimal(.5):o.getPixelForValue("object"==typeof u?u:NaN,e,c),d=n?s.getBasePixel():s.getPixelForValue(u,e,c);t._xScale=o,t._yScale=s,t._options=l,t._datasetIndex=c,t._index=e,t._model={backgroundColor:l.backgroundColor,borderColor:l.borderColor,borderWidth:l.borderWidth,hitRadius:l.hitRadius,pointStyle:l.pointStyle,rotation:l.rotation,radius:n?0:l.radius,skip:a.skip||isNaN(h)||isNaN(d),x:h,y:d},t.pivot()},setHoverStyle:function(t){var e=t._model,n=t._options,r=Y.getHoverColor;t.$previousStyle={backgroundColor:e.backgroundColor,borderColor:e.borderColor,borderWidth:e.borderWidth,radius:e.radius},e.backgroundColor=Pt(n.hoverBackgroundColor,r(n.backgroundColor)),e.borderColor=Pt(n.hoverBorderColor,r(n.borderColor)),e.borderWidth=Pt(n.hoverBorderWidth,n.borderWidth),e.radius=n.radius+n.hoverRadius},_resolveDataElementOptions:function(t,e){var n=this,r=n.chart,i=n.getDataset(),a=t.custom||{},o=i.data[e]||{},s=nt.prototype._resolveDataElementOptions.apply(n,arguments),l={chart:r,dataIndex:e,dataset:i,datasetIndex:n.index};return n._cachedDataOpts===s&&(s=Y.extend({},s)),s.radius=At([a.radius,o.r,n._config.radius,r.options.elements.point.radius],l,e),s}}),Ft=Y.valueOrDefault,Lt=Math.PI,Rt=2*Lt,Nt=Lt/2;N._set("doughnut",{animation:{animateRotate:!0,animateScale:!1},hover:{mode:"single"},legendCallback:function(t){var e,n,r,i=document.createElement("ul"),a=t.data,o=a.datasets,s=a.labels;if(i.setAttribute("class",t.id+"-legend"),o.length)for(e=0,n=o[0].data.length;e<n;++e)(r=i.appendChild(document.createElement("li"))).appendChild(document.createElement("span")).style.backgroundColor=o[0].backgroundColor[e],s[e]&&r.appendChild(document.createTextNode(s[e]));return i.outerHTML},legend:{labels:{generateLabels:function(t){var e=t.data;return e.labels.length&&e.datasets.length?e.labels.map((function(n,r){var i=t.getDatasetMeta(0),a=i.controller.getStyle(r);return{text:n,fillStyle:a.backgroundColor,strokeStyle:a.borderColor,lineWidth:a.borderWidth,hidden:isNaN(e.datasets[0].data[r])||i.data[r].hidden,index:r}})):[]}},onClick:function(t,e){var n,r,i,a=e.index,o=this.chart;for(n=0,r=(o.data.datasets||[]).length;n<r;++n)(i=o.getDatasetMeta(n)).data[a]&&(i.data[a].hidden=!i.data[a].hidden);o.update()}},cutoutPercentage:50,rotation:-Nt,circumference:Rt,tooltips:{callbacks:{title:function(){return""},label:function(t,e){var n=e.labels[t.index],r=": "+e.datasets[t.datasetIndex].data[t.index];return Y.isArray(n)?(n=n.slice())[0]+=r:n+=r,n}}}});var Et=nt.extend({dataElementType:_t.Arc,linkScales:Y.noop,_dataElementOptions:["backgroundColor","borderColor","borderWidth","borderAlign","hoverBackgroundColor","hoverBorderColor","hoverBorderWidth"],getRingIndex:function(t){for(var e=0,n=0;n<t;++n)this.chart.isDatasetVisible(n)&&++e;return e},update:function(t){var e,n,r,i,a=this,o=a.chart,s=o.chartArea,l=o.options,u=1,c=1,h=0,d=0,f=a.getMeta(),p=f.data,g=l.cutoutPercentage/100||0,m=l.circumference,v=a._getRingWeight(a.index);if(m<Rt){var y=l.rotation%Rt,b=(y+=y>=Lt?-Rt:y<-Lt?Rt:0)+m,x=Math.cos(y),_=Math.sin(y),w=Math.cos(b),k=Math.sin(b),M=y<=0&&b>=0||b>=Rt,S=y<=Nt&&b>=Nt||b>=Rt+Nt,D=y<=-Nt&&b>=-Nt||b>=Lt+Nt,C=y===-Lt||b>=Lt?-1:Math.min(x,x*g,w,w*g),O=D?-1:Math.min(_,_*g,k,k*g),T=M?1:Math.max(x,x*g,w,w*g),P=S?1:Math.max(_,_*g,k,k*g);u=(T-C)/2,c=(P-O)/2,h=-(T+C)/2,d=-(P+O)/2}for(r=0,i=p.length;r<i;++r)p[r]._options=a._resolveDataElementOptions(p[r],r);for(o.borderWidth=a.getMaxBorderWidth(),e=(s.right-s.left-o.borderWidth)/u,n=(s.bottom-s.top-o.borderWidth)/c,o.outerRadius=Math.max(Math.min(e,n)/2,0),o.innerRadius=Math.max(o.outerRadius*g,0),o.radiusLength=(o.outerRadius-o.innerRadius)/(a._getVisibleDatasetWeightTotal()||1),o.offsetX=h*o.outerRadius,o.offsetY=d*o.outerRadius,f.total=a.calculateTotal(),a.outerRadius=o.outerRadius-o.radiusLength*a._getRingWeightOffset(a.index),a.innerRadius=Math.max(a.outerRadius-o.radiusLength*v,0),r=0,i=p.length;r<i;++r)a.updateElement(p[r],r,t)},updateElement:function(t,e,n){var r=this,i=r.chart,a=i.chartArea,o=i.options,s=o.animation,l=(a.left+a.right)/2,u=(a.top+a.bottom)/2,c=o.rotation,h=o.rotation,d=r.getDataset(),f=n&&s.animateRotate?0:t.hidden?0:r.calculateCircumference(d.data[e])*(o.circumference/Rt),p=n&&s.animateScale?0:r.innerRadius,g=n&&s.animateScale?0:r.outerRadius,m=t._options||{};Y.extend(t,{_datasetIndex:r.index,_index:e,_model:{backgroundColor:m.backgroundColor,borderColor:m.borderColor,borderWidth:m.borderWidth,borderAlign:m.borderAlign,x:l+i.offsetX,y:u+i.offsetY,startAngle:c,endAngle:h,circumference:f,outerRadius:g,innerRadius:p,label:Y.valueAtIndexOrDefault(d.label,e,i.data.labels[e])}});var v=t._model;n&&s.animateRotate||(v.startAngle=0===e?o.rotation:r.getMeta().data[e-1]._model.endAngle,v.endAngle=v.startAngle+v.circumference),t.pivot()},calculateTotal:function(){var t,e=this.getDataset(),n=this.getMeta(),r=0;return Y.each(n.data,(function(n,i){t=e.data[i],isNaN(t)||n.hidden||(r+=Math.abs(t))})),r},calculateCircumference:function(t){var e=this.getMeta().total;return e>0&&!isNaN(t)?Rt*(Math.abs(t)/e):0},getMaxBorderWidth:function(t){var e,n,r,i,a,o,s,l,u=0,c=this.chart;if(!t)for(e=0,n=c.data.datasets.length;e<n;++e)if(c.isDatasetVisible(e)){t=(r=c.getDatasetMeta(e)).data,e!==this.index&&(a=r.controller);break}if(!t)return 0;for(e=0,n=t.length;e<n;++e)i=t[e],a?(a._configure(),o=a._resolveDataElementOptions(i,e)):o=i._options,"inner"!==o.borderAlign&&(s=o.borderWidth,u=(l=o.hoverBorderWidth)>(u=s>u?s:u)?l:u);return u},setHoverStyle:function(t){var e=t._model,n=t._options,r=Y.getHoverColor;t.$previousStyle={backgroundColor:e.backgroundColor,borderColor:e.borderColor,borderWidth:e.borderWidth},e.backgroundColor=Ft(n.hoverBackgroundColor,r(n.backgroundColor)),e.borderColor=Ft(n.hoverBorderColor,r(n.borderColor)),e.borderWidth=Ft(n.hoverBorderWidth,n.borderWidth)},_getRingWeightOffset:function(t){for(var e=0,n=0;n<t;++n)this.chart.isDatasetVisible(n)&&(e+=this._getRingWeight(n));return e},_getRingWeight:function(t){return Math.max(Ft(this.chart.data.datasets[t].weight,1),0)},_getVisibleDatasetWeightTotal:function(){return this._getRingWeightOffset(this.chart.data.datasets.length)}});N._set("horizontalBar",{hover:{mode:"index",axis:"y"},scales:{xAxes:[{type:"linear",position:"bottom"}],yAxes:[{type:"category",position:"left",offset:!0,gridLines:{offsetGridLines:!0}}]},elements:{rectangle:{borderSkipped:"left"}},tooltips:{mode:"index",axis:"y"}}),N._set("global",{datasets:{horizontalBar:{categoryPercentage:.8,barPercentage:.9}}});var jt=Tt.extend({_getValueScaleId:function(){return this.getMeta().xAxisID},_getIndexScaleId:function(){return this.getMeta().yAxisID}}),zt=Y.valueOrDefault,Wt=Y.options.resolve,Yt=Y.canvas._isPointInArea;function Vt(t,e){var n=t&&t.options.ticks||{},r=n.reverse,i=void 0===n.min?e:0,a=void 0===n.max?e:0;return{start:r?a:i,end:r?i:a}}function Bt(t,e,n){var r=n/2,i=Vt(t,r),a=Vt(e,r);return{top:a.end,right:i.end,bottom:a.start,left:i.start}}function Ht(t){var e,n,r,i;return Y.isObject(t)?(e=t.top,n=t.right,r=t.bottom,i=t.left):e=n=r=i=t,{top:e,right:n,bottom:r,left:i}}N._set("line",{showLines:!0,spanGaps:!1,hover:{mode:"label"},scales:{xAxes:[{type:"category",id:"x-axis-0"}],yAxes:[{type:"linear",id:"y-axis-0"}]}});var Ut=nt.extend({datasetElementType:_t.Line,dataElementType:_t.Point,_datasetElementOptions:["backgroundColor","borderCapStyle","borderColor","borderDash","borderDashOffset","borderJoinStyle","borderWidth","cubicInterpolationMode","fill"],_dataElementOptions:{backgroundColor:"pointBackgroundColor",borderColor:"pointBorderColor",borderWidth:"pointBorderWidth",hitRadius:"pointHitRadius",hoverBackgroundColor:"pointHoverBackgroundColor",hoverBorderColor:"pointHoverBorderColor",hoverBorderWidth:"pointHoverBorderWidth",hoverRadius:"pointHoverRadius",pointStyle:"pointStyle",radius:"pointRadius",rotation:"pointRotation"},update:function(t){var e,n,r=this,i=r.getMeta(),a=i.dataset,o=i.data||[],s=r.chart.options,l=r._config,u=r._showLine=zt(l.showLine,s.showLines);for(r._xScale=r.getScaleForId(i.xAxisID),r._yScale=r.getScaleForId(i.yAxisID),u&&(void 0!==l.tension&&void 0===l.lineTension&&(l.lineTension=l.tension),a._scale=r._yScale,a._datasetIndex=r.index,a._children=o,a._model=r._resolveDatasetElementOptions(a),a.pivot()),e=0,n=o.length;e<n;++e)r.updateElement(o[e],e,t);for(u&&0!==a._model.tension&&r.updateBezierControlPoints(),e=0,n=o.length;e<n;++e)o[e].pivot()},updateElement:function(t,e,n){var r,i,a=this,o=a.getMeta(),s=t.custom||{},l=a.getDataset(),u=a.index,c=l.data[e],h=a._xScale,d=a._yScale,f=o.dataset._model,p=a._resolveDataElementOptions(t,e);r=h.getPixelForValue("object"==typeof c?c:NaN,e,u),i=n?d.getBasePixel():a.calculatePointY(c,e,u),t._xScale=h,t._yScale=d,t._options=p,t._datasetIndex=u,t._index=e,t._model={x:r,y:i,skip:s.skip||isNaN(r)||isNaN(i),radius:p.radius,pointStyle:p.pointStyle,rotation:p.rotation,backgroundColor:p.backgroundColor,borderColor:p.borderColor,borderWidth:p.borderWidth,tension:zt(s.tension,f?f.tension:0),steppedLine:!!f&&f.steppedLine,hitRadius:p.hitRadius}},_resolveDatasetElementOptions:function(t){var e=this,n=e._config,r=t.custom||{},i=e.chart.options,a=i.elements.line,o=nt.prototype._resolveDatasetElementOptions.apply(e,arguments);return o.spanGaps=zt(n.spanGaps,i.spanGaps),o.tension=zt(n.lineTension,a.tension),o.steppedLine=Wt([r.steppedLine,n.steppedLine,a.stepped]),o.clip=Ht(zt(n.clip,Bt(e._xScale,e._yScale,o.borderWidth))),o},calculatePointY:function(t,e,n){var r,i,a,o,s,l,u,c=this.chart,h=this._yScale,d=0,f=0;if(h.options.stacked){for(s=+h.getRightValue(t),u=(l=c._getSortedVisibleDatasetMetas()).length,r=0;r<u&&(a=l[r]).index!==n;++r)i=c.data.datasets[a.index],"line"===a.type&&a.yAxisID===h.id&&((o=+h.getRightValue(i.data[e]))<0?f+=o||0:d+=o||0);return s<0?h.getPixelForValue(f+s):h.getPixelForValue(d+s)}return h.getPixelForValue(t)},updateBezierControlPoints:function(){var t,e,n,r,i=this.chart,a=this.getMeta(),o=a.dataset._model,s=i.chartArea,l=a.data||[];function u(t,e,n){return Math.max(Math.min(t,n),e)}if(o.spanGaps&&(l=l.filter((function(t){return!t._model.skip}))),"monotone"===o.cubicInterpolationMode)Y.splineCurveMonotone(l);else for(t=0,e=l.length;t<e;++t)n=l[t]._model,r=Y.splineCurve(Y.previousItem(l,t)._model,n,Y.nextItem(l,t)._model,o.tension),n.controlPointPreviousX=r.previous.x,n.controlPointPreviousY=r.previous.y,n.controlPointNextX=r.next.x,n.controlPointNextY=r.next.y;if(i.options.elements.line.capBezierPoints)for(t=0,e=l.length;t<e;++t)n=l[t]._model,Yt(n,s)&&(t>0&&Yt(l[t-1]._model,s)&&(n.controlPointPreviousX=u(n.controlPointPreviousX,s.left,s.right),n.controlPointPreviousY=u(n.controlPointPreviousY,s.top,s.bottom)),t<l.length-1&&Yt(l[t+1]._model,s)&&(n.controlPointNextX=u(n.controlPointNextX,s.left,s.right),n.controlPointNextY=u(n.controlPointNextY,s.top,s.bottom)))},draw:function(){var t,e=this.chart,n=this.getMeta(),r=n.data||[],i=e.chartArea,a=e.canvas,o=0,s=r.length;for(this._showLine&&(t=n.dataset._model.clip,Y.canvas.clipArea(e.ctx,{left:!1===t.left?0:i.left-t.left,right:!1===t.right?a.width:i.right+t.right,top:!1===t.top?0:i.top-t.top,bottom:!1===t.bottom?a.height:i.bottom+t.bottom}),n.dataset.draw(),Y.canvas.unclipArea(e.ctx));o<s;++o)r[o].draw(i)},setHoverStyle:function(t){var e=t._model,n=t._options,r=Y.getHoverColor;t.$previousStyle={backgroundColor:e.backgroundColor,borderColor:e.borderColor,borderWidth:e.borderWidth,radius:e.radius},e.backgroundColor=zt(n.hoverBackgroundColor,r(n.backgroundColor)),e.borderColor=zt(n.hoverBorderColor,r(n.borderColor)),e.borderWidth=zt(n.hoverBorderWidth,n.borderWidth),e.radius=zt(n.hoverRadius,n.radius)}}),Gt=Y.options.resolve;N._set("polarArea",{scale:{type:"radialLinear",angleLines:{display:!1},gridLines:{circular:!0},pointLabels:{display:!1},ticks:{beginAtZero:!0}},animation:{animateRotate:!0,animateScale:!0},startAngle:-.5*Math.PI,legendCallback:function(t){var e,n,r,i=document.createElement("ul"),a=t.data,o=a.datasets,s=a.labels;if(i.setAttribute("class",t.id+"-legend"),o.length)for(e=0,n=o[0].data.length;e<n;++e)(r=i.appendChild(document.createElement("li"))).appendChild(document.createElement("span")).style.backgroundColor=o[0].backgroundColor[e],s[e]&&r.appendChild(document.createTextNode(s[e]));return i.outerHTML},legend:{labels:{generateLabels:function(t){var e=t.data;return e.labels.length&&e.datasets.length?e.labels.map((function(n,r){var i=t.getDatasetMeta(0),a=i.controller.getStyle(r);return{text:n,fillStyle:a.backgroundColor,strokeStyle:a.borderColor,lineWidth:a.borderWidth,hidden:isNaN(e.datasets[0].data[r])||i.data[r].hidden,index:r}})):[]}},onClick:function(t,e){var n,r,i,a=e.index,o=this.chart;for(n=0,r=(o.data.datasets||[]).length;n<r;++n)(i=o.getDatasetMeta(n)).data[a].hidden=!i.data[a].hidden;o.update()}},tooltips:{callbacks:{title:function(){return""},label:function(t,e){return e.labels[t.index]+": "+t.yLabel}}}});var qt=nt.extend({dataElementType:_t.Arc,linkScales:Y.noop,_dataElementOptions:["backgroundColor","borderColor","borderWidth","borderAlign","hoverBackgroundColor","hoverBorderColor","hoverBorderWidth"],_getIndexScaleId:function(){return this.chart.scale.id},_getValueScaleId:function(){return this.chart.scale.id},update:function(t){var e,n,r,i=this,a=i.getDataset(),o=i.getMeta(),s=i.chart.options.startAngle||0,l=i._starts=[],u=i._angles=[],c=o.data;for(i._updateRadius(),o.count=i.countVisibleElements(),e=0,n=a.data.length;e<n;e++)l[e]=s,r=i._computeAngle(e),u[e]=r,s+=r;for(e=0,n=c.length;e<n;++e)c[e]._options=i._resolveDataElementOptions(c[e],e),i.updateElement(c[e],e,t)},_updateRadius:function(){var t=this,e=t.chart,n=e.chartArea,r=e.options,i=Math.min(n.right-n.left,n.bottom-n.top);e.outerRadius=Math.max(i/2,0),e.innerRadius=Math.max(r.cutoutPercentage?e.outerRadius/100*r.cutoutPercentage:1,0),e.radiusLength=(e.outerRadius-e.innerRadius)/e.getVisibleDatasetCount(),t.outerRadius=e.outerRadius-e.radiusLength*t.index,t.innerRadius=t.outerRadius-e.radiusLength},updateElement:function(t,e,n){var r=this,i=r.chart,a=r.getDataset(),o=i.options,s=o.animation,l=i.scale,u=i.data.labels,c=l.xCenter,h=l.yCenter,d=o.startAngle,f=t.hidden?0:l.getDistanceFromCenterForValue(a.data[e]),p=r._starts[e],g=p+(t.hidden?0:r._angles[e]),m=s.animateScale?0:l.getDistanceFromCenterForValue(a.data[e]),v=t._options||{};Y.extend(t,{_datasetIndex:r.index,_index:e,_scale:l,_model:{backgroundColor:v.backgroundColor,borderColor:v.borderColor,borderWidth:v.borderWidth,borderAlign:v.borderAlign,x:c,y:h,innerRadius:0,outerRadius:n?m:f,startAngle:n&&s.animateRotate?d:p,endAngle:n&&s.animateRotate?d:g,label:Y.valueAtIndexOrDefault(u,e,u[e])}}),t.pivot()},countVisibleElements:function(){var t=this.getDataset(),e=this.getMeta(),n=0;return Y.each(e.data,(function(e,r){isNaN(t.data[r])||e.hidden||n++})),n},setHoverStyle:function(t){var e=t._model,n=t._options,r=Y.getHoverColor,i=Y.valueOrDefault;t.$previousStyle={backgroundColor:e.backgroundColor,borderColor:e.borderColor,borderWidth:e.borderWidth},e.backgroundColor=i(n.hoverBackgroundColor,r(n.backgroundColor)),e.borderColor=i(n.hoverBorderColor,r(n.borderColor)),e.borderWidth=i(n.hoverBorderWidth,n.borderWidth)},_computeAngle:function(t){var e=this,n=this.getMeta().count,r=e.getDataset(),i=e.getMeta();if(isNaN(r.data[t])||i.data[t].hidden)return 0;var a={chart:e.chart,dataIndex:t,dataset:r,datasetIndex:e.index};return Gt([e.chart.options.elements.arc.angle,2*Math.PI/n],a,t)}});N._set("pie",Y.clone(N.doughnut)),N._set("pie",{cutoutPercentage:0});var Kt=Et,Zt=Y.valueOrDefault;N._set("radar",{spanGaps:!1,scale:{type:"radialLinear"},elements:{line:{fill:"start",tension:0}}});var Xt=nt.extend({datasetElementType:_t.Line,dataElementType:_t.Point,linkScales:Y.noop,_datasetElementOptions:["backgroundColor","borderWidth","borderColor","borderCapStyle","borderDash","borderDashOffset","borderJoinStyle","fill"],_dataElementOptions:{backgroundColor:"pointBackgroundColor",borderColor:"pointBorderColor",borderWidth:"pointBorderWidth",hitRadius:"pointHitRadius",hoverBackgroundColor:"pointHoverBackgroundColor",hoverBorderColor:"pointHoverBorderColor",hoverBorderWidth:"pointHoverBorderWidth",hoverRadius:"pointHoverRadius",pointStyle:"pointStyle",radius:"pointRadius",rotation:"pointRotation"},_getIndexScaleId:function(){return this.chart.scale.id},_getValueScaleId:function(){return this.chart.scale.id},update:function(t){var e,n,r=this,i=r.getMeta(),a=i.dataset,o=i.data||[],s=r.chart.scale,l=r._config;for(void 0!==l.tension&&void 0===l.lineTension&&(l.lineTension=l.tension),a._scale=s,a._datasetIndex=r.index,a._children=o,a._loop=!0,a._model=r._resolveDatasetElementOptions(a),a.pivot(),e=0,n=o.length;e<n;++e)r.updateElement(o[e],e,t);for(r.updateBezierControlPoints(),e=0,n=o.length;e<n;++e)o[e].pivot()},updateElement:function(t,e,n){var r=this,i=t.custom||{},a=r.getDataset(),o=r.chart.scale,s=o.getPointPositionForValue(e,a.data[e]),l=r._resolveDataElementOptions(t,e),u=r.getMeta().dataset._model,c=n?o.xCenter:s.x,h=n?o.yCenter:s.y;t._scale=o,t._options=l,t._datasetIndex=r.index,t._index=e,t._model={x:c,y:h,skip:i.skip||isNaN(c)||isNaN(h),radius:l.radius,pointStyle:l.pointStyle,rotation:l.rotation,backgroundColor:l.backgroundColor,borderColor:l.borderColor,borderWidth:l.borderWidth,tension:Zt(i.tension,u?u.tension:0),hitRadius:l.hitRadius}},_resolveDatasetElementOptions:function(){var t=this,e=t._config,n=t.chart.options,r=nt.prototype._resolveDatasetElementOptions.apply(t,arguments);return r.spanGaps=Zt(e.spanGaps,n.spanGaps),r.tension=Zt(e.lineTension,n.elements.line.tension),r},updateBezierControlPoints:function(){var t,e,n,r,i=this.getMeta(),a=this.chart.chartArea,o=i.data||[];function s(t,e,n){return Math.max(Math.min(t,n),e)}for(i.dataset._model.spanGaps&&(o=o.filter((function(t){return!t._model.skip}))),t=0,e=o.length;t<e;++t)n=o[t]._model,r=Y.splineCurve(Y.previousItem(o,t,!0)._model,n,Y.nextItem(o,t,!0)._model,n.tension),n.controlPointPreviousX=s(r.previous.x,a.left,a.right),n.controlPointPreviousY=s(r.previous.y,a.top,a.bottom),n.controlPointNextX=s(r.next.x,a.left,a.right),n.controlPointNextY=s(r.next.y,a.top,a.bottom)},setHoverStyle:function(t){var e=t._model,n=t._options,r=Y.getHoverColor;t.$previousStyle={backgroundColor:e.backgroundColor,borderColor:e.borderColor,borderWidth:e.borderWidth,radius:e.radius},e.backgroundColor=Zt(n.hoverBackgroundColor,r(n.backgroundColor)),e.borderColor=Zt(n.hoverBorderColor,r(n.borderColor)),e.borderWidth=Zt(n.hoverBorderWidth,n.borderWidth),e.radius=Zt(n.hoverRadius,n.radius)}});N._set("scatter",{hover:{mode:"single"},scales:{xAxes:[{id:"x-axis-1",type:"linear",position:"bottom"}],yAxes:[{id:"y-axis-1",type:"linear",position:"left"}]},tooltips:{callbacks:{title:function(){return""},label:function(t){return"("+t.xLabel+", "+t.yLabel+")"}}}}),N._set("global",{datasets:{scatter:{showLine:!1}}});var Jt={bar:Tt,bubble:It,doughnut:Et,horizontalBar:jt,line:Ut,polarArea:qt,pie:Kt,radar:Xt,scatter:Ut};function $t(t,e){return t.native?{x:t.x,y:t.y}:Y.getRelativePosition(t,e)}function Qt(t,e){var n,r,i,a,o,s,l=t._getSortedVisibleDatasetMetas();for(r=0,a=l.length;r<a;++r)for(i=0,o=(n=l[r].data).length;i<o;++i)(s=n[i])._view.skip||e(s)}function te(t,e){var n=[];return Qt(t,(function(t){t.inRange(e.x,e.y)&&n.push(t)})),n}function ee(t,e,n,r){var i=Number.POSITIVE_INFINITY,a=[];return Qt(t,(function(t){if(!n||t.inRange(e.x,e.y)){var o=t.getCenterPoint(),s=r(e,o);s<i?(a=[t],i=s):s===i&&a.push(t)}})),a}function ne(t){var e=-1!==t.indexOf("x"),n=-1!==t.indexOf("y");return function(t,r){var i=e?Math.abs(t.x-r.x):0,a=n?Math.abs(t.y-r.y):0;return Math.sqrt(Math.pow(i,2)+Math.pow(a,2))}}function re(t,e,n){var r=$t(e,t);n.axis=n.axis||"x";var i=ne(n.axis),a=n.intersect?te(t,r):ee(t,r,!1,i),o=[];return a.length?(t._getSortedVisibleDatasetMetas().forEach((function(t){var e=t.data[a[0]._index];e&&!e._view.skip&&o.push(e)})),o):[]}var ie={modes:{single:function(t,e){var n=$t(e,t),r=[];return Qt(t,(function(t){if(t.inRange(n.x,n.y))return r.push(t),r})),r.slice(0,1)},label:re,index:re,dataset:function(t,e,n){var r=$t(e,t);n.axis=n.axis||"xy";var i=ne(n.axis),a=n.intersect?te(t,r):ee(t,r,!1,i);return a.length>0&&(a=t.getDatasetMeta(a[0]._datasetIndex).data),a},"x-axis":function(t,e){return re(t,e,{intersect:!1})},point:function(t,e){return te(t,$t(e,t))},nearest:function(t,e,n){var r=$t(e,t);n.axis=n.axis||"xy";var i=ne(n.axis);return ee(t,r,n.intersect,i)},x:function(t,e,n){var r=$t(e,t),i=[],a=!1;return Qt(t,(function(t){t.inXRange(r.x)&&i.push(t),t.inRange(r.x,r.y)&&(a=!0)})),n.intersect&&!a&&(i=[]),i},y:function(t,e,n){var r=$t(e,t),i=[],a=!1;return Qt(t,(function(t){t.inYRange(r.y)&&i.push(t),t.inRange(r.x,r.y)&&(a=!0)})),n.intersect&&!a&&(i=[]),i}}},ae=Y.extend;function oe(t,e){return Y.where(t,(function(t){return t.pos===e}))}function se(t,e){return t.sort((function(t,n){var r=e?n:t,i=e?t:n;return r.weight===i.weight?r.index-i.index:r.weight-i.weight}))}function le(t,e,n,r){return Math.max(t[n],e[n])+Math.max(t[r],e[r])}function ue(t,e,n){var r,i,a=n.box,o=t.maxPadding;if(n.size&&(t[n.pos]-=n.size),n.size=n.horizontal?a.height:a.width,t[n.pos]+=n.size,a.getPadding){var s=a.getPadding();o.top=Math.max(o.top,s.top),o.left=Math.max(o.left,s.left),o.bottom=Math.max(o.bottom,s.bottom),o.right=Math.max(o.right,s.right)}if(r=e.outerWidth-le(o,t,"left","right"),i=e.outerHeight-le(o,t,"top","bottom"),r!==t.w||i!==t.h)return t.w=r,t.h=i,n.horizontal?r!==t.w:i!==t.h}function ce(t,e){var n=e.maxPadding;function r(t){var r={left:0,top:0,right:0,bottom:0};return t.forEach((function(t){r[t]=Math.max(e[t],n[t])})),r}return r(t?["left","right"]:["top","bottom"])}function he(t,e,n){var r,i,a,o,s,l,u=[];for(r=0,i=t.length;r<i;++r)(o=(a=t[r]).box).update(a.width||e.w,a.height||e.h,ce(a.horizontal,e)),ue(e,n,a)&&(l=!0,u.length&&(s=!0)),o.fullWidth||u.push(a);return s&&he(u,e,n)||l}function de(t,e,n){var r,i,a,o,s=n.padding,l=e.x,u=e.y;for(r=0,i=t.length;r<i;++r)o=(a=t[r]).box,a.horizontal?(o.left=o.fullWidth?s.left:e.left,o.right=o.fullWidth?n.outerWidth-s.right:e.left+e.w,o.top=u,o.bottom=u+o.height,o.width=o.right-o.left,u=o.bottom):(o.left=l,o.right=l+o.width,o.top=e.top,o.bottom=e.top+e.h,o.height=o.bottom-o.top,l=o.right);e.x=l,e.y=u}N._set("global",{layout:{padding:{top:0,right:0,bottom:0,left:0}}});var fe,pe={defaults:{},addBox:function(t,e){t.boxes||(t.boxes=[]),e.fullWidth=e.fullWidth||!1,e.position=e.position||"top",e.weight=e.weight||0,e._layers=e._layers||function(){return[{z:0,draw:function(){e.draw.apply(e,arguments)}}]},t.boxes.push(e)},removeBox:function(t,e){var n=t.boxes?t.boxes.indexOf(e):-1;-1!==n&&t.boxes.splice(n,1)},configure:function(t,e,n){for(var r,i=["fullWidth","position","weight"],a=i.length,o=0;o<a;++o)r=i[o],n.hasOwnProperty(r)&&(e[r]=n[r])},update:function(t,e,n){if(t){var r=t.options.layout||{},i=Y.options.toPadding(r.padding),a=e-i.width,o=n-i.height,s=function(t){var e=function(t){var e,n,r,i=[];for(e=0,n=(t||[]).length;e<n;++e)r=t[e],i.push({index:e,box:r,pos:r.position,horizontal:r.isHorizontal(),weight:r.weight});return i}(t),n=se(oe(e,"left"),!0),r=se(oe(e,"right")),i=se(oe(e,"top"),!0),a=se(oe(e,"bottom"));return{leftAndTop:n.concat(i),rightAndBottom:r.concat(a),chartArea:oe(e,"chartArea"),vertical:n.concat(r),horizontal:i.concat(a)}}(t.boxes),l=s.vertical,u=s.horizontal,c=Object.freeze({outerWidth:e,outerHeight:n,padding:i,availableWidth:a,vBoxMaxWidth:a/2/l.length,hBoxMaxHeight:o/2}),h=ae({maxPadding:ae({},i),w:a,h:o,x:i.left,y:i.top},i);!function(t,e){var n,r,i;for(n=0,r=t.length;n<r;++n)(i=t[n]).width=i.horizontal?i.box.fullWidth&&e.availableWidth:e.vBoxMaxWidth,i.height=i.horizontal&&e.hBoxMaxHeight}(l.concat(u),c),he(l,h,c),he(u,h,c)&&he(l,h,c),function(t){var e=t.maxPadding;function n(n){var r=Math.max(e[n]-t[n],0);return t[n]+=r,r}t.y+=n("top"),t.x+=n("left"),n("right"),n("bottom")}(h),de(s.leftAndTop,h,c),h.x+=h.w,h.y+=h.h,de(s.rightAndBottom,h,c),t.chartArea={left:h.left,top:h.top,right:h.left+h.w,bottom:h.top+h.h},Y.each(s.chartArea,(function(e){var n=e.box;ae(n,t.chartArea),n.update(h.w,h.h)}))}}},ge=(fe=Object.freeze({__proto__:null,default:"/*\n * DOM element rendering detection\n * https://davidwalsh.name/detect-node-insertion\n */\n@keyframes chartjs-render-animation {\n\tfrom { opacity: 0.99; }\n\tto { opacity: 1; }\n}\n\n.chartjs-render-monitor {\n\tanimation: chartjs-render-animation 0.001s;\n}\n\n/*\n * DOM element resizing detection\n * https://github.com/marcj/css-element-queries\n */\n.chartjs-size-monitor,\n.chartjs-size-monitor-expand,\n.chartjs-size-monitor-shrink {\n\tposition: absolute;\n\tdirection: ltr;\n\tleft: 0;\n\ttop: 0;\n\tright: 0;\n\tbottom: 0;\n\toverflow: hidden;\n\tpointer-events: none;\n\tvisibility: hidden;\n\tz-index: -1;\n}\n\n.chartjs-size-monitor-expand > div {\n\tposition: absolute;\n\twidth: 1000000px;\n\theight: 1000000px;\n\tleft: 0;\n\ttop: 0;\n}\n\n.chartjs-size-monitor-shrink > div {\n\tposition: absolute;\n\twidth: 200%;\n\theight: 200%;\n\tleft: 0;\n\ttop: 0;\n}\n"}))&&fe.default||fe,me=["animationstart","webkitAnimationStart"],ve={touchstart:"mousedown",touchmove:"mousemove",touchend:"mouseup",pointerenter:"mouseenter",pointerdown:"mousedown",pointermove:"mousemove",pointerup:"mouseup",pointerleave:"mouseout",pointerout:"mouseout"};function ye(t,e){var n=Y.getStyle(t,e),r=n&&n.match(/^(\d+)(\.\d+)?px$/);return r?Number(r[1]):void 0}var be=!!function(){var t=!1;try{var e=Object.defineProperty({},"passive",{get:function(){t=!0}});window.addEventListener("e",null,e)}catch(n){}return t}()&&{passive:!0};function xe(t,e,n){t.addEventListener(e,n,be)}function _e(t,e,n){t.removeEventListener(e,n,be)}function we(t,e,n,r,i){return{type:t,chart:e,native:i||null,x:void 0!==n?n:null,y:void 0!==r?r:null}}function ke(t){var e=document.createElement("div");return e.className=t||"",e}function Me(t,e,n){var r,i,a,o,s=t.$chartjs||(t.$chartjs={}),l=s.resizer=function(t){var e=ke("chartjs-size-monitor"),n=ke("chartjs-size-monitor-expand"),r=ke("chartjs-size-monitor-shrink");n.appendChild(ke()),r.appendChild(ke()),e.appendChild(n),e.appendChild(r),e._reset=function(){n.scrollLeft=1e6,n.scrollTop=1e6,r.scrollLeft=1e6,r.scrollTop=1e6};var i=function(){e._reset(),t()};return xe(n,"scroll",i.bind(n,"expand")),xe(r,"scroll",i.bind(r,"shrink")),e}((r=function(){if(s.resizer){var r=n.options.maintainAspectRatio&&t.parentNode,i=r?r.clientWidth:0;e(we("resize",n)),r&&r.clientWidth<i&&n.canvas&&e(we("resize",n))}},a=!1,o=[],function(){o=Array.prototype.slice.call(arguments),i=i||this,a||(a=!0,Y.requestAnimFrame.call(window,(function(){a=!1,r.apply(i,o)})))}));!function(t,e){var n=t.$chartjs||(t.$chartjs={}),r=n.renderProxy=function(t){"chartjs-render-animation"===t.animationName&&e()};Y.each(me,(function(e){xe(t,e,r)})),n.reflow=!!t.offsetParent,t.classList.add("chartjs-render-monitor")}(t,(function(){if(s.resizer){var e=t.parentNode;e&&e!==l.parentNode&&e.insertBefore(l,e.firstChild),l._reset()}}))}function Se(t){var e=t.$chartjs||{},n=e.resizer;delete e.resizer,function(t){var e=t.$chartjs||{},n=e.renderProxy;n&&(Y.each(me,(function(e){_e(t,e,n)})),delete e.renderProxy),t.classList.remove("chartjs-render-monitor")}(t),n&&n.parentNode&&n.parentNode.removeChild(n)}var De={disableCSSInjection:!1,_enabled:"undefined"!=typeof window&&"undefined"!=typeof document,_ensureLoaded:function(t){if(!this.disableCSSInjection){var e=t.getRootNode?t.getRootNode():document;!function(t,e){var n=t.$chartjs||(t.$chartjs={});if(!n.containsStyles){n.containsStyles=!0,e="/* Chart.js */\n"+e;var r=document.createElement("style");r.setAttribute("type","text/css"),r.appendChild(document.createTextNode(e)),t.appendChild(r)}}(e.host?e:document.head,ge)}},acquireContext:function(t,e){"string"==typeof t?t=document.getElementById(t):t.length&&(t=t[0]),t&&t.canvas&&(t=t.canvas);var n=t&&t.getContext&&t.getContext("2d");return n&&n.canvas===t?(this._ensureLoaded(t),function(t,e){var n=t.style,r=t.getAttribute("height"),i=t.getAttribute("width");if(t.$chartjs={initial:{height:r,width:i,style:{display:n.display,height:n.height,width:n.width}}},n.display=n.display||"block",null===i||""===i){var a=ye(t,"width");void 0!==a&&(t.width=a)}if(null===r||""===r)if(""===t.style.height)t.height=t.width/(e.options.aspectRatio||2);else{var o=ye(t,"height");void 0!==a&&(t.height=o)}}(t,e),n):null},releaseContext:function(t){var e=t.canvas;if(e.$chartjs){var n=e.$chartjs.initial;["height","width"].forEach((function(t){var r=n[t];Y.isNullOrUndef(r)?e.removeAttribute(t):e.setAttribute(t,r)})),Y.each(n.style||{},(function(t,n){e.style[n]=t})),e.width=e.width,delete e.$chartjs}},addEventListener:function(t,e,n){var r=t.canvas;if("resize"!==e){var i=n.$chartjs||(n.$chartjs={});xe(r,e,(i.proxies||(i.proxies={}))[t.id+"_"+e]=function(e){n(function(t,e){var n=ve[t.type]||t.type,r=Y.getRelativePosition(t,e);return we(n,e,r.x,r.y,t)}(e,t))})}else Me(r,n,t)},removeEventListener:function(t,e,n){var r=t.canvas;if("resize"!==e){var i=((n.$chartjs||{}).proxies||{})[t.id+"_"+e];i&&_e(r,e,i)}else Se(r)}};Y.addEvent=xe,Y.removeEvent=_e;var Ce=De._enabled?De:{acquireContext:function(t){return t&&t.canvas&&(t=t.canvas),t&&t.getContext("2d")||null}},Oe=Y.extend({initialize:function(){},acquireContext:function(){},releaseContext:function(){},addEventListener:function(){},removeEventListener:function(){}},Ce);N._set("global",{plugins:{}});var Te={_plugins:[],_cacheId:0,register:function(t){var e=this._plugins;[].concat(t).forEach((function(t){-1===e.indexOf(t)&&e.push(t)})),this._cacheId++},unregister:function(t){var e=this._plugins;[].concat(t).forEach((function(t){var n=e.indexOf(t);-1!==n&&e.splice(n,1)})),this._cacheId++},clear:function(){this._plugins=[],this._cacheId++},count:function(){return this._plugins.length},getAll:function(){return this._plugins},notify:function(t,e,n){var r,i,a,o,s,l=this.descriptors(t),u=l.length;for(r=0;r<u;++r)if("function"==typeof(s=(a=(i=l[r]).plugin)[e])&&((o=[t].concat(n||[])).push(i.options),!1===s.apply(a,o)))return!1;return!0},descriptors:function(t){var e=t.$plugins||(t.$plugins={});if(e.id===this._cacheId)return e.descriptors;var n=[],r=[],i=t&&t.config||{},a=i.options&&i.options.plugins||{};return this._plugins.concat(i.plugins||[]).forEach((function(t){if(-1===n.indexOf(t)){var e=t.id,i=a[e];!1!==i&&(!0===i&&(i=Y.clone(N.global.plugins[e])),n.push(t),r.push({plugin:t,options:i||{}}))}})),e.descriptors=r,e.id=this._cacheId,r},_invalidate:function(t){delete t.$plugins}},Pe={constructors:{},defaults:{},registerScaleType:function(t,e,n){this.constructors[t]=e,this.defaults[t]=Y.clone(n)},getScaleConstructor:function(t){return this.constructors.hasOwnProperty(t)?this.constructors[t]:void 0},getScaleDefaults:function(t){return this.defaults.hasOwnProperty(t)?Y.merge({},[N.scale,this.defaults[t]]):{}},updateScaleDefaults:function(t,e){this.defaults.hasOwnProperty(t)&&(this.defaults[t]=Y.extend(this.defaults[t],e))},addScalesToLayout:function(t){Y.each(t.scales,(function(e){e.fullWidth=e.options.fullWidth,e.position=e.options.position,e.weight=e.options.weight,pe.addBox(t,e)}))}},Ae=Y.valueOrDefault,Ie=Y.rtl.getRtlAdapter;N._set("global",{tooltips:{enabled:!0,custom:null,mode:"nearest",position:"average",intersect:!0,backgroundColor:"rgba(0,0,0,0.8)",titleFontStyle:"bold",titleSpacing:2,titleMarginBottom:6,titleFontColor:"#fff",titleAlign:"left",bodySpacing:2,bodyFontColor:"#fff",bodyAlign:"left",footerFontStyle:"bold",footerSpacing:2,footerMarginTop:6,footerFontColor:"#fff",footerAlign:"left",yPadding:6,xPadding:6,caretPadding:2,caretSize:5,cornerRadius:6,multiKeyBackground:"#fff",displayColors:!0,borderColor:"rgba(0,0,0,0)",borderWidth:0,callbacks:{beforeTitle:Y.noop,title:function(t,e){var n="",r=e.labels,i=r?r.length:0;if(t.length>0){var a=t[0];a.label?n=a.label:a.xLabel?n=a.xLabel:i>0&&a.index<i&&(n=r[a.index])}return n},afterTitle:Y.noop,beforeBody:Y.noop,beforeLabel:Y.noop,label:function(t,e){var n=e.datasets[t.datasetIndex].label||"";return n&&(n+=": "),Y.isNullOrUndef(t.value)?n+=t.yLabel:n+=t.value,n},labelColor:function(t,e){var n=e.getDatasetMeta(t.datasetIndex).data[t.index]._view;return{borderColor:n.borderColor,backgroundColor:n.backgroundColor}},labelTextColor:function(){return this._options.bodyFontColor},afterLabel:Y.noop,afterBody:Y.noop,beforeFooter:Y.noop,footer:Y.noop,afterFooter:Y.noop}}});var Fe={average:function(t){if(!t.length)return!1;var e,n,r=0,i=0,a=0;for(e=0,n=t.length;e<n;++e){var o=t[e];if(o&&o.hasValue()){var s=o.tooltipPosition();r+=s.x,i+=s.y,++a}}return{x:r/a,y:i/a}},nearest:function(t,e){var n,r,i,a=e.x,o=e.y,s=Number.POSITIVE_INFINITY;for(n=0,r=t.length;n<r;++n){var l=t[n];if(l&&l.hasValue()){var u=l.getCenterPoint(),c=Y.distanceBetweenPoints(e,u);c<s&&(s=c,i=l)}}if(i){var h=i.tooltipPosition();a=h.x,o=h.y}return{x:a,y:o}}};function Le(t,e){return e&&(Y.isArray(e)?Array.prototype.push.apply(t,e):t.push(e)),t}function Re(t){return("string"==typeof t||t instanceof String)&&t.indexOf("\n")>-1?t.split("\n"):t}function Ne(t){var e=N.global;return{xPadding:t.xPadding,yPadding:t.yPadding,xAlign:t.xAlign,yAlign:t.yAlign,rtl:t.rtl,textDirection:t.textDirection,bodyFontColor:t.bodyFontColor,_bodyFontFamily:Ae(t.bodyFontFamily,e.defaultFontFamily),_bodyFontStyle:Ae(t.bodyFontStyle,e.defaultFontStyle),_bodyAlign:t.bodyAlign,bodyFontSize:Ae(t.bodyFontSize,e.defaultFontSize),bodySpacing:t.bodySpacing,titleFontColor:t.titleFontColor,_titleFontFamily:Ae(t.titleFontFamily,e.defaultFontFamily),_titleFontStyle:Ae(t.titleFontStyle,e.defaultFontStyle),titleFontSize:Ae(t.titleFontSize,e.defaultFontSize),_titleAlign:t.titleAlign,titleSpacing:t.titleSpacing,titleMarginBottom:t.titleMarginBottom,footerFontColor:t.footerFontColor,_footerFontFamily:Ae(t.footerFontFamily,e.defaultFontFamily),_footerFontStyle:Ae(t.footerFontStyle,e.defaultFontStyle),footerFontSize:Ae(t.footerFontSize,e.defaultFontSize),_footerAlign:t.footerAlign,footerSpacing:t.footerSpacing,footerMarginTop:t.footerMarginTop,caretSize:t.caretSize,cornerRadius:t.cornerRadius,backgroundColor:t.backgroundColor,opacity:0,legendColorBackground:t.multiKeyBackground,displayColors:t.displayColors,borderColor:t.borderColor,borderWidth:t.borderWidth}}function Ee(t,e){return"center"===e?t.x+t.width/2:"right"===e?t.x+t.width-t.xPadding:t.x+t.xPadding}function je(t){return Le([],Re(t))}var ze=K.extend({initialize:function(){this._model=Ne(this._options),this._lastActive=[]},getTitle:function(){var t=this,e=t._options,n=e.callbacks,r=n.beforeTitle.apply(t,arguments),i=n.title.apply(t,arguments),a=n.afterTitle.apply(t,arguments),o=[];return o=Le(o,Re(r)),o=Le(o,Re(i)),o=Le(o,Re(a))},getBeforeBody:function(){return je(this._options.callbacks.beforeBody.apply(this,arguments))},getBody:function(t,e){var n=this,r=n._options.callbacks,i=[];return Y.each(t,(function(t){var a={before:[],lines:[],after:[]};Le(a.before,Re(r.beforeLabel.call(n,t,e))),Le(a.lines,r.label.call(n,t,e)),Le(a.after,Re(r.afterLabel.call(n,t,e))),i.push(a)})),i},getAfterBody:function(){return je(this._options.callbacks.afterBody.apply(this,arguments))},getFooter:function(){var t=this,e=t._options.callbacks,n=e.beforeFooter.apply(t,arguments),r=e.footer.apply(t,arguments),i=e.afterFooter.apply(t,arguments),a=[];return a=Le(a,Re(n)),a=Le(a,Re(r)),a=Le(a,Re(i))},update:function(t){var e,n,r,i,a,o,s,l,u,c,h=this,d=h._options,f=h._model,p=h._model=Ne(d),g=h._active,m=h._data,v={xAlign:f.xAlign,yAlign:f.yAlign},y={x:f.x,y:f.y},b={width:f.width,height:f.height},x={x:f.caretX,y:f.caretY};if(g.length){p.opacity=1;var _=[],w=[];x=Fe[d.position].call(h,g,h._eventPosition);var k=[];for(e=0,n=g.length;e<n;++e)k.push((r=g[e],i=void 0,a=void 0,o=void 0,s=void 0,l=void 0,u=void 0,c=void 0,i=r._xScale,a=r._yScale||r._scale,o=r._index,s=r._datasetIndex,l=r._chart.getDatasetMeta(s).controller,u=l._getIndexScale(),c=l._getValueScale(),{xLabel:i?i.getLabelForIndex(o,s):"",yLabel:a?a.getLabelForIndex(o,s):"",label:u?""+u.getLabelForIndex(o,s):"",value:c?""+c.getLabelForIndex(o,s):"",index:o,datasetIndex:s,x:r._model.x,y:r._model.y}));d.filter&&(k=k.filter((function(t){return d.filter(t,m)}))),d.itemSort&&(k=k.sort((function(t,e){return d.itemSort(t,e,m)}))),Y.each(k,(function(t){_.push(d.callbacks.labelColor.call(h,t,h._chart)),w.push(d.callbacks.labelTextColor.call(h,t,h._chart))})),p.title=h.getTitle(k,m),p.beforeBody=h.getBeforeBody(k,m),p.body=h.getBody(k,m),p.afterBody=h.getAfterBody(k,m),p.footer=h.getFooter(k,m),p.x=x.x,p.y=x.y,p.caretPadding=d.caretPadding,p.labelColors=_,p.labelTextColors=w,p.dataPoints=k,b=function(t,e){var n=t._chart.ctx,r=2*e.yPadding,i=0,a=e.body,o=a.reduce((function(t,e){return t+e.before.length+e.lines.length+e.after.length}),0);o+=e.beforeBody.length+e.afterBody.length;var s=e.title.length,l=e.footer.length,u=e.titleFontSize,c=e.bodyFontSize,h=e.footerFontSize;r+=s*u,r+=s?(s-1)*e.titleSpacing:0,r+=s?e.titleMarginBottom:0,r+=o*c,r+=o?(o-1)*e.bodySpacing:0,r+=l?e.footerMarginTop:0,r+=l*h,r+=l?(l-1)*e.footerSpacing:0;var d=0,f=function(t){i=Math.max(i,n.measureText(t).width+d)};return n.font=Y.fontString(u,e._titleFontStyle,e._titleFontFamily),Y.each(e.title,f),n.font=Y.fontString(c,e._bodyFontStyle,e._bodyFontFamily),Y.each(e.beforeBody.concat(e.afterBody),f),d=e.displayColors?c+2:0,Y.each(a,(function(t){Y.each(t.before,f),Y.each(t.lines,f),Y.each(t.after,f)})),d=0,n.font=Y.fontString(h,e._footerFontStyle,e._footerFontFamily),Y.each(e.footer,f),{width:i+=2*e.xPadding,height:r}}(this,p),y=function(t,e,n,r){var i=t.x,a=t.y,o=t.caretSize,s=t.caretPadding,l=t.cornerRadius,u=n.xAlign,c=n.yAlign,h=o+s,d=l+s;return"right"===u?i-=e.width:"center"===u&&((i-=e.width/2)+e.width>r.width&&(i=r.width-e.width),i<0&&(i=0)),"top"===c?a+=h:a-="bottom"===c?e.height+h:e.height/2,"center"===c?"left"===u?i+=h:"right"===u&&(i-=h):"left"===u?i-=d:"right"===u&&(i+=d),{x:i,y:a}}(p,b,v=function(t,e){var n,r,i,a,o,s=t._model,l=t._chart,u=t._chart.chartArea,c="center",h="center";s.y<e.height?h="top":s.y>l.height-e.height&&(h="bottom");var d=(u.left+u.right)/2,f=(u.top+u.bottom)/2;"center"===h?(n=function(t){return t<=d},r=function(t){return t>d}):(n=function(t){return t<=e.width/2},r=function(t){return t>=l.width-e.width/2}),i=function(t){return t+e.width+s.caretSize+s.caretPadding>l.width},a=function(t){return t-e.width-s.caretSize-s.caretPadding<0},o=function(t){return t<=f?"top":"bottom"},n(s.x)?(c="left",i(s.x)&&(c="center",h=o(s.y))):r(s.x)&&(c="right",a(s.x)&&(c="center",h=o(s.y)));var p=t._options;return{xAlign:p.xAlign?p.xAlign:c,yAlign:p.yAlign?p.yAlign:h}}(this,b),h._chart)}else p.opacity=0;return p.xAlign=v.xAlign,p.yAlign=v.yAlign,p.x=y.x,p.y=y.y,p.width=b.width,p.height=b.height,p.caretX=x.x,p.caretY=x.y,h._model=p,t&&d.custom&&d.custom.call(h,p),h},drawCaret:function(t,e){var n=this._chart.ctx,r=this._view,i=this.getCaretPosition(t,e,r);n.lineTo(i.x1,i.y1),n.lineTo(i.x2,i.y2),n.lineTo(i.x3,i.y3)},getCaretPosition:function(t,e,n){var r,i,a,o,s,l,u=n.caretSize,c=n.cornerRadius,h=n.xAlign,d=n.yAlign,f=t.x,p=t.y,g=e.width,m=e.height;if("center"===d)s=p+m/2,"left"===h?(i=(r=f)-u,a=r,o=s+u,l=s-u):(i=(r=f+g)+u,a=r,o=s-u,l=s+u);else if("left"===h?(r=(i=f+c+u)-u,a=i+u):"right"===h?(r=(i=f+g-c-u)-u,a=i+u):(r=(i=n.caretX)-u,a=i+u),"top"===d)s=(o=p)-u,l=o;else{s=(o=p+m)+u,l=o;var v=a;a=r,r=v}return{x1:r,x2:i,x3:a,y1:o,y2:s,y3:l}},drawTitle:function(t,e,n){var r,i,a,o=e.title,s=o.length;if(s){var l=Ie(e.rtl,e.x,e.width);for(t.x=Ee(e,e._titleAlign),n.textAlign=l.textAlign(e._titleAlign),n.textBaseline="middle",r=e.titleFontSize,i=e.titleSpacing,n.fillStyle=e.titleFontColor,n.font=Y.fontString(r,e._titleFontStyle,e._titleFontFamily),a=0;a<s;++a)n.fillText(o[a],l.x(t.x),t.y+r/2),t.y+=r+i,a+1===s&&(t.y+=e.titleMarginBottom-i)}},drawBody:function(t,e,n){var r,i,a,o,s,l,u,c,h=e.bodyFontSize,d=e.bodySpacing,f=e._bodyAlign,p=e.body,g=e.displayColors,m=0,v=g?Ee(e,"left"):0,y=Ie(e.rtl,e.x,e.width),b=function(e){n.fillText(e,y.x(t.x+m),t.y+h/2),t.y+=h+d},x=y.textAlign(f);for(n.textAlign=f,n.textBaseline="middle",n.font=Y.fontString(h,e._bodyFontStyle,e._bodyFontFamily),t.x=Ee(e,x),n.fillStyle=e.bodyFontColor,Y.each(e.beforeBody,b),m=g&&"right"!==x?"center"===f?h/2+1:h+2:0,s=0,u=p.length;s<u;++s){for(r=p[s],i=e.labelTextColors[s],a=e.labelColors[s],n.fillStyle=i,Y.each(r.before,b),l=0,c=(o=r.lines).length;l<c;++l){if(g){var _=y.x(v);n.fillStyle=e.legendColorBackground,n.fillRect(y.leftForLtr(_,h),t.y,h,h),n.lineWidth=1,n.strokeStyle=a.borderColor,n.strokeRect(y.leftForLtr(_,h),t.y,h,h),n.fillStyle=a.backgroundColor,n.fillRect(y.leftForLtr(y.xPlus(_,1),h-2),t.y+1,h-2,h-2),n.fillStyle=i}b(o[l])}Y.each(r.after,b)}m=0,Y.each(e.afterBody,b),t.y-=d},drawFooter:function(t,e,n){var r,i,a=e.footer,o=a.length;if(o){var s=Ie(e.rtl,e.x,e.width);for(t.x=Ee(e,e._footerAlign),t.y+=e.footerMarginTop,n.textAlign=s.textAlign(e._footerAlign),n.textBaseline="middle",r=e.footerFontSize,n.fillStyle=e.footerFontColor,n.font=Y.fontString(r,e._footerFontStyle,e._footerFontFamily),i=0;i<o;++i)n.fillText(a[i],s.x(t.x),t.y+r/2),t.y+=r+e.footerSpacing}},drawBackground:function(t,e,n,r){n.fillStyle=e.backgroundColor,n.strokeStyle=e.borderColor,n.lineWidth=e.borderWidth;var i=e.xAlign,a=e.yAlign,o=t.x,s=t.y,l=r.width,u=r.height,c=e.cornerRadius;n.beginPath(),n.moveTo(o+c,s),"top"===a&&this.drawCaret(t,r),n.lineTo(o+l-c,s),n.quadraticCurveTo(o+l,s,o+l,s+c),"center"===a&&"right"===i&&this.drawCaret(t,r),n.lineTo(o+l,s+u-c),n.quadraticCurveTo(o+l,s+u,o+l-c,s+u),"bottom"===a&&this.drawCaret(t,r),n.lineTo(o+c,s+u),n.quadraticCurveTo(o,s+u,o,s+u-c),"center"===a&&"left"===i&&this.drawCaret(t,r),n.lineTo(o,s+c),n.quadraticCurveTo(o,s,o+c,s),n.closePath(),n.fill(),e.borderWidth>0&&n.stroke()},draw:function(){var t=this._chart.ctx,e=this._view;if(0!==e.opacity){var n={width:e.width,height:e.height},r={x:e.x,y:e.y},i=Math.abs(e.opacity<.001)?0:e.opacity,a=e.title.length||e.beforeBody.length||e.body.length||e.afterBody.length||e.footer.length;this._options.enabled&&a&&(t.save(),t.globalAlpha=i,this.drawBackground(r,e,t,n),r.y+=e.yPadding,Y.rtl.overrideTextDirection(t,e.textDirection),this.drawTitle(r,e,t),this.drawBody(r,e,t),this.drawFooter(r,e,t),Y.rtl.restoreTextDirection(t,e.textDirection),t.restore())}},handleEvent:function(t){var e,n=this,r=n._options;return n._lastActive=n._lastActive||[],"mouseout"===t.type?n._active=[]:(n._active=n._chart.getElementsAtEventForMode(t,r.mode,r),r.reverse&&n._active.reverse()),(e=!Y.arrayEquals(n._active,n._lastActive))&&(n._lastActive=n._active,(r.enabled||r.custom)&&(n._eventPosition={x:t.x,y:t.y},n.update(!0),n.pivot())),e}}),We=Fe,Ye=ze;Ye.positioners=We;var Ve=Y.valueOrDefault;function Be(){return Y.merge({},[].slice.call(arguments),{merger:function(t,e,n,r){if("xAxes"===t||"yAxes"===t){var i,a,o,s=n[t].length;for(e[t]||(e[t]=[]),i=0;i<s;++i)o=n[t][i],a=Ve(o.type,"xAxes"===t?"category":"linear"),i>=e[t].length&&e[t].push({}),!e[t][i].type||o.type&&o.type!==e[t][i].type?Y.merge(e[t][i],[Pe.getScaleDefaults(a),o]):Y.merge(e[t][i],o)}else Y._merger(t,e,n,r)}})}function He(){return Y.merge({},[].slice.call(arguments),{merger:function(t,e,n,r){var i=e[t]||{},a=n[t];"scales"===t?e[t]=Be(i,a):"scale"===t?e[t]=Y.merge(i,[Pe.getScaleDefaults(a.type),a]):Y._merger(t,e,n,r)}})}function Ue(t){var e=t.options;Y.each(t.scales,(function(e){pe.removeBox(t,e)})),e=He(N.global,N[t.config.type],e),t.options=t.config.options=e,t.ensureScalesHaveIDs(),t.buildOrUpdateScales(),t.tooltip._options=e.tooltips,t.tooltip.initialize()}function Ge(t,e,n){var r,i=function(t){return t.id===r};do{r=e+n++}while(Y.findIndex(t,i)>=0);return r}function qe(t){return"top"===t||"bottom"===t}function Ke(t,e){return function(n,r){return n[t]===r[t]?n[e]-r[e]:n[t]-r[t]}}N._set("global",{elements:{},events:["mousemove","mouseout","click","touchstart","touchmove"],hover:{onHover:null,mode:"nearest",intersect:!0,animationDuration:400},onClick:null,maintainAspectRatio:!0,responsive:!0,responsiveAnimationDuration:0});var Ze=function(t,e){return this.construct(t,e),this};Y.extend(Ze.prototype,{construct:function(t,e){var n=this;e=function(t){var e=(t=t||{}).data=t.data||{};return e.datasets=e.datasets||[],e.labels=e.labels||[],t.options=He(N.global,N[t.type],t.options||{}),t}(e);var r=Oe.acquireContext(t,e),i=r&&r.canvas,a=i&&i.height,o=i&&i.width;n.id=Y.uid(),n.ctx=r,n.canvas=i,n.config=e,n.width=o,n.height=a,n.aspectRatio=a?o/a:null,n.options=e.options,n._bufferedRender=!1,n._layers=[],n.chart=n,n.controller=n,Ze.instances[n.id]=n,Object.defineProperty(n,"data",{get:function(){return n.config.data},set:function(t){n.config.data=t}}),r&&i?(n.initialize(),n.update()):console.error("Failed to create chart: can't acquire context from the given item")},initialize:function(){var t=this;return Te.notify(t,"beforeInit"),Y.retinaScale(t,t.options.devicePixelRatio),t.bindEvents(),t.options.responsive&&t.resize(!0),t.initToolTip(),Te.notify(t,"afterInit"),t},clear:function(){return Y.canvas.clear(this),this},stop:function(){return J.cancelAnimation(this),this},resize:function(t){var e=this,n=e.options,r=e.canvas,i=n.maintainAspectRatio&&e.aspectRatio||null,a=Math.max(0,Math.floor(Y.getMaximumWidth(r))),o=Math.max(0,Math.floor(i?a/i:Y.getMaximumHeight(r)));if((e.width!==a||e.height!==o)&&(r.width=e.width=a,r.height=e.height=o,r.style.width=a+"px",r.style.height=o+"px",Y.retinaScale(e,n.devicePixelRatio),!t)){var s={width:a,height:o};Te.notify(e,"resize",[s]),n.onResize&&n.onResize(e,s),e.stop(),e.update({duration:n.responsiveAnimationDuration})}},ensureScalesHaveIDs:function(){var t=this.options,e=t.scales||{},n=t.scale;Y.each(e.xAxes,(function(t,n){t.id||(t.id=Ge(e.xAxes,"x-axis-",n))})),Y.each(e.yAxes,(function(t,n){t.id||(t.id=Ge(e.yAxes,"y-axis-",n))})),n&&(n.id=n.id||"scale")},buildOrUpdateScales:function(){var t=this,e=t.options,n=t.scales||{},r=[],i=Object.keys(n).reduce((function(t,e){return t[e]=!1,t}),{});e.scales&&(r=r.concat((e.scales.xAxes||[]).map((function(t){return{options:t,dtype:"category",dposition:"bottom"}})),(e.scales.yAxes||[]).map((function(t){return{options:t,dtype:"linear",dposition:"left"}})))),e.scale&&r.push({options:e.scale,dtype:"radialLinear",isDefault:!0,dposition:"chartArea"}),Y.each(r,(function(e){var r=e.options,a=r.id,o=Ve(r.type,e.dtype);qe(r.position)!==qe(e.dposition)&&(r.position=e.dposition),i[a]=!0;var s=null;if(a in n&&n[a].type===o)(s=n[a]).options=r,s.ctx=t.ctx,s.chart=t;else{var l=Pe.getScaleConstructor(o);if(!l)return;s=new l({id:a,type:o,options:r,ctx:t.ctx,chart:t}),n[s.id]=s}s.mergeTicksOptions(),e.isDefault&&(t.scale=s)})),Y.each(i,(function(t,e){t||delete n[e]})),t.scales=n,Pe.addScalesToLayout(this)},buildOrUpdateControllers:function(){var t,e,n=this,r=[],i=n.data.datasets;for(t=0,e=i.length;t<e;t++){var a=i[t],o=n.getDatasetMeta(t),s=a.type||n.config.type;if(o.type&&o.type!==s&&(n.destroyDatasetMeta(t),o=n.getDatasetMeta(t)),o.type=s,o.order=a.order||0,o.index=t,o.controller)o.controller.updateIndex(t),o.controller.linkScales();else{var l=Jt[o.type];if(void 0===l)throw new Error('"'+o.type+'" is not a chart type.');o.controller=new l(n,t),r.push(o.controller)}}return r},resetElements:function(){var t=this;Y.each(t.data.datasets,(function(e,n){t.getDatasetMeta(n).controller.reset()}),t)},reset:function(){this.resetElements(),this.tooltip.initialize()},update:function(t){var e,n,r=this;if(t&&"object"==typeof t||(t={duration:t,lazy:arguments[1]}),Ue(r),Te._invalidate(r),!1!==Te.notify(r,"beforeUpdate")){r.tooltip._data=r.data;var i=r.buildOrUpdateControllers();for(e=0,n=r.data.datasets.length;e<n;e++)r.getDatasetMeta(e).controller.buildOrUpdateElements();r.updateLayout(),r.options.animation&&r.options.animation.duration&&Y.each(i,(function(t){t.reset()})),r.updateDatasets(),r.tooltip.initialize(),r.lastActive=[],Te.notify(r,"afterUpdate"),r._layers.sort(Ke("z","_idx")),r._bufferedRender?r._bufferedRequest={duration:t.duration,easing:t.easing,lazy:t.lazy}:r.render(t)}},updateLayout:function(){var t=this;!1!==Te.notify(t,"beforeLayout")&&(pe.update(this,this.width,this.height),t._layers=[],Y.each(t.boxes,(function(e){e._configure&&e._configure(),t._layers.push.apply(t._layers,e._layers())}),t),t._layers.forEach((function(t,e){t._idx=e})),Te.notify(t,"afterScaleUpdate"),Te.notify(t,"afterLayout"))},updateDatasets:function(){if(!1!==Te.notify(this,"beforeDatasetsUpdate")){for(var t=0,e=this.data.datasets.length;t<e;++t)this.updateDataset(t);Te.notify(this,"afterDatasetsUpdate")}},updateDataset:function(t){var e=this.getDatasetMeta(t),n={meta:e,index:t};!1!==Te.notify(this,"beforeDatasetUpdate",[n])&&(e.controller._update(),Te.notify(this,"afterDatasetUpdate",[n]))},render:function(t){var e=this;t&&"object"==typeof t||(t={duration:t,lazy:arguments[1]});var n=e.options.animation,r=Ve(t.duration,n&&n.duration),i=t.lazy;if(!1!==Te.notify(e,"beforeRender")){var a=function(t){Te.notify(e,"afterRender"),Y.callback(n&&n.onComplete,[t],e)};if(n&&r){var o=new X({numSteps:r/16.66,easing:t.easing||n.easing,render:function(t,e){var n=Y.easing.effects[e.easing],r=e.currentStep,i=r/e.numSteps;t.draw(n(i),i,r)},onAnimationProgress:n.onProgress,onAnimationComplete:a});J.addAnimation(e,o,r,i)}else e.draw(),a(new X({numSteps:0,chart:e}));return e}},draw:function(t){var e,n,r=this;if(r.clear(),Y.isNullOrUndef(t)&&(t=1),r.transition(t),!(r.width<=0||r.height<=0)&&!1!==Te.notify(r,"beforeDraw",[t])){for(n=r._layers,e=0;e<n.length&&n[e].z<=0;++e)n[e].draw(r.chartArea);for(r.drawDatasets(t);e<n.length;++e)n[e].draw(r.chartArea);r._drawTooltip(t),Te.notify(r,"afterDraw",[t])}},transition:function(t){for(var e=0,n=(this.data.datasets||[]).length;e<n;++e)this.isDatasetVisible(e)&&this.getDatasetMeta(e).controller.transition(t);this.tooltip.transition(t)},_getSortedDatasetMetas:function(t){var e,n,r=[];for(e=0,n=(this.data.datasets||[]).length;e<n;++e)t&&!this.isDatasetVisible(e)||r.push(this.getDatasetMeta(e));return r.sort(Ke("order","index")),r},_getSortedVisibleDatasetMetas:function(){return this._getSortedDatasetMetas(!0)},drawDatasets:function(t){var e,n;if(!1!==Te.notify(this,"beforeDatasetsDraw",[t])){for(n=(e=this._getSortedVisibleDatasetMetas()).length-1;n>=0;--n)this.drawDataset(e[n],t);Te.notify(this,"afterDatasetsDraw",[t])}},drawDataset:function(t,e){var n={meta:t,index:t.index,easingValue:e};!1!==Te.notify(this,"beforeDatasetDraw",[n])&&(t.controller.draw(e),Te.notify(this,"afterDatasetDraw",[n]))},_drawTooltip:function(t){var e=this.tooltip,n={tooltip:e,easingValue:t};!1!==Te.notify(this,"beforeTooltipDraw",[n])&&(e.draw(),Te.notify(this,"afterTooltipDraw",[n]))},getElementAtEvent:function(t){return ie.modes.single(this,t)},getElementsAtEvent:function(t){return ie.modes.label(this,t,{intersect:!0})},getElementsAtXAxis:function(t){return ie.modes["x-axis"](this,t,{intersect:!0})},getElementsAtEventForMode:function(t,e,n){var r=ie.modes[e];return"function"==typeof r?r(this,t,n):[]},getDatasetAtEvent:function(t){return ie.modes.dataset(this,t,{intersect:!0})},getDatasetMeta:function(t){var e=this.data.datasets[t];e._meta||(e._meta={});var n=e._meta[this.id];return n||(n=e._meta[this.id]={type:null,data:[],dataset:null,controller:null,hidden:null,xAxisID:null,yAxisID:null,order:e.order||0,index:t}),n},getVisibleDatasetCount:function(){for(var t=0,e=0,n=this.data.datasets.length;e<n;++e)this.isDatasetVisible(e)&&t++;return t},isDatasetVisible:function(t){var e=this.getDatasetMeta(t);return"boolean"==typeof e.hidden?!e.hidden:!this.data.datasets[t].hidden},generateLegend:function(){return this.options.legendCallback(this)},destroyDatasetMeta:function(t){var e=this.id,n=this.data.datasets[t],r=n._meta&&n._meta[e];r&&(r.controller.destroy(),delete n._meta[e])},destroy:function(){var t,e,n=this,r=n.canvas;for(n.stop(),t=0,e=n.data.datasets.length;t<e;++t)n.destroyDatasetMeta(t);r&&(n.unbindEvents(),Y.canvas.clear(n),Oe.releaseContext(n.ctx),n.canvas=null,n.ctx=null),Te.notify(n,"destroy"),delete Ze.instances[n.id]},toBase64Image:function(){return this.canvas.toDataURL.apply(this.canvas,arguments)},initToolTip:function(){var t=this;t.tooltip=new Ye({_chart:t,_chartInstance:t,_data:t.data,_options:t.options.tooltips},t)},bindEvents:function(){var t=this,e=t._listeners={},n=function(){t.eventHandler.apply(t,arguments)};Y.each(t.options.events,(function(r){Oe.addEventListener(t,r,n),e[r]=n})),t.options.responsive&&(n=function(){t.resize()},Oe.addEventListener(t,"resize",n),e.resize=n)},unbindEvents:function(){var t=this,e=t._listeners;e&&(delete t._listeners,Y.each(e,(function(e,n){Oe.removeEventListener(t,n,e)})))},updateHoverStyle:function(t,e,n){var r,i,a,o=n?"set":"remove";for(i=0,a=t.length;i<a;++i)(r=t[i])&&this.getDatasetMeta(r._datasetIndex).controller[o+"HoverStyle"](r);"dataset"===e&&this.getDatasetMeta(t[0]._datasetIndex).controller["_"+o+"DatasetHoverStyle"]()},eventHandler:function(t){var e=this,n=e.tooltip;if(!1!==Te.notify(e,"beforeEvent",[t])){e._bufferedRender=!0,e._bufferedRequest=null;var r=e.handleEvent(t);n&&(r=n._start?n.handleEvent(t):r|n.handleEvent(t)),Te.notify(e,"afterEvent",[t]);var i=e._bufferedRequest;return i?e.render(i):r&&!e.animating&&(e.stop(),e.render({duration:e.options.hover.animationDuration,lazy:!0})),e._bufferedRender=!1,e._bufferedRequest=null,e}},handleEvent:function(t){var e,n=this,r=n.options||{},i=r.hover;return n.lastActive=n.lastActive||[],"mouseout"===t.type?n.active=[]:n.active=n.getElementsAtEventForMode(t,i.mode,i),Y.callback(r.onHover||r.hover.onHover,[t.native,n.active],n),"mouseup"!==t.type&&"click"!==t.type||r.onClick&&r.onClick.call(n,t.native,n.active),n.lastActive.length&&n.updateHoverStyle(n.lastActive,i.mode,!1),n.active.length&&i.mode&&n.updateHoverStyle(n.active,i.mode,!0),e=!Y.arrayEquals(n.active,n.lastActive),n.lastActive=n.active,e}}),Ze.instances={};var Xe=Ze;function Je(){throw new Error("This method is not implemented: either no adapter can be found or an incomplete integration was provided.")}function $e(t){this.options=t||{}}Ze.Controller=Ze,Ze.types={},Y.configMerge=He,Y.scaleMerge=Be,Y.extend($e.prototype,{formats:Je,parse:Je,format:Je,add:Je,diff:Je,startOf:Je,endOf:Je,_create:function(t){return t}}),$e.override=function(t){Y.extend($e.prototype,t)};var Qe={_date:$e},tn={formatters:{values:function(t){return Y.isArray(t)?t:""+t},linear:function(t,e,n){var r=n.length>3?n[2]-n[1]:n[1]-n[0];Math.abs(r)>1&&t!==Math.floor(t)&&(r=t-Math.floor(t));var i=Y.log10(Math.abs(r)),a="";if(0!==t)if(Math.max(Math.abs(n[0]),Math.abs(n[n.length-1]))<1e-4){var o=Y.log10(Math.abs(t)),s=Math.floor(o)-Math.floor(i);s=Math.max(Math.min(s,20),0),a=t.toExponential(s)}else{var l=-1*Math.floor(i);l=Math.max(Math.min(l,20),0),a=t.toFixed(l)}else a="0";return a},logarithmic:function(t,e,n){var r=t/Math.pow(10,Math.floor(Y.log10(t)));return 0===t?"0":1===r||2===r||5===r||0===e||e===n.length-1?t.toExponential():""}}},en=Y.isArray,nn=Y.isNullOrUndef,rn=Y.valueOrDefault,an=Y.valueAtIndexOrDefault;function on(t,e,n){var r,i=t.getTicks().length,a=Math.min(e,i-1),o=t.getPixelForTick(a),s=t._startPixel,l=t._endPixel;if(!(n&&(r=1===i?Math.max(o-s,l-o):0===e?(t.getPixelForTick(1)-o)/2:(o-t.getPixelForTick(a-1))/2,(o+=a<e?r:-r)<s-1e-6||o>l+1e-6)))return o}function sn(t,e,n,r){var i,a,o,s,l,u,c,h,d,f,p,g,m,v=n.length,y=[],b=[],x=[];for(i=0;i<v;++i){if(s=n[i].label,l=n[i].major?e.major:e.minor,t.font=u=l.string,c=r[u]=r[u]||{data:{},gc:[]},h=l.lineHeight,d=f=0,nn(s)||en(s)){if(en(s))for(a=0,o=s.length;a<o;++a)p=s[a],nn(p)||en(p)||(d=Y.measureText(t,c.data,c.gc,d,p),f+=h)}else d=Y.measureText(t,c.data,c.gc,d,s),f=h;y.push(d),b.push(f),x.push(h/2)}function _(t){return{width:y[t]||0,height:b[t]||0,offset:x[t]||0}}return function(t,e){Y.each(t,(function(t){var n,r=t.gc,i=r.length/2;if(i>e){for(n=0;n<i;++n)delete t.data[r[n]];r.splice(0,i)}}))}(r,v),g=y.indexOf(Math.max.apply(null,y)),m=b.indexOf(Math.max.apply(null,b)),{first:_(0),last:_(v-1),widest:_(g),highest:_(m)}}function ln(t){return t.drawTicks?t.tickMarkLength:0}function un(t){var e,n;return t.display?(e=Y.options._parseFont(t),n=Y.options.toPadding(t.padding),e.lineHeight+n.height):0}function cn(t,e){return Y.extend(Y.options._parseFont({fontFamily:rn(e.fontFamily,t.fontFamily),fontSize:rn(e.fontSize,t.fontSize),fontStyle:rn(e.fontStyle,t.fontStyle),lineHeight:rn(e.lineHeight,t.lineHeight)}),{color:Y.options.resolve([e.fontColor,t.fontColor,N.global.defaultFontColor])})}function hn(t){var e=cn(t,t.minor);return{minor:e,major:t.major.enabled?cn(t,t.major):e}}function dn(t){var e,n,r,i=[];for(n=0,r=t.length;n<r;++n)void 0!==(e=t[n])._index&&i.push(e);return i}function fn(t,e,n,r){var i,a,o,s,l=rn(n,0),u=Math.min(rn(r,t.length),t.length),c=0;for(e=Math.ceil(e),r&&(e=(i=r-n)/Math.floor(i/e)),s=l;s<0;)c++,s=Math.round(l+c*e);for(a=Math.max(l,0);a<u;a++)o=t[a],a===s?(o._index=a,c++,s=Math.round(l+c*e)):delete o.label}N._set("scale",{display:!0,position:"left",offset:!1,gridLines:{display:!0,color:"rgba(0,0,0,0.1)",lineWidth:1,drawBorder:!0,drawOnChartArea:!0,drawTicks:!0,tickMarkLength:10,zeroLineWidth:1,zeroLineColor:"rgba(0,0,0,0.25)",zeroLineBorderDash:[],zeroLineBorderDashOffset:0,offsetGridLines:!1,borderDash:[],borderDashOffset:0},scaleLabel:{display:!1,labelString:"",padding:{top:4,bottom:4}},ticks:{beginAtZero:!1,minRotation:0,maxRotation:50,mirror:!1,padding:0,reverse:!1,display:!0,autoSkip:!0,autoSkipPadding:0,labelOffset:0,callback:tn.formatters.values,minor:{},major:{}}});var pn=K.extend({zeroLineIndex:0,getPadding:function(){return{left:this.paddingLeft||0,top:this.paddingTop||0,right:this.paddingRight||0,bottom:this.paddingBottom||0}},getTicks:function(){return this._ticks},_getLabels:function(){var t=this.chart.data;return this.options.labels||(this.isHorizontal()?t.xLabels:t.yLabels)||t.labels||[]},mergeTicksOptions:function(){},beforeUpdate:function(){Y.callback(this.options.beforeUpdate,[this])},update:function(t,e,n){var r,i,a,o,s,l=this,u=l.options.ticks,c=u.sampleSize;if(l.beforeUpdate(),l.maxWidth=t,l.maxHeight=e,l.margins=Y.extend({left:0,right:0,top:0,bottom:0},n),l._ticks=null,l.ticks=null,l._labelSizes=null,l._maxLabelLines=0,l.longestLabelWidth=0,l.longestTextCache=l.longestTextCache||{},l._gridLineItems=null,l._labelItems=null,l.beforeSetDimensions(),l.setDimensions(),l.afterSetDimensions(),l.beforeDataLimits(),l.determineDataLimits(),l.afterDataLimits(),l.beforeBuildTicks(),o=l.buildTicks()||[],(!(o=l.afterBuildTicks(o)||o)||!o.length)&&l.ticks)for(o=[],r=0,i=l.ticks.length;r<i;++r)o.push({value:l.ticks[r],major:!1});return l._ticks=o,s=c<o.length,a=l._convertTicksToLabels(s?function(t,e){for(var n=[],r=t.length/e,i=0,a=t.length;i<a;i+=r)n.push(t[Math.floor(i)]);return n}(o,c):o),l._configure(),l.beforeCalculateTickRotation(),l.calculateTickRotation(),l.afterCalculateTickRotation(),l.beforeFit(),l.fit(),l.afterFit(),l._ticksToDraw=u.display&&(u.autoSkip||"auto"===u.source)?l._autoSkip(o):o,s&&(a=l._convertTicksToLabels(l._ticksToDraw)),l.ticks=a,l.afterUpdate(),l.minSize},_configure:function(){var t,e,n=this,r=n.options.ticks.reverse;n.isHorizontal()?(t=n.left,e=n.right):(t=n.top,e=n.bottom,r=!r),n._startPixel=t,n._endPixel=e,n._reversePixels=r,n._length=e-t},afterUpdate:function(){Y.callback(this.options.afterUpdate,[this])},beforeSetDimensions:function(){Y.callback(this.options.beforeSetDimensions,[this])},setDimensions:function(){var t=this;t.isHorizontal()?(t.width=t.maxWidth,t.left=0,t.right=t.width):(t.height=t.maxHeight,t.top=0,t.bottom=t.height),t.paddingLeft=0,t.paddingTop=0,t.paddingRight=0,t.paddingBottom=0},afterSetDimensions:function(){Y.callback(this.options.afterSetDimensions,[this])},beforeDataLimits:function(){Y.callback(this.options.beforeDataLimits,[this])},determineDataLimits:Y.noop,afterDataLimits:function(){Y.callback(this.options.afterDataLimits,[this])},beforeBuildTicks:function(){Y.callback(this.options.beforeBuildTicks,[this])},buildTicks:Y.noop,afterBuildTicks:function(t){var e=this;return en(t)&&t.length?Y.callback(e.options.afterBuildTicks,[e,t]):(e.ticks=Y.callback(e.options.afterBuildTicks,[e,e.ticks])||e.ticks,t)},beforeTickToLabelConversion:function(){Y.callback(this.options.beforeTickToLabelConversion,[this])},convertTicksToLabels:function(){var t=this.options.ticks;this.ticks=this.ticks.map(t.userCallback||t.callback,this)},afterTickToLabelConversion:function(){Y.callback(this.options.afterTickToLabelConversion,[this])},beforeCalculateTickRotation:function(){Y.callback(this.options.beforeCalculateTickRotation,[this])},calculateTickRotation:function(){var t,e,n,r,i,a,o,s=this,l=s.options,u=l.ticks,c=s.getTicks().length,h=u.minRotation||0,d=u.maxRotation,f=h;!s._isVisible()||!u.display||h>=d||c<=1||!s.isHorizontal()?s.labelRotation=h:(e=(t=s._getLabelSizes()).widest.width,n=t.highest.height-t.highest.offset,r=Math.min(s.maxWidth,s.chart.width-e),e+6>(i=l.offset?s.maxWidth/c:r/(c-1))&&(i=r/(c-(l.offset?.5:1)),a=s.maxHeight-ln(l.gridLines)-u.padding-un(l.scaleLabel),o=Math.sqrt(e*e+n*n),f=Y.toDegrees(Math.min(Math.asin(Math.min((t.highest.height+6)/i,1)),Math.asin(Math.min(a/o,1))-Math.asin(n/o))),f=Math.max(h,Math.min(d,f))),s.labelRotation=f)},afterCalculateTickRotation:function(){Y.callback(this.options.afterCalculateTickRotation,[this])},beforeFit:function(){Y.callback(this.options.beforeFit,[this])},fit:function(){var t=this,e=t.minSize={width:0,height:0},n=t.chart,r=t.options,i=r.ticks,a=r.scaleLabel,o=r.gridLines,s=t._isVisible(),l="bottom"===r.position,u=t.isHorizontal();if(u?e.width=t.maxWidth:s&&(e.width=ln(o)+un(a)),u?s&&(e.height=ln(o)+un(a)):e.height=t.maxHeight,i.display&&s){var c=hn(i),h=t._getLabelSizes(),d=h.first,f=h.last,p=h.widest,g=h.highest,m=.4*c.minor.lineHeight,v=i.padding;if(u){var y=0!==t.labelRotation,b=Y.toRadians(t.labelRotation),x=Math.cos(b),_=Math.sin(b),w=_*p.width+x*(g.height-(y?g.offset:0))+(y?0:m);e.height=Math.min(t.maxHeight,e.height+w+v);var k,M,S=t.getPixelForTick(0)-t.left,D=t.right-t.getPixelForTick(t.getTicks().length-1);y?(k=l?x*d.width+_*d.offset:_*(d.height-d.offset),M=l?_*(f.height-f.offset):x*f.width+_*f.offset):(k=d.width/2,M=f.width/2),t.paddingLeft=Math.max((k-S)*t.width/(t.width-S),0)+3,t.paddingRight=Math.max((M-D)*t.width/(t.width-D),0)+3}else{var C=i.mirror?0:p.width+v+m;e.width=Math.min(t.maxWidth,e.width+C),t.paddingTop=d.height/2,t.paddingBottom=f.height/2}}t.handleMargins(),u?(t.width=t._length=n.width-t.margins.left-t.margins.right,t.height=e.height):(t.width=e.width,t.height=t._length=n.height-t.margins.top-t.margins.bottom)},handleMargins:function(){var t=this;t.margins&&(t.margins.left=Math.max(t.paddingLeft,t.margins.left),t.margins.top=Math.max(t.paddingTop,t.margins.top),t.margins.right=Math.max(t.paddingRight,t.margins.right),t.margins.bottom=Math.max(t.paddingBottom,t.margins.bottom))},afterFit:function(){Y.callback(this.options.afterFit,[this])},isHorizontal:function(){var t=this.options.position;return"top"===t||"bottom"===t},isFullWidth:function(){return this.options.fullWidth},getRightValue:function(t){if(nn(t))return NaN;if(("number"==typeof t||t instanceof Number)&&!isFinite(t))return NaN;if(t)if(this.isHorizontal()){if(void 0!==t.x)return this.getRightValue(t.x)}else if(void 0!==t.y)return this.getRightValue(t.y);return t},_convertTicksToLabels:function(t){var e,n,r,i=this;for(i.ticks=t.map((function(t){return t.value})),i.beforeTickToLabelConversion(),e=i.convertTicksToLabels(t)||i.ticks,i.afterTickToLabelConversion(),n=0,r=t.length;n<r;++n)t[n].label=e[n];return e},_getLabelSizes:function(){var t=this,e=t._labelSizes;return e||(t._labelSizes=e=sn(t.ctx,hn(t.options.ticks),t.getTicks(),t.longestTextCache),t.longestLabelWidth=e.widest.width),e},_parseValue:function(t){var e,n,r,i;return en(t)?(e=+this.getRightValue(t[0]),n=+this.getRightValue(t[1]),r=Math.min(e,n),i=Math.max(e,n)):(e=void 0,n=t=+this.getRightValue(t),r=t,i=t),{min:r,max:i,start:e,end:n}},_getScaleLabel:function(t){var e=this._parseValue(t);return void 0!==e.start?"["+e.start+", "+e.end+"]":+this.getRightValue(t)},getLabelForIndex:Y.noop,getPixelForValue:Y.noop,getValueForPixel:Y.noop,getPixelForTick:function(t){var e=this.options.offset,n=this._ticks.length,r=1/Math.max(n-(e?0:1),1);return t<0||t>n-1?null:this.getPixelForDecimal(t*r+(e?r/2:0))},getPixelForDecimal:function(t){return this._reversePixels&&(t=1-t),this._startPixel+t*this._length},getDecimalForPixel:function(t){var e=(t-this._startPixel)/this._length;return this._reversePixels?1-e:e},getBasePixel:function(){return this.getPixelForValue(this.getBaseValue())},getBaseValue:function(){var t=this.min,e=this.max;return this.beginAtZero?0:t<0&&e<0?e:t>0&&e>0?t:0},_autoSkip:function(t){var e,n,r,i,a=this.options.ticks,o=this._length,s=a.maxTicksLimit||o/this._tickSize()+1,l=a.major.enabled?function(t){var e,n,r=[];for(e=0,n=t.length;e<n;e++)t[e].major&&r.push(e);return r}(t):[],u=l.length,c=l[0],h=l[u-1];if(u>s)return function(t,e,n){var r,i,a=0,o=e[0];for(n=Math.ceil(n),r=0;r<t.length;r++)i=t[r],r===o?(i._index=r,o=e[++a*n]):delete i.label}(t,l,u/s),dn(t);if(r=function(t,e,n,r){var i,a,o,s,l=function(t){var e,n,r=t.length;if(r<2)return!1;for(n=t[0],e=1;e<r;++e)if(t[e]-t[e-1]!==n)return!1;return n}(t),u=(e.length-1)/r;if(!l)return Math.max(u,1);for(o=0,s=(i=Y.math._factorize(l)).length-1;o<s;o++)if((a=i[o])>u)return a;return Math.max(u,1)}(l,t,0,s),u>0){for(e=0,n=u-1;e<n;e++)fn(t,r,l[e],l[e+1]);return i=u>1?(h-c)/(u-1):null,fn(t,r,Y.isNullOrUndef(i)?0:c-i,c),fn(t,r,h,Y.isNullOrUndef(i)?t.length:h+i),dn(t)}return fn(t,r),dn(t)},_tickSize:function(){var t=this.options.ticks,e=Y.toRadians(this.labelRotation),n=Math.abs(Math.cos(e)),r=Math.abs(Math.sin(e)),i=this._getLabelSizes(),a=t.autoSkipPadding||0,o=i?i.widest.width+a:0,s=i?i.highest.height+a:0;return this.isHorizontal()?s*n>o*r?o/n:s/r:s*r<o*n?s/n:o/r},_isVisible:function(){var t,e,n,r=this.chart,i=this.options.display;if("auto"!==i)return!!i;for(t=0,e=r.data.datasets.length;t<e;++t)if(r.isDatasetVisible(t)&&((n=r.getDatasetMeta(t)).xAxisID===this.id||n.yAxisID===this.id))return!0;return!1},_computeGridLineItems:function(t){var e,n,r,i,a,o,s,l,u,c,h,d,f,p,g,m,v,y=this,b=y.chart,x=y.options,_=x.gridLines,w=x.position,k=_.offsetGridLines,M=y.isHorizontal(),S=y._ticksToDraw,D=S.length+(k?1:0),C=ln(_),O=[],T=_.drawBorder?an(_.lineWidth,0,0):0,P=T/2,A=Y._alignPixel,I=function(t){return A(b,t,T)};for("top"===w?(e=I(y.bottom),s=y.bottom-C,u=e-P,h=I(t.top)+P,f=t.bottom):"bottom"===w?(e=I(y.top),h=t.top,f=I(t.bottom)-P,s=e+P,u=y.top+C):"left"===w?(e=I(y.right),o=y.right-C,l=e-P,c=I(t.left)+P,d=t.right):(e=I(y.left),c=t.left,d=I(t.right)-P,o=e+P,l=y.left+C),n=0;n<D;++n)r=S[n]||{},nn(r.label)&&n<S.length||(n===y.zeroLineIndex&&x.offset===k?(p=_.zeroLineWidth,g=_.zeroLineColor,m=_.zeroLineBorderDash||[],v=_.zeroLineBorderDashOffset||0):(p=an(_.lineWidth,n,1),g=an(_.color,n,"rgba(0,0,0,0.1)"),m=_.borderDash||[],v=_.borderDashOffset||0),void 0!==(i=on(y,r._index||n,k))&&(a=A(b,i,p),M?o=l=c=d=a:s=u=h=f=a,O.push({tx1:o,ty1:s,tx2:l,ty2:u,x1:c,y1:h,x2:d,y2:f,width:p,color:g,borderDash:m,borderDashOffset:v})));return O.ticksLength=D,O.borderValue=e,O},_computeLabelItems:function(){var t,e,n,r,i,a,o,s,l,u,c,h,d=this,f=d.options,p=f.ticks,g=f.position,m=p.mirror,v=d.isHorizontal(),y=d._ticksToDraw,b=hn(p),x=p.padding,_=ln(f.gridLines),w=-Y.toRadians(d.labelRotation),k=[];for("top"===g?(a=d.bottom-_-x,o=w?"left":"center"):"bottom"===g?(a=d.top+_+x,o=w?"right":"center"):"left"===g?(i=d.right-(m?0:_)-x,o=m?"left":"right"):(i=d.left+(m?0:_)+x,o=m?"right":"left"),t=0,e=y.length;t<e;++t)r=(n=y[t]).label,nn(r)||(s=d.getPixelForTick(n._index||t)+p.labelOffset,u=(l=n.major?b.major:b.minor).lineHeight,c=en(r)?r.length:1,v?(i=s,h="top"===g?((w?1:.5)-c)*u:(w?0:.5)*u):(a=s,h=(1-c)*u/2),k.push({x:i,y:a,rotation:w,label:r,font:l,textOffset:h,textAlign:o}));return k},_drawGrid:function(t){var e=this,n=e.options.gridLines;if(n.display){var r,i,a,o,s,l=e.ctx,u=e.chart,c=Y._alignPixel,h=n.drawBorder?an(n.lineWidth,0,0):0,d=e._gridLineItems||(e._gridLineItems=e._computeGridLineItems(t));for(a=0,o=d.length;a<o;++a)r=(s=d[a]).width,i=s.color,r&&i&&(l.save(),l.lineWidth=r,l.strokeStyle=i,l.setLineDash&&(l.setLineDash(s.borderDash),l.lineDashOffset=s.borderDashOffset),l.beginPath(),n.drawTicks&&(l.moveTo(s.tx1,s.ty1),l.lineTo(s.tx2,s.ty2)),n.drawOnChartArea&&(l.moveTo(s.x1,s.y1),l.lineTo(s.x2,s.y2)),l.stroke(),l.restore());if(h){var f,p,g,m,v=h,y=an(n.lineWidth,d.ticksLength-1,1),b=d.borderValue;e.isHorizontal()?(f=c(u,e.left,v)-v/2,p=c(u,e.right,y)+y/2,g=m=b):(g=c(u,e.top,v)-v/2,m=c(u,e.bottom,y)+y/2,f=p=b),l.lineWidth=h,l.strokeStyle=an(n.color,0),l.beginPath(),l.moveTo(f,g),l.lineTo(p,m),l.stroke()}}},_drawLabels:function(){var t=this;if(t.options.ticks.display){var e,n,r,i,a,o,s,l,u=t.ctx,c=t._labelItems||(t._labelItems=t._computeLabelItems());for(e=0,r=c.length;e<r;++e){if(o=(a=c[e]).font,u.save(),u.translate(a.x,a.y),u.rotate(a.rotation),u.font=o.string,u.fillStyle=o.color,u.textBaseline="middle",u.textAlign=a.textAlign,s=a.label,l=a.textOffset,en(s))for(n=0,i=s.length;n<i;++n)u.fillText(""+s[n],0,l),l+=o.lineHeight;else u.fillText(s,0,l);u.restore()}}},_drawTitle:function(){var t=this,e=t.ctx,n=t.options,r=n.scaleLabel;if(r.display){var i,a,o=rn(r.fontColor,N.global.defaultFontColor),s=Y.options._parseFont(r),l=Y.options.toPadding(r.padding),u=s.lineHeight/2,c=n.position,h=0;if(t.isHorizontal())i=t.left+t.width/2,a="bottom"===c?t.bottom-u-l.bottom:t.top+u+l.top;else{var d="left"===c;i=d?t.left+u+l.top:t.right-u-l.top,a=t.top+t.height/2,h=d?-.5*Math.PI:.5*Math.PI}e.save(),e.translate(i,a),e.rotate(h),e.textAlign="center",e.textBaseline="middle",e.fillStyle=o,e.font=s.string,e.fillText(r.labelString,0,0),e.restore()}},draw:function(t){this._isVisible()&&(this._drawGrid(t),this._drawTitle(),this._drawLabels())},_layers:function(){var t=this,e=t.options,n=e.ticks&&e.ticks.z||0,r=e.gridLines&&e.gridLines.z||0;return t._isVisible()&&n!==r&&t.draw===t._draw?[{z:r,draw:function(){t._drawGrid.apply(t,arguments),t._drawTitle.apply(t,arguments)}},{z:n,draw:function(){t._drawLabels.apply(t,arguments)}}]:[{z:n,draw:function(){t.draw.apply(t,arguments)}}]},_getMatchingVisibleMetas:function(t){var e=this,n=e.isHorizontal();return e.chart._getSortedVisibleDatasetMetas().filter((function(r){return(!t||r.type===t)&&(n?r.xAxisID===e.id:r.yAxisID===e.id)}))}});pn.prototype._draw=pn.prototype.draw;var gn=pn,mn=Y.isNullOrUndef,vn=gn.extend({determineDataLimits:function(){var t,e=this,n=e._getLabels(),r=e.options.ticks,i=r.min,a=r.max,o=0,s=n.length-1;void 0!==i&&(t=n.indexOf(i))>=0&&(o=t),void 0!==a&&(t=n.indexOf(a))>=0&&(s=t),e.minIndex=o,e.maxIndex=s,e.min=n[o],e.max=n[s]},buildTicks:function(){var t=this._getLabels(),e=this.minIndex,n=this.maxIndex;this.ticks=0===e&&n===t.length-1?t:t.slice(e,n+1)},getLabelForIndex:function(t,e){var n=this.chart;return n.getDatasetMeta(e).controller._getValueScaleId()===this.id?this.getRightValue(n.data.datasets[e].data[t]):this._getLabels()[t]},_configure:function(){var t=this,e=t.options.offset,n=t.ticks;gn.prototype._configure.call(t),t.isHorizontal()||(t._reversePixels=!t._reversePixels),n&&(t._startValue=t.minIndex-(e?.5:0),t._valueRange=Math.max(n.length-(e?0:1),1))},getPixelForValue:function(t,e,n){var r,i,a,o=this;return mn(e)||mn(n)||(t=o.chart.data.datasets[n].data[e]),mn(t)||(r=o.isHorizontal()?t.x:t.y),(void 0!==r||void 0!==t&&isNaN(e))&&(i=o._getLabels(),t=Y.valueOrDefault(r,t),e=-1!==(a=i.indexOf(t))?a:e,isNaN(e)&&(e=t)),o.getPixelForDecimal((e-o._startValue)/o._valueRange)},getPixelForTick:function(t){var e=this.ticks;return t<0||t>e.length-1?null:this.getPixelForValue(e[t],t+this.minIndex)},getValueForPixel:function(t){var e=Math.round(this._startValue+this.getDecimalForPixel(t)*this._valueRange);return Math.min(Math.max(e,0),this.ticks.length-1)},getBasePixel:function(){return this.bottom}}),yn={position:"bottom"};vn._defaults=yn;var bn=Y.noop,xn=Y.isNullOrUndef,_n=gn.extend({getRightValue:function(t){return"string"==typeof t?+t:gn.prototype.getRightValue.call(this,t)},handleTickRangeOptions:function(){var t=this,e=t.options.ticks;if(e.beginAtZero){var n=Y.sign(t.min),r=Y.sign(t.max);n<0&&r<0?t.max=0:n>0&&r>0&&(t.min=0)}var i=void 0!==e.min||void 0!==e.suggestedMin,a=void 0!==e.max||void 0!==e.suggestedMax;void 0!==e.min?t.min=e.min:void 0!==e.suggestedMin&&(null===t.min?t.min=e.suggestedMin:t.min=Math.min(t.min,e.suggestedMin)),void 0!==e.max?t.max=e.max:void 0!==e.suggestedMax&&(null===t.max?t.max=e.suggestedMax:t.max=Math.max(t.max,e.suggestedMax)),i!==a&&t.min>=t.max&&(i?t.max=t.min+1:t.min=t.max-1),t.min===t.max&&(t.max++,e.beginAtZero||t.min--)},getTickLimit:function(){var t,e=this.options.ticks,n=e.stepSize,r=e.maxTicksLimit;return n?t=Math.ceil(this.max/n)-Math.floor(this.min/n)+1:(t=this._computeTickLimit(),r=r||11),r&&(t=Math.min(r,t)),t},_computeTickLimit:function(){return Number.POSITIVE_INFINITY},handleDirectionalChanges:bn,buildTicks:function(){var t=this,e=t.options.ticks,n=t.getTickLimit(),r={maxTicks:n=Math.max(2,n),min:e.min,max:e.max,precision:e.precision,stepSize:Y.valueOrDefault(e.fixedStepSize,e.stepSize)},i=t.ticks=function(t,e){var n,r,i,a,o=[],s=t.stepSize,l=s||1,u=t.maxTicks-1,c=t.min,h=t.max,d=t.precision,f=e.min,p=e.max,g=Y.niceNum((p-f)/u/l)*l;if(g<1e-14&&xn(c)&&xn(h))return[f,p];(a=Math.ceil(p/g)-Math.floor(f/g))>u&&(g=Y.niceNum(a*g/u/l)*l),s||xn(d)?n=Math.pow(10,Y._decimalPlaces(g)):(n=Math.pow(10,d),g=Math.ceil(g*n)/n),r=Math.floor(f/g)*g,i=Math.ceil(p/g)*g,s&&(!xn(c)&&Y.almostWhole(c/g,g/1e3)&&(r=c),!xn(h)&&Y.almostWhole(h/g,g/1e3)&&(i=h)),a=(i-r)/g,a=Y.almostEquals(a,Math.round(a),g/1e3)?Math.round(a):Math.ceil(a),r=Math.round(r*n)/n,i=Math.round(i*n)/n,o.push(xn(c)?r:c);for(var m=1;m<a;++m)o.push(Math.round((r+m*g)*n)/n);return o.push(xn(h)?i:h),o}(r,t);t.handleDirectionalChanges(),t.max=Y.max(i),t.min=Y.min(i),e.reverse?(i.reverse(),t.start=t.max,t.end=t.min):(t.start=t.min,t.end=t.max)},convertTicksToLabels:function(){var t=this;t.ticksAsNumbers=t.ticks.slice(),t.zeroLineIndex=t.ticks.indexOf(0),gn.prototype.convertTicksToLabels.call(t)},_configure:function(){var t,e=this,n=e.getTicks(),r=e.min,i=e.max;gn.prototype._configure.call(e),e.options.offset&&n.length&&(r-=t=(i-r)/Math.max(n.length-1,1)/2,i+=t),e._startValue=r,e._endValue=i,e._valueRange=i-r}}),wn={position:"left",ticks:{callback:tn.formatters.linear}};function kn(t,e,n,r){var i,a,o=t.options,s=function(t,e,n){var r=[n.type,void 0===e&&void 0===n.stack?n.index:"",n.stack].join(".");return void 0===t[r]&&(t[r]={pos:[],neg:[]}),t[r]}(e,o.stacked,n),l=s.pos,u=s.neg,c=r.length;for(i=0;i<c;++i)a=t._parseValue(r[i]),isNaN(a.min)||isNaN(a.max)||n.data[i].hidden||(l[i]=l[i]||0,u[i]=u[i]||0,o.relativePoints?l[i]=100:a.min<0||a.max<0?u[i]+=a.min:l[i]+=a.max)}function Mn(t,e,n){var r,i,a=n.length;for(r=0;r<a;++r)i=t._parseValue(n[r]),isNaN(i.min)||isNaN(i.max)||e.data[r].hidden||(t.min=Math.min(t.min,i.min),t.max=Math.max(t.max,i.max))}var Sn=_n.extend({determineDataLimits:function(){var t,e,n,r,i=this,a=i.options,o=i.chart.data.datasets,s=i._getMatchingVisibleMetas(),l=a.stacked,u={},c=s.length;if(i.min=Number.POSITIVE_INFINITY,i.max=Number.NEGATIVE_INFINITY,void 0===l)for(t=0;!l&&t<c;++t)l=void 0!==(e=s[t]).stack;for(t=0;t<c;++t)n=o[(e=s[t]).index].data,l?kn(i,u,e,n):Mn(i,e,n);Y.each(u,(function(t){r=t.pos.concat(t.neg),i.min=Math.min(i.min,Y.min(r)),i.max=Math.max(i.max,Y.max(r))})),i.min=Y.isFinite(i.min)&&!isNaN(i.min)?i.min:0,i.max=Y.isFinite(i.max)&&!isNaN(i.max)?i.max:1,i.handleTickRangeOptions()},_computeTickLimit:function(){var t;return this.isHorizontal()?Math.ceil(this.width/40):(t=Y.options._parseFont(this.options.ticks),Math.ceil(this.height/t.lineHeight))},handleDirectionalChanges:function(){this.isHorizontal()||this.ticks.reverse()},getLabelForIndex:function(t,e){return this._getScaleLabel(this.chart.data.datasets[e].data[t])},getPixelForValue:function(t){return this.getPixelForDecimal((+this.getRightValue(t)-this._startValue)/this._valueRange)},getValueForPixel:function(t){return this._startValue+this.getDecimalForPixel(t)*this._valueRange},getPixelForTick:function(t){var e=this.ticksAsNumbers;return t<0||t>e.length-1?null:this.getPixelForValue(e[t])}}),Dn=wn;Sn._defaults=Dn;var Cn=Y.valueOrDefault,On=Y.math.log10,Tn={position:"left",ticks:{callback:tn.formatters.logarithmic}};function Pn(t,e){return Y.isFinite(t)&&t>=0?t:e}var An=gn.extend({determineDataLimits:function(){var t,e,n,r,i,a,o=this,s=o.options,l=o.chart,u=l.data.datasets,c=o.isHorizontal();function h(t){return c?t.xAxisID===o.id:t.yAxisID===o.id}o.min=Number.POSITIVE_INFINITY,o.max=Number.NEGATIVE_INFINITY,o.minNotZero=Number.POSITIVE_INFINITY;var d=s.stacked;if(void 0===d)for(t=0;t<u.length;t++)if(e=l.getDatasetMeta(t),l.isDatasetVisible(t)&&h(e)&&void 0!==e.stack){d=!0;break}if(s.stacked||d){var f={};for(t=0;t<u.length;t++){var p=[(e=l.getDatasetMeta(t)).type,void 0===s.stacked&&void 0===e.stack?t:"",e.stack].join(".");if(l.isDatasetVisible(t)&&h(e))for(void 0===f[p]&&(f[p]=[]),i=0,a=(r=u[t].data).length;i<a;i++){var g=f[p];n=o._parseValue(r[i]),isNaN(n.min)||isNaN(n.max)||e.data[i].hidden||n.min<0||n.max<0||(g[i]=g[i]||0,g[i]+=n.max)}}Y.each(f,(function(t){if(t.length>0){var e=Y.min(t),n=Y.max(t);o.min=Math.min(o.min,e),o.max=Math.max(o.max,n)}}))}else for(t=0;t<u.length;t++)if(e=l.getDatasetMeta(t),l.isDatasetVisible(t)&&h(e))for(i=0,a=(r=u[t].data).length;i<a;i++)n=o._parseValue(r[i]),isNaN(n.min)||isNaN(n.max)||e.data[i].hidden||n.min<0||n.max<0||(o.min=Math.min(n.min,o.min),o.max=Math.max(n.max,o.max),0!==n.min&&(o.minNotZero=Math.min(n.min,o.minNotZero)));o.min=Y.isFinite(o.min)?o.min:null,o.max=Y.isFinite(o.max)?o.max:null,o.minNotZero=Y.isFinite(o.minNotZero)?o.minNotZero:null,this.handleTickRangeOptions()},handleTickRangeOptions:function(){var t=this,e=t.options.ticks;t.min=Pn(e.min,t.min),t.max=Pn(e.max,t.max),t.min===t.max&&(0!==t.min&&null!==t.min?(t.min=Math.pow(10,Math.floor(On(t.min))-1),t.max=Math.pow(10,Math.floor(On(t.max))+1)):(t.min=1,t.max=10)),null===t.min&&(t.min=Math.pow(10,Math.floor(On(t.max))-1)),null===t.max&&(t.max=0!==t.min?Math.pow(10,Math.floor(On(t.min))+1):10),null===t.minNotZero&&(t.min>0?t.minNotZero=t.min:t.max<1?t.minNotZero=Math.pow(10,Math.floor(On(t.max))):t.minNotZero=1)},buildTicks:function(){var t=this,e=t.options.ticks,n=!t.isHorizontal(),r={min:Pn(e.min),max:Pn(e.max)},i=t.ticks=function(t,e){var n,r,i=[],a=Cn(t.min,Math.pow(10,Math.floor(On(e.min)))),o=Math.floor(On(e.max)),s=Math.ceil(e.max/Math.pow(10,o));0===a?(n=Math.floor(On(e.minNotZero)),r=Math.floor(e.minNotZero/Math.pow(10,n)),i.push(a),a=r*Math.pow(10,n)):(n=Math.floor(On(a)),r=Math.floor(a/Math.pow(10,n)));var l=n<0?Math.pow(10,Math.abs(n)):1;do{i.push(a),10==++r&&(r=1,l=++n>=0?1:l),a=Math.round(r*Math.pow(10,n)*l)/l}while(n<o||n===o&&r<s);var u=Cn(t.max,a);return i.push(u),i}(r,t);t.max=Y.max(i),t.min=Y.min(i),e.reverse?(n=!n,t.start=t.max,t.end=t.min):(t.start=t.min,t.end=t.max),n&&i.reverse()},convertTicksToLabels:function(){this.tickValues=this.ticks.slice(),gn.prototype.convertTicksToLabels.call(this)},getLabelForIndex:function(t,e){return this._getScaleLabel(this.chart.data.datasets[e].data[t])},getPixelForTick:function(t){var e=this.tickValues;return t<0||t>e.length-1?null:this.getPixelForValue(e[t])},_getFirstTickValue:function(t){var e=Math.floor(On(t));return Math.floor(t/Math.pow(10,e))*Math.pow(10,e)},_configure:function(){var t=this,e=t.min,n=0;gn.prototype._configure.call(t),0===e&&(e=t._getFirstTickValue(t.minNotZero),n=Cn(t.options.ticks.fontSize,N.global.defaultFontSize)/t._length),t._startValue=On(e),t._valueOffset=n,t._valueRange=(On(t.max)-On(e))/(1-n)},getPixelForValue:function(t){var e=this,n=0;return(t=+e.getRightValue(t))>e.min&&t>0&&(n=(On(t)-e._startValue)/e._valueRange+e._valueOffset),e.getPixelForDecimal(n)},getValueForPixel:function(t){var e=this,n=e.getDecimalForPixel(t);return 0===n&&0===e.min?0:Math.pow(10,e._startValue+(n-e._valueOffset)*e._valueRange)}}),In=Tn;An._defaults=In;var Fn=Y.valueOrDefault,Ln=Y.valueAtIndexOrDefault,Rn=Y.options.resolve,Nn={display:!0,animate:!0,position:"chartArea",angleLines:{display:!0,color:"rgba(0,0,0,0.1)",lineWidth:1,borderDash:[],borderDashOffset:0},gridLines:{circular:!1},ticks:{showLabelBackdrop:!0,backdropColor:"rgba(255,255,255,0.75)",backdropPaddingY:2,backdropPaddingX:2,callback:tn.formatters.linear},pointLabels:{display:!0,fontSize:10,callback:function(t){return t}}};function En(t){var e=t.ticks;return e.display&&t.display?Fn(e.fontSize,N.global.defaultFontSize)+2*e.backdropPaddingY:0}function jn(t,e,n,r,i){return t===r||t===i?{start:e-n/2,end:e+n/2}:t<r||t>i?{start:e-n,end:e}:{start:e,end:e+n}}function zn(t){return 0===t||180===t?"center":t<180?"left":"right"}function Wn(t,e,n,r){var i,a,o=n.y+r/2;if(Y.isArray(e))for(i=0,a=e.length;i<a;++i)t.fillText(e[i],n.x,o),o+=r;else t.fillText(e,n.x,o)}function Yn(t,e,n){90===t||270===t?n.y-=e.h/2:(t>270||t<90)&&(n.y-=e.h)}function Vn(t){return Y.isNumber(t)?t:0}var Bn=_n.extend({setDimensions:function(){var t=this;t.width=t.maxWidth,t.height=t.maxHeight,t.paddingTop=En(t.options)/2,t.xCenter=Math.floor(t.width/2),t.yCenter=Math.floor((t.height-t.paddingTop)/2),t.drawingArea=Math.min(t.height-t.paddingTop,t.width)/2},determineDataLimits:function(){var t=this,e=t.chart,n=Number.POSITIVE_INFINITY,r=Number.NEGATIVE_INFINITY;Y.each(e.data.datasets,(function(i,a){if(e.isDatasetVisible(a)){var o=e.getDatasetMeta(a);Y.each(i.data,(function(e,i){var a=+t.getRightValue(e);isNaN(a)||o.data[i].hidden||(n=Math.min(a,n),r=Math.max(a,r))}))}})),t.min=n===Number.POSITIVE_INFINITY?0:n,t.max=r===Number.NEGATIVE_INFINITY?0:r,t.handleTickRangeOptions()},_computeTickLimit:function(){return Math.ceil(this.drawingArea/En(this.options))},convertTicksToLabels:function(){var t=this;_n.prototype.convertTicksToLabels.call(t),t.pointLabels=t.chart.data.labels.map((function(){var e=Y.callback(t.options.pointLabels.callback,arguments,t);return e||0===e?e:""}))},getLabelForIndex:function(t,e){return+this.getRightValue(this.chart.data.datasets[e].data[t])},fit:function(){var t=this.options;t.display&&t.pointLabels.display?function(t){var e,n,r,i=Y.options._parseFont(t.options.pointLabels),a={l:0,r:t.width,t:0,b:t.height-t.paddingTop},o={};t.ctx.font=i.string,t._pointLabelSizes=[];var s,l,u,c=t.chart.data.labels.length;for(e=0;e<c;e++){r=t.getPointPosition(e,t.drawingArea+5),s=t.ctx,l=i.lineHeight,u=t.pointLabels[e],n=Y.isArray(u)?{w:Y.longestText(s,s.font,u),h:u.length*l}:{w:s.measureText(u).width,h:l},t._pointLabelSizes[e]=n;var h=t.getIndexAngle(e),d=Y.toDegrees(h)%360,f=jn(d,r.x,n.w,0,180),p=jn(d,r.y,n.h,90,270);f.start<a.l&&(a.l=f.start,o.l=h),f.end>a.r&&(a.r=f.end,o.r=h),p.start<a.t&&(a.t=p.start,o.t=h),p.end>a.b&&(a.b=p.end,o.b=h)}t.setReductions(t.drawingArea,a,o)}(this):this.setCenterPoint(0,0,0,0)},setReductions:function(t,e,n){var r=this,i=e.l/Math.sin(n.l),a=Math.max(e.r-r.width,0)/Math.sin(n.r),o=-e.t/Math.cos(n.t),s=-Math.max(e.b-(r.height-r.paddingTop),0)/Math.cos(n.b);i=Vn(i),a=Vn(a),o=Vn(o),s=Vn(s),r.drawingArea=Math.min(Math.floor(t-(i+a)/2),Math.floor(t-(o+s)/2)),r.setCenterPoint(i,a,o,s)},setCenterPoint:function(t,e,n,r){var i=this,a=i.width-e-i.drawingArea,o=t+i.drawingArea,s=n+i.drawingArea,l=i.height-i.paddingTop-r-i.drawingArea;i.xCenter=Math.floor((o+a)/2+i.left),i.yCenter=Math.floor((s+l)/2+i.top+i.paddingTop)},getIndexAngle:function(t){var e=this.chart,n=(t*(360/e.data.labels.length)+((e.options||{}).startAngle||0))%360;return(n<0?n+360:n)*Math.PI*2/360},getDistanceFromCenterForValue:function(t){var e=this;if(Y.isNullOrUndef(t))return NaN;var n=e.drawingArea/(e.max-e.min);return e.options.ticks.reverse?(e.max-t)*n:(t-e.min)*n},getPointPosition:function(t,e){var n=this.getIndexAngle(t)-Math.PI/2;return{x:Math.cos(n)*e+this.xCenter,y:Math.sin(n)*e+this.yCenter}},getPointPositionForValue:function(t,e){return this.getPointPosition(t,this.getDistanceFromCenterForValue(e))},getBasePosition:function(t){var e=this.min,n=this.max;return this.getPointPositionForValue(t||0,this.beginAtZero?0:e<0&&n<0?n:e>0&&n>0?e:0)},_drawGrid:function(){var t,e,n,r=this,i=r.ctx,a=r.options,o=a.gridLines,s=a.angleLines,l=Fn(s.lineWidth,o.lineWidth),u=Fn(s.color,o.color);if(a.pointLabels.display&&function(t){var e=t.ctx,n=t.options,r=n.pointLabels,i=En(n),a=t.getDistanceFromCenterForValue(n.ticks.reverse?t.min:t.max),o=Y.options._parseFont(r);e.save(),e.font=o.string,e.textBaseline="middle";for(var s=t.chart.data.labels.length-1;s>=0;s--){var l=0===s?i/2:0,u=t.getPointPosition(s,a+l+5),c=Ln(r.fontColor,s,N.global.defaultFontColor);e.fillStyle=c;var h=t.getIndexAngle(s),d=Y.toDegrees(h);e.textAlign=zn(d),Yn(d,t._pointLabelSizes[s],u),Wn(e,t.pointLabels[s],u,o.lineHeight)}e.restore()}(r),o.display&&Y.each(r.ticks,(function(t,n){0!==n&&(e=r.getDistanceFromCenterForValue(r.ticksAsNumbers[n]),function(t,e,n,r){var i,a=t.ctx,o=e.circular,s=t.chart.data.labels.length,l=Ln(e.color,r-1),u=Ln(e.lineWidth,r-1);if((o||s)&&l&&u){if(a.save(),a.strokeStyle=l,a.lineWidth=u,a.setLineDash&&(a.setLineDash(e.borderDash||[]),a.lineDashOffset=e.borderDashOffset||0),a.beginPath(),o)a.arc(t.xCenter,t.yCenter,n,0,2*Math.PI);else{i=t.getPointPosition(0,n),a.moveTo(i.x,i.y);for(var c=1;c<s;c++)i=t.getPointPosition(c,n),a.lineTo(i.x,i.y)}a.closePath(),a.stroke(),a.restore()}}(r,o,e,n))})),s.display&&l&&u){for(i.save(),i.lineWidth=l,i.strokeStyle=u,i.setLineDash&&(i.setLineDash(Rn([s.borderDash,o.borderDash,[]])),i.lineDashOffset=Rn([s.borderDashOffset,o.borderDashOffset,0])),t=r.chart.data.labels.length-1;t>=0;t--)e=r.getDistanceFromCenterForValue(a.ticks.reverse?r.min:r.max),n=r.getPointPosition(t,e),i.beginPath(),i.moveTo(r.xCenter,r.yCenter),i.lineTo(n.x,n.y),i.stroke();i.restore()}},_drawLabels:function(){var t=this,e=t.ctx,n=t.options.ticks;if(n.display){var r,i,a=t.getIndexAngle(0),o=Y.options._parseFont(n),s=Fn(n.fontColor,N.global.defaultFontColor);e.save(),e.font=o.string,e.translate(t.xCenter,t.yCenter),e.rotate(a),e.textAlign="center",e.textBaseline="middle",Y.each(t.ticks,(function(a,l){(0!==l||n.reverse)&&(r=t.getDistanceFromCenterForValue(t.ticksAsNumbers[l]),n.showLabelBackdrop&&(i=e.measureText(a).width,e.fillStyle=n.backdropColor,e.fillRect(-i/2-n.backdropPaddingX,-r-o.size/2-n.backdropPaddingY,i+2*n.backdropPaddingX,o.size+2*n.backdropPaddingY)),e.fillStyle=s,e.fillText(a,0,-r))})),e.restore()}},_drawTitle:Y.noop}),Hn=Nn;Bn._defaults=Hn;var Un=Y._deprecated,Gn=Y.options.resolve,qn=Y.valueOrDefault,Kn=Number.MIN_SAFE_INTEGER||-9007199254740991,Zn=Number.MAX_SAFE_INTEGER||9007199254740991,Xn={millisecond:{common:!0,size:1,steps:1e3},second:{common:!0,size:1e3,steps:60},minute:{common:!0,size:6e4,steps:60},hour:{common:!0,size:36e5,steps:24},day:{common:!0,size:864e5,steps:30},week:{common:!1,size:6048e5,steps:4},month:{common:!0,size:2628e6,steps:12},quarter:{common:!1,size:7884e6,steps:4},year:{common:!0,size:3154e7}},Jn=Object.keys(Xn);function $n(t,e){return t-e}function Qn(t){return Y.valueOrDefault(t.time.min,t.ticks.min)}function tr(t){return Y.valueOrDefault(t.time.max,t.ticks.max)}function er(t,e,n,r){var i=function(t,e,n){for(var r,i,a,o=0,s=t.length-1;o>=0&&o<=s;){if(i=t[(r=o+s>>1)-1]||null,a=t[r],!i)return{lo:null,hi:a};if(a[e]<n)o=r+1;else{if(!(i[e]>n))return{lo:i,hi:a};s=r-1}}return{lo:a,hi:null}}(t,e,n),a=i.lo?i.hi?i.lo:t[t.length-2]:t[0],o=i.lo?i.hi?i.hi:t[t.length-1]:t[1],s=o[e]-a[e],l=s?(n-a[e])/s:0,u=(o[r]-a[r])*l;return a[r]+u}function nr(t,e){var n=t._adapter,r=t.options.time,i=r.parser,a=i||r.format,o=e;return"function"==typeof i&&(o=i(o)),Y.isFinite(o)||(o="string"==typeof a?n.parse(o,a):n.parse(o)),null!==o?+o:(i||"function"!=typeof a||(o=a(e),Y.isFinite(o)||(o=n.parse(o))),o)}function rr(t,e){if(Y.isNullOrUndef(e))return null;var n=t.options.time,r=nr(t,t.getRightValue(e));return null===r?r:(n.round&&(r=+t._adapter.startOf(r,n.round)),r)}function ir(t,e,n,r){var i,a,o,s=Jn.length;for(i=Jn.indexOf(t);i<s-1;++i)if(o=(a=Xn[Jn[i]]).steps?a.steps:Zn,a.common&&Math.ceil((n-e)/(o*a.size))<=r)return Jn[i];return Jn[s-1]}function ar(t,e,n){var r,i,a=[],o={},s=e.length;for(r=0;r<s;++r)o[i=e[r]]=r,a.push({value:i,major:!1});return 0!==s&&n?function(t,e,n,r){var i,a,o=t._adapter,s=+o.startOf(e[0].value,r),l=e[e.length-1].value;for(i=s;i<=l;i=+o.add(i,1,r))(a=n[i])>=0&&(e[a].major=!0);return e}(t,a,o,n):a}var or=gn.extend({initialize:function(){this.mergeTicksOptions(),gn.prototype.initialize.call(this)},update:function(){var t=this,e=t.options,n=e.time||(e.time={}),r=t._adapter=new Qe._date(e.adapters.date);return Un("time scale",n.format,"time.format","time.parser"),Un("time scale",n.min,"time.min","ticks.min"),Un("time scale",n.max,"time.max","ticks.max"),Y.mergeIf(n.displayFormats,r.formats()),gn.prototype.update.apply(t,arguments)},getRightValue:function(t){return t&&void 0!==t.t&&(t=t.t),gn.prototype.getRightValue.call(this,t)},determineDataLimits:function(){var t,e,n,r,i,a,o,s=this,l=s.chart,u=s._adapter,c=s.options,h=c.time.unit||"day",d=Zn,f=Kn,p=[],g=[],m=[],v=s._getLabels();for(t=0,n=v.length;t<n;++t)m.push(rr(s,v[t]));for(t=0,n=(l.data.datasets||[]).length;t<n;++t)if(l.isDatasetVisible(t))if(i=l.data.datasets[t].data,Y.isObject(i[0]))for(g[t]=[],e=0,r=i.length;e<r;++e)a=rr(s,i[e]),p.push(a),g[t][e]=a;else g[t]=m.slice(0),o||(p=p.concat(m),o=!0);else g[t]=[];m.length&&(d=Math.min(d,m[0]),f=Math.max(f,m[m.length-1])),p.length&&(p=n>1?function(t){var e,n,r,i={},a=[];for(e=0,n=t.length;e<n;++e)i[r=t[e]]||(i[r]=!0,a.push(r));return a}(p).sort($n):p.sort($n),d=Math.min(d,p[0]),f=Math.max(f,p[p.length-1])),d=rr(s,Qn(c))||d,f=rr(s,tr(c))||f,d=d===Zn?+u.startOf(Date.now(),h):d,f=f===Kn?+u.endOf(Date.now(),h)+1:f,s.min=Math.min(d,f),s.max=Math.max(d+1,f),s._table=[],s._timestamps={data:p,datasets:g,labels:m}},buildTicks:function(){var t,e,n,r=this,i=r.min,a=r.max,o=r.options,s=o.ticks,l=o.time,u=r._timestamps,c=[],h=r.getLabelCapacity(i),d=s.source,f=o.distribution;for(u="data"===d||"auto"===d&&"series"===f?u.data:"labels"===d?u.labels:function(t,e,n,r){var i,a=t._adapter,o=t.options,s=o.time,l=s.unit||ir(s.minUnit,e,n,r),u=Gn([s.stepSize,s.unitStepSize,1]),c="week"===l&&s.isoWeekday,h=e,d=[];if(c&&(h=+a.startOf(h,"isoWeek",c)),h=+a.startOf(h,c?"day":l),a.diff(n,e,l)>1e5*u)throw e+" and "+n+" are too far apart with stepSize of "+u+" "+l;for(i=h;i<n;i=+a.add(i,u,l))d.push(i);return i!==n&&"ticks"!==o.bounds||d.push(i),d}(r,i,a,h),"ticks"===o.bounds&&u.length&&(i=u[0],a=u[u.length-1]),i=rr(r,Qn(o))||i,a=rr(r,tr(o))||a,t=0,e=u.length;t<e;++t)(n=u[t])>=i&&n<=a&&c.push(n);return r.min=i,r.max=a,r._unit=l.unit||(s.autoSkip?ir(l.minUnit,r.min,r.max,h):function(t,e,n,r,i){var a,o;for(a=Jn.length-1;a>=Jn.indexOf(n);a--)if(o=Jn[a],Xn[o].common&&t._adapter.diff(i,r,o)>=e-1)return o;return Jn[n?Jn.indexOf(n):0]}(r,c.length,l.minUnit,r.min,r.max)),r._majorUnit=s.major.enabled&&"year"!==r._unit?function(t){for(var e=Jn.indexOf(t)+1,n=Jn.length;e<n;++e)if(Xn[Jn[e]].common)return Jn[e]}(r._unit):void 0,r._table=function(t,e,n,r){if("linear"===r||!t.length)return[{time:e,pos:0},{time:n,pos:1}];var i,a,o,s,l,u=[],c=[e];for(i=0,a=t.length;i<a;++i)(s=t[i])>e&&s<n&&c.push(s);for(c.push(n),i=0,a=c.length;i<a;++i)l=c[i+1],o=c[i-1],s=c[i],void 0!==o&&void 0!==l&&Math.round((l+o)/2)===s||u.push({time:s,pos:i/(a-1)});return u}(r._timestamps.data,i,a,f),r._offsets=function(t,e,n,r,i){var a,o,s=0,l=0;return i.offset&&e.length&&(a=er(t,"time",e[0],"pos"),s=1===e.length?1-a:(er(t,"time",e[1],"pos")-a)/2,o=er(t,"time",e[e.length-1],"pos"),l=1===e.length?o:(o-er(t,"time",e[e.length-2],"pos"))/2),{start:s,end:l,factor:1/(s+1+l)}}(r._table,c,0,0,o),s.reverse&&c.reverse(),ar(r,c,r._majorUnit)},getLabelForIndex:function(t,e){var n=this,r=n._adapter,i=n.chart.data,a=n.options.time,o=i.labels&&t<i.labels.length?i.labels[t]:"",s=i.datasets[e].data[t];return Y.isObject(s)&&(o=n.getRightValue(s)),a.tooltipFormat?r.format(nr(n,o),a.tooltipFormat):"string"==typeof o?o:r.format(nr(n,o),a.displayFormats.datetime)},tickFormatFunction:function(t,e,n,r){var i=this._adapter,a=this.options,o=a.time.displayFormats,s=o[this._unit],l=this._majorUnit,u=o[l],c=n[e],h=a.ticks,d=l&&u&&c&&c.major,f=i.format(t,r||(d?u:s)),p=d?h.major:h.minor,g=Gn([p.callback,p.userCallback,h.callback,h.userCallback]);return g?g(f,e,n):f},convertTicksToLabels:function(t){var e,n,r=[];for(e=0,n=t.length;e<n;++e)r.push(this.tickFormatFunction(t[e].value,e,t));return r},getPixelForOffset:function(t){var e=this._offsets,n=er(this._table,"time",t,"pos");return this.getPixelForDecimal((e.start+n)*e.factor)},getPixelForValue:function(t,e,n){var r=null;if(void 0!==e&&void 0!==n&&(r=this._timestamps.datasets[n][e]),null===r&&(r=rr(this,t)),null!==r)return this.getPixelForOffset(r)},getPixelForTick:function(t){var e=this.getTicks();return t>=0&&t<e.length?this.getPixelForOffset(e[t].value):null},getValueForPixel:function(t){var e=this._offsets,n=this.getDecimalForPixel(t)/e.factor-e.end,r=er(this._table,"pos",n,"time");return this._adapter._create(r)},_getLabelSize:function(t){var e=this.options.ticks,n=this.ctx.measureText(t).width,r=Y.toRadians(this.isHorizontal()?e.maxRotation:e.minRotation),i=Math.cos(r),a=Math.sin(r),o=qn(e.fontSize,N.global.defaultFontSize);return{w:n*i+o*a,h:n*a+o*i}},getLabelWidth:function(t){return this._getLabelSize(t).w},getLabelCapacity:function(t){var e=this,n=e.options.time,r=n.displayFormats,i=r[n.unit]||r.millisecond,a=e.tickFormatFunction(t,0,ar(e,[t],e._majorUnit),i),o=e._getLabelSize(a),s=Math.floor(e.isHorizontal()?e.width/o.w:e.height/o.h);return e.options.offset&&s--,s>0?s:1}}),sr={position:"bottom",distribution:"linear",bounds:"data",adapters:{},time:{parser:!1,unit:!1,round:!1,displayFormat:!1,isoWeekday:!1,minUnit:"millisecond",displayFormats:{}},ticks:{autoSkip:!1,source:"auto",major:{enabled:!1}}};or._defaults=sr;var lr={category:vn,linear:Sn,logarithmic:An,radialLinear:Bn,time:or},ur={datetime:"MMM D, YYYY, h:mm:ss a",millisecond:"h:mm:ss.SSS a",second:"h:mm:ss a",minute:"h:mm a",hour:"hA",day:"MMM D",week:"ll",month:"MMM YYYY",quarter:"[Q]Q - YYYY",year:"YYYY"};Qe._date.override("function"==typeof t?{_id:"moment",formats:function(){return ur},parse:function(e,n){return"string"==typeof e&&"string"==typeof n?e=t(e,n):e instanceof t||(e=t(e)),e.isValid()?e.valueOf():null},format:function(e,n){return t(e).format(n)},add:function(e,n,r){return t(e).add(n,r).valueOf()},diff:function(e,n,r){return t(e).diff(t(n),r)},startOf:function(e,n,r){return e=t(e),"isoWeek"===n?e.isoWeekday(r).valueOf():e.startOf(n).valueOf()},endOf:function(e,n){return t(e).endOf(n).valueOf()},_create:function(e){return t(e)}}:{}),N._set("global",{plugins:{filler:{propagate:!0}}});var cr={dataset:function(t){var e=t.fill,n=t.chart,r=n.getDatasetMeta(e),i=r&&n.isDatasetVisible(e)&&r.dataset._children||[],a=i.length||0;return a?function(t,e){return e<a&&i[e]._view||null}:null},boundary:function(t){var e=t.boundary,n=e?e.x:null,r=e?e.y:null;return Y.isArray(e)?function(t,n){return e[n]}:function(t){return{x:null===n?t.x:n,y:null===r?t.y:r}}}};function hr(t,e,n){var r,i=t._model||{},a=i.fill;if(void 0===a&&(a=!!i.backgroundColor),!1===a||null===a)return!1;if(!0===a)return"origin";if(r=parseFloat(a,10),isFinite(r)&&Math.floor(r)===r)return"-"!==a[0]&&"+"!==a[0]||(r=e+r),!(r===e||r<0||r>=n)&&r;switch(a){case"bottom":return"start";case"top":return"end";case"zero":return"origin";case"origin":case"start":case"end":return a;default:return!1}}function dr(t){return(t.el._scale||{}).getPointPositionForValue?function(t){var e,n,r,i,a,o=t.el._scale,s=o.options,l=o.chart.data.labels.length,u=t.fill,c=[];if(!l)return null;for(e=s.ticks.reverse?o.max:o.min,n=s.ticks.reverse?o.min:o.max,r=o.getPointPositionForValue(0,e),i=0;i<l;++i)a="start"===u||"end"===u?o.getPointPositionForValue(i,"start"===u?e:n):o.getBasePosition(i),s.gridLines.circular&&(a.cx=r.x,a.cy=r.y,a.angle=o.getIndexAngle(i)-Math.PI/2),c.push(a);return c}(t):function(t){var e,n=t.el._model||{},r=t.el._scale||{},i=t.fill,a=null;if(isFinite(i))return null;if("start"===i?a=void 0===n.scaleBottom?r.bottom:n.scaleBottom:"end"===i?a=void 0===n.scaleTop?r.top:n.scaleTop:void 0!==n.scaleZero?a=n.scaleZero:r.getBasePixel&&(a=r.getBasePixel()),null!=a){if(void 0!==a.x&&void 0!==a.y)return a;if(Y.isFinite(a))return{x:(e=r.isHorizontal())?a:null,y:e?null:a}}return null}(t)}function fr(t,e,n){var r,i=t[e].fill,a=[e];if(!n)return i;for(;!1!==i&&-1===a.indexOf(i);){if(!isFinite(i))return i;if(!(r=t[i]))return!1;if(r.visible)return i;a.push(i),i=r.fill}return!1}function pr(t){var e=t.fill,n="dataset";return!1===e?null:(isFinite(e)||(n="boundary"),cr[n](t))}function gr(t){return t&&!t.skip}function mr(t,e,n,r,i){var a,o,s,l;if(r&&i){for(t.moveTo(e[0].x,e[0].y),a=1;a<r;++a)Y.canvas.lineTo(t,e[a-1],e[a]);if(void 0===n[0].angle)for(t.lineTo(n[i-1].x,n[i-1].y),a=i-1;a>0;--a)Y.canvas.lineTo(t,n[a],n[a-1],!0);else for(o=n[0].cx,s=n[0].cy,l=Math.sqrt(Math.pow(n[0].x-o,2)+Math.pow(n[0].y-s,2)),a=i-1;a>0;--a)t.arc(o,s,l,n[a].angle,n[a-1].angle,!0)}}function vr(t,e,n,r,i,a){var o,s,l,u,c,h,d,f,p=e.length,g=r.spanGaps,m=[],v=[],y=0,b=0;for(t.beginPath(),o=0,s=p;o<s;++o)c=n(u=e[l=o%p]._view,l,r),h=gr(u),d=gr(c),a&&void 0===f&&h&&(s=p+(f=o+1)),h&&d?(y=m.push(u),b=v.push(c)):y&&b&&(g?(h&&m.push(u),d&&v.push(c)):(mr(t,m,v,y,b),y=b=0,m=[],v=[]));mr(t,m,v,y,b),t.closePath(),t.fillStyle=i,t.fill()}var yr={id:"filler",afterDatasetsUpdate:function(t,e){var n,r,i,a,o=(t.data.datasets||[]).length,s=e.propagate,l=[];for(r=0;r<o;++r)a=null,(i=(n=t.getDatasetMeta(r)).dataset)&&i._model&&i instanceof _t.Line&&(a={visible:t.isDatasetVisible(r),fill:hr(i,r,o),chart:t,el:i}),n.$filler=a,l.push(a);for(r=0;r<o;++r)(a=l[r])&&(a.fill=fr(l,r,s),a.boundary=dr(a),a.mapper=pr(a))},beforeDatasetsDraw:function(t){var e,n,r,i,a,o,s,l=t._getSortedVisibleDatasetMetas(),u=t.ctx;for(n=l.length-1;n>=0;--n)(e=l[n].$filler)&&e.visible&&(i=(r=e.el)._view,a=r._children||[],o=e.mapper,s=i.backgroundColor||N.global.defaultColor,o&&s&&a.length&&(Y.canvas.clipArea(u,t.chartArea),vr(u,a,o,i,s,r._loop),Y.canvas.unclipArea(u)))}},br=Y.rtl.getRtlAdapter,xr=Y.noop,_r=Y.valueOrDefault;function wr(t,e){return t.usePointStyle&&t.boxWidth>e?e:t.boxWidth}N._set("global",{legend:{display:!0,position:"top",align:"center",fullWidth:!0,reverse:!1,weight:1e3,onClick:function(t,e){var n=e.datasetIndex,r=this.chart,i=r.getDatasetMeta(n);i.hidden=null===i.hidden?!r.data.datasets[n].hidden:null,r.update()},onHover:null,onLeave:null,labels:{boxWidth:40,padding:10,generateLabels:function(t){var e=t.data.datasets,n=t.options.legend||{},r=n.labels&&n.labels.usePointStyle;return t._getSortedDatasetMetas().map((function(n){var i=n.controller.getStyle(r?0:void 0);return{text:e[n.index].label,fillStyle:i.backgroundColor,hidden:!t.isDatasetVisible(n.index),lineCap:i.borderCapStyle,lineDash:i.borderDash,lineDashOffset:i.borderDashOffset,lineJoin:i.borderJoinStyle,lineWidth:i.borderWidth,strokeStyle:i.borderColor,pointStyle:i.pointStyle,rotation:i.rotation,datasetIndex:n.index}}),this)}}},legendCallback:function(t){var e,n,r,i=document.createElement("ul"),a=t.data.datasets;for(i.setAttribute("class",t.id+"-legend"),e=0,n=a.length;e<n;e++)(r=i.appendChild(document.createElement("li"))).appendChild(document.createElement("span")).style.backgroundColor=a[e].backgroundColor,a[e].label&&r.appendChild(document.createTextNode(a[e].label));return i.outerHTML}});var kr=K.extend({initialize:function(t){Y.extend(this,t),this.legendHitBoxes=[],this._hoveredItem=null,this.doughnutMode=!1},beforeUpdate:xr,update:function(t,e,n){var r=this;return r.beforeUpdate(),r.maxWidth=t,r.maxHeight=e,r.margins=n,r.beforeSetDimensions(),r.setDimensions(),r.afterSetDimensions(),r.beforeBuildLabels(),r.buildLabels(),r.afterBuildLabels(),r.beforeFit(),r.fit(),r.afterFit(),r.afterUpdate(),r.minSize},afterUpdate:xr,beforeSetDimensions:xr,setDimensions:function(){var t=this;t.isHorizontal()?(t.width=t.maxWidth,t.left=0,t.right=t.width):(t.height=t.maxHeight,t.top=0,t.bottom=t.height),t.paddingLeft=0,t.paddingTop=0,t.paddingRight=0,t.paddingBottom=0,t.minSize={width:0,height:0}},afterSetDimensions:xr,beforeBuildLabels:xr,buildLabels:function(){var t=this,e=t.options.labels||{},n=Y.callback(e.generateLabels,[t.chart],t)||[];e.filter&&(n=n.filter((function(n){return e.filter(n,t.chart.data)}))),t.options.reverse&&n.reverse(),t.legendItems=n},afterBuildLabels:xr,beforeFit:xr,fit:function(){var t=this,e=t.options,n=e.labels,r=e.display,i=t.ctx,a=Y.options._parseFont(n),o=a.size,s=t.legendHitBoxes=[],l=t.minSize,u=t.isHorizontal();if(u?(l.width=t.maxWidth,l.height=r?10:0):(l.width=r?10:0,l.height=t.maxHeight),r){if(i.font=a.string,u){var c=t.lineWidths=[0],h=0;i.textAlign="left",i.textBaseline="middle",Y.each(t.legendItems,(function(t,e){var r=wr(n,o)+o/2+i.measureText(t.text).width;(0===e||c[c.length-1]+r+2*n.padding>l.width)&&(h+=o+n.padding,c[c.length-(e>0?0:1)]=0),s[e]={left:0,top:0,width:r,height:o},c[c.length-1]+=r+n.padding})),l.height+=h}else{var d=n.padding,f=t.columnWidths=[],p=t.columnHeights=[],g=n.padding,m=0,v=0;Y.each(t.legendItems,(function(t,e){var r=wr(n,o)+o/2+i.measureText(t.text).width;e>0&&v+o+2*d>l.height&&(g+=m+n.padding,f.push(m),p.push(v),m=0,v=0),m=Math.max(m,r),v+=o+d,s[e]={left:0,top:0,width:r,height:o}})),g+=m,f.push(m),p.push(v),l.width+=g}t.width=l.width,t.height=l.height}else t.width=l.width=t.height=l.height=0},afterFit:xr,isHorizontal:function(){return"top"===this.options.position||"bottom"===this.options.position},draw:function(){var t=this,e=t.options,n=e.labels,r=N.global,i=r.defaultColor,a=r.elements.line,o=t.height,s=t.columnHeights,l=t.width,u=t.lineWidths;if(e.display){var c,h=br(e.rtl,t.left,t.minSize.width),d=t.ctx,f=_r(n.fontColor,r.defaultFontColor),p=Y.options._parseFont(n),g=p.size;d.textAlign=h.textAlign("left"),d.textBaseline="middle",d.lineWidth=.5,d.strokeStyle=f,d.fillStyle=f,d.font=p.string;var m=wr(n,g),v=t.legendHitBoxes,y=function(t,r){switch(e.align){case"start":return n.padding;case"end":return t-r;default:return(t-r+n.padding)/2}},b=t.isHorizontal();c=b?{x:t.left+y(l,u[0]),y:t.top+n.padding,line:0}:{x:t.left+n.padding,y:t.top+y(o,s[0]),line:0},Y.rtl.overrideTextDirection(t.ctx,e.textDirection);var x=g+n.padding;Y.each(t.legendItems,(function(e,r){var f=d.measureText(e.text).width,p=m+g/2+f,_=c.x,w=c.y;h.setWidth(t.minSize.width),b?r>0&&_+p+n.padding>t.left+t.minSize.width&&(w=c.y+=x,c.line++,_=c.x=t.left+y(l,u[c.line])):r>0&&w+x>t.top+t.minSize.height&&(_=c.x=_+t.columnWidths[c.line]+n.padding,c.line++,w=c.y=t.top+y(o,s[c.line]));var k=h.x(_);!function(t,e,r){if(!(isNaN(m)||m<=0)){d.save();var o=_r(r.lineWidth,a.borderWidth);if(d.fillStyle=_r(r.fillStyle,i),d.lineCap=_r(r.lineCap,a.borderCapStyle),d.lineDashOffset=_r(r.lineDashOffset,a.borderDashOffset),d.lineJoin=_r(r.lineJoin,a.borderJoinStyle),d.lineWidth=o,d.strokeStyle=_r(r.strokeStyle,i),d.setLineDash&&d.setLineDash(_r(r.lineDash,a.borderDash)),n&&n.usePointStyle){var s=m*Math.SQRT2/2,l=h.xPlus(t,m/2),u=e+g/2;Y.canvas.drawPoint(d,r.pointStyle,s,l,u,r.rotation)}else d.fillRect(h.leftForLtr(t,m),e,m,g),0!==o&&d.strokeRect(h.leftForLtr(t,m),e,m,g);d.restore()}}(k,w,e),v[r].left=h.leftForLtr(k,v[r].width),v[r].top=w,function(t,e,n,r){var i=g/2,a=h.xPlus(t,m+i),o=e+i;d.fillText(n.text,a,o),n.hidden&&(d.beginPath(),d.lineWidth=2,d.moveTo(a,o),d.lineTo(h.xPlus(a,r),o),d.stroke())}(k,w,e,f),b?c.x+=p+n.padding:c.y+=x})),Y.rtl.restoreTextDirection(t.ctx,e.textDirection)}},_getLegendItemAt:function(t,e){var n,r,i,a=this;if(t>=a.left&&t<=a.right&&e>=a.top&&e<=a.bottom)for(i=a.legendHitBoxes,n=0;n<i.length;++n)if(t>=(r=i[n]).left&&t<=r.left+r.width&&e>=r.top&&e<=r.top+r.height)return a.legendItems[n];return null},handleEvent:function(t){var e,n=this,r=n.options,i="mouseup"===t.type?"click":t.type;if("mousemove"===i){if(!r.onHover&&!r.onLeave)return}else{if("click"!==i)return;if(!r.onClick)return}e=n._getLegendItemAt(t.x,t.y),"click"===i?e&&r.onClick&&r.onClick.call(n,t.native,e):(r.onLeave&&e!==n._hoveredItem&&(n._hoveredItem&&r.onLeave.call(n,t.native,n._hoveredItem),n._hoveredItem=e),r.onHover&&e&&r.onHover.call(n,t.native,e))}});function Mr(t,e){var n=new kr({ctx:t.ctx,options:e,chart:t});pe.configure(t,n,e),pe.addBox(t,n),t.legend=n}var Sr={id:"legend",_element:kr,beforeInit:function(t){var e=t.options.legend;e&&Mr(t,e)},beforeUpdate:function(t){var e=t.options.legend,n=t.legend;e?(Y.mergeIf(e,N.global.legend),n?(pe.configure(t,n,e),n.options=e):Mr(t,e)):n&&(pe.removeBox(t,n),delete t.legend)},afterEvent:function(t,e){var n=t.legend;n&&n.handleEvent(e)}},Dr=Y.noop;N._set("global",{title:{display:!1,fontStyle:"bold",fullWidth:!0,padding:10,position:"top",text:"",weight:2e3}});var Cr=K.extend({initialize:function(t){Y.extend(this,t),this.legendHitBoxes=[]},beforeUpdate:Dr,update:function(t,e,n){var r=this;return r.beforeUpdate(),r.maxWidth=t,r.maxHeight=e,r.margins=n,r.beforeSetDimensions(),r.setDimensions(),r.afterSetDimensions(),r.beforeBuildLabels(),r.buildLabels(),r.afterBuildLabels(),r.beforeFit(),r.fit(),r.afterFit(),r.afterUpdate(),r.minSize},afterUpdate:Dr,beforeSetDimensions:Dr,setDimensions:function(){var t=this;t.isHorizontal()?(t.width=t.maxWidth,t.left=0,t.right=t.width):(t.height=t.maxHeight,t.top=0,t.bottom=t.height),t.paddingLeft=0,t.paddingTop=0,t.paddingRight=0,t.paddingBottom=0,t.minSize={width:0,height:0}},afterSetDimensions:Dr,beforeBuildLabels:Dr,buildLabels:Dr,afterBuildLabels:Dr,beforeFit:Dr,fit:function(){var t,e=this,n=e.options,r=e.minSize={},i=e.isHorizontal();n.display?(t=(Y.isArray(n.text)?n.text.length:1)*Y.options._parseFont(n).lineHeight+2*n.padding,e.width=r.width=i?e.maxWidth:t,e.height=r.height=i?t:e.maxHeight):e.width=r.width=e.height=r.height=0},afterFit:Dr,isHorizontal:function(){var t=this.options.position;return"top"===t||"bottom"===t},draw:function(){var t=this,e=t.ctx,n=t.options;if(n.display){var r,i,a,o=Y.options._parseFont(n),s=o.lineHeight,l=s/2+n.padding,u=0,c=t.top,h=t.left,d=t.bottom,f=t.right;e.fillStyle=Y.valueOrDefault(n.fontColor,N.global.defaultFontColor),e.font=o.string,t.isHorizontal()?(i=h+(f-h)/2,a=c+l,r=f-h):(i="left"===n.position?h+l:f-l,a=c+(d-c)/2,r=d-c,u=Math.PI*("left"===n.position?-.5:.5)),e.save(),e.translate(i,a),e.rotate(u),e.textAlign="center",e.textBaseline="middle";var p=n.text;if(Y.isArray(p))for(var g=0,m=0;m<p.length;++m)e.fillText(p[m],0,g,r),g+=s;else e.fillText(p,0,0,r);e.restore()}}});function Or(t,e){var n=new Cr({ctx:t.ctx,options:e,chart:t});pe.configure(t,n,e),pe.addBox(t,n),t.titleBlock=n}var Tr={},Pr=yr,Ar=Sr,Ir={id:"title",_element:Cr,beforeInit:function(t){var e=t.options.title;e&&Or(t,e)},beforeUpdate:function(t){var e=t.options.title,n=t.titleBlock;e?(Y.mergeIf(e,N.global.title),n?(pe.configure(t,n,e),n.options=e):Or(t,e)):n&&(pe.removeBox(t,n),delete t.titleBlock)}};for(var Fr in Tr.filler=Pr,Tr.legend=Ar,Tr.title=Ir,Xe.helpers=Y,function(){function t(t,e,n){var r;return"string"==typeof t?(r=parseInt(t,10),-1!==t.indexOf("%")&&(r=r/100*e.parentNode[n])):r=t,r}function e(t){return null!=t&&"none"!==t}function n(n,r,i){var a=document.defaultView,o=Y._getParentNode(n),s=a.getComputedStyle(n)[r],l=a.getComputedStyle(o)[r],u=e(s),c=e(l),h=Number.POSITIVE_INFINITY;return u||c?Math.min(u?t(s,n,i):h,c?t(l,o,i):h):"none"}Y.where=function(t,e){if(Y.isArray(t)&&Array.prototype.filter)return t.filter(e);var n=[];return Y.each(t,(function(t){e(t)&&n.push(t)})),n},Y.findIndex=Array.prototype.findIndex?function(t,e,n){return t.findIndex(e,n)}:function(t,e,n){n=void 0===n?t:n;for(var r=0,i=t.length;r<i;++r)if(e.call(n,t[r],r,t))return r;return-1},Y.findNextWhere=function(t,e,n){Y.isNullOrUndef(n)&&(n=-1);for(var r=n+1;r<t.length;r++){var i=t[r];if(e(i))return i}},Y.findPreviousWhere=function(t,e,n){Y.isNullOrUndef(n)&&(n=t.length);for(var r=n-1;r>=0;r--){var i=t[r];if(e(i))return i}},Y.isNumber=function(t){return!isNaN(parseFloat(t))&&isFinite(t)},Y.almostEquals=function(t,e,n){return Math.abs(t-e)<n},Y.almostWhole=function(t,e){var n=Math.round(t);return n-e<=t&&n+e>=t},Y.max=function(t){return t.reduce((function(t,e){return isNaN(e)?t:Math.max(t,e)}),Number.NEGATIVE_INFINITY)},Y.min=function(t){return t.reduce((function(t,e){return isNaN(e)?t:Math.min(t,e)}),Number.POSITIVE_INFINITY)},Y.sign=Math.sign?function(t){return Math.sign(t)}:function(t){return 0==(t=+t)||isNaN(t)?t:t>0?1:-1},Y.toRadians=function(t){return t*(Math.PI/180)},Y.toDegrees=function(t){return t*(180/Math.PI)},Y._decimalPlaces=function(t){if(Y.isFinite(t)){for(var e=1,n=0;Math.round(t*e)/e!==t;)e*=10,n++;return n}},Y.getAngleFromPoint=function(t,e){var n=e.x-t.x,r=e.y-t.y,i=Math.sqrt(n*n+r*r),a=Math.atan2(r,n);return a<-.5*Math.PI&&(a+=2*Math.PI),{angle:a,distance:i}},Y.distanceBetweenPoints=function(t,e){return Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2))},Y.aliasPixel=function(t){return t%2==0?0:.5},Y._alignPixel=function(t,e,n){var r=t.currentDevicePixelRatio,i=n/2;return Math.round((e-i)*r)/r+i},Y.splineCurve=function(t,e,n,r){var i=t.skip?e:t,a=e,o=n.skip?e:n,s=Math.sqrt(Math.pow(a.x-i.x,2)+Math.pow(a.y-i.y,2)),l=Math.sqrt(Math.pow(o.x-a.x,2)+Math.pow(o.y-a.y,2)),u=s/(s+l),c=l/(s+l),h=r*(u=isNaN(u)?0:u),d=r*(c=isNaN(c)?0:c);return{previous:{x:a.x-h*(o.x-i.x),y:a.y-h*(o.y-i.y)},next:{x:a.x+d*(o.x-i.x),y:a.y+d*(o.y-i.y)}}},Y.EPSILON=Number.EPSILON||1e-14,Y.splineCurveMonotone=function(t){var e,n,r,i,a,o,s,l,u,c=(t||[]).map((function(t){return{model:t._model,deltaK:0,mK:0}})),h=c.length;for(e=0;e<h;++e)if(!(r=c[e]).model.skip){if(n=e>0?c[e-1]:null,(i=e<h-1?c[e+1]:null)&&!i.model.skip){var d=i.model.x-r.model.x;r.deltaK=0!==d?(i.model.y-r.model.y)/d:0}!n||n.model.skip?r.mK=r.deltaK:!i||i.model.skip?r.mK=n.deltaK:this.sign(n.deltaK)!==this.sign(r.deltaK)?r.mK=0:r.mK=(n.deltaK+r.deltaK)/2}for(e=0;e<h-1;++e)r=c[e],i=c[e+1],r.model.skip||i.model.skip||(Y.almostEquals(r.deltaK,0,this.EPSILON)?r.mK=i.mK=0:(a=r.mK/r.deltaK,o=i.mK/r.deltaK,(l=Math.pow(a,2)+Math.pow(o,2))<=9||(s=3/Math.sqrt(l),r.mK=a*s*r.deltaK,i.mK=o*s*r.deltaK)));for(e=0;e<h;++e)(r=c[e]).model.skip||(n=e>0?c[e-1]:null,i=e<h-1?c[e+1]:null,n&&!n.model.skip&&(u=(r.model.x-n.model.x)/3,r.model.controlPointPreviousX=r.model.x-u,r.model.controlPointPreviousY=r.model.y-u*r.mK),i&&!i.model.skip&&(u=(i.model.x-r.model.x)/3,r.model.controlPointNextX=r.model.x+u,r.model.controlPointNextY=r.model.y+u*r.mK))},Y.nextItem=function(t,e,n){return n?e>=t.length-1?t[0]:t[e+1]:e>=t.length-1?t[t.length-1]:t[e+1]},Y.previousItem=function(t,e,n){return n?e<=0?t[t.length-1]:t[e-1]:e<=0?t[0]:t[e-1]},Y.niceNum=function(t,e){var n=Math.floor(Y.log10(t)),r=t/Math.pow(10,n);return(e?r<1.5?1:r<3?2:r<7?5:10:r<=1?1:r<=2?2:r<=5?5:10)*Math.pow(10,n)},Y.requestAnimFrame="undefined"==typeof window?function(t){t()}:window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(t){return window.setTimeout(t,1e3/60)},Y.getRelativePosition=function(t,e){var n,r,i=t.originalEvent||t,a=t.target||t.srcElement,o=a.getBoundingClientRect(),s=i.touches;s&&s.length>0?(n=s[0].clientX,r=s[0].clientY):(n=i.clientX,r=i.clientY);var l=parseFloat(Y.getStyle(a,"padding-left")),u=parseFloat(Y.getStyle(a,"padding-top")),c=parseFloat(Y.getStyle(a,"padding-right")),h=parseFloat(Y.getStyle(a,"padding-bottom")),d=o.right-o.left-l-c,f=o.bottom-o.top-u-h;return{x:n=Math.round((n-o.left-l)/d*a.width/e.currentDevicePixelRatio),y:r=Math.round((r-o.top-u)/f*a.height/e.currentDevicePixelRatio)}},Y.getConstraintWidth=function(t){return n(t,"max-width","clientWidth")},Y.getConstraintHeight=function(t){return n(t,"max-height","clientHeight")},Y._calculatePadding=function(t,e,n){return(e=Y.getStyle(t,e)).indexOf("%")>-1?n*parseInt(e,10)/100:parseInt(e,10)},Y._getParentNode=function(t){var e=t.parentNode;return e&&"[object ShadowRoot]"===e.toString()&&(e=e.host),e},Y.getMaximumWidth=function(t){var e=Y._getParentNode(t);if(!e)return t.clientWidth;var n=e.clientWidth,r=n-Y._calculatePadding(e,"padding-left",n)-Y._calculatePadding(e,"padding-right",n),i=Y.getConstraintWidth(t);return isNaN(i)?r:Math.min(r,i)},Y.getMaximumHeight=function(t){var e=Y._getParentNode(t);if(!e)return t.clientHeight;var n=e.clientHeight,r=n-Y._calculatePadding(e,"padding-top",n)-Y._calculatePadding(e,"padding-bottom",n),i=Y.getConstraintHeight(t);return isNaN(i)?r:Math.min(r,i)},Y.getStyle=function(t,e){return t.currentStyle?t.currentStyle[e]:document.defaultView.getComputedStyle(t,null).getPropertyValue(e)},Y.retinaScale=function(t,e){var n=t.currentDevicePixelRatio=e||"undefined"!=typeof window&&window.devicePixelRatio||1;if(1!==n){var r=t.canvas,i=t.height,a=t.width;r.height=i*n,r.width=a*n,t.ctx.scale(n,n),r.style.height||r.style.width||(r.style.height=i+"px",r.style.width=a+"px")}},Y.fontString=function(t,e,n){return e+" "+t+"px "+n},Y.longestText=function(t,e,n,r){var i=(r=r||{}).data=r.data||{},a=r.garbageCollect=r.garbageCollect||[];r.font!==e&&(i=r.data={},a=r.garbageCollect=[],r.font=e),t.font=e;var o,s,l,u,c,h=0,d=n.length;for(o=0;o<d;o++)if(null!=(u=n[o])&&!0!==Y.isArray(u))h=Y.measureText(t,i,a,h,u);else if(Y.isArray(u))for(s=0,l=u.length;s<l;s++)null==(c=u[s])||Y.isArray(c)||(h=Y.measureText(t,i,a,h,c));var f=a.length/2;if(f>n.length){for(o=0;o<f;o++)delete i[a[o]];a.splice(0,f)}return h},Y.measureText=function(t,e,n,r,i){var a=e[i];return a||(a=e[i]=t.measureText(i).width,n.push(i)),a>r&&(r=a),r},Y.numberOfLabelLines=function(t){var e=1;return Y.each(t,(function(t){Y.isArray(t)&&t.length>e&&(e=t.length)})),e},Y.color=w?function(t){return t instanceof CanvasGradient&&(t=N.global.defaultColor),w(t)}:function(t){return console.error("Color.js not found!"),t},Y.getHoverColor=function(t){return t instanceof CanvasPattern||t instanceof CanvasGradient?t:Y.color(t).saturate(.5).darken(.1).rgbString()}}(),Xe._adapters=Qe,Xe.Animation=X,Xe.animationService=J,Xe.controllers=Jt,Xe.DatasetController=nt,Xe.defaults=N,Xe.Element=K,Xe.elements=_t,Xe.Interaction=ie,Xe.layouts=pe,Xe.platform=Oe,Xe.plugins=Te,Xe.Scale=gn,Xe.scaleService=Pe,Xe.Ticks=tn,Xe.Tooltip=Ye,Xe.helpers.each(lr,(function(t,e){Xe.scaleService.registerScaleType(e,t,t._defaults)})),Tr)Tr.hasOwnProperty(Fr)&&Xe.plugins.register(Tr[Fr]);Xe.platform.initialize();var Lr=Xe;return"undefined"!=typeof window&&(window.Chart=Xe),Xe.Chart=Xe,Xe.Legend=Tr.legend._element,Xe.Title=Tr.title._element,Xe.pluginService=Xe.plugins,Xe.PluginBase=Xe.Element.extend({}),Xe.canvasHelpers=Xe.helpers.canvas,Xe.layoutService=Xe.layouts,Xe.LinearScaleBase=_n,Xe.helpers.each(["Bar","Bubble","Doughnut","Line","PolarArea","Radar","Scatter"],(function(t){Xe[t]=function(e,n){return new Xe(e,Xe.helpers.merge(n||{},{type:t.charAt(0).toLowerCase()+t.slice(1)}))}})),Lr}(function(){try{return n("wd/R")}catch(t){}}())},MvSz:function(t,e,n){n("ioFf");var r=n("LXxW"),i=n("0ycA"),a=Object.prototype.propertyIsEnumerable,o=Object.getOwnPropertySymbols,s=o?function(t){return null==t?[]:(t=Object(t),r(o(t),(function(e){return a.call(t,e)})))}:i;t.exports=s},NKxu:function(t,e,n){n("pIFo"),n("Oyvg"),n("a1Th"),n("h7Nl"),n("Btvt");var r=n("lSCD"),i=n("E2jh"),a=n("GoyQ"),o=n("3Fdi"),s=/^\[object .+?Constructor\]$/,l=Function.prototype,u=Object.prototype,c=l.toString,h=u.hasOwnProperty,d=RegExp("^"+c.call(h).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");t.exports=function(t){return!(!a(t)||i(t))&&(r(t)?d:s).test(o(t))}},Npjl:function(t,e){t.exports=function(t,e){return null==t?void 0:t[e]}},Nr18:function(t,e,n){"use strict";var r=n("S/j/"),i=n("d/Gc"),a=n("ne8i");t.exports=function(t){for(var e=r(this),n=a(e.length),o=arguments.length,s=i(o>1?arguments[1]:void 0,n),l=o>2?arguments[2]:void 0,u=void 0===l?n:i(l,n);u>s;)e[s++]=t;return e}},NykK:function(t,e,n){var r=n("nmnc"),i=n("AP2z"),a=n("KfNM"),o=r?r.toStringTag:void 0;t.exports=function(t){return null==t?void 0===t?"[object Undefined]":"[object Null]":o&&o in Object(t)?i(t):a(t)}},O0oS:function(t,e,n){var r=n("Cwc5"),i=function(){try{var t=r(Object,"defineProperty");return t({},"",{}),t}catch(e){}}();t.exports=i},O7RO:function(t,e,n){var r=n("CMye"),i=n("7GkX");t.exports=function(t){for(var e=i(t),n=e.length;n--;){var a=e[n],o=t[a];e[n]=[a,o,r(o)]}return e}},"Of+w":function(t,e,n){var r=n("Cwc5")(n("Kz5y"),"WeakMap");t.exports=r},QVEU:function(t,e,n){var r=n("hypo"),i=n("UMY1")((function(t,e,n){r(t,n,e)}));t.exports=i},QkVE:function(t,e,n){n("bWfx");var r=n("EpBk");t.exports=function(t,e){var n=t.__data__;return r(e)?n["string"==typeof e?"string":"hash"]:n.map}},QoRX:function(t,e){t.exports=function(t,e){for(var n=-1,r=null==t?0:t.length;++n<r;)if(e(t[n],n,t))return!0;return!1}},QqLw:function(t,e,n){var r=n("tadb"),i=n("ebwN"),a=n("HOxn"),o=n("yGk4"),s=n("Of+w"),l=n("NykK"),u=n("3Fdi"),c=u(r),h=u(i),d=u(a),f=u(o),p=u(s),g=l;(r&&"[object DataView]"!=g(new r(new ArrayBuffer(1)))||i&&"[object Map]"!=g(new i)||a&&"[object Promise]"!=g(a.resolve())||o&&"[object Set]"!=g(new o)||s&&"[object WeakMap]"!=g(new s))&&(g=function(t){var e=l(t),n="[object Object]"==e?t.constructor:void 0,r=n?u(n):"";if(r)switch(r){case c:return"[object DataView]";case h:return"[object Map]";case d:return"[object Promise]";case f:return"[object Set]";case p:return"[object WeakMap]"}return e}),t.exports=g},SKAX:function(t,e,n){var r=n("JC6p"),i=n("lQqw")(r);t.exports=i},SfRM:function(t,e,n){var r=n("YESw");t.exports=function(){this.__data__=r?r(null):{},this.size=0}},UDbo:function(t,e,n){"use strict";(function(t){n.d(e,"b",(function(){return x})),n.d(e,"a",(function(){return _}));n("rGqo"),n("yt8O"),n("Btvt"),n("hhXQ"),n("8+KV"),n("bWfx"),n("/SS/"),n("hHhE"),n("V+eJ"),n("91GP");var r=n("q1tI"),i=n.n(r),a=n("17x9"),o=n.n(a),s=n("MO+k"),l=n.n(s),u=n("Y+p1"),c=n.n(u),h=n("QVEU"),d=n.n(h),f=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(t[r]=n[r])}return t};function p(t,e){var n={};for(var r in t)e.indexOf(r)>=0||Object.prototype.hasOwnProperty.call(t,r)&&(n[r]=t[r]);return n}function g(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function m(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function v(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}var y=void 0!==t&&{}&&"production",b=function(t){function e(){g(this,e);var n=m(this,t.call(this));return n.handleOnClick=function(t){var e=n.chartInstance,r=n.props,i=r.getDatasetAtEvent,a=r.getElementAtEvent,o=r.getElementsAtEvent,s=r.onElementsClick;i&&i(e.getDatasetAtEvent(t),t),a&&a(e.getElementAtEvent(t),t),o&&o(e.getElementsAtEvent(t),t),s&&s(e.getElementsAtEvent(t),t)},n.ref=function(t){n.element=t},n.chartInstance=void 0,n}return v(e,t),e.prototype.componentDidMount=function(){this.renderChart()},e.prototype.componentDidUpdate=function(){if(this.props.redraw)return this.destroyChart(),void this.renderChart();this.updateChart()},e.prototype.shouldComponentUpdate=function(t){var e=this.props,n=(e.redraw,e.type),r=e.options,i=e.plugins,a=e.legend,o=e.height,s=e.width;if(!0===t.redraw)return!0;if(o!==t.height||s!==t.width)return!0;if(n!==t.type)return!0;if(!c()(a,t.legend))return!0;if(!c()(r,t.options))return!0;var l=this.transformDataProp(t);return!c()(this.shadowDataProp,l)||!c()(i,t.plugins)},e.prototype.componentWillUnmount=function(){this.destroyChart()},e.prototype.transformDataProp=function(t){var e=t.data;return"function"==typeof e?e(this.element):e},e.prototype.memoizeDataProps=function(){if(this.props.data){var t=this.transformDataProp(this.props);return this.shadowDataProp=f({},t,{datasets:t.datasets&&t.datasets.map((function(t){return f({},t)}))}),this.saveCurrentDatasets(),t}},e.prototype.checkDatasets=function(t){var n="production"!==y&&"prod"!==y,r=this.props.datasetKeyProvider!==e.getLabelAsKey,i=t.length>1;if(n&&i&&!r){var a=!1;t.forEach((function(t){t.label||(a=!0)})),a&&console.error('[react-chartjs-2] Warning: Each dataset needs a unique key. By default, the "label" property on each dataset is used. Alternatively, you may provide a "datasetKeyProvider" as a prop that returns a unique key.')}},e.prototype.getCurrentDatasets=function(){return this.chartInstance&&this.chartInstance.config.data&&this.chartInstance.config.data.datasets||[]},e.prototype.saveCurrentDatasets=function(){var t=this;this.datasets=this.datasets||{},this.getCurrentDatasets().forEach((function(e){t.datasets[t.props.datasetKeyProvider(e)]=e}))},e.prototype.updateChart=function(){var t=this,e=this.props.options,n=this.memoizeDataProps(this.props);if(this.chartInstance){e&&(this.chartInstance.options=l.a.helpers.configMerge(this.chartInstance.options,e));var r=this.getCurrentDatasets(),i=n.datasets||[];this.checkDatasets(r);var a=d()(r,this.props.datasetKeyProvider);this.chartInstance.config.data.datasets=i.map((function(e){var n=a[t.props.datasetKeyProvider(e)];if(n&&n.type===e.type&&e.data){n.data.splice(e.data.length),e.data.forEach((function(t,r){n.data[r]=e.data[r]}));e.data;var r=p(e,["data"]);return f({},n,r)}return e}));n.datasets;var o=p(n,["datasets"]);this.chartInstance.config.data=f({},this.chartInstance.config.data,o),this.chartInstance.update()}},e.prototype.renderChart=function(){var t=this.props,n=t.options,r=t.legend,i=t.type,a=t.plugins,o=this.element,s=this.memoizeDataProps();void 0===r||c()(e.defaultProps.legend,r)||(n.legend=r),this.chartInstance=new l.a(o,{type:i,data:s,options:n,plugins:a})},e.prototype.destroyChart=function(){if(this.chartInstance){this.saveCurrentDatasets();var t=Object.values(this.datasets);this.chartInstance.config.data.datasets=t,this.chartInstance.destroy()}},e.prototype.render=function(){var t=this.props,e=t.height,n=t.width,r=t.id;return i.a.createElement("canvas",{ref:this.ref,height:e,width:n,id:r,onClick:this.handleOnClick})},e}(i.a.Component);b.getLabelAsKey=function(t){return t.label},b.propTypes={data:o.a.oneOfType([o.a.object,o.a.func]).isRequired,getDatasetAtEvent:o.a.func,getElementAtEvent:o.a.func,getElementsAtEvent:o.a.func,height:o.a.number,legend:o.a.object,onElementsClick:o.a.func,options:o.a.object,plugins:o.a.arrayOf(o.a.object),redraw:o.a.bool,type:function(t,e,n){if(!l.a.controllers[t[e]])return new Error("Invalid chart type `"+t[e]+"` supplied to `"+n+"`.")},width:o.a.number,datasetKeyProvider:o.a.func},b.defaultProps={legend:{display:!0,position:"bottom"},type:"doughnut",height:150,width:300,redraw:!1,options:{},datasetKeyProvider:b.getLabelAsKey};(function(t){function e(){return g(this,e),m(this,t.apply(this,arguments))}v(e,t),e.prototype.render=function(){var t=this;return i.a.createElement(b,f({},this.props,{ref:function(e){return t.chartInstance=e&&e.chartInstance},type:"doughnut"}))}})(i.a.Component),function(t){function e(){return g(this,e),m(this,t.apply(this,arguments))}v(e,t),e.prototype.render=function(){var t=this;return i.a.createElement(b,f({},this.props,{ref:function(e){return t.chartInstance=e&&e.chartInstance},type:"pie"}))}}(i.a.Component);var x=function(t){function e(){return g(this,e),m(this,t.apply(this,arguments))}return v(e,t),e.prototype.render=function(){var t=this;return i.a.createElement(b,f({},this.props,{ref:function(e){return t.chartInstance=e&&e.chartInstance},type:"line"}))},e}(i.a.Component),_=function(t){function e(){return g(this,e),m(this,t.apply(this,arguments))}return v(e,t),e.prototype.render=function(){var t=this;return i.a.createElement(b,f({},this.props,{ref:function(e){return t.chartInstance=e&&e.chartInstance},type:"bar"}))},e}(i.a.Component);(function(t){function e(){return g(this,e),m(this,t.apply(this,arguments))}v(e,t),e.prototype.render=function(){var t=this;return i.a.createElement(b,f({},this.props,{ref:function(e){return t.chartInstance=e&&e.chartInstance},type:"horizontalBar"}))}})(i.a.Component),function(t){function e(){return g(this,e),m(this,t.apply(this,arguments))}v(e,t),e.prototype.render=function(){var t=this;return i.a.createElement(b,f({},this.props,{ref:function(e){return t.chartInstance=e&&e.chartInstance},type:"radar"}))}}(i.a.Component),function(t){function e(){return g(this,e),m(this,t.apply(this,arguments))}v(e,t),e.prototype.render=function(){var t=this;return i.a.createElement(b,f({},this.props,{ref:function(e){return t.chartInstance=e&&e.chartInstance},type:"polarArea"}))}}(i.a.Component),function(t){function e(){return g(this,e),m(this,t.apply(this,arguments))}v(e,t),e.prototype.render=function(){var t=this;return i.a.createElement(b,f({},this.props,{ref:function(e){return t.chartInstance=e&&e.chartInstance},type:"bubble"}))}}(i.a.Component),function(t){function e(){return g(this,e),m(this,t.apply(this,arguments))}v(e,t),e.prototype.render=function(){var t=this;return i.a.createElement(b,f({},this.props,{ref:function(e){return t.chartInstance=e&&e.chartInstance},type:"scatter"}))}}(i.a.Component),l.a.defaults}).call(this,n("8oxB"))},UExd:function(t,e,n){var r=n("nh4g"),i=n("DVgA"),a=n("aCFj"),o=n("UqcF").f;t.exports=function(t){return function(e){for(var n,s=a(e),l=i(s),u=l.length,c=0,h=[];u>c;)n=l[c++],r&&!o.call(s,n)||h.push(t?[n,s[n]]:s[n]);return h}}},UMY1:function(t,e,n){var r=n("oMRN"),i=n("JD84"),a=n("ut/Y"),o=n("Z0cm");t.exports=function(t,e){return function(n,s){var l=o(n)?r:i,u=e?e():{};return l(n,t,a(s,2),u)}}},"UNi/":function(t,e){t.exports=function(t,e){for(var n=-1,r=Array(t);++n<t;)r[n]=e(n);return r}},V6Ve:function(t,e,n){n("rGqo"),n("yt8O"),n("Btvt"),n("RW0V");var r=n("kekF")(Object.keys,Object);t.exports=r},VaNO:function(t,e){t.exports=function(t){return this.__data__.has(t)}},WFqU:function(t,e,n){(function(e){var n="object"==typeof e&&e&&e.Object===Object&&e;t.exports=n}).call(this,n("yLpj"))},Xi7e:function(t,e,n){var r=n("KMkd"),i=n("adU4"),a=n("tMB7"),o=n("+6XX"),s=n("Z8oC");function l(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var r=t[e];this.set(r[0],r[1])}}l.prototype.clear=r,l.prototype.delete=i,l.prototype.get=a,l.prototype.has=o,l.prototype.set=s,t.exports=l},"Y+p1":function(t,e,n){var r=n("wF/u");t.exports=function(t,e){return r(t,e)}},YESw:function(t,e,n){var r=n("Cwc5")(Object,"create");t.exports=r},YuTi:function(t,e,n){n("HAE/"),t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children||(t.children=[]),Object.defineProperty(t,"loaded",{enumerable:!0,get:function(){return t.l}}),Object.defineProperty(t,"id",{enumerable:!0,get:function(){return t.i}}),t.webpackPolyfill=1),t}},Z0cm:function(t,e,n){n("LK8F");var r=Array.isArray;t.exports=r},Z8oC:function(t,e,n){var r=n("y1pI");t.exports=function(t,e){var n=this.__data__,i=r(n,t);return i<0?(++this.size,n.push([t,e])):n[i][1]=e,this}},ZCpW:function(t,e,n){var r=n("lm/5"),i=n("O7RO"),a=n("IOzZ");t.exports=function(t){var e=i(t);return 1==e.length&&e[0][2]?a(e[0][0],e[0][1]):function(n){return n===t||r(n,t,e)}}},ZWtO:function(t,e,n){var r=n("4uTw"),i=n("9Nap");t.exports=function(t,e){for(var n=0,a=(e=r(e,t)).length;null!=t&&n<a;)t=t[i(e[n++])];return n&&n==a?t:void 0}},Zshi:function(t,e,n){var r=n("0/R4");n("Xtr8")("isFrozen",(function(t){return function(e){return!r(e)||!!t&&t(e)}}))},adU4:function(t,e,n){var r=n("y1pI"),i=Array.prototype.splice;t.exports=function(t){var e=this.__data__,n=r(e,t);return!(n<0)&&(n==e.length-1?e.pop():i.call(e,n,1),--this.size,!0)}},b80T:function(t,e,n){var r=n("UNi/"),i=n("03A+"),a=n("Z0cm"),o=n("DSRE"),s=n("wJg7"),l=n("c6wG"),u=Object.prototype.hasOwnProperty;t.exports=function(t,e){var n=a(t),c=!n&&i(t),h=!n&&!c&&o(t),d=!n&&!c&&!h&&l(t),f=n||c||h||d,p=f?r(t.length,String):[],g=p.length;for(var m in t)!e&&!u.call(t,m)||f&&("length"==m||h&&("offset"==m||"parent"==m)||d&&("buffer"==m||"byteLength"==m||"byteOffset"==m)||s(m,g))||p.push(m);return p}},bHtr:function(t,e,n){var r=n("XKFU");r(r.P,"Array",{fill:n("Nr18")}),n("nGyu")("fill")},c6wG:function(t,e,n){var r=n("dD9F"),i=n("sEf8"),a=n("mdPL"),o=a&&a.isTypedArray,s=o?i(o):r;t.exports=s},"cq/+":function(t,e,n){var r=n("mc0g")();t.exports=r},dD9F:function(t,e,n){var r=n("NykK"),i=n("shjB"),a=n("ExA7"),o={};o["[object Float32Array]"]=o["[object Float64Array]"]=o["[object Int8Array]"]=o["[object Int16Array]"]=o["[object Int32Array]"]=o["[object Uint8Array]"]=o["[object Uint8ClampedArray]"]=o["[object Uint16Array]"]=o["[object Uint32Array]"]=!0,o["[object Arguments]"]=o["[object Array]"]=o["[object ArrayBuffer]"]=o["[object Boolean]"]=o["[object DataView]"]=o["[object Date]"]=o["[object Error]"]=o["[object Function]"]=o["[object Map]"]=o["[object Number]"]=o["[object Object]"]=o["[object RegExp]"]=o["[object Set]"]=o["[object String]"]=o["[object WeakMap]"]=!1,t.exports=function(t){return a(t)&&i(t.length)&&!!o[r(t)]}},dt0z:function(t,e,n){var r=n("zoYe");t.exports=function(t){return null==t?"":r(t)}},e4Nc:function(t,e,n){var r=n("fGT3"),i=n("k+1r"),a=n("JHgL"),o=n("pSRY"),s=n("H8j4");function l(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var r=t[e];this.set(r[0],r[1])}}l.prototype.clear=r,l.prototype.delete=i,l.prototype.get=a,l.prototype.has=o,l.prototype.set=s,t.exports=l},e5cp:function(t,e,n){var r=n("fmRc"),i=n("or5M"),a=n("HDyB"),o=n("seXi"),s=n("QqLw"),l=n("Z0cm"),u=n("DSRE"),c=n("c6wG"),h="[object Object]",d=Object.prototype.hasOwnProperty;t.exports=function(t,e,n,f,p,g){var m=l(t),v=l(e),y=m?"[object Array]":s(t),b=v?"[object Array]":s(e),x=(y="[object Arguments]"==y?h:y)==h,_=(b="[object Arguments]"==b?h:b)==h,w=y==b;if(w&&u(t)){if(!u(e))return!1;m=!0,x=!1}if(w&&!x)return g||(g=new r),m||c(t)?i(t,e,n,f,p,g):a(t,e,y,n,f,p,g);if(!(1&n)){var k=x&&d.call(t,"__wrapped__"),M=_&&d.call(e,"__wrapped__");if(k||M){var S=k?t.value():t,D=M?e.value():e;return g||(g=new r),p(S,D,n,f,g)}}return!!w&&(g||(g=new r),o(t,e,n,f,p,g))}},eHKK:function(t,e,n){var r=n("XKFU");r(r.S,"Math",{log10:function(t){return Math.log(t)*Math.LOG10E}})},eUgh:function(t,e){t.exports=function(t,e){for(var n=-1,r=null==t?0:t.length,i=Array(r);++n<r;)i[n]=e(t[n],n,t);return i}},ebwN:function(t,e,n){var r=n("Cwc5")(n("Kz5y"),"Map");t.exports=r},ekgI:function(t,e,n){var r=n("YESw"),i=Object.prototype.hasOwnProperty;t.exports=function(t){var e=this.__data__;return r?void 0!==e[t]:i.call(e,t)}},fGT3:function(t,e,n){var r=n("4kuk"),i=n("Xi7e"),a=n("ebwN");t.exports=function(){this.size=0,this.__data__={hash:new r,map:new(a||i),string:new r}}},"fR/l":function(t,e,n){var r=n("CH3K"),i=n("Z0cm");t.exports=function(t,e,n){var a=e(t);return i(t)?a:r(a,n(t))}},fmRc:function(t,e,n){var r=n("Xi7e"),i=n("77Zs"),a=n("L8xA"),o=n("gCq4"),s=n("VaNO"),l=n("0Cz8");function u(t){var e=this.__data__=new r(t);this.size=e.size}u.prototype.clear=i,u.prototype.delete=a,u.prototype.get=o,u.prototype.has=s,u.prototype.set=l,t.exports=u},ftKO:function(t,e){t.exports=function(t){return this.__data__.set(t,"__lodash_hash_undefined__"),this}},gCq4:function(t,e){t.exports=function(t){return this.__data__.get(t)}},"h/M4":function(t,e,n){var r=n("XKFU");r(r.S,"Number",{MAX_SAFE_INTEGER:9007199254740991})},hgQt:function(t,e,n){var r=n("Juji"),i=n("4sDh");t.exports=function(t,e){return null!=t&&i(t,e,r)}},hhXQ:function(t,e,n){var r=n("XKFU"),i=n("UExd")(!1);r(r.S,"Object",{values:function(t){return i(t)}})},hypo:function(t,e,n){var r=n("O0oS");t.exports=function(t,e,n){"__proto__"==e&&r?r(t,e,{configurable:!0,enumerable:!0,value:n,writable:!0}):t[e]=n}},jqX0:function(t,e,n){var r=n("XKFU"),i=n("jtBr");r(r.P+r.F*(Date.prototype.toISOString!==i),"Date",{toISOString:i})},jtBr:function(t,e,n){"use strict";var r=n("eeVq"),i=Date.prototype.getTime,a=Date.prototype.toISOString,o=function(t){return t>9?t:"0"+t};t.exports=r((function(){return"0385-07-25T07:06:39.999Z"!=a.call(new Date(-5e13-1))}))||!r((function(){a.call(new Date(NaN))}))?function(){if(!isFinite(i.call(this)))throw RangeError("Invalid time value");var t=this,e=t.getUTCFullYear(),n=t.getUTCMilliseconds(),r=e<0?"-":e>9999?"+":"";return r+("00000"+Math.abs(e)).slice(r?-6:-4)+"-"+o(t.getUTCMonth()+1)+"-"+o(t.getUTCDate())+"T"+o(t.getUTCHours())+":"+o(t.getUTCMinutes())+":"+o(t.getUTCSeconds())+"."+(n>99?n:"0"+o(n))+"Z"}:a},"k+1r":function(t,e,n){var r=n("QkVE");t.exports=function(t){var e=r(this,t).delete(t);return this.size-=e?1:0,e}},kekF:function(t,e){t.exports=function(t,e){return function(n){return t(e(n))}}},knhD:function(t,e,n){var r=n("XKFU");r(r.S,"Number",{MIN_SAFE_INTEGER:-9007199254740991})},lQqw:function(t,e,n){var r=n("MMmD");t.exports=function(t,e){return function(n,i){if(null==n)return n;if(!r(n))return t(n,i);for(var a=n.length,o=e?a:-1,s=Object(n);(e?o--:++o<a)&&!1!==i(s[o],o,s););return n}}},lSCD:function(t,e,n){var r=n("NykK"),i=n("GoyQ");t.exports=function(t){if(!i(t))return!1;var e=r(t);return"[object Function]"==e||"[object GeneratorFunction]"==e||"[object AsyncFunction]"==e||"[object Proxy]"==e}},ljhN:function(t,e){t.exports=function(t,e){return t===e||t!=t&&e!=e}},"lm/5":function(t,e,n){var r=n("fmRc"),i=n("wF/u");t.exports=function(t,e,n,a){var o=n.length,s=o,l=!a;if(null==t)return!s;for(t=Object(t);o--;){var u=n[o];if(l&&u[2]?u[1]!==t[u[0]]:!(u[0]in t))return!1}for(;++o<s;){var c=(u=n[o])[0],h=t[c],d=u[1];if(l&&u[2]){if(void 0===h&&!(c in t))return!1}else{var f=new r;if(a)var p=a(h,d,c,t,e,f);if(!(void 0===p?i(d,h,3,a,f):p))return!1}}return!0}},lvtm:function(t,e){t.exports=Math.sign||function(t){return 0==(t=+t)||t!=t?t:t<0?-1:1}},mc0g:function(t,e){t.exports=function(t){return function(e,n,r){for(var i=-1,a=Object(e),o=r(e),s=o.length;s--;){var l=o[t?s:++i];if(!1===n(a[l],l,a))break}return e}}},mdPL:function(t,e,n){(function(t){var r=n("WFqU"),i=e&&!e.nodeType&&e,a=i&&"object"==typeof t&&t&&!t.nodeType&&t,o=a&&a.exports===i&&r.process,s=function(){try{var t=a&&a.require&&a.require("util").types;return t||o&&o.binding&&o.binding("util")}catch(e){}}();t.exports=s}).call(this,n("YuTi")(t))},mwIZ:function(t,e,n){var r=n("ZWtO");t.exports=function(t,e,n){var i=null==t?void 0:r(t,e);return void 0===i?n:i}},nmnc:function(t,e,n){var r=n("Kz5y").Symbol;t.exports=r},oMRN:function(t,e){t.exports=function(t,e,n,r){for(var i=-1,a=null==t?0:t.length;++i<a;){var o=t[i];e(r,o,n(o),t)}return r}},or5M:function(t,e,n){var r=n("1hJj"),i=n("QoRX"),a=n("xYSL");t.exports=function(t,e,n,o,s,l){var u=1&n,c=t.length,h=e.length;if(c!=h&&!(u&&h>c))return!1;var d=l.get(t);if(d&&l.get(e))return d==e;var f=-1,p=!0,g=2&n?new r:void 0;for(l.set(t,e),l.set(e,t);++f<c;){var m=t[f],v=e[f];if(o)var y=u?o(v,m,f,e,t,l):o(m,v,f,t,e,l);if(void 0!==y){if(y)continue;p=!1;break}if(g){if(!i(e,(function(t,e){if(!a(g,e)&&(m===t||s(m,t,n,o,l)))return g.push(e)}))){p=!1;break}}else if(m!==v&&!s(m,v,n,o,l)){p=!1;break}}return l.delete(t),l.delete(e),p}},oweT:function(t,e,n){"use strict";n.r(e);var r=n("Bl7J"),i=n("2A+t"),a=n("MXbp"),o=n("q1tI"),s=n("UDbo"),l=n("qKvR");var u=function(t){var e,n;function r(){for(var e,n=arguments.length,r=new Array(n),i=0;i<n;i++)r[i]=arguments[i];return(e=t.call.apply(t,[this].concat(r))||this).state={lineChartData:e.props.lineChartData},e}return n=t,(e=r).prototype=Object.create(n.prototype),e.prototype.constructor=e,e.__proto__=n,r.prototype.render=function(){return Object(l.c)("div",null,Object(l.c)(s.b,{data:this.state.lineChartData,height:220,width:250,options:{scales:{xAxes:[{display:!0,ticks:{fontColor:"white",maxTicksLimit:3},gridLines:{color:"white"},scaleLabel:{display:!0,labelString:this.props.xAxis,fontColor:"white"}}],yAxes:[{display:!0,ticks:{fontColor:"white",maxTicksLimit:3},gridLines:{color:"white"},scaleLabel:{display:!0,labelString:this.props.yAxis,fontColor:"white"}}]},legend:{labels:{fontColor:"white"},display:this.props.displayLegend,position:this.props.legendPosition},animation:{duration:2e3,easing:"easeOutCubic"}}}))},r}(o.Component);u.defaultProps={displayLegend:!0,legendPosition:"bottom"};var c=u;var h=function(t){var e,n;function r(){for(var e,n=arguments.length,r=new Array(n),i=0;i<n;i++)r[i]=arguments[i];return(e=t.call.apply(t,[this].concat(r))||this).state={barChartData:e.props.barChartData},e}return n=t,(e=r).prototype=Object.create(n.prototype),e.prototype.constructor=e,e.__proto__=n,r.prototype.render=function(){return Object(l.c)("div",null,Object(l.c)(s.a,{data:this.state.barChartData,height:220,width:250,options:{scales:{xAxes:[{display:!0,ticks:{fontColor:"white"},gridLines:{color:"white"},scaleLabel:{display:!1,labelString:this.props.xAxis,fontColor:"white"}}],yAxes:[{display:!0,ticks:{fontColor:"white",maxTicksLimit:4,padding:2,beginAtZero:!0},gridLines:{color:"white"},scaleLabel:{display:!0,labelString:this.props.yAxis,fontColor:"white"}}]},legend:{display:this.props.displayLegend,position:this.props.legendPosition},animation:{duration:2e3,easing:"easeOutCubic"}}}))},r}(o.Component);h.defaultProps={displayLegend:!1,legendPosition:"bottom"};var d=h,f=function(t){var e=t.children,n=t.primary,r=t.graph,a=t.heading,o=t.chartType,s=t.xAxis,l=t.yAxis;return"line"===o?Object(i.c)("div",{sx:{boxShadow:n?"cardShadow":null,borderRadius:"card",backgroundColor:"primary",color:"white",marginY:5,marginX:1,width:"18rem",display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"center"}},Object(i.c)("h5",{sx:{fontSize:"1.1rem",margin:"0.5rem 1.5rem 0.5rem 1.5rem",textAlign:"center",height:"3rem"}},a),Object(i.c)(c,{lineChartData:r,legendPosition:"bottom",xAxis:s,yAxis:l}),Object(i.c)("div",{sx:{boxShadowBottom:n?"cardShadow":null,borderBottomRightRadius:"card",borderBottomLeftRadius:"card",backgroundColor:"white",borderTop:"5px solid #5DA7A3",color:"darkText",height:"50%",padding:"4rem 1rem",display:"flex",justifyContent:"center",alignItems:"center",width:"100%",marginBottom:"-4rem",marginTop:"1rem"}},e)):Object(i.c)("div",{sx:{boxShadow:n?"cardShadow":null,borderRadius:"card",backgroundColor:"primary",color:"white",marginY:5,marginX:1,width:"18rem",display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"center"}},Object(i.c)("h5",{sx:{fontSize:"1.1rem",margin:"0.5rem 1rem 0.5rem 1rem",textAlign:"center",height:"3rem"}},a),Object(i.c)(d,{barChartData:r,yAxis:l}),Object(i.c)("div",{sx:{boxShadowBottom:n?"cardShadow":null,borderBottomRightRadius:"card",borderBottomLeftRadius:"card",backgroundColor:"white",borderTop:"5px solid #5DA7A3",color:"darkText",height:"50%",padding:"4rem 1rem",display:"flex",justifyContent:"center",alignItems:"center",width:"100%",marginBottom:"-4rem",marginTop:"1rem"}},e))};var p=function(t){var e,n;function o(){for(var e,n=arguments.length,r=new Array(n),i=0;i<n;i++)r[i]=arguments[i];return(e=t.call.apply(t,[this].concat(r))||this).state={barChartJDK8Footprint:{labels:["OpenJ9","HotSpot"],datasets:[{data:[.34,1],backgroundColor:["#5DA7A3","#E58B23"]}]},lineChartJK8FootprintDuringrampup:{labels:[0,200,400,600,800,1e3,1200,1400,1600,1800],datasets:[{label:"OpenJ9",data:[232,488,505,511,516,517,520,521,521,522],fill:!1,borderColor:"#5DA7A3",backgroundColor:"#5DA7A3"},{label:"HotSpot",data:[563,902,1023,1140,1200,1218,1220,1289,1359,1368],fill:!1,borderColor:"#E58B23",backgroundColor:"#E58B23"}]},barChartJDK8Startup:{labels:["OpenJ9","HotSpot"],datasets:[{data:[.58,1],backgroundColor:["#5DA7A3","#E58B23"]}]},lineChartJK8FasterRampupInTheCloud:{labels:[0,150,300,450,600,750,900,1050,1200,1350],datasets:[{label:"OpenJ9",data:[8.5,1064,1063,1133,1188.5,1071,1125.5,1084.5,1095,1104.5],fill:!1,borderColor:"#5DA7A3",backgroundColor:"#5DA7A3"},{label:"HotSpot",data:[10.5,529.5,700.5,832.5,796,829.5,698.5,791.5,1017,1175.5],fill:!1,borderColor:"#E58B23",backgroundColor:"#E58B23"}]}},e}return n=t,(e=o).prototype=Object.create(n.prototype),e.prototype.constructor=e,e.__proto__=n,o.prototype.render=function(){return Object(i.c)(r.a,{isHome:!1,title:"Eclipse OpenJ9 performance",description:"OpenJDK with OpenJ9 demonstrates significantly better performance than HotSpot."},Object(i.c)("div",{sx:{backgroundColor:"#F5F9FC",paddingX:"10%",paddingTop:"3%",paddingBottom:"1%"}},Object(i.c)(a.b.h1,{sx:{marginBottom:"1rem"}},"Performance Overview"),Object(i.c)(a.b.p,null,"Application performance can be measured using many different metrics, including startup time, ramp-up time, footprint, and response time, as well as throughput. At Eclipse OpenJ9, we keep a watchful eye on all of these metrics, making sensible tradeoffs and providing tuning options that allow the virtual machine (VM) to be optimized for different workloads.")),Object(i.c)("div",{sx:{backgroundColor:"#F5F9FC",paddingX:"10%",paddingTop:"1%",paddingBottom:"3%"}},Object(i.c)(a.b.h2,null,"OpenJDK 8 performance with Eclipse OpenJ9"),Object(i.c)(a.b.p,{sx:{marginBottom:"0.5rem"}},"The result is that OpenJDK 8 with OpenJ9 demonstrates significantly better performance than with Hotspot."),Object(i.c)("div",{sx:{display:"flex",justifyContent:"space-around",flexWrap:"wrap"}},Object(i.c)(f,{graph:this.state.barChartJDK8Footprint,heading:"66% smaller footprint after startup",primary:!0,chartType:"bar",yAxis:"Relative resident set size"},Object(i.c)("p",null,"OpenJ9 is highly optimized for cloud workloads, where minimizing memory footprint is important. Out of the box, the footprint is 66% smaller than HotSpot.")),Object(i.c)(f,{graph:this.state.lineChartJK8FootprintDuringrampup,heading:"63% smaller footprint during ramp up",primary:!0,chartType:"line",yAxis:"Resident Set Size (MB)",xAxis:"Time (s)"},Object(i.c)("p",null,"Memory footprint increases rapidly when load is applied. However, at steady state, OpenJ9 consistently used around 63% less physical memory than HotSpot.")),Object(i.c)(f,{graph:this.state.barChartJDK8Startup,heading:"42% faster startup time",primary:!0,chartType:"bar",yAxis:"Relative start-up time"},Object(i.c)("p",null,"Shared classes and Ahead-of-Time (AOT) technologies typically reduce startup time. By using -Xquickstart mode as well, you can reduce startup time by up to 42%.")),Object(i.c)(f,{graph:this.state.lineChartJK8FasterRampupInTheCloud,heading:"Faster ramp-up time in the cloud",primary:!0,chartType:"line",xAxis:"Time (s)",yAxis:"Throughput"},Object(i.c)("p",null,"OpenJ9 reaches peak throughput on a single CPU core in 8.5 minutes compared with 30 minutes for Hotspot. Ideal for short-lived VMs running in the cloud."))),Object(i.c)("div",{sx:{display:"flex",justifyContent:"center",paddingBottom:"5%"}},Object(i.c)("a",{sx:{variant:"buttons.secondary",display:"flex",alignItems:"center",justifyContent:"center",textDecoration:"none",width:"16rem",marginTop:"5rem"},href:"https://github.com/eclipse/openj9-website/blob/master/benchmark/daytrader7.md",rel:"noopener noreferrer",target:"_blank"},"Read more performance details"))))},o}(o.Component);e.default=p},pSRY:function(t,e,n){var r=n("QkVE");t.exports=function(t){return r(this,t).has(t)}},qZTm:function(t,e,n){var r=n("fR/l"),i=n("MvSz"),a=n("7GkX");t.exports=function(t){return r(t,a,i)}},rEGp:function(t,e,n){n("8+KV"),t.exports=function(t){var e=-1,n=Array(t.size);return t.forEach((function(t){n[++e]=t})),n}},sEf8:function(t,e){t.exports=function(t){return function(e){return t(e)}}},seXi:function(t,e,n){var r=n("qZTm"),i=Object.prototype.hasOwnProperty;t.exports=function(t,e,n,a,o,s){var l=1&n,u=r(t),c=u.length;if(c!=r(e).length&&!l)return!1;for(var h=c;h--;){var d=u[h];if(!(l?d in e:i.call(e,d)))return!1}var f=s.get(t);if(f&&s.get(e))return f==e;var p=!0;s.set(t,e),s.set(e,t);for(var g=l;++h<c;){var m=t[d=u[h]],v=e[d];if(a)var y=l?a(v,m,d,e,t,s):a(m,v,d,t,e,s);if(!(void 0===y?m===v||o(m,v,n,a,s):y)){p=!1;break}g||(g="constructor"==d)}if(p&&!g){var b=t.constructor,x=e.constructor;b!=x&&"constructor"in t&&"constructor"in e&&!("function"==typeof b&&b instanceof b&&"function"==typeof x&&x instanceof x)&&(p=!1)}return s.delete(t),s.delete(e),p}},shjB:function(t,e){t.exports=function(t){return"number"==typeof t&&t>-1&&t%1==0&&t<=9007199254740991}},tMB7:function(t,e,n){var r=n("y1pI");t.exports=function(t){var e=this.__data__,n=r(e,t);return n<0?void 0:e[n][1]}},tadb:function(t,e,n){var r=n("Cwc5")(n("Kz5y"),"DataView");t.exports=r},u8Dt:function(t,e,n){var r=n("YESw"),i=Object.prototype.hasOwnProperty;t.exports=function(t){var e=this.__data__;if(r){var n=e[t];return"__lodash_hash_undefined__"===n?void 0:n}return i.call(e,t)?e[t]:void 0}},"ut/Y":function(t,e,n){var r=n("ZCpW"),i=n("GDhZ"),a=n("zZ0H"),o=n("Z0cm"),s=n("+c4W");t.exports=function(t){return"function"==typeof t?t:null==t?a:"object"==typeof t?o(t)?i(t[0],t[1]):r(t):s(t)}},"wF/u":function(t,e,n){var r=n("e5cp"),i=n("ExA7");t.exports=function t(e,n,a,o,s){return e===n||(null==e||null==n||!i(e)&&!i(n)?e!=e&&n!=n:r(e,n,a,o,t,s))}},wJg7:function(t,e){var n=/^(?:0|[1-9]\d*)$/;t.exports=function(t,e){var r=typeof t;return!!(e=null==e?9007199254740991:e)&&("number"==r||"symbol"!=r&&n.test(t))&&t>-1&&t%1==0&&t<e}},"wd/R":function(t,e,n){(function(t){n("AphP"),n("jqX0"),n("eM6i"),n("f3/d"),n("8+KV"),n("KKXr"),n("V+eJ"),n("SRfc"),n("Vd3H"),n("pIFo"),n("rGqo"),n("yt8O"),n("RW0V"),n("Oyvg"),n("Zshi"),n("dZ+Y"),n("a1Th"),n("h7Nl"),n("Btvt"),t.exports=function(){"use strict";var e,n;function r(){return e.apply(null,arguments)}function i(t){return t instanceof Array||"[object Array]"===Object.prototype.toString.call(t)}function a(t){return null!=t&&"[object Object]"===Object.prototype.toString.call(t)}function o(t){return void 0===t}function s(t){return"number"==typeof t||"[object Number]"===Object.prototype.toString.call(t)}function l(t){return t instanceof Date||"[object Date]"===Object.prototype.toString.call(t)}function u(t,e){var n,r=[];for(n=0;n<t.length;++n)r.push(e(t[n],n));return r}function c(t,e){return Object.prototype.hasOwnProperty.call(t,e)}function h(t,e){for(var n in e)c(e,n)&&(t[n]=e[n]);return c(e,"toString")&&(t.toString=e.toString),c(e,"valueOf")&&(t.valueOf=e.valueOf),t}function d(t,e,n,r){return ke(t,e,n,r,!0).utc()}function f(t){return null==t._pf&&(t._pf={empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1,parsedDateParts:[],meridiem:null,rfc2822:!1,weekdayMismatch:!1}),t._pf}function p(t){if(null==t._isValid){var e=f(t),r=n.call(e.parsedDateParts,(function(t){return null!=t})),i=!isNaN(t._d.getTime())&&e.overflow<0&&!e.empty&&!e.invalidMonth&&!e.invalidWeekday&&!e.weekdayMismatch&&!e.nullInput&&!e.invalidFormat&&!e.userInvalidated&&(!e.meridiem||e.meridiem&&r);if(t._strict&&(i=i&&0===e.charsLeftOver&&0===e.unusedTokens.length&&void 0===e.bigHour),null!=Object.isFrozen&&Object.isFrozen(t))return i;t._isValid=i}return t._isValid}function g(t){var e=d(NaN);return null!=t?h(f(e),t):f(e).userInvalidated=!0,e}n=Array.prototype.some?Array.prototype.some:function(t){for(var e=Object(this),n=e.length>>>0,r=0;r<n;r++)if(r in e&&t.call(this,e[r],r,e))return!0;return!1};var m=r.momentProperties=[];function v(t,e){var n,r,i;if(o(e._isAMomentObject)||(t._isAMomentObject=e._isAMomentObject),o(e._i)||(t._i=e._i),o(e._f)||(t._f=e._f),o(e._l)||(t._l=e._l),o(e._strict)||(t._strict=e._strict),o(e._tzm)||(t._tzm=e._tzm),o(e._isUTC)||(t._isUTC=e._isUTC),o(e._offset)||(t._offset=e._offset),o(e._pf)||(t._pf=f(e)),o(e._locale)||(t._locale=e._locale),m.length>0)for(n=0;n<m.length;n++)o(i=e[r=m[n]])||(t[r]=i);return t}var y=!1;function b(t){v(this,t),this._d=new Date(null!=t._d?t._d.getTime():NaN),this.isValid()||(this._d=new Date(NaN)),!1===y&&(y=!0,r.updateOffset(this),y=!1)}function x(t){return t instanceof b||null!=t&&null!=t._isAMomentObject}function _(t){return t<0?Math.ceil(t)||0:Math.floor(t)}function w(t){var e=+t,n=0;return 0!==e&&isFinite(e)&&(n=_(e)),n}function k(t,e,n){var r,i=Math.min(t.length,e.length),a=Math.abs(t.length-e.length),o=0;for(r=0;r<i;r++)(n&&t[r]!==e[r]||!n&&w(t[r])!==w(e[r]))&&o++;return o+a}function M(t){!1===r.suppressDeprecationWarnings&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+t)}function S(t,e){var n=!0;return h((function(){if(null!=r.deprecationHandler&&r.deprecationHandler(null,t),n){for(var i,a=[],o=0;o<arguments.length;o++){if(i="","object"==typeof arguments[o]){for(var s in i+="\n["+o+"] ",arguments[0])i+=s+": "+arguments[0][s]+", ";i=i.slice(0,-2)}else i=arguments[o];a.push(i)}M(t+"\nArguments: "+Array.prototype.slice.call(a).join("")+"\n"+(new Error).stack),n=!1}return e.apply(this,arguments)}),e)}var D,C={};function O(t,e){null!=r.deprecationHandler&&r.deprecationHandler(t,e),C[t]||(M(e),C[t]=!0)}function T(t){return t instanceof Function||"[object Function]"===Object.prototype.toString.call(t)}function P(t,e){var n,r=h({},t);for(n in e)c(e,n)&&(a(t[n])&&a(e[n])?(r[n]={},h(r[n],t[n]),h(r[n],e[n])):null!=e[n]?r[n]=e[n]:delete r[n]);for(n in t)c(t,n)&&!c(e,n)&&a(t[n])&&(r[n]=h({},r[n]));return r}function A(t){null!=t&&this.set(t)}r.suppressDeprecationWarnings=!1,r.deprecationHandler=null,D=Object.keys?Object.keys:function(t){var e,n=[];for(e in t)c(t,e)&&n.push(e);return n};var I={};function F(t,e){var n=t.toLowerCase();I[n]=I[n+"s"]=I[e]=t}function L(t){return"string"==typeof t?I[t]||I[t.toLowerCase()]:void 0}function R(t){var e,n,r={};for(n in t)c(t,n)&&(e=L(n))&&(r[e]=t[n]);return r}var N={};function E(t,e){N[t]=e}function j(t,e,n){var r=""+Math.abs(t),i=e-r.length;return(t>=0?n?"+":"":"-")+Math.pow(10,Math.max(0,i)).toString().substr(1)+r}var z=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,W=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,Y={},V={};function B(t,e,n,r){var i=r;"string"==typeof r&&(i=function(){return this[r]()}),t&&(V[t]=i),e&&(V[e[0]]=function(){return j(i.apply(this,arguments),e[1],e[2])}),n&&(V[n]=function(){return this.localeData().ordinal(i.apply(this,arguments),t)})}function H(t,e){return t.isValid()?(e=U(e,t.localeData()),Y[e]=Y[e]||function(t){var e,n,r,i=t.match(z);for(e=0,n=i.length;e<n;e++)V[i[e]]?i[e]=V[i[e]]:i[e]=(r=i[e]).match(/\[[\s\S]/)?r.replace(/^\[|\]$/g,""):r.replace(/\\/g,"");return function(e){var r,a="";for(r=0;r<n;r++)a+=T(i[r])?i[r].call(e,t):i[r];return a}}(e),Y[e](t)):t.localeData().invalidDate()}function U(t,e){var n=5;function r(t){return e.longDateFormat(t)||t}for(W.lastIndex=0;n>=0&&W.test(t);)t=t.replace(W,r),W.lastIndex=0,n-=1;return t}var G=/\d/,q=/\d\d/,K=/\d{3}/,Z=/\d{4}/,X=/[+-]?\d{6}/,J=/\d\d?/,$=/\d\d\d\d?/,Q=/\d\d\d\d\d\d?/,tt=/\d{1,3}/,et=/\d{1,4}/,nt=/[+-]?\d{1,6}/,rt=/\d+/,it=/[+-]?\d+/,at=/Z|[+-]\d\d:?\d\d/gi,ot=/Z|[+-]\d\d(?::?\d\d)?/gi,st=/[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i,lt={};function ut(t,e,n){lt[t]=T(e)?e:function(t,r){return t&&n?n:e}}function ct(t,e){return c(lt,t)?lt[t](e._strict,e._locale):new RegExp(ht(t.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,(function(t,e,n,r,i){return e||n||r||i}))))}function ht(t){return t.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}var dt={};function ft(t,e){var n,r=e;for("string"==typeof t&&(t=[t]),s(e)&&(r=function(t,n){n[e]=w(t)}),n=0;n<t.length;n++)dt[t[n]]=r}function pt(t,e){ft(t,(function(t,n,r,i){r._w=r._w||{},e(t,r._w,r,i)}))}function gt(t,e,n){null!=e&&c(dt,t)&&dt[t](e,n._a,n,t)}function mt(t){return vt(t)?366:365}function vt(t){return t%4==0&&t%100!=0||t%400==0}B("Y",0,0,(function(){var t=this.year();return t<=9999?""+t:"+"+t})),B(0,["YY",2],0,(function(){return this.year()%100})),B(0,["YYYY",4],0,"year"),B(0,["YYYYY",5],0,"year"),B(0,["YYYYYY",6,!0],0,"year"),F("year","y"),E("year",1),ut("Y",it),ut("YY",J,q),ut("YYYY",et,Z),ut("YYYYY",nt,X),ut("YYYYYY",nt,X),ft(["YYYYY","YYYYYY"],0),ft("YYYY",(function(t,e){e[0]=2===t.length?r.parseTwoDigitYear(t):w(t)})),ft("YY",(function(t,e){e[0]=r.parseTwoDigitYear(t)})),ft("Y",(function(t,e){e[0]=parseInt(t,10)})),r.parseTwoDigitYear=function(t){return w(t)+(w(t)>68?1900:2e3)};var yt,bt=xt("FullYear",!0);function xt(t,e){return function(n){return null!=n?(wt(this,t,n),r.updateOffset(this,e),this):_t(this,t)}}function _t(t,e){return t.isValid()?t._d["get"+(t._isUTC?"UTC":"")+e]():NaN}function wt(t,e,n){t.isValid()&&!isNaN(n)&&("FullYear"===e&&vt(t.year())&&1===t.month()&&29===t.date()?t._d["set"+(t._isUTC?"UTC":"")+e](n,t.month(),kt(n,t.month())):t._d["set"+(t._isUTC?"UTC":"")+e](n))}function kt(t,e){if(isNaN(t)||isNaN(e))return NaN;var n,r=(e%(n=12)+n)%n;return t+=(e-r)/12,1===r?vt(t)?29:28:31-r%7%2}yt=Array.prototype.indexOf?Array.prototype.indexOf:function(t){var e;for(e=0;e<this.length;++e)if(this[e]===t)return e;return-1},B("M",["MM",2],"Mo",(function(){return this.month()+1})),B("MMM",0,0,(function(t){return this.localeData().monthsShort(this,t)})),B("MMMM",0,0,(function(t){return this.localeData().months(this,t)})),F("month","M"),E("month",8),ut("M",J),ut("MM",J,q),ut("MMM",(function(t,e){return e.monthsShortRegex(t)})),ut("MMMM",(function(t,e){return e.monthsRegex(t)})),ft(["M","MM"],(function(t,e){e[1]=w(t)-1})),ft(["MMM","MMMM"],(function(t,e,n,r){var i=n._locale.monthsParse(t,r,n._strict);null!=i?e[1]=i:f(n).invalidMonth=t}));var Mt=/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/,St="January_February_March_April_May_June_July_August_September_October_November_December".split("_"),Dt="Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_");function Ct(t,e,n){var r,i,a,o=t.toLocaleLowerCase();if(!this._monthsParse)for(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[],r=0;r<12;++r)a=d([2e3,r]),this._shortMonthsParse[r]=this.monthsShort(a,"").toLocaleLowerCase(),this._longMonthsParse[r]=this.months(a,"").toLocaleLowerCase();return n?"MMM"===e?-1!==(i=yt.call(this._shortMonthsParse,o))?i:null:-1!==(i=yt.call(this._longMonthsParse,o))?i:null:"MMM"===e?-1!==(i=yt.call(this._shortMonthsParse,o))?i:-1!==(i=yt.call(this._longMonthsParse,o))?i:null:-1!==(i=yt.call(this._longMonthsParse,o))?i:-1!==(i=yt.call(this._shortMonthsParse,o))?i:null}function Ot(t,e){var n;if(!t.isValid())return t;if("string"==typeof e)if(/^\d+$/.test(e))e=w(e);else if(!s(e=t.localeData().monthsParse(e)))return t;return n=Math.min(t.date(),kt(t.year(),e)),t._d["set"+(t._isUTC?"UTC":"")+"Month"](e,n),t}function Tt(t){return null!=t?(Ot(this,t),r.updateOffset(this,!0),this):_t(this,"Month")}var Pt=st,At=st;function It(){function t(t,e){return e.length-t.length}var e,n,r=[],i=[],a=[];for(e=0;e<12;e++)n=d([2e3,e]),r.push(this.monthsShort(n,"")),i.push(this.months(n,"")),a.push(this.months(n,"")),a.push(this.monthsShort(n,""));for(r.sort(t),i.sort(t),a.sort(t),e=0;e<12;e++)r[e]=ht(r[e]),i[e]=ht(i[e]);for(e=0;e<24;e++)a[e]=ht(a[e]);this._monthsRegex=new RegExp("^("+a.join("|")+")","i"),this._monthsShortRegex=this._monthsRegex,this._monthsStrictRegex=new RegExp("^("+i.join("|")+")","i"),this._monthsShortStrictRegex=new RegExp("^("+r.join("|")+")","i")}function Ft(t,e,n,r,i,a,o){var s;return t<100&&t>=0?(s=new Date(t+400,e,n,r,i,a,o),isFinite(s.getFullYear())&&s.setFullYear(t)):s=new Date(t,e,n,r,i,a,o),s}function Lt(t){var e;if(t<100&&t>=0){var n=Array.prototype.slice.call(arguments);n[0]=t+400,e=new Date(Date.UTC.apply(null,n)),isFinite(e.getUTCFullYear())&&e.setUTCFullYear(t)}else e=new Date(Date.UTC.apply(null,arguments));return e}function Rt(t,e,n){var r=7+e-n;return-(7+Lt(t,0,r).getUTCDay()-e)%7+r-1}function Nt(t,e,n,r,i){var a,o,s=1+7*(e-1)+(7+n-r)%7+Rt(t,r,i);return s<=0?o=mt(a=t-1)+s:s>mt(t)?(a=t+1,o=s-mt(t)):(a=t,o=s),{year:a,dayOfYear:o}}function Et(t,e,n){var r,i,a=Rt(t.year(),e,n),o=Math.floor((t.dayOfYear()-a-1)/7)+1;return o<1?r=o+jt(i=t.year()-1,e,n):o>jt(t.year(),e,n)?(r=o-jt(t.year(),e,n),i=t.year()+1):(i=t.year(),r=o),{week:r,year:i}}function jt(t,e,n){var r=Rt(t,e,n),i=Rt(t+1,e,n);return(mt(t)-r+i)/7}function zt(t,e){return t.slice(e,7).concat(t.slice(0,e))}B("w",["ww",2],"wo","week"),B("W",["WW",2],"Wo","isoWeek"),F("week","w"),F("isoWeek","W"),E("week",5),E("isoWeek",5),ut("w",J),ut("ww",J,q),ut("W",J),ut("WW",J,q),pt(["w","ww","W","WW"],(function(t,e,n,r){e[r.substr(0,1)]=w(t)})),B("d",0,"do","day"),B("dd",0,0,(function(t){return this.localeData().weekdaysMin(this,t)})),B("ddd",0,0,(function(t){return this.localeData().weekdaysShort(this,t)})),B("dddd",0,0,(function(t){return this.localeData().weekdays(this,t)})),B("e",0,0,"weekday"),B("E",0,0,"isoWeekday"),F("day","d"),F("weekday","e"),F("isoWeekday","E"),E("day",11),E("weekday",11),E("isoWeekday",11),ut("d",J),ut("e",J),ut("E",J),ut("dd",(function(t,e){return e.weekdaysMinRegex(t)})),ut("ddd",(function(t,e){return e.weekdaysShortRegex(t)})),ut("dddd",(function(t,e){return e.weekdaysRegex(t)})),pt(["dd","ddd","dddd"],(function(t,e,n,r){var i=n._locale.weekdaysParse(t,r,n._strict);null!=i?e.d=i:f(n).invalidWeekday=t})),pt(["d","e","E"],(function(t,e,n,r){e[r]=w(t)}));var Wt="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),Yt="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),Vt="Su_Mo_Tu_We_Th_Fr_Sa".split("_");function Bt(t,e,n){var r,i,a,o=t.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],r=0;r<7;++r)a=d([2e3,1]).day(r),this._minWeekdaysParse[r]=this.weekdaysMin(a,"").toLocaleLowerCase(),this._shortWeekdaysParse[r]=this.weekdaysShort(a,"").toLocaleLowerCase(),this._weekdaysParse[r]=this.weekdays(a,"").toLocaleLowerCase();return n?"dddd"===e?-1!==(i=yt.call(this._weekdaysParse,o))?i:null:"ddd"===e?-1!==(i=yt.call(this._shortWeekdaysParse,o))?i:null:-1!==(i=yt.call(this._minWeekdaysParse,o))?i:null:"dddd"===e?-1!==(i=yt.call(this._weekdaysParse,o))?i:-1!==(i=yt.call(this._shortWeekdaysParse,o))?i:-1!==(i=yt.call(this._minWeekdaysParse,o))?i:null:"ddd"===e?-1!==(i=yt.call(this._shortWeekdaysParse,o))?i:-1!==(i=yt.call(this._weekdaysParse,o))?i:-1!==(i=yt.call(this._minWeekdaysParse,o))?i:null:-1!==(i=yt.call(this._minWeekdaysParse,o))?i:-1!==(i=yt.call(this._weekdaysParse,o))?i:-1!==(i=yt.call(this._shortWeekdaysParse,o))?i:null}var Ht=st,Ut=st,Gt=st;function qt(){function t(t,e){return e.length-t.length}var e,n,r,i,a,o=[],s=[],l=[],u=[];for(e=0;e<7;e++)n=d([2e3,1]).day(e),r=this.weekdaysMin(n,""),i=this.weekdaysShort(n,""),a=this.weekdays(n,""),o.push(r),s.push(i),l.push(a),u.push(r),u.push(i),u.push(a);for(o.sort(t),s.sort(t),l.sort(t),u.sort(t),e=0;e<7;e++)s[e]=ht(s[e]),l[e]=ht(l[e]),u[e]=ht(u[e]);this._weekdaysRegex=new RegExp("^("+u.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+l.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+s.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+o.join("|")+")","i")}function Kt(){return this.hours()%12||12}function Zt(t,e){B(t,0,0,(function(){return this.localeData().meridiem(this.hours(),this.minutes(),e)}))}function Xt(t,e){return e._meridiemParse}B("H",["HH",2],0,"hour"),B("h",["hh",2],0,Kt),B("k",["kk",2],0,(function(){return this.hours()||24})),B("hmm",0,0,(function(){return""+Kt.apply(this)+j(this.minutes(),2)})),B("hmmss",0,0,(function(){return""+Kt.apply(this)+j(this.minutes(),2)+j(this.seconds(),2)})),B("Hmm",0,0,(function(){return""+this.hours()+j(this.minutes(),2)})),B("Hmmss",0,0,(function(){return""+this.hours()+j(this.minutes(),2)+j(this.seconds(),2)})),Zt("a",!0),Zt("A",!1),F("hour","h"),E("hour",13),ut("a",Xt),ut("A",Xt),ut("H",J),ut("h",J),ut("k",J),ut("HH",J,q),ut("hh",J,q),ut("kk",J,q),ut("hmm",$),ut("hmmss",Q),ut("Hmm",$),ut("Hmmss",Q),ft(["H","HH"],3),ft(["k","kk"],(function(t,e,n){var r=w(t);e[3]=24===r?0:r})),ft(["a","A"],(function(t,e,n){n._isPm=n._locale.isPM(t),n._meridiem=t})),ft(["h","hh"],(function(t,e,n){e[3]=w(t),f(n).bigHour=!0})),ft("hmm",(function(t,e,n){var r=t.length-2;e[3]=w(t.substr(0,r)),e[4]=w(t.substr(r)),f(n).bigHour=!0})),ft("hmmss",(function(t,e,n){var r=t.length-4,i=t.length-2;e[3]=w(t.substr(0,r)),e[4]=w(t.substr(r,2)),e[5]=w(t.substr(i)),f(n).bigHour=!0})),ft("Hmm",(function(t,e,n){var r=t.length-2;e[3]=w(t.substr(0,r)),e[4]=w(t.substr(r))})),ft("Hmmss",(function(t,e,n){var r=t.length-4,i=t.length-2;e[3]=w(t.substr(0,r)),e[4]=w(t.substr(r,2)),e[5]=w(t.substr(i))}));var Jt,$t=xt("Hours",!0),Qt={calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},invalidDate:"Invalid date",ordinal:"%d",dayOfMonthOrdinalParse:/\d{1,2}/,relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},months:St,monthsShort:Dt,week:{dow:0,doy:6},weekdays:Wt,weekdaysMin:Vt,weekdaysShort:Yt,meridiemParse:/[ap]\.?m?\.?/i},te={},ee={};function ne(t){return t?t.toLowerCase().replace("_","-"):t}function re(e){var n=null;if(!te[e]&&void 0!==t&&t&&t.exports)try{n=Jt._abbr,!function(){var t=new Error("Cannot find module 'undefined'");throw t.code="MODULE_NOT_FOUND",t}(),ie(n)}catch(r){}return te[e]}function ie(t,e){var n;return t&&((n=o(e)?oe(t):ae(t,e))?Jt=n:"undefined"!=typeof console&&console.warn&&console.warn("Locale "+t+" not found. Did you forget to load it?")),Jt._abbr}function ae(t,e){if(null!==e){var n,r=Qt;if(e.abbr=t,null!=te[t])O("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),r=te[t]._config;else if(null!=e.parentLocale)if(null!=te[e.parentLocale])r=te[e.parentLocale]._config;else{if(null==(n=re(e.parentLocale)))return ee[e.parentLocale]||(ee[e.parentLocale]=[]),ee[e.parentLocale].push({name:t,config:e}),null;r=n._config}return te[t]=new A(P(r,e)),ee[t]&&ee[t].forEach((function(t){ae(t.name,t.config)})),ie(t),te[t]}return delete te[t],null}function oe(t){var e;if(t&&t._locale&&t._locale._abbr&&(t=t._locale._abbr),!t)return Jt;if(!i(t)){if(e=re(t))return e;t=[t]}return function(t){for(var e,n,r,i,a=0;a<t.length;){for(e=(i=ne(t[a]).split("-")).length,n=(n=ne(t[a+1]))?n.split("-"):null;e>0;){if(r=re(i.slice(0,e).join("-")))return r;if(n&&n.length>=e&&k(i,n,!0)>=e-1)break;e--}a++}return Jt}(t)}function se(t){var e,n=t._a;return n&&-2===f(t).overflow&&(e=n[1]<0||n[1]>11?1:n[2]<1||n[2]>kt(n[0],n[1])?2:n[3]<0||n[3]>24||24===n[3]&&(0!==n[4]||0!==n[5]||0!==n[6])?3:n[4]<0||n[4]>59?4:n[5]<0||n[5]>59?5:n[6]<0||n[6]>999?6:-1,f(t)._overflowDayOfYear&&(e<0||e>2)&&(e=2),f(t)._overflowWeeks&&-1===e&&(e=7),f(t)._overflowWeekday&&-1===e&&(e=8),f(t).overflow=e),t}function le(t,e,n){return null!=t?t:null!=e?e:n}function ue(t){var e,n,i,a,o,s=[];if(!t._d){for(i=function(t){var e=new Date(r.now());return t._useUTC?[e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()]:[e.getFullYear(),e.getMonth(),e.getDate()]}(t),t._w&&null==t._a[2]&&null==t._a[1]&&function(t){var e,n,r,i,a,o,s,l;if(null!=(e=t._w).GG||null!=e.W||null!=e.E)a=1,o=4,n=le(e.GG,t._a[0],Et(Me(),1,4).year),r=le(e.W,1),((i=le(e.E,1))<1||i>7)&&(l=!0);else{a=t._locale._week.dow,o=t._locale._week.doy;var u=Et(Me(),a,o);n=le(e.gg,t._a[0],u.year),r=le(e.w,u.week),null!=e.d?((i=e.d)<0||i>6)&&(l=!0):null!=e.e?(i=e.e+a,(e.e<0||e.e>6)&&(l=!0)):i=a}r<1||r>jt(n,a,o)?f(t)._overflowWeeks=!0:null!=l?f(t)._overflowWeekday=!0:(s=Nt(n,r,i,a,o),t._a[0]=s.year,t._dayOfYear=s.dayOfYear)}(t),null!=t._dayOfYear&&(o=le(t._a[0],i[0]),(t._dayOfYear>mt(o)||0===t._dayOfYear)&&(f(t)._overflowDayOfYear=!0),n=Lt(o,0,t._dayOfYear),t._a[1]=n.getUTCMonth(),t._a[2]=n.getUTCDate()),e=0;e<3&&null==t._a[e];++e)t._a[e]=s[e]=i[e];for(;e<7;e++)t._a[e]=s[e]=null==t._a[e]?2===e?1:0:t._a[e];24===t._a[3]&&0===t._a[4]&&0===t._a[5]&&0===t._a[6]&&(t._nextDay=!0,t._a[3]=0),t._d=(t._useUTC?Lt:Ft).apply(null,s),a=t._useUTC?t._d.getUTCDay():t._d.getDay(),null!=t._tzm&&t._d.setUTCMinutes(t._d.getUTCMinutes()-t._tzm),t._nextDay&&(t._a[3]=24),t._w&&void 0!==t._w.d&&t._w.d!==a&&(f(t).weekdayMismatch=!0)}}var ce=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,he=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,de=/Z|[+-]\d\d(?::?\d\d)?/,fe=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/]],pe=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],ge=/^\/?Date\((\-?\d+)/i;function me(t){var e,n,r,i,a,o,s=t._i,l=ce.exec(s)||he.exec(s);if(l){for(f(t).iso=!0,e=0,n=fe.length;e<n;e++)if(fe[e][1].exec(l[1])){i=fe[e][0],r=!1!==fe[e][2];break}if(null==i)return void(t._isValid=!1);if(l[3]){for(e=0,n=pe.length;e<n;e++)if(pe[e][1].exec(l[3])){a=(l[2]||" ")+pe[e][0];break}if(null==a)return void(t._isValid=!1)}if(!r&&null!=a)return void(t._isValid=!1);if(l[4]){if(!de.exec(l[4]))return void(t._isValid=!1);o="Z"}t._f=i+(a||"")+(o||""),_e(t)}else t._isValid=!1}var ve=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/;function ye(t){var e=parseInt(t,10);return e<=49?2e3+e:e<=999?1900+e:e}var be={UT:0,GMT:0,EDT:-240,EST:-300,CDT:-300,CST:-360,MDT:-360,MST:-420,PDT:-420,PST:-480};function xe(t){var e,n,r,i,a,o,s,l=ve.exec(t._i.replace(/\([^)]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").replace(/^\s\s*/,"").replace(/\s\s*$/,""));if(l){var u=(e=l[4],n=l[3],r=l[2],i=l[5],a=l[6],o=l[7],s=[ye(e),Dt.indexOf(n),parseInt(r,10),parseInt(i,10),parseInt(a,10)],o&&s.push(parseInt(o,10)),s);if(!function(t,e,n){return!t||Yt.indexOf(t)===new Date(e[0],e[1],e[2]).getDay()||(f(n).weekdayMismatch=!0,n._isValid=!1,!1)}(l[1],u,t))return;t._a=u,t._tzm=function(t,e,n){if(t)return be[t];if(e)return 0;var r=parseInt(n,10),i=r%100;return(r-i)/100*60+i}(l[8],l[9],l[10]),t._d=Lt.apply(null,t._a),t._d.setUTCMinutes(t._d.getUTCMinutes()-t._tzm),f(t).rfc2822=!0}else t._isValid=!1}function _e(t){if(t._f!==r.ISO_8601)if(t._f!==r.RFC_2822){t._a=[],f(t).empty=!0;var e,n,i,a,o,s=""+t._i,l=s.length,u=0;for(i=U(t._f,t._locale).match(z)||[],e=0;e<i.length;e++)a=i[e],(n=(s.match(ct(a,t))||[])[0])&&((o=s.substr(0,s.indexOf(n))).length>0&&f(t).unusedInput.push(o),s=s.slice(s.indexOf(n)+n.length),u+=n.length),V[a]?(n?f(t).empty=!1:f(t).unusedTokens.push(a),gt(a,n,t)):t._strict&&!n&&f(t).unusedTokens.push(a);f(t).charsLeftOver=l-u,s.length>0&&f(t).unusedInput.push(s),t._a[3]<=12&&!0===f(t).bigHour&&t._a[3]>0&&(f(t).bigHour=void 0),f(t).parsedDateParts=t._a.slice(0),f(t).meridiem=t._meridiem,t._a[3]=function(t,e,n){var r;return null==n?e:null!=t.meridiemHour?t.meridiemHour(e,n):null!=t.isPM?((r=t.isPM(n))&&e<12&&(e+=12),r||12!==e||(e=0),e):e}(t._locale,t._a[3],t._meridiem),ue(t),se(t)}else xe(t);else me(t)}function we(t){var e=t._i,n=t._f;return t._locale=t._locale||oe(t._l),null===e||void 0===n&&""===e?g({nullInput:!0}):("string"==typeof e&&(t._i=e=t._locale.preparse(e)),x(e)?new b(se(e)):(l(e)?t._d=e:i(n)?function(t){var e,n,r,i,a;if(0===t._f.length)return f(t).invalidFormat=!0,void(t._d=new Date(NaN));for(i=0;i<t._f.length;i++)a=0,e=v({},t),null!=t._useUTC&&(e._useUTC=t._useUTC),e._f=t._f[i],_e(e),p(e)&&(a+=f(e).charsLeftOver,a+=10*f(e).unusedTokens.length,f(e).score=a,(null==r||a<r)&&(r=a,n=e));h(t,n||e)}(t):n?_e(t):function(t){var e=t._i;o(e)?t._d=new Date(r.now()):l(e)?t._d=new Date(e.valueOf()):"string"==typeof e?function(t){var e=ge.exec(t._i);null===e?(me(t),!1===t._isValid&&(delete t._isValid,xe(t),!1===t._isValid&&(delete t._isValid,r.createFromInputFallback(t)))):t._d=new Date(+e[1])}(t):i(e)?(t._a=u(e.slice(0),(function(t){return parseInt(t,10)})),ue(t)):a(e)?function(t){if(!t._d){var e=R(t._i);t._a=u([e.year,e.month,e.day||e.date,e.hour,e.minute,e.second,e.millisecond],(function(t){return t&&parseInt(t,10)})),ue(t)}}(t):s(e)?t._d=new Date(e):r.createFromInputFallback(t)}(t),p(t)||(t._d=null),t))}function ke(t,e,n,r,o){var s,l={};return!0!==n&&!1!==n||(r=n,n=void 0),(a(t)&&function(t){if(Object.getOwnPropertyNames)return 0===Object.getOwnPropertyNames(t).length;var e;for(e in t)if(t.hasOwnProperty(e))return!1;return!0}(t)||i(t)&&0===t.length)&&(t=void 0),l._isAMomentObject=!0,l._useUTC=l._isUTC=o,l._l=n,l._i=t,l._f=e,l._strict=r,(s=new b(se(we(l))))._nextDay&&(s.add(1,"d"),s._nextDay=void 0),s}function Me(t,e,n,r){return ke(t,e,n,r,!1)}r.createFromInputFallback=S("value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are discouraged and will be removed in an upcoming major release. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.",(function(t){t._d=new Date(t._i+(t._useUTC?" UTC":""))})),r.ISO_8601=function(){},r.RFC_2822=function(){};var Se=S("moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/",(function(){var t=Me.apply(null,arguments);return this.isValid()&&t.isValid()?t<this?this:t:g()})),De=S("moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/",(function(){var t=Me.apply(null,arguments);return this.isValid()&&t.isValid()?t>this?this:t:g()}));function Ce(t,e){var n,r;if(1===e.length&&i(e[0])&&(e=e[0]),!e.length)return Me();for(n=e[0],r=1;r<e.length;++r)e[r].isValid()&&!e[r][t](n)||(n=e[r]);return n}var Oe=["year","quarter","month","week","day","hour","minute","second","millisecond"];function Te(t){var e=R(t),n=e.year||0,r=e.quarter||0,i=e.month||0,a=e.week||e.isoWeek||0,o=e.day||0,s=e.hour||0,l=e.minute||0,u=e.second||0,c=e.millisecond||0;this._isValid=function(t){for(var e in t)if(-1===yt.call(Oe,e)||null!=t[e]&&isNaN(t[e]))return!1;for(var n=!1,r=0;r<Oe.length;++r)if(t[Oe[r]]){if(n)return!1;parseFloat(t[Oe[r]])!==w(t[Oe[r]])&&(n=!0)}return!0}(e),this._milliseconds=+c+1e3*u+6e4*l+1e3*s*60*60,this._days=+o+7*a,this._months=+i+3*r+12*n,this._data={},this._locale=oe(),this._bubble()}function Pe(t){return t instanceof Te}function Ae(t){return t<0?-1*Math.round(-1*t):Math.round(t)}function Ie(t,e){B(t,0,0,(function(){var t=this.utcOffset(),n="+";return t<0&&(t=-t,n="-"),n+j(~~(t/60),2)+e+j(~~t%60,2)}))}Ie("Z",":"),Ie("ZZ",""),ut("Z",ot),ut("ZZ",ot),ft(["Z","ZZ"],(function(t,e,n){n._useUTC=!0,n._tzm=Le(ot,t)}));var Fe=/([\+\-]|\d\d)/gi;function Le(t,e){var n=(e||"").match(t);if(null===n)return null;var r=((n[n.length-1]||[])+"").match(Fe)||["-",0,0],i=60*r[1]+w(r[2]);return 0===i?0:"+"===r[0]?i:-i}function Re(t,e){var n,i;return e._isUTC?(n=e.clone(),i=(x(t)||l(t)?t.valueOf():Me(t).valueOf())-n.valueOf(),n._d.setTime(n._d.valueOf()+i),r.updateOffset(n,!1),n):Me(t).local()}function Ne(t){return 15*-Math.round(t._d.getTimezoneOffset()/15)}function Ee(){return!!this.isValid()&&this._isUTC&&0===this._offset}r.updateOffset=function(){};var je=/^(\-|\+)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)(\.\d*)?)?$/,ze=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;function We(t,e){var n,r,i,a,o,l,u=t,h=null;return Pe(t)?u={ms:t._milliseconds,d:t._days,M:t._months}:s(t)?(u={},e?u[e]=t:u.milliseconds=t):(h=je.exec(t))?(n="-"===h[1]?-1:1,u={y:0,d:w(h[2])*n,h:w(h[3])*n,m:w(h[4])*n,s:w(h[5])*n,ms:w(Ae(1e3*h[6]))*n}):(h=ze.exec(t))?(n="-"===h[1]?-1:1,u={y:Ye(h[2],n),M:Ye(h[3],n),w:Ye(h[4],n),d:Ye(h[5],n),h:Ye(h[6],n),m:Ye(h[7],n),s:Ye(h[8],n)}):null==u?u={}:"object"==typeof u&&("from"in u||"to"in u)&&(a=Me(u.from),o=Me(u.to),i=a.isValid()&&o.isValid()?(o=Re(o,a),a.isBefore(o)?l=Ve(a,o):((l=Ve(o,a)).milliseconds=-l.milliseconds,l.months=-l.months),l):{milliseconds:0,months:0},(u={}).ms=i.milliseconds,u.M=i.months),r=new Te(u),Pe(t)&&c(t,"_locale")&&(r._locale=t._locale),r}function Ye(t,e){var n=t&&parseFloat(t.replace(",","."));return(isNaN(n)?0:n)*e}function Ve(t,e){var n={};return n.months=e.month()-t.month()+12*(e.year()-t.year()),t.clone().add(n.months,"M").isAfter(e)&&--n.months,n.milliseconds=+e-+t.clone().add(n.months,"M"),n}function Be(t,e){return function(n,r){var i;return null===r||isNaN(+r)||(O(e,"moment()."+e+"(period, number) is deprecated. Please use moment()."+e+"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."),i=n,n=r,r=i),He(this,We(n="string"==typeof n?+n:n,r),t),this}}function He(t,e,n,i){var a=e._milliseconds,o=Ae(e._days),s=Ae(e._months);t.isValid()&&(i=null==i||i,s&&Ot(t,_t(t,"Month")+s*n),o&&wt(t,"Date",_t(t,"Date")+o*n),a&&t._d.setTime(t._d.valueOf()+a*n),i&&r.updateOffset(t,o||s))}We.fn=Te.prototype,We.invalid=function(){return We(NaN)};var Ue=Be(1,"add"),Ge=Be(-1,"subtract");function qe(t,e){var n=12*(e.year()-t.year())+(e.month()-t.month()),r=t.clone().add(n,"months");return-(n+(e-r<0?(e-r)/(r-t.clone().add(n-1,"months")):(e-r)/(t.clone().add(n+1,"months")-r)))||0}function Ke(t){var e;return void 0===t?this._locale._abbr:(null!=(e=oe(t))&&(this._locale=e),this)}r.defaultFormat="YYYY-MM-DDTHH:mm:ssZ",r.defaultFormatUtc="YYYY-MM-DDTHH:mm:ss[Z]";var Ze=S("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",(function(t){return void 0===t?this.localeData():this.locale(t)}));function Xe(){return this._locale}function Je(t,e){return(t%e+e)%e}function $e(t,e,n){return t<100&&t>=0?new Date(t+400,e,n)-126227808e5:new Date(t,e,n).valueOf()}function Qe(t,e,n){return t<100&&t>=0?Date.UTC(t+400,e,n)-126227808e5:Date.UTC(t,e,n)}function tn(t,e){B(0,[t,t.length],0,e)}function en(t,e,n,r,i){var a;return null==t?Et(this,r,i).year:(e>(a=jt(t,r,i))&&(e=a),nn.call(this,t,e,n,r,i))}function nn(t,e,n,r,i){var a=Nt(t,e,n,r,i),o=Lt(a.year,0,a.dayOfYear);return this.year(o.getUTCFullYear()),this.month(o.getUTCMonth()),this.date(o.getUTCDate()),this}B(0,["gg",2],0,(function(){return this.weekYear()%100})),B(0,["GG",2],0,(function(){return this.isoWeekYear()%100})),tn("gggg","weekYear"),tn("ggggg","weekYear"),tn("GGGG","isoWeekYear"),tn("GGGGG","isoWeekYear"),F("weekYear","gg"),F("isoWeekYear","GG"),E("weekYear",1),E("isoWeekYear",1),ut("G",it),ut("g",it),ut("GG",J,q),ut("gg",J,q),ut("GGGG",et,Z),ut("gggg",et,Z),ut("GGGGG",nt,X),ut("ggggg",nt,X),pt(["gggg","ggggg","GGGG","GGGGG"],(function(t,e,n,r){e[r.substr(0,2)]=w(t)})),pt(["gg","GG"],(function(t,e,n,i){e[i]=r.parseTwoDigitYear(t)})),B("Q",0,"Qo","quarter"),F("quarter","Q"),E("quarter",7),ut("Q",G),ft("Q",(function(t,e){e[1]=3*(w(t)-1)})),B("D",["DD",2],"Do","date"),F("date","D"),E("date",9),ut("D",J),ut("DD",J,q),ut("Do",(function(t,e){return t?e._dayOfMonthOrdinalParse||e._ordinalParse:e._dayOfMonthOrdinalParseLenient})),ft(["D","DD"],2),ft("Do",(function(t,e){e[2]=w(t.match(J)[0])}));var rn=xt("Date",!0);B("DDD",["DDDD",3],"DDDo","dayOfYear"),F("dayOfYear","DDD"),E("dayOfYear",4),ut("DDD",tt),ut("DDDD",K),ft(["DDD","DDDD"],(function(t,e,n){n._dayOfYear=w(t)})),B("m",["mm",2],0,"minute"),F("minute","m"),E("minute",14),ut("m",J),ut("mm",J,q),ft(["m","mm"],4);var an=xt("Minutes",!1);B("s",["ss",2],0,"second"),F("second","s"),E("second",15),ut("s",J),ut("ss",J,q),ft(["s","ss"],5);var on,sn=xt("Seconds",!1);for(B("S",0,0,(function(){return~~(this.millisecond()/100)})),B(0,["SS",2],0,(function(){return~~(this.millisecond()/10)})),B(0,["SSS",3],0,"millisecond"),B(0,["SSSS",4],0,(function(){return 10*this.millisecond()})),B(0,["SSSSS",5],0,(function(){return 100*this.millisecond()})),B(0,["SSSSSS",6],0,(function(){return 1e3*this.millisecond()})),B(0,["SSSSSSS",7],0,(function(){return 1e4*this.millisecond()})),B(0,["SSSSSSSS",8],0,(function(){return 1e5*this.millisecond()})),B(0,["SSSSSSSSS",9],0,(function(){return 1e6*this.millisecond()})),F("millisecond","ms"),E("millisecond",16),ut("S",tt,G),ut("SS",tt,q),ut("SSS",tt,K),on="SSSS";on.length<=9;on+="S")ut(on,rt);function ln(t,e){e[6]=w(1e3*("0."+t))}for(on="S";on.length<=9;on+="S")ft(on,ln);var un=xt("Milliseconds",!1);B("z",0,0,"zoneAbbr"),B("zz",0,0,"zoneName");var cn=b.prototype;function hn(t){return t}cn.add=Ue,cn.calendar=function(t,e){var n=t||Me(),i=Re(n,this).startOf("day"),a=r.calendarFormat(this,i)||"sameElse",o=e&&(T(e[a])?e[a].call(this,n):e[a]);return this.format(o||this.localeData().calendar(a,this,Me(n)))},cn.clone=function(){return new b(this)},cn.diff=function(t,e,n){var r,i,a;if(!this.isValid())return NaN;if(!(r=Re(t,this)).isValid())return NaN;switch(i=6e4*(r.utcOffset()-this.utcOffset()),e=L(e)){case"year":a=qe(this,r)/12;break;case"month":a=qe(this,r);break;case"quarter":a=qe(this,r)/3;break;case"second":a=(this-r)/1e3;break;case"minute":a=(this-r)/6e4;break;case"hour":a=(this-r)/36e5;break;case"day":a=(this-r-i)/864e5;break;case"week":a=(this-r-i)/6048e5;break;default:a=this-r}return n?a:_(a)},cn.endOf=function(t){var e;if(void 0===(t=L(t))||"millisecond"===t||!this.isValid())return this;var n=this._isUTC?Qe:$e;switch(t){case"year":e=n(this.year()+1,0,1)-1;break;case"quarter":e=n(this.year(),this.month()-this.month()%3+3,1)-1;break;case"month":e=n(this.year(),this.month()+1,1)-1;break;case"week":e=n(this.year(),this.month(),this.date()-this.weekday()+7)-1;break;case"isoWeek":e=n(this.year(),this.month(),this.date()-(this.isoWeekday()-1)+7)-1;break;case"day":case"date":e=n(this.year(),this.month(),this.date()+1)-1;break;case"hour":e=this._d.valueOf(),e+=36e5-Je(e+(this._isUTC?0:6e4*this.utcOffset()),36e5)-1;break;case"minute":e=this._d.valueOf(),e+=6e4-Je(e,6e4)-1;break;case"second":e=this._d.valueOf(),e+=1e3-Je(e,1e3)-1}return this._d.setTime(e),r.updateOffset(this,!0),this},cn.format=function(t){t||(t=this.isUtc()?r.defaultFormatUtc:r.defaultFormat);var e=H(this,t);return this.localeData().postformat(e)},cn.from=function(t,e){return this.isValid()&&(x(t)&&t.isValid()||Me(t).isValid())?We({to:this,from:t}).locale(this.locale()).humanize(!e):this.localeData().invalidDate()},cn.fromNow=function(t){return this.from(Me(),t)},cn.to=function(t,e){return this.isValid()&&(x(t)&&t.isValid()||Me(t).isValid())?We({from:this,to:t}).locale(this.locale()).humanize(!e):this.localeData().invalidDate()},cn.toNow=function(t){return this.to(Me(),t)},cn.get=function(t){return T(this[t=L(t)])?this[t]():this},cn.invalidAt=function(){return f(this).overflow},cn.isAfter=function(t,e){var n=x(t)?t:Me(t);return!(!this.isValid()||!n.isValid())&&("millisecond"===(e=L(e)||"millisecond")?this.valueOf()>n.valueOf():n.valueOf()<this.clone().startOf(e).valueOf())},cn.isBefore=function(t,e){var n=x(t)?t:Me(t);return!(!this.isValid()||!n.isValid())&&("millisecond"===(e=L(e)||"millisecond")?this.valueOf()<n.valueOf():this.clone().endOf(e).valueOf()<n.valueOf())},cn.isBetween=function(t,e,n,r){var i=x(t)?t:Me(t),a=x(e)?e:Me(e);return!!(this.isValid()&&i.isValid()&&a.isValid())&&("("===(r=r||"()")[0]?this.isAfter(i,n):!this.isBefore(i,n))&&(")"===r[1]?this.isBefore(a,n):!this.isAfter(a,n))},cn.isSame=function(t,e){var n,r=x(t)?t:Me(t);return!(!this.isValid()||!r.isValid())&&("millisecond"===(e=L(e)||"millisecond")?this.valueOf()===r.valueOf():(n=r.valueOf(),this.clone().startOf(e).valueOf()<=n&&n<=this.clone().endOf(e).valueOf()))},cn.isSameOrAfter=function(t,e){return this.isSame(t,e)||this.isAfter(t,e)},cn.isSameOrBefore=function(t,e){return this.isSame(t,e)||this.isBefore(t,e)},cn.isValid=function(){return p(this)},cn.lang=Ze,cn.locale=Ke,cn.localeData=Xe,cn.max=De,cn.min=Se,cn.parsingFlags=function(){return h({},f(this))},cn.set=function(t,e){if("object"==typeof t)for(var n=function(t){var e=[];for(var n in t)e.push({unit:n,priority:N[n]});return e.sort((function(t,e){return t.priority-e.priority})),e}(t=R(t)),r=0;r<n.length;r++)this[n[r].unit](t[n[r].unit]);else if(T(this[t=L(t)]))return this[t](e);return this},cn.startOf=function(t){var e;if(void 0===(t=L(t))||"millisecond"===t||!this.isValid())return this;var n=this._isUTC?Qe:$e;switch(t){case"year":e=n(this.year(),0,1);break;case"quarter":e=n(this.year(),this.month()-this.month()%3,1);break;case"month":e=n(this.year(),this.month(),1);break;case"week":e=n(this.year(),this.month(),this.date()-this.weekday());break;case"isoWeek":e=n(this.year(),this.month(),this.date()-(this.isoWeekday()-1));break;case"day":case"date":e=n(this.year(),this.month(),this.date());break;case"hour":e=this._d.valueOf(),e-=Je(e+(this._isUTC?0:6e4*this.utcOffset()),36e5);break;case"minute":e=this._d.valueOf(),e-=Je(e,6e4);break;case"second":e=this._d.valueOf(),e-=Je(e,1e3)}return this._d.setTime(e),r.updateOffset(this,!0),this},cn.subtract=Ge,cn.toArray=function(){var t=this;return[t.year(),t.month(),t.date(),t.hour(),t.minute(),t.second(),t.millisecond()]},cn.toObject=function(){var t=this;return{years:t.year(),months:t.month(),date:t.date(),hours:t.hours(),minutes:t.minutes(),seconds:t.seconds(),milliseconds:t.milliseconds()}},cn.toDate=function(){return new Date(this.valueOf())},cn.toISOString=function(t){if(!this.isValid())return null;var e=!0!==t,n=e?this.clone().utc():this;return n.year()<0||n.year()>9999?H(n,e?"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ"):T(Date.prototype.toISOString)?e?this.toDate().toISOString():new Date(this.valueOf()+60*this.utcOffset()*1e3).toISOString().replace("Z",H(n,"Z")):H(n,e?"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYY-MM-DD[T]HH:mm:ss.SSSZ")},cn.inspect=function(){if(!this.isValid())return"moment.invalid(/* "+this._i+" */)";var t="moment",e="";this.isLocal()||(t=0===this.utcOffset()?"moment.utc":"moment.parseZone",e="Z");var n="["+t+'("]',r=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY",i=e+'[")]';return this.format(n+r+"-MM-DD[T]HH:mm:ss.SSS"+i)},cn.toJSON=function(){return this.isValid()?this.toISOString():null},cn.toString=function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},cn.unix=function(){return Math.floor(this.valueOf()/1e3)},cn.valueOf=function(){return this._d.valueOf()-6e4*(this._offset||0)},cn.creationData=function(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}},cn.year=bt,cn.isLeapYear=function(){return vt(this.year())},cn.weekYear=function(t){return en.call(this,t,this.week(),this.weekday(),this.localeData()._week.dow,this.localeData()._week.doy)},cn.isoWeekYear=function(t){return en.call(this,t,this.isoWeek(),this.isoWeekday(),1,4)},cn.quarter=cn.quarters=function(t){return null==t?Math.ceil((this.month()+1)/3):this.month(3*(t-1)+this.month()%3)},cn.month=Tt,cn.daysInMonth=function(){return kt(this.year(),this.month())},cn.week=cn.weeks=function(t){var e=this.localeData().week(this);return null==t?e:this.add(7*(t-e),"d")},cn.isoWeek=cn.isoWeeks=function(t){var e=Et(this,1,4).week;return null==t?e:this.add(7*(t-e),"d")},cn.weeksInYear=function(){var t=this.localeData()._week;return jt(this.year(),t.dow,t.doy)},cn.isoWeeksInYear=function(){return jt(this.year(),1,4)},cn.date=rn,cn.day=cn.days=function(t){if(!this.isValid())return null!=t?this:NaN;var e=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=t?(t=function(t,e){return"string"!=typeof t?t:isNaN(t)?"number"==typeof(t=e.weekdaysParse(t))?t:null:parseInt(t,10)}(t,this.localeData()),this.add(t-e,"d")):e},cn.weekday=function(t){if(!this.isValid())return null!=t?this:NaN;var e=(this.day()+7-this.localeData()._week.dow)%7;return null==t?e:this.add(t-e,"d")},cn.isoWeekday=function(t){if(!this.isValid())return null!=t?this:NaN;if(null!=t){var e=function(t,e){return"string"==typeof t?e.weekdaysParse(t)%7||7:isNaN(t)?null:t}(t,this.localeData());return this.day(this.day()%7?e:e-7)}return this.day()||7},cn.dayOfYear=function(t){var e=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==t?e:this.add(t-e,"d")},cn.hour=cn.hours=$t,cn.minute=cn.minutes=an,cn.second=cn.seconds=sn,cn.millisecond=cn.milliseconds=un,cn.utcOffset=function(t,e,n){var i,a=this._offset||0;if(!this.isValid())return null!=t?this:NaN;if(null!=t){if("string"==typeof t){if(null===(t=Le(ot,t)))return this}else Math.abs(t)<16&&!n&&(t*=60);return!this._isUTC&&e&&(i=Ne(this)),this._offset=t,this._isUTC=!0,null!=i&&this.add(i,"m"),a!==t&&(!e||this._changeInProgress?He(this,We(t-a,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,r.updateOffset(this,!0),this._changeInProgress=null)),this}return this._isUTC?a:Ne(this)},cn.utc=function(t){return this.utcOffset(0,t)},cn.local=function(t){return this._isUTC&&(this.utcOffset(0,t),this._isUTC=!1,t&&this.subtract(Ne(this),"m")),this},cn.parseZone=function(){if(null!=this._tzm)this.utcOffset(this._tzm,!1,!0);else if("string"==typeof this._i){var t=Le(at,this._i);null!=t?this.utcOffset(t):this.utcOffset(0,!0)}return this},cn.hasAlignedHourOffset=function(t){return!!this.isValid()&&(t=t?Me(t).utcOffset():0,(this.utcOffset()-t)%60==0)},cn.isDST=function(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},cn.isLocal=function(){return!!this.isValid()&&!this._isUTC},cn.isUtcOffset=function(){return!!this.isValid()&&this._isUTC},cn.isUtc=Ee,cn.isUTC=Ee,cn.zoneAbbr=function(){return this._isUTC?"UTC":""},cn.zoneName=function(){return this._isUTC?"Coordinated Universal Time":""},cn.dates=S("dates accessor is deprecated. Use date instead.",rn),cn.months=S("months accessor is deprecated. Use month instead",Tt),cn.years=S("years accessor is deprecated. Use year instead",bt),cn.zone=S("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",(function(t,e){return null!=t?("string"!=typeof t&&(t=-t),this.utcOffset(t,e),this):-this.utcOffset()})),cn.isDSTShifted=S("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",(function(){if(!o(this._isDSTShifted))return this._isDSTShifted;var t={};if(v(t,this),(t=we(t))._a){var e=t._isUTC?d(t._a):Me(t._a);this._isDSTShifted=this.isValid()&&k(t._a,e.toArray())>0}else this._isDSTShifted=!1;return this._isDSTShifted}));var dn=A.prototype;function fn(t,e,n,r){var i=oe(),a=d().set(r,e);return i[n](a,t)}function pn(t,e,n){if(s(t)&&(e=t,t=void 0),t=t||"",null!=e)return fn(t,e,n,"month");var r,i=[];for(r=0;r<12;r++)i[r]=fn(t,r,n,"month");return i}function gn(t,e,n,r){"boolean"==typeof t?(s(e)&&(n=e,e=void 0),e=e||""):(n=e=t,t=!1,s(e)&&(n=e,e=void 0),e=e||"");var i,a=oe(),o=t?a._week.dow:0;if(null!=n)return fn(e,(n+o)%7,r,"day");var l=[];for(i=0;i<7;i++)l[i]=fn(e,(i+o)%7,r,"day");return l}dn.calendar=function(t,e,n){var r=this._calendar[t]||this._calendar.sameElse;return T(r)?r.call(e,n):r},dn.longDateFormat=function(t){var e=this._longDateFormat[t],n=this._longDateFormat[t.toUpperCase()];return e||!n?e:(this._longDateFormat[t]=n.replace(/MMMM|MM|DD|dddd/g,(function(t){return t.slice(1)})),this._longDateFormat[t])},dn.invalidDate=function(){return this._invalidDate},dn.ordinal=function(t){return this._ordinal.replace("%d",t)},dn.preparse=hn,dn.postformat=hn,dn.relativeTime=function(t,e,n,r){var i=this._relativeTime[n];return T(i)?i(t,e,n,r):i.replace(/%d/i,t)},dn.pastFuture=function(t,e){var n=this._relativeTime[t>0?"future":"past"];return T(n)?n(e):n.replace(/%s/i,e)},dn.set=function(t){var e,n;for(n in t)T(e=t[n])?this[n]=e:this["_"+n]=e;this._config=t,this._dayOfMonthOrdinalParseLenient=new RegExp((this._dayOfMonthOrdinalParse.source||this._ordinalParse.source)+"|"+/\d{1,2}/.source)},dn.months=function(t,e){return t?i(this._months)?this._months[t.month()]:this._months[(this._months.isFormat||Mt).test(e)?"format":"standalone"][t.month()]:i(this._months)?this._months:this._months.standalone},dn.monthsShort=function(t,e){return t?i(this._monthsShort)?this._monthsShort[t.month()]:this._monthsShort[Mt.test(e)?"format":"standalone"][t.month()]:i(this._monthsShort)?this._monthsShort:this._monthsShort.standalone},dn.monthsParse=function(t,e,n){var r,i,a;if(this._monthsParseExact)return Ct.call(this,t,e,n);for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),r=0;r<12;r++){if(i=d([2e3,r]),n&&!this._longMonthsParse[r]&&(this._longMonthsParse[r]=new RegExp("^"+this.months(i,"").replace(".","")+"$","i"),this._shortMonthsParse[r]=new RegExp("^"+this.monthsShort(i,"").replace(".","")+"$","i")),n||this._monthsParse[r]||(a="^"+this.months(i,"")+"|^"+this.monthsShort(i,""),this._monthsParse[r]=new RegExp(a.replace(".",""),"i")),n&&"MMMM"===e&&this._longMonthsParse[r].test(t))return r;if(n&&"MMM"===e&&this._shortMonthsParse[r].test(t))return r;if(!n&&this._monthsParse[r].test(t))return r}},dn.monthsRegex=function(t){return this._monthsParseExact?(c(this,"_monthsRegex")||It.call(this),t?this._monthsStrictRegex:this._monthsRegex):(c(this,"_monthsRegex")||(this._monthsRegex=At),this._monthsStrictRegex&&t?this._monthsStrictRegex:this._monthsRegex)},dn.monthsShortRegex=function(t){return this._monthsParseExact?(c(this,"_monthsRegex")||It.call(this),t?this._monthsShortStrictRegex:this._monthsShortRegex):(c(this,"_monthsShortRegex")||(this._monthsShortRegex=Pt),this._monthsShortStrictRegex&&t?this._monthsShortStrictRegex:this._monthsShortRegex)},dn.week=function(t){return Et(t,this._week.dow,this._week.doy).week},dn.firstDayOfYear=function(){return this._week.doy},dn.firstDayOfWeek=function(){return this._week.dow},dn.weekdays=function(t,e){var n=i(this._weekdays)?this._weekdays:this._weekdays[t&&!0!==t&&this._weekdays.isFormat.test(e)?"format":"standalone"];return!0===t?zt(n,this._week.dow):t?n[t.day()]:n},dn.weekdaysMin=function(t){return!0===t?zt(this._weekdaysMin,this._week.dow):t?this._weekdaysMin[t.day()]:this._weekdaysMin},dn.weekdaysShort=function(t){return!0===t?zt(this._weekdaysShort,this._week.dow):t?this._weekdaysShort[t.day()]:this._weekdaysShort},dn.weekdaysParse=function(t,e,n){var r,i,a;if(this._weekdaysParseExact)return Bt.call(this,t,e,n);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),r=0;r<7;r++){if(i=d([2e3,1]).day(r),n&&!this._fullWeekdaysParse[r]&&(this._fullWeekdaysParse[r]=new RegExp("^"+this.weekdays(i,"").replace(".","\\.?")+"$","i"),this._shortWeekdaysParse[r]=new RegExp("^"+this.weekdaysShort(i,"").replace(".","\\.?")+"$","i"),this._minWeekdaysParse[r]=new RegExp("^"+this.weekdaysMin(i,"").replace(".","\\.?")+"$","i")),this._weekdaysParse[r]||(a="^"+this.weekdays(i,"")+"|^"+this.weekdaysShort(i,"")+"|^"+this.weekdaysMin(i,""),this._weekdaysParse[r]=new RegExp(a.replace(".",""),"i")),n&&"dddd"===e&&this._fullWeekdaysParse[r].test(t))return r;if(n&&"ddd"===e&&this._shortWeekdaysParse[r].test(t))return r;if(n&&"dd"===e&&this._minWeekdaysParse[r].test(t))return r;if(!n&&this._weekdaysParse[r].test(t))return r}},dn.weekdaysRegex=function(t){return this._weekdaysParseExact?(c(this,"_weekdaysRegex")||qt.call(this),t?this._weekdaysStrictRegex:this._weekdaysRegex):(c(this,"_weekdaysRegex")||(this._weekdaysRegex=Ht),this._weekdaysStrictRegex&&t?this._weekdaysStrictRegex:this._weekdaysRegex)},dn.weekdaysShortRegex=function(t){return this._weekdaysParseExact?(c(this,"_weekdaysRegex")||qt.call(this),t?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(c(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=Ut),this._weekdaysShortStrictRegex&&t?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)},dn.weekdaysMinRegex=function(t){return this._weekdaysParseExact?(c(this,"_weekdaysRegex")||qt.call(this),t?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(c(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=Gt),this._weekdaysMinStrictRegex&&t?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)},dn.isPM=function(t){return"p"===(t+"").toLowerCase().charAt(0)},dn.meridiem=function(t,e,n){return t>11?n?"pm":"PM":n?"am":"AM"},ie("en",{dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(t){var e=t%10;return t+(1===w(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th")}}),r.lang=S("moment.lang is deprecated. Use moment.locale instead.",ie),r.langData=S("moment.langData is deprecated. Use moment.localeData instead.",oe);var mn=Math.abs;function vn(t,e,n,r){var i=We(e,n);return t._milliseconds+=r*i._milliseconds,t._days+=r*i._days,t._months+=r*i._months,t._bubble()}function yn(t){return t<0?Math.floor(t):Math.ceil(t)}function bn(t){return 4800*t/146097}function xn(t){return 146097*t/4800}function _n(t){return function(){return this.as(t)}}var wn=_n("ms"),kn=_n("s"),Mn=_n("m"),Sn=_n("h"),Dn=_n("d"),Cn=_n("w"),On=_n("M"),Tn=_n("Q"),Pn=_n("y");function An(t){return function(){return this.isValid()?this._data[t]:NaN}}var In=An("milliseconds"),Fn=An("seconds"),Ln=An("minutes"),Rn=An("hours"),Nn=An("days"),En=An("months"),jn=An("years"),zn=Math.round,Wn={ss:44,s:45,m:45,h:22,d:26,M:11};function Yn(t,e,n,r,i){return i.relativeTime(e||1,!!n,t,r)}var Vn=Math.abs;function Bn(t){return(t>0)-(t<0)||+t}function Hn(){if(!this.isValid())return this.localeData().invalidDate();var t,e,n=Vn(this._milliseconds)/1e3,r=Vn(this._days),i=Vn(this._months);t=_(n/60),e=_(t/60),n%=60,t%=60;var a=_(i/12),o=i%=12,s=r,l=e,u=t,c=n?n.toFixed(3).replace(/\.?0+$/,""):"",h=this.asSeconds();if(!h)return"P0D";var d=h<0?"-":"",f=Bn(this._months)!==Bn(h)?"-":"",p=Bn(this._days)!==Bn(h)?"-":"",g=Bn(this._milliseconds)!==Bn(h)?"-":"";return d+"P"+(a?f+a+"Y":"")+(o?f+o+"M":"")+(s?p+s+"D":"")+(l||u||c?"T":"")+(l?g+l+"H":"")+(u?g+u+"M":"")+(c?g+c+"S":"")}var Un=Te.prototype;return Un.isValid=function(){return this._isValid},Un.abs=function(){var t=this._data;return this._milliseconds=mn(this._milliseconds),this._days=mn(this._days),this._months=mn(this._months),t.milliseconds=mn(t.milliseconds),t.seconds=mn(t.seconds),t.minutes=mn(t.minutes),t.hours=mn(t.hours),t.months=mn(t.months),t.years=mn(t.years),this},Un.add=function(t,e){return vn(this,t,e,1)},Un.subtract=function(t,e){return vn(this,t,e,-1)},Un.as=function(t){if(!this.isValid())return NaN;var e,n,r=this._milliseconds;if("month"===(t=L(t))||"quarter"===t||"year"===t)switch(e=this._days+r/864e5,n=this._months+bn(e),t){case"month":return n;case"quarter":return n/3;case"year":return n/12}else switch(e=this._days+Math.round(xn(this._months)),t){case"week":return e/7+r/6048e5;case"day":return e+r/864e5;case"hour":return 24*e+r/36e5;case"minute":return 1440*e+r/6e4;case"second":return 86400*e+r/1e3;case"millisecond":return Math.floor(864e5*e)+r;default:throw new Error("Unknown unit "+t)}},Un.asMilliseconds=wn,Un.asSeconds=kn,Un.asMinutes=Mn,Un.asHours=Sn,Un.asDays=Dn,Un.asWeeks=Cn,Un.asMonths=On,Un.asQuarters=Tn,Un.asYears=Pn,Un.valueOf=function(){return this.isValid()?this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*w(this._months/12):NaN},Un._bubble=function(){var t,e,n,r,i,a=this._milliseconds,o=this._days,s=this._months,l=this._data;return a>=0&&o>=0&&s>=0||a<=0&&o<=0&&s<=0||(a+=864e5*yn(xn(s)+o),o=0,s=0),l.milliseconds=a%1e3,t=_(a/1e3),l.seconds=t%60,e=_(t/60),l.minutes=e%60,n=_(e/60),l.hours=n%24,o+=_(n/24),i=_(bn(o)),s+=i,o-=yn(xn(i)),r=_(s/12),s%=12,l.days=o,l.months=s,l.years=r,this},Un.clone=function(){return We(this)},Un.get=function(t){return t=L(t),this.isValid()?this[t+"s"]():NaN},Un.milliseconds=In,Un.seconds=Fn,Un.minutes=Ln,Un.hours=Rn,Un.days=Nn,Un.weeks=function(){return _(this.days()/7)},Un.months=En,Un.years=jn,Un.humanize=function(t){if(!this.isValid())return this.localeData().invalidDate();var e=this.localeData(),n=function(t,e,n){var r=We(t).abs(),i=zn(r.as("s")),a=zn(r.as("m")),o=zn(r.as("h")),s=zn(r.as("d")),l=zn(r.as("M")),u=zn(r.as("y")),c=i<=Wn.ss&&["s",i]||i<Wn.s&&["ss",i]||a<=1&&["m"]||a<Wn.m&&["mm",a]||o<=1&&["h"]||o<Wn.h&&["hh",o]||s<=1&&["d"]||s<Wn.d&&["dd",s]||l<=1&&["M"]||l<Wn.M&&["MM",l]||u<=1&&["y"]||["yy",u];return c[2]=e,c[3]=+t>0,c[4]=n,Yn.apply(null,c)}(this,!t,e);return t&&(n=e.pastFuture(+this,n)),e.postformat(n)},Un.toISOString=Hn,Un.toString=Hn,Un.toJSON=Hn,Un.locale=Ke,Un.localeData=Xe,Un.toIsoString=S("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",Hn),Un.lang=Ze,B("X",0,0,"unix"),B("x",0,0,"valueOf"),ut("x",it),ut("X",/[+-]?\d+(\.\d{1,3})?/),ft("X",(function(t,e,n){n._d=new Date(1e3*parseFloat(t,10))})),ft("x",(function(t,e,n){n._d=new Date(w(t))})),r.version="2.24.0",e=Me,r.fn=cn,r.min=function(){var t=[].slice.call(arguments,0);return Ce("isBefore",t)},r.max=function(){var t=[].slice.call(arguments,0);return Ce("isAfter",t)},r.now=function(){return Date.now?Date.now():+new Date},r.utc=d,r.unix=function(t){return Me(1e3*t)},r.months=function(t,e){return pn(t,e,"months")},r.isDate=l,r.locale=ie,r.invalid=g,r.duration=We,r.isMoment=x,r.weekdays=function(t,e,n){return gn(t,e,n,"weekdays")},r.parseZone=function(){return Me.apply(null,arguments).parseZone()},r.localeData=oe,r.isDuration=Pe,r.monthsShort=function(t,e){return pn(t,e,"monthsShort")},r.weekdaysMin=function(t,e,n){return gn(t,e,n,"weekdaysMin")},r.defineLocale=ae,r.updateLocale=function(t,e){if(null!=e){var n,r,i=Qt;null!=(r=re(t))&&(i=r._config),e=P(i,e),(n=new A(e)).parentLocale=te[t],te[t]=n,ie(t)}else null!=te[t]&&(null!=te[t].parentLocale?te[t]=te[t].parentLocale:null!=te[t]&&delete te[t]);return te[t]},r.locales=function(){return D(te)},r.weekdaysShort=function(t,e,n){return gn(t,e,n,"weekdaysShort")},r.normalizeUnits=L,r.relativeTimeRounding=function(t){return void 0===t?zn:"function"==typeof t&&(zn=t,!0)},r.relativeTimeThreshold=function(t,e){return void 0!==Wn[t]&&(void 0===e?Wn[t]:(Wn[t]=e,"s"===t&&(Wn.ss=e-1),!0))},r.calendarFormat=function(t,e){var n=t.diff(e,"days",!0);return n<-6?"sameElse":n<-1?"lastWeek":n<0?"lastDay":n<1?"sameDay":n<2?"nextDay":n<7?"nextWeek":"sameElse"},r.prototype=cn,r.HTML5_FMT={DATETIME_LOCAL:"YYYY-MM-DDTHH:mm",DATETIME_LOCAL_SECONDS:"YYYY-MM-DDTHH:mm:ss",DATETIME_LOCAL_MS:"YYYY-MM-DDTHH:mm:ss.SSS",DATE:"YYYY-MM-DD",TIME:"HH:mm",TIME_SECONDS:"HH:mm:ss",TIME_MS:"HH:mm:ss.SSS",WEEK:"GGGG-[W]WW",MONTH:"YYYY-MM"},r}()}).call(this,n("YuTi")(t))},xYSL:function(t,e){t.exports=function(t,e){return t.has(e)}},xfY5:function(t,e,n){"use strict";var r=n("dyZX"),i=n("aagx"),a=n("LZWt"),o=n("Xbzi"),s=n("apmT"),l=n("eeVq"),u=n("kJMx").f,c=n("EemH").f,h=n("hswa").f,d=n("qncB").trim,f=r.Number,p=f,g=f.prototype,m="Number"==a(n("Kuth")(g)),v="trim"in String.prototype,y=function(t){var e=s(t,!1);if("string"==typeof e&&e.length>2){var n,r,i,a=(e=v?e.trim():d(e,3)).charCodeAt(0);if(43===a||45===a){if(88===(n=e.charCodeAt(2))||120===n)return NaN}else if(48===a){switch(e.charCodeAt(1)){case 66:case 98:r=2,i=49;break;case 79:case 111:r=8,i=55;break;default:return+e}for(var o,l=e.slice(2),u=0,c=l.length;u<c;u++)if((o=l.charCodeAt(u))<48||o>i)return NaN;return parseInt(l,r)}}return+e};if(!f(" 0o1")||!f("0b1")||f("+0x1")){f=function(t){var e=arguments.length<1?0:t,n=this;return n instanceof f&&(m?l((function(){g.valueOf.call(n)})):"Number"!=a(n))?o(new p(y(e)),n,f):y(e)};for(var b,x=n("nh4g")?u(p):"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger".split(","),_=0;x.length>_;_++)i(p,b=x[_])&&!i(f,b)&&h(f,b,c(p,b));f.prototype=g,g.constructor=f,n("KroJ")(r,"Number",f)}},y1pI:function(t,e,n){var r=n("ljhN");t.exports=function(t,e){for(var n=t.length;n--;)if(r(t[n][0],e))return n;return-1}},yGk4:function(t,e,n){var r=n("Cwc5")(n("Kz5y"),"Set");t.exports=r},zZ0H:function(t,e){t.exports=function(t){return t}},zoYe:function(t,e,n){n("a1Th"),n("h7Nl"),n("Btvt");var r=n("nmnc"),i=n("eUgh"),a=n("Z0cm"),o=n("/9aa"),s=r?r.prototype:void 0,l=s?s.toString:void 0;t.exports=function t(e){if("string"==typeof e)return e;if(a(e))return i(e,t)+"";if(o(e))return l?l.call(e):"";var n=e+"";return"0"==n&&1/e==-1/0?"-0":n}}}]);
-//# sourceMappingURL=component---src-pages-performance-js-31be57d58d932a4860aa.js.map
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[5],{"+6XX":function(t,e,n){var r=n("y1pI");t.exports=function(t){return r(this.__data__,t)>-1}},"+c4W":function(t,e,n){var r=n("711d"),i=n("4/ic"),a=n("9ggG"),o=n("9Nap");t.exports=function(t){return a(t)?r(o(t)):i(t)}},"/9aa":function(t,e,n){var r=n("NykK"),i=n("ExA7");t.exports=function(t){return"symbol"==typeof t||i(t)&&"[object Symbol]"==r(t)}},"03A+":function(t,e,n){var r=n("JTzB"),i=n("ExA7"),a=Object.prototype,o=a.hasOwnProperty,s=a.propertyIsEnumerable,l=r(function(){return arguments}())?r:function(t){return i(t)&&o.call(t,"callee")&&!s.call(t,"callee")};t.exports=l},"0Cz8":function(t,e,n){var r=n("Xi7e"),i=n("ebwN"),a=n("e4Nc");t.exports=function(t,e){var n=this.__data__;if(n instanceof r){var o=n.__data__;if(!i||o.length<199)return o.push([t,e]),this.size=++n.size,this;n=this.__data__=new a(o)}return n.set(t,e),this.size=n.size,this}},"0ycA":function(t,e){t.exports=function(){return[]}},"1hJj":function(t,e,n){var r=n("e4Nc"),i=n("ftKO"),a=n("3A9y");function o(t){var e=-1,n=null==t?0:t.length;for(this.__data__=new r;++e<n;)this.add(t[e])}o.prototype.add=o.prototype.push=i,o.prototype.has=a,t.exports=o},"2gN3":function(t,e,n){var r=n("Kz5y")["__core-js_shared__"];t.exports=r},"3A9y":function(t,e){t.exports=function(t){return this.__data__.has(t)}},"3Fdi":function(t,e,n){n("a1Th"),n("h7Nl"),n("Btvt");var r=Function.prototype.toString;t.exports=function(t){if(null!=t){try{return r.call(t)}catch(e){}try{return t+""}catch(e){}}return""}},"4/ic":function(t,e,n){var r=n("ZWtO");t.exports=function(t){return function(e){return r(e,t)}}},"44Ds":function(t,e,n){var r=n("e4Nc");function i(t,e){if("function"!=typeof t||null!=e&&"function"!=typeof e)throw new TypeError("Expected a function");var n=function n(){var r=arguments,i=e?e.apply(this,r):r[0],a=n.cache;if(a.has(i))return a.get(i);var o=t.apply(this,r);return n.cache=a.set(i,o)||a,o};return n.cache=new(i.Cache||r),n}i.Cache=r,t.exports=i},"4kuk":function(t,e,n){var r=n("SfRM"),i=n("Hvzi"),a=n("u8Dt"),o=n("ekgI"),s=n("JSQU");function l(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var r=t[e];this.set(r[0],r[1])}}l.prototype.clear=r,l.prototype.delete=i,l.prototype.get=a,l.prototype.has=o,l.prototype.set=s,t.exports=l},"4sDh":function(t,e,n){var r=n("4uTw"),i=n("03A+"),a=n("Z0cm"),o=n("wJg7"),s=n("shjB"),l=n("9Nap");t.exports=function(t,e,n){for(var u=-1,c=(e=r(e,t)).length,h=!1;++u<c;){var d=l(e[u]);if(!(h=null!=t&&n(t,d)))break;t=t[d]}return h||++u!=c?h:!!(c=null==t?0:t.length)&&s(c)&&o(d,c)&&(a(t)||i(t))}},"4uTw":function(t,e,n){var r=n("Z0cm"),i=n("9ggG"),a=n("GNiM"),o=n("dt0z");t.exports=function(t,e){return r(t)?t:i(t,e)?[t]:a(o(t))}},"6sVZ":function(t,e){var n=Object.prototype;t.exports=function(t){var e=t&&t.constructor;return t===("function"==typeof e&&e.prototype||n)}},"711d":function(t,e){t.exports=function(t){return function(e){return null==e?void 0:e[t]}}},"77Zs":function(t,e,n){var r=n("Xi7e");t.exports=function(){this.__data__=new r,this.size=0}},"7GkX":function(t,e,n){var r=n("b80T"),i=n("A90E"),a=n("MMmD");t.exports=function(t){return a(t)?r(t):i(t)}},"7fqy":function(t,e,n){n("8+KV"),t.exports=function(t){var e=-1,n=Array(t.size);return t.forEach((function(t,r){n[++e]=[r,t]})),n}},"8oxB":function(t,e){var n,r,i=t.exports={};function a(){throw new Error("setTimeout has not been defined")}function o(){throw new Error("clearTimeout has not been defined")}function s(t){if(n===setTimeout)return setTimeout(t,0);if((n===a||!n)&&setTimeout)return n=setTimeout,setTimeout(t,0);try{return n(t,0)}catch(e){try{return n.call(null,t,0)}catch(e){return n.call(this,t,0)}}}!function(){try{n="function"==typeof setTimeout?setTimeout:a}catch(t){n=a}try{r="function"==typeof clearTimeout?clearTimeout:o}catch(t){r=o}}();var l,u=[],c=!1,h=-1;function d(){c&&l&&(c=!1,l.length?u=l.concat(u):h=-1,u.length&&f())}function f(){if(!c){var t=s(d);c=!0;for(var e=u.length;e;){for(l=u,u=[];++h<e;)l&&l[h].run();h=-1,e=u.length}l=null,c=!1,function(t){if(r===clearTimeout)return clearTimeout(t);if((r===o||!r)&&clearTimeout)return r=clearTimeout,clearTimeout(t);try{r(t)}catch(e){try{return r.call(null,t)}catch(e){return r.call(this,t)}}}(t)}}function p(t,e){this.fun=t,this.array=e}function g(){}i.nextTick=function(t){var e=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)e[n-1]=arguments[n];u.push(new p(t,e)),1!==u.length||c||s(f)},p.prototype.run=function(){this.fun.apply(null,this.array)},i.title="browser",i.browser=!0,i.env={},i.argv=[],i.version="",i.versions={},i.on=g,i.addListener=g,i.once=g,i.off=g,i.removeListener=g,i.removeAllListeners=g,i.emit=g,i.prependListener=g,i.prependOnceListener=g,i.listeners=function(t){return[]},i.binding=function(t){throw new Error("process.binding is not supported")},i.cwd=function(){return"/"},i.chdir=function(t){throw new Error("process.chdir is not supported")},i.umask=function(){return 0}},"9Nap":function(t,e,n){var r=n("/9aa");t.exports=function(t){if("string"==typeof t||r(t))return t;var e=t+"";return"0"==e&&1/t==-1/0?"-0":e}},"9ggG":function(t,e,n){var r=n("Z0cm"),i=n("/9aa"),a=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,o=/^\w*$/;t.exports=function(t,e){if(r(t))return!1;var n=typeof t;return!("number"!=n&&"symbol"!=n&&"boolean"!=n&&null!=t&&!i(t))||(o.test(t)||!a.test(t)||null!=e&&t in Object(e))}},A90E:function(t,e,n){var r=n("6sVZ"),i=n("V6Ve"),a=Object.prototype.hasOwnProperty;t.exports=function(t){if(!r(t))return i(t);var e=[];for(var n in Object(t))a.call(t,n)&&"constructor"!=n&&e.push(n);return e}},AP2z:function(t,e,n){n("a1Th"),n("h7Nl"),n("Btvt");var r=n("nmnc"),i=Object.prototype,a=i.hasOwnProperty,o=i.toString,s=r?r.toStringTag:void 0;t.exports=function(t){var e=a.call(t,s),n=t[s];try{t[s]=void 0;var r=!0}catch(l){}var i=o.call(t);return r&&(e?t[s]=n:delete t[s]),i}},AphP:function(t,e,n){"use strict";var r=n("XKFU"),i=n("S/j/"),a=n("apmT");r(r.P+r.F*n("eeVq")((function(){return null!==new Date(NaN).toJSON()||1!==Date.prototype.toJSON.call({toISOString:function(){return 1}})})),"Date",{toJSON:function(t){var e=i(this),n=a(e);return"number"!=typeof n||isFinite(n)?e.toISOString():null}})},B8du:function(t,e){t.exports=function(){return!1}},CH3K:function(t,e){t.exports=function(t,e){for(var n=-1,r=e.length,i=t.length;++n<r;)t[i+n]=e[n];return t}},CMye:function(t,e,n){var r=n("GoyQ");t.exports=function(t){return t==t&&!r(t)}},Cwc5:function(t,e,n){var r=n("NKxu"),i=n("Npjl");t.exports=function(t,e){var n=i(t,e);return r(n)?n:void 0}},CyHz:function(t,e,n){var r=n("XKFU");r(r.S,"Math",{sign:n("lvtm")})},DSRE:function(t,e,n){(function(t){var r=n("Kz5y"),i=n("B8du"),a=e&&!e.nodeType&&e,o=a&&"object"==typeof t&&t&&!t.nodeType&&t,s=o&&o.exports===a?r.Buffer:void 0,l=(s?s.isBuffer:void 0)||i;t.exports=l}).call(this,n("YuTi")(t))},DW2E:function(t,e,n){var r=n("0/R4"),i=n("Z6vF").onFreeze;n("Xtr8")("freeze",(function(t){return function(e){return t&&r(e)?t(i(e)):e}}))},E2jh:function(t,e,n){n("rGqo"),n("yt8O"),n("Btvt");var r,i=n("2gN3"),a=(r=/[^.]+$/.exec(i&&i.keys&&i.keys.IE_PROTO||""))?"Symbol(src)_1."+r:"";t.exports=function(t){return!!a&&a in t}},EpBk:function(t,e){t.exports=function(t){var e=typeof t;return"string"==e||"number"==e||"symbol"==e||"boolean"==e?"__proto__"!==t:null===t}},ExA7:function(t,e){t.exports=function(t){return null!=t&&"object"==typeof t}},FlsD:function(t,e,n){var r=n("0/R4");n("Xtr8")("isExtensible",(function(t){return function(e){return!!r(e)&&(!t||t(e))}}))},GDhZ:function(t,e,n){var r=n("wF/u"),i=n("mwIZ"),a=n("hgQt"),o=n("9ggG"),s=n("CMye"),l=n("IOzZ"),u=n("9Nap");t.exports=function(t,e){return o(t)&&s(e)?l(u(t),e):function(n){var o=i(n,t);return void 0===o&&o===e?a(n,t):r(e,o,3)}}},GNiM:function(t,e,n){n("pIFo");var r=n("I01J"),i=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,a=/\\(\\)?/g,o=r((function(t){var e=[];return 46===t.charCodeAt(0)&&e.push(""),t.replace(i,(function(t,n,r,i){e.push(r?i.replace(a,"$1"):n||t)})),e}));t.exports=o},GoyQ:function(t,e){t.exports=function(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)}},H8j4:function(t,e,n){var r=n("QkVE");t.exports=function(t,e){var n=r(this,t),i=n.size;return n.set(t,e),this.size+=n.size==i?0:1,this}},HDyB:function(t,e,n){n("f3/d");var r=n("nmnc"),i=n("JHRd"),a=n("ljhN"),o=n("or5M"),s=n("7fqy"),l=n("rEGp"),u=r?r.prototype:void 0,c=u?u.valueOf:void 0;t.exports=function(t,e,n,r,u,h,d){switch(n){case"[object DataView]":if(t.byteLength!=e.byteLength||t.byteOffset!=e.byteOffset)return!1;t=t.buffer,e=e.buffer;case"[object ArrayBuffer]":return!(t.byteLength!=e.byteLength||!h(new i(t),new i(e)));case"[object Boolean]":case"[object Date]":case"[object Number]":return a(+t,+e);case"[object Error]":return t.name==e.name&&t.message==e.message;case"[object RegExp]":case"[object String]":return t==e+"";case"[object Map]":var f=s;case"[object Set]":var p=1&r;if(f||(f=l),t.size!=e.size&&!p)return!1;var g=d.get(t);if(g)return g==e;r|=2,d.set(t,e);var m=o(f(t),f(e),r,u,h,d);return d.delete(t),m;case"[object Symbol]":if(c)return c.call(t)==c.call(e)}return!1}},HOxn:function(t,e,n){var r=n("Cwc5")(n("Kz5y"),"Promise");t.exports=r},Hvzi:function(t,e){t.exports=function(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e}},I01J:function(t,e,n){var r=n("44Ds");t.exports=function(t){var e=r(t,(function(t){return 500===n.size&&n.clear(),t})),n=e.cache;return e}},INYr:function(t,e,n){"use strict";var r=n("XKFU"),i=n("CkkT")(6),a="findIndex",o=!0;a in[]&&Array(1)[a]((function(){o=!1})),r(r.P+r.F*o,"Array",{findIndex:function(t){return i(this,t,arguments.length>1?arguments[1]:void 0)}}),n("nGyu")(a)},IOzZ:function(t,e){t.exports=function(t,e){return function(n){return null!=n&&(n[t]===e&&(void 0!==e||t in Object(n)))}}},JC6p:function(t,e,n){var r=n("cq/+"),i=n("7GkX");t.exports=function(t,e){return t&&r(t,e,i)}},JD84:function(t,e,n){var r=n("SKAX");t.exports=function(t,e,n,i){return r(t,(function(t,r,a){e(i,t,n(t),a)})),i}},JHRd:function(t,e,n){var r=n("Kz5y").Uint8Array;t.exports=r},JHgL:function(t,e,n){var r=n("QkVE");t.exports=function(t){return r(this,t).get(t)}},JSQU:function(t,e,n){var r=n("YESw");t.exports=function(t,e){var n=this.__data__;return this.size+=this.has(t)?0:1,n[t]=r&&void 0===e?"__lodash_hash_undefined__":e,this}},JTzB:function(t,e,n){var r=n("NykK"),i=n("ExA7");t.exports=function(t){return i(t)&&"[object Arguments]"==r(t)}},Juji:function(t,e){t.exports=function(t,e){return null!=t&&e in Object(t)}},KMkd:function(t,e){t.exports=function(){this.__data__=[],this.size=0}},KfNM:function(t,e,n){n("a1Th"),n("h7Nl"),n("Btvt");var r=Object.prototype.toString;t.exports=function(t){return r.call(t)}},Kz5y:function(t,e,n){var r=n("WFqU"),i="object"==typeof self&&self&&self.Object===Object&&self,a=r||i||Function("return this")();t.exports=a},L8xA:function(t,e){t.exports=function(t){var e=this.__data__,n=e.delete(t);return this.size=e.size,n}},LXxW:function(t,e){t.exports=function(t,e){for(var n=-1,r=null==t?0:t.length,i=0,a=[];++n<r;){var o=t[n];e(o,n,t)&&(a[i++]=o)}return a}},Ljet:function(t,e,n){var r=n("XKFU");r(r.S,"Number",{EPSILON:Math.pow(2,-52)})},MMmD:function(t,e,n){var r=n("lSCD"),i=n("shjB");t.exports=function(t){return null!=t&&i(t.length)&&!r(t)}},"MO+k":function(t,e,n){n("h/M4"),n("knhD"),n("Ljet"),n("CyHz"),n("DNiP"),n("2Spj"),n("0l/t"),n("DW2E"),n("FlsD"),n("INYr"),n("eM6i"),n("eHKK"),n("Vd3H"),n("bHtr"),n("V+eJ"),n("91GP"),n("xfY5"),n("LK8F"),n("8+KV"),n("rGqo"),n("yt8O"),n("RW0V"),n("KKXr"),n("bWfx"),n("SRfc"),n("a1Th"),n("h7Nl"),n("Btvt"),n("HAE/"),t.exports=function(t){"use strict";t=t&&t.hasOwnProperty("default")?t.default:t;var e={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]},n=function(t,e){return t(e={exports:{}},e.exports),e.exports}((function(t){var n={};for(var r in e)e.hasOwnProperty(r)&&(n[e[r]]=r);var i=t.exports={rgb:{channels:3,labels:"rgb"},hsl:{channels:3,labels:"hsl"},hsv:{channels:3,labels:"hsv"},hwb:{channels:3,labels:"hwb"},cmyk:{channels:4,labels:"cmyk"},xyz:{channels:3,labels:"xyz"},lab:{channels:3,labels:"lab"},lch:{channels:3,labels:"lch"},hex:{channels:1,labels:["hex"]},keyword:{channels:1,labels:["keyword"]},ansi16:{channels:1,labels:["ansi16"]},ansi256:{channels:1,labels:["ansi256"]},hcg:{channels:3,labels:["h","c","g"]},apple:{channels:3,labels:["r16","g16","b16"]},gray:{channels:1,labels:["gray"]}};for(var a in i)if(i.hasOwnProperty(a)){if(!("channels"in i[a]))throw new Error("missing channels property: "+a);if(!("labels"in i[a]))throw new Error("missing channel labels property: "+a);if(i[a].labels.length!==i[a].channels)throw new Error("channel and label counts mismatch: "+a);var o=i[a].channels,s=i[a].labels;delete i[a].channels,delete i[a].labels,Object.defineProperty(i[a],"channels",{value:o}),Object.defineProperty(i[a],"labels",{value:s})}i.rgb.hsl=function(t){var e,n,r=t[0]/255,i=t[1]/255,a=t[2]/255,o=Math.min(r,i,a),s=Math.max(r,i,a),l=s-o;return s===o?e=0:r===s?e=(i-a)/l:i===s?e=2+(a-r)/l:a===s&&(e=4+(r-i)/l),(e=Math.min(60*e,360))<0&&(e+=360),n=(o+s)/2,[e,100*(s===o?0:n<=.5?l/(s+o):l/(2-s-o)),100*n]},i.rgb.hsv=function(t){var e,n,r,i,a,o=t[0]/255,s=t[1]/255,l=t[2]/255,u=Math.max(o,s,l),c=u-Math.min(o,s,l),h=function(t){return(u-t)/6/c+.5};return 0===c?i=a=0:(a=c/u,e=h(o),n=h(s),r=h(l),o===u?i=r-n:s===u?i=1/3+e-r:l===u&&(i=2/3+n-e),i<0?i+=1:i>1&&(i-=1)),[360*i,100*a,100*u]},i.rgb.hwb=function(t){var e=t[0],n=t[1],r=t[2];return[i.rgb.hsl(t)[0],1/255*Math.min(e,Math.min(n,r))*100,100*(r=1-1/255*Math.max(e,Math.max(n,r)))]},i.rgb.cmyk=function(t){var e,n=t[0]/255,r=t[1]/255,i=t[2]/255;return[100*((1-n-(e=Math.min(1-n,1-r,1-i)))/(1-e)||0),100*((1-r-e)/(1-e)||0),100*((1-i-e)/(1-e)||0),100*e]},i.rgb.keyword=function(t){var r=n[t];if(r)return r;var i,a,o,s=1/0;for(var l in e)if(e.hasOwnProperty(l)){var u=e[l],c=(a=t,o=u,Math.pow(a[0]-o[0],2)+Math.pow(a[1]-o[1],2)+Math.pow(a[2]-o[2],2));c<s&&(s=c,i=l)}return i},i.keyword.rgb=function(t){return e[t]},i.rgb.xyz=function(t){var e=t[0]/255,n=t[1]/255,r=t[2]/255;return[100*(.4124*(e=e>.04045?Math.pow((e+.055)/1.055,2.4):e/12.92)+.3576*(n=n>.04045?Math.pow((n+.055)/1.055,2.4):n/12.92)+.1805*(r=r>.04045?Math.pow((r+.055)/1.055,2.4):r/12.92)),100*(.2126*e+.7152*n+.0722*r),100*(.0193*e+.1192*n+.9505*r)]},i.rgb.lab=function(t){var e=i.rgb.xyz(t),n=e[0],r=e[1],a=e[2];return r/=100,a/=108.883,n=(n/=95.047)>.008856?Math.pow(n,1/3):7.787*n+16/116,[116*(r=r>.008856?Math.pow(r,1/3):7.787*r+16/116)-16,500*(n-r),200*(r-(a=a>.008856?Math.pow(a,1/3):7.787*a+16/116))]},i.hsl.rgb=function(t){var e,n,r,i,a,o=t[0]/360,s=t[1]/100,l=t[2]/100;if(0===s)return[a=255*l,a,a];e=2*l-(n=l<.5?l*(1+s):l+s-l*s),i=[0,0,0];for(var u=0;u<3;u++)(r=o+1/3*-(u-1))<0&&r++,r>1&&r--,a=6*r<1?e+6*(n-e)*r:2*r<1?n:3*r<2?e+(n-e)*(2/3-r)*6:e,i[u]=255*a;return i},i.hsl.hsv=function(t){var e=t[0],n=t[1]/100,r=t[2]/100,i=n,a=Math.max(r,.01);return n*=(r*=2)<=1?r:2-r,i*=a<=1?a:2-a,[e,100*(0===r?2*i/(a+i):2*n/(r+n)),(r+n)/2*100]},i.hsv.rgb=function(t){var e=t[0]/60,n=t[1]/100,r=t[2]/100,i=Math.floor(e)%6,a=e-Math.floor(e),o=255*r*(1-n),s=255*r*(1-n*a),l=255*r*(1-n*(1-a));switch(r*=255,i){case 0:return[r,l,o];case 1:return[s,r,o];case 2:return[o,r,l];case 3:return[o,s,r];case 4:return[l,o,r];case 5:return[r,o,s]}},i.hsv.hsl=function(t){var e,n,r,i=t[0],a=t[1]/100,o=t[2]/100,s=Math.max(o,.01);return r=(2-a)*o,n=a*s,[i,100*(n=(n/=(e=(2-a)*s)<=1?e:2-e)||0),100*(r/=2)]},i.hwb.rgb=function(t){var e,n,r,i,a,o,s,l=t[0]/360,u=t[1]/100,c=t[2]/100,h=u+c;switch(h>1&&(u/=h,c/=h),r=6*l-(e=Math.floor(6*l)),0!=(1&e)&&(r=1-r),i=u+r*((n=1-c)-u),e){default:case 6:case 0:a=n,o=i,s=u;break;case 1:a=i,o=n,s=u;break;case 2:a=u,o=n,s=i;break;case 3:a=u,o=i,s=n;break;case 4:a=i,o=u,s=n;break;case 5:a=n,o=u,s=i}return[255*a,255*o,255*s]},i.cmyk.rgb=function(t){var e=t[0]/100,n=t[1]/100,r=t[2]/100,i=t[3]/100;return[255*(1-Math.min(1,e*(1-i)+i)),255*(1-Math.min(1,n*(1-i)+i)),255*(1-Math.min(1,r*(1-i)+i))]},i.xyz.rgb=function(t){var e,n,r,i=t[0]/100,a=t[1]/100,o=t[2]/100;return n=-.9689*i+1.8758*a+.0415*o,r=.0557*i+-.204*a+1.057*o,e=(e=3.2406*i+-1.5372*a+-.4986*o)>.0031308?1.055*Math.pow(e,1/2.4)-.055:12.92*e,n=n>.0031308?1.055*Math.pow(n,1/2.4)-.055:12.92*n,r=r>.0031308?1.055*Math.pow(r,1/2.4)-.055:12.92*r,[255*(e=Math.min(Math.max(0,e),1)),255*(n=Math.min(Math.max(0,n),1)),255*(r=Math.min(Math.max(0,r),1))]},i.xyz.lab=function(t){var e=t[0],n=t[1],r=t[2];return n/=100,r/=108.883,e=(e/=95.047)>.008856?Math.pow(e,1/3):7.787*e+16/116,[116*(n=n>.008856?Math.pow(n,1/3):7.787*n+16/116)-16,500*(e-n),200*(n-(r=r>.008856?Math.pow(r,1/3):7.787*r+16/116))]},i.lab.xyz=function(t){var e,n,r,i=t[0];e=t[1]/500+(n=(i+16)/116),r=n-t[2]/200;var a=Math.pow(n,3),o=Math.pow(e,3),s=Math.pow(r,3);return n=a>.008856?a:(n-16/116)/7.787,e=o>.008856?o:(e-16/116)/7.787,r=s>.008856?s:(r-16/116)/7.787,[e*=95.047,n*=100,r*=108.883]},i.lab.lch=function(t){var e,n=t[0],r=t[1],i=t[2];return(e=360*Math.atan2(i,r)/2/Math.PI)<0&&(e+=360),[n,Math.sqrt(r*r+i*i),e]},i.lch.lab=function(t){var e,n=t[0],r=t[1];return e=t[2]/360*2*Math.PI,[n,r*Math.cos(e),r*Math.sin(e)]},i.rgb.ansi16=function(t){var e=t[0],n=t[1],r=t[2],a=1 in arguments?arguments[1]:i.rgb.hsv(t)[2];if(0===(a=Math.round(a/50)))return 30;var o=30+(Math.round(r/255)<<2|Math.round(n/255)<<1|Math.round(e/255));return 2===a&&(o+=60),o},i.hsv.ansi16=function(t){return i.rgb.ansi16(i.hsv.rgb(t),t[2])},i.rgb.ansi256=function(t){var e=t[0],n=t[1],r=t[2];return e===n&&n===r?e<8?16:e>248?231:Math.round((e-8)/247*24)+232:16+36*Math.round(e/255*5)+6*Math.round(n/255*5)+Math.round(r/255*5)},i.ansi16.rgb=function(t){var e=t%10;if(0===e||7===e)return t>50&&(e+=3.5),[e=e/10.5*255,e,e];var n=.5*(1+~~(t>50));return[(1&e)*n*255,(e>>1&1)*n*255,(e>>2&1)*n*255]},i.ansi256.rgb=function(t){if(t>=232){var e=10*(t-232)+8;return[e,e,e]}var n;return t-=16,[Math.floor(t/36)/5*255,Math.floor((n=t%36)/6)/5*255,n%6/5*255]},i.rgb.hex=function(t){var e=(((255&Math.round(t[0]))<<16)+((255&Math.round(t[1]))<<8)+(255&Math.round(t[2]))).toString(16).toUpperCase();return"000000".substring(e.length)+e},i.hex.rgb=function(t){var e=t.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);if(!e)return[0,0,0];var n=e[0];3===e[0].length&&(n=n.split("").map((function(t){return t+t})).join(""));var r=parseInt(n,16);return[r>>16&255,r>>8&255,255&r]},i.rgb.hcg=function(t){var e,n=t[0]/255,r=t[1]/255,i=t[2]/255,a=Math.max(Math.max(n,r),i),o=Math.min(Math.min(n,r),i),s=a-o;return e=s<=0?0:a===n?(r-i)/s%6:a===r?2+(i-n)/s:4+(n-r)/s+4,e/=6,[360*(e%=1),100*s,100*(s<1?o/(1-s):0)]},i.hsl.hcg=function(t){var e=t[1]/100,n=t[2]/100,r=1,i=0;return(r=n<.5?2*e*n:2*e*(1-n))<1&&(i=(n-.5*r)/(1-r)),[t[0],100*r,100*i]},i.hsv.hcg=function(t){var e=t[1]/100,n=t[2]/100,r=e*n,i=0;return r<1&&(i=(n-r)/(1-r)),[t[0],100*r,100*i]},i.hcg.rgb=function(t){var e=t[0]/360,n=t[1]/100,r=t[2]/100;if(0===n)return[255*r,255*r,255*r];var i,a=[0,0,0],o=e%1*6,s=o%1,l=1-s;switch(Math.floor(o)){case 0:a[0]=1,a[1]=s,a[2]=0;break;case 1:a[0]=l,a[1]=1,a[2]=0;break;case 2:a[0]=0,a[1]=1,a[2]=s;break;case 3:a[0]=0,a[1]=l,a[2]=1;break;case 4:a[0]=s,a[1]=0,a[2]=1;break;default:a[0]=1,a[1]=0,a[2]=l}return i=(1-n)*r,[255*(n*a[0]+i),255*(n*a[1]+i),255*(n*a[2]+i)]},i.hcg.hsv=function(t){var e=t[1]/100,n=e+t[2]/100*(1-e),r=0;return n>0&&(r=e/n),[t[0],100*r,100*n]},i.hcg.hsl=function(t){var e=t[1]/100,n=t[2]/100*(1-e)+.5*e,r=0;return n>0&&n<.5?r=e/(2*n):n>=.5&&n<1&&(r=e/(2*(1-n))),[t[0],100*r,100*n]},i.hcg.hwb=function(t){var e=t[1]/100,n=e+t[2]/100*(1-e);return[t[0],100*(n-e),100*(1-n)]},i.hwb.hcg=function(t){var e=t[1]/100,n=1-t[2]/100,r=n-e,i=0;return r<1&&(i=(n-r)/(1-r)),[t[0],100*r,100*i]},i.apple.rgb=function(t){return[t[0]/65535*255,t[1]/65535*255,t[2]/65535*255]},i.rgb.apple=function(t){return[t[0]/255*65535,t[1]/255*65535,t[2]/255*65535]},i.gray.rgb=function(t){return[t[0]/100*255,t[0]/100*255,t[0]/100*255]},i.gray.hsl=i.gray.hsv=function(t){return[0,0,t[0]]},i.gray.hwb=function(t){return[0,100,t[0]]},i.gray.cmyk=function(t){return[0,0,0,t[0]]},i.gray.lab=function(t){return[t[0],0,0]},i.gray.hex=function(t){var e=255&Math.round(t[0]/100*255),n=((e<<16)+(e<<8)+e).toString(16).toUpperCase();return"000000".substring(n.length)+n},i.rgb.gray=function(t){return[(t[0]+t[1]+t[2])/3/255*100]}}));function r(t){var e=function(){for(var t={},e=Object.keys(n),r=e.length,i=0;i<r;i++)t[e[i]]={distance:-1,parent:null};return t}(),r=[t];for(e[t].distance=0;r.length;)for(var i=r.pop(),a=Object.keys(n[i]),o=a.length,s=0;s<o;s++){var l=a[s],u=e[l];-1===u.distance&&(u.distance=e[i].distance+1,u.parent=i,r.unshift(l))}return e}function i(t,e){return function(n){return e(t(n))}}function a(t,e){for(var r=[e[t].parent,t],a=n[e[t].parent][t],o=e[t].parent;e[o].parent;)r.unshift(e[o].parent),a=i(n[e[o].parent][o],a),o=e[o].parent;return a.conversion=r,a}n.rgb,n.hsl,n.hsv,n.hwb,n.cmyk,n.xyz,n.lab,n.lch,n.hex,n.keyword,n.ansi16,n.ansi256,n.hcg,n.apple,n.gray;var o={};Object.keys(n).forEach((function(t){o[t]={},Object.defineProperty(o[t],"channels",{value:n[t].channels}),Object.defineProperty(o[t],"labels",{value:n[t].labels});var e=function(t){for(var e=r(t),n={},i=Object.keys(e),o=i.length,s=0;s<o;s++){var l=i[s];null!==e[l].parent&&(n[l]=a(l,e))}return n}(t);Object.keys(e).forEach((function(n){var r=e[n];o[t][n]=function(t){var e=function(e){if(null==e)return e;arguments.length>1&&(e=Array.prototype.slice.call(arguments));var n=t(e);if("object"==typeof n)for(var r=n.length,i=0;i<r;i++)n[i]=Math.round(n[i]);return n};return"conversion"in t&&(e.conversion=t.conversion),e}(r),o[t][n].raw=function(t){var e=function(e){return null==e?e:(arguments.length>1&&(e=Array.prototype.slice.call(arguments)),t(e))};return"conversion"in t&&(e.conversion=t.conversion),e}(r)}))}));var s=o,l={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]},u={getRgba:c,getHsla:h,getRgb:function(t){var e=c(t);return e&&e.slice(0,3)},getHsl:function(t){var e=h(t);return e&&e.slice(0,3)},getHwb:d,getAlpha:function(t){var e=c(t);return e?e[3]:(e=h(t))?e[3]:(e=d(t))?e[3]:void 0},hexString:function(t,e){return e=void 0!==e&&3===t.length?e:t[3],"#"+v(t[0])+v(t[1])+v(t[2])+(e>=0&&e<1?v(Math.round(255*e)):"")},rgbString:function(t,e){return e<1||t[3]&&t[3]<1?f(t,e):"rgb("+t[0]+", "+t[1]+", "+t[2]+")"},rgbaString:f,percentString:function(t,e){if(e<1||t[3]&&t[3]<1)return p(t,e);var n=Math.round(t[0]/255*100),r=Math.round(t[1]/255*100),i=Math.round(t[2]/255*100);return"rgb("+n+"%, "+r+"%, "+i+"%)"},percentaString:p,hslString:function(t,e){return e<1||t[3]&&t[3]<1?g(t,e):"hsl("+t[0]+", "+t[1]+"%, "+t[2]+"%)"},hslaString:g,hwbString:function(t,e){return void 0===e&&(e=void 0!==t[3]?t[3]:1),"hwb("+t[0]+", "+t[1]+"%, "+t[2]+"%"+(void 0!==e&&1!==e?", "+e:"")+")"},keyword:function(t){return y[t.slice(0,3)]}};function c(t){if(t){var e=[0,0,0],n=1,r=t.match(/^#([a-fA-F0-9]{3,4})$/i),i="";if(r){i=(r=r[1])[3];for(var a=0;a<e.length;a++)e[a]=parseInt(r[a]+r[a],16);i&&(n=Math.round(parseInt(i+i,16)/255*100)/100)}else if(r=t.match(/^#([a-fA-F0-9]{6}([a-fA-F0-9]{2})?)$/i)){for(i=r[2],r=r[1],a=0;a<e.length;a++)e[a]=parseInt(r.slice(2*a,2*a+2),16);i&&(n=Math.round(parseInt(i,16)/255*100)/100)}else if(r=t.match(/^rgba?\(\s*([+-]?\d+)\s*,\s*([+-]?\d+)\s*,\s*([+-]?\d+)\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)$/i)){for(a=0;a<e.length;a++)e[a]=parseInt(r[a+1]);n=parseFloat(r[4])}else if(r=t.match(/^rgba?\(\s*([+-]?[\d\.]+)\%\s*,\s*([+-]?[\d\.]+)\%\s*,\s*([+-]?[\d\.]+)\%\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)$/i)){for(a=0;a<e.length;a++)e[a]=Math.round(2.55*parseFloat(r[a+1]));n=parseFloat(r[4])}else if(r=t.match(/(\w+)/)){if("transparent"==r[1])return[0,0,0,0];if(!(e=l[r[1]]))return}for(a=0;a<e.length;a++)e[a]=m(e[a],0,255);return n=n||0==n?m(n,0,1):1,e[3]=n,e}}function h(t){if(t){var e=t.match(/^hsla?\(\s*([+-]?\d+)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)/);if(e){var n=parseFloat(e[4]);return[m(parseInt(e[1]),0,360),m(parseFloat(e[2]),0,100),m(parseFloat(e[3]),0,100),m(isNaN(n)?1:n,0,1)]}}}function d(t){if(t){var e=t.match(/^hwb\(\s*([+-]?\d+)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)/);if(e){var n=parseFloat(e[4]);return[m(parseInt(e[1]),0,360),m(parseFloat(e[2]),0,100),m(parseFloat(e[3]),0,100),m(isNaN(n)?1:n,0,1)]}}}function f(t,e){return void 0===e&&(e=void 0!==t[3]?t[3]:1),"rgba("+t[0]+", "+t[1]+", "+t[2]+", "+e+")"}function p(t,e){return"rgba("+Math.round(t[0]/255*100)+"%, "+Math.round(t[1]/255*100)+"%, "+Math.round(t[2]/255*100)+"%, "+(e||t[3]||1)+")"}function g(t,e){return void 0===e&&(e=void 0!==t[3]?t[3]:1),"hsla("+t[0]+", "+t[1]+"%, "+t[2]+"%, "+e+")"}function m(t,e,n){return Math.min(Math.max(e,t),n)}function v(t){var e=t.toString(16).toUpperCase();return e.length<2?"0"+e:e}var y={};for(var b in l)y[l[b]]=b;var x=function t(e){return e instanceof t?e:this instanceof t?(this.valid=!1,this.values={rgb:[0,0,0],hsl:[0,0,0],hsv:[0,0,0],hwb:[0,0,0],cmyk:[0,0,0,0],alpha:1},void("string"==typeof e?(n=u.getRgba(e))?this.setValues("rgb",n):(n=u.getHsla(e))?this.setValues("hsl",n):(n=u.getHwb(e))&&this.setValues("hwb",n):"object"==typeof e&&(void 0!==(n=e).r||void 0!==n.red?this.setValues("rgb",n):void 0!==n.l||void 0!==n.lightness?this.setValues("hsl",n):void 0!==n.v||void 0!==n.value?this.setValues("hsv",n):void 0!==n.w||void 0!==n.whiteness?this.setValues("hwb",n):void 0===n.c&&void 0===n.cyan||this.setValues("cmyk",n)))):new t(e);var n};(x.prototype={isValid:function(){return this.valid},rgb:function(){return this.setSpace("rgb",arguments)},hsl:function(){return this.setSpace("hsl",arguments)},hsv:function(){return this.setSpace("hsv",arguments)},hwb:function(){return this.setSpace("hwb",arguments)},cmyk:function(){return this.setSpace("cmyk",arguments)},rgbArray:function(){return this.values.rgb},hslArray:function(){return this.values.hsl},hsvArray:function(){return this.values.hsv},hwbArray:function(){var t=this.values;return 1!==t.alpha?t.hwb.concat([t.alpha]):t.hwb},cmykArray:function(){return this.values.cmyk},rgbaArray:function(){var t=this.values;return t.rgb.concat([t.alpha])},hslaArray:function(){var t=this.values;return t.hsl.concat([t.alpha])},alpha:function(t){return void 0===t?this.values.alpha:(this.setValues("alpha",t),this)},red:function(t){return this.setChannel("rgb",0,t)},green:function(t){return this.setChannel("rgb",1,t)},blue:function(t){return this.setChannel("rgb",2,t)},hue:function(t){return t&&(t=(t%=360)<0?360+t:t),this.setChannel("hsl",0,t)},saturation:function(t){return this.setChannel("hsl",1,t)},lightness:function(t){return this.setChannel("hsl",2,t)},saturationv:function(t){return this.setChannel("hsv",1,t)},whiteness:function(t){return this.setChannel("hwb",1,t)},blackness:function(t){return this.setChannel("hwb",2,t)},value:function(t){return this.setChannel("hsv",2,t)},cyan:function(t){return this.setChannel("cmyk",0,t)},magenta:function(t){return this.setChannel("cmyk",1,t)},yellow:function(t){return this.setChannel("cmyk",2,t)},black:function(t){return this.setChannel("cmyk",3,t)},hexString:function(){return u.hexString(this.values.rgb)},rgbString:function(){return u.rgbString(this.values.rgb,this.values.alpha)},rgbaString:function(){return u.rgbaString(this.values.rgb,this.values.alpha)},percentString:function(){return u.percentString(this.values.rgb,this.values.alpha)},hslString:function(){return u.hslString(this.values.hsl,this.values.alpha)},hslaString:function(){return u.hslaString(this.values.hsl,this.values.alpha)},hwbString:function(){return u.hwbString(this.values.hwb,this.values.alpha)},keyword:function(){return u.keyword(this.values.rgb,this.values.alpha)},rgbNumber:function(){var t=this.values.rgb;return t[0]<<16|t[1]<<8|t[2]},luminosity:function(){for(var t=this.values.rgb,e=[],n=0;n<t.length;n++){var r=t[n]/255;e[n]=r<=.03928?r/12.92:Math.pow((r+.055)/1.055,2.4)}return.2126*e[0]+.7152*e[1]+.0722*e[2]},contrast:function(t){var e=this.luminosity(),n=t.luminosity();return e>n?(e+.05)/(n+.05):(n+.05)/(e+.05)},level:function(t){var e=this.contrast(t);return e>=7.1?"AAA":e>=4.5?"AA":""},dark:function(){var t=this.values.rgb;return(299*t[0]+587*t[1]+114*t[2])/1e3<128},light:function(){return!this.dark()},negate:function(){for(var t=[],e=0;e<3;e++)t[e]=255-this.values.rgb[e];return this.setValues("rgb",t),this},lighten:function(t){var e=this.values.hsl;return e[2]+=e[2]*t,this.setValues("hsl",e),this},darken:function(t){var e=this.values.hsl;return e[2]-=e[2]*t,this.setValues("hsl",e),this},saturate:function(t){var e=this.values.hsl;return e[1]+=e[1]*t,this.setValues("hsl",e),this},desaturate:function(t){var e=this.values.hsl;return e[1]-=e[1]*t,this.setValues("hsl",e),this},whiten:function(t){var e=this.values.hwb;return e[1]+=e[1]*t,this.setValues("hwb",e),this},blacken:function(t){var e=this.values.hwb;return e[2]+=e[2]*t,this.setValues("hwb",e),this},greyscale:function(){var t=this.values.rgb,e=.3*t[0]+.59*t[1]+.11*t[2];return this.setValues("rgb",[e,e,e]),this},clearer:function(t){var e=this.values.alpha;return this.setValues("alpha",e-e*t),this},opaquer:function(t){var e=this.values.alpha;return this.setValues("alpha",e+e*t),this},rotate:function(t){var e=this.values.hsl,n=(e[0]+t)%360;return e[0]=n<0?360+n:n,this.setValues("hsl",e),this},mix:function(t,e){var n=t,r=void 0===e?.5:e,i=2*r-1,a=this.alpha()-n.alpha(),o=((i*a==-1?i:(i+a)/(1+i*a))+1)/2,s=1-o;return this.rgb(o*this.red()+s*n.red(),o*this.green()+s*n.green(),o*this.blue()+s*n.blue()).alpha(this.alpha()*r+n.alpha()*(1-r))},toJSON:function(){return this.rgb()},clone:function(){var t,e,n=new x,r=this.values,i=n.values;for(var a in r)r.hasOwnProperty(a)&&(t=r[a],"[object Array]"===(e={}.toString.call(t))?i[a]=t.slice(0):"[object Number]"===e?i[a]=t:console.error("unexpected color value:",t));return n}}).spaces={rgb:["red","green","blue"],hsl:["hue","saturation","lightness"],hsv:["hue","saturation","value"],hwb:["hue","whiteness","blackness"],cmyk:["cyan","magenta","yellow","black"]},x.prototype.maxes={rgb:[255,255,255],hsl:[360,100,100],hsv:[360,100,100],hwb:[360,100,100],cmyk:[100,100,100,100]},x.prototype.getValues=function(t){for(var e=this.values,n={},r=0;r<t.length;r++)n[t.charAt(r)]=e[t][r];return 1!==e.alpha&&(n.a=e.alpha),n},x.prototype.setValues=function(t,e){var n,r,i=this.values,a=this.spaces,o=this.maxes,l=1;if(this.valid=!0,"alpha"===t)l=e;else if(e.length)i[t]=e.slice(0,t.length),l=e[t.length];else if(void 0!==e[t.charAt(0)]){for(n=0;n<t.length;n++)i[t][n]=e[t.charAt(n)];l=e.a}else if(void 0!==e[a[t][0]]){var u=a[t];for(n=0;n<t.length;n++)i[t][n]=e[u[n]];l=e.alpha}if(i.alpha=Math.max(0,Math.min(1,void 0===l?i.alpha:l)),"alpha"===t)return!1;for(n=0;n<t.length;n++)r=Math.max(0,Math.min(o[t][n],i[t][n])),i[t][n]=Math.round(r);for(var c in a)c!==t&&(i[c]=s[t][c](i[t]));return!0},x.prototype.setSpace=function(t,e){var n=e[0];return void 0===n?this.getValues(t):("number"==typeof n&&(n=Array.prototype.slice.call(e)),this.setValues(t,n),this)},x.prototype.setChannel=function(t,e,n){var r=this.values[t];return void 0===n?r[e]:n===r[e]?this:(r[e]=n,this.setValues(t,r),this)},"undefined"!=typeof window&&(window.Color=x);var _,w=x,k={noop:function(){},uid:(_=0,function(){return _++}),isNullOrUndef:function(t){return null==t},isArray:function(t){if(Array.isArray&&Array.isArray(t))return!0;var e=Object.prototype.toString.call(t);return"[object"===e.substr(0,7)&&"Array]"===e.substr(-6)},isObject:function(t){return null!==t&&"[object Object]"===Object.prototype.toString.call(t)},isFinite:function(t){function e(e){return t.apply(this,arguments)}return e.toString=function(){return t.toString()},e}((function(t){return("number"==typeof t||t instanceof Number)&&isFinite(t)})),valueOrDefault:function(t,e){return void 0===t?e:t},valueAtIndexOrDefault:function(t,e,n){return k.valueOrDefault(k.isArray(t)?t[e]:t,n)},callback:function(t,e,n){if(t&&"function"==typeof t.call)return t.apply(n,e)},each:function(t,e,n,r){var i,a,o;if(k.isArray(t))if(a=t.length,r)for(i=a-1;i>=0;i--)e.call(n,t[i],i);else for(i=0;i<a;i++)e.call(n,t[i],i);else if(k.isObject(t))for(a=(o=Object.keys(t)).length,i=0;i<a;i++)e.call(n,t[o[i]],o[i])},arrayEquals:function(t,e){var n,r,i,a;if(!t||!e||t.length!==e.length)return!1;for(n=0,r=t.length;n<r;++n)if(i=t[n],a=e[n],i instanceof Array&&a instanceof Array){if(!k.arrayEquals(i,a))return!1}else if(i!==a)return!1;return!0},clone:function(t){if(k.isArray(t))return t.map(k.clone);if(k.isObject(t)){for(var e={},n=Object.keys(t),r=n.length,i=0;i<r;++i)e[n[i]]=k.clone(t[n[i]]);return e}return t},_merger:function(t,e,n,r){var i=e[t],a=n[t];k.isObject(i)&&k.isObject(a)?k.merge(i,a,r):e[t]=k.clone(a)},_mergerIf:function(t,e,n){var r=e[t],i=n[t];k.isObject(r)&&k.isObject(i)?k.mergeIf(r,i):e.hasOwnProperty(t)||(e[t]=k.clone(i))},merge:function(t,e,n){var r,i,a,o,s,l=k.isArray(e)?e:[e],u=l.length;if(!k.isObject(t))return t;for(r=(n=n||{}).merger||k._merger,i=0;i<u;++i)if(e=l[i],k.isObject(e))for(s=0,o=(a=Object.keys(e)).length;s<o;++s)r(a[s],t,e,n);return t},mergeIf:function(t,e){return k.merge(t,e,{merger:k._mergerIf})},extend:Object.assign||function(t){return k.merge(t,[].slice.call(arguments,1),{merger:function(t,e,n){e[t]=n[t]}})},inherits:function(t){var e=this,n=t&&t.hasOwnProperty("constructor")?t.constructor:function(){return e.apply(this,arguments)},r=function(){this.constructor=n};return r.prototype=e.prototype,n.prototype=new r,n.extend=k.inherits,t&&k.extend(n.prototype,t),n.__super__=e.prototype,n},_deprecated:function(t,e,n,r){void 0!==e&&console.warn(t+': "'+n+'" is deprecated. Please use "'+r+'" instead')}},M=k;k.callCallback=k.callback,k.indexOf=function(t,e,n){return Array.prototype.indexOf.call(t,e,n)},k.getValueOrDefault=k.valueOrDefault,k.getValueAtIndexOrDefault=k.valueAtIndexOrDefault;var S={linear:function(t){return t},easeInQuad:function(t){return t*t},easeOutQuad:function(t){return-t*(t-2)},easeInOutQuad:function(t){return(t/=.5)<1?.5*t*t:-.5*(--t*(t-2)-1)},easeInCubic:function(t){return t*t*t},easeOutCubic:function(t){return(t-=1)*t*t+1},easeInOutCubic:function(t){return(t/=.5)<1?.5*t*t*t:.5*((t-=2)*t*t+2)},easeInQuart:function(t){return t*t*t*t},easeOutQuart:function(t){return-((t-=1)*t*t*t-1)},easeInOutQuart:function(t){return(t/=.5)<1?.5*t*t*t*t:-.5*((t-=2)*t*t*t-2)},easeInQuint:function(t){return t*t*t*t*t},easeOutQuint:function(t){return(t-=1)*t*t*t*t+1},easeInOutQuint:function(t){return(t/=.5)<1?.5*t*t*t*t*t:.5*((t-=2)*t*t*t*t+2)},easeInSine:function(t){return 1-Math.cos(t*(Math.PI/2))},easeOutSine:function(t){return Math.sin(t*(Math.PI/2))},easeInOutSine:function(t){return-.5*(Math.cos(Math.PI*t)-1)},easeInExpo:function(t){return 0===t?0:Math.pow(2,10*(t-1))},easeOutExpo:function(t){return 1===t?1:1-Math.pow(2,-10*t)},easeInOutExpo:function(t){return 0===t?0:1===t?1:(t/=.5)<1?.5*Math.pow(2,10*(t-1)):.5*(2-Math.pow(2,-10*--t))},easeInCirc:function(t){return t>=1?t:-(Math.sqrt(1-t*t)-1)},easeOutCirc:function(t){return Math.sqrt(1-(t-=1)*t)},easeInOutCirc:function(t){return(t/=.5)<1?-.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1)},easeInElastic:function(t){var e=1.70158,n=0,r=1;return 0===t?0:1===t?1:(n||(n=.3),r<1?(r=1,e=n/4):e=n/(2*Math.PI)*Math.asin(1/r),-r*Math.pow(2,10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/n))},easeOutElastic:function(t){var e=1.70158,n=0,r=1;return 0===t?0:1===t?1:(n||(n=.3),r<1?(r=1,e=n/4):e=n/(2*Math.PI)*Math.asin(1/r),r*Math.pow(2,-10*t)*Math.sin((t-e)*(2*Math.PI)/n)+1)},easeInOutElastic:function(t){var e=1.70158,n=0,r=1;return 0===t?0:2==(t/=.5)?1:(n||(n=.45),r<1?(r=1,e=n/4):e=n/(2*Math.PI)*Math.asin(1/r),t<1?r*Math.pow(2,10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/n)*-.5:r*Math.pow(2,-10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/n)*.5+1)},easeInBack:function(t){var e=1.70158;return t*t*((e+1)*t-e)},easeOutBack:function(t){var e=1.70158;return(t-=1)*t*((e+1)*t+e)+1},easeInOutBack:function(t){var e=1.70158;return(t/=.5)<1?t*t*((1+(e*=1.525))*t-e)*.5:.5*((t-=2)*t*((1+(e*=1.525))*t+e)+2)},easeInBounce:function(t){return 1-S.easeOutBounce(1-t)},easeOutBounce:function(t){return t<1/2.75?7.5625*t*t:t<2/2.75?7.5625*(t-=1.5/2.75)*t+.75:t<2.5/2.75?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375},easeInOutBounce:function(t){return t<.5?.5*S.easeInBounce(2*t):.5*S.easeOutBounce(2*t-1)+.5}},D={effects:S};M.easingEffects=S;var C=Math.PI,O=C/180,T=2*C,P=C/2,A=C/4,I=2*C/3,F={clear:function(t){t.ctx.clearRect(0,0,t.width,t.height)},roundedRect:function(t,e,n,r,i,a){if(a){var o=Math.min(a,i/2,r/2),s=e+o,l=n+o,u=e+r-o,c=n+i-o;t.moveTo(e,l),s<u&&l<c?(t.arc(s,l,o,-C,-P),t.arc(u,l,o,-P,0),t.arc(u,c,o,0,P),t.arc(s,c,o,P,C)):s<u?(t.moveTo(s,n),t.arc(u,l,o,-P,P),t.arc(s,l,o,P,C+P)):l<c?(t.arc(s,l,o,-C,0),t.arc(s,c,o,0,C)):t.arc(s,l,o,-C,C),t.closePath(),t.moveTo(e,n)}else t.rect(e,n,r,i)},drawPoint:function(t,e,n,r,i,a){var o,s,l,u,c,h=(a||0)*O;if(e&&"object"==typeof e&&("[object HTMLImageElement]"===(o=e.toString())||"[object HTMLCanvasElement]"===o))return t.save(),t.translate(r,i),t.rotate(h),t.drawImage(e,-e.width/2,-e.height/2,e.width,e.height),void t.restore();if(!(isNaN(n)||n<=0)){switch(t.beginPath(),e){default:t.arc(r,i,n,0,T),t.closePath();break;case"triangle":t.moveTo(r+Math.sin(h)*n,i-Math.cos(h)*n),h+=I,t.lineTo(r+Math.sin(h)*n,i-Math.cos(h)*n),h+=I,t.lineTo(r+Math.sin(h)*n,i-Math.cos(h)*n),t.closePath();break;case"rectRounded":u=n-(c=.516*n),s=Math.cos(h+A)*u,l=Math.sin(h+A)*u,t.arc(r-s,i-l,c,h-C,h-P),t.arc(r+l,i-s,c,h-P,h),t.arc(r+s,i+l,c,h,h+P),t.arc(r-l,i+s,c,h+P,h+C),t.closePath();break;case"rect":if(!a){u=Math.SQRT1_2*n,t.rect(r-u,i-u,2*u,2*u);break}h+=A;case"rectRot":s=Math.cos(h)*n,l=Math.sin(h)*n,t.moveTo(r-s,i-l),t.lineTo(r+l,i-s),t.lineTo(r+s,i+l),t.lineTo(r-l,i+s),t.closePath();break;case"crossRot":h+=A;case"cross":s=Math.cos(h)*n,l=Math.sin(h)*n,t.moveTo(r-s,i-l),t.lineTo(r+s,i+l),t.moveTo(r+l,i-s),t.lineTo(r-l,i+s);break;case"star":s=Math.cos(h)*n,l=Math.sin(h)*n,t.moveTo(r-s,i-l),t.lineTo(r+s,i+l),t.moveTo(r+l,i-s),t.lineTo(r-l,i+s),h+=A,s=Math.cos(h)*n,l=Math.sin(h)*n,t.moveTo(r-s,i-l),t.lineTo(r+s,i+l),t.moveTo(r+l,i-s),t.lineTo(r-l,i+s);break;case"line":s=Math.cos(h)*n,l=Math.sin(h)*n,t.moveTo(r-s,i-l),t.lineTo(r+s,i+l);break;case"dash":t.moveTo(r,i),t.lineTo(r+Math.cos(h)*n,i+Math.sin(h)*n)}t.fill(),t.stroke()}},_isPointInArea:function(t,e){return t.x>e.left-1e-6&&t.x<e.right+1e-6&&t.y>e.top-1e-6&&t.y<e.bottom+1e-6},clipArea:function(t,e){t.save(),t.beginPath(),t.rect(e.left,e.top,e.right-e.left,e.bottom-e.top),t.clip()},unclipArea:function(t){t.restore()},lineTo:function(t,e,n,r){var i=n.steppedLine;if(i){if("middle"===i){var a=(e.x+n.x)/2;t.lineTo(a,r?n.y:e.y),t.lineTo(a,r?e.y:n.y)}else"after"===i&&!r||"after"!==i&&r?t.lineTo(e.x,n.y):t.lineTo(n.x,e.y);t.lineTo(n.x,n.y)}else n.tension?t.bezierCurveTo(r?e.controlPointPreviousX:e.controlPointNextX,r?e.controlPointPreviousY:e.controlPointNextY,r?n.controlPointNextX:n.controlPointPreviousX,r?n.controlPointNextY:n.controlPointPreviousY,n.x,n.y):t.lineTo(n.x,n.y)}},L=F;M.clear=F.clear,M.drawRoundedRectangle=function(t){t.beginPath(),F.roundedRect.apply(F,arguments)};var R={_set:function(t,e){return M.merge(this[t]||(this[t]={}),e)}};R._set("global",{defaultColor:"rgba(0,0,0,0.1)",defaultFontColor:"#666",defaultFontFamily:"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",defaultFontSize:12,defaultFontStyle:"normal",defaultLineHeight:1.2,showLines:!0});var N=R,E=M.valueOrDefault,j={toLineHeight:function(t,e){var n=(""+t).match(/^(normal|(\d+(?:\.\d+)?)(px|em|%)?)$/);if(!n||"normal"===n[1])return 1.2*e;switch(t=+n[2],n[3]){case"px":return t;case"%":t/=100}return e*t},toPadding:function(t){var e,n,r,i;return M.isObject(t)?(e=+t.top||0,n=+t.right||0,r=+t.bottom||0,i=+t.left||0):e=n=r=i=+t||0,{top:e,right:n,bottom:r,left:i,height:e+r,width:i+n}},_parseFont:function(t){var e=N.global,n=E(t.fontSize,e.defaultFontSize),r={family:E(t.fontFamily,e.defaultFontFamily),lineHeight:M.options.toLineHeight(E(t.lineHeight,e.defaultLineHeight),n),size:n,style:E(t.fontStyle,e.defaultFontStyle),weight:null,string:""};return r.string=function(t){return!t||M.isNullOrUndef(t.size)||M.isNullOrUndef(t.family)?null:(t.style?t.style+" ":"")+(t.weight?t.weight+" ":"")+t.size+"px "+t.family}(r),r},resolve:function(t,e,n,r){var i,a,o,s=!0;for(i=0,a=t.length;i<a;++i)if(void 0!==(o=t[i])&&(void 0!==e&&"function"==typeof o&&(o=o(e),s=!1),void 0!==n&&M.isArray(o)&&(o=o[n],s=!1),void 0!==o))return r&&!s&&(r.cacheable=!1),o}},z={_factorize:function(t){var e,n=[],r=Math.sqrt(t);for(e=1;e<r;e++)t%e==0&&(n.push(e),n.push(t/e));return r===(0|r)&&n.push(r),n.sort((function(t,e){return t-e})).pop(),n},log10:Math.log10||function(t){var e=Math.log(t)*Math.LOG10E,n=Math.round(e);return t===Math.pow(10,n)?n:e}},W=z;M.log10=z.log10;var Y=M,V=D,B=L,H=j,U=W,G={getRtlAdapter:function(t,e,n){return t?function(t,e){return{x:function(n){return t+t+e-n},setWidth:function(t){e=t},textAlign:function(t){return"center"===t?t:"right"===t?"left":"right"},xPlus:function(t,e){return t-e},leftForLtr:function(t,e){return t-e}}}(e,n):{x:function(t){return t},setWidth:function(t){},textAlign:function(t){return t},xPlus:function(t,e){return t+e},leftForLtr:function(t,e){return t}}},overrideTextDirection:function(t,e){var n,r;"ltr"!==e&&"rtl"!==e||(r=[(n=t.canvas.style).getPropertyValue("direction"),n.getPropertyPriority("direction")],n.setProperty("direction",e,"important"),t.prevTextDirection=r)},restoreTextDirection:function(t){var e=t.prevTextDirection;void 0!==e&&(delete t.prevTextDirection,t.canvas.style.setProperty("direction",e[0],e[1]))}};Y.easing=V,Y.canvas=B,Y.options=H,Y.math=U,Y.rtl=G;var q=function(t){Y.extend(this,t),this.initialize.apply(this,arguments)};Y.extend(q.prototype,{_type:void 0,initialize:function(){this.hidden=!1},pivot:function(){var t=this;return t._view||(t._view=Y.extend({},t._model)),t._start={},t},transition:function(t){var e=this,n=e._model,r=e._start,i=e._view;return n&&1!==t?(i||(i=e._view={}),r||(r=e._start={}),function(t,e,n,r){var i,a,o,s,l,u,c,h,d,f=Object.keys(n);for(i=0,a=f.length;i<a;++i)if(u=n[o=f[i]],e.hasOwnProperty(o)||(e[o]=u),(s=e[o])!==u&&"_"!==o[0]){if(t.hasOwnProperty(o)||(t[o]=s),(c=typeof u)==typeof(l=t[o]))if("string"===c){if((h=w(l)).valid&&(d=w(u)).valid){e[o]=d.mix(h,r).rgbString();continue}}else if(Y.isFinite(l)&&Y.isFinite(u)){e[o]=l+(u-l)*r;continue}e[o]=u}}(r,i,n,t),e):(e._view=Y.extend({},n),e._start=null,e)},tooltipPosition:function(){return{x:this._model.x,y:this._model.y}},hasValue:function(){return Y.isNumber(this._model.x)&&Y.isNumber(this._model.y)}}),q.extend=Y.inherits;var K=q,Z=K.extend({chart:null,currentStep:0,numSteps:60,easing:"",render:null,onAnimationProgress:null,onAnimationComplete:null}),X=Z;Object.defineProperty(Z.prototype,"animationObject",{get:function(){return this}}),Object.defineProperty(Z.prototype,"chartInstance",{get:function(){return this.chart},set:function(t){this.chart=t}}),N._set("global",{animation:{duration:1e3,easing:"easeOutQuart",onProgress:Y.noop,onComplete:Y.noop}});var J={animations:[],request:null,addAnimation:function(t,e,n,r){var i,a,o=this.animations;for(e.chart=t,e.startTime=Date.now(),e.duration=n,r||(t.animating=!0),i=0,a=o.length;i<a;++i)if(o[i].chart===t)return void(o[i]=e);o.push(e),1===o.length&&this.requestAnimationFrame()},cancelAnimation:function(t){var e=Y.findIndex(this.animations,(function(e){return e.chart===t}));-1!==e&&(this.animations.splice(e,1),t.animating=!1)},requestAnimationFrame:function(){var t=this;null===t.request&&(t.request=Y.requestAnimFrame.call(window,(function(){t.request=null,t.startDigest()})))},startDigest:function(){this.advance(),this.animations.length>0&&this.requestAnimationFrame()},advance:function(){for(var t,e,n,r,i=this.animations,a=0;a<i.length;)e=(t=i[a]).chart,n=t.numSteps,r=Math.floor((Date.now()-t.startTime)/t.duration*n)+1,t.currentStep=Math.min(r,n),Y.callback(t.render,[e,t],e),Y.callback(t.onAnimationProgress,[t],e),t.currentStep>=n?(Y.callback(t.onAnimationComplete,[t],e),e.animating=!1,i.splice(a,1)):++a}},$=Y.options.resolve,Q=["push","pop","shift","splice","unshift"];function tt(t,e){var n=t._chartjs;if(n){var r=n.listeners,i=r.indexOf(e);-1!==i&&r.splice(i,1),r.length>0||(Q.forEach((function(e){delete t[e]})),delete t._chartjs)}}var et=function(t,e){this.initialize(t,e)};Y.extend(et.prototype,{datasetElementType:null,dataElementType:null,_datasetElementOptions:["backgroundColor","borderCapStyle","borderColor","borderDash","borderDashOffset","borderJoinStyle","borderWidth"],_dataElementOptions:["backgroundColor","borderColor","borderWidth","pointStyle"],initialize:function(t,e){var n=this;n.chart=t,n.index=e,n.linkScales(),n.addElements(),n._type=n.getMeta().type},updateIndex:function(t){this.index=t},linkScales:function(){var t=this.getMeta(),e=this.chart,n=e.scales,r=this.getDataset(),i=e.options.scales;null!==t.xAxisID&&t.xAxisID in n&&!r.xAxisID||(t.xAxisID=r.xAxisID||i.xAxes[0].id),null!==t.yAxisID&&t.yAxisID in n&&!r.yAxisID||(t.yAxisID=r.yAxisID||i.yAxes[0].id)},getDataset:function(){return this.chart.data.datasets[this.index]},getMeta:function(){return this.chart.getDatasetMeta(this.index)},getScaleForId:function(t){return this.chart.scales[t]},_getValueScaleId:function(){return this.getMeta().yAxisID},_getIndexScaleId:function(){return this.getMeta().xAxisID},_getValueScale:function(){return this.getScaleForId(this._getValueScaleId())},_getIndexScale:function(){return this.getScaleForId(this._getIndexScaleId())},reset:function(){this._update(!0)},destroy:function(){this._data&&tt(this._data,this)},createMetaDataset:function(){var t=this.datasetElementType;return t&&new t({_chart:this.chart,_datasetIndex:this.index})},createMetaData:function(t){var e=this.dataElementType;return e&&new e({_chart:this.chart,_datasetIndex:this.index,_index:t})},addElements:function(){var t,e,n=this.getMeta(),r=this.getDataset().data||[],i=n.data;for(t=0,e=r.length;t<e;++t)i[t]=i[t]||this.createMetaData(t);n.dataset=n.dataset||this.createMetaDataset()},addElementAndReset:function(t){var e=this.createMetaData(t);this.getMeta().data.splice(t,0,e),this.updateElement(e,t,!0)},buildOrUpdateElements:function(){var t,e,n=this,r=n.getDataset(),i=r.data||(r.data=[]);n._data!==i&&(n._data&&tt(n._data,n),i&&Object.isExtensible(i)&&(e=n,(t=i)._chartjs?t._chartjs.listeners.push(e):(Object.defineProperty(t,"_chartjs",{configurable:!0,enumerable:!1,value:{listeners:[e]}}),Q.forEach((function(e){var n="onData"+e.charAt(0).toUpperCase()+e.slice(1),r=t[e];Object.defineProperty(t,e,{configurable:!0,enumerable:!1,value:function(){var e=Array.prototype.slice.call(arguments),i=r.apply(this,e);return Y.each(t._chartjs.listeners,(function(t){"function"==typeof t[n]&&t[n].apply(t,e)})),i}})})))),n._data=i),n.resyncElements()},_configure:function(){this._config=Y.merge({},[this.chart.options.datasets[this._type],this.getDataset()],{merger:function(t,e,n){"_meta"!==t&&"data"!==t&&Y._merger(t,e,n)}})},_update:function(t){this._configure(),this._cachedDataOpts=null,this.update(t)},update:Y.noop,transition:function(t){for(var e=this.getMeta(),n=e.data||[],r=n.length,i=0;i<r;++i)n[i].transition(t);e.dataset&&e.dataset.transition(t)},draw:function(){var t=this.getMeta(),e=t.data||[],n=e.length,r=0;for(t.dataset&&t.dataset.draw();r<n;++r)e[r].draw()},getStyle:function(t){var e,n=this.getMeta(),r=n.dataset;return this._configure(),r&&void 0===t?e=this._resolveDatasetElementOptions(r||{}):(t=t||0,e=this._resolveDataElementOptions(n.data[t]||{},t)),!1!==e.fill&&null!==e.fill||(e.backgroundColor=e.borderColor),e},_resolveDatasetElementOptions:function(t,e){var n,r,i,a,o=this,s=o.chart,l=o._config,u=t.custom||{},c=s.options.elements[o.datasetElementType.prototype._type]||{},h=o._datasetElementOptions,d={},f={chart:s,dataset:o.getDataset(),datasetIndex:o.index,hover:e};for(n=0,r=h.length;n<r;++n)i=h[n],a=e?"hover"+i.charAt(0).toUpperCase()+i.slice(1):i,d[i]=$([u[a],l[a],c[a]],f);return d},_resolveDataElementOptions:function(t,e){var n=this,r=t&&t.custom,i=n._cachedDataOpts;if(i&&!r)return i;var a,o,s,l,u=n.chart,c=n._config,h=u.options.elements[n.dataElementType.prototype._type]||{},d=n._dataElementOptions,f={},p={chart:u,dataIndex:e,dataset:n.getDataset(),datasetIndex:n.index},g={cacheable:!r};if(r=r||{},Y.isArray(d))for(o=0,s=d.length;o<s;++o)f[l=d[o]]=$([r[l],c[l],h[l]],p,e,g);else for(o=0,s=(a=Object.keys(d)).length;o<s;++o)f[l=a[o]]=$([r[l],c[d[l]],c[l],h[l]],p,e,g);return g.cacheable&&(n._cachedDataOpts=Object.freeze(f)),f},removeHoverStyle:function(t){Y.merge(t._model,t.$previousStyle||{}),delete t.$previousStyle},setHoverStyle:function(t){var e=this.chart.data.datasets[t._datasetIndex],n=t._index,r=t.custom||{},i=t._model,a=Y.getHoverColor;t.$previousStyle={backgroundColor:i.backgroundColor,borderColor:i.borderColor,borderWidth:i.borderWidth},i.backgroundColor=$([r.hoverBackgroundColor,e.hoverBackgroundColor,a(i.backgroundColor)],void 0,n),i.borderColor=$([r.hoverBorderColor,e.hoverBorderColor,a(i.borderColor)],void 0,n),i.borderWidth=$([r.hoverBorderWidth,e.hoverBorderWidth,i.borderWidth],void 0,n)},_removeDatasetHoverStyle:function(){var t=this.getMeta().dataset;t&&this.removeHoverStyle(t)},_setDatasetHoverStyle:function(){var t,e,n,r,i,a,o=this.getMeta().dataset,s={};if(o){for(a=o._model,i=this._resolveDatasetElementOptions(o,!0),t=0,e=(r=Object.keys(i)).length;t<e;++t)s[n=r[t]]=a[n],a[n]=i[n];o.$previousStyle=s}},resyncElements:function(){var t=this.getMeta(),e=this.getDataset().data,n=t.data.length,r=e.length;r<n?t.data.splice(r,n-r):r>n&&this.insertElements(n,r-n)},insertElements:function(t,e){for(var n=0;n<e;++n)this.addElementAndReset(t+n)},onDataPush:function(){var t=arguments.length;this.insertElements(this.getDataset().data.length-t,t)},onDataPop:function(){this.getMeta().data.pop()},onDataShift:function(){this.getMeta().data.shift()},onDataSplice:function(t,e){this.getMeta().data.splice(t,e),this.insertElements(t,arguments.length-2)},onDataUnshift:function(){this.insertElements(0,arguments.length)}}),et.extend=Y.inherits;var nt=et,rt=2*Math.PI;function it(t,e){var n=e.startAngle,r=e.endAngle,i=e.pixelMargin,a=i/e.outerRadius,o=e.x,s=e.y;t.beginPath(),t.arc(o,s,e.outerRadius,n-a,r+a),e.innerRadius>i?(a=i/e.innerRadius,t.arc(o,s,e.innerRadius-i,r+a,n-a,!0)):t.arc(o,s,i,r+Math.PI/2,n-Math.PI/2),t.closePath(),t.clip()}function at(t,e,n){var r="inner"===e.borderAlign;r?(t.lineWidth=2*e.borderWidth,t.lineJoin="round"):(t.lineWidth=e.borderWidth,t.lineJoin="bevel"),n.fullCircles&&function(t,e,n,r){var i,a=n.endAngle;for(r&&(n.endAngle=n.startAngle+rt,it(t,n),n.endAngle=a,n.endAngle===n.startAngle&&n.fullCircles&&(n.endAngle+=rt,n.fullCircles--)),t.beginPath(),t.arc(n.x,n.y,n.innerRadius,n.startAngle+rt,n.startAngle,!0),i=0;i<n.fullCircles;++i)t.stroke();for(t.beginPath(),t.arc(n.x,n.y,e.outerRadius,n.startAngle,n.startAngle+rt),i=0;i<n.fullCircles;++i)t.stroke()}(t,e,n,r),r&&it(t,n),t.beginPath(),t.arc(n.x,n.y,e.outerRadius,n.startAngle,n.endAngle),t.arc(n.x,n.y,n.innerRadius,n.endAngle,n.startAngle,!0),t.closePath(),t.stroke()}N._set("global",{elements:{arc:{backgroundColor:N.global.defaultColor,borderColor:"#fff",borderWidth:2,borderAlign:"center"}}});var ot=K.extend({_type:"arc",inLabelRange:function(t){var e=this._view;return!!e&&Math.pow(t-e.x,2)<Math.pow(e.radius+e.hoverRadius,2)},inRange:function(t,e){var n=this._view;if(n){for(var r=Y.getAngleFromPoint(n,{x:t,y:e}),i=r.angle,a=r.distance,o=n.startAngle,s=n.endAngle;s<o;)s+=rt;for(;i>s;)i-=rt;for(;i<o;)i+=rt;var l=i>=o&&i<=s,u=a>=n.innerRadius&&a<=n.outerRadius;return l&&u}return!1},getCenterPoint:function(){var t=this._view,e=(t.startAngle+t.endAngle)/2,n=(t.innerRadius+t.outerRadius)/2;return{x:t.x+Math.cos(e)*n,y:t.y+Math.sin(e)*n}},getArea:function(){var t=this._view;return Math.PI*((t.endAngle-t.startAngle)/(2*Math.PI))*(Math.pow(t.outerRadius,2)-Math.pow(t.innerRadius,2))},tooltipPosition:function(){var t=this._view,e=t.startAngle+(t.endAngle-t.startAngle)/2,n=(t.outerRadius-t.innerRadius)/2+t.innerRadius;return{x:t.x+Math.cos(e)*n,y:t.y+Math.sin(e)*n}},draw:function(){var t,e=this._chart.ctx,n=this._view,r="inner"===n.borderAlign?.33:0,i={x:n.x,y:n.y,innerRadius:n.innerRadius,outerRadius:Math.max(n.outerRadius-r,0),pixelMargin:r,startAngle:n.startAngle,endAngle:n.endAngle,fullCircles:Math.floor(n.circumference/rt)};if(e.save(),e.fillStyle=n.backgroundColor,e.strokeStyle=n.borderColor,i.fullCircles){for(i.endAngle=i.startAngle+rt,e.beginPath(),e.arc(i.x,i.y,i.outerRadius,i.startAngle,i.endAngle),e.arc(i.x,i.y,i.innerRadius,i.endAngle,i.startAngle,!0),e.closePath(),t=0;t<i.fullCircles;++t)e.fill();i.endAngle=i.startAngle+n.circumference%rt}e.beginPath(),e.arc(i.x,i.y,i.outerRadius,i.startAngle,i.endAngle),e.arc(i.x,i.y,i.innerRadius,i.endAngle,i.startAngle,!0),e.closePath(),e.fill(),n.borderWidth&&at(e,n,i),e.restore()}}),st=Y.valueOrDefault,lt=N.global.defaultColor;N._set("global",{elements:{line:{tension:.4,backgroundColor:lt,borderWidth:3,borderColor:lt,borderCapStyle:"butt",borderDash:[],borderDashOffset:0,borderJoinStyle:"miter",capBezierPoints:!0,fill:!0}}});var ut=K.extend({_type:"line",draw:function(){var t,e,n,r=this,i=r._view,a=r._chart.ctx,o=i.spanGaps,s=r._children.slice(),l=N.global,u=l.elements.line,c=-1,h=r._loop;if(s.length){if(r._loop){for(t=0;t<s.length;++t)if(e=Y.previousItem(s,t),!s[t]._view.skip&&e._view.skip){s=s.slice(t).concat(s.slice(0,t)),h=o;break}h&&s.push(s[0])}for(a.save(),a.lineCap=i.borderCapStyle||u.borderCapStyle,a.setLineDash&&a.setLineDash(i.borderDash||u.borderDash),a.lineDashOffset=st(i.borderDashOffset,u.borderDashOffset),a.lineJoin=i.borderJoinStyle||u.borderJoinStyle,a.lineWidth=st(i.borderWidth,u.borderWidth),a.strokeStyle=i.borderColor||l.defaultColor,a.beginPath(),(n=s[0]._view).skip||(a.moveTo(n.x,n.y),c=0),t=1;t<s.length;++t)n=s[t]._view,e=-1===c?Y.previousItem(s,t):s[c],n.skip||(c!==t-1&&!o||-1===c?a.moveTo(n.x,n.y):Y.canvas.lineTo(a,e._view,n),c=t);h&&a.closePath(),a.stroke(),a.restore()}}}),ct=Y.valueOrDefault,ht=N.global.defaultColor;function dt(t){var e=this._view;return!!e&&Math.abs(t-e.x)<e.radius+e.hitRadius}N._set("global",{elements:{point:{radius:3,pointStyle:"circle",backgroundColor:ht,borderColor:ht,borderWidth:1,hitRadius:1,hoverRadius:4,hoverBorderWidth:1}}});var ft=K.extend({_type:"point",inRange:function(t,e){var n=this._view;return!!n&&Math.pow(t-n.x,2)+Math.pow(e-n.y,2)<Math.pow(n.hitRadius+n.radius,2)},inLabelRange:dt,inXRange:dt,inYRange:function(t){var e=this._view;return!!e&&Math.abs(t-e.y)<e.radius+e.hitRadius},getCenterPoint:function(){var t=this._view;return{x:t.x,y:t.y}},getArea:function(){return Math.PI*Math.pow(this._view.radius,2)},tooltipPosition:function(){var t=this._view;return{x:t.x,y:t.y,padding:t.radius+t.borderWidth}},draw:function(t){var e=this._view,n=this._chart.ctx,r=e.pointStyle,i=e.rotation,a=e.radius,o=e.x,s=e.y,l=N.global,u=l.defaultColor;e.skip||(void 0===t||Y.canvas._isPointInArea(e,t))&&(n.strokeStyle=e.borderColor||u,n.lineWidth=ct(e.borderWidth,l.elements.point.borderWidth),n.fillStyle=e.backgroundColor||u,Y.canvas.drawPoint(n,r,a,o,s,i))}}),pt=N.global.defaultColor;function gt(t){return t&&void 0!==t.width}function mt(t){var e,n,r,i,a;return gt(t)?(a=t.width/2,e=t.x-a,n=t.x+a,r=Math.min(t.y,t.base),i=Math.max(t.y,t.base)):(a=t.height/2,e=Math.min(t.x,t.base),n=Math.max(t.x,t.base),r=t.y-a,i=t.y+a),{left:e,top:r,right:n,bottom:i}}function vt(t,e,n){return t===e?n:t===n?e:t}function yt(t,e,n){var r,i,a,o,s=t.borderWidth,l=function(t){var e=t.borderSkipped,n={};return e?(t.horizontal?t.base>t.x&&(e=vt(e,"left","right")):t.base<t.y&&(e=vt(e,"bottom","top")),n[e]=!0,n):n}(t);return Y.isObject(s)?(r=+s.top||0,i=+s.right||0,a=+s.bottom||0,o=+s.left||0):r=i=a=o=+s||0,{t:l.top||r<0?0:r>n?n:r,r:l.right||i<0?0:i>e?e:i,b:l.bottom||a<0?0:a>n?n:a,l:l.left||o<0?0:o>e?e:o}}function bt(t,e,n){var r=null===e,i=null===n,a=!(!t||r&&i)&&mt(t);return a&&(r||e>=a.left&&e<=a.right)&&(i||n>=a.top&&n<=a.bottom)}N._set("global",{elements:{rectangle:{backgroundColor:pt,borderColor:pt,borderSkipped:"bottom",borderWidth:0}}});var xt=K.extend({_type:"rectangle",draw:function(){var t=this._chart.ctx,e=this._view,n=function(t){var e=mt(t),n=e.right-e.left,r=e.bottom-e.top,i=yt(t,n/2,r/2);return{outer:{x:e.left,y:e.top,w:n,h:r},inner:{x:e.left+i.l,y:e.top+i.t,w:n-i.l-i.r,h:r-i.t-i.b}}}(e),r=n.outer,i=n.inner;t.fillStyle=e.backgroundColor,t.fillRect(r.x,r.y,r.w,r.h),r.w===i.w&&r.h===i.h||(t.save(),t.beginPath(),t.rect(r.x,r.y,r.w,r.h),t.clip(),t.fillStyle=e.borderColor,t.rect(i.x,i.y,i.w,i.h),t.fill("evenodd"),t.restore())},height:function(){var t=this._view;return t.base-t.y},inRange:function(t,e){return bt(this._view,t,e)},inLabelRange:function(t,e){var n=this._view;return gt(n)?bt(n,t,null):bt(n,null,e)},inXRange:function(t){return bt(this._view,t,null)},inYRange:function(t){return bt(this._view,null,t)},getCenterPoint:function(){var t,e,n=this._view;return gt(n)?(t=n.x,e=(n.y+n.base)/2):(t=(n.x+n.base)/2,e=n.y),{x:t,y:e}},getArea:function(){var t=this._view;return gt(t)?t.width*Math.abs(t.y-t.base):t.height*Math.abs(t.x-t.base)},tooltipPosition:function(){var t=this._view;return{x:t.x,y:t.y}}}),_t={},wt=ot,kt=ut,Mt=ft,St=xt;_t.Arc=wt,_t.Line=kt,_t.Point=Mt,_t.Rectangle=St;var Dt=Y._deprecated,Ct=Y.valueOrDefault;function Ot(t,e,n){var r,i,a=n.barThickness,o=e.stackCount,s=e.pixels[t],l=Y.isNullOrUndef(a)?function(t,e){var n,r,i,a,o=t._length;for(i=1,a=e.length;i<a;++i)o=Math.min(o,Math.abs(e[i]-e[i-1]));for(i=0,a=t.getTicks().length;i<a;++i)r=t.getPixelForTick(i),o=i>0?Math.min(o,Math.abs(r-n)):o,n=r;return o}(e.scale,e.pixels):-1;return Y.isNullOrUndef(a)?(r=l*n.categoryPercentage,i=n.barPercentage):(r=a*o,i=1),{chunk:r/o,ratio:i,start:s-r/2}}N._set("bar",{hover:{mode:"label"},scales:{xAxes:[{type:"category",offset:!0,gridLines:{offsetGridLines:!0}}],yAxes:[{type:"linear"}]}}),N._set("global",{datasets:{bar:{categoryPercentage:.8,barPercentage:.9}}});var Tt=nt.extend({dataElementType:_t.Rectangle,_dataElementOptions:["backgroundColor","borderColor","borderSkipped","borderWidth","barPercentage","barThickness","categoryPercentage","maxBarThickness","minBarLength"],initialize:function(){var t,e,n=this;nt.prototype.initialize.apply(n,arguments),(t=n.getMeta()).stack=n.getDataset().stack,t.bar=!0,e=n._getIndexScale().options,Dt("bar chart",e.barPercentage,"scales.[x/y]Axes.barPercentage","dataset.barPercentage"),Dt("bar chart",e.barThickness,"scales.[x/y]Axes.barThickness","dataset.barThickness"),Dt("bar chart",e.categoryPercentage,"scales.[x/y]Axes.categoryPercentage","dataset.categoryPercentage"),Dt("bar chart",n._getValueScale().options.minBarLength,"scales.[x/y]Axes.minBarLength","dataset.minBarLength"),Dt("bar chart",e.maxBarThickness,"scales.[x/y]Axes.maxBarThickness","dataset.maxBarThickness")},update:function(t){var e,n,r=this.getMeta().data;for(this._ruler=this.getRuler(),e=0,n=r.length;e<n;++e)this.updateElement(r[e],e,t)},updateElement:function(t,e,n){var r=this,i=r.getMeta(),a=r.getDataset(),o=r._resolveDataElementOptions(t,e);t._xScale=r.getScaleForId(i.xAxisID),t._yScale=r.getScaleForId(i.yAxisID),t._datasetIndex=r.index,t._index=e,t._model={backgroundColor:o.backgroundColor,borderColor:o.borderColor,borderSkipped:o.borderSkipped,borderWidth:o.borderWidth,datasetLabel:a.label,label:r.chart.data.labels[e]},Y.isArray(a.data[e])&&(t._model.borderSkipped=null),r._updateElementGeometry(t,e,n,o),t.pivot()},_updateElementGeometry:function(t,e,n,r){var i=this,a=t._model,o=i._getValueScale(),s=o.getBasePixel(),l=o.isHorizontal(),u=i._ruler||i.getRuler(),c=i.calculateBarValuePixels(i.index,e,r),h=i.calculateBarIndexPixels(i.index,e,u,r);a.horizontal=l,a.base=n?s:c.base,a.x=l?n?s:c.head:h.center,a.y=l?h.center:n?s:c.head,a.height=l?h.size:void 0,a.width=l?void 0:h.size},_getStacks:function(t){var e,n,r=this._getIndexScale(),i=r._getMatchingVisibleMetas(this._type),a=r.options.stacked,o=i.length,s=[];for(e=0;e<o&&(n=i[e],(!1===a||-1===s.indexOf(n.stack)||void 0===a&&void 0===n.stack)&&s.push(n.stack),n.index!==t);++e);return s},getStackCount:function(){return this._getStacks().length},getStackIndex:function(t,e){var n=this._getStacks(t),r=void 0!==e?n.indexOf(e):-1;return-1===r?n.length-1:r},getRuler:function(){var t,e,n=this._getIndexScale(),r=[];for(t=0,e=this.getMeta().data.length;t<e;++t)r.push(n.getPixelForValue(null,t,this.index));return{pixels:r,start:n._startPixel,end:n._endPixel,stackCount:this.getStackCount(),scale:n}},calculateBarValuePixels:function(t,e,n){var r,i,a,o,s,l,u,c=this.chart,h=this._getValueScale(),d=h.isHorizontal(),f=c.data.datasets,p=h._getMatchingVisibleMetas(this._type),g=h._parseValue(f[t].data[e]),m=n.minBarLength,v=h.options.stacked,y=this.getMeta().stack,b=void 0===g.start?0:g.max>=0&&g.min>=0?g.min:g.max,x=void 0===g.start?g.end:g.max>=0&&g.min>=0?g.max-g.min:g.min-g.max,_=p.length;if(v||void 0===v&&void 0!==y)for(r=0;r<_&&(i=p[r]).index!==t;++r)i.stack===y&&(a=void 0===(u=h._parseValue(f[i.index].data[e])).start?u.end:u.min>=0&&u.max>=0?u.max:u.min,(g.min<0&&a<0||g.max>=0&&a>0)&&(b+=a));return o=h.getPixelForValue(b),l=(s=h.getPixelForValue(b+x))-o,void 0!==m&&Math.abs(l)<m&&(l=m,s=x>=0&&!d||x<0&&d?o-m:o+m),{size:l,base:o,head:s,center:s+l/2}},calculateBarIndexPixels:function(t,e,n,r){var i="flex"===r.barThickness?function(t,e,n){var r,i=e.pixels,a=i[t],o=t>0?i[t-1]:null,s=t<i.length-1?i[t+1]:null,l=n.categoryPercentage;return null===o&&(o=a-(null===s?e.end-e.start:s-a)),null===s&&(s=a+a-o),r=a-(a-Math.min(o,s))/2*l,{chunk:Math.abs(s-o)/2*l/e.stackCount,ratio:n.barPercentage,start:r}}(e,n,r):Ot(e,n,r),a=this.getStackIndex(t,this.getMeta().stack),o=i.start+i.chunk*a+i.chunk/2,s=Math.min(Ct(r.maxBarThickness,1/0),i.chunk*i.ratio);return{base:o-s/2,head:o+s/2,center:o,size:s}},draw:function(){var t=this.chart,e=this._getValueScale(),n=this.getMeta().data,r=this.getDataset(),i=n.length,a=0;for(Y.canvas.clipArea(t.ctx,t.chartArea);a<i;++a){var o=e._parseValue(r.data[a]);isNaN(o.min)||isNaN(o.max)||n[a].draw()}Y.canvas.unclipArea(t.ctx)},_resolveDataElementOptions:function(){var t=this,e=Y.extend({},nt.prototype._resolveDataElementOptions.apply(t,arguments)),n=t._getIndexScale().options,r=t._getValueScale().options;return e.barPercentage=Ct(n.barPercentage,e.barPercentage),e.barThickness=Ct(n.barThickness,e.barThickness),e.categoryPercentage=Ct(n.categoryPercentage,e.categoryPercentage),e.maxBarThickness=Ct(n.maxBarThickness,e.maxBarThickness),e.minBarLength=Ct(r.minBarLength,e.minBarLength),e}}),Pt=Y.valueOrDefault,At=Y.options.resolve;N._set("bubble",{hover:{mode:"single"},scales:{xAxes:[{type:"linear",position:"bottom",id:"x-axis-0"}],yAxes:[{type:"linear",position:"left",id:"y-axis-0"}]},tooltips:{callbacks:{title:function(){return""},label:function(t,e){var n=e.datasets[t.datasetIndex].label||"",r=e.datasets[t.datasetIndex].data[t.index];return n+": ("+t.xLabel+", "+t.yLabel+", "+r.r+")"}}}});var It=nt.extend({dataElementType:_t.Point,_dataElementOptions:["backgroundColor","borderColor","borderWidth","hoverBackgroundColor","hoverBorderColor","hoverBorderWidth","hoverRadius","hitRadius","pointStyle","rotation"],update:function(t){var e=this,n=e.getMeta().data;Y.each(n,(function(n,r){e.updateElement(n,r,t)}))},updateElement:function(t,e,n){var r=this,i=r.getMeta(),a=t.custom||{},o=r.getScaleForId(i.xAxisID),s=r.getScaleForId(i.yAxisID),l=r._resolveDataElementOptions(t,e),u=r.getDataset().data[e],c=r.index,h=n?o.getPixelForDecimal(.5):o.getPixelForValue("object"==typeof u?u:NaN,e,c),d=n?s.getBasePixel():s.getPixelForValue(u,e,c);t._xScale=o,t._yScale=s,t._options=l,t._datasetIndex=c,t._index=e,t._model={backgroundColor:l.backgroundColor,borderColor:l.borderColor,borderWidth:l.borderWidth,hitRadius:l.hitRadius,pointStyle:l.pointStyle,rotation:l.rotation,radius:n?0:l.radius,skip:a.skip||isNaN(h)||isNaN(d),x:h,y:d},t.pivot()},setHoverStyle:function(t){var e=t._model,n=t._options,r=Y.getHoverColor;t.$previousStyle={backgroundColor:e.backgroundColor,borderColor:e.borderColor,borderWidth:e.borderWidth,radius:e.radius},e.backgroundColor=Pt(n.hoverBackgroundColor,r(n.backgroundColor)),e.borderColor=Pt(n.hoverBorderColor,r(n.borderColor)),e.borderWidth=Pt(n.hoverBorderWidth,n.borderWidth),e.radius=n.radius+n.hoverRadius},_resolveDataElementOptions:function(t,e){var n=this,r=n.chart,i=n.getDataset(),a=t.custom||{},o=i.data[e]||{},s=nt.prototype._resolveDataElementOptions.apply(n,arguments),l={chart:r,dataIndex:e,dataset:i,datasetIndex:n.index};return n._cachedDataOpts===s&&(s=Y.extend({},s)),s.radius=At([a.radius,o.r,n._config.radius,r.options.elements.point.radius],l,e),s}}),Ft=Y.valueOrDefault,Lt=Math.PI,Rt=2*Lt,Nt=Lt/2;N._set("doughnut",{animation:{animateRotate:!0,animateScale:!1},hover:{mode:"single"},legendCallback:function(t){var e,n,r,i=document.createElement("ul"),a=t.data,o=a.datasets,s=a.labels;if(i.setAttribute("class",t.id+"-legend"),o.length)for(e=0,n=o[0].data.length;e<n;++e)(r=i.appendChild(document.createElement("li"))).appendChild(document.createElement("span")).style.backgroundColor=o[0].backgroundColor[e],s[e]&&r.appendChild(document.createTextNode(s[e]));return i.outerHTML},legend:{labels:{generateLabels:function(t){var e=t.data;return e.labels.length&&e.datasets.length?e.labels.map((function(n,r){var i=t.getDatasetMeta(0),a=i.controller.getStyle(r);return{text:n,fillStyle:a.backgroundColor,strokeStyle:a.borderColor,lineWidth:a.borderWidth,hidden:isNaN(e.datasets[0].data[r])||i.data[r].hidden,index:r}})):[]}},onClick:function(t,e){var n,r,i,a=e.index,o=this.chart;for(n=0,r=(o.data.datasets||[]).length;n<r;++n)(i=o.getDatasetMeta(n)).data[a]&&(i.data[a].hidden=!i.data[a].hidden);o.update()}},cutoutPercentage:50,rotation:-Nt,circumference:Rt,tooltips:{callbacks:{title:function(){return""},label:function(t,e){var n=e.labels[t.index],r=": "+e.datasets[t.datasetIndex].data[t.index];return Y.isArray(n)?(n=n.slice())[0]+=r:n+=r,n}}}});var Et=nt.extend({dataElementType:_t.Arc,linkScales:Y.noop,_dataElementOptions:["backgroundColor","borderColor","borderWidth","borderAlign","hoverBackgroundColor","hoverBorderColor","hoverBorderWidth"],getRingIndex:function(t){for(var e=0,n=0;n<t;++n)this.chart.isDatasetVisible(n)&&++e;return e},update:function(t){var e,n,r,i,a=this,o=a.chart,s=o.chartArea,l=o.options,u=1,c=1,h=0,d=0,f=a.getMeta(),p=f.data,g=l.cutoutPercentage/100||0,m=l.circumference,v=a._getRingWeight(a.index);if(m<Rt){var y=l.rotation%Rt,b=(y+=y>=Lt?-Rt:y<-Lt?Rt:0)+m,x=Math.cos(y),_=Math.sin(y),w=Math.cos(b),k=Math.sin(b),M=y<=0&&b>=0||b>=Rt,S=y<=Nt&&b>=Nt||b>=Rt+Nt,D=y<=-Nt&&b>=-Nt||b>=Lt+Nt,C=y===-Lt||b>=Lt?-1:Math.min(x,x*g,w,w*g),O=D?-1:Math.min(_,_*g,k,k*g),T=M?1:Math.max(x,x*g,w,w*g),P=S?1:Math.max(_,_*g,k,k*g);u=(T-C)/2,c=(P-O)/2,h=-(T+C)/2,d=-(P+O)/2}for(r=0,i=p.length;r<i;++r)p[r]._options=a._resolveDataElementOptions(p[r],r);for(o.borderWidth=a.getMaxBorderWidth(),e=(s.right-s.left-o.borderWidth)/u,n=(s.bottom-s.top-o.borderWidth)/c,o.outerRadius=Math.max(Math.min(e,n)/2,0),o.innerRadius=Math.max(o.outerRadius*g,0),o.radiusLength=(o.outerRadius-o.innerRadius)/(a._getVisibleDatasetWeightTotal()||1),o.offsetX=h*o.outerRadius,o.offsetY=d*o.outerRadius,f.total=a.calculateTotal(),a.outerRadius=o.outerRadius-o.radiusLength*a._getRingWeightOffset(a.index),a.innerRadius=Math.max(a.outerRadius-o.radiusLength*v,0),r=0,i=p.length;r<i;++r)a.updateElement(p[r],r,t)},updateElement:function(t,e,n){var r=this,i=r.chart,a=i.chartArea,o=i.options,s=o.animation,l=(a.left+a.right)/2,u=(a.top+a.bottom)/2,c=o.rotation,h=o.rotation,d=r.getDataset(),f=n&&s.animateRotate?0:t.hidden?0:r.calculateCircumference(d.data[e])*(o.circumference/Rt),p=n&&s.animateScale?0:r.innerRadius,g=n&&s.animateScale?0:r.outerRadius,m=t._options||{};Y.extend(t,{_datasetIndex:r.index,_index:e,_model:{backgroundColor:m.backgroundColor,borderColor:m.borderColor,borderWidth:m.borderWidth,borderAlign:m.borderAlign,x:l+i.offsetX,y:u+i.offsetY,startAngle:c,endAngle:h,circumference:f,outerRadius:g,innerRadius:p,label:Y.valueAtIndexOrDefault(d.label,e,i.data.labels[e])}});var v=t._model;n&&s.animateRotate||(v.startAngle=0===e?o.rotation:r.getMeta().data[e-1]._model.endAngle,v.endAngle=v.startAngle+v.circumference),t.pivot()},calculateTotal:function(){var t,e=this.getDataset(),n=this.getMeta(),r=0;return Y.each(n.data,(function(n,i){t=e.data[i],isNaN(t)||n.hidden||(r+=Math.abs(t))})),r},calculateCircumference:function(t){var e=this.getMeta().total;return e>0&&!isNaN(t)?Rt*(Math.abs(t)/e):0},getMaxBorderWidth:function(t){var e,n,r,i,a,o,s,l,u=0,c=this.chart;if(!t)for(e=0,n=c.data.datasets.length;e<n;++e)if(c.isDatasetVisible(e)){t=(r=c.getDatasetMeta(e)).data,e!==this.index&&(a=r.controller);break}if(!t)return 0;for(e=0,n=t.length;e<n;++e)i=t[e],a?(a._configure(),o=a._resolveDataElementOptions(i,e)):o=i._options,"inner"!==o.borderAlign&&(s=o.borderWidth,u=(l=o.hoverBorderWidth)>(u=s>u?s:u)?l:u);return u},setHoverStyle:function(t){var e=t._model,n=t._options,r=Y.getHoverColor;t.$previousStyle={backgroundColor:e.backgroundColor,borderColor:e.borderColor,borderWidth:e.borderWidth},e.backgroundColor=Ft(n.hoverBackgroundColor,r(n.backgroundColor)),e.borderColor=Ft(n.hoverBorderColor,r(n.borderColor)),e.borderWidth=Ft(n.hoverBorderWidth,n.borderWidth)},_getRingWeightOffset:function(t){for(var e=0,n=0;n<t;++n)this.chart.isDatasetVisible(n)&&(e+=this._getRingWeight(n));return e},_getRingWeight:function(t){return Math.max(Ft(this.chart.data.datasets[t].weight,1),0)},_getVisibleDatasetWeightTotal:function(){return this._getRingWeightOffset(this.chart.data.datasets.length)}});N._set("horizontalBar",{hover:{mode:"index",axis:"y"},scales:{xAxes:[{type:"linear",position:"bottom"}],yAxes:[{type:"category",position:"left",offset:!0,gridLines:{offsetGridLines:!0}}]},elements:{rectangle:{borderSkipped:"left"}},tooltips:{mode:"index",axis:"y"}}),N._set("global",{datasets:{horizontalBar:{categoryPercentage:.8,barPercentage:.9}}});var jt=Tt.extend({_getValueScaleId:function(){return this.getMeta().xAxisID},_getIndexScaleId:function(){return this.getMeta().yAxisID}}),zt=Y.valueOrDefault,Wt=Y.options.resolve,Yt=Y.canvas._isPointInArea;function Vt(t,e){var n=t&&t.options.ticks||{},r=n.reverse,i=void 0===n.min?e:0,a=void 0===n.max?e:0;return{start:r?a:i,end:r?i:a}}function Bt(t,e,n){var r=n/2,i=Vt(t,r),a=Vt(e,r);return{top:a.end,right:i.end,bottom:a.start,left:i.start}}function Ht(t){var e,n,r,i;return Y.isObject(t)?(e=t.top,n=t.right,r=t.bottom,i=t.left):e=n=r=i=t,{top:e,right:n,bottom:r,left:i}}N._set("line",{showLines:!0,spanGaps:!1,hover:{mode:"label"},scales:{xAxes:[{type:"category",id:"x-axis-0"}],yAxes:[{type:"linear",id:"y-axis-0"}]}});var Ut=nt.extend({datasetElementType:_t.Line,dataElementType:_t.Point,_datasetElementOptions:["backgroundColor","borderCapStyle","borderColor","borderDash","borderDashOffset","borderJoinStyle","borderWidth","cubicInterpolationMode","fill"],_dataElementOptions:{backgroundColor:"pointBackgroundColor",borderColor:"pointBorderColor",borderWidth:"pointBorderWidth",hitRadius:"pointHitRadius",hoverBackgroundColor:"pointHoverBackgroundColor",hoverBorderColor:"pointHoverBorderColor",hoverBorderWidth:"pointHoverBorderWidth",hoverRadius:"pointHoverRadius",pointStyle:"pointStyle",radius:"pointRadius",rotation:"pointRotation"},update:function(t){var e,n,r=this,i=r.getMeta(),a=i.dataset,o=i.data||[],s=r.chart.options,l=r._config,u=r._showLine=zt(l.showLine,s.showLines);for(r._xScale=r.getScaleForId(i.xAxisID),r._yScale=r.getScaleForId(i.yAxisID),u&&(void 0!==l.tension&&void 0===l.lineTension&&(l.lineTension=l.tension),a._scale=r._yScale,a._datasetIndex=r.index,a._children=o,a._model=r._resolveDatasetElementOptions(a),a.pivot()),e=0,n=o.length;e<n;++e)r.updateElement(o[e],e,t);for(u&&0!==a._model.tension&&r.updateBezierControlPoints(),e=0,n=o.length;e<n;++e)o[e].pivot()},updateElement:function(t,e,n){var r,i,a=this,o=a.getMeta(),s=t.custom||{},l=a.getDataset(),u=a.index,c=l.data[e],h=a._xScale,d=a._yScale,f=o.dataset._model,p=a._resolveDataElementOptions(t,e);r=h.getPixelForValue("object"==typeof c?c:NaN,e,u),i=n?d.getBasePixel():a.calculatePointY(c,e,u),t._xScale=h,t._yScale=d,t._options=p,t._datasetIndex=u,t._index=e,t._model={x:r,y:i,skip:s.skip||isNaN(r)||isNaN(i),radius:p.radius,pointStyle:p.pointStyle,rotation:p.rotation,backgroundColor:p.backgroundColor,borderColor:p.borderColor,borderWidth:p.borderWidth,tension:zt(s.tension,f?f.tension:0),steppedLine:!!f&&f.steppedLine,hitRadius:p.hitRadius}},_resolveDatasetElementOptions:function(t){var e=this,n=e._config,r=t.custom||{},i=e.chart.options,a=i.elements.line,o=nt.prototype._resolveDatasetElementOptions.apply(e,arguments);return o.spanGaps=zt(n.spanGaps,i.spanGaps),o.tension=zt(n.lineTension,a.tension),o.steppedLine=Wt([r.steppedLine,n.steppedLine,a.stepped]),o.clip=Ht(zt(n.clip,Bt(e._xScale,e._yScale,o.borderWidth))),o},calculatePointY:function(t,e,n){var r,i,a,o,s,l,u,c=this.chart,h=this._yScale,d=0,f=0;if(h.options.stacked){for(s=+h.getRightValue(t),u=(l=c._getSortedVisibleDatasetMetas()).length,r=0;r<u&&(a=l[r]).index!==n;++r)i=c.data.datasets[a.index],"line"===a.type&&a.yAxisID===h.id&&((o=+h.getRightValue(i.data[e]))<0?f+=o||0:d+=o||0);return s<0?h.getPixelForValue(f+s):h.getPixelForValue(d+s)}return h.getPixelForValue(t)},updateBezierControlPoints:function(){var t,e,n,r,i=this.chart,a=this.getMeta(),o=a.dataset._model,s=i.chartArea,l=a.data||[];function u(t,e,n){return Math.max(Math.min(t,n),e)}if(o.spanGaps&&(l=l.filter((function(t){return!t._model.skip}))),"monotone"===o.cubicInterpolationMode)Y.splineCurveMonotone(l);else for(t=0,e=l.length;t<e;++t)n=l[t]._model,r=Y.splineCurve(Y.previousItem(l,t)._model,n,Y.nextItem(l,t)._model,o.tension),n.controlPointPreviousX=r.previous.x,n.controlPointPreviousY=r.previous.y,n.controlPointNextX=r.next.x,n.controlPointNextY=r.next.y;if(i.options.elements.line.capBezierPoints)for(t=0,e=l.length;t<e;++t)n=l[t]._model,Yt(n,s)&&(t>0&&Yt(l[t-1]._model,s)&&(n.controlPointPreviousX=u(n.controlPointPreviousX,s.left,s.right),n.controlPointPreviousY=u(n.controlPointPreviousY,s.top,s.bottom)),t<l.length-1&&Yt(l[t+1]._model,s)&&(n.controlPointNextX=u(n.controlPointNextX,s.left,s.right),n.controlPointNextY=u(n.controlPointNextY,s.top,s.bottom)))},draw:function(){var t,e=this.chart,n=this.getMeta(),r=n.data||[],i=e.chartArea,a=e.canvas,o=0,s=r.length;for(this._showLine&&(t=n.dataset._model.clip,Y.canvas.clipArea(e.ctx,{left:!1===t.left?0:i.left-t.left,right:!1===t.right?a.width:i.right+t.right,top:!1===t.top?0:i.top-t.top,bottom:!1===t.bottom?a.height:i.bottom+t.bottom}),n.dataset.draw(),Y.canvas.unclipArea(e.ctx));o<s;++o)r[o].draw(i)},setHoverStyle:function(t){var e=t._model,n=t._options,r=Y.getHoverColor;t.$previousStyle={backgroundColor:e.backgroundColor,borderColor:e.borderColor,borderWidth:e.borderWidth,radius:e.radius},e.backgroundColor=zt(n.hoverBackgroundColor,r(n.backgroundColor)),e.borderColor=zt(n.hoverBorderColor,r(n.borderColor)),e.borderWidth=zt(n.hoverBorderWidth,n.borderWidth),e.radius=zt(n.hoverRadius,n.radius)}}),Gt=Y.options.resolve;N._set("polarArea",{scale:{type:"radialLinear",angleLines:{display:!1},gridLines:{circular:!0},pointLabels:{display:!1},ticks:{beginAtZero:!0}},animation:{animateRotate:!0,animateScale:!0},startAngle:-.5*Math.PI,legendCallback:function(t){var e,n,r,i=document.createElement("ul"),a=t.data,o=a.datasets,s=a.labels;if(i.setAttribute("class",t.id+"-legend"),o.length)for(e=0,n=o[0].data.length;e<n;++e)(r=i.appendChild(document.createElement("li"))).appendChild(document.createElement("span")).style.backgroundColor=o[0].backgroundColor[e],s[e]&&r.appendChild(document.createTextNode(s[e]));return i.outerHTML},legend:{labels:{generateLabels:function(t){var e=t.data;return e.labels.length&&e.datasets.length?e.labels.map((function(n,r){var i=t.getDatasetMeta(0),a=i.controller.getStyle(r);return{text:n,fillStyle:a.backgroundColor,strokeStyle:a.borderColor,lineWidth:a.borderWidth,hidden:isNaN(e.datasets[0].data[r])||i.data[r].hidden,index:r}})):[]}},onClick:function(t,e){var n,r,i,a=e.index,o=this.chart;for(n=0,r=(o.data.datasets||[]).length;n<r;++n)(i=o.getDatasetMeta(n)).data[a].hidden=!i.data[a].hidden;o.update()}},tooltips:{callbacks:{title:function(){return""},label:function(t,e){return e.labels[t.index]+": "+t.yLabel}}}});var qt=nt.extend({dataElementType:_t.Arc,linkScales:Y.noop,_dataElementOptions:["backgroundColor","borderColor","borderWidth","borderAlign","hoverBackgroundColor","hoverBorderColor","hoverBorderWidth"],_getIndexScaleId:function(){return this.chart.scale.id},_getValueScaleId:function(){return this.chart.scale.id},update:function(t){var e,n,r,i=this,a=i.getDataset(),o=i.getMeta(),s=i.chart.options.startAngle||0,l=i._starts=[],u=i._angles=[],c=o.data;for(i._updateRadius(),o.count=i.countVisibleElements(),e=0,n=a.data.length;e<n;e++)l[e]=s,r=i._computeAngle(e),u[e]=r,s+=r;for(e=0,n=c.length;e<n;++e)c[e]._options=i._resolveDataElementOptions(c[e],e),i.updateElement(c[e],e,t)},_updateRadius:function(){var t=this,e=t.chart,n=e.chartArea,r=e.options,i=Math.min(n.right-n.left,n.bottom-n.top);e.outerRadius=Math.max(i/2,0),e.innerRadius=Math.max(r.cutoutPercentage?e.outerRadius/100*r.cutoutPercentage:1,0),e.radiusLength=(e.outerRadius-e.innerRadius)/e.getVisibleDatasetCount(),t.outerRadius=e.outerRadius-e.radiusLength*t.index,t.innerRadius=t.outerRadius-e.radiusLength},updateElement:function(t,e,n){var r=this,i=r.chart,a=r.getDataset(),o=i.options,s=o.animation,l=i.scale,u=i.data.labels,c=l.xCenter,h=l.yCenter,d=o.startAngle,f=t.hidden?0:l.getDistanceFromCenterForValue(a.data[e]),p=r._starts[e],g=p+(t.hidden?0:r._angles[e]),m=s.animateScale?0:l.getDistanceFromCenterForValue(a.data[e]),v=t._options||{};Y.extend(t,{_datasetIndex:r.index,_index:e,_scale:l,_model:{backgroundColor:v.backgroundColor,borderColor:v.borderColor,borderWidth:v.borderWidth,borderAlign:v.borderAlign,x:c,y:h,innerRadius:0,outerRadius:n?m:f,startAngle:n&&s.animateRotate?d:p,endAngle:n&&s.animateRotate?d:g,label:Y.valueAtIndexOrDefault(u,e,u[e])}}),t.pivot()},countVisibleElements:function(){var t=this.getDataset(),e=this.getMeta(),n=0;return Y.each(e.data,(function(e,r){isNaN(t.data[r])||e.hidden||n++})),n},setHoverStyle:function(t){var e=t._model,n=t._options,r=Y.getHoverColor,i=Y.valueOrDefault;t.$previousStyle={backgroundColor:e.backgroundColor,borderColor:e.borderColor,borderWidth:e.borderWidth},e.backgroundColor=i(n.hoverBackgroundColor,r(n.backgroundColor)),e.borderColor=i(n.hoverBorderColor,r(n.borderColor)),e.borderWidth=i(n.hoverBorderWidth,n.borderWidth)},_computeAngle:function(t){var e=this,n=this.getMeta().count,r=e.getDataset(),i=e.getMeta();if(isNaN(r.data[t])||i.data[t].hidden)return 0;var a={chart:e.chart,dataIndex:t,dataset:r,datasetIndex:e.index};return Gt([e.chart.options.elements.arc.angle,2*Math.PI/n],a,t)}});N._set("pie",Y.clone(N.doughnut)),N._set("pie",{cutoutPercentage:0});var Kt=Et,Zt=Y.valueOrDefault;N._set("radar",{spanGaps:!1,scale:{type:"radialLinear"},elements:{line:{fill:"start",tension:0}}});var Xt=nt.extend({datasetElementType:_t.Line,dataElementType:_t.Point,linkScales:Y.noop,_datasetElementOptions:["backgroundColor","borderWidth","borderColor","borderCapStyle","borderDash","borderDashOffset","borderJoinStyle","fill"],_dataElementOptions:{backgroundColor:"pointBackgroundColor",borderColor:"pointBorderColor",borderWidth:"pointBorderWidth",hitRadius:"pointHitRadius",hoverBackgroundColor:"pointHoverBackgroundColor",hoverBorderColor:"pointHoverBorderColor",hoverBorderWidth:"pointHoverBorderWidth",hoverRadius:"pointHoverRadius",pointStyle:"pointStyle",radius:"pointRadius",rotation:"pointRotation"},_getIndexScaleId:function(){return this.chart.scale.id},_getValueScaleId:function(){return this.chart.scale.id},update:function(t){var e,n,r=this,i=r.getMeta(),a=i.dataset,o=i.data||[],s=r.chart.scale,l=r._config;for(void 0!==l.tension&&void 0===l.lineTension&&(l.lineTension=l.tension),a._scale=s,a._datasetIndex=r.index,a._children=o,a._loop=!0,a._model=r._resolveDatasetElementOptions(a),a.pivot(),e=0,n=o.length;e<n;++e)r.updateElement(o[e],e,t);for(r.updateBezierControlPoints(),e=0,n=o.length;e<n;++e)o[e].pivot()},updateElement:function(t,e,n){var r=this,i=t.custom||{},a=r.getDataset(),o=r.chart.scale,s=o.getPointPositionForValue(e,a.data[e]),l=r._resolveDataElementOptions(t,e),u=r.getMeta().dataset._model,c=n?o.xCenter:s.x,h=n?o.yCenter:s.y;t._scale=o,t._options=l,t._datasetIndex=r.index,t._index=e,t._model={x:c,y:h,skip:i.skip||isNaN(c)||isNaN(h),radius:l.radius,pointStyle:l.pointStyle,rotation:l.rotation,backgroundColor:l.backgroundColor,borderColor:l.borderColor,borderWidth:l.borderWidth,tension:Zt(i.tension,u?u.tension:0),hitRadius:l.hitRadius}},_resolveDatasetElementOptions:function(){var t=this,e=t._config,n=t.chart.options,r=nt.prototype._resolveDatasetElementOptions.apply(t,arguments);return r.spanGaps=Zt(e.spanGaps,n.spanGaps),r.tension=Zt(e.lineTension,n.elements.line.tension),r},updateBezierControlPoints:function(){var t,e,n,r,i=this.getMeta(),a=this.chart.chartArea,o=i.data||[];function s(t,e,n){return Math.max(Math.min(t,n),e)}for(i.dataset._model.spanGaps&&(o=o.filter((function(t){return!t._model.skip}))),t=0,e=o.length;t<e;++t)n=o[t]._model,r=Y.splineCurve(Y.previousItem(o,t,!0)._model,n,Y.nextItem(o,t,!0)._model,n.tension),n.controlPointPreviousX=s(r.previous.x,a.left,a.right),n.controlPointPreviousY=s(r.previous.y,a.top,a.bottom),n.controlPointNextX=s(r.next.x,a.left,a.right),n.controlPointNextY=s(r.next.y,a.top,a.bottom)},setHoverStyle:function(t){var e=t._model,n=t._options,r=Y.getHoverColor;t.$previousStyle={backgroundColor:e.backgroundColor,borderColor:e.borderColor,borderWidth:e.borderWidth,radius:e.radius},e.backgroundColor=Zt(n.hoverBackgroundColor,r(n.backgroundColor)),e.borderColor=Zt(n.hoverBorderColor,r(n.borderColor)),e.borderWidth=Zt(n.hoverBorderWidth,n.borderWidth),e.radius=Zt(n.hoverRadius,n.radius)}});N._set("scatter",{hover:{mode:"single"},scales:{xAxes:[{id:"x-axis-1",type:"linear",position:"bottom"}],yAxes:[{id:"y-axis-1",type:"linear",position:"left"}]},tooltips:{callbacks:{title:function(){return""},label:function(t){return"("+t.xLabel+", "+t.yLabel+")"}}}}),N._set("global",{datasets:{scatter:{showLine:!1}}});var Jt={bar:Tt,bubble:It,doughnut:Et,horizontalBar:jt,line:Ut,polarArea:qt,pie:Kt,radar:Xt,scatter:Ut};function $t(t,e){return t.native?{x:t.x,y:t.y}:Y.getRelativePosition(t,e)}function Qt(t,e){var n,r,i,a,o,s,l=t._getSortedVisibleDatasetMetas();for(r=0,a=l.length;r<a;++r)for(i=0,o=(n=l[r].data).length;i<o;++i)(s=n[i])._view.skip||e(s)}function te(t,e){var n=[];return Qt(t,(function(t){t.inRange(e.x,e.y)&&n.push(t)})),n}function ee(t,e,n,r){var i=Number.POSITIVE_INFINITY,a=[];return Qt(t,(function(t){if(!n||t.inRange(e.x,e.y)){var o=t.getCenterPoint(),s=r(e,o);s<i?(a=[t],i=s):s===i&&a.push(t)}})),a}function ne(t){var e=-1!==t.indexOf("x"),n=-1!==t.indexOf("y");return function(t,r){var i=e?Math.abs(t.x-r.x):0,a=n?Math.abs(t.y-r.y):0;return Math.sqrt(Math.pow(i,2)+Math.pow(a,2))}}function re(t,e,n){var r=$t(e,t);n.axis=n.axis||"x";var i=ne(n.axis),a=n.intersect?te(t,r):ee(t,r,!1,i),o=[];return a.length?(t._getSortedVisibleDatasetMetas().forEach((function(t){var e=t.data[a[0]._index];e&&!e._view.skip&&o.push(e)})),o):[]}var ie={modes:{single:function(t,e){var n=$t(e,t),r=[];return Qt(t,(function(t){if(t.inRange(n.x,n.y))return r.push(t),r})),r.slice(0,1)},label:re,index:re,dataset:function(t,e,n){var r=$t(e,t);n.axis=n.axis||"xy";var i=ne(n.axis),a=n.intersect?te(t,r):ee(t,r,!1,i);return a.length>0&&(a=t.getDatasetMeta(a[0]._datasetIndex).data),a},"x-axis":function(t,e){return re(t,e,{intersect:!1})},point:function(t,e){return te(t,$t(e,t))},nearest:function(t,e,n){var r=$t(e,t);n.axis=n.axis||"xy";var i=ne(n.axis);return ee(t,r,n.intersect,i)},x:function(t,e,n){var r=$t(e,t),i=[],a=!1;return Qt(t,(function(t){t.inXRange(r.x)&&i.push(t),t.inRange(r.x,r.y)&&(a=!0)})),n.intersect&&!a&&(i=[]),i},y:function(t,e,n){var r=$t(e,t),i=[],a=!1;return Qt(t,(function(t){t.inYRange(r.y)&&i.push(t),t.inRange(r.x,r.y)&&(a=!0)})),n.intersect&&!a&&(i=[]),i}}},ae=Y.extend;function oe(t,e){return Y.where(t,(function(t){return t.pos===e}))}function se(t,e){return t.sort((function(t,n){var r=e?n:t,i=e?t:n;return r.weight===i.weight?r.index-i.index:r.weight-i.weight}))}function le(t,e,n,r){return Math.max(t[n],e[n])+Math.max(t[r],e[r])}function ue(t,e,n){var r,i,a=n.box,o=t.maxPadding;if(n.size&&(t[n.pos]-=n.size),n.size=n.horizontal?a.height:a.width,t[n.pos]+=n.size,a.getPadding){var s=a.getPadding();o.top=Math.max(o.top,s.top),o.left=Math.max(o.left,s.left),o.bottom=Math.max(o.bottom,s.bottom),o.right=Math.max(o.right,s.right)}if(r=e.outerWidth-le(o,t,"left","right"),i=e.outerHeight-le(o,t,"top","bottom"),r!==t.w||i!==t.h)return t.w=r,t.h=i,n.horizontal?r!==t.w:i!==t.h}function ce(t,e){var n=e.maxPadding;function r(t){var r={left:0,top:0,right:0,bottom:0};return t.forEach((function(t){r[t]=Math.max(e[t],n[t])})),r}return r(t?["left","right"]:["top","bottom"])}function he(t,e,n){var r,i,a,o,s,l,u=[];for(r=0,i=t.length;r<i;++r)(o=(a=t[r]).box).update(a.width||e.w,a.height||e.h,ce(a.horizontal,e)),ue(e,n,a)&&(l=!0,u.length&&(s=!0)),o.fullWidth||u.push(a);return s&&he(u,e,n)||l}function de(t,e,n){var r,i,a,o,s=n.padding,l=e.x,u=e.y;for(r=0,i=t.length;r<i;++r)o=(a=t[r]).box,a.horizontal?(o.left=o.fullWidth?s.left:e.left,o.right=o.fullWidth?n.outerWidth-s.right:e.left+e.w,o.top=u,o.bottom=u+o.height,o.width=o.right-o.left,u=o.bottom):(o.left=l,o.right=l+o.width,o.top=e.top,o.bottom=e.top+e.h,o.height=o.bottom-o.top,l=o.right);e.x=l,e.y=u}N._set("global",{layout:{padding:{top:0,right:0,bottom:0,left:0}}});var fe,pe={defaults:{},addBox:function(t,e){t.boxes||(t.boxes=[]),e.fullWidth=e.fullWidth||!1,e.position=e.position||"top",e.weight=e.weight||0,e._layers=e._layers||function(){return[{z:0,draw:function(){e.draw.apply(e,arguments)}}]},t.boxes.push(e)},removeBox:function(t,e){var n=t.boxes?t.boxes.indexOf(e):-1;-1!==n&&t.boxes.splice(n,1)},configure:function(t,e,n){for(var r,i=["fullWidth","position","weight"],a=i.length,o=0;o<a;++o)r=i[o],n.hasOwnProperty(r)&&(e[r]=n[r])},update:function(t,e,n){if(t){var r=t.options.layout||{},i=Y.options.toPadding(r.padding),a=e-i.width,o=n-i.height,s=function(t){var e=function(t){var e,n,r,i=[];for(e=0,n=(t||[]).length;e<n;++e)r=t[e],i.push({index:e,box:r,pos:r.position,horizontal:r.isHorizontal(),weight:r.weight});return i}(t),n=se(oe(e,"left"),!0),r=se(oe(e,"right")),i=se(oe(e,"top"),!0),a=se(oe(e,"bottom"));return{leftAndTop:n.concat(i),rightAndBottom:r.concat(a),chartArea:oe(e,"chartArea"),vertical:n.concat(r),horizontal:i.concat(a)}}(t.boxes),l=s.vertical,u=s.horizontal,c=Object.freeze({outerWidth:e,outerHeight:n,padding:i,availableWidth:a,vBoxMaxWidth:a/2/l.length,hBoxMaxHeight:o/2}),h=ae({maxPadding:ae({},i),w:a,h:o,x:i.left,y:i.top},i);!function(t,e){var n,r,i;for(n=0,r=t.length;n<r;++n)(i=t[n]).width=i.horizontal?i.box.fullWidth&&e.availableWidth:e.vBoxMaxWidth,i.height=i.horizontal&&e.hBoxMaxHeight}(l.concat(u),c),he(l,h,c),he(u,h,c)&&he(l,h,c),function(t){var e=t.maxPadding;function n(n){var r=Math.max(e[n]-t[n],0);return t[n]+=r,r}t.y+=n("top"),t.x+=n("left"),n("right"),n("bottom")}(h),de(s.leftAndTop,h,c),h.x+=h.w,h.y+=h.h,de(s.rightAndBottom,h,c),t.chartArea={left:h.left,top:h.top,right:h.left+h.w,bottom:h.top+h.h},Y.each(s.chartArea,(function(e){var n=e.box;ae(n,t.chartArea),n.update(h.w,h.h)}))}}},ge=(fe=Object.freeze({__proto__:null,default:"/*\n * DOM element rendering detection\n * https://davidwalsh.name/detect-node-insertion\n */\n@keyframes chartjs-render-animation {\n\tfrom { opacity: 0.99; }\n\tto { opacity: 1; }\n}\n\n.chartjs-render-monitor {\n\tanimation: chartjs-render-animation 0.001s;\n}\n\n/*\n * DOM element resizing detection\n * https://github.com/marcj/css-element-queries\n */\n.chartjs-size-monitor,\n.chartjs-size-monitor-expand,\n.chartjs-size-monitor-shrink {\n\tposition: absolute;\n\tdirection: ltr;\n\tleft: 0;\n\ttop: 0;\n\tright: 0;\n\tbottom: 0;\n\toverflow: hidden;\n\tpointer-events: none;\n\tvisibility: hidden;\n\tz-index: -1;\n}\n\n.chartjs-size-monitor-expand > div {\n\tposition: absolute;\n\twidth: 1000000px;\n\theight: 1000000px;\n\tleft: 0;\n\ttop: 0;\n}\n\n.chartjs-size-monitor-shrink > div {\n\tposition: absolute;\n\twidth: 200%;\n\theight: 200%;\n\tleft: 0;\n\ttop: 0;\n}\n"}))&&fe.default||fe,me=["animationstart","webkitAnimationStart"],ve={touchstart:"mousedown",touchmove:"mousemove",touchend:"mouseup",pointerenter:"mouseenter",pointerdown:"mousedown",pointermove:"mousemove",pointerup:"mouseup",pointerleave:"mouseout",pointerout:"mouseout"};function ye(t,e){var n=Y.getStyle(t,e),r=n&&n.match(/^(\d+)(\.\d+)?px$/);return r?Number(r[1]):void 0}var be=!!function(){var t=!1;try{var e=Object.defineProperty({},"passive",{get:function(){t=!0}});window.addEventListener("e",null,e)}catch(n){}return t}()&&{passive:!0};function xe(t,e,n){t.addEventListener(e,n,be)}function _e(t,e,n){t.removeEventListener(e,n,be)}function we(t,e,n,r,i){return{type:t,chart:e,native:i||null,x:void 0!==n?n:null,y:void 0!==r?r:null}}function ke(t){var e=document.createElement("div");return e.className=t||"",e}function Me(t,e,n){var r,i,a,o,s=t.$chartjs||(t.$chartjs={}),l=s.resizer=function(t){var e=ke("chartjs-size-monitor"),n=ke("chartjs-size-monitor-expand"),r=ke("chartjs-size-monitor-shrink");n.appendChild(ke()),r.appendChild(ke()),e.appendChild(n),e.appendChild(r),e._reset=function(){n.scrollLeft=1e6,n.scrollTop=1e6,r.scrollLeft=1e6,r.scrollTop=1e6};var i=function(){e._reset(),t()};return xe(n,"scroll",i.bind(n,"expand")),xe(r,"scroll",i.bind(r,"shrink")),e}((r=function(){if(s.resizer){var r=n.options.maintainAspectRatio&&t.parentNode,i=r?r.clientWidth:0;e(we("resize",n)),r&&r.clientWidth<i&&n.canvas&&e(we("resize",n))}},a=!1,o=[],function(){o=Array.prototype.slice.call(arguments),i=i||this,a||(a=!0,Y.requestAnimFrame.call(window,(function(){a=!1,r.apply(i,o)})))}));!function(t,e){var n=t.$chartjs||(t.$chartjs={}),r=n.renderProxy=function(t){"chartjs-render-animation"===t.animationName&&e()};Y.each(me,(function(e){xe(t,e,r)})),n.reflow=!!t.offsetParent,t.classList.add("chartjs-render-monitor")}(t,(function(){if(s.resizer){var e=t.parentNode;e&&e!==l.parentNode&&e.insertBefore(l,e.firstChild),l._reset()}}))}function Se(t){var e=t.$chartjs||{},n=e.resizer;delete e.resizer,function(t){var e=t.$chartjs||{},n=e.renderProxy;n&&(Y.each(me,(function(e){_e(t,e,n)})),delete e.renderProxy),t.classList.remove("chartjs-render-monitor")}(t),n&&n.parentNode&&n.parentNode.removeChild(n)}var De={disableCSSInjection:!1,_enabled:"undefined"!=typeof window&&"undefined"!=typeof document,_ensureLoaded:function(t){if(!this.disableCSSInjection){var e=t.getRootNode?t.getRootNode():document;!function(t,e){var n=t.$chartjs||(t.$chartjs={});if(!n.containsStyles){n.containsStyles=!0,e="/* Chart.js */\n"+e;var r=document.createElement("style");r.setAttribute("type","text/css"),r.appendChild(document.createTextNode(e)),t.appendChild(r)}}(e.host?e:document.head,ge)}},acquireContext:function(t,e){"string"==typeof t?t=document.getElementById(t):t.length&&(t=t[0]),t&&t.canvas&&(t=t.canvas);var n=t&&t.getContext&&t.getContext("2d");return n&&n.canvas===t?(this._ensureLoaded(t),function(t,e){var n=t.style,r=t.getAttribute("height"),i=t.getAttribute("width");if(t.$chartjs={initial:{height:r,width:i,style:{display:n.display,height:n.height,width:n.width}}},n.display=n.display||"block",null===i||""===i){var a=ye(t,"width");void 0!==a&&(t.width=a)}if(null===r||""===r)if(""===t.style.height)t.height=t.width/(e.options.aspectRatio||2);else{var o=ye(t,"height");void 0!==a&&(t.height=o)}}(t,e),n):null},releaseContext:function(t){var e=t.canvas;if(e.$chartjs){var n=e.$chartjs.initial;["height","width"].forEach((function(t){var r=n[t];Y.isNullOrUndef(r)?e.removeAttribute(t):e.setAttribute(t,r)})),Y.each(n.style||{},(function(t,n){e.style[n]=t})),e.width=e.width,delete e.$chartjs}},addEventListener:function(t,e,n){var r=t.canvas;if("resize"!==e){var i=n.$chartjs||(n.$chartjs={});xe(r,e,(i.proxies||(i.proxies={}))[t.id+"_"+e]=function(e){n(function(t,e){var n=ve[t.type]||t.type,r=Y.getRelativePosition(t,e);return we(n,e,r.x,r.y,t)}(e,t))})}else Me(r,n,t)},removeEventListener:function(t,e,n){var r=t.canvas;if("resize"!==e){var i=((n.$chartjs||{}).proxies||{})[t.id+"_"+e];i&&_e(r,e,i)}else Se(r)}};Y.addEvent=xe,Y.removeEvent=_e;var Ce=De._enabled?De:{acquireContext:function(t){return t&&t.canvas&&(t=t.canvas),t&&t.getContext("2d")||null}},Oe=Y.extend({initialize:function(){},acquireContext:function(){},releaseContext:function(){},addEventListener:function(){},removeEventListener:function(){}},Ce);N._set("global",{plugins:{}});var Te={_plugins:[],_cacheId:0,register:function(t){var e=this._plugins;[].concat(t).forEach((function(t){-1===e.indexOf(t)&&e.push(t)})),this._cacheId++},unregister:function(t){var e=this._plugins;[].concat(t).forEach((function(t){var n=e.indexOf(t);-1!==n&&e.splice(n,1)})),this._cacheId++},clear:function(){this._plugins=[],this._cacheId++},count:function(){return this._plugins.length},getAll:function(){return this._plugins},notify:function(t,e,n){var r,i,a,o,s,l=this.descriptors(t),u=l.length;for(r=0;r<u;++r)if("function"==typeof(s=(a=(i=l[r]).plugin)[e])&&((o=[t].concat(n||[])).push(i.options),!1===s.apply(a,o)))return!1;return!0},descriptors:function(t){var e=t.$plugins||(t.$plugins={});if(e.id===this._cacheId)return e.descriptors;var n=[],r=[],i=t&&t.config||{},a=i.options&&i.options.plugins||{};return this._plugins.concat(i.plugins||[]).forEach((function(t){if(-1===n.indexOf(t)){var e=t.id,i=a[e];!1!==i&&(!0===i&&(i=Y.clone(N.global.plugins[e])),n.push(t),r.push({plugin:t,options:i||{}}))}})),e.descriptors=r,e.id=this._cacheId,r},_invalidate:function(t){delete t.$plugins}},Pe={constructors:{},defaults:{},registerScaleType:function(t,e,n){this.constructors[t]=e,this.defaults[t]=Y.clone(n)},getScaleConstructor:function(t){return this.constructors.hasOwnProperty(t)?this.constructors[t]:void 0},getScaleDefaults:function(t){return this.defaults.hasOwnProperty(t)?Y.merge({},[N.scale,this.defaults[t]]):{}},updateScaleDefaults:function(t,e){this.defaults.hasOwnProperty(t)&&(this.defaults[t]=Y.extend(this.defaults[t],e))},addScalesToLayout:function(t){Y.each(t.scales,(function(e){e.fullWidth=e.options.fullWidth,e.position=e.options.position,e.weight=e.options.weight,pe.addBox(t,e)}))}},Ae=Y.valueOrDefault,Ie=Y.rtl.getRtlAdapter;N._set("global",{tooltips:{enabled:!0,custom:null,mode:"nearest",position:"average",intersect:!0,backgroundColor:"rgba(0,0,0,0.8)",titleFontStyle:"bold",titleSpacing:2,titleMarginBottom:6,titleFontColor:"#fff",titleAlign:"left",bodySpacing:2,bodyFontColor:"#fff",bodyAlign:"left",footerFontStyle:"bold",footerSpacing:2,footerMarginTop:6,footerFontColor:"#fff",footerAlign:"left",yPadding:6,xPadding:6,caretPadding:2,caretSize:5,cornerRadius:6,multiKeyBackground:"#fff",displayColors:!0,borderColor:"rgba(0,0,0,0)",borderWidth:0,callbacks:{beforeTitle:Y.noop,title:function(t,e){var n="",r=e.labels,i=r?r.length:0;if(t.length>0){var a=t[0];a.label?n=a.label:a.xLabel?n=a.xLabel:i>0&&a.index<i&&(n=r[a.index])}return n},afterTitle:Y.noop,beforeBody:Y.noop,beforeLabel:Y.noop,label:function(t,e){var n=e.datasets[t.datasetIndex].label||"";return n&&(n+=": "),Y.isNullOrUndef(t.value)?n+=t.yLabel:n+=t.value,n},labelColor:function(t,e){var n=e.getDatasetMeta(t.datasetIndex).data[t.index]._view;return{borderColor:n.borderColor,backgroundColor:n.backgroundColor}},labelTextColor:function(){return this._options.bodyFontColor},afterLabel:Y.noop,afterBody:Y.noop,beforeFooter:Y.noop,footer:Y.noop,afterFooter:Y.noop}}});var Fe={average:function(t){if(!t.length)return!1;var e,n,r=0,i=0,a=0;for(e=0,n=t.length;e<n;++e){var o=t[e];if(o&&o.hasValue()){var s=o.tooltipPosition();r+=s.x,i+=s.y,++a}}return{x:r/a,y:i/a}},nearest:function(t,e){var n,r,i,a=e.x,o=e.y,s=Number.POSITIVE_INFINITY;for(n=0,r=t.length;n<r;++n){var l=t[n];if(l&&l.hasValue()){var u=l.getCenterPoint(),c=Y.distanceBetweenPoints(e,u);c<s&&(s=c,i=l)}}if(i){var h=i.tooltipPosition();a=h.x,o=h.y}return{x:a,y:o}}};function Le(t,e){return e&&(Y.isArray(e)?Array.prototype.push.apply(t,e):t.push(e)),t}function Re(t){return("string"==typeof t||t instanceof String)&&t.indexOf("\n")>-1?t.split("\n"):t}function Ne(t){var e=N.global;return{xPadding:t.xPadding,yPadding:t.yPadding,xAlign:t.xAlign,yAlign:t.yAlign,rtl:t.rtl,textDirection:t.textDirection,bodyFontColor:t.bodyFontColor,_bodyFontFamily:Ae(t.bodyFontFamily,e.defaultFontFamily),_bodyFontStyle:Ae(t.bodyFontStyle,e.defaultFontStyle),_bodyAlign:t.bodyAlign,bodyFontSize:Ae(t.bodyFontSize,e.defaultFontSize),bodySpacing:t.bodySpacing,titleFontColor:t.titleFontColor,_titleFontFamily:Ae(t.titleFontFamily,e.defaultFontFamily),_titleFontStyle:Ae(t.titleFontStyle,e.defaultFontStyle),titleFontSize:Ae(t.titleFontSize,e.defaultFontSize),_titleAlign:t.titleAlign,titleSpacing:t.titleSpacing,titleMarginBottom:t.titleMarginBottom,footerFontColor:t.footerFontColor,_footerFontFamily:Ae(t.footerFontFamily,e.defaultFontFamily),_footerFontStyle:Ae(t.footerFontStyle,e.defaultFontStyle),footerFontSize:Ae(t.footerFontSize,e.defaultFontSize),_footerAlign:t.footerAlign,footerSpacing:t.footerSpacing,footerMarginTop:t.footerMarginTop,caretSize:t.caretSize,cornerRadius:t.cornerRadius,backgroundColor:t.backgroundColor,opacity:0,legendColorBackground:t.multiKeyBackground,displayColors:t.displayColors,borderColor:t.borderColor,borderWidth:t.borderWidth}}function Ee(t,e){return"center"===e?t.x+t.width/2:"right"===e?t.x+t.width-t.xPadding:t.x+t.xPadding}function je(t){return Le([],Re(t))}var ze=K.extend({initialize:function(){this._model=Ne(this._options),this._lastActive=[]},getTitle:function(){var t=this,e=t._options,n=e.callbacks,r=n.beforeTitle.apply(t,arguments),i=n.title.apply(t,arguments),a=n.afterTitle.apply(t,arguments),o=[];return o=Le(o,Re(r)),o=Le(o,Re(i)),o=Le(o,Re(a))},getBeforeBody:function(){return je(this._options.callbacks.beforeBody.apply(this,arguments))},getBody:function(t,e){var n=this,r=n._options.callbacks,i=[];return Y.each(t,(function(t){var a={before:[],lines:[],after:[]};Le(a.before,Re(r.beforeLabel.call(n,t,e))),Le(a.lines,r.label.call(n,t,e)),Le(a.after,Re(r.afterLabel.call(n,t,e))),i.push(a)})),i},getAfterBody:function(){return je(this._options.callbacks.afterBody.apply(this,arguments))},getFooter:function(){var t=this,e=t._options.callbacks,n=e.beforeFooter.apply(t,arguments),r=e.footer.apply(t,arguments),i=e.afterFooter.apply(t,arguments),a=[];return a=Le(a,Re(n)),a=Le(a,Re(r)),a=Le(a,Re(i))},update:function(t){var e,n,r,i,a,o,s,l,u,c,h=this,d=h._options,f=h._model,p=h._model=Ne(d),g=h._active,m=h._data,v={xAlign:f.xAlign,yAlign:f.yAlign},y={x:f.x,y:f.y},b={width:f.width,height:f.height},x={x:f.caretX,y:f.caretY};if(g.length){p.opacity=1;var _=[],w=[];x=Fe[d.position].call(h,g,h._eventPosition);var k=[];for(e=0,n=g.length;e<n;++e)k.push((r=g[e],i=void 0,a=void 0,o=void 0,s=void 0,l=void 0,u=void 0,c=void 0,i=r._xScale,a=r._yScale||r._scale,o=r._index,s=r._datasetIndex,l=r._chart.getDatasetMeta(s).controller,u=l._getIndexScale(),c=l._getValueScale(),{xLabel:i?i.getLabelForIndex(o,s):"",yLabel:a?a.getLabelForIndex(o,s):"",label:u?""+u.getLabelForIndex(o,s):"",value:c?""+c.getLabelForIndex(o,s):"",index:o,datasetIndex:s,x:r._model.x,y:r._model.y}));d.filter&&(k=k.filter((function(t){return d.filter(t,m)}))),d.itemSort&&(k=k.sort((function(t,e){return d.itemSort(t,e,m)}))),Y.each(k,(function(t){_.push(d.callbacks.labelColor.call(h,t,h._chart)),w.push(d.callbacks.labelTextColor.call(h,t,h._chart))})),p.title=h.getTitle(k,m),p.beforeBody=h.getBeforeBody(k,m),p.body=h.getBody(k,m),p.afterBody=h.getAfterBody(k,m),p.footer=h.getFooter(k,m),p.x=x.x,p.y=x.y,p.caretPadding=d.caretPadding,p.labelColors=_,p.labelTextColors=w,p.dataPoints=k,b=function(t,e){var n=t._chart.ctx,r=2*e.yPadding,i=0,a=e.body,o=a.reduce((function(t,e){return t+e.before.length+e.lines.length+e.after.length}),0);o+=e.beforeBody.length+e.afterBody.length;var s=e.title.length,l=e.footer.length,u=e.titleFontSize,c=e.bodyFontSize,h=e.footerFontSize;r+=s*u,r+=s?(s-1)*e.titleSpacing:0,r+=s?e.titleMarginBottom:0,r+=o*c,r+=o?(o-1)*e.bodySpacing:0,r+=l?e.footerMarginTop:0,r+=l*h,r+=l?(l-1)*e.footerSpacing:0;var d=0,f=function(t){i=Math.max(i,n.measureText(t).width+d)};return n.font=Y.fontString(u,e._titleFontStyle,e._titleFontFamily),Y.each(e.title,f),n.font=Y.fontString(c,e._bodyFontStyle,e._bodyFontFamily),Y.each(e.beforeBody.concat(e.afterBody),f),d=e.displayColors?c+2:0,Y.each(a,(function(t){Y.each(t.before,f),Y.each(t.lines,f),Y.each(t.after,f)})),d=0,n.font=Y.fontString(h,e._footerFontStyle,e._footerFontFamily),Y.each(e.footer,f),{width:i+=2*e.xPadding,height:r}}(this,p),y=function(t,e,n,r){var i=t.x,a=t.y,o=t.caretSize,s=t.caretPadding,l=t.cornerRadius,u=n.xAlign,c=n.yAlign,h=o+s,d=l+s;return"right"===u?i-=e.width:"center"===u&&((i-=e.width/2)+e.width>r.width&&(i=r.width-e.width),i<0&&(i=0)),"top"===c?a+=h:a-="bottom"===c?e.height+h:e.height/2,"center"===c?"left"===u?i+=h:"right"===u&&(i-=h):"left"===u?i-=d:"right"===u&&(i+=d),{x:i,y:a}}(p,b,v=function(t,e){var n,r,i,a,o,s=t._model,l=t._chart,u=t._chart.chartArea,c="center",h="center";s.y<e.height?h="top":s.y>l.height-e.height&&(h="bottom");var d=(u.left+u.right)/2,f=(u.top+u.bottom)/2;"center"===h?(n=function(t){return t<=d},r=function(t){return t>d}):(n=function(t){return t<=e.width/2},r=function(t){return t>=l.width-e.width/2}),i=function(t){return t+e.width+s.caretSize+s.caretPadding>l.width},a=function(t){return t-e.width-s.caretSize-s.caretPadding<0},o=function(t){return t<=f?"top":"bottom"},n(s.x)?(c="left",i(s.x)&&(c="center",h=o(s.y))):r(s.x)&&(c="right",a(s.x)&&(c="center",h=o(s.y)));var p=t._options;return{xAlign:p.xAlign?p.xAlign:c,yAlign:p.yAlign?p.yAlign:h}}(this,b),h._chart)}else p.opacity=0;return p.xAlign=v.xAlign,p.yAlign=v.yAlign,p.x=y.x,p.y=y.y,p.width=b.width,p.height=b.height,p.caretX=x.x,p.caretY=x.y,h._model=p,t&&d.custom&&d.custom.call(h,p),h},drawCaret:function(t,e){var n=this._chart.ctx,r=this._view,i=this.getCaretPosition(t,e,r);n.lineTo(i.x1,i.y1),n.lineTo(i.x2,i.y2),n.lineTo(i.x3,i.y3)},getCaretPosition:function(t,e,n){var r,i,a,o,s,l,u=n.caretSize,c=n.cornerRadius,h=n.xAlign,d=n.yAlign,f=t.x,p=t.y,g=e.width,m=e.height;if("center"===d)s=p+m/2,"left"===h?(i=(r=f)-u,a=r,o=s+u,l=s-u):(i=(r=f+g)+u,a=r,o=s-u,l=s+u);else if("left"===h?(r=(i=f+c+u)-u,a=i+u):"right"===h?(r=(i=f+g-c-u)-u,a=i+u):(r=(i=n.caretX)-u,a=i+u),"top"===d)s=(o=p)-u,l=o;else{s=(o=p+m)+u,l=o;var v=a;a=r,r=v}return{x1:r,x2:i,x3:a,y1:o,y2:s,y3:l}},drawTitle:function(t,e,n){var r,i,a,o=e.title,s=o.length;if(s){var l=Ie(e.rtl,e.x,e.width);for(t.x=Ee(e,e._titleAlign),n.textAlign=l.textAlign(e._titleAlign),n.textBaseline="middle",r=e.titleFontSize,i=e.titleSpacing,n.fillStyle=e.titleFontColor,n.font=Y.fontString(r,e._titleFontStyle,e._titleFontFamily),a=0;a<s;++a)n.fillText(o[a],l.x(t.x),t.y+r/2),t.y+=r+i,a+1===s&&(t.y+=e.titleMarginBottom-i)}},drawBody:function(t,e,n){var r,i,a,o,s,l,u,c,h=e.bodyFontSize,d=e.bodySpacing,f=e._bodyAlign,p=e.body,g=e.displayColors,m=0,v=g?Ee(e,"left"):0,y=Ie(e.rtl,e.x,e.width),b=function(e){n.fillText(e,y.x(t.x+m),t.y+h/2),t.y+=h+d},x=y.textAlign(f);for(n.textAlign=f,n.textBaseline="middle",n.font=Y.fontString(h,e._bodyFontStyle,e._bodyFontFamily),t.x=Ee(e,x),n.fillStyle=e.bodyFontColor,Y.each(e.beforeBody,b),m=g&&"right"!==x?"center"===f?h/2+1:h+2:0,s=0,u=p.length;s<u;++s){for(r=p[s],i=e.labelTextColors[s],a=e.labelColors[s],n.fillStyle=i,Y.each(r.before,b),l=0,c=(o=r.lines).length;l<c;++l){if(g){var _=y.x(v);n.fillStyle=e.legendColorBackground,n.fillRect(y.leftForLtr(_,h),t.y,h,h),n.lineWidth=1,n.strokeStyle=a.borderColor,n.strokeRect(y.leftForLtr(_,h),t.y,h,h),n.fillStyle=a.backgroundColor,n.fillRect(y.leftForLtr(y.xPlus(_,1),h-2),t.y+1,h-2,h-2),n.fillStyle=i}b(o[l])}Y.each(r.after,b)}m=0,Y.each(e.afterBody,b),t.y-=d},drawFooter:function(t,e,n){var r,i,a=e.footer,o=a.length;if(o){var s=Ie(e.rtl,e.x,e.width);for(t.x=Ee(e,e._footerAlign),t.y+=e.footerMarginTop,n.textAlign=s.textAlign(e._footerAlign),n.textBaseline="middle",r=e.footerFontSize,n.fillStyle=e.footerFontColor,n.font=Y.fontString(r,e._footerFontStyle,e._footerFontFamily),i=0;i<o;++i)n.fillText(a[i],s.x(t.x),t.y+r/2),t.y+=r+e.footerSpacing}},drawBackground:function(t,e,n,r){n.fillStyle=e.backgroundColor,n.strokeStyle=e.borderColor,n.lineWidth=e.borderWidth;var i=e.xAlign,a=e.yAlign,o=t.x,s=t.y,l=r.width,u=r.height,c=e.cornerRadius;n.beginPath(),n.moveTo(o+c,s),"top"===a&&this.drawCaret(t,r),n.lineTo(o+l-c,s),n.quadraticCurveTo(o+l,s,o+l,s+c),"center"===a&&"right"===i&&this.drawCaret(t,r),n.lineTo(o+l,s+u-c),n.quadraticCurveTo(o+l,s+u,o+l-c,s+u),"bottom"===a&&this.drawCaret(t,r),n.lineTo(o+c,s+u),n.quadraticCurveTo(o,s+u,o,s+u-c),"center"===a&&"left"===i&&this.drawCaret(t,r),n.lineTo(o,s+c),n.quadraticCurveTo(o,s,o+c,s),n.closePath(),n.fill(),e.borderWidth>0&&n.stroke()},draw:function(){var t=this._chart.ctx,e=this._view;if(0!==e.opacity){var n={width:e.width,height:e.height},r={x:e.x,y:e.y},i=Math.abs(e.opacity<.001)?0:e.opacity,a=e.title.length||e.beforeBody.length||e.body.length||e.afterBody.length||e.footer.length;this._options.enabled&&a&&(t.save(),t.globalAlpha=i,this.drawBackground(r,e,t,n),r.y+=e.yPadding,Y.rtl.overrideTextDirection(t,e.textDirection),this.drawTitle(r,e,t),this.drawBody(r,e,t),this.drawFooter(r,e,t),Y.rtl.restoreTextDirection(t,e.textDirection),t.restore())}},handleEvent:function(t){var e,n=this,r=n._options;return n._lastActive=n._lastActive||[],"mouseout"===t.type?n._active=[]:(n._active=n._chart.getElementsAtEventForMode(t,r.mode,r),r.reverse&&n._active.reverse()),(e=!Y.arrayEquals(n._active,n._lastActive))&&(n._lastActive=n._active,(r.enabled||r.custom)&&(n._eventPosition={x:t.x,y:t.y},n.update(!0),n.pivot())),e}}),We=Fe,Ye=ze;Ye.positioners=We;var Ve=Y.valueOrDefault;function Be(){return Y.merge({},[].slice.call(arguments),{merger:function(t,e,n,r){if("xAxes"===t||"yAxes"===t){var i,a,o,s=n[t].length;for(e[t]||(e[t]=[]),i=0;i<s;++i)o=n[t][i],a=Ve(o.type,"xAxes"===t?"category":"linear"),i>=e[t].length&&e[t].push({}),!e[t][i].type||o.type&&o.type!==e[t][i].type?Y.merge(e[t][i],[Pe.getScaleDefaults(a),o]):Y.merge(e[t][i],o)}else Y._merger(t,e,n,r)}})}function He(){return Y.merge({},[].slice.call(arguments),{merger:function(t,e,n,r){var i=e[t]||{},a=n[t];"scales"===t?e[t]=Be(i,a):"scale"===t?e[t]=Y.merge(i,[Pe.getScaleDefaults(a.type),a]):Y._merger(t,e,n,r)}})}function Ue(t){var e=t.options;Y.each(t.scales,(function(e){pe.removeBox(t,e)})),e=He(N.global,N[t.config.type],e),t.options=t.config.options=e,t.ensureScalesHaveIDs(),t.buildOrUpdateScales(),t.tooltip._options=e.tooltips,t.tooltip.initialize()}function Ge(t,e,n){var r,i=function(t){return t.id===r};do{r=e+n++}while(Y.findIndex(t,i)>=0);return r}function qe(t){return"top"===t||"bottom"===t}function Ke(t,e){return function(n,r){return n[t]===r[t]?n[e]-r[e]:n[t]-r[t]}}N._set("global",{elements:{},events:["mousemove","mouseout","click","touchstart","touchmove"],hover:{onHover:null,mode:"nearest",intersect:!0,animationDuration:400},onClick:null,maintainAspectRatio:!0,responsive:!0,responsiveAnimationDuration:0});var Ze=function(t,e){return this.construct(t,e),this};Y.extend(Ze.prototype,{construct:function(t,e){var n=this;e=function(t){var e=(t=t||{}).data=t.data||{};return e.datasets=e.datasets||[],e.labels=e.labels||[],t.options=He(N.global,N[t.type],t.options||{}),t}(e);var r=Oe.acquireContext(t,e),i=r&&r.canvas,a=i&&i.height,o=i&&i.width;n.id=Y.uid(),n.ctx=r,n.canvas=i,n.config=e,n.width=o,n.height=a,n.aspectRatio=a?o/a:null,n.options=e.options,n._bufferedRender=!1,n._layers=[],n.chart=n,n.controller=n,Ze.instances[n.id]=n,Object.defineProperty(n,"data",{get:function(){return n.config.data},set:function(t){n.config.data=t}}),r&&i?(n.initialize(),n.update()):console.error("Failed to create chart: can't acquire context from the given item")},initialize:function(){var t=this;return Te.notify(t,"beforeInit"),Y.retinaScale(t,t.options.devicePixelRatio),t.bindEvents(),t.options.responsive&&t.resize(!0),t.initToolTip(),Te.notify(t,"afterInit"),t},clear:function(){return Y.canvas.clear(this),this},stop:function(){return J.cancelAnimation(this),this},resize:function(t){var e=this,n=e.options,r=e.canvas,i=n.maintainAspectRatio&&e.aspectRatio||null,a=Math.max(0,Math.floor(Y.getMaximumWidth(r))),o=Math.max(0,Math.floor(i?a/i:Y.getMaximumHeight(r)));if((e.width!==a||e.height!==o)&&(r.width=e.width=a,r.height=e.height=o,r.style.width=a+"px",r.style.height=o+"px",Y.retinaScale(e,n.devicePixelRatio),!t)){var s={width:a,height:o};Te.notify(e,"resize",[s]),n.onResize&&n.onResize(e,s),e.stop(),e.update({duration:n.responsiveAnimationDuration})}},ensureScalesHaveIDs:function(){var t=this.options,e=t.scales||{},n=t.scale;Y.each(e.xAxes,(function(t,n){t.id||(t.id=Ge(e.xAxes,"x-axis-",n))})),Y.each(e.yAxes,(function(t,n){t.id||(t.id=Ge(e.yAxes,"y-axis-",n))})),n&&(n.id=n.id||"scale")},buildOrUpdateScales:function(){var t=this,e=t.options,n=t.scales||{},r=[],i=Object.keys(n).reduce((function(t,e){return t[e]=!1,t}),{});e.scales&&(r=r.concat((e.scales.xAxes||[]).map((function(t){return{options:t,dtype:"category",dposition:"bottom"}})),(e.scales.yAxes||[]).map((function(t){return{options:t,dtype:"linear",dposition:"left"}})))),e.scale&&r.push({options:e.scale,dtype:"radialLinear",isDefault:!0,dposition:"chartArea"}),Y.each(r,(function(e){var r=e.options,a=r.id,o=Ve(r.type,e.dtype);qe(r.position)!==qe(e.dposition)&&(r.position=e.dposition),i[a]=!0;var s=null;if(a in n&&n[a].type===o)(s=n[a]).options=r,s.ctx=t.ctx,s.chart=t;else{var l=Pe.getScaleConstructor(o);if(!l)return;s=new l({id:a,type:o,options:r,ctx:t.ctx,chart:t}),n[s.id]=s}s.mergeTicksOptions(),e.isDefault&&(t.scale=s)})),Y.each(i,(function(t,e){t||delete n[e]})),t.scales=n,Pe.addScalesToLayout(this)},buildOrUpdateControllers:function(){var t,e,n=this,r=[],i=n.data.datasets;for(t=0,e=i.length;t<e;t++){var a=i[t],o=n.getDatasetMeta(t),s=a.type||n.config.type;if(o.type&&o.type!==s&&(n.destroyDatasetMeta(t),o=n.getDatasetMeta(t)),o.type=s,o.order=a.order||0,o.index=t,o.controller)o.controller.updateIndex(t),o.controller.linkScales();else{var l=Jt[o.type];if(void 0===l)throw new Error('"'+o.type+'" is not a chart type.');o.controller=new l(n,t),r.push(o.controller)}}return r},resetElements:function(){var t=this;Y.each(t.data.datasets,(function(e,n){t.getDatasetMeta(n).controller.reset()}),t)},reset:function(){this.resetElements(),this.tooltip.initialize()},update:function(t){var e,n,r=this;if(t&&"object"==typeof t||(t={duration:t,lazy:arguments[1]}),Ue(r),Te._invalidate(r),!1!==Te.notify(r,"beforeUpdate")){r.tooltip._data=r.data;var i=r.buildOrUpdateControllers();for(e=0,n=r.data.datasets.length;e<n;e++)r.getDatasetMeta(e).controller.buildOrUpdateElements();r.updateLayout(),r.options.animation&&r.options.animation.duration&&Y.each(i,(function(t){t.reset()})),r.updateDatasets(),r.tooltip.initialize(),r.lastActive=[],Te.notify(r,"afterUpdate"),r._layers.sort(Ke("z","_idx")),r._bufferedRender?r._bufferedRequest={duration:t.duration,easing:t.easing,lazy:t.lazy}:r.render(t)}},updateLayout:function(){var t=this;!1!==Te.notify(t,"beforeLayout")&&(pe.update(this,this.width,this.height),t._layers=[],Y.each(t.boxes,(function(e){e._configure&&e._configure(),t._layers.push.apply(t._layers,e._layers())}),t),t._layers.forEach((function(t,e){t._idx=e})),Te.notify(t,"afterScaleUpdate"),Te.notify(t,"afterLayout"))},updateDatasets:function(){if(!1!==Te.notify(this,"beforeDatasetsUpdate")){for(var t=0,e=this.data.datasets.length;t<e;++t)this.updateDataset(t);Te.notify(this,"afterDatasetsUpdate")}},updateDataset:function(t){var e=this.getDatasetMeta(t),n={meta:e,index:t};!1!==Te.notify(this,"beforeDatasetUpdate",[n])&&(e.controller._update(),Te.notify(this,"afterDatasetUpdate",[n]))},render:function(t){var e=this;t&&"object"==typeof t||(t={duration:t,lazy:arguments[1]});var n=e.options.animation,r=Ve(t.duration,n&&n.duration),i=t.lazy;if(!1!==Te.notify(e,"beforeRender")){var a=function(t){Te.notify(e,"afterRender"),Y.callback(n&&n.onComplete,[t],e)};if(n&&r){var o=new X({numSteps:r/16.66,easing:t.easing||n.easing,render:function(t,e){var n=Y.easing.effects[e.easing],r=e.currentStep,i=r/e.numSteps;t.draw(n(i),i,r)},onAnimationProgress:n.onProgress,onAnimationComplete:a});J.addAnimation(e,o,r,i)}else e.draw(),a(new X({numSteps:0,chart:e}));return e}},draw:function(t){var e,n,r=this;if(r.clear(),Y.isNullOrUndef(t)&&(t=1),r.transition(t),!(r.width<=0||r.height<=0)&&!1!==Te.notify(r,"beforeDraw",[t])){for(n=r._layers,e=0;e<n.length&&n[e].z<=0;++e)n[e].draw(r.chartArea);for(r.drawDatasets(t);e<n.length;++e)n[e].draw(r.chartArea);r._drawTooltip(t),Te.notify(r,"afterDraw",[t])}},transition:function(t){for(var e=0,n=(this.data.datasets||[]).length;e<n;++e)this.isDatasetVisible(e)&&this.getDatasetMeta(e).controller.transition(t);this.tooltip.transition(t)},_getSortedDatasetMetas:function(t){var e,n,r=[];for(e=0,n=(this.data.datasets||[]).length;e<n;++e)t&&!this.isDatasetVisible(e)||r.push(this.getDatasetMeta(e));return r.sort(Ke("order","index")),r},_getSortedVisibleDatasetMetas:function(){return this._getSortedDatasetMetas(!0)},drawDatasets:function(t){var e,n;if(!1!==Te.notify(this,"beforeDatasetsDraw",[t])){for(n=(e=this._getSortedVisibleDatasetMetas()).length-1;n>=0;--n)this.drawDataset(e[n],t);Te.notify(this,"afterDatasetsDraw",[t])}},drawDataset:function(t,e){var n={meta:t,index:t.index,easingValue:e};!1!==Te.notify(this,"beforeDatasetDraw",[n])&&(t.controller.draw(e),Te.notify(this,"afterDatasetDraw",[n]))},_drawTooltip:function(t){var e=this.tooltip,n={tooltip:e,easingValue:t};!1!==Te.notify(this,"beforeTooltipDraw",[n])&&(e.draw(),Te.notify(this,"afterTooltipDraw",[n]))},getElementAtEvent:function(t){return ie.modes.single(this,t)},getElementsAtEvent:function(t){return ie.modes.label(this,t,{intersect:!0})},getElementsAtXAxis:function(t){return ie.modes["x-axis"](this,t,{intersect:!0})},getElementsAtEventForMode:function(t,e,n){var r=ie.modes[e];return"function"==typeof r?r(this,t,n):[]},getDatasetAtEvent:function(t){return ie.modes.dataset(this,t,{intersect:!0})},getDatasetMeta:function(t){var e=this.data.datasets[t];e._meta||(e._meta={});var n=e._meta[this.id];return n||(n=e._meta[this.id]={type:null,data:[],dataset:null,controller:null,hidden:null,xAxisID:null,yAxisID:null,order:e.order||0,index:t}),n},getVisibleDatasetCount:function(){for(var t=0,e=0,n=this.data.datasets.length;e<n;++e)this.isDatasetVisible(e)&&t++;return t},isDatasetVisible:function(t){var e=this.getDatasetMeta(t);return"boolean"==typeof e.hidden?!e.hidden:!this.data.datasets[t].hidden},generateLegend:function(){return this.options.legendCallback(this)},destroyDatasetMeta:function(t){var e=this.id,n=this.data.datasets[t],r=n._meta&&n._meta[e];r&&(r.controller.destroy(),delete n._meta[e])},destroy:function(){var t,e,n=this,r=n.canvas;for(n.stop(),t=0,e=n.data.datasets.length;t<e;++t)n.destroyDatasetMeta(t);r&&(n.unbindEvents(),Y.canvas.clear(n),Oe.releaseContext(n.ctx),n.canvas=null,n.ctx=null),Te.notify(n,"destroy"),delete Ze.instances[n.id]},toBase64Image:function(){return this.canvas.toDataURL.apply(this.canvas,arguments)},initToolTip:function(){var t=this;t.tooltip=new Ye({_chart:t,_chartInstance:t,_data:t.data,_options:t.options.tooltips},t)},bindEvents:function(){var t=this,e=t._listeners={},n=function(){t.eventHandler.apply(t,arguments)};Y.each(t.options.events,(function(r){Oe.addEventListener(t,r,n),e[r]=n})),t.options.responsive&&(n=function(){t.resize()},Oe.addEventListener(t,"resize",n),e.resize=n)},unbindEvents:function(){var t=this,e=t._listeners;e&&(delete t._listeners,Y.each(e,(function(e,n){Oe.removeEventListener(t,n,e)})))},updateHoverStyle:function(t,e,n){var r,i,a,o=n?"set":"remove";for(i=0,a=t.length;i<a;++i)(r=t[i])&&this.getDatasetMeta(r._datasetIndex).controller[o+"HoverStyle"](r);"dataset"===e&&this.getDatasetMeta(t[0]._datasetIndex).controller["_"+o+"DatasetHoverStyle"]()},eventHandler:function(t){var e=this,n=e.tooltip;if(!1!==Te.notify(e,"beforeEvent",[t])){e._bufferedRender=!0,e._bufferedRequest=null;var r=e.handleEvent(t);n&&(r=n._start?n.handleEvent(t):r|n.handleEvent(t)),Te.notify(e,"afterEvent",[t]);var i=e._bufferedRequest;return i?e.render(i):r&&!e.animating&&(e.stop(),e.render({duration:e.options.hover.animationDuration,lazy:!0})),e._bufferedRender=!1,e._bufferedRequest=null,e}},handleEvent:function(t){var e,n=this,r=n.options||{},i=r.hover;return n.lastActive=n.lastActive||[],"mouseout"===t.type?n.active=[]:n.active=n.getElementsAtEventForMode(t,i.mode,i),Y.callback(r.onHover||r.hover.onHover,[t.native,n.active],n),"mouseup"!==t.type&&"click"!==t.type||r.onClick&&r.onClick.call(n,t.native,n.active),n.lastActive.length&&n.updateHoverStyle(n.lastActive,i.mode,!1),n.active.length&&i.mode&&n.updateHoverStyle(n.active,i.mode,!0),e=!Y.arrayEquals(n.active,n.lastActive),n.lastActive=n.active,e}}),Ze.instances={};var Xe=Ze;function Je(){throw new Error("This method is not implemented: either no adapter can be found or an incomplete integration was provided.")}function $e(t){this.options=t||{}}Ze.Controller=Ze,Ze.types={},Y.configMerge=He,Y.scaleMerge=Be,Y.extend($e.prototype,{formats:Je,parse:Je,format:Je,add:Je,diff:Je,startOf:Je,endOf:Je,_create:function(t){return t}}),$e.override=function(t){Y.extend($e.prototype,t)};var Qe={_date:$e},tn={formatters:{values:function(t){return Y.isArray(t)?t:""+t},linear:function(t,e,n){var r=n.length>3?n[2]-n[1]:n[1]-n[0];Math.abs(r)>1&&t!==Math.floor(t)&&(r=t-Math.floor(t));var i=Y.log10(Math.abs(r)),a="";if(0!==t)if(Math.max(Math.abs(n[0]),Math.abs(n[n.length-1]))<1e-4){var o=Y.log10(Math.abs(t)),s=Math.floor(o)-Math.floor(i);s=Math.max(Math.min(s,20),0),a=t.toExponential(s)}else{var l=-1*Math.floor(i);l=Math.max(Math.min(l,20),0),a=t.toFixed(l)}else a="0";return a},logarithmic:function(t,e,n){var r=t/Math.pow(10,Math.floor(Y.log10(t)));return 0===t?"0":1===r||2===r||5===r||0===e||e===n.length-1?t.toExponential():""}}},en=Y.isArray,nn=Y.isNullOrUndef,rn=Y.valueOrDefault,an=Y.valueAtIndexOrDefault;function on(t,e,n){var r,i=t.getTicks().length,a=Math.min(e,i-1),o=t.getPixelForTick(a),s=t._startPixel,l=t._endPixel;if(!(n&&(r=1===i?Math.max(o-s,l-o):0===e?(t.getPixelForTick(1)-o)/2:(o-t.getPixelForTick(a-1))/2,(o+=a<e?r:-r)<s-1e-6||o>l+1e-6)))return o}function sn(t,e,n,r){var i,a,o,s,l,u,c,h,d,f,p,g,m,v=n.length,y=[],b=[],x=[];for(i=0;i<v;++i){if(s=n[i].label,l=n[i].major?e.major:e.minor,t.font=u=l.string,c=r[u]=r[u]||{data:{},gc:[]},h=l.lineHeight,d=f=0,nn(s)||en(s)){if(en(s))for(a=0,o=s.length;a<o;++a)p=s[a],nn(p)||en(p)||(d=Y.measureText(t,c.data,c.gc,d,p),f+=h)}else d=Y.measureText(t,c.data,c.gc,d,s),f=h;y.push(d),b.push(f),x.push(h/2)}function _(t){return{width:y[t]||0,height:b[t]||0,offset:x[t]||0}}return function(t,e){Y.each(t,(function(t){var n,r=t.gc,i=r.length/2;if(i>e){for(n=0;n<i;++n)delete t.data[r[n]];r.splice(0,i)}}))}(r,v),g=y.indexOf(Math.max.apply(null,y)),m=b.indexOf(Math.max.apply(null,b)),{first:_(0),last:_(v-1),widest:_(g),highest:_(m)}}function ln(t){return t.drawTicks?t.tickMarkLength:0}function un(t){var e,n;return t.display?(e=Y.options._parseFont(t),n=Y.options.toPadding(t.padding),e.lineHeight+n.height):0}function cn(t,e){return Y.extend(Y.options._parseFont({fontFamily:rn(e.fontFamily,t.fontFamily),fontSize:rn(e.fontSize,t.fontSize),fontStyle:rn(e.fontStyle,t.fontStyle),lineHeight:rn(e.lineHeight,t.lineHeight)}),{color:Y.options.resolve([e.fontColor,t.fontColor,N.global.defaultFontColor])})}function hn(t){var e=cn(t,t.minor);return{minor:e,major:t.major.enabled?cn(t,t.major):e}}function dn(t){var e,n,r,i=[];for(n=0,r=t.length;n<r;++n)void 0!==(e=t[n])._index&&i.push(e);return i}function fn(t,e,n,r){var i,a,o,s,l=rn(n,0),u=Math.min(rn(r,t.length),t.length),c=0;for(e=Math.ceil(e),r&&(e=(i=r-n)/Math.floor(i/e)),s=l;s<0;)c++,s=Math.round(l+c*e);for(a=Math.max(l,0);a<u;a++)o=t[a],a===s?(o._index=a,c++,s=Math.round(l+c*e)):delete o.label}N._set("scale",{display:!0,position:"left",offset:!1,gridLines:{display:!0,color:"rgba(0,0,0,0.1)",lineWidth:1,drawBorder:!0,drawOnChartArea:!0,drawTicks:!0,tickMarkLength:10,zeroLineWidth:1,zeroLineColor:"rgba(0,0,0,0.25)",zeroLineBorderDash:[],zeroLineBorderDashOffset:0,offsetGridLines:!1,borderDash:[],borderDashOffset:0},scaleLabel:{display:!1,labelString:"",padding:{top:4,bottom:4}},ticks:{beginAtZero:!1,minRotation:0,maxRotation:50,mirror:!1,padding:0,reverse:!1,display:!0,autoSkip:!0,autoSkipPadding:0,labelOffset:0,callback:tn.formatters.values,minor:{},major:{}}});var pn=K.extend({zeroLineIndex:0,getPadding:function(){return{left:this.paddingLeft||0,top:this.paddingTop||0,right:this.paddingRight||0,bottom:this.paddingBottom||0}},getTicks:function(){return this._ticks},_getLabels:function(){var t=this.chart.data;return this.options.labels||(this.isHorizontal()?t.xLabels:t.yLabels)||t.labels||[]},mergeTicksOptions:function(){},beforeUpdate:function(){Y.callback(this.options.beforeUpdate,[this])},update:function(t,e,n){var r,i,a,o,s,l=this,u=l.options.ticks,c=u.sampleSize;if(l.beforeUpdate(),l.maxWidth=t,l.maxHeight=e,l.margins=Y.extend({left:0,right:0,top:0,bottom:0},n),l._ticks=null,l.ticks=null,l._labelSizes=null,l._maxLabelLines=0,l.longestLabelWidth=0,l.longestTextCache=l.longestTextCache||{},l._gridLineItems=null,l._labelItems=null,l.beforeSetDimensions(),l.setDimensions(),l.afterSetDimensions(),l.beforeDataLimits(),l.determineDataLimits(),l.afterDataLimits(),l.beforeBuildTicks(),o=l.buildTicks()||[],(!(o=l.afterBuildTicks(o)||o)||!o.length)&&l.ticks)for(o=[],r=0,i=l.ticks.length;r<i;++r)o.push({value:l.ticks[r],major:!1});return l._ticks=o,s=c<o.length,a=l._convertTicksToLabels(s?function(t,e){for(var n=[],r=t.length/e,i=0,a=t.length;i<a;i+=r)n.push(t[Math.floor(i)]);return n}(o,c):o),l._configure(),l.beforeCalculateTickRotation(),l.calculateTickRotation(),l.afterCalculateTickRotation(),l.beforeFit(),l.fit(),l.afterFit(),l._ticksToDraw=u.display&&(u.autoSkip||"auto"===u.source)?l._autoSkip(o):o,s&&(a=l._convertTicksToLabels(l._ticksToDraw)),l.ticks=a,l.afterUpdate(),l.minSize},_configure:function(){var t,e,n=this,r=n.options.ticks.reverse;n.isHorizontal()?(t=n.left,e=n.right):(t=n.top,e=n.bottom,r=!r),n._startPixel=t,n._endPixel=e,n._reversePixels=r,n._length=e-t},afterUpdate:function(){Y.callback(this.options.afterUpdate,[this])},beforeSetDimensions:function(){Y.callback(this.options.beforeSetDimensions,[this])},setDimensions:function(){var t=this;t.isHorizontal()?(t.width=t.maxWidth,t.left=0,t.right=t.width):(t.height=t.maxHeight,t.top=0,t.bottom=t.height),t.paddingLeft=0,t.paddingTop=0,t.paddingRight=0,t.paddingBottom=0},afterSetDimensions:function(){Y.callback(this.options.afterSetDimensions,[this])},beforeDataLimits:function(){Y.callback(this.options.beforeDataLimits,[this])},determineDataLimits:Y.noop,afterDataLimits:function(){Y.callback(this.options.afterDataLimits,[this])},beforeBuildTicks:function(){Y.callback(this.options.beforeBuildTicks,[this])},buildTicks:Y.noop,afterBuildTicks:function(t){var e=this;return en(t)&&t.length?Y.callback(e.options.afterBuildTicks,[e,t]):(e.ticks=Y.callback(e.options.afterBuildTicks,[e,e.ticks])||e.ticks,t)},beforeTickToLabelConversion:function(){Y.callback(this.options.beforeTickToLabelConversion,[this])},convertTicksToLabels:function(){var t=this.options.ticks;this.ticks=this.ticks.map(t.userCallback||t.callback,this)},afterTickToLabelConversion:function(){Y.callback(this.options.afterTickToLabelConversion,[this])},beforeCalculateTickRotation:function(){Y.callback(this.options.beforeCalculateTickRotation,[this])},calculateTickRotation:function(){var t,e,n,r,i,a,o,s=this,l=s.options,u=l.ticks,c=s.getTicks().length,h=u.minRotation||0,d=u.maxRotation,f=h;!s._isVisible()||!u.display||h>=d||c<=1||!s.isHorizontal()?s.labelRotation=h:(e=(t=s._getLabelSizes()).widest.width,n=t.highest.height-t.highest.offset,r=Math.min(s.maxWidth,s.chart.width-e),e+6>(i=l.offset?s.maxWidth/c:r/(c-1))&&(i=r/(c-(l.offset?.5:1)),a=s.maxHeight-ln(l.gridLines)-u.padding-un(l.scaleLabel),o=Math.sqrt(e*e+n*n),f=Y.toDegrees(Math.min(Math.asin(Math.min((t.highest.height+6)/i,1)),Math.asin(Math.min(a/o,1))-Math.asin(n/o))),f=Math.max(h,Math.min(d,f))),s.labelRotation=f)},afterCalculateTickRotation:function(){Y.callback(this.options.afterCalculateTickRotation,[this])},beforeFit:function(){Y.callback(this.options.beforeFit,[this])},fit:function(){var t=this,e=t.minSize={width:0,height:0},n=t.chart,r=t.options,i=r.ticks,a=r.scaleLabel,o=r.gridLines,s=t._isVisible(),l="bottom"===r.position,u=t.isHorizontal();if(u?e.width=t.maxWidth:s&&(e.width=ln(o)+un(a)),u?s&&(e.height=ln(o)+un(a)):e.height=t.maxHeight,i.display&&s){var c=hn(i),h=t._getLabelSizes(),d=h.first,f=h.last,p=h.widest,g=h.highest,m=.4*c.minor.lineHeight,v=i.padding;if(u){var y=0!==t.labelRotation,b=Y.toRadians(t.labelRotation),x=Math.cos(b),_=Math.sin(b),w=_*p.width+x*(g.height-(y?g.offset:0))+(y?0:m);e.height=Math.min(t.maxHeight,e.height+w+v);var k,M,S=t.getPixelForTick(0)-t.left,D=t.right-t.getPixelForTick(t.getTicks().length-1);y?(k=l?x*d.width+_*d.offset:_*(d.height-d.offset),M=l?_*(f.height-f.offset):x*f.width+_*f.offset):(k=d.width/2,M=f.width/2),t.paddingLeft=Math.max((k-S)*t.width/(t.width-S),0)+3,t.paddingRight=Math.max((M-D)*t.width/(t.width-D),0)+3}else{var C=i.mirror?0:p.width+v+m;e.width=Math.min(t.maxWidth,e.width+C),t.paddingTop=d.height/2,t.paddingBottom=f.height/2}}t.handleMargins(),u?(t.width=t._length=n.width-t.margins.left-t.margins.right,t.height=e.height):(t.width=e.width,t.height=t._length=n.height-t.margins.top-t.margins.bottom)},handleMargins:function(){var t=this;t.margins&&(t.margins.left=Math.max(t.paddingLeft,t.margins.left),t.margins.top=Math.max(t.paddingTop,t.margins.top),t.margins.right=Math.max(t.paddingRight,t.margins.right),t.margins.bottom=Math.max(t.paddingBottom,t.margins.bottom))},afterFit:function(){Y.callback(this.options.afterFit,[this])},isHorizontal:function(){var t=this.options.position;return"top"===t||"bottom"===t},isFullWidth:function(){return this.options.fullWidth},getRightValue:function(t){if(nn(t))return NaN;if(("number"==typeof t||t instanceof Number)&&!isFinite(t))return NaN;if(t)if(this.isHorizontal()){if(void 0!==t.x)return this.getRightValue(t.x)}else if(void 0!==t.y)return this.getRightValue(t.y);return t},_convertTicksToLabels:function(t){var e,n,r,i=this;for(i.ticks=t.map((function(t){return t.value})),i.beforeTickToLabelConversion(),e=i.convertTicksToLabels(t)||i.ticks,i.afterTickToLabelConversion(),n=0,r=t.length;n<r;++n)t[n].label=e[n];return e},_getLabelSizes:function(){var t=this,e=t._labelSizes;return e||(t._labelSizes=e=sn(t.ctx,hn(t.options.ticks),t.getTicks(),t.longestTextCache),t.longestLabelWidth=e.widest.width),e},_parseValue:function(t){var e,n,r,i;return en(t)?(e=+this.getRightValue(t[0]),n=+this.getRightValue(t[1]),r=Math.min(e,n),i=Math.max(e,n)):(e=void 0,n=t=+this.getRightValue(t),r=t,i=t),{min:r,max:i,start:e,end:n}},_getScaleLabel:function(t){var e=this._parseValue(t);return void 0!==e.start?"["+e.start+", "+e.end+"]":+this.getRightValue(t)},getLabelForIndex:Y.noop,getPixelForValue:Y.noop,getValueForPixel:Y.noop,getPixelForTick:function(t){var e=this.options.offset,n=this._ticks.length,r=1/Math.max(n-(e?0:1),1);return t<0||t>n-1?null:this.getPixelForDecimal(t*r+(e?r/2:0))},getPixelForDecimal:function(t){return this._reversePixels&&(t=1-t),this._startPixel+t*this._length},getDecimalForPixel:function(t){var e=(t-this._startPixel)/this._length;return this._reversePixels?1-e:e},getBasePixel:function(){return this.getPixelForValue(this.getBaseValue())},getBaseValue:function(){var t=this.min,e=this.max;return this.beginAtZero?0:t<0&&e<0?e:t>0&&e>0?t:0},_autoSkip:function(t){var e,n,r,i,a=this.options.ticks,o=this._length,s=a.maxTicksLimit||o/this._tickSize()+1,l=a.major.enabled?function(t){var e,n,r=[];for(e=0,n=t.length;e<n;e++)t[e].major&&r.push(e);return r}(t):[],u=l.length,c=l[0],h=l[u-1];if(u>s)return function(t,e,n){var r,i,a=0,o=e[0];for(n=Math.ceil(n),r=0;r<t.length;r++)i=t[r],r===o?(i._index=r,o=e[++a*n]):delete i.label}(t,l,u/s),dn(t);if(r=function(t,e,n,r){var i,a,o,s,l=function(t){var e,n,r=t.length;if(r<2)return!1;for(n=t[0],e=1;e<r;++e)if(t[e]-t[e-1]!==n)return!1;return n}(t),u=(e.length-1)/r;if(!l)return Math.max(u,1);for(o=0,s=(i=Y.math._factorize(l)).length-1;o<s;o++)if((a=i[o])>u)return a;return Math.max(u,1)}(l,t,0,s),u>0){for(e=0,n=u-1;e<n;e++)fn(t,r,l[e],l[e+1]);return i=u>1?(h-c)/(u-1):null,fn(t,r,Y.isNullOrUndef(i)?0:c-i,c),fn(t,r,h,Y.isNullOrUndef(i)?t.length:h+i),dn(t)}return fn(t,r),dn(t)},_tickSize:function(){var t=this.options.ticks,e=Y.toRadians(this.labelRotation),n=Math.abs(Math.cos(e)),r=Math.abs(Math.sin(e)),i=this._getLabelSizes(),a=t.autoSkipPadding||0,o=i?i.widest.width+a:0,s=i?i.highest.height+a:0;return this.isHorizontal()?s*n>o*r?o/n:s/r:s*r<o*n?s/n:o/r},_isVisible:function(){var t,e,n,r=this.chart,i=this.options.display;if("auto"!==i)return!!i;for(t=0,e=r.data.datasets.length;t<e;++t)if(r.isDatasetVisible(t)&&((n=r.getDatasetMeta(t)).xAxisID===this.id||n.yAxisID===this.id))return!0;return!1},_computeGridLineItems:function(t){var e,n,r,i,a,o,s,l,u,c,h,d,f,p,g,m,v,y=this,b=y.chart,x=y.options,_=x.gridLines,w=x.position,k=_.offsetGridLines,M=y.isHorizontal(),S=y._ticksToDraw,D=S.length+(k?1:0),C=ln(_),O=[],T=_.drawBorder?an(_.lineWidth,0,0):0,P=T/2,A=Y._alignPixel,I=function(t){return A(b,t,T)};for("top"===w?(e=I(y.bottom),s=y.bottom-C,u=e-P,h=I(t.top)+P,f=t.bottom):"bottom"===w?(e=I(y.top),h=t.top,f=I(t.bottom)-P,s=e+P,u=y.top+C):"left"===w?(e=I(y.right),o=y.right-C,l=e-P,c=I(t.left)+P,d=t.right):(e=I(y.left),c=t.left,d=I(t.right)-P,o=e+P,l=y.left+C),n=0;n<D;++n)r=S[n]||{},nn(r.label)&&n<S.length||(n===y.zeroLineIndex&&x.offset===k?(p=_.zeroLineWidth,g=_.zeroLineColor,m=_.zeroLineBorderDash||[],v=_.zeroLineBorderDashOffset||0):(p=an(_.lineWidth,n,1),g=an(_.color,n,"rgba(0,0,0,0.1)"),m=_.borderDash||[],v=_.borderDashOffset||0),void 0!==(i=on(y,r._index||n,k))&&(a=A(b,i,p),M?o=l=c=d=a:s=u=h=f=a,O.push({tx1:o,ty1:s,tx2:l,ty2:u,x1:c,y1:h,x2:d,y2:f,width:p,color:g,borderDash:m,borderDashOffset:v})));return O.ticksLength=D,O.borderValue=e,O},_computeLabelItems:function(){var t,e,n,r,i,a,o,s,l,u,c,h,d=this,f=d.options,p=f.ticks,g=f.position,m=p.mirror,v=d.isHorizontal(),y=d._ticksToDraw,b=hn(p),x=p.padding,_=ln(f.gridLines),w=-Y.toRadians(d.labelRotation),k=[];for("top"===g?(a=d.bottom-_-x,o=w?"left":"center"):"bottom"===g?(a=d.top+_+x,o=w?"right":"center"):"left"===g?(i=d.right-(m?0:_)-x,o=m?"left":"right"):(i=d.left+(m?0:_)+x,o=m?"right":"left"),t=0,e=y.length;t<e;++t)r=(n=y[t]).label,nn(r)||(s=d.getPixelForTick(n._index||t)+p.labelOffset,u=(l=n.major?b.major:b.minor).lineHeight,c=en(r)?r.length:1,v?(i=s,h="top"===g?((w?1:.5)-c)*u:(w?0:.5)*u):(a=s,h=(1-c)*u/2),k.push({x:i,y:a,rotation:w,label:r,font:l,textOffset:h,textAlign:o}));return k},_drawGrid:function(t){var e=this,n=e.options.gridLines;if(n.display){var r,i,a,o,s,l=e.ctx,u=e.chart,c=Y._alignPixel,h=n.drawBorder?an(n.lineWidth,0,0):0,d=e._gridLineItems||(e._gridLineItems=e._computeGridLineItems(t));for(a=0,o=d.length;a<o;++a)r=(s=d[a]).width,i=s.color,r&&i&&(l.save(),l.lineWidth=r,l.strokeStyle=i,l.setLineDash&&(l.setLineDash(s.borderDash),l.lineDashOffset=s.borderDashOffset),l.beginPath(),n.drawTicks&&(l.moveTo(s.tx1,s.ty1),l.lineTo(s.tx2,s.ty2)),n.drawOnChartArea&&(l.moveTo(s.x1,s.y1),l.lineTo(s.x2,s.y2)),l.stroke(),l.restore());if(h){var f,p,g,m,v=h,y=an(n.lineWidth,d.ticksLength-1,1),b=d.borderValue;e.isHorizontal()?(f=c(u,e.left,v)-v/2,p=c(u,e.right,y)+y/2,g=m=b):(g=c(u,e.top,v)-v/2,m=c(u,e.bottom,y)+y/2,f=p=b),l.lineWidth=h,l.strokeStyle=an(n.color,0),l.beginPath(),l.moveTo(f,g),l.lineTo(p,m),l.stroke()}}},_drawLabels:function(){var t=this;if(t.options.ticks.display){var e,n,r,i,a,o,s,l,u=t.ctx,c=t._labelItems||(t._labelItems=t._computeLabelItems());for(e=0,r=c.length;e<r;++e){if(o=(a=c[e]).font,u.save(),u.translate(a.x,a.y),u.rotate(a.rotation),u.font=o.string,u.fillStyle=o.color,u.textBaseline="middle",u.textAlign=a.textAlign,s=a.label,l=a.textOffset,en(s))for(n=0,i=s.length;n<i;++n)u.fillText(""+s[n],0,l),l+=o.lineHeight;else u.fillText(s,0,l);u.restore()}}},_drawTitle:function(){var t=this,e=t.ctx,n=t.options,r=n.scaleLabel;if(r.display){var i,a,o=rn(r.fontColor,N.global.defaultFontColor),s=Y.options._parseFont(r),l=Y.options.toPadding(r.padding),u=s.lineHeight/2,c=n.position,h=0;if(t.isHorizontal())i=t.left+t.width/2,a="bottom"===c?t.bottom-u-l.bottom:t.top+u+l.top;else{var d="left"===c;i=d?t.left+u+l.top:t.right-u-l.top,a=t.top+t.height/2,h=d?-.5*Math.PI:.5*Math.PI}e.save(),e.translate(i,a),e.rotate(h),e.textAlign="center",e.textBaseline="middle",e.fillStyle=o,e.font=s.string,e.fillText(r.labelString,0,0),e.restore()}},draw:function(t){this._isVisible()&&(this._drawGrid(t),this._drawTitle(),this._drawLabels())},_layers:function(){var t=this,e=t.options,n=e.ticks&&e.ticks.z||0,r=e.gridLines&&e.gridLines.z||0;return t._isVisible()&&n!==r&&t.draw===t._draw?[{z:r,draw:function(){t._drawGrid.apply(t,arguments),t._drawTitle.apply(t,arguments)}},{z:n,draw:function(){t._drawLabels.apply(t,arguments)}}]:[{z:n,draw:function(){t.draw.apply(t,arguments)}}]},_getMatchingVisibleMetas:function(t){var e=this,n=e.isHorizontal();return e.chart._getSortedVisibleDatasetMetas().filter((function(r){return(!t||r.type===t)&&(n?r.xAxisID===e.id:r.yAxisID===e.id)}))}});pn.prototype._draw=pn.prototype.draw;var gn=pn,mn=Y.isNullOrUndef,vn=gn.extend({determineDataLimits:function(){var t,e=this,n=e._getLabels(),r=e.options.ticks,i=r.min,a=r.max,o=0,s=n.length-1;void 0!==i&&(t=n.indexOf(i))>=0&&(o=t),void 0!==a&&(t=n.indexOf(a))>=0&&(s=t),e.minIndex=o,e.maxIndex=s,e.min=n[o],e.max=n[s]},buildTicks:function(){var t=this._getLabels(),e=this.minIndex,n=this.maxIndex;this.ticks=0===e&&n===t.length-1?t:t.slice(e,n+1)},getLabelForIndex:function(t,e){var n=this.chart;return n.getDatasetMeta(e).controller._getValueScaleId()===this.id?this.getRightValue(n.data.datasets[e].data[t]):this._getLabels()[t]},_configure:function(){var t=this,e=t.options.offset,n=t.ticks;gn.prototype._configure.call(t),t.isHorizontal()||(t._reversePixels=!t._reversePixels),n&&(t._startValue=t.minIndex-(e?.5:0),t._valueRange=Math.max(n.length-(e?0:1),1))},getPixelForValue:function(t,e,n){var r,i,a,o=this;return mn(e)||mn(n)||(t=o.chart.data.datasets[n].data[e]),mn(t)||(r=o.isHorizontal()?t.x:t.y),(void 0!==r||void 0!==t&&isNaN(e))&&(i=o._getLabels(),t=Y.valueOrDefault(r,t),e=-1!==(a=i.indexOf(t))?a:e,isNaN(e)&&(e=t)),o.getPixelForDecimal((e-o._startValue)/o._valueRange)},getPixelForTick:function(t){var e=this.ticks;return t<0||t>e.length-1?null:this.getPixelForValue(e[t],t+this.minIndex)},getValueForPixel:function(t){var e=Math.round(this._startValue+this.getDecimalForPixel(t)*this._valueRange);return Math.min(Math.max(e,0),this.ticks.length-1)},getBasePixel:function(){return this.bottom}}),yn={position:"bottom"};vn._defaults=yn;var bn=Y.noop,xn=Y.isNullOrUndef,_n=gn.extend({getRightValue:function(t){return"string"==typeof t?+t:gn.prototype.getRightValue.call(this,t)},handleTickRangeOptions:function(){var t=this,e=t.options.ticks;if(e.beginAtZero){var n=Y.sign(t.min),r=Y.sign(t.max);n<0&&r<0?t.max=0:n>0&&r>0&&(t.min=0)}var i=void 0!==e.min||void 0!==e.suggestedMin,a=void 0!==e.max||void 0!==e.suggestedMax;void 0!==e.min?t.min=e.min:void 0!==e.suggestedMin&&(null===t.min?t.min=e.suggestedMin:t.min=Math.min(t.min,e.suggestedMin)),void 0!==e.max?t.max=e.max:void 0!==e.suggestedMax&&(null===t.max?t.max=e.suggestedMax:t.max=Math.max(t.max,e.suggestedMax)),i!==a&&t.min>=t.max&&(i?t.max=t.min+1:t.min=t.max-1),t.min===t.max&&(t.max++,e.beginAtZero||t.min--)},getTickLimit:function(){var t,e=this.options.ticks,n=e.stepSize,r=e.maxTicksLimit;return n?t=Math.ceil(this.max/n)-Math.floor(this.min/n)+1:(t=this._computeTickLimit(),r=r||11),r&&(t=Math.min(r,t)),t},_computeTickLimit:function(){return Number.POSITIVE_INFINITY},handleDirectionalChanges:bn,buildTicks:function(){var t=this,e=t.options.ticks,n=t.getTickLimit(),r={maxTicks:n=Math.max(2,n),min:e.min,max:e.max,precision:e.precision,stepSize:Y.valueOrDefault(e.fixedStepSize,e.stepSize)},i=t.ticks=function(t,e){var n,r,i,a,o=[],s=t.stepSize,l=s||1,u=t.maxTicks-1,c=t.min,h=t.max,d=t.precision,f=e.min,p=e.max,g=Y.niceNum((p-f)/u/l)*l;if(g<1e-14&&xn(c)&&xn(h))return[f,p];(a=Math.ceil(p/g)-Math.floor(f/g))>u&&(g=Y.niceNum(a*g/u/l)*l),s||xn(d)?n=Math.pow(10,Y._decimalPlaces(g)):(n=Math.pow(10,d),g=Math.ceil(g*n)/n),r=Math.floor(f/g)*g,i=Math.ceil(p/g)*g,s&&(!xn(c)&&Y.almostWhole(c/g,g/1e3)&&(r=c),!xn(h)&&Y.almostWhole(h/g,g/1e3)&&(i=h)),a=(i-r)/g,a=Y.almostEquals(a,Math.round(a),g/1e3)?Math.round(a):Math.ceil(a),r=Math.round(r*n)/n,i=Math.round(i*n)/n,o.push(xn(c)?r:c);for(var m=1;m<a;++m)o.push(Math.round((r+m*g)*n)/n);return o.push(xn(h)?i:h),o}(r,t);t.handleDirectionalChanges(),t.max=Y.max(i),t.min=Y.min(i),e.reverse?(i.reverse(),t.start=t.max,t.end=t.min):(t.start=t.min,t.end=t.max)},convertTicksToLabels:function(){var t=this;t.ticksAsNumbers=t.ticks.slice(),t.zeroLineIndex=t.ticks.indexOf(0),gn.prototype.convertTicksToLabels.call(t)},_configure:function(){var t,e=this,n=e.getTicks(),r=e.min,i=e.max;gn.prototype._configure.call(e),e.options.offset&&n.length&&(r-=t=(i-r)/Math.max(n.length-1,1)/2,i+=t),e._startValue=r,e._endValue=i,e._valueRange=i-r}}),wn={position:"left",ticks:{callback:tn.formatters.linear}};function kn(t,e,n,r){var i,a,o=t.options,s=function(t,e,n){var r=[n.type,void 0===e&&void 0===n.stack?n.index:"",n.stack].join(".");return void 0===t[r]&&(t[r]={pos:[],neg:[]}),t[r]}(e,o.stacked,n),l=s.pos,u=s.neg,c=r.length;for(i=0;i<c;++i)a=t._parseValue(r[i]),isNaN(a.min)||isNaN(a.max)||n.data[i].hidden||(l[i]=l[i]||0,u[i]=u[i]||0,o.relativePoints?l[i]=100:a.min<0||a.max<0?u[i]+=a.min:l[i]+=a.max)}function Mn(t,e,n){var r,i,a=n.length;for(r=0;r<a;++r)i=t._parseValue(n[r]),isNaN(i.min)||isNaN(i.max)||e.data[r].hidden||(t.min=Math.min(t.min,i.min),t.max=Math.max(t.max,i.max))}var Sn=_n.extend({determineDataLimits:function(){var t,e,n,r,i=this,a=i.options,o=i.chart.data.datasets,s=i._getMatchingVisibleMetas(),l=a.stacked,u={},c=s.length;if(i.min=Number.POSITIVE_INFINITY,i.max=Number.NEGATIVE_INFINITY,void 0===l)for(t=0;!l&&t<c;++t)l=void 0!==(e=s[t]).stack;for(t=0;t<c;++t)n=o[(e=s[t]).index].data,l?kn(i,u,e,n):Mn(i,e,n);Y.each(u,(function(t){r=t.pos.concat(t.neg),i.min=Math.min(i.min,Y.min(r)),i.max=Math.max(i.max,Y.max(r))})),i.min=Y.isFinite(i.min)&&!isNaN(i.min)?i.min:0,i.max=Y.isFinite(i.max)&&!isNaN(i.max)?i.max:1,i.handleTickRangeOptions()},_computeTickLimit:function(){var t;return this.isHorizontal()?Math.ceil(this.width/40):(t=Y.options._parseFont(this.options.ticks),Math.ceil(this.height/t.lineHeight))},handleDirectionalChanges:function(){this.isHorizontal()||this.ticks.reverse()},getLabelForIndex:function(t,e){return this._getScaleLabel(this.chart.data.datasets[e].data[t])},getPixelForValue:function(t){return this.getPixelForDecimal((+this.getRightValue(t)-this._startValue)/this._valueRange)},getValueForPixel:function(t){return this._startValue+this.getDecimalForPixel(t)*this._valueRange},getPixelForTick:function(t){var e=this.ticksAsNumbers;return t<0||t>e.length-1?null:this.getPixelForValue(e[t])}}),Dn=wn;Sn._defaults=Dn;var Cn=Y.valueOrDefault,On=Y.math.log10,Tn={position:"left",ticks:{callback:tn.formatters.logarithmic}};function Pn(t,e){return Y.isFinite(t)&&t>=0?t:e}var An=gn.extend({determineDataLimits:function(){var t,e,n,r,i,a,o=this,s=o.options,l=o.chart,u=l.data.datasets,c=o.isHorizontal();function h(t){return c?t.xAxisID===o.id:t.yAxisID===o.id}o.min=Number.POSITIVE_INFINITY,o.max=Number.NEGATIVE_INFINITY,o.minNotZero=Number.POSITIVE_INFINITY;var d=s.stacked;if(void 0===d)for(t=0;t<u.length;t++)if(e=l.getDatasetMeta(t),l.isDatasetVisible(t)&&h(e)&&void 0!==e.stack){d=!0;break}if(s.stacked||d){var f={};for(t=0;t<u.length;t++){var p=[(e=l.getDatasetMeta(t)).type,void 0===s.stacked&&void 0===e.stack?t:"",e.stack].join(".");if(l.isDatasetVisible(t)&&h(e))for(void 0===f[p]&&(f[p]=[]),i=0,a=(r=u[t].data).length;i<a;i++){var g=f[p];n=o._parseValue(r[i]),isNaN(n.min)||isNaN(n.max)||e.data[i].hidden||n.min<0||n.max<0||(g[i]=g[i]||0,g[i]+=n.max)}}Y.each(f,(function(t){if(t.length>0){var e=Y.min(t),n=Y.max(t);o.min=Math.min(o.min,e),o.max=Math.max(o.max,n)}}))}else for(t=0;t<u.length;t++)if(e=l.getDatasetMeta(t),l.isDatasetVisible(t)&&h(e))for(i=0,a=(r=u[t].data).length;i<a;i++)n=o._parseValue(r[i]),isNaN(n.min)||isNaN(n.max)||e.data[i].hidden||n.min<0||n.max<0||(o.min=Math.min(n.min,o.min),o.max=Math.max(n.max,o.max),0!==n.min&&(o.minNotZero=Math.min(n.min,o.minNotZero)));o.min=Y.isFinite(o.min)?o.min:null,o.max=Y.isFinite(o.max)?o.max:null,o.minNotZero=Y.isFinite(o.minNotZero)?o.minNotZero:null,this.handleTickRangeOptions()},handleTickRangeOptions:function(){var t=this,e=t.options.ticks;t.min=Pn(e.min,t.min),t.max=Pn(e.max,t.max),t.min===t.max&&(0!==t.min&&null!==t.min?(t.min=Math.pow(10,Math.floor(On(t.min))-1),t.max=Math.pow(10,Math.floor(On(t.max))+1)):(t.min=1,t.max=10)),null===t.min&&(t.min=Math.pow(10,Math.floor(On(t.max))-1)),null===t.max&&(t.max=0!==t.min?Math.pow(10,Math.floor(On(t.min))+1):10),null===t.minNotZero&&(t.min>0?t.minNotZero=t.min:t.max<1?t.minNotZero=Math.pow(10,Math.floor(On(t.max))):t.minNotZero=1)},buildTicks:function(){var t=this,e=t.options.ticks,n=!t.isHorizontal(),r={min:Pn(e.min),max:Pn(e.max)},i=t.ticks=function(t,e){var n,r,i=[],a=Cn(t.min,Math.pow(10,Math.floor(On(e.min)))),o=Math.floor(On(e.max)),s=Math.ceil(e.max/Math.pow(10,o));0===a?(n=Math.floor(On(e.minNotZero)),r=Math.floor(e.minNotZero/Math.pow(10,n)),i.push(a),a=r*Math.pow(10,n)):(n=Math.floor(On(a)),r=Math.floor(a/Math.pow(10,n)));var l=n<0?Math.pow(10,Math.abs(n)):1;do{i.push(a),10==++r&&(r=1,l=++n>=0?1:l),a=Math.round(r*Math.pow(10,n)*l)/l}while(n<o||n===o&&r<s);var u=Cn(t.max,a);return i.push(u),i}(r,t);t.max=Y.max(i),t.min=Y.min(i),e.reverse?(n=!n,t.start=t.max,t.end=t.min):(t.start=t.min,t.end=t.max),n&&i.reverse()},convertTicksToLabels:function(){this.tickValues=this.ticks.slice(),gn.prototype.convertTicksToLabels.call(this)},getLabelForIndex:function(t,e){return this._getScaleLabel(this.chart.data.datasets[e].data[t])},getPixelForTick:function(t){var e=this.tickValues;return t<0||t>e.length-1?null:this.getPixelForValue(e[t])},_getFirstTickValue:function(t){var e=Math.floor(On(t));return Math.floor(t/Math.pow(10,e))*Math.pow(10,e)},_configure:function(){var t=this,e=t.min,n=0;gn.prototype._configure.call(t),0===e&&(e=t._getFirstTickValue(t.minNotZero),n=Cn(t.options.ticks.fontSize,N.global.defaultFontSize)/t._length),t._startValue=On(e),t._valueOffset=n,t._valueRange=(On(t.max)-On(e))/(1-n)},getPixelForValue:function(t){var e=this,n=0;return(t=+e.getRightValue(t))>e.min&&t>0&&(n=(On(t)-e._startValue)/e._valueRange+e._valueOffset),e.getPixelForDecimal(n)},getValueForPixel:function(t){var e=this,n=e.getDecimalForPixel(t);return 0===n&&0===e.min?0:Math.pow(10,e._startValue+(n-e._valueOffset)*e._valueRange)}}),In=Tn;An._defaults=In;var Fn=Y.valueOrDefault,Ln=Y.valueAtIndexOrDefault,Rn=Y.options.resolve,Nn={display:!0,animate:!0,position:"chartArea",angleLines:{display:!0,color:"rgba(0,0,0,0.1)",lineWidth:1,borderDash:[],borderDashOffset:0},gridLines:{circular:!1},ticks:{showLabelBackdrop:!0,backdropColor:"rgba(255,255,255,0.75)",backdropPaddingY:2,backdropPaddingX:2,callback:tn.formatters.linear},pointLabels:{display:!0,fontSize:10,callback:function(t){return t}}};function En(t){var e=t.ticks;return e.display&&t.display?Fn(e.fontSize,N.global.defaultFontSize)+2*e.backdropPaddingY:0}function jn(t,e,n,r,i){return t===r||t===i?{start:e-n/2,end:e+n/2}:t<r||t>i?{start:e-n,end:e}:{start:e,end:e+n}}function zn(t){return 0===t||180===t?"center":t<180?"left":"right"}function Wn(t,e,n,r){var i,a,o=n.y+r/2;if(Y.isArray(e))for(i=0,a=e.length;i<a;++i)t.fillText(e[i],n.x,o),o+=r;else t.fillText(e,n.x,o)}function Yn(t,e,n){90===t||270===t?n.y-=e.h/2:(t>270||t<90)&&(n.y-=e.h)}function Vn(t){return Y.isNumber(t)?t:0}var Bn=_n.extend({setDimensions:function(){var t=this;t.width=t.maxWidth,t.height=t.maxHeight,t.paddingTop=En(t.options)/2,t.xCenter=Math.floor(t.width/2),t.yCenter=Math.floor((t.height-t.paddingTop)/2),t.drawingArea=Math.min(t.height-t.paddingTop,t.width)/2},determineDataLimits:function(){var t=this,e=t.chart,n=Number.POSITIVE_INFINITY,r=Number.NEGATIVE_INFINITY;Y.each(e.data.datasets,(function(i,a){if(e.isDatasetVisible(a)){var o=e.getDatasetMeta(a);Y.each(i.data,(function(e,i){var a=+t.getRightValue(e);isNaN(a)||o.data[i].hidden||(n=Math.min(a,n),r=Math.max(a,r))}))}})),t.min=n===Number.POSITIVE_INFINITY?0:n,t.max=r===Number.NEGATIVE_INFINITY?0:r,t.handleTickRangeOptions()},_computeTickLimit:function(){return Math.ceil(this.drawingArea/En(this.options))},convertTicksToLabels:function(){var t=this;_n.prototype.convertTicksToLabels.call(t),t.pointLabels=t.chart.data.labels.map((function(){var e=Y.callback(t.options.pointLabels.callback,arguments,t);return e||0===e?e:""}))},getLabelForIndex:function(t,e){return+this.getRightValue(this.chart.data.datasets[e].data[t])},fit:function(){var t=this.options;t.display&&t.pointLabels.display?function(t){var e,n,r,i=Y.options._parseFont(t.options.pointLabels),a={l:0,r:t.width,t:0,b:t.height-t.paddingTop},o={};t.ctx.font=i.string,t._pointLabelSizes=[];var s,l,u,c=t.chart.data.labels.length;for(e=0;e<c;e++){r=t.getPointPosition(e,t.drawingArea+5),s=t.ctx,l=i.lineHeight,u=t.pointLabels[e],n=Y.isArray(u)?{w:Y.longestText(s,s.font,u),h:u.length*l}:{w:s.measureText(u).width,h:l},t._pointLabelSizes[e]=n;var h=t.getIndexAngle(e),d=Y.toDegrees(h)%360,f=jn(d,r.x,n.w,0,180),p=jn(d,r.y,n.h,90,270);f.start<a.l&&(a.l=f.start,o.l=h),f.end>a.r&&(a.r=f.end,o.r=h),p.start<a.t&&(a.t=p.start,o.t=h),p.end>a.b&&(a.b=p.end,o.b=h)}t.setReductions(t.drawingArea,a,o)}(this):this.setCenterPoint(0,0,0,0)},setReductions:function(t,e,n){var r=this,i=e.l/Math.sin(n.l),a=Math.max(e.r-r.width,0)/Math.sin(n.r),o=-e.t/Math.cos(n.t),s=-Math.max(e.b-(r.height-r.paddingTop),0)/Math.cos(n.b);i=Vn(i),a=Vn(a),o=Vn(o),s=Vn(s),r.drawingArea=Math.min(Math.floor(t-(i+a)/2),Math.floor(t-(o+s)/2)),r.setCenterPoint(i,a,o,s)},setCenterPoint:function(t,e,n,r){var i=this,a=i.width-e-i.drawingArea,o=t+i.drawingArea,s=n+i.drawingArea,l=i.height-i.paddingTop-r-i.drawingArea;i.xCenter=Math.floor((o+a)/2+i.left),i.yCenter=Math.floor((s+l)/2+i.top+i.paddingTop)},getIndexAngle:function(t){var e=this.chart,n=(t*(360/e.data.labels.length)+((e.options||{}).startAngle||0))%360;return(n<0?n+360:n)*Math.PI*2/360},getDistanceFromCenterForValue:function(t){var e=this;if(Y.isNullOrUndef(t))return NaN;var n=e.drawingArea/(e.max-e.min);return e.options.ticks.reverse?(e.max-t)*n:(t-e.min)*n},getPointPosition:function(t,e){var n=this.getIndexAngle(t)-Math.PI/2;return{x:Math.cos(n)*e+this.xCenter,y:Math.sin(n)*e+this.yCenter}},getPointPositionForValue:function(t,e){return this.getPointPosition(t,this.getDistanceFromCenterForValue(e))},getBasePosition:function(t){var e=this.min,n=this.max;return this.getPointPositionForValue(t||0,this.beginAtZero?0:e<0&&n<0?n:e>0&&n>0?e:0)},_drawGrid:function(){var t,e,n,r=this,i=r.ctx,a=r.options,o=a.gridLines,s=a.angleLines,l=Fn(s.lineWidth,o.lineWidth),u=Fn(s.color,o.color);if(a.pointLabels.display&&function(t){var e=t.ctx,n=t.options,r=n.pointLabels,i=En(n),a=t.getDistanceFromCenterForValue(n.ticks.reverse?t.min:t.max),o=Y.options._parseFont(r);e.save(),e.font=o.string,e.textBaseline="middle";for(var s=t.chart.data.labels.length-1;s>=0;s--){var l=0===s?i/2:0,u=t.getPointPosition(s,a+l+5),c=Ln(r.fontColor,s,N.global.defaultFontColor);e.fillStyle=c;var h=t.getIndexAngle(s),d=Y.toDegrees(h);e.textAlign=zn(d),Yn(d,t._pointLabelSizes[s],u),Wn(e,t.pointLabels[s],u,o.lineHeight)}e.restore()}(r),o.display&&Y.each(r.ticks,(function(t,n){0!==n&&(e=r.getDistanceFromCenterForValue(r.ticksAsNumbers[n]),function(t,e,n,r){var i,a=t.ctx,o=e.circular,s=t.chart.data.labels.length,l=Ln(e.color,r-1),u=Ln(e.lineWidth,r-1);if((o||s)&&l&&u){if(a.save(),a.strokeStyle=l,a.lineWidth=u,a.setLineDash&&(a.setLineDash(e.borderDash||[]),a.lineDashOffset=e.borderDashOffset||0),a.beginPath(),o)a.arc(t.xCenter,t.yCenter,n,0,2*Math.PI);else{i=t.getPointPosition(0,n),a.moveTo(i.x,i.y);for(var c=1;c<s;c++)i=t.getPointPosition(c,n),a.lineTo(i.x,i.y)}a.closePath(),a.stroke(),a.restore()}}(r,o,e,n))})),s.display&&l&&u){for(i.save(),i.lineWidth=l,i.strokeStyle=u,i.setLineDash&&(i.setLineDash(Rn([s.borderDash,o.borderDash,[]])),i.lineDashOffset=Rn([s.borderDashOffset,o.borderDashOffset,0])),t=r.chart.data.labels.length-1;t>=0;t--)e=r.getDistanceFromCenterForValue(a.ticks.reverse?r.min:r.max),n=r.getPointPosition(t,e),i.beginPath(),i.moveTo(r.xCenter,r.yCenter),i.lineTo(n.x,n.y),i.stroke();i.restore()}},_drawLabels:function(){var t=this,e=t.ctx,n=t.options.ticks;if(n.display){var r,i,a=t.getIndexAngle(0),o=Y.options._parseFont(n),s=Fn(n.fontColor,N.global.defaultFontColor);e.save(),e.font=o.string,e.translate(t.xCenter,t.yCenter),e.rotate(a),e.textAlign="center",e.textBaseline="middle",Y.each(t.ticks,(function(a,l){(0!==l||n.reverse)&&(r=t.getDistanceFromCenterForValue(t.ticksAsNumbers[l]),n.showLabelBackdrop&&(i=e.measureText(a).width,e.fillStyle=n.backdropColor,e.fillRect(-i/2-n.backdropPaddingX,-r-o.size/2-n.backdropPaddingY,i+2*n.backdropPaddingX,o.size+2*n.backdropPaddingY)),e.fillStyle=s,e.fillText(a,0,-r))})),e.restore()}},_drawTitle:Y.noop}),Hn=Nn;Bn._defaults=Hn;var Un=Y._deprecated,Gn=Y.options.resolve,qn=Y.valueOrDefault,Kn=Number.MIN_SAFE_INTEGER||-9007199254740991,Zn=Number.MAX_SAFE_INTEGER||9007199254740991,Xn={millisecond:{common:!0,size:1,steps:1e3},second:{common:!0,size:1e3,steps:60},minute:{common:!0,size:6e4,steps:60},hour:{common:!0,size:36e5,steps:24},day:{common:!0,size:864e5,steps:30},week:{common:!1,size:6048e5,steps:4},month:{common:!0,size:2628e6,steps:12},quarter:{common:!1,size:7884e6,steps:4},year:{common:!0,size:3154e7}},Jn=Object.keys(Xn);function $n(t,e){return t-e}function Qn(t){return Y.valueOrDefault(t.time.min,t.ticks.min)}function tr(t){return Y.valueOrDefault(t.time.max,t.ticks.max)}function er(t,e,n,r){var i=function(t,e,n){for(var r,i,a,o=0,s=t.length-1;o>=0&&o<=s;){if(i=t[(r=o+s>>1)-1]||null,a=t[r],!i)return{lo:null,hi:a};if(a[e]<n)o=r+1;else{if(!(i[e]>n))return{lo:i,hi:a};s=r-1}}return{lo:a,hi:null}}(t,e,n),a=i.lo?i.hi?i.lo:t[t.length-2]:t[0],o=i.lo?i.hi?i.hi:t[t.length-1]:t[1],s=o[e]-a[e],l=s?(n-a[e])/s:0,u=(o[r]-a[r])*l;return a[r]+u}function nr(t,e){var n=t._adapter,r=t.options.time,i=r.parser,a=i||r.format,o=e;return"function"==typeof i&&(o=i(o)),Y.isFinite(o)||(o="string"==typeof a?n.parse(o,a):n.parse(o)),null!==o?+o:(i||"function"!=typeof a||(o=a(e),Y.isFinite(o)||(o=n.parse(o))),o)}function rr(t,e){if(Y.isNullOrUndef(e))return null;var n=t.options.time,r=nr(t,t.getRightValue(e));return null===r?r:(n.round&&(r=+t._adapter.startOf(r,n.round)),r)}function ir(t,e,n,r){var i,a,o,s=Jn.length;for(i=Jn.indexOf(t);i<s-1;++i)if(o=(a=Xn[Jn[i]]).steps?a.steps:Zn,a.common&&Math.ceil((n-e)/(o*a.size))<=r)return Jn[i];return Jn[s-1]}function ar(t,e,n){var r,i,a=[],o={},s=e.length;for(r=0;r<s;++r)o[i=e[r]]=r,a.push({value:i,major:!1});return 0!==s&&n?function(t,e,n,r){var i,a,o=t._adapter,s=+o.startOf(e[0].value,r),l=e[e.length-1].value;for(i=s;i<=l;i=+o.add(i,1,r))(a=n[i])>=0&&(e[a].major=!0);return e}(t,a,o,n):a}var or=gn.extend({initialize:function(){this.mergeTicksOptions(),gn.prototype.initialize.call(this)},update:function(){var t=this,e=t.options,n=e.time||(e.time={}),r=t._adapter=new Qe._date(e.adapters.date);return Un("time scale",n.format,"time.format","time.parser"),Un("time scale",n.min,"time.min","ticks.min"),Un("time scale",n.max,"time.max","ticks.max"),Y.mergeIf(n.displayFormats,r.formats()),gn.prototype.update.apply(t,arguments)},getRightValue:function(t){return t&&void 0!==t.t&&(t=t.t),gn.prototype.getRightValue.call(this,t)},determineDataLimits:function(){var t,e,n,r,i,a,o,s=this,l=s.chart,u=s._adapter,c=s.options,h=c.time.unit||"day",d=Zn,f=Kn,p=[],g=[],m=[],v=s._getLabels();for(t=0,n=v.length;t<n;++t)m.push(rr(s,v[t]));for(t=0,n=(l.data.datasets||[]).length;t<n;++t)if(l.isDatasetVisible(t))if(i=l.data.datasets[t].data,Y.isObject(i[0]))for(g[t]=[],e=0,r=i.length;e<r;++e)a=rr(s,i[e]),p.push(a),g[t][e]=a;else g[t]=m.slice(0),o||(p=p.concat(m),o=!0);else g[t]=[];m.length&&(d=Math.min(d,m[0]),f=Math.max(f,m[m.length-1])),p.length&&(p=n>1?function(t){var e,n,r,i={},a=[];for(e=0,n=t.length;e<n;++e)i[r=t[e]]||(i[r]=!0,a.push(r));return a}(p).sort($n):p.sort($n),d=Math.min(d,p[0]),f=Math.max(f,p[p.length-1])),d=rr(s,Qn(c))||d,f=rr(s,tr(c))||f,d=d===Zn?+u.startOf(Date.now(),h):d,f=f===Kn?+u.endOf(Date.now(),h)+1:f,s.min=Math.min(d,f),s.max=Math.max(d+1,f),s._table=[],s._timestamps={data:p,datasets:g,labels:m}},buildTicks:function(){var t,e,n,r=this,i=r.min,a=r.max,o=r.options,s=o.ticks,l=o.time,u=r._timestamps,c=[],h=r.getLabelCapacity(i),d=s.source,f=o.distribution;for(u="data"===d||"auto"===d&&"series"===f?u.data:"labels"===d?u.labels:function(t,e,n,r){var i,a=t._adapter,o=t.options,s=o.time,l=s.unit||ir(s.minUnit,e,n,r),u=Gn([s.stepSize,s.unitStepSize,1]),c="week"===l&&s.isoWeekday,h=e,d=[];if(c&&(h=+a.startOf(h,"isoWeek",c)),h=+a.startOf(h,c?"day":l),a.diff(n,e,l)>1e5*u)throw e+" and "+n+" are too far apart with stepSize of "+u+" "+l;for(i=h;i<n;i=+a.add(i,u,l))d.push(i);return i!==n&&"ticks"!==o.bounds||d.push(i),d}(r,i,a,h),"ticks"===o.bounds&&u.length&&(i=u[0],a=u[u.length-1]),i=rr(r,Qn(o))||i,a=rr(r,tr(o))||a,t=0,e=u.length;t<e;++t)(n=u[t])>=i&&n<=a&&c.push(n);return r.min=i,r.max=a,r._unit=l.unit||(s.autoSkip?ir(l.minUnit,r.min,r.max,h):function(t,e,n,r,i){var a,o;for(a=Jn.length-1;a>=Jn.indexOf(n);a--)if(o=Jn[a],Xn[o].common&&t._adapter.diff(i,r,o)>=e-1)return o;return Jn[n?Jn.indexOf(n):0]}(r,c.length,l.minUnit,r.min,r.max)),r._majorUnit=s.major.enabled&&"year"!==r._unit?function(t){for(var e=Jn.indexOf(t)+1,n=Jn.length;e<n;++e)if(Xn[Jn[e]].common)return Jn[e]}(r._unit):void 0,r._table=function(t,e,n,r){if("linear"===r||!t.length)return[{time:e,pos:0},{time:n,pos:1}];var i,a,o,s,l,u=[],c=[e];for(i=0,a=t.length;i<a;++i)(s=t[i])>e&&s<n&&c.push(s);for(c.push(n),i=0,a=c.length;i<a;++i)l=c[i+1],o=c[i-1],s=c[i],void 0!==o&&void 0!==l&&Math.round((l+o)/2)===s||u.push({time:s,pos:i/(a-1)});return u}(r._timestamps.data,i,a,f),r._offsets=function(t,e,n,r,i){var a,o,s=0,l=0;return i.offset&&e.length&&(a=er(t,"time",e[0],"pos"),s=1===e.length?1-a:(er(t,"time",e[1],"pos")-a)/2,o=er(t,"time",e[e.length-1],"pos"),l=1===e.length?o:(o-er(t,"time",e[e.length-2],"pos"))/2),{start:s,end:l,factor:1/(s+1+l)}}(r._table,c,0,0,o),s.reverse&&c.reverse(),ar(r,c,r._majorUnit)},getLabelForIndex:function(t,e){var n=this,r=n._adapter,i=n.chart.data,a=n.options.time,o=i.labels&&t<i.labels.length?i.labels[t]:"",s=i.datasets[e].data[t];return Y.isObject(s)&&(o=n.getRightValue(s)),a.tooltipFormat?r.format(nr(n,o),a.tooltipFormat):"string"==typeof o?o:r.format(nr(n,o),a.displayFormats.datetime)},tickFormatFunction:function(t,e,n,r){var i=this._adapter,a=this.options,o=a.time.displayFormats,s=o[this._unit],l=this._majorUnit,u=o[l],c=n[e],h=a.ticks,d=l&&u&&c&&c.major,f=i.format(t,r||(d?u:s)),p=d?h.major:h.minor,g=Gn([p.callback,p.userCallback,h.callback,h.userCallback]);return g?g(f,e,n):f},convertTicksToLabels:function(t){var e,n,r=[];for(e=0,n=t.length;e<n;++e)r.push(this.tickFormatFunction(t[e].value,e,t));return r},getPixelForOffset:function(t){var e=this._offsets,n=er(this._table,"time",t,"pos");return this.getPixelForDecimal((e.start+n)*e.factor)},getPixelForValue:function(t,e,n){var r=null;if(void 0!==e&&void 0!==n&&(r=this._timestamps.datasets[n][e]),null===r&&(r=rr(this,t)),null!==r)return this.getPixelForOffset(r)},getPixelForTick:function(t){var e=this.getTicks();return t>=0&&t<e.length?this.getPixelForOffset(e[t].value):null},getValueForPixel:function(t){var e=this._offsets,n=this.getDecimalForPixel(t)/e.factor-e.end,r=er(this._table,"pos",n,"time");return this._adapter._create(r)},_getLabelSize:function(t){var e=this.options.ticks,n=this.ctx.measureText(t).width,r=Y.toRadians(this.isHorizontal()?e.maxRotation:e.minRotation),i=Math.cos(r),a=Math.sin(r),o=qn(e.fontSize,N.global.defaultFontSize);return{w:n*i+o*a,h:n*a+o*i}},getLabelWidth:function(t){return this._getLabelSize(t).w},getLabelCapacity:function(t){var e=this,n=e.options.time,r=n.displayFormats,i=r[n.unit]||r.millisecond,a=e.tickFormatFunction(t,0,ar(e,[t],e._majorUnit),i),o=e._getLabelSize(a),s=Math.floor(e.isHorizontal()?e.width/o.w:e.height/o.h);return e.options.offset&&s--,s>0?s:1}}),sr={position:"bottom",distribution:"linear",bounds:"data",adapters:{},time:{parser:!1,unit:!1,round:!1,displayFormat:!1,isoWeekday:!1,minUnit:"millisecond",displayFormats:{}},ticks:{autoSkip:!1,source:"auto",major:{enabled:!1}}};or._defaults=sr;var lr={category:vn,linear:Sn,logarithmic:An,radialLinear:Bn,time:or},ur={datetime:"MMM D, YYYY, h:mm:ss a",millisecond:"h:mm:ss.SSS a",second:"h:mm:ss a",minute:"h:mm a",hour:"hA",day:"MMM D",week:"ll",month:"MMM YYYY",quarter:"[Q]Q - YYYY",year:"YYYY"};Qe._date.override("function"==typeof t?{_id:"moment",formats:function(){return ur},parse:function(e,n){return"string"==typeof e&&"string"==typeof n?e=t(e,n):e instanceof t||(e=t(e)),e.isValid()?e.valueOf():null},format:function(e,n){return t(e).format(n)},add:function(e,n,r){return t(e).add(n,r).valueOf()},diff:function(e,n,r){return t(e).diff(t(n),r)},startOf:function(e,n,r){return e=t(e),"isoWeek"===n?e.isoWeekday(r).valueOf():e.startOf(n).valueOf()},endOf:function(e,n){return t(e).endOf(n).valueOf()},_create:function(e){return t(e)}}:{}),N._set("global",{plugins:{filler:{propagate:!0}}});var cr={dataset:function(t){var e=t.fill,n=t.chart,r=n.getDatasetMeta(e),i=r&&n.isDatasetVisible(e)&&r.dataset._children||[],a=i.length||0;return a?function(t,e){return e<a&&i[e]._view||null}:null},boundary:function(t){var e=t.boundary,n=e?e.x:null,r=e?e.y:null;return Y.isArray(e)?function(t,n){return e[n]}:function(t){return{x:null===n?t.x:n,y:null===r?t.y:r}}}};function hr(t,e,n){var r,i=t._model||{},a=i.fill;if(void 0===a&&(a=!!i.backgroundColor),!1===a||null===a)return!1;if(!0===a)return"origin";if(r=parseFloat(a,10),isFinite(r)&&Math.floor(r)===r)return"-"!==a[0]&&"+"!==a[0]||(r=e+r),!(r===e||r<0||r>=n)&&r;switch(a){case"bottom":return"start";case"top":return"end";case"zero":return"origin";case"origin":case"start":case"end":return a;default:return!1}}function dr(t){return(t.el._scale||{}).getPointPositionForValue?function(t){var e,n,r,i,a,o=t.el._scale,s=o.options,l=o.chart.data.labels.length,u=t.fill,c=[];if(!l)return null;for(e=s.ticks.reverse?o.max:o.min,n=s.ticks.reverse?o.min:o.max,r=o.getPointPositionForValue(0,e),i=0;i<l;++i)a="start"===u||"end"===u?o.getPointPositionForValue(i,"start"===u?e:n):o.getBasePosition(i),s.gridLines.circular&&(a.cx=r.x,a.cy=r.y,a.angle=o.getIndexAngle(i)-Math.PI/2),c.push(a);return c}(t):function(t){var e,n=t.el._model||{},r=t.el._scale||{},i=t.fill,a=null;if(isFinite(i))return null;if("start"===i?a=void 0===n.scaleBottom?r.bottom:n.scaleBottom:"end"===i?a=void 0===n.scaleTop?r.top:n.scaleTop:void 0!==n.scaleZero?a=n.scaleZero:r.getBasePixel&&(a=r.getBasePixel()),null!=a){if(void 0!==a.x&&void 0!==a.y)return a;if(Y.isFinite(a))return{x:(e=r.isHorizontal())?a:null,y:e?null:a}}return null}(t)}function fr(t,e,n){var r,i=t[e].fill,a=[e];if(!n)return i;for(;!1!==i&&-1===a.indexOf(i);){if(!isFinite(i))return i;if(!(r=t[i]))return!1;if(r.visible)return i;a.push(i),i=r.fill}return!1}function pr(t){var e=t.fill,n="dataset";return!1===e?null:(isFinite(e)||(n="boundary"),cr[n](t))}function gr(t){return t&&!t.skip}function mr(t,e,n,r,i){var a,o,s,l;if(r&&i){for(t.moveTo(e[0].x,e[0].y),a=1;a<r;++a)Y.canvas.lineTo(t,e[a-1],e[a]);if(void 0===n[0].angle)for(t.lineTo(n[i-1].x,n[i-1].y),a=i-1;a>0;--a)Y.canvas.lineTo(t,n[a],n[a-1],!0);else for(o=n[0].cx,s=n[0].cy,l=Math.sqrt(Math.pow(n[0].x-o,2)+Math.pow(n[0].y-s,2)),a=i-1;a>0;--a)t.arc(o,s,l,n[a].angle,n[a-1].angle,!0)}}function vr(t,e,n,r,i,a){var o,s,l,u,c,h,d,f,p=e.length,g=r.spanGaps,m=[],v=[],y=0,b=0;for(t.beginPath(),o=0,s=p;o<s;++o)c=n(u=e[l=o%p]._view,l,r),h=gr(u),d=gr(c),a&&void 0===f&&h&&(s=p+(f=o+1)),h&&d?(y=m.push(u),b=v.push(c)):y&&b&&(g?(h&&m.push(u),d&&v.push(c)):(mr(t,m,v,y,b),y=b=0,m=[],v=[]));mr(t,m,v,y,b),t.closePath(),t.fillStyle=i,t.fill()}var yr={id:"filler",afterDatasetsUpdate:function(t,e){var n,r,i,a,o=(t.data.datasets||[]).length,s=e.propagate,l=[];for(r=0;r<o;++r)a=null,(i=(n=t.getDatasetMeta(r)).dataset)&&i._model&&i instanceof _t.Line&&(a={visible:t.isDatasetVisible(r),fill:hr(i,r,o),chart:t,el:i}),n.$filler=a,l.push(a);for(r=0;r<o;++r)(a=l[r])&&(a.fill=fr(l,r,s),a.boundary=dr(a),a.mapper=pr(a))},beforeDatasetsDraw:function(t){var e,n,r,i,a,o,s,l=t._getSortedVisibleDatasetMetas(),u=t.ctx;for(n=l.length-1;n>=0;--n)(e=l[n].$filler)&&e.visible&&(i=(r=e.el)._view,a=r._children||[],o=e.mapper,s=i.backgroundColor||N.global.defaultColor,o&&s&&a.length&&(Y.canvas.clipArea(u,t.chartArea),vr(u,a,o,i,s,r._loop),Y.canvas.unclipArea(u)))}},br=Y.rtl.getRtlAdapter,xr=Y.noop,_r=Y.valueOrDefault;function wr(t,e){return t.usePointStyle&&t.boxWidth>e?e:t.boxWidth}N._set("global",{legend:{display:!0,position:"top",align:"center",fullWidth:!0,reverse:!1,weight:1e3,onClick:function(t,e){var n=e.datasetIndex,r=this.chart,i=r.getDatasetMeta(n);i.hidden=null===i.hidden?!r.data.datasets[n].hidden:null,r.update()},onHover:null,onLeave:null,labels:{boxWidth:40,padding:10,generateLabels:function(t){var e=t.data.datasets,n=t.options.legend||{},r=n.labels&&n.labels.usePointStyle;return t._getSortedDatasetMetas().map((function(n){var i=n.controller.getStyle(r?0:void 0);return{text:e[n.index].label,fillStyle:i.backgroundColor,hidden:!t.isDatasetVisible(n.index),lineCap:i.borderCapStyle,lineDash:i.borderDash,lineDashOffset:i.borderDashOffset,lineJoin:i.borderJoinStyle,lineWidth:i.borderWidth,strokeStyle:i.borderColor,pointStyle:i.pointStyle,rotation:i.rotation,datasetIndex:n.index}}),this)}}},legendCallback:function(t){var e,n,r,i=document.createElement("ul"),a=t.data.datasets;for(i.setAttribute("class",t.id+"-legend"),e=0,n=a.length;e<n;e++)(r=i.appendChild(document.createElement("li"))).appendChild(document.createElement("span")).style.backgroundColor=a[e].backgroundColor,a[e].label&&r.appendChild(document.createTextNode(a[e].label));return i.outerHTML}});var kr=K.extend({initialize:function(t){Y.extend(this,t),this.legendHitBoxes=[],this._hoveredItem=null,this.doughnutMode=!1},beforeUpdate:xr,update:function(t,e,n){var r=this;return r.beforeUpdate(),r.maxWidth=t,r.maxHeight=e,r.margins=n,r.beforeSetDimensions(),r.setDimensions(),r.afterSetDimensions(),r.beforeBuildLabels(),r.buildLabels(),r.afterBuildLabels(),r.beforeFit(),r.fit(),r.afterFit(),r.afterUpdate(),r.minSize},afterUpdate:xr,beforeSetDimensions:xr,setDimensions:function(){var t=this;t.isHorizontal()?(t.width=t.maxWidth,t.left=0,t.right=t.width):(t.height=t.maxHeight,t.top=0,t.bottom=t.height),t.paddingLeft=0,t.paddingTop=0,t.paddingRight=0,t.paddingBottom=0,t.minSize={width:0,height:0}},afterSetDimensions:xr,beforeBuildLabels:xr,buildLabels:function(){var t=this,e=t.options.labels||{},n=Y.callback(e.generateLabels,[t.chart],t)||[];e.filter&&(n=n.filter((function(n){return e.filter(n,t.chart.data)}))),t.options.reverse&&n.reverse(),t.legendItems=n},afterBuildLabels:xr,beforeFit:xr,fit:function(){var t=this,e=t.options,n=e.labels,r=e.display,i=t.ctx,a=Y.options._parseFont(n),o=a.size,s=t.legendHitBoxes=[],l=t.minSize,u=t.isHorizontal();if(u?(l.width=t.maxWidth,l.height=r?10:0):(l.width=r?10:0,l.height=t.maxHeight),r){if(i.font=a.string,u){var c=t.lineWidths=[0],h=0;i.textAlign="left",i.textBaseline="middle",Y.each(t.legendItems,(function(t,e){var r=wr(n,o)+o/2+i.measureText(t.text).width;(0===e||c[c.length-1]+r+2*n.padding>l.width)&&(h+=o+n.padding,c[c.length-(e>0?0:1)]=0),s[e]={left:0,top:0,width:r,height:o},c[c.length-1]+=r+n.padding})),l.height+=h}else{var d=n.padding,f=t.columnWidths=[],p=t.columnHeights=[],g=n.padding,m=0,v=0;Y.each(t.legendItems,(function(t,e){var r=wr(n,o)+o/2+i.measureText(t.text).width;e>0&&v+o+2*d>l.height&&(g+=m+n.padding,f.push(m),p.push(v),m=0,v=0),m=Math.max(m,r),v+=o+d,s[e]={left:0,top:0,width:r,height:o}})),g+=m,f.push(m),p.push(v),l.width+=g}t.width=l.width,t.height=l.height}else t.width=l.width=t.height=l.height=0},afterFit:xr,isHorizontal:function(){return"top"===this.options.position||"bottom"===this.options.position},draw:function(){var t=this,e=t.options,n=e.labels,r=N.global,i=r.defaultColor,a=r.elements.line,o=t.height,s=t.columnHeights,l=t.width,u=t.lineWidths;if(e.display){var c,h=br(e.rtl,t.left,t.minSize.width),d=t.ctx,f=_r(n.fontColor,r.defaultFontColor),p=Y.options._parseFont(n),g=p.size;d.textAlign=h.textAlign("left"),d.textBaseline="middle",d.lineWidth=.5,d.strokeStyle=f,d.fillStyle=f,d.font=p.string;var m=wr(n,g),v=t.legendHitBoxes,y=function(t,r){switch(e.align){case"start":return n.padding;case"end":return t-r;default:return(t-r+n.padding)/2}},b=t.isHorizontal();c=b?{x:t.left+y(l,u[0]),y:t.top+n.padding,line:0}:{x:t.left+n.padding,y:t.top+y(o,s[0]),line:0},Y.rtl.overrideTextDirection(t.ctx,e.textDirection);var x=g+n.padding;Y.each(t.legendItems,(function(e,r){var f=d.measureText(e.text).width,p=m+g/2+f,_=c.x,w=c.y;h.setWidth(t.minSize.width),b?r>0&&_+p+n.padding>t.left+t.minSize.width&&(w=c.y+=x,c.line++,_=c.x=t.left+y(l,u[c.line])):r>0&&w+x>t.top+t.minSize.height&&(_=c.x=_+t.columnWidths[c.line]+n.padding,c.line++,w=c.y=t.top+y(o,s[c.line]));var k=h.x(_);!function(t,e,r){if(!(isNaN(m)||m<=0)){d.save();var o=_r(r.lineWidth,a.borderWidth);if(d.fillStyle=_r(r.fillStyle,i),d.lineCap=_r(r.lineCap,a.borderCapStyle),d.lineDashOffset=_r(r.lineDashOffset,a.borderDashOffset),d.lineJoin=_r(r.lineJoin,a.borderJoinStyle),d.lineWidth=o,d.strokeStyle=_r(r.strokeStyle,i),d.setLineDash&&d.setLineDash(_r(r.lineDash,a.borderDash)),n&&n.usePointStyle){var s=m*Math.SQRT2/2,l=h.xPlus(t,m/2),u=e+g/2;Y.canvas.drawPoint(d,r.pointStyle,s,l,u,r.rotation)}else d.fillRect(h.leftForLtr(t,m),e,m,g),0!==o&&d.strokeRect(h.leftForLtr(t,m),e,m,g);d.restore()}}(k,w,e),v[r].left=h.leftForLtr(k,v[r].width),v[r].top=w,function(t,e,n,r){var i=g/2,a=h.xPlus(t,m+i),o=e+i;d.fillText(n.text,a,o),n.hidden&&(d.beginPath(),d.lineWidth=2,d.moveTo(a,o),d.lineTo(h.xPlus(a,r),o),d.stroke())}(k,w,e,f),b?c.x+=p+n.padding:c.y+=x})),Y.rtl.restoreTextDirection(t.ctx,e.textDirection)}},_getLegendItemAt:function(t,e){var n,r,i,a=this;if(t>=a.left&&t<=a.right&&e>=a.top&&e<=a.bottom)for(i=a.legendHitBoxes,n=0;n<i.length;++n)if(t>=(r=i[n]).left&&t<=r.left+r.width&&e>=r.top&&e<=r.top+r.height)return a.legendItems[n];return null},handleEvent:function(t){var e,n=this,r=n.options,i="mouseup"===t.type?"click":t.type;if("mousemove"===i){if(!r.onHover&&!r.onLeave)return}else{if("click"!==i)return;if(!r.onClick)return}e=n._getLegendItemAt(t.x,t.y),"click"===i?e&&r.onClick&&r.onClick.call(n,t.native,e):(r.onLeave&&e!==n._hoveredItem&&(n._hoveredItem&&r.onLeave.call(n,t.native,n._hoveredItem),n._hoveredItem=e),r.onHover&&e&&r.onHover.call(n,t.native,e))}});function Mr(t,e){var n=new kr({ctx:t.ctx,options:e,chart:t});pe.configure(t,n,e),pe.addBox(t,n),t.legend=n}var Sr={id:"legend",_element:kr,beforeInit:function(t){var e=t.options.legend;e&&Mr(t,e)},beforeUpdate:function(t){var e=t.options.legend,n=t.legend;e?(Y.mergeIf(e,N.global.legend),n?(pe.configure(t,n,e),n.options=e):Mr(t,e)):n&&(pe.removeBox(t,n),delete t.legend)},afterEvent:function(t,e){var n=t.legend;n&&n.handleEvent(e)}},Dr=Y.noop;N._set("global",{title:{display:!1,fontStyle:"bold",fullWidth:!0,padding:10,position:"top",text:"",weight:2e3}});var Cr=K.extend({initialize:function(t){Y.extend(this,t),this.legendHitBoxes=[]},beforeUpdate:Dr,update:function(t,e,n){var r=this;return r.beforeUpdate(),r.maxWidth=t,r.maxHeight=e,r.margins=n,r.beforeSetDimensions(),r.setDimensions(),r.afterSetDimensions(),r.beforeBuildLabels(),r.buildLabels(),r.afterBuildLabels(),r.beforeFit(),r.fit(),r.afterFit(),r.afterUpdate(),r.minSize},afterUpdate:Dr,beforeSetDimensions:Dr,setDimensions:function(){var t=this;t.isHorizontal()?(t.width=t.maxWidth,t.left=0,t.right=t.width):(t.height=t.maxHeight,t.top=0,t.bottom=t.height),t.paddingLeft=0,t.paddingTop=0,t.paddingRight=0,t.paddingBottom=0,t.minSize={width:0,height:0}},afterSetDimensions:Dr,beforeBuildLabels:Dr,buildLabels:Dr,afterBuildLabels:Dr,beforeFit:Dr,fit:function(){var t,e=this,n=e.options,r=e.minSize={},i=e.isHorizontal();n.display?(t=(Y.isArray(n.text)?n.text.length:1)*Y.options._parseFont(n).lineHeight+2*n.padding,e.width=r.width=i?e.maxWidth:t,e.height=r.height=i?t:e.maxHeight):e.width=r.width=e.height=r.height=0},afterFit:Dr,isHorizontal:function(){var t=this.options.position;return"top"===t||"bottom"===t},draw:function(){var t=this,e=t.ctx,n=t.options;if(n.display){var r,i,a,o=Y.options._parseFont(n),s=o.lineHeight,l=s/2+n.padding,u=0,c=t.top,h=t.left,d=t.bottom,f=t.right;e.fillStyle=Y.valueOrDefault(n.fontColor,N.global.defaultFontColor),e.font=o.string,t.isHorizontal()?(i=h+(f-h)/2,a=c+l,r=f-h):(i="left"===n.position?h+l:f-l,a=c+(d-c)/2,r=d-c,u=Math.PI*("left"===n.position?-.5:.5)),e.save(),e.translate(i,a),e.rotate(u),e.textAlign="center",e.textBaseline="middle";var p=n.text;if(Y.isArray(p))for(var g=0,m=0;m<p.length;++m)e.fillText(p[m],0,g,r),g+=s;else e.fillText(p,0,0,r);e.restore()}}});function Or(t,e){var n=new Cr({ctx:t.ctx,options:e,chart:t});pe.configure(t,n,e),pe.addBox(t,n),t.titleBlock=n}var Tr={},Pr=yr,Ar=Sr,Ir={id:"title",_element:Cr,beforeInit:function(t){var e=t.options.title;e&&Or(t,e)},beforeUpdate:function(t){var e=t.options.title,n=t.titleBlock;e?(Y.mergeIf(e,N.global.title),n?(pe.configure(t,n,e),n.options=e):Or(t,e)):n&&(pe.removeBox(t,n),delete t.titleBlock)}};for(var Fr in Tr.filler=Pr,Tr.legend=Ar,Tr.title=Ir,Xe.helpers=Y,function(){function t(t,e,n){var r;return"string"==typeof t?(r=parseInt(t,10),-1!==t.indexOf("%")&&(r=r/100*e.parentNode[n])):r=t,r}function e(t){return null!=t&&"none"!==t}function n(n,r,i){var a=document.defaultView,o=Y._getParentNode(n),s=a.getComputedStyle(n)[r],l=a.getComputedStyle(o)[r],u=e(s),c=e(l),h=Number.POSITIVE_INFINITY;return u||c?Math.min(u?t(s,n,i):h,c?t(l,o,i):h):"none"}Y.where=function(t,e){if(Y.isArray(t)&&Array.prototype.filter)return t.filter(e);var n=[];return Y.each(t,(function(t){e(t)&&n.push(t)})),n},Y.findIndex=Array.prototype.findIndex?function(t,e,n){return t.findIndex(e,n)}:function(t,e,n){n=void 0===n?t:n;for(var r=0,i=t.length;r<i;++r)if(e.call(n,t[r],r,t))return r;return-1},Y.findNextWhere=function(t,e,n){Y.isNullOrUndef(n)&&(n=-1);for(var r=n+1;r<t.length;r++){var i=t[r];if(e(i))return i}},Y.findPreviousWhere=function(t,e,n){Y.isNullOrUndef(n)&&(n=t.length);for(var r=n-1;r>=0;r--){var i=t[r];if(e(i))return i}},Y.isNumber=function(t){return!isNaN(parseFloat(t))&&isFinite(t)},Y.almostEquals=function(t,e,n){return Math.abs(t-e)<n},Y.almostWhole=function(t,e){var n=Math.round(t);return n-e<=t&&n+e>=t},Y.max=function(t){return t.reduce((function(t,e){return isNaN(e)?t:Math.max(t,e)}),Number.NEGATIVE_INFINITY)},Y.min=function(t){return t.reduce((function(t,e){return isNaN(e)?t:Math.min(t,e)}),Number.POSITIVE_INFINITY)},Y.sign=Math.sign?function(t){return Math.sign(t)}:function(t){return 0==(t=+t)||isNaN(t)?t:t>0?1:-1},Y.toRadians=function(t){return t*(Math.PI/180)},Y.toDegrees=function(t){return t*(180/Math.PI)},Y._decimalPlaces=function(t){if(Y.isFinite(t)){for(var e=1,n=0;Math.round(t*e)/e!==t;)e*=10,n++;return n}},Y.getAngleFromPoint=function(t,e){var n=e.x-t.x,r=e.y-t.y,i=Math.sqrt(n*n+r*r),a=Math.atan2(r,n);return a<-.5*Math.PI&&(a+=2*Math.PI),{angle:a,distance:i}},Y.distanceBetweenPoints=function(t,e){return Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2))},Y.aliasPixel=function(t){return t%2==0?0:.5},Y._alignPixel=function(t,e,n){var r=t.currentDevicePixelRatio,i=n/2;return Math.round((e-i)*r)/r+i},Y.splineCurve=function(t,e,n,r){var i=t.skip?e:t,a=e,o=n.skip?e:n,s=Math.sqrt(Math.pow(a.x-i.x,2)+Math.pow(a.y-i.y,2)),l=Math.sqrt(Math.pow(o.x-a.x,2)+Math.pow(o.y-a.y,2)),u=s/(s+l),c=l/(s+l),h=r*(u=isNaN(u)?0:u),d=r*(c=isNaN(c)?0:c);return{previous:{x:a.x-h*(o.x-i.x),y:a.y-h*(o.y-i.y)},next:{x:a.x+d*(o.x-i.x),y:a.y+d*(o.y-i.y)}}},Y.EPSILON=Number.EPSILON||1e-14,Y.splineCurveMonotone=function(t){var e,n,r,i,a,o,s,l,u,c=(t||[]).map((function(t){return{model:t._model,deltaK:0,mK:0}})),h=c.length;for(e=0;e<h;++e)if(!(r=c[e]).model.skip){if(n=e>0?c[e-1]:null,(i=e<h-1?c[e+1]:null)&&!i.model.skip){var d=i.model.x-r.model.x;r.deltaK=0!==d?(i.model.y-r.model.y)/d:0}!n||n.model.skip?r.mK=r.deltaK:!i||i.model.skip?r.mK=n.deltaK:this.sign(n.deltaK)!==this.sign(r.deltaK)?r.mK=0:r.mK=(n.deltaK+r.deltaK)/2}for(e=0;e<h-1;++e)r=c[e],i=c[e+1],r.model.skip||i.model.skip||(Y.almostEquals(r.deltaK,0,this.EPSILON)?r.mK=i.mK=0:(a=r.mK/r.deltaK,o=i.mK/r.deltaK,(l=Math.pow(a,2)+Math.pow(o,2))<=9||(s=3/Math.sqrt(l),r.mK=a*s*r.deltaK,i.mK=o*s*r.deltaK)));for(e=0;e<h;++e)(r=c[e]).model.skip||(n=e>0?c[e-1]:null,i=e<h-1?c[e+1]:null,n&&!n.model.skip&&(u=(r.model.x-n.model.x)/3,r.model.controlPointPreviousX=r.model.x-u,r.model.controlPointPreviousY=r.model.y-u*r.mK),i&&!i.model.skip&&(u=(i.model.x-r.model.x)/3,r.model.controlPointNextX=r.model.x+u,r.model.controlPointNextY=r.model.y+u*r.mK))},Y.nextItem=function(t,e,n){return n?e>=t.length-1?t[0]:t[e+1]:e>=t.length-1?t[t.length-1]:t[e+1]},Y.previousItem=function(t,e,n){return n?e<=0?t[t.length-1]:t[e-1]:e<=0?t[0]:t[e-1]},Y.niceNum=function(t,e){var n=Math.floor(Y.log10(t)),r=t/Math.pow(10,n);return(e?r<1.5?1:r<3?2:r<7?5:10:r<=1?1:r<=2?2:r<=5?5:10)*Math.pow(10,n)},Y.requestAnimFrame="undefined"==typeof window?function(t){t()}:window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(t){return window.setTimeout(t,1e3/60)},Y.getRelativePosition=function(t,e){var n,r,i=t.originalEvent||t,a=t.target||t.srcElement,o=a.getBoundingClientRect(),s=i.touches;s&&s.length>0?(n=s[0].clientX,r=s[0].clientY):(n=i.clientX,r=i.clientY);var l=parseFloat(Y.getStyle(a,"padding-left")),u=parseFloat(Y.getStyle(a,"padding-top")),c=parseFloat(Y.getStyle(a,"padding-right")),h=parseFloat(Y.getStyle(a,"padding-bottom")),d=o.right-o.left-l-c,f=o.bottom-o.top-u-h;return{x:n=Math.round((n-o.left-l)/d*a.width/e.currentDevicePixelRatio),y:r=Math.round((r-o.top-u)/f*a.height/e.currentDevicePixelRatio)}},Y.getConstraintWidth=function(t){return n(t,"max-width","clientWidth")},Y.getConstraintHeight=function(t){return n(t,"max-height","clientHeight")},Y._calculatePadding=function(t,e,n){return(e=Y.getStyle(t,e)).indexOf("%")>-1?n*parseInt(e,10)/100:parseInt(e,10)},Y._getParentNode=function(t){var e=t.parentNode;return e&&"[object ShadowRoot]"===e.toString()&&(e=e.host),e},Y.getMaximumWidth=function(t){var e=Y._getParentNode(t);if(!e)return t.clientWidth;var n=e.clientWidth,r=n-Y._calculatePadding(e,"padding-left",n)-Y._calculatePadding(e,"padding-right",n),i=Y.getConstraintWidth(t);return isNaN(i)?r:Math.min(r,i)},Y.getMaximumHeight=function(t){var e=Y._getParentNode(t);if(!e)return t.clientHeight;var n=e.clientHeight,r=n-Y._calculatePadding(e,"padding-top",n)-Y._calculatePadding(e,"padding-bottom",n),i=Y.getConstraintHeight(t);return isNaN(i)?r:Math.min(r,i)},Y.getStyle=function(t,e){return t.currentStyle?t.currentStyle[e]:document.defaultView.getComputedStyle(t,null).getPropertyValue(e)},Y.retinaScale=function(t,e){var n=t.currentDevicePixelRatio=e||"undefined"!=typeof window&&window.devicePixelRatio||1;if(1!==n){var r=t.canvas,i=t.height,a=t.width;r.height=i*n,r.width=a*n,t.ctx.scale(n,n),r.style.height||r.style.width||(r.style.height=i+"px",r.style.width=a+"px")}},Y.fontString=function(t,e,n){return e+" "+t+"px "+n},Y.longestText=function(t,e,n,r){var i=(r=r||{}).data=r.data||{},a=r.garbageCollect=r.garbageCollect||[];r.font!==e&&(i=r.data={},a=r.garbageCollect=[],r.font=e),t.font=e;var o,s,l,u,c,h=0,d=n.length;for(o=0;o<d;o++)if(null!=(u=n[o])&&!0!==Y.isArray(u))h=Y.measureText(t,i,a,h,u);else if(Y.isArray(u))for(s=0,l=u.length;s<l;s++)null==(c=u[s])||Y.isArray(c)||(h=Y.measureText(t,i,a,h,c));var f=a.length/2;if(f>n.length){for(o=0;o<f;o++)delete i[a[o]];a.splice(0,f)}return h},Y.measureText=function(t,e,n,r,i){var a=e[i];return a||(a=e[i]=t.measureText(i).width,n.push(i)),a>r&&(r=a),r},Y.numberOfLabelLines=function(t){var e=1;return Y.each(t,(function(t){Y.isArray(t)&&t.length>e&&(e=t.length)})),e},Y.color=w?function(t){return t instanceof CanvasGradient&&(t=N.global.defaultColor),w(t)}:function(t){return console.error("Color.js not found!"),t},Y.getHoverColor=function(t){return t instanceof CanvasPattern||t instanceof CanvasGradient?t:Y.color(t).saturate(.5).darken(.1).rgbString()}}(),Xe._adapters=Qe,Xe.Animation=X,Xe.animationService=J,Xe.controllers=Jt,Xe.DatasetController=nt,Xe.defaults=N,Xe.Element=K,Xe.elements=_t,Xe.Interaction=ie,Xe.layouts=pe,Xe.platform=Oe,Xe.plugins=Te,Xe.Scale=gn,Xe.scaleService=Pe,Xe.Ticks=tn,Xe.Tooltip=Ye,Xe.helpers.each(lr,(function(t,e){Xe.scaleService.registerScaleType(e,t,t._defaults)})),Tr)Tr.hasOwnProperty(Fr)&&Xe.plugins.register(Tr[Fr]);Xe.platform.initialize();var Lr=Xe;return"undefined"!=typeof window&&(window.Chart=Xe),Xe.Chart=Xe,Xe.Legend=Tr.legend._element,Xe.Title=Tr.title._element,Xe.pluginService=Xe.plugins,Xe.PluginBase=Xe.Element.extend({}),Xe.canvasHelpers=Xe.helpers.canvas,Xe.layoutService=Xe.layouts,Xe.LinearScaleBase=_n,Xe.helpers.each(["Bar","Bubble","Doughnut","Line","PolarArea","Radar","Scatter"],(function(t){Xe[t]=function(e,n){return new Xe(e,Xe.helpers.merge(n||{},{type:t.charAt(0).toLowerCase()+t.slice(1)}))}})),Lr}(function(){try{return n("wd/R")}catch(t){}}())},MvSz:function(t,e,n){n("ioFf");var r=n("LXxW"),i=n("0ycA"),a=Object.prototype.propertyIsEnumerable,o=Object.getOwnPropertySymbols,s=o?function(t){return null==t?[]:(t=Object(t),r(o(t),(function(e){return a.call(t,e)})))}:i;t.exports=s},NKxu:function(t,e,n){n("pIFo"),n("Oyvg"),n("a1Th"),n("h7Nl"),n("Btvt");var r=n("lSCD"),i=n("E2jh"),a=n("GoyQ"),o=n("3Fdi"),s=/^\[object .+?Constructor\]$/,l=Function.prototype,u=Object.prototype,c=l.toString,h=u.hasOwnProperty,d=RegExp("^"+c.call(h).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");t.exports=function(t){return!(!a(t)||i(t))&&(r(t)?d:s).test(o(t))}},Npjl:function(t,e){t.exports=function(t,e){return null==t?void 0:t[e]}},Nr18:function(t,e,n){"use strict";var r=n("S/j/"),i=n("d/Gc"),a=n("ne8i");t.exports=function(t){for(var e=r(this),n=a(e.length),o=arguments.length,s=i(o>1?arguments[1]:void 0,n),l=o>2?arguments[2]:void 0,u=void 0===l?n:i(l,n);u>s;)e[s++]=t;return e}},NykK:function(t,e,n){var r=n("nmnc"),i=n("AP2z"),a=n("KfNM"),o=r?r.toStringTag:void 0;t.exports=function(t){return null==t?void 0===t?"[object Undefined]":"[object Null]":o&&o in Object(t)?i(t):a(t)}},O0oS:function(t,e,n){var r=n("Cwc5"),i=function(){try{var t=r(Object,"defineProperty");return t({},"",{}),t}catch(e){}}();t.exports=i},O7RO:function(t,e,n){var r=n("CMye"),i=n("7GkX");t.exports=function(t){for(var e=i(t),n=e.length;n--;){var a=e[n],o=t[a];e[n]=[a,o,r(o)]}return e}},"Of+w":function(t,e,n){var r=n("Cwc5")(n("Kz5y"),"WeakMap");t.exports=r},QVEU:function(t,e,n){var r=n("hypo"),i=n("UMY1")((function(t,e,n){r(t,n,e)}));t.exports=i},QkVE:function(t,e,n){n("bWfx");var r=n("EpBk");t.exports=function(t,e){var n=t.__data__;return r(e)?n["string"==typeof e?"string":"hash"]:n.map}},QoRX:function(t,e){t.exports=function(t,e){for(var n=-1,r=null==t?0:t.length;++n<r;)if(e(t[n],n,t))return!0;return!1}},QqLw:function(t,e,n){var r=n("tadb"),i=n("ebwN"),a=n("HOxn"),o=n("yGk4"),s=n("Of+w"),l=n("NykK"),u=n("3Fdi"),c=u(r),h=u(i),d=u(a),f=u(o),p=u(s),g=l;(r&&"[object DataView]"!=g(new r(new ArrayBuffer(1)))||i&&"[object Map]"!=g(new i)||a&&"[object Promise]"!=g(a.resolve())||o&&"[object Set]"!=g(new o)||s&&"[object WeakMap]"!=g(new s))&&(g=function(t){var e=l(t),n="[object Object]"==e?t.constructor:void 0,r=n?u(n):"";if(r)switch(r){case c:return"[object DataView]";case h:return"[object Map]";case d:return"[object Promise]";case f:return"[object Set]";case p:return"[object WeakMap]"}return e}),t.exports=g},SKAX:function(t,e,n){var r=n("JC6p"),i=n("lQqw")(r);t.exports=i},SfRM:function(t,e,n){var r=n("YESw");t.exports=function(){this.__data__=r?r(null):{},this.size=0}},UDbo:function(t,e,n){"use strict";(function(t){n.d(e,"b",(function(){return x})),n.d(e,"a",(function(){return _}));n("rGqo"),n("yt8O"),n("Btvt"),n("hhXQ"),n("8+KV"),n("bWfx"),n("/SS/"),n("hHhE"),n("V+eJ"),n("91GP");var r=n("q1tI"),i=n.n(r),a=n("17x9"),o=n.n(a),s=n("MO+k"),l=n.n(s),u=n("Y+p1"),c=n.n(u),h=n("QVEU"),d=n.n(h),f=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(t[r]=n[r])}return t};function p(t,e){var n={};for(var r in t)e.indexOf(r)>=0||Object.prototype.hasOwnProperty.call(t,r)&&(n[r]=t[r]);return n}function g(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function m(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function v(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}var y=void 0!==t&&{}&&"production",b=function(t){function e(){g(this,e);var n=m(this,t.call(this));return n.handleOnClick=function(t){var e=n.chartInstance,r=n.props,i=r.getDatasetAtEvent,a=r.getElementAtEvent,o=r.getElementsAtEvent,s=r.onElementsClick;i&&i(e.getDatasetAtEvent(t),t),a&&a(e.getElementAtEvent(t),t),o&&o(e.getElementsAtEvent(t),t),s&&s(e.getElementsAtEvent(t),t)},n.ref=function(t){n.element=t},n.chartInstance=void 0,n}return v(e,t),e.prototype.componentDidMount=function(){this.renderChart()},e.prototype.componentDidUpdate=function(){if(this.props.redraw)return this.destroyChart(),void this.renderChart();this.updateChart()},e.prototype.shouldComponentUpdate=function(t){var e=this.props,n=(e.redraw,e.type),r=e.options,i=e.plugins,a=e.legend,o=e.height,s=e.width;if(!0===t.redraw)return!0;if(o!==t.height||s!==t.width)return!0;if(n!==t.type)return!0;if(!c()(a,t.legend))return!0;if(!c()(r,t.options))return!0;var l=this.transformDataProp(t);return!c()(this.shadowDataProp,l)||!c()(i,t.plugins)},e.prototype.componentWillUnmount=function(){this.destroyChart()},e.prototype.transformDataProp=function(t){var e=t.data;return"function"==typeof e?e(this.element):e},e.prototype.memoizeDataProps=function(){if(this.props.data){var t=this.transformDataProp(this.props);return this.shadowDataProp=f({},t,{datasets:t.datasets&&t.datasets.map((function(t){return f({},t)}))}),this.saveCurrentDatasets(),t}},e.prototype.checkDatasets=function(t){var n="production"!==y&&"prod"!==y,r=this.props.datasetKeyProvider!==e.getLabelAsKey,i=t.length>1;if(n&&i&&!r){var a=!1;t.forEach((function(t){t.label||(a=!0)})),a&&console.error('[react-chartjs-2] Warning: Each dataset needs a unique key. By default, the "label" property on each dataset is used. Alternatively, you may provide a "datasetKeyProvider" as a prop that returns a unique key.')}},e.prototype.getCurrentDatasets=function(){return this.chartInstance&&this.chartInstance.config.data&&this.chartInstance.config.data.datasets||[]},e.prototype.saveCurrentDatasets=function(){var t=this;this.datasets=this.datasets||{},this.getCurrentDatasets().forEach((function(e){t.datasets[t.props.datasetKeyProvider(e)]=e}))},e.prototype.updateChart=function(){var t=this,e=this.props.options,n=this.memoizeDataProps(this.props);if(this.chartInstance){e&&(this.chartInstance.options=l.a.helpers.configMerge(this.chartInstance.options,e));var r=this.getCurrentDatasets(),i=n.datasets||[];this.checkDatasets(r);var a=d()(r,this.props.datasetKeyProvider);this.chartInstance.config.data.datasets=i.map((function(e){var n=a[t.props.datasetKeyProvider(e)];if(n&&n.type===e.type&&e.data){n.data.splice(e.data.length),e.data.forEach((function(t,r){n.data[r]=e.data[r]}));e.data;var r=p(e,["data"]);return f({},n,r)}return e}));n.datasets;var o=p(n,["datasets"]);this.chartInstance.config.data=f({},this.chartInstance.config.data,o),this.chartInstance.update()}},e.prototype.renderChart=function(){var t=this.props,n=t.options,r=t.legend,i=t.type,a=t.plugins,o=this.element,s=this.memoizeDataProps();void 0===r||c()(e.defaultProps.legend,r)||(n.legend=r),this.chartInstance=new l.a(o,{type:i,data:s,options:n,plugins:a})},e.prototype.destroyChart=function(){if(this.chartInstance){this.saveCurrentDatasets();var t=Object.values(this.datasets);this.chartInstance.config.data.datasets=t,this.chartInstance.destroy()}},e.prototype.render=function(){var t=this.props,e=t.height,n=t.width,r=t.id;return i.a.createElement("canvas",{ref:this.ref,height:e,width:n,id:r,onClick:this.handleOnClick})},e}(i.a.Component);b.getLabelAsKey=function(t){return t.label},b.propTypes={data:o.a.oneOfType([o.a.object,o.a.func]).isRequired,getDatasetAtEvent:o.a.func,getElementAtEvent:o.a.func,getElementsAtEvent:o.a.func,height:o.a.number,legend:o.a.object,onElementsClick:o.a.func,options:o.a.object,plugins:o.a.arrayOf(o.a.object),redraw:o.a.bool,type:function(t,e,n){if(!l.a.controllers[t[e]])return new Error("Invalid chart type `"+t[e]+"` supplied to `"+n+"`.")},width:o.a.number,datasetKeyProvider:o.a.func},b.defaultProps={legend:{display:!0,position:"bottom"},type:"doughnut",height:150,width:300,redraw:!1,options:{},datasetKeyProvider:b.getLabelAsKey};(function(t){function e(){return g(this,e),m(this,t.apply(this,arguments))}v(e,t),e.prototype.render=function(){var t=this;return i.a.createElement(b,f({},this.props,{ref:function(e){return t.chartInstance=e&&e.chartInstance},type:"doughnut"}))}})(i.a.Component),function(t){function e(){return g(this,e),m(this,t.apply(this,arguments))}v(e,t),e.prototype.render=function(){var t=this;return i.a.createElement(b,f({},this.props,{ref:function(e){return t.chartInstance=e&&e.chartInstance},type:"pie"}))}}(i.a.Component);var x=function(t){function e(){return g(this,e),m(this,t.apply(this,arguments))}return v(e,t),e.prototype.render=function(){var t=this;return i.a.createElement(b,f({},this.props,{ref:function(e){return t.chartInstance=e&&e.chartInstance},type:"line"}))},e}(i.a.Component),_=function(t){function e(){return g(this,e),m(this,t.apply(this,arguments))}return v(e,t),e.prototype.render=function(){var t=this;return i.a.createElement(b,f({},this.props,{ref:function(e){return t.chartInstance=e&&e.chartInstance},type:"bar"}))},e}(i.a.Component);(function(t){function e(){return g(this,e),m(this,t.apply(this,arguments))}v(e,t),e.prototype.render=function(){var t=this;return i.a.createElement(b,f({},this.props,{ref:function(e){return t.chartInstance=e&&e.chartInstance},type:"horizontalBar"}))}})(i.a.Component),function(t){function e(){return g(this,e),m(this,t.apply(this,arguments))}v(e,t),e.prototype.render=function(){var t=this;return i.a.createElement(b,f({},this.props,{ref:function(e){return t.chartInstance=e&&e.chartInstance},type:"radar"}))}}(i.a.Component),function(t){function e(){return g(this,e),m(this,t.apply(this,arguments))}v(e,t),e.prototype.render=function(){var t=this;return i.a.createElement(b,f({},this.props,{ref:function(e){return t.chartInstance=e&&e.chartInstance},type:"polarArea"}))}}(i.a.Component),function(t){function e(){return g(this,e),m(this,t.apply(this,arguments))}v(e,t),e.prototype.render=function(){var t=this;return i.a.createElement(b,f({},this.props,{ref:function(e){return t.chartInstance=e&&e.chartInstance},type:"bubble"}))}}(i.a.Component),function(t){function e(){return g(this,e),m(this,t.apply(this,arguments))}v(e,t),e.prototype.render=function(){var t=this;return i.a.createElement(b,f({},this.props,{ref:function(e){return t.chartInstance=e&&e.chartInstance},type:"scatter"}))}}(i.a.Component),l.a.defaults}).call(this,n("8oxB"))},UExd:function(t,e,n){var r=n("nh4g"),i=n("DVgA"),a=n("aCFj"),o=n("UqcF").f;t.exports=function(t){return function(e){for(var n,s=a(e),l=i(s),u=l.length,c=0,h=[];u>c;)n=l[c++],r&&!o.call(s,n)||h.push(t?[n,s[n]]:s[n]);return h}}},UMY1:function(t,e,n){var r=n("oMRN"),i=n("JD84"),a=n("ut/Y"),o=n("Z0cm");t.exports=function(t,e){return function(n,s){var l=o(n)?r:i,u=e?e():{};return l(n,t,a(s,2),u)}}},"UNi/":function(t,e){t.exports=function(t,e){for(var n=-1,r=Array(t);++n<t;)r[n]=e(n);return r}},V6Ve:function(t,e,n){n("rGqo"),n("yt8O"),n("Btvt"),n("RW0V");var r=n("kekF")(Object.keys,Object);t.exports=r},VaNO:function(t,e){t.exports=function(t){return this.__data__.has(t)}},WFqU:function(t,e,n){(function(e){var n="object"==typeof e&&e&&e.Object===Object&&e;t.exports=n}).call(this,n("yLpj"))},Xi7e:function(t,e,n){var r=n("KMkd"),i=n("adU4"),a=n("tMB7"),o=n("+6XX"),s=n("Z8oC");function l(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var r=t[e];this.set(r[0],r[1])}}l.prototype.clear=r,l.prototype.delete=i,l.prototype.get=a,l.prototype.has=o,l.prototype.set=s,t.exports=l},"Y+p1":function(t,e,n){var r=n("wF/u");t.exports=function(t,e){return r(t,e)}},YESw:function(t,e,n){var r=n("Cwc5")(Object,"create");t.exports=r},YuTi:function(t,e,n){n("HAE/"),t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children||(t.children=[]),Object.defineProperty(t,"loaded",{enumerable:!0,get:function(){return t.l}}),Object.defineProperty(t,"id",{enumerable:!0,get:function(){return t.i}}),t.webpackPolyfill=1),t}},Z0cm:function(t,e,n){n("LK8F");var r=Array.isArray;t.exports=r},Z8oC:function(t,e,n){var r=n("y1pI");t.exports=function(t,e){var n=this.__data__,i=r(n,t);return i<0?(++this.size,n.push([t,e])):n[i][1]=e,this}},ZCpW:function(t,e,n){var r=n("lm/5"),i=n("O7RO"),a=n("IOzZ");t.exports=function(t){var e=i(t);return 1==e.length&&e[0][2]?a(e[0][0],e[0][1]):function(n){return n===t||r(n,t,e)}}},ZWtO:function(t,e,n){var r=n("4uTw"),i=n("9Nap");t.exports=function(t,e){for(var n=0,a=(e=r(e,t)).length;null!=t&&n<a;)t=t[i(e[n++])];return n&&n==a?t:void 0}},Zshi:function(t,e,n){var r=n("0/R4");n("Xtr8")("isFrozen",(function(t){return function(e){return!r(e)||!!t&&t(e)}}))},adU4:function(t,e,n){var r=n("y1pI"),i=Array.prototype.splice;t.exports=function(t){var e=this.__data__,n=r(e,t);return!(n<0)&&(n==e.length-1?e.pop():i.call(e,n,1),--this.size,!0)}},b80T:function(t,e,n){var r=n("UNi/"),i=n("03A+"),a=n("Z0cm"),o=n("DSRE"),s=n("wJg7"),l=n("c6wG"),u=Object.prototype.hasOwnProperty;t.exports=function(t,e){var n=a(t),c=!n&&i(t),h=!n&&!c&&o(t),d=!n&&!c&&!h&&l(t),f=n||c||h||d,p=f?r(t.length,String):[],g=p.length;for(var m in t)!e&&!u.call(t,m)||f&&("length"==m||h&&("offset"==m||"parent"==m)||d&&("buffer"==m||"byteLength"==m||"byteOffset"==m)||s(m,g))||p.push(m);return p}},bHtr:function(t,e,n){var r=n("XKFU");r(r.P,"Array",{fill:n("Nr18")}),n("nGyu")("fill")},c6wG:function(t,e,n){var r=n("dD9F"),i=n("sEf8"),a=n("mdPL"),o=a&&a.isTypedArray,s=o?i(o):r;t.exports=s},"cq/+":function(t,e,n){var r=n("mc0g")();t.exports=r},dD9F:function(t,e,n){var r=n("NykK"),i=n("shjB"),a=n("ExA7"),o={};o["[object Float32Array]"]=o["[object Float64Array]"]=o["[object Int8Array]"]=o["[object Int16Array]"]=o["[object Int32Array]"]=o["[object Uint8Array]"]=o["[object Uint8ClampedArray]"]=o["[object Uint16Array]"]=o["[object Uint32Array]"]=!0,o["[object Arguments]"]=o["[object Array]"]=o["[object ArrayBuffer]"]=o["[object Boolean]"]=o["[object DataView]"]=o["[object Date]"]=o["[object Error]"]=o["[object Function]"]=o["[object Map]"]=o["[object Number]"]=o["[object Object]"]=o["[object RegExp]"]=o["[object Set]"]=o["[object String]"]=o["[object WeakMap]"]=!1,t.exports=function(t){return a(t)&&i(t.length)&&!!o[r(t)]}},dt0z:function(t,e,n){var r=n("zoYe");t.exports=function(t){return null==t?"":r(t)}},e4Nc:function(t,e,n){var r=n("fGT3"),i=n("k+1r"),a=n("JHgL"),o=n("pSRY"),s=n("H8j4");function l(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var r=t[e];this.set(r[0],r[1])}}l.prototype.clear=r,l.prototype.delete=i,l.prototype.get=a,l.prototype.has=o,l.prototype.set=s,t.exports=l},e5cp:function(t,e,n){var r=n("fmRc"),i=n("or5M"),a=n("HDyB"),o=n("seXi"),s=n("QqLw"),l=n("Z0cm"),u=n("DSRE"),c=n("c6wG"),h="[object Object]",d=Object.prototype.hasOwnProperty;t.exports=function(t,e,n,f,p,g){var m=l(t),v=l(e),y=m?"[object Array]":s(t),b=v?"[object Array]":s(e),x=(y="[object Arguments]"==y?h:y)==h,_=(b="[object Arguments]"==b?h:b)==h,w=y==b;if(w&&u(t)){if(!u(e))return!1;m=!0,x=!1}if(w&&!x)return g||(g=new r),m||c(t)?i(t,e,n,f,p,g):a(t,e,y,n,f,p,g);if(!(1&n)){var k=x&&d.call(t,"__wrapped__"),M=_&&d.call(e,"__wrapped__");if(k||M){var S=k?t.value():t,D=M?e.value():e;return g||(g=new r),p(S,D,n,f,g)}}return!!w&&(g||(g=new r),o(t,e,n,f,p,g))}},eHKK:function(t,e,n){var r=n("XKFU");r(r.S,"Math",{log10:function(t){return Math.log(t)*Math.LOG10E}})},eUgh:function(t,e){t.exports=function(t,e){for(var n=-1,r=null==t?0:t.length,i=Array(r);++n<r;)i[n]=e(t[n],n,t);return i}},ebwN:function(t,e,n){var r=n("Cwc5")(n("Kz5y"),"Map");t.exports=r},ekgI:function(t,e,n){var r=n("YESw"),i=Object.prototype.hasOwnProperty;t.exports=function(t){var e=this.__data__;return r?void 0!==e[t]:i.call(e,t)}},fGT3:function(t,e,n){var r=n("4kuk"),i=n("Xi7e"),a=n("ebwN");t.exports=function(){this.size=0,this.__data__={hash:new r,map:new(a||i),string:new r}}},"fR/l":function(t,e,n){var r=n("CH3K"),i=n("Z0cm");t.exports=function(t,e,n){var a=e(t);return i(t)?a:r(a,n(t))}},fmRc:function(t,e,n){var r=n("Xi7e"),i=n("77Zs"),a=n("L8xA"),o=n("gCq4"),s=n("VaNO"),l=n("0Cz8");function u(t){var e=this.__data__=new r(t);this.size=e.size}u.prototype.clear=i,u.prototype.delete=a,u.prototype.get=o,u.prototype.has=s,u.prototype.set=l,t.exports=u},ftKO:function(t,e){t.exports=function(t){return this.__data__.set(t,"__lodash_hash_undefined__"),this}},gCq4:function(t,e){t.exports=function(t){return this.__data__.get(t)}},"h/M4":function(t,e,n){var r=n("XKFU");r(r.S,"Number",{MAX_SAFE_INTEGER:9007199254740991})},hgQt:function(t,e,n){var r=n("Juji"),i=n("4sDh");t.exports=function(t,e){return null!=t&&i(t,e,r)}},hhXQ:function(t,e,n){var r=n("XKFU"),i=n("UExd")(!1);r(r.S,"Object",{values:function(t){return i(t)}})},hypo:function(t,e,n){var r=n("O0oS");t.exports=function(t,e,n){"__proto__"==e&&r?r(t,e,{configurable:!0,enumerable:!0,value:n,writable:!0}):t[e]=n}},jqX0:function(t,e,n){var r=n("XKFU"),i=n("jtBr");r(r.P+r.F*(Date.prototype.toISOString!==i),"Date",{toISOString:i})},jtBr:function(t,e,n){"use strict";var r=n("eeVq"),i=Date.prototype.getTime,a=Date.prototype.toISOString,o=function(t){return t>9?t:"0"+t};t.exports=r((function(){return"0385-07-25T07:06:39.999Z"!=a.call(new Date(-5e13-1))}))||!r((function(){a.call(new Date(NaN))}))?function(){if(!isFinite(i.call(this)))throw RangeError("Invalid time value");var t=this,e=t.getUTCFullYear(),n=t.getUTCMilliseconds(),r=e<0?"-":e>9999?"+":"";return r+("00000"+Math.abs(e)).slice(r?-6:-4)+"-"+o(t.getUTCMonth()+1)+"-"+o(t.getUTCDate())+"T"+o(t.getUTCHours())+":"+o(t.getUTCMinutes())+":"+o(t.getUTCSeconds())+"."+(n>99?n:"0"+o(n))+"Z"}:a},"k+1r":function(t,e,n){var r=n("QkVE");t.exports=function(t){var e=r(this,t).delete(t);return this.size-=e?1:0,e}},kekF:function(t,e){t.exports=function(t,e){return function(n){return t(e(n))}}},knhD:function(t,e,n){var r=n("XKFU");r(r.S,"Number",{MIN_SAFE_INTEGER:-9007199254740991})},lQqw:function(t,e,n){var r=n("MMmD");t.exports=function(t,e){return function(n,i){if(null==n)return n;if(!r(n))return t(n,i);for(var a=n.length,o=e?a:-1,s=Object(n);(e?o--:++o<a)&&!1!==i(s[o],o,s););return n}}},lSCD:function(t,e,n){var r=n("NykK"),i=n("GoyQ");t.exports=function(t){if(!i(t))return!1;var e=r(t);return"[object Function]"==e||"[object GeneratorFunction]"==e||"[object AsyncFunction]"==e||"[object Proxy]"==e}},ljhN:function(t,e){t.exports=function(t,e){return t===e||t!=t&&e!=e}},"lm/5":function(t,e,n){var r=n("fmRc"),i=n("wF/u");t.exports=function(t,e,n,a){var o=n.length,s=o,l=!a;if(null==t)return!s;for(t=Object(t);o--;){var u=n[o];if(l&&u[2]?u[1]!==t[u[0]]:!(u[0]in t))return!1}for(;++o<s;){var c=(u=n[o])[0],h=t[c],d=u[1];if(l&&u[2]){if(void 0===h&&!(c in t))return!1}else{var f=new r;if(a)var p=a(h,d,c,t,e,f);if(!(void 0===p?i(d,h,3,a,f):p))return!1}}return!0}},lvtm:function(t,e){t.exports=Math.sign||function(t){return 0==(t=+t)||t!=t?t:t<0?-1:1}},mc0g:function(t,e){t.exports=function(t){return function(e,n,r){for(var i=-1,a=Object(e),o=r(e),s=o.length;s--;){var l=o[t?s:++i];if(!1===n(a[l],l,a))break}return e}}},mdPL:function(t,e,n){(function(t){var r=n("WFqU"),i=e&&!e.nodeType&&e,a=i&&"object"==typeof t&&t&&!t.nodeType&&t,o=a&&a.exports===i&&r.process,s=function(){try{var t=a&&a.require&&a.require("util").types;return t||o&&o.binding&&o.binding("util")}catch(e){}}();t.exports=s}).call(this,n("YuTi")(t))},mwIZ:function(t,e,n){var r=n("ZWtO");t.exports=function(t,e,n){var i=null==t?void 0:r(t,e);return void 0===i?n:i}},nmnc:function(t,e,n){var r=n("Kz5y").Symbol;t.exports=r},oMRN:function(t,e){t.exports=function(t,e,n,r){for(var i=-1,a=null==t?0:t.length;++i<a;){var o=t[i];e(r,o,n(o),t)}return r}},or5M:function(t,e,n){var r=n("1hJj"),i=n("QoRX"),a=n("xYSL");t.exports=function(t,e,n,o,s,l){var u=1&n,c=t.length,h=e.length;if(c!=h&&!(u&&h>c))return!1;var d=l.get(t);if(d&&l.get(e))return d==e;var f=-1,p=!0,g=2&n?new r:void 0;for(l.set(t,e),l.set(e,t);++f<c;){var m=t[f],v=e[f];if(o)var y=u?o(v,m,f,e,t,l):o(m,v,f,t,e,l);if(void 0!==y){if(y)continue;p=!1;break}if(g){if(!i(e,(function(t,e){if(!a(g,e)&&(m===t||s(m,t,n,o,l)))return g.push(e)}))){p=!1;break}}else if(m!==v&&!s(m,v,n,o,l)){p=!1;break}}return l.delete(t),l.delete(e),p}},oweT:function(t,e,n){"use strict";n.r(e);var r=n("Bl7J"),i=n("2A+t"),a=n("MXbp"),o=n("q1tI"),s=n("UDbo"),l=n("qKvR");var u=function(t){var e,n;function r(){for(var e,n=arguments.length,r=new Array(n),i=0;i<n;i++)r[i]=arguments[i];return(e=t.call.apply(t,[this].concat(r))||this).state={lineChartData:e.props.lineChartData},e}return n=t,(e=r).prototype=Object.create(n.prototype),e.prototype.constructor=e,e.__proto__=n,r.prototype.render=function(){return Object(l.c)("div",null,Object(l.c)(s.b,{data:this.state.lineChartData,height:220,width:250,options:{scales:{xAxes:[{display:!0,ticks:{fontColor:"white",maxTicksLimit:3},gridLines:{color:"white"},scaleLabel:{display:!0,labelString:this.props.xAxis,fontColor:"white"}}],yAxes:[{display:!0,ticks:{fontColor:"white",maxTicksLimit:3},gridLines:{color:"white"},scaleLabel:{display:!0,labelString:this.props.yAxis,fontColor:"white"}}]},legend:{labels:{fontColor:"white"},display:this.props.displayLegend,position:this.props.legendPosition},animation:{duration:2e3,easing:"easeOutCubic"}}}))},r}(o.Component);u.defaultProps={displayLegend:!0,legendPosition:"bottom"};var c=u;var h=function(t){var e,n;function r(){for(var e,n=arguments.length,r=new Array(n),i=0;i<n;i++)r[i]=arguments[i];return(e=t.call.apply(t,[this].concat(r))||this).state={barChartData:e.props.barChartData},e}return n=t,(e=r).prototype=Object.create(n.prototype),e.prototype.constructor=e,e.__proto__=n,r.prototype.render=function(){return Object(l.c)("div",null,Object(l.c)(s.a,{data:this.state.barChartData,height:220,width:250,options:{scales:{xAxes:[{display:!0,ticks:{fontColor:"white"},gridLines:{color:"white"},scaleLabel:{display:!1,labelString:this.props.xAxis,fontColor:"white"}}],yAxes:[{display:!0,ticks:{fontColor:"white",maxTicksLimit:4,padding:2,beginAtZero:!0},gridLines:{color:"white"},scaleLabel:{display:!0,labelString:this.props.yAxis,fontColor:"white"}}]},legend:{display:this.props.displayLegend,position:this.props.legendPosition},animation:{duration:2e3,easing:"easeOutCubic"}}}))},r}(o.Component);h.defaultProps={displayLegend:!1,legendPosition:"bottom"};var d=h,f=function(t){var e=t.children,n=t.primary,r=t.graphData,a=t.heading,o=t.chartType,s=t.xAxis,l=t.yAxis;return"line"===o?Object(i.c)("div",{sx:{boxShadow:n?"cardShadow":null,borderRadius:"card",backgroundColor:"primary",color:"white",marginY:5,marginX:1,width:"18rem",display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"center"}},Object(i.c)("h5",{sx:{fontSize:"1.1rem",margin:"0.5rem 1.5rem 0.5rem 1.5rem",textAlign:"center",height:"3rem"}},a),Object(i.c)(c,{lineChartData:r,legendPosition:"bottom",xAxis:s,yAxis:l}),Object(i.c)("div",{sx:{boxShadowBottom:n?"cardShadow":null,borderBottomRightRadius:"card",borderBottomLeftRadius:"card",backgroundColor:"white",borderTop:"0.35rem solid #5DA7A3",color:"darkText",height:"50%",padding:"4rem 1rem",display:"flex",justifyContent:"center",alignItems:"center",width:"100%",marginBottom:"-4rem",marginTop:"1rem"}},e)):Object(i.c)("div",{sx:{boxShadow:n?"cardShadow":null,borderRadius:"card",backgroundColor:"primary",color:"white",marginY:5,marginX:1,width:"18rem",display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"center"}},Object(i.c)("h5",{sx:{fontSize:"1.1rem",margin:"0.5rem 1rem 0.5rem 1rem",textAlign:"center",height:"3rem"}},a),Object(i.c)(d,{barChartData:r,yAxis:l}),Object(i.c)("div",{sx:{boxShadowBottom:n?"cardShadow":null,borderBottomRightRadius:"card",borderBottomLeftRadius:"card",backgroundColor:"white",borderTop:"0.35rem solid #5DA7A3",color:"darkText",height:"50%",padding:"4rem 1rem",display:"flex",justifyContent:"center",alignItems:"center",width:"100%",marginBottom:"-4rem",marginTop:"1rem"}},e))};var p=function(t){var e,n;function o(){for(var e,n=arguments.length,r=new Array(n),i=0;i<n;i++)r[i]=arguments[i];return(e=t.call.apply(t,[this].concat(r))||this).state={barChartJDK8Footprint:{labels:["OpenJ9","HotSpot"],datasets:[{data:[.34,1],backgroundColor:["#5DA7A3","#E58B23"]}]},lineChartJK8FootprintDuringrampup:{labels:[0,200,400,600,800,1e3,1200,1400,1600,1800],datasets:[{label:"OpenJ9",data:[232,488,505,511,516,517,520,521,521,522],fill:!1,borderColor:"#5DA7A3",backgroundColor:"#5DA7A3"},{label:"HotSpot",data:[563,902,1023,1140,1200,1218,1220,1289,1359,1368],fill:!1,borderColor:"#E58B23",backgroundColor:"#E58B23"}]},barChartJDK8Startup:{labels:["OpenJ9","HotSpot"],datasets:[{data:[.58,1],backgroundColor:["#5DA7A3","#E58B23"]}]},lineChartJK8FasterRampupInTheCloud:{labels:[0,150,300,450,600,750,900,1050,1200,1350],datasets:[{label:"OpenJ9",data:[8.5,1064,1063,1133,1188.5,1071,1125.5,1084.5,1095,1104.5],fill:!1,borderColor:"#5DA7A3",backgroundColor:"#5DA7A3"},{label:"HotSpot",data:[10.5,529.5,700.5,832.5,796,829.5,698.5,791.5,1017,1175.5],fill:!1,borderColor:"#E58B23",backgroundColor:"#E58B23"}]}},e}return n=t,(e=o).prototype=Object.create(n.prototype),e.prototype.constructor=e,e.__proto__=n,o.prototype.render=function(){return Object(i.c)(r.a,{isHome:!1,title:"Eclipse OpenJ9 performance",description:"OpenJDK with OpenJ9 demonstrates significantly better performance than HotSpot."},Object(i.c)("section",{sx:{backgroundColor:"#F5F9FC",paddingX:"7%",paddingTop:"5%",paddingBottom:"1%"}},Object(i.c)(a.b.h1,{sx:{marginBottom:"1rem"}},"Performance Overview"),Object(i.c)(a.b.p,null,"Application performance can be measured using many different metrics, including startup time, ramp-up time, footprint, and response time, as well as throughput. At Eclipse OpenJ9, we keep a watchful eye on all of these metrics, making sensible tradeoffs and providing tuning options that allow the virtual machine (VM) to be optimized for different workloads.")),Object(i.c)("section",{sx:{backgroundColor:"#F5F9FC",paddingX:"7%",paddingTop:"1%",paddingBottom:"3%"}},Object(i.c)(a.b.h2,null,"OpenJDK 8 performance with Eclipse OpenJ9"),Object(i.c)(a.b.p,{sx:{marginBottom:"0.5rem"}},"The result is that OpenJDK 8 with OpenJ9 demonstrates significantly better performance than with Hotspot."),Object(i.c)("div",{sx:{display:"flex",justifyContent:"space-around",flexWrap:"wrap"}},Object(i.c)(f,{graphData:this.state.barChartJDK8Footprint,heading:"66% smaller footprint after startup",primary:!0,chartType:"bar",yAxis:"Relative resident set size"},Object(i.c)("p",null,"OpenJ9 is highly optimized for cloud workloads, where minimizing memory footprint is important. Out of the box, the footprint is 66% smaller than HotSpot.")),Object(i.c)(f,{graphData:this.state.lineChartJK8FootprintDuringrampup,heading:"63% smaller footprint during ramp up",primary:!0,chartType:"line",yAxis:"Resident Set Size (MB)",xAxis:"Time (s)"},Object(i.c)("p",null,"Memory footprint increases rapidly when load is applied. However, at steady state, OpenJ9 consistently used around 63% less physical memory than HotSpot.")),Object(i.c)(f,{graphData:this.state.barChartJDK8Startup,heading:"42% faster startup time",primary:!0,chartType:"bar",yAxis:"Relative start-up time"},Object(i.c)("p",null,"Shared classes and Ahead-of-Time (AOT) technologies typically reduce startup time. By using -Xquickstart mode as well, you can reduce startup time by up to 42%.")),Object(i.c)(f,{graphData:this.state.lineChartJK8FasterRampupInTheCloud,heading:"Faster ramp-up time in the cloud",primary:!0,chartType:"line",xAxis:"Time (s)",yAxis:"Throughput"},Object(i.c)("p",null,"OpenJ9 reaches peak throughput on a single CPU core in 8.5 minutes compared with 30 minutes for Hotspot. Ideal for short-lived VMs running in the cloud."))),Object(i.c)("div",{sx:{display:"flex",justifyContent:"center",paddingBottom:"5%"}},Object(i.c)("a",{sx:{variant:"buttons.secondary",display:"flex",alignItems:"center",justifyContent:"center",textDecoration:"none",width:"16rem",marginTop:"7rem"},href:"https://github.com/eclipse/openj9-website/blob/master/benchmark/daytrader7.md",rel:"noopener noreferrer",target:"_blank"},"Read more performance details"))))},o}(o.Component);e.default=p},pSRY:function(t,e,n){var r=n("QkVE");t.exports=function(t){return r(this,t).has(t)}},qZTm:function(t,e,n){var r=n("fR/l"),i=n("MvSz"),a=n("7GkX");t.exports=function(t){return r(t,a,i)}},rEGp:function(t,e,n){n("8+KV"),t.exports=function(t){var e=-1,n=Array(t.size);return t.forEach((function(t){n[++e]=t})),n}},sEf8:function(t,e){t.exports=function(t){return function(e){return t(e)}}},seXi:function(t,e,n){var r=n("qZTm"),i=Object.prototype.hasOwnProperty;t.exports=function(t,e,n,a,o,s){var l=1&n,u=r(t),c=u.length;if(c!=r(e).length&&!l)return!1;for(var h=c;h--;){var d=u[h];if(!(l?d in e:i.call(e,d)))return!1}var f=s.get(t);if(f&&s.get(e))return f==e;var p=!0;s.set(t,e),s.set(e,t);for(var g=l;++h<c;){var m=t[d=u[h]],v=e[d];if(a)var y=l?a(v,m,d,e,t,s):a(m,v,d,t,e,s);if(!(void 0===y?m===v||o(m,v,n,a,s):y)){p=!1;break}g||(g="constructor"==d)}if(p&&!g){var b=t.constructor,x=e.constructor;b!=x&&"constructor"in t&&"constructor"in e&&!("function"==typeof b&&b instanceof b&&"function"==typeof x&&x instanceof x)&&(p=!1)}return s.delete(t),s.delete(e),p}},shjB:function(t,e){t.exports=function(t){return"number"==typeof t&&t>-1&&t%1==0&&t<=9007199254740991}},tMB7:function(t,e,n){var r=n("y1pI");t.exports=function(t){var e=this.__data__,n=r(e,t);return n<0?void 0:e[n][1]}},tadb:function(t,e,n){var r=n("Cwc5")(n("Kz5y"),"DataView");t.exports=r},u8Dt:function(t,e,n){var r=n("YESw"),i=Object.prototype.hasOwnProperty;t.exports=function(t){var e=this.__data__;if(r){var n=e[t];return"__lodash_hash_undefined__"===n?void 0:n}return i.call(e,t)?e[t]:void 0}},"ut/Y":function(t,e,n){var r=n("ZCpW"),i=n("GDhZ"),a=n("zZ0H"),o=n("Z0cm"),s=n("+c4W");t.exports=function(t){return"function"==typeof t?t:null==t?a:"object"==typeof t?o(t)?i(t[0],t[1]):r(t):s(t)}},"wF/u":function(t,e,n){var r=n("e5cp"),i=n("ExA7");t.exports=function t(e,n,a,o,s){return e===n||(null==e||null==n||!i(e)&&!i(n)?e!=e&&n!=n:r(e,n,a,o,t,s))}},wJg7:function(t,e){var n=/^(?:0|[1-9]\d*)$/;t.exports=function(t,e){var r=typeof t;return!!(e=null==e?9007199254740991:e)&&("number"==r||"symbol"!=r&&n.test(t))&&t>-1&&t%1==0&&t<e}},"wd/R":function(t,e,n){(function(t){n("AphP"),n("jqX0"),n("eM6i"),n("f3/d"),n("8+KV"),n("KKXr"),n("V+eJ"),n("SRfc"),n("Vd3H"),n("pIFo"),n("rGqo"),n("yt8O"),n("RW0V"),n("Oyvg"),n("Zshi"),n("dZ+Y"),n("a1Th"),n("h7Nl"),n("Btvt"),t.exports=function(){"use strict";var e,n;function r(){return e.apply(null,arguments)}function i(t){return t instanceof Array||"[object Array]"===Object.prototype.toString.call(t)}function a(t){return null!=t&&"[object Object]"===Object.prototype.toString.call(t)}function o(t){return void 0===t}function s(t){return"number"==typeof t||"[object Number]"===Object.prototype.toString.call(t)}function l(t){return t instanceof Date||"[object Date]"===Object.prototype.toString.call(t)}function u(t,e){var n,r=[];for(n=0;n<t.length;++n)r.push(e(t[n],n));return r}function c(t,e){return Object.prototype.hasOwnProperty.call(t,e)}function h(t,e){for(var n in e)c(e,n)&&(t[n]=e[n]);return c(e,"toString")&&(t.toString=e.toString),c(e,"valueOf")&&(t.valueOf=e.valueOf),t}function d(t,e,n,r){return ke(t,e,n,r,!0).utc()}function f(t){return null==t._pf&&(t._pf={empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1,parsedDateParts:[],meridiem:null,rfc2822:!1,weekdayMismatch:!1}),t._pf}function p(t){if(null==t._isValid){var e=f(t),r=n.call(e.parsedDateParts,(function(t){return null!=t})),i=!isNaN(t._d.getTime())&&e.overflow<0&&!e.empty&&!e.invalidMonth&&!e.invalidWeekday&&!e.weekdayMismatch&&!e.nullInput&&!e.invalidFormat&&!e.userInvalidated&&(!e.meridiem||e.meridiem&&r);if(t._strict&&(i=i&&0===e.charsLeftOver&&0===e.unusedTokens.length&&void 0===e.bigHour),null!=Object.isFrozen&&Object.isFrozen(t))return i;t._isValid=i}return t._isValid}function g(t){var e=d(NaN);return null!=t?h(f(e),t):f(e).userInvalidated=!0,e}n=Array.prototype.some?Array.prototype.some:function(t){for(var e=Object(this),n=e.length>>>0,r=0;r<n;r++)if(r in e&&t.call(this,e[r],r,e))return!0;return!1};var m=r.momentProperties=[];function v(t,e){var n,r,i;if(o(e._isAMomentObject)||(t._isAMomentObject=e._isAMomentObject),o(e._i)||(t._i=e._i),o(e._f)||(t._f=e._f),o(e._l)||(t._l=e._l),o(e._strict)||(t._strict=e._strict),o(e._tzm)||(t._tzm=e._tzm),o(e._isUTC)||(t._isUTC=e._isUTC),o(e._offset)||(t._offset=e._offset),o(e._pf)||(t._pf=f(e)),o(e._locale)||(t._locale=e._locale),m.length>0)for(n=0;n<m.length;n++)o(i=e[r=m[n]])||(t[r]=i);return t}var y=!1;function b(t){v(this,t),this._d=new Date(null!=t._d?t._d.getTime():NaN),this.isValid()||(this._d=new Date(NaN)),!1===y&&(y=!0,r.updateOffset(this),y=!1)}function x(t){return t instanceof b||null!=t&&null!=t._isAMomentObject}function _(t){return t<0?Math.ceil(t)||0:Math.floor(t)}function w(t){var e=+t,n=0;return 0!==e&&isFinite(e)&&(n=_(e)),n}function k(t,e,n){var r,i=Math.min(t.length,e.length),a=Math.abs(t.length-e.length),o=0;for(r=0;r<i;r++)(n&&t[r]!==e[r]||!n&&w(t[r])!==w(e[r]))&&o++;return o+a}function M(t){!1===r.suppressDeprecationWarnings&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+t)}function S(t,e){var n=!0;return h((function(){if(null!=r.deprecationHandler&&r.deprecationHandler(null,t),n){for(var i,a=[],o=0;o<arguments.length;o++){if(i="","object"==typeof arguments[o]){for(var s in i+="\n["+o+"] ",arguments[0])i+=s+": "+arguments[0][s]+", ";i=i.slice(0,-2)}else i=arguments[o];a.push(i)}M(t+"\nArguments: "+Array.prototype.slice.call(a).join("")+"\n"+(new Error).stack),n=!1}return e.apply(this,arguments)}),e)}var D,C={};function O(t,e){null!=r.deprecationHandler&&r.deprecationHandler(t,e),C[t]||(M(e),C[t]=!0)}function T(t){return t instanceof Function||"[object Function]"===Object.prototype.toString.call(t)}function P(t,e){var n,r=h({},t);for(n in e)c(e,n)&&(a(t[n])&&a(e[n])?(r[n]={},h(r[n],t[n]),h(r[n],e[n])):null!=e[n]?r[n]=e[n]:delete r[n]);for(n in t)c(t,n)&&!c(e,n)&&a(t[n])&&(r[n]=h({},r[n]));return r}function A(t){null!=t&&this.set(t)}r.suppressDeprecationWarnings=!1,r.deprecationHandler=null,D=Object.keys?Object.keys:function(t){var e,n=[];for(e in t)c(t,e)&&n.push(e);return n};var I={};function F(t,e){var n=t.toLowerCase();I[n]=I[n+"s"]=I[e]=t}function L(t){return"string"==typeof t?I[t]||I[t.toLowerCase()]:void 0}function R(t){var e,n,r={};for(n in t)c(t,n)&&(e=L(n))&&(r[e]=t[n]);return r}var N={};function E(t,e){N[t]=e}function j(t,e,n){var r=""+Math.abs(t),i=e-r.length;return(t>=0?n?"+":"":"-")+Math.pow(10,Math.max(0,i)).toString().substr(1)+r}var z=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,W=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,Y={},V={};function B(t,e,n,r){var i=r;"string"==typeof r&&(i=function(){return this[r]()}),t&&(V[t]=i),e&&(V[e[0]]=function(){return j(i.apply(this,arguments),e[1],e[2])}),n&&(V[n]=function(){return this.localeData().ordinal(i.apply(this,arguments),t)})}function H(t,e){return t.isValid()?(e=U(e,t.localeData()),Y[e]=Y[e]||function(t){var e,n,r,i=t.match(z);for(e=0,n=i.length;e<n;e++)V[i[e]]?i[e]=V[i[e]]:i[e]=(r=i[e]).match(/\[[\s\S]/)?r.replace(/^\[|\]$/g,""):r.replace(/\\/g,"");return function(e){var r,a="";for(r=0;r<n;r++)a+=T(i[r])?i[r].call(e,t):i[r];return a}}(e),Y[e](t)):t.localeData().invalidDate()}function U(t,e){var n=5;function r(t){return e.longDateFormat(t)||t}for(W.lastIndex=0;n>=0&&W.test(t);)t=t.replace(W,r),W.lastIndex=0,n-=1;return t}var G=/\d/,q=/\d\d/,K=/\d{3}/,Z=/\d{4}/,X=/[+-]?\d{6}/,J=/\d\d?/,$=/\d\d\d\d?/,Q=/\d\d\d\d\d\d?/,tt=/\d{1,3}/,et=/\d{1,4}/,nt=/[+-]?\d{1,6}/,rt=/\d+/,it=/[+-]?\d+/,at=/Z|[+-]\d\d:?\d\d/gi,ot=/Z|[+-]\d\d(?::?\d\d)?/gi,st=/[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i,lt={};function ut(t,e,n){lt[t]=T(e)?e:function(t,r){return t&&n?n:e}}function ct(t,e){return c(lt,t)?lt[t](e._strict,e._locale):new RegExp(ht(t.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,(function(t,e,n,r,i){return e||n||r||i}))))}function ht(t){return t.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}var dt={};function ft(t,e){var n,r=e;for("string"==typeof t&&(t=[t]),s(e)&&(r=function(t,n){n[e]=w(t)}),n=0;n<t.length;n++)dt[t[n]]=r}function pt(t,e){ft(t,(function(t,n,r,i){r._w=r._w||{},e(t,r._w,r,i)}))}function gt(t,e,n){null!=e&&c(dt,t)&&dt[t](e,n._a,n,t)}function mt(t){return vt(t)?366:365}function vt(t){return t%4==0&&t%100!=0||t%400==0}B("Y",0,0,(function(){var t=this.year();return t<=9999?""+t:"+"+t})),B(0,["YY",2],0,(function(){return this.year()%100})),B(0,["YYYY",4],0,"year"),B(0,["YYYYY",5],0,"year"),B(0,["YYYYYY",6,!0],0,"year"),F("year","y"),E("year",1),ut("Y",it),ut("YY",J,q),ut("YYYY",et,Z),ut("YYYYY",nt,X),ut("YYYYYY",nt,X),ft(["YYYYY","YYYYYY"],0),ft("YYYY",(function(t,e){e[0]=2===t.length?r.parseTwoDigitYear(t):w(t)})),ft("YY",(function(t,e){e[0]=r.parseTwoDigitYear(t)})),ft("Y",(function(t,e){e[0]=parseInt(t,10)})),r.parseTwoDigitYear=function(t){return w(t)+(w(t)>68?1900:2e3)};var yt,bt=xt("FullYear",!0);function xt(t,e){return function(n){return null!=n?(wt(this,t,n),r.updateOffset(this,e),this):_t(this,t)}}function _t(t,e){return t.isValid()?t._d["get"+(t._isUTC?"UTC":"")+e]():NaN}function wt(t,e,n){t.isValid()&&!isNaN(n)&&("FullYear"===e&&vt(t.year())&&1===t.month()&&29===t.date()?t._d["set"+(t._isUTC?"UTC":"")+e](n,t.month(),kt(n,t.month())):t._d["set"+(t._isUTC?"UTC":"")+e](n))}function kt(t,e){if(isNaN(t)||isNaN(e))return NaN;var n,r=(e%(n=12)+n)%n;return t+=(e-r)/12,1===r?vt(t)?29:28:31-r%7%2}yt=Array.prototype.indexOf?Array.prototype.indexOf:function(t){var e;for(e=0;e<this.length;++e)if(this[e]===t)return e;return-1},B("M",["MM",2],"Mo",(function(){return this.month()+1})),B("MMM",0,0,(function(t){return this.localeData().monthsShort(this,t)})),B("MMMM",0,0,(function(t){return this.localeData().months(this,t)})),F("month","M"),E("month",8),ut("M",J),ut("MM",J,q),ut("MMM",(function(t,e){return e.monthsShortRegex(t)})),ut("MMMM",(function(t,e){return e.monthsRegex(t)})),ft(["M","MM"],(function(t,e){e[1]=w(t)-1})),ft(["MMM","MMMM"],(function(t,e,n,r){var i=n._locale.monthsParse(t,r,n._strict);null!=i?e[1]=i:f(n).invalidMonth=t}));var Mt=/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/,St="January_February_March_April_May_June_July_August_September_October_November_December".split("_"),Dt="Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_");function Ct(t,e,n){var r,i,a,o=t.toLocaleLowerCase();if(!this._monthsParse)for(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[],r=0;r<12;++r)a=d([2e3,r]),this._shortMonthsParse[r]=this.monthsShort(a,"").toLocaleLowerCase(),this._longMonthsParse[r]=this.months(a,"").toLocaleLowerCase();return n?"MMM"===e?-1!==(i=yt.call(this._shortMonthsParse,o))?i:null:-1!==(i=yt.call(this._longMonthsParse,o))?i:null:"MMM"===e?-1!==(i=yt.call(this._shortMonthsParse,o))?i:-1!==(i=yt.call(this._longMonthsParse,o))?i:null:-1!==(i=yt.call(this._longMonthsParse,o))?i:-1!==(i=yt.call(this._shortMonthsParse,o))?i:null}function Ot(t,e){var n;if(!t.isValid())return t;if("string"==typeof e)if(/^\d+$/.test(e))e=w(e);else if(!s(e=t.localeData().monthsParse(e)))return t;return n=Math.min(t.date(),kt(t.year(),e)),t._d["set"+(t._isUTC?"UTC":"")+"Month"](e,n),t}function Tt(t){return null!=t?(Ot(this,t),r.updateOffset(this,!0),this):_t(this,"Month")}var Pt=st,At=st;function It(){function t(t,e){return e.length-t.length}var e,n,r=[],i=[],a=[];for(e=0;e<12;e++)n=d([2e3,e]),r.push(this.monthsShort(n,"")),i.push(this.months(n,"")),a.push(this.months(n,"")),a.push(this.monthsShort(n,""));for(r.sort(t),i.sort(t),a.sort(t),e=0;e<12;e++)r[e]=ht(r[e]),i[e]=ht(i[e]);for(e=0;e<24;e++)a[e]=ht(a[e]);this._monthsRegex=new RegExp("^("+a.join("|")+")","i"),this._monthsShortRegex=this._monthsRegex,this._monthsStrictRegex=new RegExp("^("+i.join("|")+")","i"),this._monthsShortStrictRegex=new RegExp("^("+r.join("|")+")","i")}function Ft(t,e,n,r,i,a,o){var s;return t<100&&t>=0?(s=new Date(t+400,e,n,r,i,a,o),isFinite(s.getFullYear())&&s.setFullYear(t)):s=new Date(t,e,n,r,i,a,o),s}function Lt(t){var e;if(t<100&&t>=0){var n=Array.prototype.slice.call(arguments);n[0]=t+400,e=new Date(Date.UTC.apply(null,n)),isFinite(e.getUTCFullYear())&&e.setUTCFullYear(t)}else e=new Date(Date.UTC.apply(null,arguments));return e}function Rt(t,e,n){var r=7+e-n;return-(7+Lt(t,0,r).getUTCDay()-e)%7+r-1}function Nt(t,e,n,r,i){var a,o,s=1+7*(e-1)+(7+n-r)%7+Rt(t,r,i);return s<=0?o=mt(a=t-1)+s:s>mt(t)?(a=t+1,o=s-mt(t)):(a=t,o=s),{year:a,dayOfYear:o}}function Et(t,e,n){var r,i,a=Rt(t.year(),e,n),o=Math.floor((t.dayOfYear()-a-1)/7)+1;return o<1?r=o+jt(i=t.year()-1,e,n):o>jt(t.year(),e,n)?(r=o-jt(t.year(),e,n),i=t.year()+1):(i=t.year(),r=o),{week:r,year:i}}function jt(t,e,n){var r=Rt(t,e,n),i=Rt(t+1,e,n);return(mt(t)-r+i)/7}function zt(t,e){return t.slice(e,7).concat(t.slice(0,e))}B("w",["ww",2],"wo","week"),B("W",["WW",2],"Wo","isoWeek"),F("week","w"),F("isoWeek","W"),E("week",5),E("isoWeek",5),ut("w",J),ut("ww",J,q),ut("W",J),ut("WW",J,q),pt(["w","ww","W","WW"],(function(t,e,n,r){e[r.substr(0,1)]=w(t)})),B("d",0,"do","day"),B("dd",0,0,(function(t){return this.localeData().weekdaysMin(this,t)})),B("ddd",0,0,(function(t){return this.localeData().weekdaysShort(this,t)})),B("dddd",0,0,(function(t){return this.localeData().weekdays(this,t)})),B("e",0,0,"weekday"),B("E",0,0,"isoWeekday"),F("day","d"),F("weekday","e"),F("isoWeekday","E"),E("day",11),E("weekday",11),E("isoWeekday",11),ut("d",J),ut("e",J),ut("E",J),ut("dd",(function(t,e){return e.weekdaysMinRegex(t)})),ut("ddd",(function(t,e){return e.weekdaysShortRegex(t)})),ut("dddd",(function(t,e){return e.weekdaysRegex(t)})),pt(["dd","ddd","dddd"],(function(t,e,n,r){var i=n._locale.weekdaysParse(t,r,n._strict);null!=i?e.d=i:f(n).invalidWeekday=t})),pt(["d","e","E"],(function(t,e,n,r){e[r]=w(t)}));var Wt="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),Yt="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),Vt="Su_Mo_Tu_We_Th_Fr_Sa".split("_");function Bt(t,e,n){var r,i,a,o=t.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],r=0;r<7;++r)a=d([2e3,1]).day(r),this._minWeekdaysParse[r]=this.weekdaysMin(a,"").toLocaleLowerCase(),this._shortWeekdaysParse[r]=this.weekdaysShort(a,"").toLocaleLowerCase(),this._weekdaysParse[r]=this.weekdays(a,"").toLocaleLowerCase();return n?"dddd"===e?-1!==(i=yt.call(this._weekdaysParse,o))?i:null:"ddd"===e?-1!==(i=yt.call(this._shortWeekdaysParse,o))?i:null:-1!==(i=yt.call(this._minWeekdaysParse,o))?i:null:"dddd"===e?-1!==(i=yt.call(this._weekdaysParse,o))?i:-1!==(i=yt.call(this._shortWeekdaysParse,o))?i:-1!==(i=yt.call(this._minWeekdaysParse,o))?i:null:"ddd"===e?-1!==(i=yt.call(this._shortWeekdaysParse,o))?i:-1!==(i=yt.call(this._weekdaysParse,o))?i:-1!==(i=yt.call(this._minWeekdaysParse,o))?i:null:-1!==(i=yt.call(this._minWeekdaysParse,o))?i:-1!==(i=yt.call(this._weekdaysParse,o))?i:-1!==(i=yt.call(this._shortWeekdaysParse,o))?i:null}var Ht=st,Ut=st,Gt=st;function qt(){function t(t,e){return e.length-t.length}var e,n,r,i,a,o=[],s=[],l=[],u=[];for(e=0;e<7;e++)n=d([2e3,1]).day(e),r=this.weekdaysMin(n,""),i=this.weekdaysShort(n,""),a=this.weekdays(n,""),o.push(r),s.push(i),l.push(a),u.push(r),u.push(i),u.push(a);for(o.sort(t),s.sort(t),l.sort(t),u.sort(t),e=0;e<7;e++)s[e]=ht(s[e]),l[e]=ht(l[e]),u[e]=ht(u[e]);this._weekdaysRegex=new RegExp("^("+u.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+l.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+s.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+o.join("|")+")","i")}function Kt(){return this.hours()%12||12}function Zt(t,e){B(t,0,0,(function(){return this.localeData().meridiem(this.hours(),this.minutes(),e)}))}function Xt(t,e){return e._meridiemParse}B("H",["HH",2],0,"hour"),B("h",["hh",2],0,Kt),B("k",["kk",2],0,(function(){return this.hours()||24})),B("hmm",0,0,(function(){return""+Kt.apply(this)+j(this.minutes(),2)})),B("hmmss",0,0,(function(){return""+Kt.apply(this)+j(this.minutes(),2)+j(this.seconds(),2)})),B("Hmm",0,0,(function(){return""+this.hours()+j(this.minutes(),2)})),B("Hmmss",0,0,(function(){return""+this.hours()+j(this.minutes(),2)+j(this.seconds(),2)})),Zt("a",!0),Zt("A",!1),F("hour","h"),E("hour",13),ut("a",Xt),ut("A",Xt),ut("H",J),ut("h",J),ut("k",J),ut("HH",J,q),ut("hh",J,q),ut("kk",J,q),ut("hmm",$),ut("hmmss",Q),ut("Hmm",$),ut("Hmmss",Q),ft(["H","HH"],3),ft(["k","kk"],(function(t,e,n){var r=w(t);e[3]=24===r?0:r})),ft(["a","A"],(function(t,e,n){n._isPm=n._locale.isPM(t),n._meridiem=t})),ft(["h","hh"],(function(t,e,n){e[3]=w(t),f(n).bigHour=!0})),ft("hmm",(function(t,e,n){var r=t.length-2;e[3]=w(t.substr(0,r)),e[4]=w(t.substr(r)),f(n).bigHour=!0})),ft("hmmss",(function(t,e,n){var r=t.length-4,i=t.length-2;e[3]=w(t.substr(0,r)),e[4]=w(t.substr(r,2)),e[5]=w(t.substr(i)),f(n).bigHour=!0})),ft("Hmm",(function(t,e,n){var r=t.length-2;e[3]=w(t.substr(0,r)),e[4]=w(t.substr(r))})),ft("Hmmss",(function(t,e,n){var r=t.length-4,i=t.length-2;e[3]=w(t.substr(0,r)),e[4]=w(t.substr(r,2)),e[5]=w(t.substr(i))}));var Jt,$t=xt("Hours",!0),Qt={calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},invalidDate:"Invalid date",ordinal:"%d",dayOfMonthOrdinalParse:/\d{1,2}/,relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},months:St,monthsShort:Dt,week:{dow:0,doy:6},weekdays:Wt,weekdaysMin:Vt,weekdaysShort:Yt,meridiemParse:/[ap]\.?m?\.?/i},te={},ee={};function ne(t){return t?t.toLowerCase().replace("_","-"):t}function re(e){var n=null;if(!te[e]&&void 0!==t&&t&&t.exports)try{n=Jt._abbr,!function(){var t=new Error("Cannot find module 'undefined'");throw t.code="MODULE_NOT_FOUND",t}(),ie(n)}catch(r){}return te[e]}function ie(t,e){var n;return t&&((n=o(e)?oe(t):ae(t,e))?Jt=n:"undefined"!=typeof console&&console.warn&&console.warn("Locale "+t+" not found. Did you forget to load it?")),Jt._abbr}function ae(t,e){if(null!==e){var n,r=Qt;if(e.abbr=t,null!=te[t])O("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),r=te[t]._config;else if(null!=e.parentLocale)if(null!=te[e.parentLocale])r=te[e.parentLocale]._config;else{if(null==(n=re(e.parentLocale)))return ee[e.parentLocale]||(ee[e.parentLocale]=[]),ee[e.parentLocale].push({name:t,config:e}),null;r=n._config}return te[t]=new A(P(r,e)),ee[t]&&ee[t].forEach((function(t){ae(t.name,t.config)})),ie(t),te[t]}return delete te[t],null}function oe(t){var e;if(t&&t._locale&&t._locale._abbr&&(t=t._locale._abbr),!t)return Jt;if(!i(t)){if(e=re(t))return e;t=[t]}return function(t){for(var e,n,r,i,a=0;a<t.length;){for(e=(i=ne(t[a]).split("-")).length,n=(n=ne(t[a+1]))?n.split("-"):null;e>0;){if(r=re(i.slice(0,e).join("-")))return r;if(n&&n.length>=e&&k(i,n,!0)>=e-1)break;e--}a++}return Jt}(t)}function se(t){var e,n=t._a;return n&&-2===f(t).overflow&&(e=n[1]<0||n[1]>11?1:n[2]<1||n[2]>kt(n[0],n[1])?2:n[3]<0||n[3]>24||24===n[3]&&(0!==n[4]||0!==n[5]||0!==n[6])?3:n[4]<0||n[4]>59?4:n[5]<0||n[5]>59?5:n[6]<0||n[6]>999?6:-1,f(t)._overflowDayOfYear&&(e<0||e>2)&&(e=2),f(t)._overflowWeeks&&-1===e&&(e=7),f(t)._overflowWeekday&&-1===e&&(e=8),f(t).overflow=e),t}function le(t,e,n){return null!=t?t:null!=e?e:n}function ue(t){var e,n,i,a,o,s=[];if(!t._d){for(i=function(t){var e=new Date(r.now());return t._useUTC?[e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()]:[e.getFullYear(),e.getMonth(),e.getDate()]}(t),t._w&&null==t._a[2]&&null==t._a[1]&&function(t){var e,n,r,i,a,o,s,l;if(null!=(e=t._w).GG||null!=e.W||null!=e.E)a=1,o=4,n=le(e.GG,t._a[0],Et(Me(),1,4).year),r=le(e.W,1),((i=le(e.E,1))<1||i>7)&&(l=!0);else{a=t._locale._week.dow,o=t._locale._week.doy;var u=Et(Me(),a,o);n=le(e.gg,t._a[0],u.year),r=le(e.w,u.week),null!=e.d?((i=e.d)<0||i>6)&&(l=!0):null!=e.e?(i=e.e+a,(e.e<0||e.e>6)&&(l=!0)):i=a}r<1||r>jt(n,a,o)?f(t)._overflowWeeks=!0:null!=l?f(t)._overflowWeekday=!0:(s=Nt(n,r,i,a,o),t._a[0]=s.year,t._dayOfYear=s.dayOfYear)}(t),null!=t._dayOfYear&&(o=le(t._a[0],i[0]),(t._dayOfYear>mt(o)||0===t._dayOfYear)&&(f(t)._overflowDayOfYear=!0),n=Lt(o,0,t._dayOfYear),t._a[1]=n.getUTCMonth(),t._a[2]=n.getUTCDate()),e=0;e<3&&null==t._a[e];++e)t._a[e]=s[e]=i[e];for(;e<7;e++)t._a[e]=s[e]=null==t._a[e]?2===e?1:0:t._a[e];24===t._a[3]&&0===t._a[4]&&0===t._a[5]&&0===t._a[6]&&(t._nextDay=!0,t._a[3]=0),t._d=(t._useUTC?Lt:Ft).apply(null,s),a=t._useUTC?t._d.getUTCDay():t._d.getDay(),null!=t._tzm&&t._d.setUTCMinutes(t._d.getUTCMinutes()-t._tzm),t._nextDay&&(t._a[3]=24),t._w&&void 0!==t._w.d&&t._w.d!==a&&(f(t).weekdayMismatch=!0)}}var ce=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,he=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,de=/Z|[+-]\d\d(?::?\d\d)?/,fe=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/]],pe=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],ge=/^\/?Date\((\-?\d+)/i;function me(t){var e,n,r,i,a,o,s=t._i,l=ce.exec(s)||he.exec(s);if(l){for(f(t).iso=!0,e=0,n=fe.length;e<n;e++)if(fe[e][1].exec(l[1])){i=fe[e][0],r=!1!==fe[e][2];break}if(null==i)return void(t._isValid=!1);if(l[3]){for(e=0,n=pe.length;e<n;e++)if(pe[e][1].exec(l[3])){a=(l[2]||" ")+pe[e][0];break}if(null==a)return void(t._isValid=!1)}if(!r&&null!=a)return void(t._isValid=!1);if(l[4]){if(!de.exec(l[4]))return void(t._isValid=!1);o="Z"}t._f=i+(a||"")+(o||""),_e(t)}else t._isValid=!1}var ve=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/;function ye(t){var e=parseInt(t,10);return e<=49?2e3+e:e<=999?1900+e:e}var be={UT:0,GMT:0,EDT:-240,EST:-300,CDT:-300,CST:-360,MDT:-360,MST:-420,PDT:-420,PST:-480};function xe(t){var e,n,r,i,a,o,s,l=ve.exec(t._i.replace(/\([^)]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").replace(/^\s\s*/,"").replace(/\s\s*$/,""));if(l){var u=(e=l[4],n=l[3],r=l[2],i=l[5],a=l[6],o=l[7],s=[ye(e),Dt.indexOf(n),parseInt(r,10),parseInt(i,10),parseInt(a,10)],o&&s.push(parseInt(o,10)),s);if(!function(t,e,n){return!t||Yt.indexOf(t)===new Date(e[0],e[1],e[2]).getDay()||(f(n).weekdayMismatch=!0,n._isValid=!1,!1)}(l[1],u,t))return;t._a=u,t._tzm=function(t,e,n){if(t)return be[t];if(e)return 0;var r=parseInt(n,10),i=r%100;return(r-i)/100*60+i}(l[8],l[9],l[10]),t._d=Lt.apply(null,t._a),t._d.setUTCMinutes(t._d.getUTCMinutes()-t._tzm),f(t).rfc2822=!0}else t._isValid=!1}function _e(t){if(t._f!==r.ISO_8601)if(t._f!==r.RFC_2822){t._a=[],f(t).empty=!0;var e,n,i,a,o,s=""+t._i,l=s.length,u=0;for(i=U(t._f,t._locale).match(z)||[],e=0;e<i.length;e++)a=i[e],(n=(s.match(ct(a,t))||[])[0])&&((o=s.substr(0,s.indexOf(n))).length>0&&f(t).unusedInput.push(o),s=s.slice(s.indexOf(n)+n.length),u+=n.length),V[a]?(n?f(t).empty=!1:f(t).unusedTokens.push(a),gt(a,n,t)):t._strict&&!n&&f(t).unusedTokens.push(a);f(t).charsLeftOver=l-u,s.length>0&&f(t).unusedInput.push(s),t._a[3]<=12&&!0===f(t).bigHour&&t._a[3]>0&&(f(t).bigHour=void 0),f(t).parsedDateParts=t._a.slice(0),f(t).meridiem=t._meridiem,t._a[3]=function(t,e,n){var r;return null==n?e:null!=t.meridiemHour?t.meridiemHour(e,n):null!=t.isPM?((r=t.isPM(n))&&e<12&&(e+=12),r||12!==e||(e=0),e):e}(t._locale,t._a[3],t._meridiem),ue(t),se(t)}else xe(t);else me(t)}function we(t){var e=t._i,n=t._f;return t._locale=t._locale||oe(t._l),null===e||void 0===n&&""===e?g({nullInput:!0}):("string"==typeof e&&(t._i=e=t._locale.preparse(e)),x(e)?new b(se(e)):(l(e)?t._d=e:i(n)?function(t){var e,n,r,i,a;if(0===t._f.length)return f(t).invalidFormat=!0,void(t._d=new Date(NaN));for(i=0;i<t._f.length;i++)a=0,e=v({},t),null!=t._useUTC&&(e._useUTC=t._useUTC),e._f=t._f[i],_e(e),p(e)&&(a+=f(e).charsLeftOver,a+=10*f(e).unusedTokens.length,f(e).score=a,(null==r||a<r)&&(r=a,n=e));h(t,n||e)}(t):n?_e(t):function(t){var e=t._i;o(e)?t._d=new Date(r.now()):l(e)?t._d=new Date(e.valueOf()):"string"==typeof e?function(t){var e=ge.exec(t._i);null===e?(me(t),!1===t._isValid&&(delete t._isValid,xe(t),!1===t._isValid&&(delete t._isValid,r.createFromInputFallback(t)))):t._d=new Date(+e[1])}(t):i(e)?(t._a=u(e.slice(0),(function(t){return parseInt(t,10)})),ue(t)):a(e)?function(t){if(!t._d){var e=R(t._i);t._a=u([e.year,e.month,e.day||e.date,e.hour,e.minute,e.second,e.millisecond],(function(t){return t&&parseInt(t,10)})),ue(t)}}(t):s(e)?t._d=new Date(e):r.createFromInputFallback(t)}(t),p(t)||(t._d=null),t))}function ke(t,e,n,r,o){var s,l={};return!0!==n&&!1!==n||(r=n,n=void 0),(a(t)&&function(t){if(Object.getOwnPropertyNames)return 0===Object.getOwnPropertyNames(t).length;var e;for(e in t)if(t.hasOwnProperty(e))return!1;return!0}(t)||i(t)&&0===t.length)&&(t=void 0),l._isAMomentObject=!0,l._useUTC=l._isUTC=o,l._l=n,l._i=t,l._f=e,l._strict=r,(s=new b(se(we(l))))._nextDay&&(s.add(1,"d"),s._nextDay=void 0),s}function Me(t,e,n,r){return ke(t,e,n,r,!1)}r.createFromInputFallback=S("value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are discouraged and will be removed in an upcoming major release. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.",(function(t){t._d=new Date(t._i+(t._useUTC?" UTC":""))})),r.ISO_8601=function(){},r.RFC_2822=function(){};var Se=S("moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/",(function(){var t=Me.apply(null,arguments);return this.isValid()&&t.isValid()?t<this?this:t:g()})),De=S("moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/",(function(){var t=Me.apply(null,arguments);return this.isValid()&&t.isValid()?t>this?this:t:g()}));function Ce(t,e){var n,r;if(1===e.length&&i(e[0])&&(e=e[0]),!e.length)return Me();for(n=e[0],r=1;r<e.length;++r)e[r].isValid()&&!e[r][t](n)||(n=e[r]);return n}var Oe=["year","quarter","month","week","day","hour","minute","second","millisecond"];function Te(t){var e=R(t),n=e.year||0,r=e.quarter||0,i=e.month||0,a=e.week||e.isoWeek||0,o=e.day||0,s=e.hour||0,l=e.minute||0,u=e.second||0,c=e.millisecond||0;this._isValid=function(t){for(var e in t)if(-1===yt.call(Oe,e)||null!=t[e]&&isNaN(t[e]))return!1;for(var n=!1,r=0;r<Oe.length;++r)if(t[Oe[r]]){if(n)return!1;parseFloat(t[Oe[r]])!==w(t[Oe[r]])&&(n=!0)}return!0}(e),this._milliseconds=+c+1e3*u+6e4*l+1e3*s*60*60,this._days=+o+7*a,this._months=+i+3*r+12*n,this._data={},this._locale=oe(),this._bubble()}function Pe(t){return t instanceof Te}function Ae(t){return t<0?-1*Math.round(-1*t):Math.round(t)}function Ie(t,e){B(t,0,0,(function(){var t=this.utcOffset(),n="+";return t<0&&(t=-t,n="-"),n+j(~~(t/60),2)+e+j(~~t%60,2)}))}Ie("Z",":"),Ie("ZZ",""),ut("Z",ot),ut("ZZ",ot),ft(["Z","ZZ"],(function(t,e,n){n._useUTC=!0,n._tzm=Le(ot,t)}));var Fe=/([\+\-]|\d\d)/gi;function Le(t,e){var n=(e||"").match(t);if(null===n)return null;var r=((n[n.length-1]||[])+"").match(Fe)||["-",0,0],i=60*r[1]+w(r[2]);return 0===i?0:"+"===r[0]?i:-i}function Re(t,e){var n,i;return e._isUTC?(n=e.clone(),i=(x(t)||l(t)?t.valueOf():Me(t).valueOf())-n.valueOf(),n._d.setTime(n._d.valueOf()+i),r.updateOffset(n,!1),n):Me(t).local()}function Ne(t){return 15*-Math.round(t._d.getTimezoneOffset()/15)}function Ee(){return!!this.isValid()&&this._isUTC&&0===this._offset}r.updateOffset=function(){};var je=/^(\-|\+)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)(\.\d*)?)?$/,ze=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;function We(t,e){var n,r,i,a,o,l,u=t,h=null;return Pe(t)?u={ms:t._milliseconds,d:t._days,M:t._months}:s(t)?(u={},e?u[e]=t:u.milliseconds=t):(h=je.exec(t))?(n="-"===h[1]?-1:1,u={y:0,d:w(h[2])*n,h:w(h[3])*n,m:w(h[4])*n,s:w(h[5])*n,ms:w(Ae(1e3*h[6]))*n}):(h=ze.exec(t))?(n="-"===h[1]?-1:1,u={y:Ye(h[2],n),M:Ye(h[3],n),w:Ye(h[4],n),d:Ye(h[5],n),h:Ye(h[6],n),m:Ye(h[7],n),s:Ye(h[8],n)}):null==u?u={}:"object"==typeof u&&("from"in u||"to"in u)&&(a=Me(u.from),o=Me(u.to),i=a.isValid()&&o.isValid()?(o=Re(o,a),a.isBefore(o)?l=Ve(a,o):((l=Ve(o,a)).milliseconds=-l.milliseconds,l.months=-l.months),l):{milliseconds:0,months:0},(u={}).ms=i.milliseconds,u.M=i.months),r=new Te(u),Pe(t)&&c(t,"_locale")&&(r._locale=t._locale),r}function Ye(t,e){var n=t&&parseFloat(t.replace(",","."));return(isNaN(n)?0:n)*e}function Ve(t,e){var n={};return n.months=e.month()-t.month()+12*(e.year()-t.year()),t.clone().add(n.months,"M").isAfter(e)&&--n.months,n.milliseconds=+e-+t.clone().add(n.months,"M"),n}function Be(t,e){return function(n,r){var i;return null===r||isNaN(+r)||(O(e,"moment()."+e+"(period, number) is deprecated. Please use moment()."+e+"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."),i=n,n=r,r=i),He(this,We(n="string"==typeof n?+n:n,r),t),this}}function He(t,e,n,i){var a=e._milliseconds,o=Ae(e._days),s=Ae(e._months);t.isValid()&&(i=null==i||i,s&&Ot(t,_t(t,"Month")+s*n),o&&wt(t,"Date",_t(t,"Date")+o*n),a&&t._d.setTime(t._d.valueOf()+a*n),i&&r.updateOffset(t,o||s))}We.fn=Te.prototype,We.invalid=function(){return We(NaN)};var Ue=Be(1,"add"),Ge=Be(-1,"subtract");function qe(t,e){var n=12*(e.year()-t.year())+(e.month()-t.month()),r=t.clone().add(n,"months");return-(n+(e-r<0?(e-r)/(r-t.clone().add(n-1,"months")):(e-r)/(t.clone().add(n+1,"months")-r)))||0}function Ke(t){var e;return void 0===t?this._locale._abbr:(null!=(e=oe(t))&&(this._locale=e),this)}r.defaultFormat="YYYY-MM-DDTHH:mm:ssZ",r.defaultFormatUtc="YYYY-MM-DDTHH:mm:ss[Z]";var Ze=S("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",(function(t){return void 0===t?this.localeData():this.locale(t)}));function Xe(){return this._locale}function Je(t,e){return(t%e+e)%e}function $e(t,e,n){return t<100&&t>=0?new Date(t+400,e,n)-126227808e5:new Date(t,e,n).valueOf()}function Qe(t,e,n){return t<100&&t>=0?Date.UTC(t+400,e,n)-126227808e5:Date.UTC(t,e,n)}function tn(t,e){B(0,[t,t.length],0,e)}function en(t,e,n,r,i){var a;return null==t?Et(this,r,i).year:(e>(a=jt(t,r,i))&&(e=a),nn.call(this,t,e,n,r,i))}function nn(t,e,n,r,i){var a=Nt(t,e,n,r,i),o=Lt(a.year,0,a.dayOfYear);return this.year(o.getUTCFullYear()),this.month(o.getUTCMonth()),this.date(o.getUTCDate()),this}B(0,["gg",2],0,(function(){return this.weekYear()%100})),B(0,["GG",2],0,(function(){return this.isoWeekYear()%100})),tn("gggg","weekYear"),tn("ggggg","weekYear"),tn("GGGG","isoWeekYear"),tn("GGGGG","isoWeekYear"),F("weekYear","gg"),F("isoWeekYear","GG"),E("weekYear",1),E("isoWeekYear",1),ut("G",it),ut("g",it),ut("GG",J,q),ut("gg",J,q),ut("GGGG",et,Z),ut("gggg",et,Z),ut("GGGGG",nt,X),ut("ggggg",nt,X),pt(["gggg","ggggg","GGGG","GGGGG"],(function(t,e,n,r){e[r.substr(0,2)]=w(t)})),pt(["gg","GG"],(function(t,e,n,i){e[i]=r.parseTwoDigitYear(t)})),B("Q",0,"Qo","quarter"),F("quarter","Q"),E("quarter",7),ut("Q",G),ft("Q",(function(t,e){e[1]=3*(w(t)-1)})),B("D",["DD",2],"Do","date"),F("date","D"),E("date",9),ut("D",J),ut("DD",J,q),ut("Do",(function(t,e){return t?e._dayOfMonthOrdinalParse||e._ordinalParse:e._dayOfMonthOrdinalParseLenient})),ft(["D","DD"],2),ft("Do",(function(t,e){e[2]=w(t.match(J)[0])}));var rn=xt("Date",!0);B("DDD",["DDDD",3],"DDDo","dayOfYear"),F("dayOfYear","DDD"),E("dayOfYear",4),ut("DDD",tt),ut("DDDD",K),ft(["DDD","DDDD"],(function(t,e,n){n._dayOfYear=w(t)})),B("m",["mm",2],0,"minute"),F("minute","m"),E("minute",14),ut("m",J),ut("mm",J,q),ft(["m","mm"],4);var an=xt("Minutes",!1);B("s",["ss",2],0,"second"),F("second","s"),E("second",15),ut("s",J),ut("ss",J,q),ft(["s","ss"],5);var on,sn=xt("Seconds",!1);for(B("S",0,0,(function(){return~~(this.millisecond()/100)})),B(0,["SS",2],0,(function(){return~~(this.millisecond()/10)})),B(0,["SSS",3],0,"millisecond"),B(0,["SSSS",4],0,(function(){return 10*this.millisecond()})),B(0,["SSSSS",5],0,(function(){return 100*this.millisecond()})),B(0,["SSSSSS",6],0,(function(){return 1e3*this.millisecond()})),B(0,["SSSSSSS",7],0,(function(){return 1e4*this.millisecond()})),B(0,["SSSSSSSS",8],0,(function(){return 1e5*this.millisecond()})),B(0,["SSSSSSSSS",9],0,(function(){return 1e6*this.millisecond()})),F("millisecond","ms"),E("millisecond",16),ut("S",tt,G),ut("SS",tt,q),ut("SSS",tt,K),on="SSSS";on.length<=9;on+="S")ut(on,rt);function ln(t,e){e[6]=w(1e3*("0."+t))}for(on="S";on.length<=9;on+="S")ft(on,ln);var un=xt("Milliseconds",!1);B("z",0,0,"zoneAbbr"),B("zz",0,0,"zoneName");var cn=b.prototype;function hn(t){return t}cn.add=Ue,cn.calendar=function(t,e){var n=t||Me(),i=Re(n,this).startOf("day"),a=r.calendarFormat(this,i)||"sameElse",o=e&&(T(e[a])?e[a].call(this,n):e[a]);return this.format(o||this.localeData().calendar(a,this,Me(n)))},cn.clone=function(){return new b(this)},cn.diff=function(t,e,n){var r,i,a;if(!this.isValid())return NaN;if(!(r=Re(t,this)).isValid())return NaN;switch(i=6e4*(r.utcOffset()-this.utcOffset()),e=L(e)){case"year":a=qe(this,r)/12;break;case"month":a=qe(this,r);break;case"quarter":a=qe(this,r)/3;break;case"second":a=(this-r)/1e3;break;case"minute":a=(this-r)/6e4;break;case"hour":a=(this-r)/36e5;break;case"day":a=(this-r-i)/864e5;break;case"week":a=(this-r-i)/6048e5;break;default:a=this-r}return n?a:_(a)},cn.endOf=function(t){var e;if(void 0===(t=L(t))||"millisecond"===t||!this.isValid())return this;var n=this._isUTC?Qe:$e;switch(t){case"year":e=n(this.year()+1,0,1)-1;break;case"quarter":e=n(this.year(),this.month()-this.month()%3+3,1)-1;break;case"month":e=n(this.year(),this.month()+1,1)-1;break;case"week":e=n(this.year(),this.month(),this.date()-this.weekday()+7)-1;break;case"isoWeek":e=n(this.year(),this.month(),this.date()-(this.isoWeekday()-1)+7)-1;break;case"day":case"date":e=n(this.year(),this.month(),this.date()+1)-1;break;case"hour":e=this._d.valueOf(),e+=36e5-Je(e+(this._isUTC?0:6e4*this.utcOffset()),36e5)-1;break;case"minute":e=this._d.valueOf(),e+=6e4-Je(e,6e4)-1;break;case"second":e=this._d.valueOf(),e+=1e3-Je(e,1e3)-1}return this._d.setTime(e),r.updateOffset(this,!0),this},cn.format=function(t){t||(t=this.isUtc()?r.defaultFormatUtc:r.defaultFormat);var e=H(this,t);return this.localeData().postformat(e)},cn.from=function(t,e){return this.isValid()&&(x(t)&&t.isValid()||Me(t).isValid())?We({to:this,from:t}).locale(this.locale()).humanize(!e):this.localeData().invalidDate()},cn.fromNow=function(t){return this.from(Me(),t)},cn.to=function(t,e){return this.isValid()&&(x(t)&&t.isValid()||Me(t).isValid())?We({from:this,to:t}).locale(this.locale()).humanize(!e):this.localeData().invalidDate()},cn.toNow=function(t){return this.to(Me(),t)},cn.get=function(t){return T(this[t=L(t)])?this[t]():this},cn.invalidAt=function(){return f(this).overflow},cn.isAfter=function(t,e){var n=x(t)?t:Me(t);return!(!this.isValid()||!n.isValid())&&("millisecond"===(e=L(e)||"millisecond")?this.valueOf()>n.valueOf():n.valueOf()<this.clone().startOf(e).valueOf())},cn.isBefore=function(t,e){var n=x(t)?t:Me(t);return!(!this.isValid()||!n.isValid())&&("millisecond"===(e=L(e)||"millisecond")?this.valueOf()<n.valueOf():this.clone().endOf(e).valueOf()<n.valueOf())},cn.isBetween=function(t,e,n,r){var i=x(t)?t:Me(t),a=x(e)?e:Me(e);return!!(this.isValid()&&i.isValid()&&a.isValid())&&("("===(r=r||"()")[0]?this.isAfter(i,n):!this.isBefore(i,n))&&(")"===r[1]?this.isBefore(a,n):!this.isAfter(a,n))},cn.isSame=function(t,e){var n,r=x(t)?t:Me(t);return!(!this.isValid()||!r.isValid())&&("millisecond"===(e=L(e)||"millisecond")?this.valueOf()===r.valueOf():(n=r.valueOf(),this.clone().startOf(e).valueOf()<=n&&n<=this.clone().endOf(e).valueOf()))},cn.isSameOrAfter=function(t,e){return this.isSame(t,e)||this.isAfter(t,e)},cn.isSameOrBefore=function(t,e){return this.isSame(t,e)||this.isBefore(t,e)},cn.isValid=function(){return p(this)},cn.lang=Ze,cn.locale=Ke,cn.localeData=Xe,cn.max=De,cn.min=Se,cn.parsingFlags=function(){return h({},f(this))},cn.set=function(t,e){if("object"==typeof t)for(var n=function(t){var e=[];for(var n in t)e.push({unit:n,priority:N[n]});return e.sort((function(t,e){return t.priority-e.priority})),e}(t=R(t)),r=0;r<n.length;r++)this[n[r].unit](t[n[r].unit]);else if(T(this[t=L(t)]))return this[t](e);return this},cn.startOf=function(t){var e;if(void 0===(t=L(t))||"millisecond"===t||!this.isValid())return this;var n=this._isUTC?Qe:$e;switch(t){case"year":e=n(this.year(),0,1);break;case"quarter":e=n(this.year(),this.month()-this.month()%3,1);break;case"month":e=n(this.year(),this.month(),1);break;case"week":e=n(this.year(),this.month(),this.date()-this.weekday());break;case"isoWeek":e=n(this.year(),this.month(),this.date()-(this.isoWeekday()-1));break;case"day":case"date":e=n(this.year(),this.month(),this.date());break;case"hour":e=this._d.valueOf(),e-=Je(e+(this._isUTC?0:6e4*this.utcOffset()),36e5);break;case"minute":e=this._d.valueOf(),e-=Je(e,6e4);break;case"second":e=this._d.valueOf(),e-=Je(e,1e3)}return this._d.setTime(e),r.updateOffset(this,!0),this},cn.subtract=Ge,cn.toArray=function(){var t=this;return[t.year(),t.month(),t.date(),t.hour(),t.minute(),t.second(),t.millisecond()]},cn.toObject=function(){var t=this;return{years:t.year(),months:t.month(),date:t.date(),hours:t.hours(),minutes:t.minutes(),seconds:t.seconds(),milliseconds:t.milliseconds()}},cn.toDate=function(){return new Date(this.valueOf())},cn.toISOString=function(t){if(!this.isValid())return null;var e=!0!==t,n=e?this.clone().utc():this;return n.year()<0||n.year()>9999?H(n,e?"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ"):T(Date.prototype.toISOString)?e?this.toDate().toISOString():new Date(this.valueOf()+60*this.utcOffset()*1e3).toISOString().replace("Z",H(n,"Z")):H(n,e?"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYY-MM-DD[T]HH:mm:ss.SSSZ")},cn.inspect=function(){if(!this.isValid())return"moment.invalid(/* "+this._i+" */)";var t="moment",e="";this.isLocal()||(t=0===this.utcOffset()?"moment.utc":"moment.parseZone",e="Z");var n="["+t+'("]',r=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY",i=e+'[")]';return this.format(n+r+"-MM-DD[T]HH:mm:ss.SSS"+i)},cn.toJSON=function(){return this.isValid()?this.toISOString():null},cn.toString=function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},cn.unix=function(){return Math.floor(this.valueOf()/1e3)},cn.valueOf=function(){return this._d.valueOf()-6e4*(this._offset||0)},cn.creationData=function(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}},cn.year=bt,cn.isLeapYear=function(){return vt(this.year())},cn.weekYear=function(t){return en.call(this,t,this.week(),this.weekday(),this.localeData()._week.dow,this.localeData()._week.doy)},cn.isoWeekYear=function(t){return en.call(this,t,this.isoWeek(),this.isoWeekday(),1,4)},cn.quarter=cn.quarters=function(t){return null==t?Math.ceil((this.month()+1)/3):this.month(3*(t-1)+this.month()%3)},cn.month=Tt,cn.daysInMonth=function(){return kt(this.year(),this.month())},cn.week=cn.weeks=function(t){var e=this.localeData().week(this);return null==t?e:this.add(7*(t-e),"d")},cn.isoWeek=cn.isoWeeks=function(t){var e=Et(this,1,4).week;return null==t?e:this.add(7*(t-e),"d")},cn.weeksInYear=function(){var t=this.localeData()._week;return jt(this.year(),t.dow,t.doy)},cn.isoWeeksInYear=function(){return jt(this.year(),1,4)},cn.date=rn,cn.day=cn.days=function(t){if(!this.isValid())return null!=t?this:NaN;var e=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=t?(t=function(t,e){return"string"!=typeof t?t:isNaN(t)?"number"==typeof(t=e.weekdaysParse(t))?t:null:parseInt(t,10)}(t,this.localeData()),this.add(t-e,"d")):e},cn.weekday=function(t){if(!this.isValid())return null!=t?this:NaN;var e=(this.day()+7-this.localeData()._week.dow)%7;return null==t?e:this.add(t-e,"d")},cn.isoWeekday=function(t){if(!this.isValid())return null!=t?this:NaN;if(null!=t){var e=function(t,e){return"string"==typeof t?e.weekdaysParse(t)%7||7:isNaN(t)?null:t}(t,this.localeData());return this.day(this.day()%7?e:e-7)}return this.day()||7},cn.dayOfYear=function(t){var e=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==t?e:this.add(t-e,"d")},cn.hour=cn.hours=$t,cn.minute=cn.minutes=an,cn.second=cn.seconds=sn,cn.millisecond=cn.milliseconds=un,cn.utcOffset=function(t,e,n){var i,a=this._offset||0;if(!this.isValid())return null!=t?this:NaN;if(null!=t){if("string"==typeof t){if(null===(t=Le(ot,t)))return this}else Math.abs(t)<16&&!n&&(t*=60);return!this._isUTC&&e&&(i=Ne(this)),this._offset=t,this._isUTC=!0,null!=i&&this.add(i,"m"),a!==t&&(!e||this._changeInProgress?He(this,We(t-a,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,r.updateOffset(this,!0),this._changeInProgress=null)),this}return this._isUTC?a:Ne(this)},cn.utc=function(t){return this.utcOffset(0,t)},cn.local=function(t){return this._isUTC&&(this.utcOffset(0,t),this._isUTC=!1,t&&this.subtract(Ne(this),"m")),this},cn.parseZone=function(){if(null!=this._tzm)this.utcOffset(this._tzm,!1,!0);else if("string"==typeof this._i){var t=Le(at,this._i);null!=t?this.utcOffset(t):this.utcOffset(0,!0)}return this},cn.hasAlignedHourOffset=function(t){return!!this.isValid()&&(t=t?Me(t).utcOffset():0,(this.utcOffset()-t)%60==0)},cn.isDST=function(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},cn.isLocal=function(){return!!this.isValid()&&!this._isUTC},cn.isUtcOffset=function(){return!!this.isValid()&&this._isUTC},cn.isUtc=Ee,cn.isUTC=Ee,cn.zoneAbbr=function(){return this._isUTC?"UTC":""},cn.zoneName=function(){return this._isUTC?"Coordinated Universal Time":""},cn.dates=S("dates accessor is deprecated. Use date instead.",rn),cn.months=S("months accessor is deprecated. Use month instead",Tt),cn.years=S("years accessor is deprecated. Use year instead",bt),cn.zone=S("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",(function(t,e){return null!=t?("string"!=typeof t&&(t=-t),this.utcOffset(t,e),this):-this.utcOffset()})),cn.isDSTShifted=S("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",(function(){if(!o(this._isDSTShifted))return this._isDSTShifted;var t={};if(v(t,this),(t=we(t))._a){var e=t._isUTC?d(t._a):Me(t._a);this._isDSTShifted=this.isValid()&&k(t._a,e.toArray())>0}else this._isDSTShifted=!1;return this._isDSTShifted}));var dn=A.prototype;function fn(t,e,n,r){var i=oe(),a=d().set(r,e);return i[n](a,t)}function pn(t,e,n){if(s(t)&&(e=t,t=void 0),t=t||"",null!=e)return fn(t,e,n,"month");var r,i=[];for(r=0;r<12;r++)i[r]=fn(t,r,n,"month");return i}function gn(t,e,n,r){"boolean"==typeof t?(s(e)&&(n=e,e=void 0),e=e||""):(n=e=t,t=!1,s(e)&&(n=e,e=void 0),e=e||"");var i,a=oe(),o=t?a._week.dow:0;if(null!=n)return fn(e,(n+o)%7,r,"day");var l=[];for(i=0;i<7;i++)l[i]=fn(e,(i+o)%7,r,"day");return l}dn.calendar=function(t,e,n){var r=this._calendar[t]||this._calendar.sameElse;return T(r)?r.call(e,n):r},dn.longDateFormat=function(t){var e=this._longDateFormat[t],n=this._longDateFormat[t.toUpperCase()];return e||!n?e:(this._longDateFormat[t]=n.replace(/MMMM|MM|DD|dddd/g,(function(t){return t.slice(1)})),this._longDateFormat[t])},dn.invalidDate=function(){return this._invalidDate},dn.ordinal=function(t){return this._ordinal.replace("%d",t)},dn.preparse=hn,dn.postformat=hn,dn.relativeTime=function(t,e,n,r){var i=this._relativeTime[n];return T(i)?i(t,e,n,r):i.replace(/%d/i,t)},dn.pastFuture=function(t,e){var n=this._relativeTime[t>0?"future":"past"];return T(n)?n(e):n.replace(/%s/i,e)},dn.set=function(t){var e,n;for(n in t)T(e=t[n])?this[n]=e:this["_"+n]=e;this._config=t,this._dayOfMonthOrdinalParseLenient=new RegExp((this._dayOfMonthOrdinalParse.source||this._ordinalParse.source)+"|"+/\d{1,2}/.source)},dn.months=function(t,e){return t?i(this._months)?this._months[t.month()]:this._months[(this._months.isFormat||Mt).test(e)?"format":"standalone"][t.month()]:i(this._months)?this._months:this._months.standalone},dn.monthsShort=function(t,e){return t?i(this._monthsShort)?this._monthsShort[t.month()]:this._monthsShort[Mt.test(e)?"format":"standalone"][t.month()]:i(this._monthsShort)?this._monthsShort:this._monthsShort.standalone},dn.monthsParse=function(t,e,n){var r,i,a;if(this._monthsParseExact)return Ct.call(this,t,e,n);for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),r=0;r<12;r++){if(i=d([2e3,r]),n&&!this._longMonthsParse[r]&&(this._longMonthsParse[r]=new RegExp("^"+this.months(i,"").replace(".","")+"$","i"),this._shortMonthsParse[r]=new RegExp("^"+this.monthsShort(i,"").replace(".","")+"$","i")),n||this._monthsParse[r]||(a="^"+this.months(i,"")+"|^"+this.monthsShort(i,""),this._monthsParse[r]=new RegExp(a.replace(".",""),"i")),n&&"MMMM"===e&&this._longMonthsParse[r].test(t))return r;if(n&&"MMM"===e&&this._shortMonthsParse[r].test(t))return r;if(!n&&this._monthsParse[r].test(t))return r}},dn.monthsRegex=function(t){return this._monthsParseExact?(c(this,"_monthsRegex")||It.call(this),t?this._monthsStrictRegex:this._monthsRegex):(c(this,"_monthsRegex")||(this._monthsRegex=At),this._monthsStrictRegex&&t?this._monthsStrictRegex:this._monthsRegex)},dn.monthsShortRegex=function(t){return this._monthsParseExact?(c(this,"_monthsRegex")||It.call(this),t?this._monthsShortStrictRegex:this._monthsShortRegex):(c(this,"_monthsShortRegex")||(this._monthsShortRegex=Pt),this._monthsShortStrictRegex&&t?this._monthsShortStrictRegex:this._monthsShortRegex)},dn.week=function(t){return Et(t,this._week.dow,this._week.doy).week},dn.firstDayOfYear=function(){return this._week.doy},dn.firstDayOfWeek=function(){return this._week.dow},dn.weekdays=function(t,e){var n=i(this._weekdays)?this._weekdays:this._weekdays[t&&!0!==t&&this._weekdays.isFormat.test(e)?"format":"standalone"];return!0===t?zt(n,this._week.dow):t?n[t.day()]:n},dn.weekdaysMin=function(t){return!0===t?zt(this._weekdaysMin,this._week.dow):t?this._weekdaysMin[t.day()]:this._weekdaysMin},dn.weekdaysShort=function(t){return!0===t?zt(this._weekdaysShort,this._week.dow):t?this._weekdaysShort[t.day()]:this._weekdaysShort},dn.weekdaysParse=function(t,e,n){var r,i,a;if(this._weekdaysParseExact)return Bt.call(this,t,e,n);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),r=0;r<7;r++){if(i=d([2e3,1]).day(r),n&&!this._fullWeekdaysParse[r]&&(this._fullWeekdaysParse[r]=new RegExp("^"+this.weekdays(i,"").replace(".","\\.?")+"$","i"),this._shortWeekdaysParse[r]=new RegExp("^"+this.weekdaysShort(i,"").replace(".","\\.?")+"$","i"),this._minWeekdaysParse[r]=new RegExp("^"+this.weekdaysMin(i,"").replace(".","\\.?")+"$","i")),this._weekdaysParse[r]||(a="^"+this.weekdays(i,"")+"|^"+this.weekdaysShort(i,"")+"|^"+this.weekdaysMin(i,""),this._weekdaysParse[r]=new RegExp(a.replace(".",""),"i")),n&&"dddd"===e&&this._fullWeekdaysParse[r].test(t))return r;if(n&&"ddd"===e&&this._shortWeekdaysParse[r].test(t))return r;if(n&&"dd"===e&&this._minWeekdaysParse[r].test(t))return r;if(!n&&this._weekdaysParse[r].test(t))return r}},dn.weekdaysRegex=function(t){return this._weekdaysParseExact?(c(this,"_weekdaysRegex")||qt.call(this),t?this._weekdaysStrictRegex:this._weekdaysRegex):(c(this,"_weekdaysRegex")||(this._weekdaysRegex=Ht),this._weekdaysStrictRegex&&t?this._weekdaysStrictRegex:this._weekdaysRegex)},dn.weekdaysShortRegex=function(t){return this._weekdaysParseExact?(c(this,"_weekdaysRegex")||qt.call(this),t?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(c(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=Ut),this._weekdaysShortStrictRegex&&t?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)},dn.weekdaysMinRegex=function(t){return this._weekdaysParseExact?(c(this,"_weekdaysRegex")||qt.call(this),t?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(c(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=Gt),this._weekdaysMinStrictRegex&&t?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)},dn.isPM=function(t){return"p"===(t+"").toLowerCase().charAt(0)},dn.meridiem=function(t,e,n){return t>11?n?"pm":"PM":n?"am":"AM"},ie("en",{dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(t){var e=t%10;return t+(1===w(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th")}}),r.lang=S("moment.lang is deprecated. Use moment.locale instead.",ie),r.langData=S("moment.langData is deprecated. Use moment.localeData instead.",oe);var mn=Math.abs;function vn(t,e,n,r){var i=We(e,n);return t._milliseconds+=r*i._milliseconds,t._days+=r*i._days,t._months+=r*i._months,t._bubble()}function yn(t){return t<0?Math.floor(t):Math.ceil(t)}function bn(t){return 4800*t/146097}function xn(t){return 146097*t/4800}function _n(t){return function(){return this.as(t)}}var wn=_n("ms"),kn=_n("s"),Mn=_n("m"),Sn=_n("h"),Dn=_n("d"),Cn=_n("w"),On=_n("M"),Tn=_n("Q"),Pn=_n("y");function An(t){return function(){return this.isValid()?this._data[t]:NaN}}var In=An("milliseconds"),Fn=An("seconds"),Ln=An("minutes"),Rn=An("hours"),Nn=An("days"),En=An("months"),jn=An("years"),zn=Math.round,Wn={ss:44,s:45,m:45,h:22,d:26,M:11};function Yn(t,e,n,r,i){return i.relativeTime(e||1,!!n,t,r)}var Vn=Math.abs;function Bn(t){return(t>0)-(t<0)||+t}function Hn(){if(!this.isValid())return this.localeData().invalidDate();var t,e,n=Vn(this._milliseconds)/1e3,r=Vn(this._days),i=Vn(this._months);t=_(n/60),e=_(t/60),n%=60,t%=60;var a=_(i/12),o=i%=12,s=r,l=e,u=t,c=n?n.toFixed(3).replace(/\.?0+$/,""):"",h=this.asSeconds();if(!h)return"P0D";var d=h<0?"-":"",f=Bn(this._months)!==Bn(h)?"-":"",p=Bn(this._days)!==Bn(h)?"-":"",g=Bn(this._milliseconds)!==Bn(h)?"-":"";return d+"P"+(a?f+a+"Y":"")+(o?f+o+"M":"")+(s?p+s+"D":"")+(l||u||c?"T":"")+(l?g+l+"H":"")+(u?g+u+"M":"")+(c?g+c+"S":"")}var Un=Te.prototype;return Un.isValid=function(){return this._isValid},Un.abs=function(){var t=this._data;return this._milliseconds=mn(this._milliseconds),this._days=mn(this._days),this._months=mn(this._months),t.milliseconds=mn(t.milliseconds),t.seconds=mn(t.seconds),t.minutes=mn(t.minutes),t.hours=mn(t.hours),t.months=mn(t.months),t.years=mn(t.years),this},Un.add=function(t,e){return vn(this,t,e,1)},Un.subtract=function(t,e){return vn(this,t,e,-1)},Un.as=function(t){if(!this.isValid())return NaN;var e,n,r=this._milliseconds;if("month"===(t=L(t))||"quarter"===t||"year"===t)switch(e=this._days+r/864e5,n=this._months+bn(e),t){case"month":return n;case"quarter":return n/3;case"year":return n/12}else switch(e=this._days+Math.round(xn(this._months)),t){case"week":return e/7+r/6048e5;case"day":return e+r/864e5;case"hour":return 24*e+r/36e5;case"minute":return 1440*e+r/6e4;case"second":return 86400*e+r/1e3;case"millisecond":return Math.floor(864e5*e)+r;default:throw new Error("Unknown unit "+t)}},Un.asMilliseconds=wn,Un.asSeconds=kn,Un.asMinutes=Mn,Un.asHours=Sn,Un.asDays=Dn,Un.asWeeks=Cn,Un.asMonths=On,Un.asQuarters=Tn,Un.asYears=Pn,Un.valueOf=function(){return this.isValid()?this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*w(this._months/12):NaN},Un._bubble=function(){var t,e,n,r,i,a=this._milliseconds,o=this._days,s=this._months,l=this._data;return a>=0&&o>=0&&s>=0||a<=0&&o<=0&&s<=0||(a+=864e5*yn(xn(s)+o),o=0,s=0),l.milliseconds=a%1e3,t=_(a/1e3),l.seconds=t%60,e=_(t/60),l.minutes=e%60,n=_(e/60),l.hours=n%24,o+=_(n/24),i=_(bn(o)),s+=i,o-=yn(xn(i)),r=_(s/12),s%=12,l.days=o,l.months=s,l.years=r,this},Un.clone=function(){return We(this)},Un.get=function(t){return t=L(t),this.isValid()?this[t+"s"]():NaN},Un.milliseconds=In,Un.seconds=Fn,Un.minutes=Ln,Un.hours=Rn,Un.days=Nn,Un.weeks=function(){return _(this.days()/7)},Un.months=En,Un.years=jn,Un.humanize=function(t){if(!this.isValid())return this.localeData().invalidDate();var e=this.localeData(),n=function(t,e,n){var r=We(t).abs(),i=zn(r.as("s")),a=zn(r.as("m")),o=zn(r.as("h")),s=zn(r.as("d")),l=zn(r.as("M")),u=zn(r.as("y")),c=i<=Wn.ss&&["s",i]||i<Wn.s&&["ss",i]||a<=1&&["m"]||a<Wn.m&&["mm",a]||o<=1&&["h"]||o<Wn.h&&["hh",o]||s<=1&&["d"]||s<Wn.d&&["dd",s]||l<=1&&["M"]||l<Wn.M&&["MM",l]||u<=1&&["y"]||["yy",u];return c[2]=e,c[3]=+t>0,c[4]=n,Yn.apply(null,c)}(this,!t,e);return t&&(n=e.pastFuture(+this,n)),e.postformat(n)},Un.toISOString=Hn,Un.toString=Hn,Un.toJSON=Hn,Un.locale=Ke,Un.localeData=Xe,Un.toIsoString=S("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",Hn),Un.lang=Ze,B("X",0,0,"unix"),B("x",0,0,"valueOf"),ut("x",it),ut("X",/[+-]?\d+(\.\d{1,3})?/),ft("X",(function(t,e,n){n._d=new Date(1e3*parseFloat(t,10))})),ft("x",(function(t,e,n){n._d=new Date(w(t))})),r.version="2.24.0",e=Me,r.fn=cn,r.min=function(){var t=[].slice.call(arguments,0);return Ce("isBefore",t)},r.max=function(){var t=[].slice.call(arguments,0);return Ce("isAfter",t)},r.now=function(){return Date.now?Date.now():+new Date},r.utc=d,r.unix=function(t){return Me(1e3*t)},r.months=function(t,e){return pn(t,e,"months")},r.isDate=l,r.locale=ie,r.invalid=g,r.duration=We,r.isMoment=x,r.weekdays=function(t,e,n){return gn(t,e,n,"weekdays")},r.parseZone=function(){return Me.apply(null,arguments).parseZone()},r.localeData=oe,r.isDuration=Pe,r.monthsShort=function(t,e){return pn(t,e,"monthsShort")},r.weekdaysMin=function(t,e,n){return gn(t,e,n,"weekdaysMin")},r.defineLocale=ae,r.updateLocale=function(t,e){if(null!=e){var n,r,i=Qt;null!=(r=re(t))&&(i=r._config),e=P(i,e),(n=new A(e)).parentLocale=te[t],te[t]=n,ie(t)}else null!=te[t]&&(null!=te[t].parentLocale?te[t]=te[t].parentLocale:null!=te[t]&&delete te[t]);return te[t]},r.locales=function(){return D(te)},r.weekdaysShort=function(t,e,n){return gn(t,e,n,"weekdaysShort")},r.normalizeUnits=L,r.relativeTimeRounding=function(t){return void 0===t?zn:"function"==typeof t&&(zn=t,!0)},r.relativeTimeThreshold=function(t,e){return void 0!==Wn[t]&&(void 0===e?Wn[t]:(Wn[t]=e,"s"===t&&(Wn.ss=e-1),!0))},r.calendarFormat=function(t,e){var n=t.diff(e,"days",!0);return n<-6?"sameElse":n<-1?"lastWeek":n<0?"lastDay":n<1?"sameDay":n<2?"nextDay":n<7?"nextWeek":"sameElse"},r.prototype=cn,r.HTML5_FMT={DATETIME_LOCAL:"YYYY-MM-DDTHH:mm",DATETIME_LOCAL_SECONDS:"YYYY-MM-DDTHH:mm:ss",DATETIME_LOCAL_MS:"YYYY-MM-DDTHH:mm:ss.SSS",DATE:"YYYY-MM-DD",TIME:"HH:mm",TIME_SECONDS:"HH:mm:ss",TIME_MS:"HH:mm:ss.SSS",WEEK:"GGGG-[W]WW",MONTH:"YYYY-MM"},r}()}).call(this,n("YuTi")(t))},xYSL:function(t,e){t.exports=function(t,e){return t.has(e)}},xfY5:function(t,e,n){"use strict";var r=n("dyZX"),i=n("aagx"),a=n("LZWt"),o=n("Xbzi"),s=n("apmT"),l=n("eeVq"),u=n("kJMx").f,c=n("EemH").f,h=n("hswa").f,d=n("qncB").trim,f=r.Number,p=f,g=f.prototype,m="Number"==a(n("Kuth")(g)),v="trim"in String.prototype,y=function(t){var e=s(t,!1);if("string"==typeof e&&e.length>2){var n,r,i,a=(e=v?e.trim():d(e,3)).charCodeAt(0);if(43===a||45===a){if(88===(n=e.charCodeAt(2))||120===n)return NaN}else if(48===a){switch(e.charCodeAt(1)){case 66:case 98:r=2,i=49;break;case 79:case 111:r=8,i=55;break;default:return+e}for(var o,l=e.slice(2),u=0,c=l.length;u<c;u++)if((o=l.charCodeAt(u))<48||o>i)return NaN;return parseInt(l,r)}}return+e};if(!f(" 0o1")||!f("0b1")||f("+0x1")){f=function(t){var e=arguments.length<1?0:t,n=this;return n instanceof f&&(m?l((function(){g.valueOf.call(n)})):"Number"!=a(n))?o(new p(y(e)),n,f):y(e)};for(var b,x=n("nh4g")?u(p):"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger".split(","),_=0;x.length>_;_++)i(p,b=x[_])&&!i(f,b)&&h(f,b,c(p,b));f.prototype=g,g.constructor=f,n("KroJ")(r,"Number",f)}},y1pI:function(t,e,n){var r=n("ljhN");t.exports=function(t,e){for(var n=t.length;n--;)if(r(t[n][0],e))return n;return-1}},yGk4:function(t,e,n){var r=n("Cwc5")(n("Kz5y"),"Set");t.exports=r},zZ0H:function(t,e){t.exports=function(t){return t}},zoYe:function(t,e,n){n("a1Th"),n("h7Nl"),n("Btvt");var r=n("nmnc"),i=n("eUgh"),a=n("Z0cm"),o=n("/9aa"),s=r?r.prototype:void 0,l=s?s.toString:void 0;t.exports=function t(e){if("string"==typeof e)return e;if(a(e))return i(e,t)+"";if(o(e))return l?l.call(e):"";var n=e+"";return"0"==n&&1/e==-1/0?"-0":n}}}]);
+//# sourceMappingURL=component---src-pages-performance-js-985e1e9d446123113ec2.js.map
\ No newline at end of file
diff --git a/component---src-pages-performance-js-985e1e9d446123113ec2.js.map b/component---src-pages-performance-js-985e1e9d446123113ec2.js.map
new file mode 100644
index 0000000..2f7720b
--- /dev/null
+++ b/component---src-pages-performance-js-985e1e9d446123113ec2.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["webpack:///./node_modules/lodash/_listCacheHas.js","webpack:///./node_modules/lodash/property.js","webpack:///./node_modules/lodash/isSymbol.js","webpack:///./node_modules/lodash/isArguments.js","webpack:///./node_modules/lodash/_stackSet.js","webpack:///./node_modules/lodash/stubArray.js","webpack:///./node_modules/lodash/_SetCache.js","webpack:///./node_modules/lodash/_coreJsData.js","webpack:///./node_modules/lodash/_setCacheHas.js","webpack:///./node_modules/lodash/_toSource.js","webpack:///./node_modules/lodash/_basePropertyDeep.js","webpack:///./node_modules/lodash/memoize.js","webpack:///./node_modules/lodash/_Hash.js","webpack:///./node_modules/lodash/_hasPath.js","webpack:///./node_modules/lodash/_castPath.js","webpack:///./node_modules/lodash/_isPrototype.js","webpack:///./node_modules/lodash/_baseProperty.js","webpack:///./node_modules/lodash/_stackClear.js","webpack:///./node_modules/lodash/keys.js","webpack:///./node_modules/lodash/_mapToArray.js","webpack:///./node_modules/process/browser.js","webpack:///./node_modules/lodash/_toKey.js","webpack:///./node_modules/lodash/_isKey.js","webpack:///./node_modules/lodash/_baseKeys.js","webpack:///./node_modules/lodash/_getRawTag.js","webpack:///./node_modules/core-js/modules/es6.date.to-json.js","webpack:///./node_modules/lodash/stubFalse.js","webpack:///./node_modules/lodash/_arrayPush.js","webpack:///./node_modules/lodash/_isStrictComparable.js","webpack:///./node_modules/lodash/_getNative.js","webpack:///./node_modules/core-js/modules/es6.math.sign.js","webpack:///./node_modules/lodash/isBuffer.js","webpack:///./node_modules/core-js/modules/es6.object.freeze.js","webpack:///./node_modules/lodash/_isMasked.js","webpack:///./node_modules/lodash/_isKeyable.js","webpack:///./node_modules/lodash/isObjectLike.js","webpack:///./node_modules/core-js/modules/es6.object.is-extensible.js","webpack:///./node_modules/lodash/_baseMatchesProperty.js","webpack:///./node_modules/lodash/_stringToPath.js","webpack:///./node_modules/lodash/isObject.js","webpack:///./node_modules/lodash/_mapCacheSet.js","webpack:///./node_modules/lodash/_equalByTag.js","webpack:///./node_modules/lodash/_Promise.js","webpack:///./node_modules/lodash/_hashDelete.js","webpack:///./node_modules/lodash/_memoizeCapped.js","webpack:///./node_modules/core-js/modules/es6.array.find-index.js","webpack:///./node_modules/lodash/_matchesStrictComparable.js","webpack:///./node_modules/lodash/_baseForOwn.js","webpack:///./node_modules/lodash/_baseAggregator.js","webpack:///./node_modules/lodash/_Uint8Array.js","webpack:///./node_modules/lodash/_mapCacheGet.js","webpack:///./node_modules/lodash/_hashSet.js","webpack:///./node_modules/lodash/_baseIsArguments.js","webpack:///./node_modules/lodash/_baseHasIn.js","webpack:///./node_modules/lodash/_listCacheClear.js","webpack:///./node_modules/lodash/_objectToString.js","webpack:///./node_modules/lodash/_root.js","webpack:///./node_modules/lodash/_stackDelete.js","webpack:///./node_modules/lodash/_arrayFilter.js","webpack:///./node_modules/core-js/modules/es6.number.epsilon.js","webpack:///./node_modules/lodash/isArrayLike.js","webpack:///./node_modules/chart.js/dist/Chart.js","webpack:///./node_modules/lodash/_getSymbols.js","webpack:///./node_modules/lodash/_baseIsNative.js","webpack:///./node_modules/lodash/_getValue.js","webpack:///./node_modules/core-js/modules/_array-fill.js","webpack:///./node_modules/lodash/_baseGetTag.js","webpack:///./node_modules/lodash/_defineProperty.js","webpack:///./node_modules/lodash/_getMatchData.js","webpack:///./node_modules/lodash/_WeakMap.js","webpack:///./node_modules/lodash/keyBy.js","webpack:///./node_modules/lodash/_getMapData.js","webpack:///./node_modules/lodash/_arraySome.js","webpack:///./node_modules/lodash/_getTag.js","webpack:///./node_modules/lodash/_baseEach.js","webpack:///./node_modules/lodash/_hashClear.js","webpack:///./node_modules/react-chartjs-2/es/index.js","webpack:///./node_modules/core-js/modules/_object-to-array.js","webpack:///./node_modules/lodash/_createAggregator.js","webpack:///./node_modules/lodash/_baseTimes.js","webpack:///./node_modules/lodash/_nativeKeys.js","webpack:///./node_modules/lodash/_stackHas.js","webpack:///./node_modules/lodash/_freeGlobal.js","webpack:///./node_modules/lodash/_ListCache.js","webpack:///./node_modules/lodash/isEqual.js","webpack:///./node_modules/lodash/_nativeCreate.js","webpack:///(webpack)/buildin/module.js","webpack:///./node_modules/lodash/isArray.js","webpack:///./node_modules/lodash/_listCacheSet.js","webpack:///./node_modules/lodash/_baseMatches.js","webpack:///./node_modules/lodash/_baseGet.js","webpack:///./node_modules/core-js/modules/es6.object.is-frozen.js","webpack:///./node_modules/lodash/_listCacheDelete.js","webpack:///./node_modules/lodash/_arrayLikeKeys.js","webpack:///./node_modules/core-js/modules/es6.array.fill.js","webpack:///./node_modules/lodash/isTypedArray.js","webpack:///./node_modules/lodash/_baseFor.js","webpack:///./node_modules/lodash/_baseIsTypedArray.js","webpack:///./node_modules/lodash/toString.js","webpack:///./node_modules/lodash/_MapCache.js","webpack:///./node_modules/lodash/_baseIsEqualDeep.js","webpack:///./node_modules/core-js/modules/es6.math.log10.js","webpack:///./node_modules/lodash/_arrayMap.js","webpack:///./node_modules/lodash/_Map.js","webpack:///./node_modules/lodash/_hashHas.js","webpack:///./node_modules/lodash/_mapCacheClear.js","webpack:///./node_modules/lodash/_baseGetAllKeys.js","webpack:///./node_modules/lodash/_Stack.js","webpack:///./node_modules/lodash/_setCacheAdd.js","webpack:///./node_modules/lodash/_stackGet.js","webpack:///./node_modules/core-js/modules/es6.number.max-safe-integer.js","webpack:///./node_modules/lodash/hasIn.js","webpack:///./node_modules/core-js/modules/es7.object.values.js","webpack:///./node_modules/lodash/_baseAssignValue.js","webpack:///./node_modules/core-js/modules/es6.date.to-iso-string.js","webpack:///./node_modules/core-js/modules/_date-to-iso-string.js","webpack:///./node_modules/lodash/_mapCacheDelete.js","webpack:///./node_modules/lodash/_overArg.js","webpack:///./node_modules/core-js/modules/es6.number.min-safe-integer.js","webpack:///./node_modules/lodash/_createBaseEach.js","webpack:///./node_modules/lodash/isFunction.js","webpack:///./node_modules/lodash/eq.js","webpack:///./node_modules/lodash/_baseIsMatch.js","webpack:///./node_modules/core-js/modules/_math-sign.js","webpack:///./node_modules/lodash/_createBaseFor.js","webpack:///./node_modules/lodash/_nodeUtil.js","webpack:///./node_modules/lodash/get.js","webpack:///./node_modules/lodash/_Symbol.js","webpack:///./node_modules/lodash/_arrayAggregator.js","webpack:///./node_modules/lodash/_equalArrays.js","webpack:///./src/components/lineChart.js","webpack:///./src/components/barChart.js","webpack:///./src/components/performanceCard.js","webpack:///./src/pages/performance.js","webpack:///./node_modules/lodash/_mapCacheHas.js","webpack:///./node_modules/lodash/_getAllKeys.js","webpack:///./node_modules/lodash/_setToArray.js","webpack:///./node_modules/lodash/_baseUnary.js","webpack:///./node_modules/lodash/_equalObjects.js","webpack:///./node_modules/lodash/isLength.js","webpack:///./node_modules/lodash/_listCacheGet.js","webpack:///./node_modules/lodash/_DataView.js","webpack:///./node_modules/lodash/_hashGet.js","webpack:///./node_modules/lodash/_baseIteratee.js","webpack:///./node_modules/lodash/_baseIsEqual.js","webpack:///./node_modules/lodash/_isIndex.js","webpack:///./node_modules/moment/moment.js","webpack:///./node_modules/lodash/_cacheHas.js","webpack:///./node_modules/core-js/modules/es6.number.constructor.js","webpack:///./node_modules/lodash/_assocIndexOf.js","webpack:///./node_modules/lodash/_Set.js","webpack:///./node_modules/lodash/identity.js","webpack:///./node_modules/lodash/_baseToString.js"],"names":["assocIndexOf","module","exports","key","this","__data__","baseProperty","basePropertyDeep","isKey","toKey","path","baseGetTag","isObjectLike","value","baseIsArguments","objectProto","Object","prototype","hasOwnProperty","propertyIsEnumerable","isArguments","arguments","call","ListCache","Map","MapCache","data","pairs","length","LARGE_ARRAY_SIZE","push","size","set","setCacheAdd","setCacheHas","SetCache","values","index","add","has","coreJsData","funcToString","Function","toString","func","e","baseGet","object","memoize","resolver","TypeError","memoized","args","apply","cache","get","result","Cache","hashClear","hashDelete","hashGet","hashHas","hashSet","Hash","entries","clear","entry","castPath","isArray","isIndex","isLength","hasFunc","stringToPath","Ctor","constructor","undefined","arrayLikeKeys","baseKeys","isArrayLike","map","Array","forEach","cachedSetTimeout","cachedClearTimeout","process","defaultSetTimout","Error","defaultClearTimeout","runTimeout","fun","setTimeout","clearTimeout","currentQueue","queue","draining","queueIndex","cleanUpNextTick","concat","drainQueue","timeout","len","run","marker","runClearTimeout","Item","array","noop","nextTick","i","title","browser","env","argv","version","versions","on","addListener","once","off","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","listeners","name","binding","cwd","chdir","dir","umask","isSymbol","reIsDeepProp","reIsPlainProp","type","test","isPrototype","nativeKeys","Symbol","nativeObjectToString","symToStringTag","toStringTag","isOwn","tag","unmasked","$export","toObject","toPrimitive","P","F","Date","NaN","toJSON","toISOString","O","pv","isFinite","offset","isObject","baseIsNative","getValue","S","sign","stubFalse","freeExports","nodeType","freeModule","Buffer","root","isBuffer","meta","onFreeze","$freeze","it","uid","maskSrcKey","exec","keys","IE_PROTO","$isExtensible","baseIsEqual","hasIn","isStrictComparable","matchesStrictComparable","srcValue","objValue","COMPARE_PARTIAL_FLAG","memoizeCapped","rePropName","reEscapeChar","string","charCodeAt","replace","match","number","quote","subString","getMapData","Uint8Array","eq","equalArrays","mapToArray","setToArray","symbolProto","symbolValueOf","valueOf","other","bitmask","customizer","equalFunc","stack","byteLength","byteOffset","buffer","message","convert","isPartial","stacked","Promise","getNative","$find","KEY","forced","findIndex","callbackfn","baseFor","iteratee","baseEach","collection","setter","accumulator","nativeCreate","freeGlobal","freeSelf","self","predicate","resIndex","EPSILON","Math","pow","isFunction","moment","colorName","conversions","fn","createCommonjsModule","reverseKeywords","rgb","channels","labels","hsl","hsv","hwb","cmyk","xyz","lab","lch","hex","keyword","ansi16","ansi256","hcg","apple","gray","model","defineProperty","h","l","r","g","b","min","max","delta","rdif","gdif","bdif","s","v","diff","diffc","c","k","reversed","currentClosestKeyword","x","y","currentClosestDistance","Infinity","distance","z","t1","t2","t3","val","smin","lmin","hi","floor","f","p","q","t","sl","vmin","n","wh","bl","ratio","m","y2","x2","z2","a","atan2","PI","sqrt","hr","cos","sin","round","ansi","color","mult","rem","toUpperCase","substring","colorString","split","_char","join","integer","parseInt","hue","chroma","mg","pure","w","deriveBFS","fromModel","graph","models","parent","buildGraph","current","pop","adjacents","adjacent","node","unshift","link","from","to","wrapConversion","toModel","cur","conversion","routes","route","wrappedFn","slice","wrapRounded","raw","wrapRaw","colorConvert","colorName$1","getRgba","getHsla","getRgb","rgba","getHsl","hsla","getHwb","getAlpha","vals","hexString","hexDouble","rgbString","alpha","rgbaString","percentString","percentaString","hslString","hslaString","hwbString","reverseNames","hexAlpha","parseFloat","scale","isNaN","num","str","Color","obj","valid","setValues","red","lightness","whiteness","cyan","isValid","setSpace","rgbArray","hslArray","hsvArray","hwbArray","cmykArray","rgbaArray","hslaArray","setChannel","green","blue","saturation","saturationv","blackness","magenta","yellow","black","rgbNumber","luminosity","lum","chan","contrast","color2","lum1","lum2","level","contrastRatio","dark","light","negate","lighten","darken","saturate","desaturate","whiten","blacken","greyscale","clearer","opaquer","rotate","degrees","mix","mixinColor","weight","w1","w2","clone","source","target","prop","console","error","spaces","maxes","getValues","space","charAt","capped","chans","sname","svalues","window","id","chartjsColor","helpers","isNullOrUndef","substr","_isFinite","_x","Number","valueOrDefault","defaultValue","valueAtIndexOrDefault","callback","thisArg","each","loopable","reverse","arrayEquals","a0","a1","ilen","v0","v1","klen","_merger","options","tval","sval","merge","_mergerIf","mergeIf","sources","merger","extend","assign","dst","src","inherits","extensions","me","ChartElement","Surrogate","__super__","_deprecated","scope","previous","warn","helpers_core","callCallback","indexOf","item","fromIndex","getValueOrDefault","getValueAtIndexOrDefault","effects","linear","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","easeInSine","easeOutSine","easeInOutSine","easeInExpo","easeOutExpo","easeInOutExpo","easeInCirc","easeOutCirc","easeInOutCirc","easeInElastic","asin","easeOutElastic","easeInOutElastic","easeInBack","easeOutBack","easeInOutBack","easeInBounce","easeOutBounce","easeInOutBounce","helpers_easing","easingEffects","RAD_PER_DEG","DOUBLE_PI","HALF_PI","QUARTER_PI","TWO_THIRDS_PI","exports$1","chart","ctx","clearRect","width","height","roundedRect","radius","left","top","right","bottom","moveTo","arc","closePath","rect","drawPoint","style","rotation","xOffset","yOffset","cornerRadius","rad","save","translate","drawImage","restore","beginPath","lineTo","SQRT1_2","fill","stroke","_isPointInArea","point","area","clipArea","clip","unclipArea","flip","stepped","steppedLine","midpoint","tension","bezierCurveTo","controlPointPreviousX","controlPointNextX","controlPointPreviousY","controlPointNextY","helpers_canvas","drawRoundedRectangle","defaults","_set","defaultColor","defaultFontColor","defaultFontFamily","defaultFontSize","defaultFontStyle","defaultLineHeight","showLines","core_defaults","helpers_options","toLineHeight","matches","toPadding","_parseFont","globalDefaults","global","fontSize","font","family","fontFamily","lineHeight","fontStyle","toFontString","resolve","inputs","context","info","cacheable","exports$2","_factorize","sort","log10","exponent","log","LOG10E","powerOf10","helpers_math","helpers$1","easing","canvas","math","rtl","getRtlAdapter","rectX","_x2","setWidth","textAlign","align","xPlus","leftForLtr","itemWidth","_x3","_itemWidth","overrideTextDirection","direction","original","getPropertyValue","getPropertyPriority","setProperty","prevTextDirection","restoreTextDirection","Element","configuration","initialize","_type","hidden","pivot","_view","_model","_start","transition","ease","start","view","actual","origin","c0","c1","interpolate","tooltipPosition","hasValue","isNumber","core_element","exports$3","currentStep","numSteps","render","onAnimationProgress","onAnimationComplete","core_animation","animation","duration","onProgress","onComplete","core_animations","animations","request","addAnimation","lazy","startTime","now","animating","requestAnimationFrame","cancelAnimation","splice","requestAnimFrame","startDigest","advance","nextStep","arrayEvents","unlistenArrayEvents","listener","stub","_chartjs","DatasetController","datasetIndex","datasetElementType","dataElementType","_datasetElementOptions","_dataElementOptions","linkScales","addElements","getMeta","updateIndex","scales","dataset","getDataset","scalesOpts","xAxisID","xAxes","yAxisID","yAxes","datasets","getDatasetMeta","getScaleForId","scaleID","_getValueScaleId","_getIndexScaleId","_getValueScale","_getIndexScale","reset","_update","destroy","_data","createMetaDataset","_chart","_datasetIndex","createMetaData","_index","metaData","addElementAndReset","element","updateElement","buildOrUpdateElements","isExtensible","configurable","enumerable","method","base","res","resyncElements","_configure","_config","_cachedDataOpts","update","easingValue","elements","draw","getStyle","_resolveDatasetElementOptions","_resolveDataElementOptions","backgroundColor","borderColor","hover","readKey","datasetOpts","custom","elementOptions","cached","dataIndex","freeze","removeHoverStyle","$previousStyle","setHoverStyle","getHoverColor","borderWidth","hoverBackgroundColor","hoverBorderColor","hoverBorderWidth","_removeDatasetHoverStyle","_setDatasetHoverStyle","hoverOptions","prev","numMeta","numData","insertElements","count","onDataPush","onDataPop","onDataShift","shift","onDataSplice","onDataUnshift","core_datasetController","TAU","clipArc","startAngle","endAngle","pixelMargin","angleMargin","outerRadius","innerRadius","drawBorder","vm","inner","borderAlign","lineWidth","lineJoin","fullCircles","drawFullCircleBorders","element_arc","inLabelRange","mouseX","hoverRadius","inRange","chartX","chartY","pointRelativePosition","getAngleFromPoint","angle","betweenAngles","withinRadius","getCenterPoint","halfAngle","halfRadius","getArea","centreAngle","rangeFromCentre","circumference","fillStyle","strokeStyle","valueOrDefault$1","line","borderCapStyle","borderDash","borderDashOffset","borderJoinStyle","capBezierPoints","element_line","currentVM","spanGaps","points","_children","globalOptionLineElements","lastDrawnIndex","_loop","previousItem","skip","lineCap","setLineDash","lineDashOffset","valueOrDefault$2","defaultColor$1","xRange","abs","hitRadius","pointStyle","element_point","mouseY","inXRange","inYRange","padding","chartArea","defaultColor$2","isVertical","getBarBounds","x1","y1","half","swap","orig","v2","parseBorderWidth","maxW","maxH","edge","borderSkipped","horizontal","parseBorderSkipped","_inRange","skipX","skipY","bounds","rectangle","element_rectangle","rects","border","outer","boundingRects","fillRect","Arc","Line","Point","Rectangle","deprecated","valueOrDefault$3","computeFitCategoryTraits","ruler","thickness","barThickness","stackCount","curr","pixels","_length","getTicks","getPixelForTick","computeMinSampleSize","categoryPercentage","barPercentage","chunk","mode","gridLines","offsetGridLines","bar","controller_bar","scaleOpts","minBarLength","maxBarThickness","_ruler","getRuler","_xScale","_yScale","datasetLabel","label","_updateElementGeometry","vscale","getBasePixel","isHorizontal","vpixels","calculateBarValuePixels","ipixels","calculateBarIndexPixels","head","center","_getStacks","last","metasets","_getMatchingVisibleMetas","stacks","getStackCount","getStackIndex","getPixelForValue","_startPixel","end","_endPixel","imeta","ivalue","stackLength","_parseValue","range","next","percent","computeFlexCategoryTraits","stackIndex","indexOpts","valueOpts","valueOrDefault$4","resolve$1","position","tooltips","callbacks","dataPoint","xLabel","yLabel","controller_bubble","xScale","yScale","dsIndex","getPixelForDecimal","_options","valueOrDefault$5","PI$1","DOUBLE_PI$1","HALF_PI$1","animateRotate","animateScale","legendCallback","listItem","list","document","createElement","setAttribute","appendChild","createTextNode","outerHTML","legend","generateLabels","controller","text","onClick","legendItem","cutoutPercentage","tooltipItem","dataLabel","controller_doughnut","getRingIndex","ringIndex","j","isDatasetVisible","maxWidth","maxHeight","opts","ratioX","ratioY","offsetX","offsetY","arcs","cutout","chartWeight","_getRingWeight","startX","startY","endX","endY","contains0","contains90","contains270","minX","minY","maxX","maxY","getMaxBorderWidth","radiusLength","_getVisibleDatasetWeightTotal","total","calculateTotal","_getRingWeightOffset","animationOpts","centerX","centerY","calculateCircumference","hoverWidth","ringWeightOffset","dataSetIndex","axis","horizontalBar","controller_horizontalBar","valueOrDefault$6","resolve$2","isPointInArea","scaleClip","halfBorderWidth","tickOpts","ticks","defaultClip","toClip","controller_line","config","showLine","_showLine","lineTension","_scale","updateBezierControlPoints","lineModel","calculatePointY","lineOptions","ds","dsMeta","stackedRightValue","rightValue","sumPos","sumNeg","getRightValue","_getSortedVisibleDatasetMetas","controlPoints","capControlPoint","pt","filter","cubicInterpolationMode","splineCurveMonotone","splineCurve","nextItem","resolve$3","angleLines","display","circular","pointLabels","beginAtZero","controller_polarArea","starts","_starts","angles","_angles","_updateRadius","countVisibleElements","_computeAngle","minSize","getVisibleDatasetCount","xCenter","yCenter","datasetStartAngle","getDistanceFromCenterForValue","resetRadius","doughnut","controller_pie","valueOrDefault$7","controller_radar","pointPosition","getPointPositionForValue","scatter","controllers","bubble","polarArea","pie","radar","getRelativePosition","parseVisibleItems","handler","metadata","jlen","getIntersectItems","getNearestItems","intersect","distanceMetric","minDistance","POSITIVE_INFINITY","nearestItems","getDistanceMetricForAxis","useX","useY","pt1","pt2","deltaX","deltaY","indexMode","items","core_interaction","modes","single","nearest","intersectsItem","filterByPosition","where","pos","sortByWeight","getCombinedMax","maxPadding","updateDims","params","layout","newWidth","newHeight","box","getPadding","boxPadding","outerWidth","outerHeight","getMargins","marginForPositions","positions","margin","fitBoxes","boxes","refit","changed","refitBoxes","fullWidth","placeBoxes","userPadding","core_layouts","addBox","_layers","removeBox","layoutItem","configure","props","layoutOptions","availableWidth","availableHeight","layoutBoxes","wrapBoxes","leftAndTop","rightAndBottom","vertical","buildLayoutBoxes","verticalBoxes","horizontalBoxes","vBoxMaxWidth","hBoxMaxHeight","layouts","setLayoutDims","updatePos","change","handleMaxPadding","stylesheet","__proto__","ANIMATION_START_EVENTS","EVENT_TYPES","touchstart","touchmove","touchend","pointerenter","pointerdown","pointermove","pointerup","pointerleave","pointerout","readUsedSize","property","eventListenerOptions","supports","addEventListener","passive","removeEventListener","createEvent","nativeEvent","createDiv","cls","el","className","addResizeListener","ticking","expando","resizer","CSS_PREFIX","expand","CSS_SIZE_MONITOR","shrink","_reset","scrollLeft","scrollTop","onScroll","bind","createResizer","container","maintainAspectRatio","parentNode","clientWidth","proxy","renderProxy","animationName","reflow","offsetParent","classList","watchForRender","insertBefore","firstChild","removeResizeListener","remove","unwatchForRender","removeChild","platform_dom$2","disableCSSInjection","_enabled","_ensureLoaded","getRootNode","rootNode","css","containsStyles","injectCSS","host","acquireContext","getElementById","getContext","renderHeight","getAttribute","renderWidth","initial","displayWidth","aspectRatio","displayHeight","initCanvas","releaseContext","removeAttribute","proxies","event","fromNativeEvent","addEvent","removeEvent","implementation","platform","plugins","core_plugins","_plugins","_cacheId","register","plugin","unregister","idx","getAll","notify","hook","descriptor","descriptors","$plugins","_invalidate","core_scaleService","constructors","registerScaleType","scaleConstructor","scaleDefaults","getScaleConstructor","getScaleDefaults","updateScaleDefaults","additions","addScalesToLayout","valueOrDefault$8","getRtlHelper","enabled","titleFontStyle","titleSpacing","titleMarginBottom","titleFontColor","titleAlign","bodySpacing","bodyFontColor","bodyAlign","footerFontStyle","footerSpacing","footerMarginTop","footerFontColor","footerAlign","yPadding","xPadding","caretPadding","caretSize","multiKeyBackground","displayColors","beforeTitle","tooltipItems","labelCount","afterTitle","beforeBody","beforeLabel","labelColor","labelTextColor","afterLabel","afterBody","beforeFooter","footer","afterFooter","positioners","average","eventPosition","nearestElement","d","distanceBetweenPoints","tp","pushOrConcat","toPush","splitNewlines","String","getBaseModel","tooltipOpts","xAlign","yAlign","textDirection","_bodyFontFamily","bodyFontFamily","_bodyFontStyle","bodyFontStyle","_bodyAlign","bodyFontSize","_titleFontFamily","titleFontFamily","_titleFontStyle","titleFontSize","_titleAlign","_footerFontFamily","footerFontFamily","_footerFontStyle","footerFontSize","_footerAlign","opacity","legendColorBackground","getAlignedX","getBeforeAfterBodyLines","exports$4","_lastActive","getTitle","lines","getBeforeBody","getBody","bodyItems","bodyItem","before","after","getAfterBody","getFooter","indexScale","valueScale","existingModel","active","_active","alignment","backgroundPoint","tooltipSize","caretX","caretY","labelColors","labelTextColors","_eventPosition","getLabelForIndex","itemSort","body","dataPoints","tooltip","combinedBodyLength","reduce","titleLineCount","footerLineCount","widthPadding","maxLineWidth","measureText","fontString","getTooltipSize","paddingAndSize","radiusAndPadding","getBackgroundPoint","lf","rf","olf","orf","yf","midX","midY","determineAlignment","drawCaret","tooltipPoint","caretPosition","getCaretPosition","x3","y3","ptX","ptY","tmp","drawTitle","rtlHelper","textBaseline","fillText","drawBody","textColor","drawColorBoxes","xLinePadding","colorX","fillLineOfText","bodyAlignForCalculation","rtlColorX","strokeRect","drawFooter","drawBackground","quadraticCurveTo","hasTooltipContent","globalAlpha","handleEvent","getElementsAtEventForMode","positioners_1","core_tooltip","valueOrDefault$9","mergeScaleConfig","slen","mergeConfig","updateConfig","newOptions","ensureScalesHaveIDs","buildOrUpdateScales","nextAvailableScaleId","axesOpts","prefix","hasId","positionIsHorizontal","compare2Level","l1","l2","events","onHover","animationDuration","responsive","responsiveAnimationDuration","Chart","construct","initConfig","_bufferedRender","instances","retinaScale","devicePixelRatio","bindEvents","resize","initToolTip","stop","silent","getMaximumWidth","getMaximumHeight","newSize","onResize","scalesOptions","scaleOptions","xAxisOptions","yAxisOptions","updated","dtype","dposition","isDefault","scaleType","scaleClass","mergeTicksOptions","hasUpdated","buildOrUpdateControllers","newControllers","destroyDatasetMeta","order","ControllerClass","resetElements","updateLayout","updateDatasets","lastActive","_bufferedRequest","_idx","updateDataset","animationOptions","animationObject","easingFunction","stepDecimal","layers","drawDatasets","_drawTooltip","_getSortedDatasetMetas","filterVisible","drawDataset","getElementAtEvent","getElementsAtEvent","getElementsAtXAxis","getDatasetAtEvent","_meta","generateLegend","unbindEvents","toBase64Image","toDataURL","_chartInstance","_listeners","eventHandler","updateHoverStyle","bufferedRequest","core_controller","_abstract","DateAdapter","Controller","types","configMerge","scaleMerge","formats","parse","format","startOf","endOf","_create","override","members","core_adapters","_date","core_ticks","formatters","tickValue","logDelta","tickString","logTick","numExponential","toExponential","numDecimal","toFixed","logarithmic","remain","valueOrDefault$a","getPixelForGridLine","validIndex","lineValue","computeLabelSizes","tickFonts","caches","tickFont","nestedLabel","widest","highest","widths","heights","offsets","major","minor","gc","valueAt","gcLen","garbageCollect","first","getTickMarkLength","drawTicks","tickMarkLength","getScaleLabelHeight","parseFontOptions","nestedOpts","fontColor","parseTickFontOptions","nonSkipped","ticksToFilter","filtered","spacing","majorStart","majorEnd","tick","ceil","drawOnChartArea","zeroLineWidth","zeroLineColor","zeroLineBorderDash","zeroLineBorderDashOffset","scaleLabel","labelString","minRotation","maxRotation","mirror","autoSkip","autoSkipPadding","labelOffset","Scale","zeroLineIndex","paddingLeft","paddingTop","paddingRight","paddingBottom","_ticks","_getLabels","xLabels","yLabels","beforeUpdate","margins","samplingEnabled","sampleSize","_labelSizes","_maxLabelLines","longestLabelWidth","longestTextCache","_gridLineItems","_labelItems","beforeSetDimensions","setDimensions","afterSetDimensions","beforeDataLimits","determineDataLimits","afterDataLimits","beforeBuildTicks","buildTicks","afterBuildTicks","_convertTicksToLabels","arr","numItems","increment","sample","beforeCalculateTickRotation","calculateTickRotation","afterCalculateTickRotation","beforeFit","fit","afterFit","_ticksToDraw","_autoSkip","afterUpdate","startPixel","endPixel","reversePixels","_reversePixels","beforeTickToLabelConversion","convertTicksToLabels","userCallback","afterTickToLabelConversion","labelSizes","maxLabelWidth","maxLabelHeight","tickWidth","maxLabelDiagonal","numTicks","labelRotation","_isVisible","_getLabelSizes","toDegrees","scaleLabelOpts","gridLineOpts","isBottom","firstLabelSize","lastLabelSize","widestLabelSize","highestLabelSize","lineSpace","tickPadding","isRotated","angleRadians","toRadians","cosRotation","sinRotation","labelHeight","offsetLeft","offsetRight","labelWidth","handleMargins","isFullWidth","rawValue","_getScaleLabel","getValueForPixel","decimal","getDecimalForPixel","pixel","getBaseValue","avgMajorSpacing","axisLength","ticksLimit","maxTicksLimit","_tickSize","majorIndices","getMajorIndices","numMajorIndices","skipMajors","factors","factor","evenMajorSpacing","getEvenSpacing","calculateSpacing","optionTicks","rot","_computeGridLineItems","borderValue","alignedLineValue","tx1","ty1","tx2","ty2","lineColor","ticksLength","tl","axisWidth","axisHalfWidth","alignPixel","_alignPixel","alignBorderValue","_computeLabelItems","lineCount","textOffset","isMirrored","fonts","_drawGrid","firstLineWidth","lastLineWidth","_drawLabels","_drawTitle","scaleLabelX","scaleLabelY","scaleLabelFontColor","scaleLabelFont","scaleLabelPadding","halfLineHeight","isLeft","tz","gz","_draw","core_scale","isNullOrUndef$1","scale_category","ticksOpts","minIndex","maxIndex","_startValue","_valueRange","valueCategory","_defaults","isNullOrUndef$2","scale_linearbase","handleTickRangeOptions","minSign","maxSign","setMin","suggestedMin","setMax","suggestedMax","getTickLimit","maxTicks","stepSize","_computeTickLimit","handleDirectionalChanges","numericGeneratorOptions","precision","fixedStepSize","generationOptions","dataRange","niceMin","niceMax","numSpaces","unit","maxNumSpaces","rmin","rmax","niceNum","_decimalPlaces","almostWhole","almostEquals","generateTicks","ticksAsNumbers","_endValue","defaultConfig$1","stackData","neg","getOrCreateStack","relativePoints","updateMinMax","scale_linear","hasStacks","NEGATIVE_INFINITY","stackValues","_defaults$1","valueOrDefault$b","defaultConfig$2","nonNegativeOrDefault","scale_logarithmic","IDMatches","minNotZero","valuesPerStack","valuesForType","minVal","maxVal","exp","significand","tickVal","endExp","endSignificand","lastTick","generateTicks$1","tickValues","_getFirstTickValue","_valueOffset","_defaults$2","valueOrDefault$c","valueAtIndexOrDefault$1","resolve$4","defaultConfig$3","animate","showLabelBackdrop","backdropColor","backdropPaddingY","backdropPaddingX","getTickBackdropHeight","determineLimits","getTextAlignForAngle","adjustPointPositionForLabelHeight","textSize","numberOrZero","param","scale_radialLinear","drawingArea","plFont","furthestLimits","furthestAngles","_pointLabelSizes","valueCount","getPointPosition","longestText","getIndexAngle","hLimits","vLimits","setReductions","fitWithPointLabels","setCenterPoint","largestPossibleRadius","radiusReductionLeft","radiusReductionRight","radiusReductionTop","radiusReductionBottom","leftMovement","rightMovement","topMovement","bottomMovement","maxRight","maxLeft","maxTop","maxBottom","scalingFactor","distanceFromCenter","thisAngle","getBasePosition","angleLineOpts","pointLabelOpts","tickBackdropHeight","outerDistance","extra","pointLabelPosition","pointLabelFontColor","drawPointLabels","drawRadiusLine","tickFontColor","_defaults$3","deprecated$1","resolve$5","valueOrDefault$d","MIN_INTEGER","MIN_SAFE_INTEGER","MAX_INTEGER","MAX_SAFE_INTEGER","INTERVALS","millisecond","common","steps","second","minute","hour","day","week","month","quarter","year","UNITS","sorter","getMin","time","getMax","interpolate$1","table","skey","tkey","mid","i0","i1","lo","lookup","span","toTimestamp","input","adapter","_adapter","parser","determineUnitForAutoTicks","minUnit","capacity","interval","ticksFromTimestamps","majorUnit","setMajorTicks","scale_time","adapters","date","displayFormats","timestamp","labelsAdded","timestamps","dataLabels","hash","out","arrayUnique","_table","_timestamps","timeOpts","getLabelCapacity","distribution","unitStepSize","weekday","isoWeekday","generate","_unit","determineUnitForFormatting","_majorUnit","determineMajorUnit","buildLookupTable","_offsets","computeOffsets","tooltipFormat","datetime","tickFormatFunction","minorFormat","majorFormat","nestedTickOpts","formatter","getPixelForOffset","_getLabelSize","tickLabelWidth","tickFontSize","getLabelWidth","exampleTime","exampleLabel","_defaults$4","displayFormat","category","radialLinear","FORMATS","_id","_format","amount","filler","propagate","mappers","boundary","decodeFill","computeBoundary","cx","cy","computeCircularBoundary","scaleBottom","scaleTop","scaleZero","computeLinearBoundary","resolveTarget","visited","visible","createMapper","isDrawable","drawArea","curve0","curve1","len0","len1","doFill","mapper","loop","p0","p1","d0","d1","loopOffset","plugin_filler","afterDatasetsUpdate","$filler","beforeDatasetsDraw","getRtlHelper$1","noop$1","valueOrDefault$e","getBoxWidth","labelOpts","usePointStyle","boxWidth","ci","onLeave","lineDash","Legend","legendHitBoxes","_hoveredItem","doughnutMode","beforeBuildLabels","buildLabels","afterBuildLabels","legendItems","labelFont","hitboxes","lineWidths","totalHeight","vPadding","columnWidths","columnHeights","totalWidth","currentColWidth","currentColHeight","lineDefault","legendHeight","legendWidth","cursor","alignmentOffset","dimension","blockSize","itemHeight","textWidth","realX","SQRT2","drawLegendBox","halfFontSize","xLeft","yMiddle","_getLegendItemAt","hitBox","lh","hoveredItem","createNewLegendAndAttach","legendOpts","plugin_legend","_element","beforeInit","afterEvent","noop$2","Title","titleX","titleY","fontOpts","createNewTitleBlockAndAttach","titleOpts","titleBlock","parseMaxStyle","styleValue","parentProperty","valueInPixels","isConstrainedValue","getConstraintDimension","domNode","maxStyle","percentageProperty","defaultView","_getParentNode","constrainedNode","getComputedStyle","constrainedContainer","hasCNode","hasCContainer","infinity","filterCallback","findNextWhere","arrayToSearch","startIndex","currentItem","findPreviousWhere","epsilon","rounded","radians","centrePoint","anglePoint","distanceFromXCenter","distanceFromYCenter","radialDistanceFromCenter","aliasPixel","pixelWidth","currentDevicePixelRatio","halfWidth","firstPoint","middlePoint","afterPoint","d01","d12","s01","s12","fa","fb","pointBefore","pointCurrent","pointAfter","alphaK","betaK","tauK","squaredMagnitude","pointsWithTangents","deltaK","mK","pointsLen","slopeDeltaX","fraction","webkitRequestAnimationFrame","mozRequestAnimationFrame","oRequestAnimationFrame","msRequestAnimationFrame","evt","originalEvent","srcElement","boundingRect","getBoundingClientRect","touches","clientX","clientY","getConstraintWidth","getConstraintHeight","_calculatePadding","parentDimension","cw","clientHeight","ch","currentStyle","forceRatio","pixelRatio","pixelSize","arrayOfThings","thing","nestedThing","longest","numberOfLabelLines","numberOfLines","CanvasGradient","colorValue","CanvasPattern","core_helpers","_adapters","Animation","animationService","Interaction","scaleService","Ticks","Tooltip","pluginService","PluginBase","canvasHelpers","layoutService","LinearScaleBase","klass","cfg","toLowerCase","factory","arrayFilter","stubArray","nativeGetSymbols","getOwnPropertySymbols","getSymbols","symbol","isMasked","toSource","reIsHostCtor","funcProto","reIsNative","RegExp","toAbsoluteIndex","toLength","aLen","endPos","getRawTag","objectToString","WeakMap","baseAssignValue","keyBy","createAggregator","isKeyable","DataView","Set","dataViewCtorString","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","getTag","ArrayBuffer","ctorString","baseForOwn","createBaseEach","_extends","_objectWithoutProperties","_classCallCheck","instance","Constructor","_possibleConstructorReturn","ReferenceError","_inherits","subClass","superClass","create","writable","setPrototypeOf","NODE_ENV","ChartComponent","_React$Component","_this","handleOnClick","chartInstance","_this$props","onElementsClick","ref","componentDidMount","renderChart","componentDidUpdate","redraw","destroyChart","updateChart","shouldComponentUpdate","nextProps","_props","nextData","transformDataProp","shadowDataProp","componentWillUnmount","memoizeDataProps","saveCurrentDatasets","checkDatasets","isDev","usingCustomKeyProvider","datasetKeyProvider","getLabelAsKey","multipleDatasets","shouldWarn","getCurrentDatasets","_this2","_this3","currentDatasets","nextDatasets","currentDatasetsIndexed","pid","otherProps","rest","_props2","defaultProps","_props3","Component","propTypes","oneOfType","isRequired","arrayOf","bool","propName","componentName","_React$Component2","Doughnut","_this5","_ref","_React$Component3","Pie","_this7","_ref2","_React$Component4","_this9","_ref3","Bar","_React$Component5","_this11","_ref4","_React$Component6","HorizontalBar","_this13","_ref5","_React$Component7","Radar","_this15","_ref6","_React$Component8","Polar","_this17","_ref7","_React$Component9","Bubble","_this19","_ref8","_React$Component10","Scatter","_this21","_ref9","DESCRIPTORS","getKeys","toIObject","isEnum","isEntries","arrayAggregator","baseAggregator","baseIteratee","initializer","overArg","listCacheClear","listCacheDelete","listCacheGet","listCacheHas","listCacheSet","webpackPolyfill","deprecate","paths","children","baseIsMatch","getMatchData","matchData","$isFrozen","baseTimes","isTypedArray","inherited","isArr","isArg","isBuff","isType","skipIndexes","baseIsTypedArray","baseUnary","nodeUtil","nodeIsTypedArray","createBaseFor","typedArrayTags","baseToString","mapCacheClear","mapCacheDelete","mapCacheGet","mapCacheHas","mapCacheSet","Stack","equalByTag","equalObjects","objectTag","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","arrayPush","keysFunc","symbolsFunc","stackClear","stackDelete","stackGet","stackHas","stackSet","baseHasIn","hasPath","$values","fails","getTime","$toISOString","lz","RangeError","getUTCFullYear","getUTCMilliseconds","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","transform","arg","eachFunc","fromRight","iterable","noCustomizer","freeProcess","require","arraySome","cacheHas","arrLength","othLength","seen","arrValue","othValue","compared","othIndex","LineChart","state","lineChartData","xAxis","yAxis","displayLegend","legendPosition","BarChart","barChartData","PerformanceCard","primary","graphData","heading","chartType","sx","boxShadow","borderRadius","marginY","marginX","flexDirection","justifyContent","alignItems","boxShadowBottom","borderBottomRightRadius","borderBottomLeftRadius","borderTop","marginBottom","marginTop","performance","barChartJDK8Footprint","lineChartJK8FootprintDuringrampup","barChartJDK8Startup","lineChartJK8FasterRampupInTheCloud","isHome","description","paddingX","h1","h2","flexWrap","variant","textDecoration","href","rel","baseGetAllKeys","getAllKeys","objProps","objLength","skipCtor","objCtor","othCtor","baseMatches","baseMatchesProperty","identity","baseIsEqualDeep","reIsUint","hookCallback","some","hooks","isUndefined","isDate","hasOwnProp","createUTC","locale","strict","createLocalOrUTC","utc","getParsingFlags","_pf","empty","unusedTokens","unusedInput","overflow","charsLeftOver","nullInput","invalidMonth","invalidFormat","userInvalidated","iso","parsedDateParts","meridiem","rfc2822","weekdayMismatch","_isValid","flags","parsedParts","isNowValid","_d","invalidWeekday","_strict","bigHour","isFrozen","createInvalid","momentProperties","copyConfig","_isAMomentObject","_i","_f","_l","_tzm","_isUTC","_offset","_locale","updateInProgress","Moment","updateOffset","isMoment","absFloor","toInt","argumentForCoercion","coercedNumber","compareArrays","array1","array2","dontConvert","lengthDiff","diffs","msg","suppressDeprecationWarnings","firstTime","deprecationHandler","deprecations","deprecateSimple","mergeConfigs","parentConfig","childConfig","Locale","aliases","addUnitAlias","shorthand","lowerCase","normalizeUnits","units","normalizeObjectUnits","inputObject","normalizedProp","normalizedInput","priorities","addUnitPriority","priority","zeroFill","targetLength","forceSign","absNumber","zerosToFill","formattingTokens","localFormattingTokens","formatFunctions","formatTokenFunctions","addFormatToken","token","padded","ordinal","localeData","formatMoment","expandFormat","mom","output","makeFormatFunction","invalidDate","replaceLongDateFormatTokens","longDateFormat","lastIndex","match1","match2","match3","match4","match6","match1to2","match3to4","match5to6","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchOffset","matchShortOffset","matchWord","regexes","addRegexToken","regex","strictRegex","isStrict","getParseRegexForToken","regexEscape","matched","p2","p3","p4","tokens","addParseToken","addWeekParseToken","_w","addTimeToArrayFromToken","_a","daysInYear","isLeapYear","parseTwoDigitYear","getSetYear","makeGetSet","keepTime","set$1","daysInMonth","modMonth","o","monthsShort","months","monthsShortRegex","monthsRegex","monthsParse","MONTHS_IN_FORMAT","defaultLocaleMonths","defaultLocaleMonthsShort","handleStrictParse","monthName","ii","llc","toLocaleLowerCase","_monthsParse","_longMonthsParse","_shortMonthsParse","setMonth","dayOfMonth","getSetMonth","defaultMonthsShortRegex","defaultMonthsRegex","computeMonthsParse","cmpLenRev","shortPieces","longPieces","mixedPieces","_monthsRegex","_monthsShortRegex","_monthsStrictRegex","_monthsShortStrictRegex","createDate","M","ms","getFullYear","setFullYear","createUTCDate","UTC","setUTCFullYear","firstWeekOffset","dow","doy","fwd","getUTCDay","dayOfYearFromWeeks","resYear","resDayOfYear","dayOfYear","weekOfYear","resWeek","weekOffset","weeksInYear","weekOffsetNext","shiftWeekdays","ws","weekdaysMin","weekdaysShort","weekdays","weekdaysMinRegex","weekdaysShortRegex","weekdaysRegex","weekdaysParse","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","handleStrictParse$1","weekdayName","_weekdaysParse","_shortWeekdaysParse","_minWeekdaysParse","defaultWeekdaysRegex","defaultWeekdaysShortRegex","defaultWeekdaysMinRegex","computeWeekdaysParse","minp","shortp","longp","minPieces","_weekdaysRegex","_weekdaysShortRegex","_weekdaysMinRegex","_weekdaysStrictRegex","_weekdaysShortStrictRegex","_weekdaysMinStrictRegex","hFormat","hours","lowercase","minutes","matchMeridiem","_meridiemParse","seconds","kInput","_isPm","isPM","_meridiem","pos1","pos2","globalLocale","getSetHour","baseConfig","calendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","LTS","LT","L","LL","LLL","LLLL","dayOfMonthOrdinalParse","relativeTime","future","past","ss","mm","hh","dd","MM","yy","meridiemParse","locales","localeFamilies","normalizeLocale","loadLocale","oldLocale","_abbr","getSetGlobalLocale","getLocale","defineLocale","abbr","parentLocale","names","chooseLocale","checkOverflow","_overflowDayOfYear","_overflowWeeks","_overflowWeekday","configFromArray","currentDate","expectedWeekday","yearToUse","nowValue","_useUTC","getMonth","getDate","currentDateArray","weekYear","temp","weekdayOverflow","GG","W","E","createLocal","_week","curWeek","gg","_dayOfYear","dayOfYearFromWeekInfo","_nextDay","getDay","setUTCMinutes","extendedIsoRegex","basicIsoRegex","tzRegex","isoDates","isoTimes","aspNetJsonRegex","configFromISO","allowTime","dateFormat","timeFormat","tzFormat","configFromStringAndFormat","untruncateYear","yearStr","obsOffsets","UT","GMT","EDT","EST","CDT","CST","MDT","MST","PDT","PST","configFromRFC2822","monthStr","dayStr","hourStr","minuteStr","secondStr","parsedArray","weekdayStr","parsedInput","checkWeekday","obsOffset","militaryOffset","numOffset","hm","calculateOffset","ISO_8601","RFC_2822","skipped","stringLength","totalParsedInputLength","isPm","meridiemHour","meridiemFixWrap","prepareConfig","preparse","tempConfig","bestMoment","scoreToBeat","currentScore","score","configFromStringAndArray","createFromInputFallback","configFromString","configFromObject","configFromInput","isUTC","getOwnPropertyNames","isObjectEmpty","prototypeMin","prototypeMax","pickBy","moments","ordering","Duration","years","quarters","weeks","isoWeek","days","milliseconds","unitHasDecimal","isDurationValid","_milliseconds","_days","_months","_bubble","isDuration","absRound","separator","utcOffset","offsetFromString","chunkOffset","matcher","parts","cloneWithOffset","setTime","local","getDateOffset","getTimezoneOffset","isUtc","aspNetRegex","isoRegex","createDuration","ret","diffRes","parseIso","isBefore","positiveMomentsDifference","inp","isAfter","createAdder","period","addSubtract","isAdding","invalid","subtract","monthDiff","wholeMonthDiff","anchor","newLocaleData","defaultFormat","defaultFormatUtc","lang","mod$1","dividend","divisor","localStartOfDate","utcStartOfDate","addWeekYearFormatToken","getter","getSetWeekYearHelper","weeksTarget","setWeekAll","dayOfYearData","isoWeekYear","_dayOfMonthOrdinalParse","_ordinalParse","_dayOfMonthOrdinalParseLenient","getSetDayOfMonth","getSetMinute","getSetSecond","parseMs","getSetMillisecond","proto","preParsePostFormat","sod","calendarFormat","asFloat","that","zoneDelta","startOfDate","inputString","postformat","withoutSuffix","humanize","fromNow","toNow","invalidAt","localInput","isBetween","inclusivity","localFrom","localTo","isSame","inputMs","isSameOrAfter","isSameOrBefore","parsingFlags","prioritized","unitsObj","u","getPrioritizedUnits","toArray","toDate","keepOffset","inspect","zone","isLocal","suffix","unix","creationData","isoWeeks","weekInfo","isoWeeksInYear","parseWeekday","parseIsoWeekday","keepLocalTime","keepMinutes","localAdjust","_changeInProgress","parseZone","tZone","hasAlignedHourOffset","isDST","isUtcOffset","zoneAbbr","zoneName","dates","isDSTShifted","_isDSTShifted","proto$1","get$1","field","listMonthsImpl","listWeekdaysImpl","localeSorted","_calendar","_longDateFormat","formatUpper","_invalidDate","_ordinal","isFuture","_relativeTime","pastFuture","isFormat","_monthsShort","_monthsParseExact","firstDayOfYear","firstDayOfWeek","_weekdays","_weekdaysMin","_weekdaysShort","_weekdaysParseExact","_fullWeekdaysParse","isLower","langData","mathAbs","addSubtract$1","absCeil","daysToMonths","monthsToDays","makeAs","alias","as","asMilliseconds","asSeconds","asMinutes","asHours","asDays","asWeeks","asMonths","asQuarters","asYears","makeGetter","thresholds","substituteTimeAgo","abs$1","toISOString$1","Y","D","totalSign","ymSign","daysSign","hmsSign","proto$2","monthsFromDays","withSuffix","posNegDuration","relativeTime$1","toIsoString","updateLocale","tmpLocale","relativeTimeRounding","roundingFunction","relativeTimeThreshold","threshold","limit","myMoment","HTML5_FMT","DATETIME_LOCAL","DATETIME_LOCAL_SECONDS","DATETIME_LOCAL_MS","DATE","TIME","TIME_SECONDS","TIME_MS","WEEK","MONTH","cof","inheritIfRequired","gOPN","gOPD","dP","$trim","trim","$Number","Base","BROKEN_COF","TRIM","toNumber","argument","third","radix","maxCode","code","digits","arrayMap","symbolToString"],"mappings":"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","file":"component---src-pages-performance-js-985e1e9d446123113ec2.js","sourcesContent":["var assocIndexOf = require('./_assocIndexOf');\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n\n\nfunction listCacheHas(key) {\n  return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;","var baseProperty = require('./_baseProperty'),\n    basePropertyDeep = require('./_basePropertyDeep'),\n    isKey = require('./_isKey'),\n    toKey = require('./_toKey');\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n *   { 'a': { 'b': 2 } },\n *   { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\n\n\nfunction property(path) {\n  return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nmodule.exports = property;","var baseGetTag = require('./_baseGetTag'),\n    isObjectLike = require('./isObjectLike');\n/** `Object#toString` result references. */\n\n\nvar symbolTag = '[object Symbol]';\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\n\nfunction isSymbol(value) {\n  return typeof value == 'symbol' || isObjectLike(value) && baseGetTag(value) == symbolTag;\n}\n\nmodule.exports = isSymbol;","var baseIsArguments = require('./_baseIsArguments'),\n    isObjectLike = require('./isObjectLike');\n/** Used for built-in method references. */\n\n\nvar objectProto = Object.prototype;\n/** Used to check objects for own properties. */\n\nvar hasOwnProperty = objectProto.hasOwnProperty;\n/** Built-in value references. */\n\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n *  else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\n\nvar isArguments = baseIsArguments(function () {\n  return arguments;\n}()) ? baseIsArguments : function (value) {\n  return isObjectLike(value) && hasOwnProperty.call(value, 'callee') && !propertyIsEnumerable.call(value, 'callee');\n};\nmodule.exports = isArguments;","var ListCache = require('./_ListCache'),\n    Map = require('./_Map'),\n    MapCache = require('./_MapCache');\n/** Used as the size to enable large array optimizations. */\n\n\nvar LARGE_ARRAY_SIZE = 200;\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\n\nfunction stackSet(key, value) {\n  var data = this.__data__;\n\n  if (data instanceof ListCache) {\n    var pairs = data.__data__;\n\n    if (!Map || pairs.length < LARGE_ARRAY_SIZE - 1) {\n      pairs.push([key, value]);\n      this.size = ++data.size;\n      return this;\n    }\n\n    data = this.__data__ = new MapCache(pairs);\n  }\n\n  data.set(key, value);\n  this.size = data.size;\n  return this;\n}\n\nmodule.exports = stackSet;","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n  return [];\n}\n\nmodule.exports = stubArray;","var MapCache = require('./_MapCache'),\n    setCacheAdd = require('./_setCacheAdd'),\n    setCacheHas = require('./_setCacheHas');\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\n\n\nfunction SetCache(values) {\n  var index = -1,\n      length = values == null ? 0 : values.length;\n  this.__data__ = new MapCache();\n\n  while (++index < length) {\n    this.add(values[index]);\n  }\n} // Add methods to `SetCache`.\n\n\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\nmodule.exports = SetCache;","var root = require('./_root');\n/** Used to detect overreaching core-js shims. */\n\n\nvar coreJsData = root['__core-js_shared__'];\nmodule.exports = coreJsData;","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n  return this.__data__.has(value);\n}\n\nmodule.exports = setCacheHas;","require(\"core-js/modules/es6.regexp.to-string\");\n\nrequire(\"core-js/modules/es6.date.to-string\");\n\nrequire(\"core-js/modules/es6.object.to-string\");\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n/** Used to resolve the decompiled source of functions. */\n\nvar funcToString = funcProto.toString;\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\n\nfunction toSource(func) {\n  if (func != null) {\n    try {\n      return funcToString.call(func);\n    } catch (e) {}\n\n    try {\n      return func + '';\n    } catch (e) {}\n  }\n\n  return '';\n}\n\nmodule.exports = toSource;","var baseGet = require('./_baseGet');\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n\n\nfunction basePropertyDeep(path) {\n  return function (object) {\n    return baseGet(object, path);\n  };\n}\n\nmodule.exports = basePropertyDeep;","var MapCache = require('./_MapCache');\n/** Error message constants. */\n\n\nvar FUNC_ERROR_TEXT = 'Expected a function';\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\n\nfunction memoize(func, resolver) {\n  if (typeof func != 'function' || resolver != null && typeof resolver != 'function') {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n\n  var memoized = function memoized() {\n    var args = arguments,\n        key = resolver ? resolver.apply(this, args) : args[0],\n        cache = memoized.cache;\n\n    if (cache.has(key)) {\n      return cache.get(key);\n    }\n\n    var result = func.apply(this, args);\n    memoized.cache = cache.set(key, result) || cache;\n    return result;\n  };\n\n  memoized.cache = new (memoize.Cache || MapCache)();\n  return memoized;\n} // Expose `MapCache`.\n\n\nmemoize.Cache = MapCache;\nmodule.exports = memoize;","var hashClear = require('./_hashClear'),\n    hashDelete = require('./_hashDelete'),\n    hashGet = require('./_hashGet'),\n    hashHas = require('./_hashHas'),\n    hashSet = require('./_hashSet');\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n\n\nfunction Hash(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n  this.clear();\n\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n} // Add methods to `Hash`.\n\n\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\nmodule.exports = Hash;","var castPath = require('./_castPath'),\n    isArguments = require('./isArguments'),\n    isArray = require('./isArray'),\n    isIndex = require('./_isIndex'),\n    isLength = require('./isLength'),\n    toKey = require('./_toKey');\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\n\n\nfunction hasPath(object, path, hasFunc) {\n  path = castPath(path, object);\n  var index = -1,\n      length = path.length,\n      result = false;\n\n  while (++index < length) {\n    var key = toKey(path[index]);\n\n    if (!(result = object != null && hasFunc(object, key))) {\n      break;\n    }\n\n    object = object[key];\n  }\n\n  if (result || ++index != length) {\n    return result;\n  }\n\n  length = object == null ? 0 : object.length;\n  return !!length && isLength(length) && isIndex(key, length) && (isArray(object) || isArguments(object));\n}\n\nmodule.exports = hasPath;","var isArray = require('./isArray'),\n    isKey = require('./_isKey'),\n    stringToPath = require('./_stringToPath'),\n    toString = require('./toString');\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\n\n\nfunction castPath(value, object) {\n  if (isArray(value)) {\n    return value;\n  }\n\n  return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nmodule.exports = castPath;","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\n\nfunction isPrototype(value) {\n  var Ctor = value && value.constructor,\n      proto = typeof Ctor == 'function' && Ctor.prototype || objectProto;\n  return value === proto;\n}\n\nmodule.exports = isPrototype;","/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n  return function (object) {\n    return object == null ? undefined : object[key];\n  };\n}\n\nmodule.exports = baseProperty;","var ListCache = require('./_ListCache');\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\n\n\nfunction stackClear() {\n  this.__data__ = new ListCache();\n  this.size = 0;\n}\n\nmodule.exports = stackClear;","var arrayLikeKeys = require('./_arrayLikeKeys'),\n    baseKeys = require('./_baseKeys'),\n    isArrayLike = require('./isArrayLike');\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\n\n\nfunction keys(object) {\n  return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;","require(\"core-js/modules/es6.array.for-each\");\n\n/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n  var index = -1,\n      result = Array(map.size);\n  map.forEach(function (value, key) {\n    result[++index] = [key, value];\n  });\n  return result;\n}\n\nmodule.exports = mapToArray;","// shim for using process in browser\nvar process = module.exports = {}; // cached from whatever global is present so that test runners that stub it\n// don't break things.  But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals.  It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n  throw new Error('setTimeout has not been defined');\n}\n\nfunction defaultClearTimeout() {\n  throw new Error('clearTimeout has not been defined');\n}\n\n(function () {\n  try {\n    if (typeof setTimeout === 'function') {\n      cachedSetTimeout = setTimeout;\n    } else {\n      cachedSetTimeout = defaultSetTimout;\n    }\n  } catch (e) {\n    cachedSetTimeout = defaultSetTimout;\n  }\n\n  try {\n    if (typeof clearTimeout === 'function') {\n      cachedClearTimeout = clearTimeout;\n    } else {\n      cachedClearTimeout = defaultClearTimeout;\n    }\n  } catch (e) {\n    cachedClearTimeout = defaultClearTimeout;\n  }\n})();\n\nfunction runTimeout(fun) {\n  if (cachedSetTimeout === setTimeout) {\n    //normal enviroments in sane situations\n    return setTimeout(fun, 0);\n  } // if setTimeout wasn't available but was latter defined\n\n\n  if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n    cachedSetTimeout = setTimeout;\n    return setTimeout(fun, 0);\n  }\n\n  try {\n    // when when somebody has screwed with setTimeout but no I.E. maddness\n    return cachedSetTimeout(fun, 0);\n  } catch (e) {\n    try {\n      // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n      return cachedSetTimeout.call(null, fun, 0);\n    } catch (e) {\n      // 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\n      return cachedSetTimeout.call(this, fun, 0);\n    }\n  }\n}\n\nfunction runClearTimeout(marker) {\n  if (cachedClearTimeout === clearTimeout) {\n    //normal enviroments in sane situations\n    return clearTimeout(marker);\n  } // if clearTimeout wasn't available but was latter defined\n\n\n  if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n    cachedClearTimeout = clearTimeout;\n    return clearTimeout(marker);\n  }\n\n  try {\n    // when when somebody has screwed with setTimeout but no I.E. maddness\n    return cachedClearTimeout(marker);\n  } catch (e) {\n    try {\n      // When we are in I.E. but the script has been evaled so I.E. doesn't  trust the global object when called normally\n      return cachedClearTimeout.call(null, marker);\n    } catch (e) {\n      // 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.\n      // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n      return cachedClearTimeout.call(this, marker);\n    }\n  }\n}\n\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n  if (!draining || !currentQueue) {\n    return;\n  }\n\n  draining = false;\n\n  if (currentQueue.length) {\n    queue = currentQueue.concat(queue);\n  } else {\n    queueIndex = -1;\n  }\n\n  if (queue.length) {\n    drainQueue();\n  }\n}\n\nfunction drainQueue() {\n  if (draining) {\n    return;\n  }\n\n  var timeout = runTimeout(cleanUpNextTick);\n  draining = true;\n  var len = queue.length;\n\n  while (len) {\n    currentQueue = queue;\n    queue = [];\n\n    while (++queueIndex < len) {\n      if (currentQueue) {\n        currentQueue[queueIndex].run();\n      }\n    }\n\n    queueIndex = -1;\n    len = queue.length;\n  }\n\n  currentQueue = null;\n  draining = false;\n  runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n  var args = new Array(arguments.length - 1);\n\n  if (arguments.length > 1) {\n    for (var i = 1; i < arguments.length; i++) {\n      args[i - 1] = arguments[i];\n    }\n  }\n\n  queue.push(new Item(fun, args));\n\n  if (queue.length === 1 && !draining) {\n    runTimeout(drainQueue);\n  }\n}; // v8 likes predictible objects\n\n\nfunction Item(fun, array) {\n  this.fun = fun;\n  this.array = array;\n}\n\nItem.prototype.run = function () {\n  this.fun.apply(null, this.array);\n};\n\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\n\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) {\n  return [];\n};\n\nprocess.binding = function (name) {\n  throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () {\n  return '/';\n};\n\nprocess.chdir = function (dir) {\n  throw new Error('process.chdir is not supported');\n};\n\nprocess.umask = function () {\n  return 0;\n};","var isSymbol = require('./isSymbol');\n/** Used as references for various `Number` constants. */\n\n\nvar INFINITY = 1 / 0;\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\n\nfunction toKey(value) {\n  if (typeof value == 'string' || isSymbol(value)) {\n    return value;\n  }\n\n  var result = value + '';\n  return result == '0' && 1 / value == -INFINITY ? '-0' : result;\n}\n\nmodule.exports = toKey;","var isArray = require('./isArray'),\n    isSymbol = require('./isSymbol');\n/** Used to match property names within property paths. */\n\n\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n    reIsPlainProp = /^\\w*$/;\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\n\nfunction isKey(value, object) {\n  if (isArray(value)) {\n    return false;\n  }\n\n  var type = typeof value;\n\n  if (type == 'number' || type == 'symbol' || type == 'boolean' || value == null || isSymbol(value)) {\n    return true;\n  }\n\n  return reIsPlainProp.test(value) || !reIsDeepProp.test(value) || object != null && value in Object(object);\n}\n\nmodule.exports = isKey;","var isPrototype = require('./_isPrototype'),\n    nativeKeys = require('./_nativeKeys');\n/** Used for built-in method references. */\n\n\nvar objectProto = Object.prototype;\n/** Used to check objects for own properties. */\n\nvar hasOwnProperty = objectProto.hasOwnProperty;\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n\nfunction baseKeys(object) {\n  if (!isPrototype(object)) {\n    return nativeKeys(object);\n  }\n\n  var result = [];\n\n  for (var key in Object(object)) {\n    if (hasOwnProperty.call(object, key) && key != 'constructor') {\n      result.push(key);\n    }\n  }\n\n  return result;\n}\n\nmodule.exports = baseKeys;","require(\"core-js/modules/es6.regexp.to-string\");\n\nrequire(\"core-js/modules/es6.date.to-string\");\n\nrequire(\"core-js/modules/es6.object.to-string\");\n\nvar Symbol = require('./_Symbol');\n/** Used for built-in method references. */\n\n\nvar objectProto = Object.prototype;\n/** Used to check objects for own properties. */\n\nvar hasOwnProperty = objectProto.hasOwnProperty;\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\n\nvar nativeObjectToString = objectProto.toString;\n/** Built-in value references. */\n\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\n\nfunction getRawTag(value) {\n  var isOwn = hasOwnProperty.call(value, symToStringTag),\n      tag = value[symToStringTag];\n\n  try {\n    value[symToStringTag] = undefined;\n    var unmasked = true;\n  } catch (e) {}\n\n  var result = nativeObjectToString.call(value);\n\n  if (unmasked) {\n    if (isOwn) {\n      value[symToStringTag] = tag;\n    } else {\n      delete value[symToStringTag];\n    }\n  }\n\n  return result;\n}\n\nmodule.exports = getRawTag;","'use strict';\nvar $export = require('./_export');\nvar toObject = require('./_to-object');\nvar toPrimitive = require('./_to-primitive');\n\n$export($export.P + $export.F * require('./_fails')(function () {\n  return new Date(NaN).toJSON() !== null\n    || Date.prototype.toJSON.call({ toISOString: function () { return 1; } }) !== 1;\n}), 'Date', {\n  // eslint-disable-next-line no-unused-vars\n  toJSON: function toJSON(key) {\n    var O = toObject(this);\n    var pv = toPrimitive(O);\n    return typeof pv == 'number' && !isFinite(pv) ? null : O.toISOString();\n  }\n});\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n  return false;\n}\n\nmodule.exports = stubFalse;","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n  var index = -1,\n      length = values.length,\n      offset = array.length;\n\n  while (++index < length) {\n    array[offset + index] = values[index];\n  }\n\n  return array;\n}\n\nmodule.exports = arrayPush;","var isObject = require('./isObject');\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n *  equality comparisons, else `false`.\n */\n\n\nfunction isStrictComparable(value) {\n  return value === value && !isObject(value);\n}\n\nmodule.exports = isStrictComparable;","var baseIsNative = require('./_baseIsNative'),\n    getValue = require('./_getValue');\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\n\n\nfunction getNative(object, key) {\n  var value = getValue(object, key);\n  return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;","// 20.2.2.28 Math.sign(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', { sign: require('./_math-sign') });\n","var root = require('./_root'),\n    stubFalse = require('./stubFalse');\n/** Detect free variable `exports`. */\n\n\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n/** Detect free variable `module`. */\n\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n/** Detect the popular CommonJS extension `module.exports`. */\n\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n/** Built-in value references. */\n\nvar Buffer = moduleExports ? root.Buffer : undefined;\n/* Built-in method references for those with the same name as other `lodash` methods. */\n\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\n\nvar isBuffer = nativeIsBuffer || stubFalse;\nmodule.exports = isBuffer;","// 19.1.2.5 Object.freeze(O)\nvar isObject = require('./_is-object');\nvar meta = require('./_meta').onFreeze;\n\nrequire('./_object-sap')('freeze', function ($freeze) {\n  return function freeze(it) {\n    return $freeze && isObject(it) ? $freeze(meta(it)) : it;\n  };\n});\n","require(\"core-js/modules/web.dom.iterable\");\n\nrequire(\"core-js/modules/es6.array.iterator\");\n\nrequire(\"core-js/modules/es6.object.to-string\");\n\nvar coreJsData = require('./_coreJsData');\n/** Used to detect methods masquerading as native. */\n\n\nvar maskSrcKey = function () {\n  var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n  return uid ? 'Symbol(src)_1.' + uid : '';\n}();\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\n\n\nfunction isMasked(func) {\n  return !!maskSrcKey && maskSrcKey in func;\n}\n\nmodule.exports = isMasked;","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n  var type = typeof value;\n  return type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean' ? value !== '__proto__' : value === null;\n}\n\nmodule.exports = isKeyable;","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;","// 19.1.2.11 Object.isExtensible(O)\nvar isObject = require('./_is-object');\n\nrequire('./_object-sap')('isExtensible', function ($isExtensible) {\n  return function isExtensible(it) {\n    return isObject(it) ? $isExtensible ? $isExtensible(it) : true : false;\n  };\n});\n","var baseIsEqual = require('./_baseIsEqual'),\n    get = require('./get'),\n    hasIn = require('./hasIn'),\n    isKey = require('./_isKey'),\n    isStrictComparable = require('./_isStrictComparable'),\n    matchesStrictComparable = require('./_matchesStrictComparable'),\n    toKey = require('./_toKey');\n/** Used to compose bitmasks for value comparisons. */\n\n\nvar COMPARE_PARTIAL_FLAG = 1,\n    COMPARE_UNORDERED_FLAG = 2;\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\n\nfunction baseMatchesProperty(path, srcValue) {\n  if (isKey(path) && isStrictComparable(srcValue)) {\n    return matchesStrictComparable(toKey(path), srcValue);\n  }\n\n  return function (object) {\n    var objValue = get(object, path);\n    return objValue === undefined && objValue === srcValue ? hasIn(object, path) : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n  };\n}\n\nmodule.exports = baseMatchesProperty;","require(\"core-js/modules/es6.regexp.replace\");\n\nvar memoizeCapped = require('./_memoizeCapped');\n/** Used to match property names within property paths. */\n\n\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n/** Used to match backslashes in property paths. */\n\nvar reEscapeChar = /\\\\(\\\\)?/g;\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\n\nvar stringToPath = memoizeCapped(function (string) {\n  var result = [];\n\n  if (string.charCodeAt(0) === 46\n  /* . */\n  ) {\n      result.push('');\n    }\n\n  string.replace(rePropName, function (match, number, quote, subString) {\n    result.push(quote ? subString.replace(reEscapeChar, '$1') : number || match);\n  });\n  return result;\n});\nmodule.exports = stringToPath;","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n  var type = typeof value;\n  return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;","var getMapData = require('./_getMapData');\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\n\n\nfunction mapCacheSet(key, value) {\n  var data = getMapData(this, key),\n      size = data.size;\n  data.set(key, value);\n  this.size += data.size == size ? 0 : 1;\n  return this;\n}\n\nmodule.exports = mapCacheSet;","require(\"core-js/modules/es6.function.name\");\n\nvar Symbol = require('./_Symbol'),\n    Uint8Array = require('./_Uint8Array'),\n    eq = require('./eq'),\n    equalArrays = require('./_equalArrays'),\n    mapToArray = require('./_mapToArray'),\n    setToArray = require('./_setToArray');\n/** Used to compose bitmasks for value comparisons. */\n\n\nvar COMPARE_PARTIAL_FLAG = 1,\n    COMPARE_UNORDERED_FLAG = 2;\n/** `Object#toString` result references. */\n\nvar boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    errorTag = '[object Error]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    symbolTag = '[object Symbol]';\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]';\n/** Used to convert symbols to primitives and strings. */\n\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n    symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n  switch (tag) {\n    case dataViewTag:\n      if (object.byteLength != other.byteLength || object.byteOffset != other.byteOffset) {\n        return false;\n      }\n\n      object = object.buffer;\n      other = other.buffer;\n\n    case arrayBufferTag:\n      if (object.byteLength != other.byteLength || !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n        return false;\n      }\n\n      return true;\n\n    case boolTag:\n    case dateTag:\n    case numberTag:\n      // Coerce booleans to `1` or `0` and dates to milliseconds.\n      // Invalid dates are coerced to `NaN`.\n      return eq(+object, +other);\n\n    case errorTag:\n      return object.name == other.name && object.message == other.message;\n\n    case regexpTag:\n    case stringTag:\n      // Coerce regexes to strings and treat strings, primitives and objects,\n      // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n      // for more details.\n      return object == other + '';\n\n    case mapTag:\n      var convert = mapToArray;\n\n    case setTag:\n      var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n      convert || (convert = setToArray);\n\n      if (object.size != other.size && !isPartial) {\n        return false;\n      } // Assume cyclic values are equal.\n\n\n      var stacked = stack.get(object);\n\n      if (stacked) {\n        return stacked == other;\n      }\n\n      bitmask |= COMPARE_UNORDERED_FLAG; // Recursively compare objects (susceptible to call stack limits).\n\n      stack.set(object, other);\n      var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n      stack['delete'](object);\n      return result;\n\n    case symbolTag:\n      if (symbolValueOf) {\n        return symbolValueOf.call(object) == symbolValueOf.call(other);\n      }\n\n  }\n\n  return false;\n}\n\nmodule.exports = equalByTag;","var getNative = require('./_getNative'),\n    root = require('./_root');\n/* Built-in method references that are verified to be native. */\n\n\nvar Promise = getNative(root, 'Promise');\nmodule.exports = Promise;","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n  var result = this.has(key) && delete this.__data__[key];\n  this.size -= result ? 1 : 0;\n  return result;\n}\n\nmodule.exports = hashDelete;","var memoize = require('./memoize');\n/** Used as the maximum memoize cache size. */\n\n\nvar MAX_MEMOIZE_SIZE = 500;\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\n\nfunction memoizeCapped(func) {\n  var result = memoize(func, function (key) {\n    if (cache.size === MAX_MEMOIZE_SIZE) {\n      cache.clear();\n    }\n\n    return key;\n  });\n  var cache = result.cache;\n  return result;\n}\n\nmodule.exports = memoizeCapped;","'use strict';\n// 22.1.3.9 Array.prototype.findIndex(predicate, thisArg = undefined)\nvar $export = require('./_export');\nvar $find = require('./_array-methods')(6);\nvar KEY = 'findIndex';\nvar forced = true;\n// Shouldn't skip holes\nif (KEY in []) Array(1)[KEY](function () { forced = false; });\n$export($export.P + $export.F * forced, 'Array', {\n  findIndex: function findIndex(callbackfn /* , that = undefined */) {\n    return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\nrequire('./_add-to-unscopables')(KEY);\n","/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n  return function (object) {\n    if (object == null) {\n      return false;\n    }\n\n    return object[key] === srcValue && (srcValue !== undefined || key in Object(object));\n  };\n}\n\nmodule.exports = matchesStrictComparable;","var baseFor = require('./_baseFor'),\n    keys = require('./keys');\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n\n\nfunction baseForOwn(object, iteratee) {\n  return object && baseFor(object, iteratee, keys);\n}\n\nmodule.exports = baseForOwn;","var baseEach = require('./_baseEach');\n/**\n * Aggregates elements of `collection` on `accumulator` with keys transformed\n * by `iteratee` and values set by `setter`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n\n\nfunction baseAggregator(collection, setter, iteratee, accumulator) {\n  baseEach(collection, function (value, key, collection) {\n    setter(accumulator, value, iteratee(value), collection);\n  });\n  return accumulator;\n}\n\nmodule.exports = baseAggregator;","var root = require('./_root');\n/** Built-in value references. */\n\n\nvar Uint8Array = root.Uint8Array;\nmodule.exports = Uint8Array;","var getMapData = require('./_getMapData');\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n\n\nfunction mapCacheGet(key) {\n  return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;","var nativeCreate = require('./_nativeCreate');\n/** Used to stand-in for `undefined` hash values. */\n\n\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\n\nfunction hashSet(key, value) {\n  var data = this.__data__;\n  this.size += this.has(key) ? 0 : 1;\n  data[key] = nativeCreate && value === undefined ? HASH_UNDEFINED : value;\n  return this;\n}\n\nmodule.exports = hashSet;","var baseGetTag = require('./_baseGetTag'),\n    isObjectLike = require('./isObjectLike');\n/** `Object#toString` result references. */\n\n\nvar argsTag = '[object Arguments]';\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\n\nfunction baseIsArguments(value) {\n  return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;","/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n  return object != null && key in Object(object);\n}\n\nmodule.exports = baseHasIn;","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n  this.__data__ = [];\n  this.size = 0;\n}\n\nmodule.exports = listCacheClear;","require(\"core-js/modules/es6.regexp.to-string\");\n\nrequire(\"core-js/modules/es6.date.to-string\");\n\nrequire(\"core-js/modules/es6.object.to-string\");\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\n\nvar nativeObjectToString = objectProto.toString;\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\n\nfunction objectToString(value) {\n  return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;","var freeGlobal = require('./_freeGlobal');\n/** Detect free variable `self`. */\n\n\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n/** Used as a reference to the global object. */\n\nvar root = freeGlobal || freeSelf || Function('return this')();\nmodule.exports = root;","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n  var data = this.__data__,\n      result = data['delete'](key);\n  this.size = data.size;\n  return result;\n}\n\nmodule.exports = stackDelete;","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n  var index = -1,\n      length = array == null ? 0 : array.length,\n      resIndex = 0,\n      result = [];\n\n  while (++index < length) {\n    var value = array[index];\n\n    if (predicate(value, index, array)) {\n      result[resIndex++] = value;\n    }\n  }\n\n  return result;\n}\n\nmodule.exports = arrayFilter;","// 20.1.2.1 Number.EPSILON\nvar $export = require('./_export');\n\n$export($export.S, 'Number', { EPSILON: Math.pow(2, -52) });\n","var isFunction = require('./isFunction'),\n    isLength = require('./isLength');\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\n\n\nfunction isArrayLike(value) {\n  return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;","require(\"core-js/modules/es6.number.max-safe-integer\");\n\nrequire(\"core-js/modules/es6.number.min-safe-integer\");\n\nrequire(\"core-js/modules/es6.number.epsilon\");\n\nrequire(\"core-js/modules/es6.math.sign\");\n\nrequire(\"core-js/modules/es6.array.reduce\");\n\nrequire(\"core-js/modules/es6.function.bind\");\n\nrequire(\"core-js/modules/es6.array.filter\");\n\nrequire(\"core-js/modules/es6.object.freeze\");\n\nrequire(\"core-js/modules/es6.object.is-extensible\");\n\nrequire(\"core-js/modules/es6.array.find-index\");\n\nrequire(\"core-js/modules/es6.date.now\");\n\nrequire(\"core-js/modules/es6.math.log10\");\n\nrequire(\"core-js/modules/es6.array.sort\");\n\nrequire(\"core-js/modules/es6.array.fill\");\n\nrequire(\"core-js/modules/es6.array.index-of\");\n\nrequire(\"core-js/modules/es6.object.assign\");\n\nrequire(\"core-js/modules/es6.number.constructor\");\n\nrequire(\"core-js/modules/es6.array.is-array\");\n\nrequire(\"core-js/modules/es6.array.for-each\");\n\nrequire(\"core-js/modules/web.dom.iterable\");\n\nrequire(\"core-js/modules/es6.array.iterator\");\n\nrequire(\"core-js/modules/es6.object.keys\");\n\nrequire(\"core-js/modules/es6.regexp.split\");\n\nrequire(\"core-js/modules/es6.array.map\");\n\nrequire(\"core-js/modules/es6.regexp.match\");\n\nrequire(\"core-js/modules/es6.regexp.to-string\");\n\nrequire(\"core-js/modules/es6.date.to-string\");\n\nrequire(\"core-js/modules/es6.object.to-string\");\n\nrequire(\"core-js/modules/es6.object.define-property\");\n\n/*!\n * Chart.js v2.9.3\n * https://www.chartjs.org\n * (c) 2019 Chart.js Contributors\n * Released under the MIT License\n */\n(function (global, factory) {\n  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(function () {\n    try {\n      return require('moment');\n    } catch (e) {}\n  }()) : typeof define === 'function' && define.amd ? define(['require'], function (require) {\n    return factory(function () {\n      try {\n        return require('moment');\n      } catch (e) {}\n    }());\n  }) : (global = global || self, global.Chart = factory(global.moment));\n})(this, function (moment) {\n  'use strict';\n\n  moment = moment && moment.hasOwnProperty('default') ? moment['default'] : moment;\n\n  function createCommonjsModule(fn, module) {\n    return module = {\n      exports: {}\n    }, fn(module, module.exports), module.exports;\n  }\n\n  function getCjsExportFromNamespace(n) {\n    return n && n['default'] || n;\n  }\n\n  var colorName = {\n    \"aliceblue\": [240, 248, 255],\n    \"antiquewhite\": [250, 235, 215],\n    \"aqua\": [0, 255, 255],\n    \"aquamarine\": [127, 255, 212],\n    \"azure\": [240, 255, 255],\n    \"beige\": [245, 245, 220],\n    \"bisque\": [255, 228, 196],\n    \"black\": [0, 0, 0],\n    \"blanchedalmond\": [255, 235, 205],\n    \"blue\": [0, 0, 255],\n    \"blueviolet\": [138, 43, 226],\n    \"brown\": [165, 42, 42],\n    \"burlywood\": [222, 184, 135],\n    \"cadetblue\": [95, 158, 160],\n    \"chartreuse\": [127, 255, 0],\n    \"chocolate\": [210, 105, 30],\n    \"coral\": [255, 127, 80],\n    \"cornflowerblue\": [100, 149, 237],\n    \"cornsilk\": [255, 248, 220],\n    \"crimson\": [220, 20, 60],\n    \"cyan\": [0, 255, 255],\n    \"darkblue\": [0, 0, 139],\n    \"darkcyan\": [0, 139, 139],\n    \"darkgoldenrod\": [184, 134, 11],\n    \"darkgray\": [169, 169, 169],\n    \"darkgreen\": [0, 100, 0],\n    \"darkgrey\": [169, 169, 169],\n    \"darkkhaki\": [189, 183, 107],\n    \"darkmagenta\": [139, 0, 139],\n    \"darkolivegreen\": [85, 107, 47],\n    \"darkorange\": [255, 140, 0],\n    \"darkorchid\": [153, 50, 204],\n    \"darkred\": [139, 0, 0],\n    \"darksalmon\": [233, 150, 122],\n    \"darkseagreen\": [143, 188, 143],\n    \"darkslateblue\": [72, 61, 139],\n    \"darkslategray\": [47, 79, 79],\n    \"darkslategrey\": [47, 79, 79],\n    \"darkturquoise\": [0, 206, 209],\n    \"darkviolet\": [148, 0, 211],\n    \"deeppink\": [255, 20, 147],\n    \"deepskyblue\": [0, 191, 255],\n    \"dimgray\": [105, 105, 105],\n    \"dimgrey\": [105, 105, 105],\n    \"dodgerblue\": [30, 144, 255],\n    \"firebrick\": [178, 34, 34],\n    \"floralwhite\": [255, 250, 240],\n    \"forestgreen\": [34, 139, 34],\n    \"fuchsia\": [255, 0, 255],\n    \"gainsboro\": [220, 220, 220],\n    \"ghostwhite\": [248, 248, 255],\n    \"gold\": [255, 215, 0],\n    \"goldenrod\": [218, 165, 32],\n    \"gray\": [128, 128, 128],\n    \"green\": [0, 128, 0],\n    \"greenyellow\": [173, 255, 47],\n    \"grey\": [128, 128, 128],\n    \"honeydew\": [240, 255, 240],\n    \"hotpink\": [255, 105, 180],\n    \"indianred\": [205, 92, 92],\n    \"indigo\": [75, 0, 130],\n    \"ivory\": [255, 255, 240],\n    \"khaki\": [240, 230, 140],\n    \"lavender\": [230, 230, 250],\n    \"lavenderblush\": [255, 240, 245],\n    \"lawngreen\": [124, 252, 0],\n    \"lemonchiffon\": [255, 250, 205],\n    \"lightblue\": [173, 216, 230],\n    \"lightcoral\": [240, 128, 128],\n    \"lightcyan\": [224, 255, 255],\n    \"lightgoldenrodyellow\": [250, 250, 210],\n    \"lightgray\": [211, 211, 211],\n    \"lightgreen\": [144, 238, 144],\n    \"lightgrey\": [211, 211, 211],\n    \"lightpink\": [255, 182, 193],\n    \"lightsalmon\": [255, 160, 122],\n    \"lightseagreen\": [32, 178, 170],\n    \"lightskyblue\": [135, 206, 250],\n    \"lightslategray\": [119, 136, 153],\n    \"lightslategrey\": [119, 136, 153],\n    \"lightsteelblue\": [176, 196, 222],\n    \"lightyellow\": [255, 255, 224],\n    \"lime\": [0, 255, 0],\n    \"limegreen\": [50, 205, 50],\n    \"linen\": [250, 240, 230],\n    \"magenta\": [255, 0, 255],\n    \"maroon\": [128, 0, 0],\n    \"mediumaquamarine\": [102, 205, 170],\n    \"mediumblue\": [0, 0, 205],\n    \"mediumorchid\": [186, 85, 211],\n    \"mediumpurple\": [147, 112, 219],\n    \"mediumseagreen\": [60, 179, 113],\n    \"mediumslateblue\": [123, 104, 238],\n    \"mediumspringgreen\": [0, 250, 154],\n    \"mediumturquoise\": [72, 209, 204],\n    \"mediumvioletred\": [199, 21, 133],\n    \"midnightblue\": [25, 25, 112],\n    \"mintcream\": [245, 255, 250],\n    \"mistyrose\": [255, 228, 225],\n    \"moccasin\": [255, 228, 181],\n    \"navajowhite\": [255, 222, 173],\n    \"navy\": [0, 0, 128],\n    \"oldlace\": [253, 245, 230],\n    \"olive\": [128, 128, 0],\n    \"olivedrab\": [107, 142, 35],\n    \"orange\": [255, 165, 0],\n    \"orangered\": [255, 69, 0],\n    \"orchid\": [218, 112, 214],\n    \"palegoldenrod\": [238, 232, 170],\n    \"palegreen\": [152, 251, 152],\n    \"paleturquoise\": [175, 238, 238],\n    \"palevioletred\": [219, 112, 147],\n    \"papayawhip\": [255, 239, 213],\n    \"peachpuff\": [255, 218, 185],\n    \"peru\": [205, 133, 63],\n    \"pink\": [255, 192, 203],\n    \"plum\": [221, 160, 221],\n    \"powderblue\": [176, 224, 230],\n    \"purple\": [128, 0, 128],\n    \"rebeccapurple\": [102, 51, 153],\n    \"red\": [255, 0, 0],\n    \"rosybrown\": [188, 143, 143],\n    \"royalblue\": [65, 105, 225],\n    \"saddlebrown\": [139, 69, 19],\n    \"salmon\": [250, 128, 114],\n    \"sandybrown\": [244, 164, 96],\n    \"seagreen\": [46, 139, 87],\n    \"seashell\": [255, 245, 238],\n    \"sienna\": [160, 82, 45],\n    \"silver\": [192, 192, 192],\n    \"skyblue\": [135, 206, 235],\n    \"slateblue\": [106, 90, 205],\n    \"slategray\": [112, 128, 144],\n    \"slategrey\": [112, 128, 144],\n    \"snow\": [255, 250, 250],\n    \"springgreen\": [0, 255, 127],\n    \"steelblue\": [70, 130, 180],\n    \"tan\": [210, 180, 140],\n    \"teal\": [0, 128, 128],\n    \"thistle\": [216, 191, 216],\n    \"tomato\": [255, 99, 71],\n    \"turquoise\": [64, 224, 208],\n    \"violet\": [238, 130, 238],\n    \"wheat\": [245, 222, 179],\n    \"white\": [255, 255, 255],\n    \"whitesmoke\": [245, 245, 245],\n    \"yellow\": [255, 255, 0],\n    \"yellowgreen\": [154, 205, 50]\n  };\n  var conversions = createCommonjsModule(function (module) {\n    /* MIT license */\n    // NOTE: conversions should only return primitive values (i.e. arrays, or\n    //       values that give correct `typeof` results).\n    //       do not use box values types (i.e. Number(), String(), etc.)\n    var reverseKeywords = {};\n\n    for (var key in colorName) {\n      if (colorName.hasOwnProperty(key)) {\n        reverseKeywords[colorName[key]] = key;\n      }\n    }\n\n    var convert = module.exports = {\n      rgb: {\n        channels: 3,\n        labels: 'rgb'\n      },\n      hsl: {\n        channels: 3,\n        labels: 'hsl'\n      },\n      hsv: {\n        channels: 3,\n        labels: 'hsv'\n      },\n      hwb: {\n        channels: 3,\n        labels: 'hwb'\n      },\n      cmyk: {\n        channels: 4,\n        labels: 'cmyk'\n      },\n      xyz: {\n        channels: 3,\n        labels: 'xyz'\n      },\n      lab: {\n        channels: 3,\n        labels: 'lab'\n      },\n      lch: {\n        channels: 3,\n        labels: 'lch'\n      },\n      hex: {\n        channels: 1,\n        labels: ['hex']\n      },\n      keyword: {\n        channels: 1,\n        labels: ['keyword']\n      },\n      ansi16: {\n        channels: 1,\n        labels: ['ansi16']\n      },\n      ansi256: {\n        channels: 1,\n        labels: ['ansi256']\n      },\n      hcg: {\n        channels: 3,\n        labels: ['h', 'c', 'g']\n      },\n      apple: {\n        channels: 3,\n        labels: ['r16', 'g16', 'b16']\n      },\n      gray: {\n        channels: 1,\n        labels: ['gray']\n      }\n    }; // hide .channels and .labels properties\n\n    for (var model in convert) {\n      if (convert.hasOwnProperty(model)) {\n        if (!('channels' in convert[model])) {\n          throw new Error('missing channels property: ' + model);\n        }\n\n        if (!('labels' in convert[model])) {\n          throw new Error('missing channel labels property: ' + model);\n        }\n\n        if (convert[model].labels.length !== convert[model].channels) {\n          throw new Error('channel and label counts mismatch: ' + model);\n        }\n\n        var channels = convert[model].channels;\n        var labels = convert[model].labels;\n        delete convert[model].channels;\n        delete convert[model].labels;\n        Object.defineProperty(convert[model], 'channels', {\n          value: channels\n        });\n        Object.defineProperty(convert[model], 'labels', {\n          value: labels\n        });\n      }\n    }\n\n    convert.rgb.hsl = function (rgb) {\n      var r = rgb[0] / 255;\n      var g = rgb[1] / 255;\n      var b = rgb[2] / 255;\n      var min = Math.min(r, g, b);\n      var max = Math.max(r, g, b);\n      var delta = max - min;\n      var h;\n      var s;\n      var l;\n\n      if (max === min) {\n        h = 0;\n      } else if (r === max) {\n        h = (g - b) / delta;\n      } else if (g === max) {\n        h = 2 + (b - r) / delta;\n      } else if (b === max) {\n        h = 4 + (r - g) / delta;\n      }\n\n      h = Math.min(h * 60, 360);\n\n      if (h < 0) {\n        h += 360;\n      }\n\n      l = (min + max) / 2;\n\n      if (max === min) {\n        s = 0;\n      } else if (l <= 0.5) {\n        s = delta / (max + min);\n      } else {\n        s = delta / (2 - max - min);\n      }\n\n      return [h, s * 100, l * 100];\n    };\n\n    convert.rgb.hsv = function (rgb) {\n      var rdif;\n      var gdif;\n      var bdif;\n      var h;\n      var s;\n      var r = rgb[0] / 255;\n      var g = rgb[1] / 255;\n      var b = rgb[2] / 255;\n      var v = Math.max(r, g, b);\n      var diff = v - Math.min(r, g, b);\n\n      var diffc = function diffc(c) {\n        return (v - c) / 6 / diff + 1 / 2;\n      };\n\n      if (diff === 0) {\n        h = s = 0;\n      } else {\n        s = diff / v;\n        rdif = diffc(r);\n        gdif = diffc(g);\n        bdif = diffc(b);\n\n        if (r === v) {\n          h = bdif - gdif;\n        } else if (g === v) {\n          h = 1 / 3 + rdif - bdif;\n        } else if (b === v) {\n          h = 2 / 3 + gdif - rdif;\n        }\n\n        if (h < 0) {\n          h += 1;\n        } else if (h > 1) {\n          h -= 1;\n        }\n      }\n\n      return [h * 360, s * 100, v * 100];\n    };\n\n    convert.rgb.hwb = function (rgb) {\n      var r = rgb[0];\n      var g = rgb[1];\n      var b = rgb[2];\n      var h = convert.rgb.hsl(rgb)[0];\n      var w = 1 / 255 * Math.min(r, Math.min(g, b));\n      b = 1 - 1 / 255 * Math.max(r, Math.max(g, b));\n      return [h, w * 100, b * 100];\n    };\n\n    convert.rgb.cmyk = function (rgb) {\n      var r = rgb[0] / 255;\n      var g = rgb[1] / 255;\n      var b = rgb[2] / 255;\n      var c;\n      var m;\n      var y;\n      var k;\n      k = Math.min(1 - r, 1 - g, 1 - b);\n      c = (1 - r - k) / (1 - k) || 0;\n      m = (1 - g - k) / (1 - k) || 0;\n      y = (1 - b - k) / (1 - k) || 0;\n      return [c * 100, m * 100, y * 100, k * 100];\n    };\n    /**\n     * See https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance\n     * */\n\n\n    function comparativeDistance(x, y) {\n      return Math.pow(x[0] - y[0], 2) + Math.pow(x[1] - y[1], 2) + Math.pow(x[2] - y[2], 2);\n    }\n\n    convert.rgb.keyword = function (rgb) {\n      var reversed = reverseKeywords[rgb];\n\n      if (reversed) {\n        return reversed;\n      }\n\n      var currentClosestDistance = Infinity;\n      var currentClosestKeyword;\n\n      for (var keyword in colorName) {\n        if (colorName.hasOwnProperty(keyword)) {\n          var value = colorName[keyword]; // Compute comparative distance\n\n          var distance = comparativeDistance(rgb, value); // Check if its less, if so set as closest\n\n          if (distance < currentClosestDistance) {\n            currentClosestDistance = distance;\n            currentClosestKeyword = keyword;\n          }\n        }\n      }\n\n      return currentClosestKeyword;\n    };\n\n    convert.keyword.rgb = function (keyword) {\n      return colorName[keyword];\n    };\n\n    convert.rgb.xyz = function (rgb) {\n      var r = rgb[0] / 255;\n      var g = rgb[1] / 255;\n      var b = rgb[2] / 255; // assume sRGB\n\n      r = r > 0.04045 ? Math.pow((r + 0.055) / 1.055, 2.4) : r / 12.92;\n      g = g > 0.04045 ? Math.pow((g + 0.055) / 1.055, 2.4) : g / 12.92;\n      b = b > 0.04045 ? Math.pow((b + 0.055) / 1.055, 2.4) : b / 12.92;\n      var x = r * 0.4124 + g * 0.3576 + b * 0.1805;\n      var y = r * 0.2126 + g * 0.7152 + b * 0.0722;\n      var z = r * 0.0193 + g * 0.1192 + b * 0.9505;\n      return [x * 100, y * 100, z * 100];\n    };\n\n    convert.rgb.lab = function (rgb) {\n      var xyz = convert.rgb.xyz(rgb);\n      var x = xyz[0];\n      var y = xyz[1];\n      var z = xyz[2];\n      var l;\n      var a;\n      var b;\n      x /= 95.047;\n      y /= 100;\n      z /= 108.883;\n      x = x > 0.008856 ? Math.pow(x, 1 / 3) : 7.787 * x + 16 / 116;\n      y = y > 0.008856 ? Math.pow(y, 1 / 3) : 7.787 * y + 16 / 116;\n      z = z > 0.008856 ? Math.pow(z, 1 / 3) : 7.787 * z + 16 / 116;\n      l = 116 * y - 16;\n      a = 500 * (x - y);\n      b = 200 * (y - z);\n      return [l, a, b];\n    };\n\n    convert.hsl.rgb = function (hsl) {\n      var h = hsl[0] / 360;\n      var s = hsl[1] / 100;\n      var l = hsl[2] / 100;\n      var t1;\n      var t2;\n      var t3;\n      var rgb;\n      var val;\n\n      if (s === 0) {\n        val = l * 255;\n        return [val, val, val];\n      }\n\n      if (l < 0.5) {\n        t2 = l * (1 + s);\n      } else {\n        t2 = l + s - l * s;\n      }\n\n      t1 = 2 * l - t2;\n      rgb = [0, 0, 0];\n\n      for (var i = 0; i < 3; i++) {\n        t3 = h + 1 / 3 * -(i - 1);\n\n        if (t3 < 0) {\n          t3++;\n        }\n\n        if (t3 > 1) {\n          t3--;\n        }\n\n        if (6 * t3 < 1) {\n          val = t1 + (t2 - t1) * 6 * t3;\n        } else if (2 * t3 < 1) {\n          val = t2;\n        } else if (3 * t3 < 2) {\n          val = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n        } else {\n          val = t1;\n        }\n\n        rgb[i] = val * 255;\n      }\n\n      return rgb;\n    };\n\n    convert.hsl.hsv = function (hsl) {\n      var h = hsl[0];\n      var s = hsl[1] / 100;\n      var l = hsl[2] / 100;\n      var smin = s;\n      var lmin = Math.max(l, 0.01);\n      var sv;\n      var v;\n      l *= 2;\n      s *= l <= 1 ? l : 2 - l;\n      smin *= lmin <= 1 ? lmin : 2 - lmin;\n      v = (l + s) / 2;\n      sv = l === 0 ? 2 * smin / (lmin + smin) : 2 * s / (l + s);\n      return [h, sv * 100, v * 100];\n    };\n\n    convert.hsv.rgb = function (hsv) {\n      var h = hsv[0] / 60;\n      var s = hsv[1] / 100;\n      var v = hsv[2] / 100;\n      var hi = Math.floor(h) % 6;\n      var f = h - Math.floor(h);\n      var p = 255 * v * (1 - s);\n      var q = 255 * v * (1 - s * f);\n      var t = 255 * v * (1 - s * (1 - f));\n      v *= 255;\n\n      switch (hi) {\n        case 0:\n          return [v, t, p];\n\n        case 1:\n          return [q, v, p];\n\n        case 2:\n          return [p, v, t];\n\n        case 3:\n          return [p, q, v];\n\n        case 4:\n          return [t, p, v];\n\n        case 5:\n          return [v, p, q];\n      }\n    };\n\n    convert.hsv.hsl = function (hsv) {\n      var h = hsv[0];\n      var s = hsv[1] / 100;\n      var v = hsv[2] / 100;\n      var vmin = Math.max(v, 0.01);\n      var lmin;\n      var sl;\n      var l;\n      l = (2 - s) * v;\n      lmin = (2 - s) * vmin;\n      sl = s * vmin;\n      sl /= lmin <= 1 ? lmin : 2 - lmin;\n      sl = sl || 0;\n      l /= 2;\n      return [h, sl * 100, l * 100];\n    }; // http://dev.w3.org/csswg/css-color/#hwb-to-rgb\n\n\n    convert.hwb.rgb = function (hwb) {\n      var h = hwb[0] / 360;\n      var wh = hwb[1] / 100;\n      var bl = hwb[2] / 100;\n      var ratio = wh + bl;\n      var i;\n      var v;\n      var f;\n      var n; // wh + bl cant be > 1\n\n      if (ratio > 1) {\n        wh /= ratio;\n        bl /= ratio;\n      }\n\n      i = Math.floor(6 * h);\n      v = 1 - bl;\n      f = 6 * h - i;\n\n      if ((i & 0x01) !== 0) {\n        f = 1 - f;\n      }\n\n      n = wh + f * (v - wh); // linear interpolation\n\n      var r;\n      var g;\n      var b;\n\n      switch (i) {\n        default:\n        case 6:\n        case 0:\n          r = v;\n          g = n;\n          b = wh;\n          break;\n\n        case 1:\n          r = n;\n          g = v;\n          b = wh;\n          break;\n\n        case 2:\n          r = wh;\n          g = v;\n          b = n;\n          break;\n\n        case 3:\n          r = wh;\n          g = n;\n          b = v;\n          break;\n\n        case 4:\n          r = n;\n          g = wh;\n          b = v;\n          break;\n\n        case 5:\n          r = v;\n          g = wh;\n          b = n;\n          break;\n      }\n\n      return [r * 255, g * 255, b * 255];\n    };\n\n    convert.cmyk.rgb = function (cmyk) {\n      var c = cmyk[0] / 100;\n      var m = cmyk[1] / 100;\n      var y = cmyk[2] / 100;\n      var k = cmyk[3] / 100;\n      var r;\n      var g;\n      var b;\n      r = 1 - Math.min(1, c * (1 - k) + k);\n      g = 1 - Math.min(1, m * (1 - k) + k);\n      b = 1 - Math.min(1, y * (1 - k) + k);\n      return [r * 255, g * 255, b * 255];\n    };\n\n    convert.xyz.rgb = function (xyz) {\n      var x = xyz[0] / 100;\n      var y = xyz[1] / 100;\n      var z = xyz[2] / 100;\n      var r;\n      var g;\n      var b;\n      r = x * 3.2406 + y * -1.5372 + z * -0.4986;\n      g = x * -0.9689 + y * 1.8758 + z * 0.0415;\n      b = x * 0.0557 + y * -0.2040 + z * 1.0570; // assume sRGB\n\n      r = r > 0.0031308 ? 1.055 * Math.pow(r, 1.0 / 2.4) - 0.055 : r * 12.92;\n      g = g > 0.0031308 ? 1.055 * Math.pow(g, 1.0 / 2.4) - 0.055 : g * 12.92;\n      b = b > 0.0031308 ? 1.055 * Math.pow(b, 1.0 / 2.4) - 0.055 : b * 12.92;\n      r = Math.min(Math.max(0, r), 1);\n      g = Math.min(Math.max(0, g), 1);\n      b = Math.min(Math.max(0, b), 1);\n      return [r * 255, g * 255, b * 255];\n    };\n\n    convert.xyz.lab = function (xyz) {\n      var x = xyz[0];\n      var y = xyz[1];\n      var z = xyz[2];\n      var l;\n      var a;\n      var b;\n      x /= 95.047;\n      y /= 100;\n      z /= 108.883;\n      x = x > 0.008856 ? Math.pow(x, 1 / 3) : 7.787 * x + 16 / 116;\n      y = y > 0.008856 ? Math.pow(y, 1 / 3) : 7.787 * y + 16 / 116;\n      z = z > 0.008856 ? Math.pow(z, 1 / 3) : 7.787 * z + 16 / 116;\n      l = 116 * y - 16;\n      a = 500 * (x - y);\n      b = 200 * (y - z);\n      return [l, a, b];\n    };\n\n    convert.lab.xyz = function (lab) {\n      var l = lab[0];\n      var a = lab[1];\n      var b = lab[2];\n      var x;\n      var y;\n      var z;\n      y = (l + 16) / 116;\n      x = a / 500 + y;\n      z = y - b / 200;\n      var y2 = Math.pow(y, 3);\n      var x2 = Math.pow(x, 3);\n      var z2 = Math.pow(z, 3);\n      y = y2 > 0.008856 ? y2 : (y - 16 / 116) / 7.787;\n      x = x2 > 0.008856 ? x2 : (x - 16 / 116) / 7.787;\n      z = z2 > 0.008856 ? z2 : (z - 16 / 116) / 7.787;\n      x *= 95.047;\n      y *= 100;\n      z *= 108.883;\n      return [x, y, z];\n    };\n\n    convert.lab.lch = function (lab) {\n      var l = lab[0];\n      var a = lab[1];\n      var b = lab[2];\n      var hr;\n      var h;\n      var c;\n      hr = Math.atan2(b, a);\n      h = hr * 360 / 2 / Math.PI;\n\n      if (h < 0) {\n        h += 360;\n      }\n\n      c = Math.sqrt(a * a + b * b);\n      return [l, c, h];\n    };\n\n    convert.lch.lab = function (lch) {\n      var l = lch[0];\n      var c = lch[1];\n      var h = lch[2];\n      var a;\n      var b;\n      var hr;\n      hr = h / 360 * 2 * Math.PI;\n      a = c * Math.cos(hr);\n      b = c * Math.sin(hr);\n      return [l, a, b];\n    };\n\n    convert.rgb.ansi16 = function (args) {\n      var r = args[0];\n      var g = args[1];\n      var b = args[2];\n      var value = 1 in arguments ? arguments[1] : convert.rgb.hsv(args)[2]; // hsv -> ansi16 optimization\n\n      value = Math.round(value / 50);\n\n      if (value === 0) {\n        return 30;\n      }\n\n      var ansi = 30 + (Math.round(b / 255) << 2 | Math.round(g / 255) << 1 | Math.round(r / 255));\n\n      if (value === 2) {\n        ansi += 60;\n      }\n\n      return ansi;\n    };\n\n    convert.hsv.ansi16 = function (args) {\n      // optimization here; we already know the value and don't need to get\n      // it converted for us.\n      return convert.rgb.ansi16(convert.hsv.rgb(args), args[2]);\n    };\n\n    convert.rgb.ansi256 = function (args) {\n      var r = args[0];\n      var g = args[1];\n      var b = args[2]; // we use the extended greyscale palette here, with the exception of\n      // black and white. normal palette only has 4 greyscale shades.\n\n      if (r === g && g === b) {\n        if (r < 8) {\n          return 16;\n        }\n\n        if (r > 248) {\n          return 231;\n        }\n\n        return Math.round((r - 8) / 247 * 24) + 232;\n      }\n\n      var ansi = 16 + 36 * Math.round(r / 255 * 5) + 6 * Math.round(g / 255 * 5) + Math.round(b / 255 * 5);\n      return ansi;\n    };\n\n    convert.ansi16.rgb = function (args) {\n      var color = args % 10; // handle greyscale\n\n      if (color === 0 || color === 7) {\n        if (args > 50) {\n          color += 3.5;\n        }\n\n        color = color / 10.5 * 255;\n        return [color, color, color];\n      }\n\n      var mult = (~~(args > 50) + 1) * 0.5;\n      var r = (color & 1) * mult * 255;\n      var g = (color >> 1 & 1) * mult * 255;\n      var b = (color >> 2 & 1) * mult * 255;\n      return [r, g, b];\n    };\n\n    convert.ansi256.rgb = function (args) {\n      // handle greyscale\n      if (args >= 232) {\n        var c = (args - 232) * 10 + 8;\n        return [c, c, c];\n      }\n\n      args -= 16;\n      var rem;\n      var r = Math.floor(args / 36) / 5 * 255;\n      var g = Math.floor((rem = args % 36) / 6) / 5 * 255;\n      var b = rem % 6 / 5 * 255;\n      return [r, g, b];\n    };\n\n    convert.rgb.hex = function (args) {\n      var integer = ((Math.round(args[0]) & 0xFF) << 16) + ((Math.round(args[1]) & 0xFF) << 8) + (Math.round(args[2]) & 0xFF);\n      var string = integer.toString(16).toUpperCase();\n      return '000000'.substring(string.length) + string;\n    };\n\n    convert.hex.rgb = function (args) {\n      var match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);\n\n      if (!match) {\n        return [0, 0, 0];\n      }\n\n      var colorString = match[0];\n\n      if (match[0].length === 3) {\n        colorString = colorString.split('').map(function (_char) {\n          return _char + _char;\n        }).join('');\n      }\n\n      var integer = parseInt(colorString, 16);\n      var r = integer >> 16 & 0xFF;\n      var g = integer >> 8 & 0xFF;\n      var b = integer & 0xFF;\n      return [r, g, b];\n    };\n\n    convert.rgb.hcg = function (rgb) {\n      var r = rgb[0] / 255;\n      var g = rgb[1] / 255;\n      var b = rgb[2] / 255;\n      var max = Math.max(Math.max(r, g), b);\n      var min = Math.min(Math.min(r, g), b);\n      var chroma = max - min;\n      var grayscale;\n      var hue;\n\n      if (chroma < 1) {\n        grayscale = min / (1 - chroma);\n      } else {\n        grayscale = 0;\n      }\n\n      if (chroma <= 0) {\n        hue = 0;\n      } else if (max === r) {\n        hue = (g - b) / chroma % 6;\n      } else if (max === g) {\n        hue = 2 + (b - r) / chroma;\n      } else {\n        hue = 4 + (r - g) / chroma + 4;\n      }\n\n      hue /= 6;\n      hue %= 1;\n      return [hue * 360, chroma * 100, grayscale * 100];\n    };\n\n    convert.hsl.hcg = function (hsl) {\n      var s = hsl[1] / 100;\n      var l = hsl[2] / 100;\n      var c = 1;\n      var f = 0;\n\n      if (l < 0.5) {\n        c = 2.0 * s * l;\n      } else {\n        c = 2.0 * s * (1.0 - l);\n      }\n\n      if (c < 1.0) {\n        f = (l - 0.5 * c) / (1.0 - c);\n      }\n\n      return [hsl[0], c * 100, f * 100];\n    };\n\n    convert.hsv.hcg = function (hsv) {\n      var s = hsv[1] / 100;\n      var v = hsv[2] / 100;\n      var c = s * v;\n      var f = 0;\n\n      if (c < 1.0) {\n        f = (v - c) / (1 - c);\n      }\n\n      return [hsv[0], c * 100, f * 100];\n    };\n\n    convert.hcg.rgb = function (hcg) {\n      var h = hcg[0] / 360;\n      var c = hcg[1] / 100;\n      var g = hcg[2] / 100;\n\n      if (c === 0.0) {\n        return [g * 255, g * 255, g * 255];\n      }\n\n      var pure = [0, 0, 0];\n      var hi = h % 1 * 6;\n      var v = hi % 1;\n      var w = 1 - v;\n      var mg = 0;\n\n      switch (Math.floor(hi)) {\n        case 0:\n          pure[0] = 1;\n          pure[1] = v;\n          pure[2] = 0;\n          break;\n\n        case 1:\n          pure[0] = w;\n          pure[1] = 1;\n          pure[2] = 0;\n          break;\n\n        case 2:\n          pure[0] = 0;\n          pure[1] = 1;\n          pure[2] = v;\n          break;\n\n        case 3:\n          pure[0] = 0;\n          pure[1] = w;\n          pure[2] = 1;\n          break;\n\n        case 4:\n          pure[0] = v;\n          pure[1] = 0;\n          pure[2] = 1;\n          break;\n\n        default:\n          pure[0] = 1;\n          pure[1] = 0;\n          pure[2] = w;\n      }\n\n      mg = (1.0 - c) * g;\n      return [(c * pure[0] + mg) * 255, (c * pure[1] + mg) * 255, (c * pure[2] + mg) * 255];\n    };\n\n    convert.hcg.hsv = function (hcg) {\n      var c = hcg[1] / 100;\n      var g = hcg[2] / 100;\n      var v = c + g * (1.0 - c);\n      var f = 0;\n\n      if (v > 0.0) {\n        f = c / v;\n      }\n\n      return [hcg[0], f * 100, v * 100];\n    };\n\n    convert.hcg.hsl = function (hcg) {\n      var c = hcg[1] / 100;\n      var g = hcg[2] / 100;\n      var l = g * (1.0 - c) + 0.5 * c;\n      var s = 0;\n\n      if (l > 0.0 && l < 0.5) {\n        s = c / (2 * l);\n      } else if (l >= 0.5 && l < 1.0) {\n        s = c / (2 * (1 - l));\n      }\n\n      return [hcg[0], s * 100, l * 100];\n    };\n\n    convert.hcg.hwb = function (hcg) {\n      var c = hcg[1] / 100;\n      var g = hcg[2] / 100;\n      var v = c + g * (1.0 - c);\n      return [hcg[0], (v - c) * 100, (1 - v) * 100];\n    };\n\n    convert.hwb.hcg = function (hwb) {\n      var w = hwb[1] / 100;\n      var b = hwb[2] / 100;\n      var v = 1 - b;\n      var c = v - w;\n      var g = 0;\n\n      if (c < 1) {\n        g = (v - c) / (1 - c);\n      }\n\n      return [hwb[0], c * 100, g * 100];\n    };\n\n    convert.apple.rgb = function (apple) {\n      return [apple[0] / 65535 * 255, apple[1] / 65535 * 255, apple[2] / 65535 * 255];\n    };\n\n    convert.rgb.apple = function (rgb) {\n      return [rgb[0] / 255 * 65535, rgb[1] / 255 * 65535, rgb[2] / 255 * 65535];\n    };\n\n    convert.gray.rgb = function (args) {\n      return [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];\n    };\n\n    convert.gray.hsl = convert.gray.hsv = function (args) {\n      return [0, 0, args[0]];\n    };\n\n    convert.gray.hwb = function (gray) {\n      return [0, 100, gray[0]];\n    };\n\n    convert.gray.cmyk = function (gray) {\n      return [0, 0, 0, gray[0]];\n    };\n\n    convert.gray.lab = function (gray) {\n      return [gray[0], 0, 0];\n    };\n\n    convert.gray.hex = function (gray) {\n      var val = Math.round(gray[0] / 100 * 255) & 0xFF;\n      var integer = (val << 16) + (val << 8) + val;\n      var string = integer.toString(16).toUpperCase();\n      return '000000'.substring(string.length) + string;\n    };\n\n    convert.rgb.gray = function (rgb) {\n      var val = (rgb[0] + rgb[1] + rgb[2]) / 3;\n      return [val / 255 * 100];\n    };\n  });\n  var conversions_1 = conversions.rgb;\n  var conversions_2 = conversions.hsl;\n  var conversions_3 = conversions.hsv;\n  var conversions_4 = conversions.hwb;\n  var conversions_5 = conversions.cmyk;\n  var conversions_6 = conversions.xyz;\n  var conversions_7 = conversions.lab;\n  var conversions_8 = conversions.lch;\n  var conversions_9 = conversions.hex;\n  var conversions_10 = conversions.keyword;\n  var conversions_11 = conversions.ansi16;\n  var conversions_12 = conversions.ansi256;\n  var conversions_13 = conversions.hcg;\n  var conversions_14 = conversions.apple;\n  var conversions_15 = conversions.gray;\n  /*\n  \tthis function routes a model to all other models.\n  \n  \tall functions that are routed have a property `.conversion` attached\n  \tto the returned synthetic function. This property is an array\n  \tof strings, each with the steps in between the 'from' and 'to'\n  \tcolor models (inclusive).\n  \n  \tconversions that are not possible simply are not included.\n  */\n\n  function buildGraph() {\n    var graph = {}; // https://jsperf.com/object-keys-vs-for-in-with-closure/3\n\n    var models = Object.keys(conversions);\n\n    for (var len = models.length, i = 0; i < len; i++) {\n      graph[models[i]] = {\n        // http://jsperf.com/1-vs-infinity\n        // micro-opt, but this is simple.\n        distance: -1,\n        parent: null\n      };\n    }\n\n    return graph;\n  } // https://en.wikipedia.org/wiki/Breadth-first_search\n\n\n  function deriveBFS(fromModel) {\n    var graph = buildGraph();\n    var queue = [fromModel]; // unshift -> queue -> pop\n\n    graph[fromModel].distance = 0;\n\n    while (queue.length) {\n      var current = queue.pop();\n      var adjacents = Object.keys(conversions[current]);\n\n      for (var len = adjacents.length, i = 0; i < len; i++) {\n        var adjacent = adjacents[i];\n        var node = graph[adjacent];\n\n        if (node.distance === -1) {\n          node.distance = graph[current].distance + 1;\n          node.parent = current;\n          queue.unshift(adjacent);\n        }\n      }\n    }\n\n    return graph;\n  }\n\n  function link(from, to) {\n    return function (args) {\n      return to(from(args));\n    };\n  }\n\n  function wrapConversion(toModel, graph) {\n    var path = [graph[toModel].parent, toModel];\n    var fn = conversions[graph[toModel].parent][toModel];\n    var cur = graph[toModel].parent;\n\n    while (graph[cur].parent) {\n      path.unshift(graph[cur].parent);\n      fn = link(conversions[graph[cur].parent][cur], fn);\n      cur = graph[cur].parent;\n    }\n\n    fn.conversion = path;\n    return fn;\n  }\n\n  var route = function route(fromModel) {\n    var graph = deriveBFS(fromModel);\n    var conversion = {};\n    var models = Object.keys(graph);\n\n    for (var len = models.length, i = 0; i < len; i++) {\n      var toModel = models[i];\n      var node = graph[toModel];\n\n      if (node.parent === null) {\n        // no possible conversion, or this node is the source model.\n        continue;\n      }\n\n      conversion[toModel] = wrapConversion(toModel, graph);\n    }\n\n    return conversion;\n  };\n\n  var convert = {};\n  var models = Object.keys(conversions);\n\n  function wrapRaw(fn) {\n    var wrappedFn = function wrappedFn(args) {\n      if (args === undefined || args === null) {\n        return args;\n      }\n\n      if (arguments.length > 1) {\n        args = Array.prototype.slice.call(arguments);\n      }\n\n      return fn(args);\n    }; // preserve .conversion property if there is one\n\n\n    if ('conversion' in fn) {\n      wrappedFn.conversion = fn.conversion;\n    }\n\n    return wrappedFn;\n  }\n\n  function wrapRounded(fn) {\n    var wrappedFn = function wrappedFn(args) {\n      if (args === undefined || args === null) {\n        return args;\n      }\n\n      if (arguments.length > 1) {\n        args = Array.prototype.slice.call(arguments);\n      }\n\n      var result = fn(args); // we're assuming the result is an array here.\n      // see notice in conversions.js; don't use box types\n      // in conversion functions.\n\n      if (typeof result === 'object') {\n        for (var len = result.length, i = 0; i < len; i++) {\n          result[i] = Math.round(result[i]);\n        }\n      }\n\n      return result;\n    }; // preserve .conversion property if there is one\n\n\n    if ('conversion' in fn) {\n      wrappedFn.conversion = fn.conversion;\n    }\n\n    return wrappedFn;\n  }\n\n  models.forEach(function (fromModel) {\n    convert[fromModel] = {};\n    Object.defineProperty(convert[fromModel], 'channels', {\n      value: conversions[fromModel].channels\n    });\n    Object.defineProperty(convert[fromModel], 'labels', {\n      value: conversions[fromModel].labels\n    });\n    var routes = route(fromModel);\n    var routeModels = Object.keys(routes);\n    routeModels.forEach(function (toModel) {\n      var fn = routes[toModel];\n      convert[fromModel][toModel] = wrapRounded(fn);\n      convert[fromModel][toModel].raw = wrapRaw(fn);\n    });\n  });\n  var colorConvert = convert;\n  var colorName$1 = {\n    \"aliceblue\": [240, 248, 255],\n    \"antiquewhite\": [250, 235, 215],\n    \"aqua\": [0, 255, 255],\n    \"aquamarine\": [127, 255, 212],\n    \"azure\": [240, 255, 255],\n    \"beige\": [245, 245, 220],\n    \"bisque\": [255, 228, 196],\n    \"black\": [0, 0, 0],\n    \"blanchedalmond\": [255, 235, 205],\n    \"blue\": [0, 0, 255],\n    \"blueviolet\": [138, 43, 226],\n    \"brown\": [165, 42, 42],\n    \"burlywood\": [222, 184, 135],\n    \"cadetblue\": [95, 158, 160],\n    \"chartreuse\": [127, 255, 0],\n    \"chocolate\": [210, 105, 30],\n    \"coral\": [255, 127, 80],\n    \"cornflowerblue\": [100, 149, 237],\n    \"cornsilk\": [255, 248, 220],\n    \"crimson\": [220, 20, 60],\n    \"cyan\": [0, 255, 255],\n    \"darkblue\": [0, 0, 139],\n    \"darkcyan\": [0, 139, 139],\n    \"darkgoldenrod\": [184, 134, 11],\n    \"darkgray\": [169, 169, 169],\n    \"darkgreen\": [0, 100, 0],\n    \"darkgrey\": [169, 169, 169],\n    \"darkkhaki\": [189, 183, 107],\n    \"darkmagenta\": [139, 0, 139],\n    \"darkolivegreen\": [85, 107, 47],\n    \"darkorange\": [255, 140, 0],\n    \"darkorchid\": [153, 50, 204],\n    \"darkred\": [139, 0, 0],\n    \"darksalmon\": [233, 150, 122],\n    \"darkseagreen\": [143, 188, 143],\n    \"darkslateblue\": [72, 61, 139],\n    \"darkslategray\": [47, 79, 79],\n    \"darkslategrey\": [47, 79, 79],\n    \"darkturquoise\": [0, 206, 209],\n    \"darkviolet\": [148, 0, 211],\n    \"deeppink\": [255, 20, 147],\n    \"deepskyblue\": [0, 191, 255],\n    \"dimgray\": [105, 105, 105],\n    \"dimgrey\": [105, 105, 105],\n    \"dodgerblue\": [30, 144, 255],\n    \"firebrick\": [178, 34, 34],\n    \"floralwhite\": [255, 250, 240],\n    \"forestgreen\": [34, 139, 34],\n    \"fuchsia\": [255, 0, 255],\n    \"gainsboro\": [220, 220, 220],\n    \"ghostwhite\": [248, 248, 255],\n    \"gold\": [255, 215, 0],\n    \"goldenrod\": [218, 165, 32],\n    \"gray\": [128, 128, 128],\n    \"green\": [0, 128, 0],\n    \"greenyellow\": [173, 255, 47],\n    \"grey\": [128, 128, 128],\n    \"honeydew\": [240, 255, 240],\n    \"hotpink\": [255, 105, 180],\n    \"indianred\": [205, 92, 92],\n    \"indigo\": [75, 0, 130],\n    \"ivory\": [255, 255, 240],\n    \"khaki\": [240, 230, 140],\n    \"lavender\": [230, 230, 250],\n    \"lavenderblush\": [255, 240, 245],\n    \"lawngreen\": [124, 252, 0],\n    \"lemonchiffon\": [255, 250, 205],\n    \"lightblue\": [173, 216, 230],\n    \"lightcoral\": [240, 128, 128],\n    \"lightcyan\": [224, 255, 255],\n    \"lightgoldenrodyellow\": [250, 250, 210],\n    \"lightgray\": [211, 211, 211],\n    \"lightgreen\": [144, 238, 144],\n    \"lightgrey\": [211, 211, 211],\n    \"lightpink\": [255, 182, 193],\n    \"lightsalmon\": [255, 160, 122],\n    \"lightseagreen\": [32, 178, 170],\n    \"lightskyblue\": [135, 206, 250],\n    \"lightslategray\": [119, 136, 153],\n    \"lightslategrey\": [119, 136, 153],\n    \"lightsteelblue\": [176, 196, 222],\n    \"lightyellow\": [255, 255, 224],\n    \"lime\": [0, 255, 0],\n    \"limegreen\": [50, 205, 50],\n    \"linen\": [250, 240, 230],\n    \"magenta\": [255, 0, 255],\n    \"maroon\": [128, 0, 0],\n    \"mediumaquamarine\": [102, 205, 170],\n    \"mediumblue\": [0, 0, 205],\n    \"mediumorchid\": [186, 85, 211],\n    \"mediumpurple\": [147, 112, 219],\n    \"mediumseagreen\": [60, 179, 113],\n    \"mediumslateblue\": [123, 104, 238],\n    \"mediumspringgreen\": [0, 250, 154],\n    \"mediumturquoise\": [72, 209, 204],\n    \"mediumvioletred\": [199, 21, 133],\n    \"midnightblue\": [25, 25, 112],\n    \"mintcream\": [245, 255, 250],\n    \"mistyrose\": [255, 228, 225],\n    \"moccasin\": [255, 228, 181],\n    \"navajowhite\": [255, 222, 173],\n    \"navy\": [0, 0, 128],\n    \"oldlace\": [253, 245, 230],\n    \"olive\": [128, 128, 0],\n    \"olivedrab\": [107, 142, 35],\n    \"orange\": [255, 165, 0],\n    \"orangered\": [255, 69, 0],\n    \"orchid\": [218, 112, 214],\n    \"palegoldenrod\": [238, 232, 170],\n    \"palegreen\": [152, 251, 152],\n    \"paleturquoise\": [175, 238, 238],\n    \"palevioletred\": [219, 112, 147],\n    \"papayawhip\": [255, 239, 213],\n    \"peachpuff\": [255, 218, 185],\n    \"peru\": [205, 133, 63],\n    \"pink\": [255, 192, 203],\n    \"plum\": [221, 160, 221],\n    \"powderblue\": [176, 224, 230],\n    \"purple\": [128, 0, 128],\n    \"rebeccapurple\": [102, 51, 153],\n    \"red\": [255, 0, 0],\n    \"rosybrown\": [188, 143, 143],\n    \"royalblue\": [65, 105, 225],\n    \"saddlebrown\": [139, 69, 19],\n    \"salmon\": [250, 128, 114],\n    \"sandybrown\": [244, 164, 96],\n    \"seagreen\": [46, 139, 87],\n    \"seashell\": [255, 245, 238],\n    \"sienna\": [160, 82, 45],\n    \"silver\": [192, 192, 192],\n    \"skyblue\": [135, 206, 235],\n    \"slateblue\": [106, 90, 205],\n    \"slategray\": [112, 128, 144],\n    \"slategrey\": [112, 128, 144],\n    \"snow\": [255, 250, 250],\n    \"springgreen\": [0, 255, 127],\n    \"steelblue\": [70, 130, 180],\n    \"tan\": [210, 180, 140],\n    \"teal\": [0, 128, 128],\n    \"thistle\": [216, 191, 216],\n    \"tomato\": [255, 99, 71],\n    \"turquoise\": [64, 224, 208],\n    \"violet\": [238, 130, 238],\n    \"wheat\": [245, 222, 179],\n    \"white\": [255, 255, 255],\n    \"whitesmoke\": [245, 245, 245],\n    \"yellow\": [255, 255, 0],\n    \"yellowgreen\": [154, 205, 50]\n  };\n  /* MIT license */\n\n  var colorString = {\n    getRgba: getRgba,\n    getHsla: getHsla,\n    getRgb: getRgb,\n    getHsl: getHsl,\n    getHwb: getHwb,\n    getAlpha: getAlpha,\n    hexString: hexString,\n    rgbString: rgbString,\n    rgbaString: rgbaString,\n    percentString: percentString,\n    percentaString: percentaString,\n    hslString: hslString,\n    hslaString: hslaString,\n    hwbString: hwbString,\n    keyword: keyword\n  };\n\n  function getRgba(string) {\n    if (!string) {\n      return;\n    }\n\n    var abbr = /^#([a-fA-F0-9]{3,4})$/i,\n        hex = /^#([a-fA-F0-9]{6}([a-fA-F0-9]{2})?)$/i,\n        rgba = /^rgba?\\(\\s*([+-]?\\d+)\\s*,\\s*([+-]?\\d+)\\s*,\\s*([+-]?\\d+)\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)$/i,\n        per = /^rgba?\\(\\s*([+-]?[\\d\\.]+)\\%\\s*,\\s*([+-]?[\\d\\.]+)\\%\\s*,\\s*([+-]?[\\d\\.]+)\\%\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)$/i,\n        keyword = /(\\w+)/;\n    var rgb = [0, 0, 0],\n        a = 1,\n        match = string.match(abbr),\n        hexAlpha = \"\";\n\n    if (match) {\n      match = match[1];\n      hexAlpha = match[3];\n\n      for (var i = 0; i < rgb.length; i++) {\n        rgb[i] = parseInt(match[i] + match[i], 16);\n      }\n\n      if (hexAlpha) {\n        a = Math.round(parseInt(hexAlpha + hexAlpha, 16) / 255 * 100) / 100;\n      }\n    } else if (match = string.match(hex)) {\n      hexAlpha = match[2];\n      match = match[1];\n\n      for (var i = 0; i < rgb.length; i++) {\n        rgb[i] = parseInt(match.slice(i * 2, i * 2 + 2), 16);\n      }\n\n      if (hexAlpha) {\n        a = Math.round(parseInt(hexAlpha, 16) / 255 * 100) / 100;\n      }\n    } else if (match = string.match(rgba)) {\n      for (var i = 0; i < rgb.length; i++) {\n        rgb[i] = parseInt(match[i + 1]);\n      }\n\n      a = parseFloat(match[4]);\n    } else if (match = string.match(per)) {\n      for (var i = 0; i < rgb.length; i++) {\n        rgb[i] = Math.round(parseFloat(match[i + 1]) * 2.55);\n      }\n\n      a = parseFloat(match[4]);\n    } else if (match = string.match(keyword)) {\n      if (match[1] == \"transparent\") {\n        return [0, 0, 0, 0];\n      }\n\n      rgb = colorName$1[match[1]];\n\n      if (!rgb) {\n        return;\n      }\n    }\n\n    for (var i = 0; i < rgb.length; i++) {\n      rgb[i] = scale(rgb[i], 0, 255);\n    }\n\n    if (!a && a != 0) {\n      a = 1;\n    } else {\n      a = scale(a, 0, 1);\n    }\n\n    rgb[3] = a;\n    return rgb;\n  }\n\n  function getHsla(string) {\n    if (!string) {\n      return;\n    }\n\n    var hsl = /^hsla?\\(\\s*([+-]?\\d+)(?:deg)?\\s*,\\s*([+-]?[\\d\\.]+)%\\s*,\\s*([+-]?[\\d\\.]+)%\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)/;\n    var match = string.match(hsl);\n\n    if (match) {\n      var alpha = parseFloat(match[4]);\n      var h = scale(parseInt(match[1]), 0, 360),\n          s = scale(parseFloat(match[2]), 0, 100),\n          l = scale(parseFloat(match[3]), 0, 100),\n          a = scale(isNaN(alpha) ? 1 : alpha, 0, 1);\n      return [h, s, l, a];\n    }\n  }\n\n  function getHwb(string) {\n    if (!string) {\n      return;\n    }\n\n    var hwb = /^hwb\\(\\s*([+-]?\\d+)(?:deg)?\\s*,\\s*([+-]?[\\d\\.]+)%\\s*,\\s*([+-]?[\\d\\.]+)%\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)/;\n    var match = string.match(hwb);\n\n    if (match) {\n      var alpha = parseFloat(match[4]);\n      var h = scale(parseInt(match[1]), 0, 360),\n          w = scale(parseFloat(match[2]), 0, 100),\n          b = scale(parseFloat(match[3]), 0, 100),\n          a = scale(isNaN(alpha) ? 1 : alpha, 0, 1);\n      return [h, w, b, a];\n    }\n  }\n\n  function getRgb(string) {\n    var rgba = getRgba(string);\n    return rgba && rgba.slice(0, 3);\n  }\n\n  function getHsl(string) {\n    var hsla = getHsla(string);\n    return hsla && hsla.slice(0, 3);\n  }\n\n  function getAlpha(string) {\n    var vals = getRgba(string);\n\n    if (vals) {\n      return vals[3];\n    } else if (vals = getHsla(string)) {\n      return vals[3];\n    } else if (vals = getHwb(string)) {\n      return vals[3];\n    }\n  } // generators\n\n\n  function hexString(rgba, a) {\n    var a = a !== undefined && rgba.length === 3 ? a : rgba[3];\n    return \"#\" + hexDouble(rgba[0]) + hexDouble(rgba[1]) + hexDouble(rgba[2]) + (a >= 0 && a < 1 ? hexDouble(Math.round(a * 255)) : \"\");\n  }\n\n  function rgbString(rgba, alpha) {\n    if (alpha < 1 || rgba[3] && rgba[3] < 1) {\n      return rgbaString(rgba, alpha);\n    }\n\n    return \"rgb(\" + rgba[0] + \", \" + rgba[1] + \", \" + rgba[2] + \")\";\n  }\n\n  function rgbaString(rgba, alpha) {\n    if (alpha === undefined) {\n      alpha = rgba[3] !== undefined ? rgba[3] : 1;\n    }\n\n    return \"rgba(\" + rgba[0] + \", \" + rgba[1] + \", \" + rgba[2] + \", \" + alpha + \")\";\n  }\n\n  function percentString(rgba, alpha) {\n    if (alpha < 1 || rgba[3] && rgba[3] < 1) {\n      return percentaString(rgba, alpha);\n    }\n\n    var r = Math.round(rgba[0] / 255 * 100),\n        g = Math.round(rgba[1] / 255 * 100),\n        b = Math.round(rgba[2] / 255 * 100);\n    return \"rgb(\" + r + \"%, \" + g + \"%, \" + b + \"%)\";\n  }\n\n  function percentaString(rgba, alpha) {\n    var r = Math.round(rgba[0] / 255 * 100),\n        g = Math.round(rgba[1] / 255 * 100),\n        b = Math.round(rgba[2] / 255 * 100);\n    return \"rgba(\" + r + \"%, \" + g + \"%, \" + b + \"%, \" + (alpha || rgba[3] || 1) + \")\";\n  }\n\n  function hslString(hsla, alpha) {\n    if (alpha < 1 || hsla[3] && hsla[3] < 1) {\n      return hslaString(hsla, alpha);\n    }\n\n    return \"hsl(\" + hsla[0] + \", \" + hsla[1] + \"%, \" + hsla[2] + \"%)\";\n  }\n\n  function hslaString(hsla, alpha) {\n    if (alpha === undefined) {\n      alpha = hsla[3] !== undefined ? hsla[3] : 1;\n    }\n\n    return \"hsla(\" + hsla[0] + \", \" + hsla[1] + \"%, \" + hsla[2] + \"%, \" + alpha + \")\";\n  } // hwb is a bit different than rgb(a) & hsl(a) since there is no alpha specific syntax\n  // (hwb have alpha optional & 1 is default value)\n\n\n  function hwbString(hwb, alpha) {\n    if (alpha === undefined) {\n      alpha = hwb[3] !== undefined ? hwb[3] : 1;\n    }\n\n    return \"hwb(\" + hwb[0] + \", \" + hwb[1] + \"%, \" + hwb[2] + \"%\" + (alpha !== undefined && alpha !== 1 ? \", \" + alpha : \"\") + \")\";\n  }\n\n  function keyword(rgb) {\n    return reverseNames[rgb.slice(0, 3)];\n  } // helpers\n\n\n  function scale(num, min, max) {\n    return Math.min(Math.max(min, num), max);\n  }\n\n  function hexDouble(num) {\n    var str = num.toString(16).toUpperCase();\n    return str.length < 2 ? \"0\" + str : str;\n  } //create a list of reverse color names\n\n\n  var reverseNames = {};\n\n  for (var name in colorName$1) {\n    reverseNames[colorName$1[name]] = name;\n  }\n  /* MIT license */\n\n\n  var Color = function Color(obj) {\n    if (obj instanceof Color) {\n      return obj;\n    }\n\n    if (!(this instanceof Color)) {\n      return new Color(obj);\n    }\n\n    this.valid = false;\n    this.values = {\n      rgb: [0, 0, 0],\n      hsl: [0, 0, 0],\n      hsv: [0, 0, 0],\n      hwb: [0, 0, 0],\n      cmyk: [0, 0, 0, 0],\n      alpha: 1\n    }; // parse Color() argument\n\n    var vals;\n\n    if (typeof obj === 'string') {\n      vals = colorString.getRgba(obj);\n\n      if (vals) {\n        this.setValues('rgb', vals);\n      } else if (vals = colorString.getHsla(obj)) {\n        this.setValues('hsl', vals);\n      } else if (vals = colorString.getHwb(obj)) {\n        this.setValues('hwb', vals);\n      }\n    } else if (typeof obj === 'object') {\n      vals = obj;\n\n      if (vals.r !== undefined || vals.red !== undefined) {\n        this.setValues('rgb', vals);\n      } else if (vals.l !== undefined || vals.lightness !== undefined) {\n        this.setValues('hsl', vals);\n      } else if (vals.v !== undefined || vals.value !== undefined) {\n        this.setValues('hsv', vals);\n      } else if (vals.w !== undefined || vals.whiteness !== undefined) {\n        this.setValues('hwb', vals);\n      } else if (vals.c !== undefined || vals.cyan !== undefined) {\n        this.setValues('cmyk', vals);\n      }\n    }\n  };\n\n  Color.prototype = {\n    isValid: function isValid() {\n      return this.valid;\n    },\n    rgb: function rgb() {\n      return this.setSpace('rgb', arguments);\n    },\n    hsl: function hsl() {\n      return this.setSpace('hsl', arguments);\n    },\n    hsv: function hsv() {\n      return this.setSpace('hsv', arguments);\n    },\n    hwb: function hwb() {\n      return this.setSpace('hwb', arguments);\n    },\n    cmyk: function cmyk() {\n      return this.setSpace('cmyk', arguments);\n    },\n    rgbArray: function rgbArray() {\n      return this.values.rgb;\n    },\n    hslArray: function hslArray() {\n      return this.values.hsl;\n    },\n    hsvArray: function hsvArray() {\n      return this.values.hsv;\n    },\n    hwbArray: function hwbArray() {\n      var values = this.values;\n\n      if (values.alpha !== 1) {\n        return values.hwb.concat([values.alpha]);\n      }\n\n      return values.hwb;\n    },\n    cmykArray: function cmykArray() {\n      return this.values.cmyk;\n    },\n    rgbaArray: function rgbaArray() {\n      var values = this.values;\n      return values.rgb.concat([values.alpha]);\n    },\n    hslaArray: function hslaArray() {\n      var values = this.values;\n      return values.hsl.concat([values.alpha]);\n    },\n    alpha: function alpha(val) {\n      if (val === undefined) {\n        return this.values.alpha;\n      }\n\n      this.setValues('alpha', val);\n      return this;\n    },\n    red: function red(val) {\n      return this.setChannel('rgb', 0, val);\n    },\n    green: function green(val) {\n      return this.setChannel('rgb', 1, val);\n    },\n    blue: function blue(val) {\n      return this.setChannel('rgb', 2, val);\n    },\n    hue: function hue(val) {\n      if (val) {\n        val %= 360;\n        val = val < 0 ? 360 + val : val;\n      }\n\n      return this.setChannel('hsl', 0, val);\n    },\n    saturation: function saturation(val) {\n      return this.setChannel('hsl', 1, val);\n    },\n    lightness: function lightness(val) {\n      return this.setChannel('hsl', 2, val);\n    },\n    saturationv: function saturationv(val) {\n      return this.setChannel('hsv', 1, val);\n    },\n    whiteness: function whiteness(val) {\n      return this.setChannel('hwb', 1, val);\n    },\n    blackness: function blackness(val) {\n      return this.setChannel('hwb', 2, val);\n    },\n    value: function value(val) {\n      return this.setChannel('hsv', 2, val);\n    },\n    cyan: function cyan(val) {\n      return this.setChannel('cmyk', 0, val);\n    },\n    magenta: function magenta(val) {\n      return this.setChannel('cmyk', 1, val);\n    },\n    yellow: function yellow(val) {\n      return this.setChannel('cmyk', 2, val);\n    },\n    black: function black(val) {\n      return this.setChannel('cmyk', 3, val);\n    },\n    hexString: function hexString() {\n      return colorString.hexString(this.values.rgb);\n    },\n    rgbString: function rgbString() {\n      return colorString.rgbString(this.values.rgb, this.values.alpha);\n    },\n    rgbaString: function rgbaString() {\n      return colorString.rgbaString(this.values.rgb, this.values.alpha);\n    },\n    percentString: function percentString() {\n      return colorString.percentString(this.values.rgb, this.values.alpha);\n    },\n    hslString: function hslString() {\n      return colorString.hslString(this.values.hsl, this.values.alpha);\n    },\n    hslaString: function hslaString() {\n      return colorString.hslaString(this.values.hsl, this.values.alpha);\n    },\n    hwbString: function hwbString() {\n      return colorString.hwbString(this.values.hwb, this.values.alpha);\n    },\n    keyword: function keyword() {\n      return colorString.keyword(this.values.rgb, this.values.alpha);\n    },\n    rgbNumber: function rgbNumber() {\n      var rgb = this.values.rgb;\n      return rgb[0] << 16 | rgb[1] << 8 | rgb[2];\n    },\n    luminosity: function luminosity() {\n      // http://www.w3.org/TR/WCAG20/#relativeluminancedef\n      var rgb = this.values.rgb;\n      var lum = [];\n\n      for (var i = 0; i < rgb.length; i++) {\n        var chan = rgb[i] / 255;\n        lum[i] = chan <= 0.03928 ? chan / 12.92 : Math.pow((chan + 0.055) / 1.055, 2.4);\n      }\n\n      return 0.2126 * lum[0] + 0.7152 * lum[1] + 0.0722 * lum[2];\n    },\n    contrast: function contrast(color2) {\n      // http://www.w3.org/TR/WCAG20/#contrast-ratiodef\n      var lum1 = this.luminosity();\n      var lum2 = color2.luminosity();\n\n      if (lum1 > lum2) {\n        return (lum1 + 0.05) / (lum2 + 0.05);\n      }\n\n      return (lum2 + 0.05) / (lum1 + 0.05);\n    },\n    level: function level(color2) {\n      var contrastRatio = this.contrast(color2);\n\n      if (contrastRatio >= 7.1) {\n        return 'AAA';\n      }\n\n      return contrastRatio >= 4.5 ? 'AA' : '';\n    },\n    dark: function dark() {\n      // YIQ equation from http://24ways.org/2010/calculating-color-contrast\n      var rgb = this.values.rgb;\n      var yiq = (rgb[0] * 299 + rgb[1] * 587 + rgb[2] * 114) / 1000;\n      return yiq < 128;\n    },\n    light: function light() {\n      return !this.dark();\n    },\n    negate: function negate() {\n      var rgb = [];\n\n      for (var i = 0; i < 3; i++) {\n        rgb[i] = 255 - this.values.rgb[i];\n      }\n\n      this.setValues('rgb', rgb);\n      return this;\n    },\n    lighten: function lighten(ratio) {\n      var hsl = this.values.hsl;\n      hsl[2] += hsl[2] * ratio;\n      this.setValues('hsl', hsl);\n      return this;\n    },\n    darken: function darken(ratio) {\n      var hsl = this.values.hsl;\n      hsl[2] -= hsl[2] * ratio;\n      this.setValues('hsl', hsl);\n      return this;\n    },\n    saturate: function saturate(ratio) {\n      var hsl = this.values.hsl;\n      hsl[1] += hsl[1] * ratio;\n      this.setValues('hsl', hsl);\n      return this;\n    },\n    desaturate: function desaturate(ratio) {\n      var hsl = this.values.hsl;\n      hsl[1] -= hsl[1] * ratio;\n      this.setValues('hsl', hsl);\n      return this;\n    },\n    whiten: function whiten(ratio) {\n      var hwb = this.values.hwb;\n      hwb[1] += hwb[1] * ratio;\n      this.setValues('hwb', hwb);\n      return this;\n    },\n    blacken: function blacken(ratio) {\n      var hwb = this.values.hwb;\n      hwb[2] += hwb[2] * ratio;\n      this.setValues('hwb', hwb);\n      return this;\n    },\n    greyscale: function greyscale() {\n      var rgb = this.values.rgb; // http://en.wikipedia.org/wiki/Grayscale#Converting_color_to_grayscale\n\n      var val = rgb[0] * 0.3 + rgb[1] * 0.59 + rgb[2] * 0.11;\n      this.setValues('rgb', [val, val, val]);\n      return this;\n    },\n    clearer: function clearer(ratio) {\n      var alpha = this.values.alpha;\n      this.setValues('alpha', alpha - alpha * ratio);\n      return this;\n    },\n    opaquer: function opaquer(ratio) {\n      var alpha = this.values.alpha;\n      this.setValues('alpha', alpha + alpha * ratio);\n      return this;\n    },\n    rotate: function rotate(degrees) {\n      var hsl = this.values.hsl;\n      var hue = (hsl[0] + degrees) % 360;\n      hsl[0] = hue < 0 ? 360 + hue : hue;\n      this.setValues('hsl', hsl);\n      return this;\n    },\n\n    /**\n     * Ported from sass implementation in C\n     * https://github.com/sass/libsass/blob/0e6b4a2850092356aa3ece07c6b249f0221caced/functions.cpp#L209\n     */\n    mix: function mix(mixinColor, weight) {\n      var color1 = this;\n      var color2 = mixinColor;\n      var p = weight === undefined ? 0.5 : weight;\n      var w = 2 * p - 1;\n      var a = color1.alpha() - color2.alpha();\n      var w1 = ((w * a === -1 ? w : (w + a) / (1 + w * a)) + 1) / 2.0;\n      var w2 = 1 - w1;\n      return this.rgb(w1 * color1.red() + w2 * color2.red(), w1 * color1.green() + w2 * color2.green(), w1 * color1.blue() + w2 * color2.blue()).alpha(color1.alpha() * p + color2.alpha() * (1 - p));\n    },\n    toJSON: function toJSON() {\n      return this.rgb();\n    },\n    clone: function clone() {\n      // NOTE(SB): using node-clone creates a dependency to Buffer when using browserify,\n      // making the final build way to big to embed in Chart.js. So let's do it manually,\n      // assuming that values to clone are 1 dimension arrays containing only numbers,\n      // except 'alpha' which is a number.\n      var result = new Color();\n      var source = this.values;\n      var target = result.values;\n      var value, type;\n\n      for (var prop in source) {\n        if (source.hasOwnProperty(prop)) {\n          value = source[prop];\n          type = {}.toString.call(value);\n\n          if (type === '[object Array]') {\n            target[prop] = value.slice(0);\n          } else if (type === '[object Number]') {\n            target[prop] = value;\n          } else {\n            console.error('unexpected color value:', value);\n          }\n        }\n      }\n\n      return result;\n    }\n  };\n  Color.prototype.spaces = {\n    rgb: ['red', 'green', 'blue'],\n    hsl: ['hue', 'saturation', 'lightness'],\n    hsv: ['hue', 'saturation', 'value'],\n    hwb: ['hue', 'whiteness', 'blackness'],\n    cmyk: ['cyan', 'magenta', 'yellow', 'black']\n  };\n  Color.prototype.maxes = {\n    rgb: [255, 255, 255],\n    hsl: [360, 100, 100],\n    hsv: [360, 100, 100],\n    hwb: [360, 100, 100],\n    cmyk: [100, 100, 100, 100]\n  };\n\n  Color.prototype.getValues = function (space) {\n    var values = this.values;\n    var vals = {};\n\n    for (var i = 0; i < space.length; i++) {\n      vals[space.charAt(i)] = values[space][i];\n    }\n\n    if (values.alpha !== 1) {\n      vals.a = values.alpha;\n    } // {r: 255, g: 255, b: 255, a: 0.4}\n\n\n    return vals;\n  };\n\n  Color.prototype.setValues = function (space, vals) {\n    var values = this.values;\n    var spaces = this.spaces;\n    var maxes = this.maxes;\n    var alpha = 1;\n    var i;\n    this.valid = true;\n\n    if (space === 'alpha') {\n      alpha = vals;\n    } else if (vals.length) {\n      // [10, 10, 10]\n      values[space] = vals.slice(0, space.length);\n      alpha = vals[space.length];\n    } else if (vals[space.charAt(0)] !== undefined) {\n      // {r: 10, g: 10, b: 10}\n      for (i = 0; i < space.length; i++) {\n        values[space][i] = vals[space.charAt(i)];\n      }\n\n      alpha = vals.a;\n    } else if (vals[spaces[space][0]] !== undefined) {\n      // {red: 10, green: 10, blue: 10}\n      var chans = spaces[space];\n\n      for (i = 0; i < space.length; i++) {\n        values[space][i] = vals[chans[i]];\n      }\n\n      alpha = vals.alpha;\n    }\n\n    values.alpha = Math.max(0, Math.min(1, alpha === undefined ? values.alpha : alpha));\n\n    if (space === 'alpha') {\n      return false;\n    }\n\n    var capped; // cap values of the space prior converting all values\n\n    for (i = 0; i < space.length; i++) {\n      capped = Math.max(0, Math.min(maxes[space][i], values[space][i]));\n      values[space][i] = Math.round(capped);\n    } // convert to all the other color spaces\n\n\n    for (var sname in spaces) {\n      if (sname !== space) {\n        values[sname] = colorConvert[space][sname](values[space]);\n      }\n    }\n\n    return true;\n  };\n\n  Color.prototype.setSpace = function (space, args) {\n    var vals = args[0];\n\n    if (vals === undefined) {\n      // color.rgb()\n      return this.getValues(space);\n    } // color.rgb(10, 10, 10)\n\n\n    if (typeof vals === 'number') {\n      vals = Array.prototype.slice.call(args);\n    }\n\n    this.setValues(space, vals);\n    return this;\n  };\n\n  Color.prototype.setChannel = function (space, index, val) {\n    var svalues = this.values[space];\n\n    if (val === undefined) {\n      // color.red()\n      return svalues[index];\n    } else if (val === svalues[index]) {\n      // color.red(color.red())\n      return this;\n    } // color.red(100)\n\n\n    svalues[index] = val;\n    this.setValues(space, svalues);\n    return this;\n  };\n\n  if (typeof window !== 'undefined') {\n    window.Color = Color;\n  }\n\n  var chartjsColor = Color;\n  /**\n   * @namespace Chart.helpers\n   */\n\n  var helpers = {\n    /**\n     * An empty function that can be used, for example, for optional callback.\n     */\n    noop: function noop() {},\n\n    /**\n     * Returns a unique id, sequentially generated from a global variable.\n     * @returns {number}\n     * @function\n     */\n    uid: function () {\n      var id = 0;\n      return function () {\n        return id++;\n      };\n    }(),\n\n    /**\n     * Returns true if `value` is neither null nor undefined, else returns false.\n     * @param {*} value - The value to test.\n     * @returns {boolean}\n     * @since 2.7.0\n     */\n    isNullOrUndef: function isNullOrUndef(value) {\n      return value === null || typeof value === 'undefined';\n    },\n\n    /**\n     * Returns true if `value` is an array (including typed arrays), else returns false.\n     * @param {*} value - The value to test.\n     * @returns {boolean}\n     * @function\n     */\n    isArray: function isArray(value) {\n      if (Array.isArray && Array.isArray(value)) {\n        return true;\n      }\n\n      var type = Object.prototype.toString.call(value);\n\n      if (type.substr(0, 7) === '[object' && type.substr(-6) === 'Array]') {\n        return true;\n      }\n\n      return false;\n    },\n\n    /**\n     * Returns true if `value` is an object (excluding null), else returns false.\n     * @param {*} value - The value to test.\n     * @returns {boolean}\n     * @since 2.7.0\n     */\n    isObject: function isObject(value) {\n      return value !== null && Object.prototype.toString.call(value) === '[object Object]';\n    },\n\n    /**\n     * Returns true if `value` is a finite number, else returns false\n     * @param {*} value  - The value to test.\n     * @returns {boolean}\n     */\n    isFinite: function (_isFinite) {\n      function isFinite(_x) {\n        return _isFinite.apply(this, arguments);\n      }\n\n      isFinite.toString = function () {\n        return _isFinite.toString();\n      };\n\n      return isFinite;\n    }(function (value) {\n      return (typeof value === 'number' || value instanceof Number) && isFinite(value);\n    }),\n\n    /**\n     * Returns `value` if defined, else returns `defaultValue`.\n     * @param {*} value - The value to return if defined.\n     * @param {*} defaultValue - The value to return if `value` is undefined.\n     * @returns {*}\n     */\n    valueOrDefault: function valueOrDefault(value, defaultValue) {\n      return typeof value === 'undefined' ? defaultValue : value;\n    },\n\n    /**\n     * Returns value at the given `index` in array if defined, else returns `defaultValue`.\n     * @param {Array} value - The array to lookup for value at `index`.\n     * @param {number} index - The index in `value` to lookup for value.\n     * @param {*} defaultValue - The value to return if `value[index]` is undefined.\n     * @returns {*}\n     */\n    valueAtIndexOrDefault: function valueAtIndexOrDefault(value, index, defaultValue) {\n      return helpers.valueOrDefault(helpers.isArray(value) ? value[index] : value, defaultValue);\n    },\n\n    /**\n     * Calls `fn` with the given `args` in the scope defined by `thisArg` and returns the\n     * value returned by `fn`. If `fn` is not a function, this method returns undefined.\n     * @param {function} fn - The function to call.\n     * @param {Array|undefined|null} args - The arguments with which `fn` should be called.\n     * @param {object} [thisArg] - The value of `this` provided for the call to `fn`.\n     * @returns {*}\n     */\n    callback: function callback(fn, args, thisArg) {\n      if (fn && typeof fn.call === 'function') {\n        return fn.apply(thisArg, args);\n      }\n    },\n\n    /**\n     * Note(SB) for performance sake, this method should only be used when loopable type\n     * is unknown or in none intensive code (not called often and small loopable). Else\n     * it's preferable to use a regular for() loop and save extra function calls.\n     * @param {object|Array} loopable - The object or array to be iterated.\n     * @param {function} fn - The function to call for each item.\n     * @param {object} [thisArg] - The value of `this` provided for the call to `fn`.\n     * @param {boolean} [reverse] - If true, iterates backward on the loopable.\n     */\n    each: function each(loopable, fn, thisArg, reverse) {\n      var i, len, keys;\n\n      if (helpers.isArray(loopable)) {\n        len = loopable.length;\n\n        if (reverse) {\n          for (i = len - 1; i >= 0; i--) {\n            fn.call(thisArg, loopable[i], i);\n          }\n        } else {\n          for (i = 0; i < len; i++) {\n            fn.call(thisArg, loopable[i], i);\n          }\n        }\n      } else if (helpers.isObject(loopable)) {\n        keys = Object.keys(loopable);\n        len = keys.length;\n\n        for (i = 0; i < len; i++) {\n          fn.call(thisArg, loopable[keys[i]], keys[i]);\n        }\n      }\n    },\n\n    /**\n     * Returns true if the `a0` and `a1` arrays have the same content, else returns false.\n     * @see https://stackoverflow.com/a/14853974\n     * @param {Array} a0 - The array to compare\n     * @param {Array} a1 - The array to compare\n     * @returns {boolean}\n     */\n    arrayEquals: function arrayEquals(a0, a1) {\n      var i, ilen, v0, v1;\n\n      if (!a0 || !a1 || a0.length !== a1.length) {\n        return false;\n      }\n\n      for (i = 0, ilen = a0.length; i < ilen; ++i) {\n        v0 = a0[i];\n        v1 = a1[i];\n\n        if (v0 instanceof Array && v1 instanceof Array) {\n          if (!helpers.arrayEquals(v0, v1)) {\n            return false;\n          }\n        } else if (v0 !== v1) {\n          // NOTE: two different object instances will never be equal: {x:20} != {x:20}\n          return false;\n        }\n      }\n\n      return true;\n    },\n\n    /**\n     * Returns a deep copy of `source` without keeping references on objects and arrays.\n     * @param {*} source - The value to clone.\n     * @returns {*}\n     */\n    clone: function clone(source) {\n      if (helpers.isArray(source)) {\n        return source.map(helpers.clone);\n      }\n\n      if (helpers.isObject(source)) {\n        var target = {};\n        var keys = Object.keys(source);\n        var klen = keys.length;\n        var k = 0;\n\n        for (; k < klen; ++k) {\n          target[keys[k]] = helpers.clone(source[keys[k]]);\n        }\n\n        return target;\n      }\n\n      return source;\n    },\n\n    /**\n     * The default merger when Chart.helpers.merge is called without merger option.\n     * Note(SB): also used by mergeConfig and mergeScaleConfig as fallback.\n     * @private\n     */\n    _merger: function _merger(key, target, source, options) {\n      var tval = target[key];\n      var sval = source[key];\n\n      if (helpers.isObject(tval) && helpers.isObject(sval)) {\n        helpers.merge(tval, sval, options);\n      } else {\n        target[key] = helpers.clone(sval);\n      }\n    },\n\n    /**\n     * Merges source[key] in target[key] only if target[key] is undefined.\n     * @private\n     */\n    _mergerIf: function _mergerIf(key, target, source) {\n      var tval = target[key];\n      var sval = source[key];\n\n      if (helpers.isObject(tval) && helpers.isObject(sval)) {\n        helpers.mergeIf(tval, sval);\n      } else if (!target.hasOwnProperty(key)) {\n        target[key] = helpers.clone(sval);\n      }\n    },\n\n    /**\n     * Recursively deep copies `source` properties into `target` with the given `options`.\n     * IMPORTANT: `target` is not cloned and will be updated with `source` properties.\n     * @param {object} target - The target object in which all sources are merged into.\n     * @param {object|object[]} source - Object(s) to merge into `target`.\n     * @param {object} [options] - Merging options:\n     * @param {function} [options.merger] - The merge method (key, target, source, options)\n     * @returns {object} The `target` object.\n     */\n    merge: function merge(target, source, options) {\n      var sources = helpers.isArray(source) ? source : [source];\n      var ilen = sources.length;\n      var merge, i, keys, klen, k;\n\n      if (!helpers.isObject(target)) {\n        return target;\n      }\n\n      options = options || {};\n      merge = options.merger || helpers._merger;\n\n      for (i = 0; i < ilen; ++i) {\n        source = sources[i];\n\n        if (!helpers.isObject(source)) {\n          continue;\n        }\n\n        keys = Object.keys(source);\n\n        for (k = 0, klen = keys.length; k < klen; ++k) {\n          merge(keys[k], target, source, options);\n        }\n      }\n\n      return target;\n    },\n\n    /**\n     * Recursively deep copies `source` properties into `target` *only* if not defined in target.\n     * IMPORTANT: `target` is not cloned and will be updated with `source` properties.\n     * @param {object} target - The target object in which all sources are merged into.\n     * @param {object|object[]} source - Object(s) to merge into `target`.\n     * @returns {object} The `target` object.\n     */\n    mergeIf: function mergeIf(target, source) {\n      return helpers.merge(target, source, {\n        merger: helpers._mergerIf\n      });\n    },\n\n    /**\n     * Applies the contents of two or more objects together into the first object.\n     * @param {object} target - The target object in which all objects are merged into.\n     * @param {object} arg1 - Object containing additional properties to merge in target.\n     * @param {object} argN - Additional objects containing properties to merge in target.\n     * @returns {object} The `target` object.\n     */\n    extend: Object.assign || function (target) {\n      return helpers.merge(target, [].slice.call(arguments, 1), {\n        merger: function merger(key, dst, src) {\n          dst[key] = src[key];\n        }\n      });\n    },\n\n    /**\n     * Basic javascript inheritance based on the model created in Backbone.js\n     */\n    inherits: function inherits(extensions) {\n      var me = this;\n      var ChartElement = extensions && extensions.hasOwnProperty('constructor') ? extensions.constructor : function () {\n        return me.apply(this, arguments);\n      };\n\n      var Surrogate = function Surrogate() {\n        this.constructor = ChartElement;\n      };\n\n      Surrogate.prototype = me.prototype;\n      ChartElement.prototype = new Surrogate();\n      ChartElement.extend = helpers.inherits;\n\n      if (extensions) {\n        helpers.extend(ChartElement.prototype, extensions);\n      }\n\n      ChartElement.__super__ = me.prototype;\n      return ChartElement;\n    },\n    _deprecated: function _deprecated(scope, value, previous, current) {\n      if (value !== undefined) {\n        console.warn(scope + ': \"' + previous + '\" is deprecated. Please use \"' + current + '\" instead');\n      }\n    }\n  };\n  var helpers_core = helpers; // DEPRECATIONS\n\n  /**\n   * Provided for backward compatibility, use Chart.helpers.callback instead.\n   * @function Chart.helpers.callCallback\n   * @deprecated since version 2.6.0\n   * @todo remove at version 3\n   * @private\n   */\n\n  helpers.callCallback = helpers.callback;\n  /**\n   * Provided for backward compatibility, use Array.prototype.indexOf instead.\n   * Array.prototype.indexOf compatibility: Chrome, Opera, Safari, FF1.5+, IE9+\n   * @function Chart.helpers.indexOf\n   * @deprecated since version 2.7.0\n   * @todo remove at version 3\n   * @private\n   */\n\n  helpers.indexOf = function (array, item, fromIndex) {\n    return Array.prototype.indexOf.call(array, item, fromIndex);\n  };\n  /**\n   * Provided for backward compatibility, use Chart.helpers.valueOrDefault instead.\n   * @function Chart.helpers.getValueOrDefault\n   * @deprecated since version 2.7.0\n   * @todo remove at version 3\n   * @private\n   */\n\n\n  helpers.getValueOrDefault = helpers.valueOrDefault;\n  /**\n   * Provided for backward compatibility, use Chart.helpers.valueAtIndexOrDefault instead.\n   * @function Chart.helpers.getValueAtIndexOrDefault\n   * @deprecated since version 2.7.0\n   * @todo remove at version 3\n   * @private\n   */\n\n  helpers.getValueAtIndexOrDefault = helpers.valueAtIndexOrDefault;\n  /**\n   * Easing functions adapted from Robert Penner's easing equations.\n   * @namespace Chart.helpers.easingEffects\n   * @see http://www.robertpenner.com/easing/\n   */\n\n  var effects = {\n    linear: function linear(t) {\n      return t;\n    },\n    easeInQuad: function easeInQuad(t) {\n      return t * t;\n    },\n    easeOutQuad: function easeOutQuad(t) {\n      return -t * (t - 2);\n    },\n    easeInOutQuad: function easeInOutQuad(t) {\n      if ((t /= 0.5) < 1) {\n        return 0.5 * t * t;\n      }\n\n      return -0.5 * (--t * (t - 2) - 1);\n    },\n    easeInCubic: function easeInCubic(t) {\n      return t * t * t;\n    },\n    easeOutCubic: function easeOutCubic(t) {\n      return (t = t - 1) * t * t + 1;\n    },\n    easeInOutCubic: function easeInOutCubic(t) {\n      if ((t /= 0.5) < 1) {\n        return 0.5 * t * t * t;\n      }\n\n      return 0.5 * ((t -= 2) * t * t + 2);\n    },\n    easeInQuart: function easeInQuart(t) {\n      return t * t * t * t;\n    },\n    easeOutQuart: function easeOutQuart(t) {\n      return -((t = t - 1) * t * t * t - 1);\n    },\n    easeInOutQuart: function easeInOutQuart(t) {\n      if ((t /= 0.5) < 1) {\n        return 0.5 * t * t * t * t;\n      }\n\n      return -0.5 * ((t -= 2) * t * t * t - 2);\n    },\n    easeInQuint: function easeInQuint(t) {\n      return t * t * t * t * t;\n    },\n    easeOutQuint: function easeOutQuint(t) {\n      return (t = t - 1) * t * t * t * t + 1;\n    },\n    easeInOutQuint: function easeInOutQuint(t) {\n      if ((t /= 0.5) < 1) {\n        return 0.5 * t * t * t * t * t;\n      }\n\n      return 0.5 * ((t -= 2) * t * t * t * t + 2);\n    },\n    easeInSine: function easeInSine(t) {\n      return -Math.cos(t * (Math.PI / 2)) + 1;\n    },\n    easeOutSine: function easeOutSine(t) {\n      return Math.sin(t * (Math.PI / 2));\n    },\n    easeInOutSine: function easeInOutSine(t) {\n      return -0.5 * (Math.cos(Math.PI * t) - 1);\n    },\n    easeInExpo: function easeInExpo(t) {\n      return t === 0 ? 0 : Math.pow(2, 10 * (t - 1));\n    },\n    easeOutExpo: function easeOutExpo(t) {\n      return t === 1 ? 1 : -Math.pow(2, -10 * t) + 1;\n    },\n    easeInOutExpo: function easeInOutExpo(t) {\n      if (t === 0) {\n        return 0;\n      }\n\n      if (t === 1) {\n        return 1;\n      }\n\n      if ((t /= 0.5) < 1) {\n        return 0.5 * Math.pow(2, 10 * (t - 1));\n      }\n\n      return 0.5 * (-Math.pow(2, -10 * --t) + 2);\n    },\n    easeInCirc: function easeInCirc(t) {\n      if (t >= 1) {\n        return t;\n      }\n\n      return -(Math.sqrt(1 - t * t) - 1);\n    },\n    easeOutCirc: function easeOutCirc(t) {\n      return Math.sqrt(1 - (t = t - 1) * t);\n    },\n    easeInOutCirc: function easeInOutCirc(t) {\n      if ((t /= 0.5) < 1) {\n        return -0.5 * (Math.sqrt(1 - t * t) - 1);\n      }\n\n      return 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1);\n    },\n    easeInElastic: function easeInElastic(t) {\n      var s = 1.70158;\n      var p = 0;\n      var a = 1;\n\n      if (t === 0) {\n        return 0;\n      }\n\n      if (t === 1) {\n        return 1;\n      }\n\n      if (!p) {\n        p = 0.3;\n      }\n\n      if (a < 1) {\n        a = 1;\n        s = p / 4;\n      } else {\n        s = p / (2 * Math.PI) * Math.asin(1 / a);\n      }\n\n      return -(a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p));\n    },\n    easeOutElastic: function easeOutElastic(t) {\n      var s = 1.70158;\n      var p = 0;\n      var a = 1;\n\n      if (t === 0) {\n        return 0;\n      }\n\n      if (t === 1) {\n        return 1;\n      }\n\n      if (!p) {\n        p = 0.3;\n      }\n\n      if (a < 1) {\n        a = 1;\n        s = p / 4;\n      } else {\n        s = p / (2 * Math.PI) * Math.asin(1 / a);\n      }\n\n      return a * Math.pow(2, -10 * t) * Math.sin((t - s) * (2 * Math.PI) / p) + 1;\n    },\n    easeInOutElastic: function easeInOutElastic(t) {\n      var s = 1.70158;\n      var p = 0;\n      var a = 1;\n\n      if (t === 0) {\n        return 0;\n      }\n\n      if ((t /= 0.5) === 2) {\n        return 1;\n      }\n\n      if (!p) {\n        p = 0.45;\n      }\n\n      if (a < 1) {\n        a = 1;\n        s = p / 4;\n      } else {\n        s = p / (2 * Math.PI) * Math.asin(1 / a);\n      }\n\n      if (t < 1) {\n        return -0.5 * (a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p));\n      }\n\n      return a * Math.pow(2, -10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p) * 0.5 + 1;\n    },\n    easeInBack: function easeInBack(t) {\n      var s = 1.70158;\n      return t * t * ((s + 1) * t - s);\n    },\n    easeOutBack: function easeOutBack(t) {\n      var s = 1.70158;\n      return (t = t - 1) * t * ((s + 1) * t + s) + 1;\n    },\n    easeInOutBack: function easeInOutBack(t) {\n      var s = 1.70158;\n\n      if ((t /= 0.5) < 1) {\n        return 0.5 * (t * t * (((s *= 1.525) + 1) * t - s));\n      }\n\n      return 0.5 * ((t -= 2) * t * (((s *= 1.525) + 1) * t + s) + 2);\n    },\n    easeInBounce: function easeInBounce(t) {\n      return 1 - effects.easeOutBounce(1 - t);\n    },\n    easeOutBounce: function easeOutBounce(t) {\n      if (t < 1 / 2.75) {\n        return 7.5625 * t * t;\n      }\n\n      if (t < 2 / 2.75) {\n        return 7.5625 * (t -= 1.5 / 2.75) * t + 0.75;\n      }\n\n      if (t < 2.5 / 2.75) {\n        return 7.5625 * (t -= 2.25 / 2.75) * t + 0.9375;\n      }\n\n      return 7.5625 * (t -= 2.625 / 2.75) * t + 0.984375;\n    },\n    easeInOutBounce: function easeInOutBounce(t) {\n      if (t < 0.5) {\n        return effects.easeInBounce(t * 2) * 0.5;\n      }\n\n      return effects.easeOutBounce(t * 2 - 1) * 0.5 + 0.5;\n    }\n  };\n  var helpers_easing = {\n    effects: effects\n  }; // DEPRECATIONS\n\n  /**\n   * Provided for backward compatibility, use Chart.helpers.easing.effects instead.\n   * @function Chart.helpers.easingEffects\n   * @deprecated since version 2.7.0\n   * @todo remove at version 3\n   * @private\n   */\n\n  helpers_core.easingEffects = effects;\n  var PI = Math.PI;\n  var RAD_PER_DEG = PI / 180;\n  var DOUBLE_PI = PI * 2;\n  var HALF_PI = PI / 2;\n  var QUARTER_PI = PI / 4;\n  var TWO_THIRDS_PI = PI * 2 / 3;\n  /**\n   * @namespace Chart.helpers.canvas\n   */\n\n  var exports$1 = {\n    /**\n     * Clears the entire canvas associated to the given `chart`.\n     * @param {Chart} chart - The chart for which to clear the canvas.\n     */\n    clear: function clear(chart) {\n      chart.ctx.clearRect(0, 0, chart.width, chart.height);\n    },\n\n    /**\n     * Creates a \"path\" for a rectangle with rounded corners at position (x, y) with a\n     * given size (width, height) and the same `radius` for all corners.\n     * @param {CanvasRenderingContext2D} ctx - The canvas 2D Context.\n     * @param {number} x - The x axis of the coordinate for the rectangle starting point.\n     * @param {number} y - The y axis of the coordinate for the rectangle starting point.\n     * @param {number} width - The rectangle's width.\n     * @param {number} height - The rectangle's height.\n     * @param {number} radius - The rounded amount (in pixels) for the four corners.\n     * @todo handle `radius` as top-left, top-right, bottom-right, bottom-left array/object?\n     */\n    roundedRect: function roundedRect(ctx, x, y, width, height, radius) {\n      if (radius) {\n        var r = Math.min(radius, height / 2, width / 2);\n        var left = x + r;\n        var top = y + r;\n        var right = x + width - r;\n        var bottom = y + height - r;\n        ctx.moveTo(x, top);\n\n        if (left < right && top < bottom) {\n          ctx.arc(left, top, r, -PI, -HALF_PI);\n          ctx.arc(right, top, r, -HALF_PI, 0);\n          ctx.arc(right, bottom, r, 0, HALF_PI);\n          ctx.arc(left, bottom, r, HALF_PI, PI);\n        } else if (left < right) {\n          ctx.moveTo(left, y);\n          ctx.arc(right, top, r, -HALF_PI, HALF_PI);\n          ctx.arc(left, top, r, HALF_PI, PI + HALF_PI);\n        } else if (top < bottom) {\n          ctx.arc(left, top, r, -PI, 0);\n          ctx.arc(left, bottom, r, 0, PI);\n        } else {\n          ctx.arc(left, top, r, -PI, PI);\n        }\n\n        ctx.closePath();\n        ctx.moveTo(x, y);\n      } else {\n        ctx.rect(x, y, width, height);\n      }\n    },\n    drawPoint: function drawPoint(ctx, style, radius, x, y, rotation) {\n      var type, xOffset, yOffset, size, cornerRadius;\n      var rad = (rotation || 0) * RAD_PER_DEG;\n\n      if (style && typeof style === 'object') {\n        type = style.toString();\n\n        if (type === '[object HTMLImageElement]' || type === '[object HTMLCanvasElement]') {\n          ctx.save();\n          ctx.translate(x, y);\n          ctx.rotate(rad);\n          ctx.drawImage(style, -style.width / 2, -style.height / 2, style.width, style.height);\n          ctx.restore();\n          return;\n        }\n      }\n\n      if (isNaN(radius) || radius <= 0) {\n        return;\n      }\n\n      ctx.beginPath();\n\n      switch (style) {\n        // Default includes circle\n        default:\n          ctx.arc(x, y, radius, 0, DOUBLE_PI);\n          ctx.closePath();\n          break;\n\n        case 'triangle':\n          ctx.moveTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\n          rad += TWO_THIRDS_PI;\n          ctx.lineTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\n          rad += TWO_THIRDS_PI;\n          ctx.lineTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\n          ctx.closePath();\n          break;\n\n        case 'rectRounded':\n          // NOTE: the rounded rect implementation changed to use `arc` instead of\n          // `quadraticCurveTo` since it generates better results when rect is\n          // almost a circle. 0.516 (instead of 0.5) produces results with visually\n          // closer proportion to the previous impl and it is inscribed in the\n          // circle with `radius`. For more details, see the following PRs:\n          // https://github.com/chartjs/Chart.js/issues/5597\n          // https://github.com/chartjs/Chart.js/issues/5858\n          cornerRadius = radius * 0.516;\n          size = radius - cornerRadius;\n          xOffset = Math.cos(rad + QUARTER_PI) * size;\n          yOffset = Math.sin(rad + QUARTER_PI) * size;\n          ctx.arc(x - xOffset, y - yOffset, cornerRadius, rad - PI, rad - HALF_PI);\n          ctx.arc(x + yOffset, y - xOffset, cornerRadius, rad - HALF_PI, rad);\n          ctx.arc(x + xOffset, y + yOffset, cornerRadius, rad, rad + HALF_PI);\n          ctx.arc(x - yOffset, y + xOffset, cornerRadius, rad + HALF_PI, rad + PI);\n          ctx.closePath();\n          break;\n\n        case 'rect':\n          if (!rotation) {\n            size = Math.SQRT1_2 * radius;\n            ctx.rect(x - size, y - size, 2 * size, 2 * size);\n            break;\n          }\n\n          rad += QUARTER_PI;\n\n        /* falls through */\n\n        case 'rectRot':\n          xOffset = Math.cos(rad) * radius;\n          yOffset = Math.sin(rad) * radius;\n          ctx.moveTo(x - xOffset, y - yOffset);\n          ctx.lineTo(x + yOffset, y - xOffset);\n          ctx.lineTo(x + xOffset, y + yOffset);\n          ctx.lineTo(x - yOffset, y + xOffset);\n          ctx.closePath();\n          break;\n\n        case 'crossRot':\n          rad += QUARTER_PI;\n\n        /* falls through */\n\n        case 'cross':\n          xOffset = Math.cos(rad) * radius;\n          yOffset = Math.sin(rad) * radius;\n          ctx.moveTo(x - xOffset, y - yOffset);\n          ctx.lineTo(x + xOffset, y + yOffset);\n          ctx.moveTo(x + yOffset, y - xOffset);\n          ctx.lineTo(x - yOffset, y + xOffset);\n          break;\n\n        case 'star':\n          xOffset = Math.cos(rad) * radius;\n          yOffset = Math.sin(rad) * radius;\n          ctx.moveTo(x - xOffset, y - yOffset);\n          ctx.lineTo(x + xOffset, y + yOffset);\n          ctx.moveTo(x + yOffset, y - xOffset);\n          ctx.lineTo(x - yOffset, y + xOffset);\n          rad += QUARTER_PI;\n          xOffset = Math.cos(rad) * radius;\n          yOffset = Math.sin(rad) * radius;\n          ctx.moveTo(x - xOffset, y - yOffset);\n          ctx.lineTo(x + xOffset, y + yOffset);\n          ctx.moveTo(x + yOffset, y - xOffset);\n          ctx.lineTo(x - yOffset, y + xOffset);\n          break;\n\n        case 'line':\n          xOffset = Math.cos(rad) * radius;\n          yOffset = Math.sin(rad) * radius;\n          ctx.moveTo(x - xOffset, y - yOffset);\n          ctx.lineTo(x + xOffset, y + yOffset);\n          break;\n\n        case 'dash':\n          ctx.moveTo(x, y);\n          ctx.lineTo(x + Math.cos(rad) * radius, y + Math.sin(rad) * radius);\n          break;\n      }\n\n      ctx.fill();\n      ctx.stroke();\n    },\n\n    /**\n     * Returns true if the point is inside the rectangle\n     * @param {object} point - The point to test\n     * @param {object} area - The rectangle\n     * @returns {boolean}\n     * @private\n     */\n    _isPointInArea: function _isPointInArea(point, area) {\n      var epsilon = 1e-6; // 1e-6 is margin in pixels for accumulated error.\n\n      return point.x > area.left - epsilon && point.x < area.right + epsilon && point.y > area.top - epsilon && point.y < area.bottom + epsilon;\n    },\n    clipArea: function clipArea(ctx, area) {\n      ctx.save();\n      ctx.beginPath();\n      ctx.rect(area.left, area.top, area.right - area.left, area.bottom - area.top);\n      ctx.clip();\n    },\n    unclipArea: function unclipArea(ctx) {\n      ctx.restore();\n    },\n    lineTo: function lineTo(ctx, previous, target, flip) {\n      var stepped = target.steppedLine;\n\n      if (stepped) {\n        if (stepped === 'middle') {\n          var midpoint = (previous.x + target.x) / 2.0;\n          ctx.lineTo(midpoint, flip ? target.y : previous.y);\n          ctx.lineTo(midpoint, flip ? previous.y : target.y);\n        } else if (stepped === 'after' && !flip || stepped !== 'after' && flip) {\n          ctx.lineTo(previous.x, target.y);\n        } else {\n          ctx.lineTo(target.x, previous.y);\n        }\n\n        ctx.lineTo(target.x, target.y);\n        return;\n      }\n\n      if (!target.tension) {\n        ctx.lineTo(target.x, target.y);\n        return;\n      }\n\n      ctx.bezierCurveTo(flip ? previous.controlPointPreviousX : previous.controlPointNextX, flip ? previous.controlPointPreviousY : previous.controlPointNextY, flip ? target.controlPointNextX : target.controlPointPreviousX, flip ? target.controlPointNextY : target.controlPointPreviousY, target.x, target.y);\n    }\n  };\n  var helpers_canvas = exports$1; // DEPRECATIONS\n\n  /**\n   * Provided for backward compatibility, use Chart.helpers.canvas.clear instead.\n   * @namespace Chart.helpers.clear\n   * @deprecated since version 2.7.0\n   * @todo remove at version 3\n   * @private\n   */\n\n  helpers_core.clear = exports$1.clear;\n  /**\n   * Provided for backward compatibility, use Chart.helpers.canvas.roundedRect instead.\n   * @namespace Chart.helpers.drawRoundedRectangle\n   * @deprecated since version 2.7.0\n   * @todo remove at version 3\n   * @private\n   */\n\n  helpers_core.drawRoundedRectangle = function (ctx) {\n    ctx.beginPath();\n    exports$1.roundedRect.apply(exports$1, arguments);\n  };\n\n  var defaults = {\n    /**\n     * @private\n     */\n    _set: function _set(scope, values) {\n      return helpers_core.merge(this[scope] || (this[scope] = {}), values);\n    }\n  }; // TODO(v3): remove 'global' from namespace.  all default are global and\n  // there's inconsistency around which options are under 'global'\n\n  defaults._set('global', {\n    defaultColor: 'rgba(0,0,0,0.1)',\n    defaultFontColor: '#666',\n    defaultFontFamily: \"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif\",\n    defaultFontSize: 12,\n    defaultFontStyle: 'normal',\n    defaultLineHeight: 1.2,\n    showLines: true\n  });\n\n  var core_defaults = defaults;\n  var valueOrDefault = helpers_core.valueOrDefault;\n  /**\n   * Converts the given font object into a CSS font string.\n   * @param {object} font - A font object.\n   * @return {string} The CSS font string. See https://developer.mozilla.org/en-US/docs/Web/CSS/font\n   * @private\n   */\n\n  function toFontString(font) {\n    if (!font || helpers_core.isNullOrUndef(font.size) || helpers_core.isNullOrUndef(font.family)) {\n      return null;\n    }\n\n    return (font.style ? font.style + ' ' : '') + (font.weight ? font.weight + ' ' : '') + font.size + 'px ' + font.family;\n  }\n  /**\n   * @alias Chart.helpers.options\n   * @namespace\n   */\n\n\n  var helpers_options = {\n    /**\n     * Converts the given line height `value` in pixels for a specific font `size`.\n     * @param {number|string} value - The lineHeight to parse (eg. 1.6, '14px', '75%', '1.6em').\n     * @param {number} size - The font size (in pixels) used to resolve relative `value`.\n     * @returns {number} The effective line height in pixels (size * 1.2 if value is invalid).\n     * @see https://developer.mozilla.org/en-US/docs/Web/CSS/line-height\n     * @since 2.7.0\n     */\n    toLineHeight: function toLineHeight(value, size) {\n      var matches = ('' + value).match(/^(normal|(\\d+(?:\\.\\d+)?)(px|em|%)?)$/);\n\n      if (!matches || matches[1] === 'normal') {\n        return size * 1.2;\n      }\n\n      value = +matches[2];\n\n      switch (matches[3]) {\n        case 'px':\n          return value;\n\n        case '%':\n          value /= 100;\n          break;\n      }\n\n      return size * value;\n    },\n\n    /**\n     * Converts the given value into a padding object with pre-computed width/height.\n     * @param {number|object} value - If a number, set the value to all TRBL component,\n     *  else, if and object, use defined properties and sets undefined ones to 0.\n     * @returns {object} The padding values (top, right, bottom, left, width, height)\n     * @since 2.7.0\n     */\n    toPadding: function toPadding(value) {\n      var t, r, b, l;\n\n      if (helpers_core.isObject(value)) {\n        t = +value.top || 0;\n        r = +value.right || 0;\n        b = +value.bottom || 0;\n        l = +value.left || 0;\n      } else {\n        t = r = b = l = +value || 0;\n      }\n\n      return {\n        top: t,\n        right: r,\n        bottom: b,\n        left: l,\n        height: t + b,\n        width: l + r\n      };\n    },\n\n    /**\n     * Parses font options and returns the font object.\n     * @param {object} options - A object that contains font options to be parsed.\n     * @return {object} The font object.\n     * @todo Support font.* options and renamed to toFont().\n     * @private\n     */\n    _parseFont: function _parseFont(options) {\n      var globalDefaults = core_defaults.global;\n      var size = valueOrDefault(options.fontSize, globalDefaults.defaultFontSize);\n      var font = {\n        family: valueOrDefault(options.fontFamily, globalDefaults.defaultFontFamily),\n        lineHeight: helpers_core.options.toLineHeight(valueOrDefault(options.lineHeight, globalDefaults.defaultLineHeight), size),\n        size: size,\n        style: valueOrDefault(options.fontStyle, globalDefaults.defaultFontStyle),\n        weight: null,\n        string: ''\n      };\n      font.string = toFontString(font);\n      return font;\n    },\n\n    /**\n     * Evaluates the given `inputs` sequentially and returns the first defined value.\n     * @param {Array} inputs - An array of values, falling back to the last value.\n     * @param {object} [context] - If defined and the current value is a function, the value\n     * is called with `context` as first argument and the result becomes the new input.\n     * @param {number} [index] - If defined and the current value is an array, the value\n     * at `index` become the new input.\n     * @param {object} [info] - object to return information about resolution in\n     * @param {boolean} [info.cacheable] - Will be set to `false` if option is not cacheable.\n     * @since 2.7.0\n     */\n    resolve: function resolve(inputs, context, index, info) {\n      var cacheable = true;\n      var i, ilen, value;\n\n      for (i = 0, ilen = inputs.length; i < ilen; ++i) {\n        value = inputs[i];\n\n        if (value === undefined) {\n          continue;\n        }\n\n        if (context !== undefined && typeof value === 'function') {\n          value = value(context);\n          cacheable = false;\n        }\n\n        if (index !== undefined && helpers_core.isArray(value)) {\n          value = value[index];\n          cacheable = false;\n        }\n\n        if (value !== undefined) {\n          if (info && !cacheable) {\n            info.cacheable = false;\n          }\n\n          return value;\n        }\n      }\n    }\n  };\n  /**\n   * @alias Chart.helpers.math\n   * @namespace\n   */\n\n  var exports$2 = {\n    /**\n     * Returns an array of factors sorted from 1 to sqrt(value)\n     * @private\n     */\n    _factorize: function _factorize(value) {\n      var result = [];\n      var sqrt = Math.sqrt(value);\n      var i;\n\n      for (i = 1; i < sqrt; i++) {\n        if (value % i === 0) {\n          result.push(i);\n          result.push(value / i);\n        }\n      }\n\n      if (sqrt === (sqrt | 0)) {\n        // if value is a square number\n        result.push(sqrt);\n      }\n\n      result.sort(function (a, b) {\n        return a - b;\n      }).pop();\n      return result;\n    },\n    log10: Math.log10 || function (x) {\n      var exponent = Math.log(x) * Math.LOG10E; // Math.LOG10E = 1 / Math.LN10.\n      // Check for whole powers of 10,\n      // which due to floating point rounding error should be corrected.\n\n      var powerOf10 = Math.round(exponent);\n      var isPowerOf10 = x === Math.pow(10, powerOf10);\n      return isPowerOf10 ? powerOf10 : exponent;\n    }\n  };\n  var helpers_math = exports$2; // DEPRECATIONS\n\n  /**\n   * Provided for backward compatibility, use Chart.helpers.math.log10 instead.\n   * @namespace Chart.helpers.log10\n   * @deprecated since version 2.9.0\n   * @todo remove at version 3\n   * @private\n   */\n\n  helpers_core.log10 = exports$2.log10;\n\n  var getRtlAdapter = function getRtlAdapter(rectX, width) {\n    return {\n      x: function x(_x2) {\n        return rectX + rectX + width - _x2;\n      },\n      setWidth: function setWidth(w) {\n        width = w;\n      },\n      textAlign: function textAlign(align) {\n        if (align === 'center') {\n          return align;\n        }\n\n        return align === 'right' ? 'left' : 'right';\n      },\n      xPlus: function xPlus(x, value) {\n        return x - value;\n      },\n      leftForLtr: function leftForLtr(x, itemWidth) {\n        return x - itemWidth;\n      }\n    };\n  };\n\n  var getLtrAdapter = function getLtrAdapter() {\n    return {\n      x: function x(_x3) {\n        return _x3;\n      },\n      setWidth: function setWidth(w) {// eslint-disable-line no-unused-vars\n      },\n      textAlign: function textAlign(align) {\n        return align;\n      },\n      xPlus: function xPlus(x, value) {\n        return x + value;\n      },\n      leftForLtr: function leftForLtr(x, _itemWidth) {\n        // eslint-disable-line no-unused-vars\n        return x;\n      }\n    };\n  };\n\n  var getAdapter = function getAdapter(rtl, rectX, width) {\n    return rtl ? getRtlAdapter(rectX, width) : getLtrAdapter();\n  };\n\n  var overrideTextDirection = function overrideTextDirection(ctx, direction) {\n    var style, original;\n\n    if (direction === 'ltr' || direction === 'rtl') {\n      style = ctx.canvas.style;\n      original = [style.getPropertyValue('direction'), style.getPropertyPriority('direction')];\n      style.setProperty('direction', direction, 'important');\n      ctx.prevTextDirection = original;\n    }\n  };\n\n  var restoreTextDirection = function restoreTextDirection(ctx) {\n    var original = ctx.prevTextDirection;\n\n    if (original !== undefined) {\n      delete ctx.prevTextDirection;\n      ctx.canvas.style.setProperty('direction', original[0], original[1]);\n    }\n  };\n\n  var helpers_rtl = {\n    getRtlAdapter: getAdapter,\n    overrideTextDirection: overrideTextDirection,\n    restoreTextDirection: restoreTextDirection\n  };\n  var helpers$1 = helpers_core;\n  var easing = helpers_easing;\n  var canvas = helpers_canvas;\n  var options = helpers_options;\n  var math = helpers_math;\n  var rtl = helpers_rtl;\n  helpers$1.easing = easing;\n  helpers$1.canvas = canvas;\n  helpers$1.options = options;\n  helpers$1.math = math;\n  helpers$1.rtl = rtl;\n\n  function interpolate(start, view, model, ease) {\n    var keys = Object.keys(model);\n    var i, ilen, key, actual, origin, target, type, c0, c1;\n\n    for (i = 0, ilen = keys.length; i < ilen; ++i) {\n      key = keys[i];\n      target = model[key]; // if a value is added to the model after pivot() has been called, the view\n      // doesn't contain it, so let's initialize the view to the target value.\n\n      if (!view.hasOwnProperty(key)) {\n        view[key] = target;\n      }\n\n      actual = view[key];\n\n      if (actual === target || key[0] === '_') {\n        continue;\n      }\n\n      if (!start.hasOwnProperty(key)) {\n        start[key] = actual;\n      }\n\n      origin = start[key];\n      type = typeof target;\n\n      if (type === typeof origin) {\n        if (type === 'string') {\n          c0 = chartjsColor(origin);\n\n          if (c0.valid) {\n            c1 = chartjsColor(target);\n\n            if (c1.valid) {\n              view[key] = c1.mix(c0, ease).rgbString();\n              continue;\n            }\n          }\n        } else if (helpers$1.isFinite(origin) && helpers$1.isFinite(target)) {\n          view[key] = origin + (target - origin) * ease;\n          continue;\n        }\n      }\n\n      view[key] = target;\n    }\n  }\n\n  var Element = function Element(configuration) {\n    helpers$1.extend(this, configuration);\n    this.initialize.apply(this, arguments);\n  };\n\n  helpers$1.extend(Element.prototype, {\n    _type: undefined,\n    initialize: function initialize() {\n      this.hidden = false;\n    },\n    pivot: function pivot() {\n      var me = this;\n\n      if (!me._view) {\n        me._view = helpers$1.extend({}, me._model);\n      }\n\n      me._start = {};\n      return me;\n    },\n    transition: function transition(ease) {\n      var me = this;\n      var model = me._model;\n      var start = me._start;\n      var view = me._view; // No animation -> No Transition\n\n      if (!model || ease === 1) {\n        me._view = helpers$1.extend({}, model);\n        me._start = null;\n        return me;\n      }\n\n      if (!view) {\n        view = me._view = {};\n      }\n\n      if (!start) {\n        start = me._start = {};\n      }\n\n      interpolate(start, view, model, ease);\n      return me;\n    },\n    tooltipPosition: function tooltipPosition() {\n      return {\n        x: this._model.x,\n        y: this._model.y\n      };\n    },\n    hasValue: function hasValue() {\n      return helpers$1.isNumber(this._model.x) && helpers$1.isNumber(this._model.y);\n    }\n  });\n  Element.extend = helpers$1.inherits;\n  var core_element = Element;\n  var exports$3 = core_element.extend({\n    chart: null,\n    // the animation associated chart instance\n    currentStep: 0,\n    // the current animation step\n    numSteps: 60,\n    // default number of steps\n    easing: '',\n    // the easing to use for this animation\n    render: null,\n    // render function used by the animation service\n    onAnimationProgress: null,\n    // user specified callback to fire on each step of the animation\n    onAnimationComplete: null // user specified callback to fire when the animation finishes\n\n  });\n  var core_animation = exports$3; // DEPRECATIONS\n\n  /**\n   * Provided for backward compatibility, use Chart.Animation instead\n   * @prop Chart.Animation#animationObject\n   * @deprecated since version 2.6.0\n   * @todo remove at version 3\n   */\n\n  Object.defineProperty(exports$3.prototype, 'animationObject', {\n    get: function get() {\n      return this;\n    }\n  });\n  /**\n   * Provided for backward compatibility, use Chart.Animation#chart instead\n   * @prop Chart.Animation#chartInstance\n   * @deprecated since version 2.6.0\n   * @todo remove at version 3\n   */\n\n  Object.defineProperty(exports$3.prototype, 'chartInstance', {\n    get: function get() {\n      return this.chart;\n    },\n    set: function set(value) {\n      this.chart = value;\n    }\n  });\n\n  core_defaults._set('global', {\n    animation: {\n      duration: 1000,\n      easing: 'easeOutQuart',\n      onProgress: helpers$1.noop,\n      onComplete: helpers$1.noop\n    }\n  });\n\n  var core_animations = {\n    animations: [],\n    request: null,\n\n    /**\n     * @param {Chart} chart - The chart to animate.\n     * @param {Chart.Animation} animation - The animation that we will animate.\n     * @param {number} duration - The animation duration in ms.\n     * @param {boolean} lazy - if true, the chart is not marked as animating to enable more responsive interactions\n     */\n    addAnimation: function addAnimation(chart, animation, duration, lazy) {\n      var animations = this.animations;\n      var i, ilen;\n      animation.chart = chart;\n      animation.startTime = Date.now();\n      animation.duration = duration;\n\n      if (!lazy) {\n        chart.animating = true;\n      }\n\n      for (i = 0, ilen = animations.length; i < ilen; ++i) {\n        if (animations[i].chart === chart) {\n          animations[i] = animation;\n          return;\n        }\n      }\n\n      animations.push(animation); // If there are no animations queued, manually kickstart a digest, for lack of a better word\n\n      if (animations.length === 1) {\n        this.requestAnimationFrame();\n      }\n    },\n    cancelAnimation: function cancelAnimation(chart) {\n      var index = helpers$1.findIndex(this.animations, function (animation) {\n        return animation.chart === chart;\n      });\n\n      if (index !== -1) {\n        this.animations.splice(index, 1);\n        chart.animating = false;\n      }\n    },\n    requestAnimationFrame: function requestAnimationFrame() {\n      var me = this;\n\n      if (me.request === null) {\n        // Skip animation frame requests until the active one is executed.\n        // This can happen when processing mouse events, e.g. 'mousemove'\n        // and 'mouseout' events will trigger multiple renders.\n        me.request = helpers$1.requestAnimFrame.call(window, function () {\n          me.request = null;\n          me.startDigest();\n        });\n      }\n    },\n\n    /**\n     * @private\n     */\n    startDigest: function startDigest() {\n      var me = this;\n      me.advance(); // Do we have more stuff to animate?\n\n      if (me.animations.length > 0) {\n        me.requestAnimationFrame();\n      }\n    },\n\n    /**\n     * @private\n     */\n    advance: function advance() {\n      var animations = this.animations;\n      var animation, chart, numSteps, nextStep;\n      var i = 0; // 1 animation per chart, so we are looping charts here\n\n      while (i < animations.length) {\n        animation = animations[i];\n        chart = animation.chart;\n        numSteps = animation.numSteps; // Make sure that currentStep starts at 1\n        // https://github.com/chartjs/Chart.js/issues/6104\n\n        nextStep = Math.floor((Date.now() - animation.startTime) / animation.duration * numSteps) + 1;\n        animation.currentStep = Math.min(nextStep, numSteps);\n        helpers$1.callback(animation.render, [chart, animation], chart);\n        helpers$1.callback(animation.onAnimationProgress, [animation], chart);\n\n        if (animation.currentStep >= numSteps) {\n          helpers$1.callback(animation.onAnimationComplete, [animation], chart);\n          chart.animating = false;\n          animations.splice(i, 1);\n        } else {\n          ++i;\n        }\n      }\n    }\n  };\n  var resolve = helpers$1.options.resolve;\n  var arrayEvents = ['push', 'pop', 'shift', 'splice', 'unshift'];\n  /**\n   * Hooks the array methods that add or remove values ('push', pop', 'shift', 'splice',\n   * 'unshift') and notify the listener AFTER the array has been altered. Listeners are\n   * called on the 'onData*' callbacks (e.g. onDataPush, etc.) with same arguments.\n   */\n\n  function listenArrayEvents(array, listener) {\n    if (array._chartjs) {\n      array._chartjs.listeners.push(listener);\n\n      return;\n    }\n\n    Object.defineProperty(array, '_chartjs', {\n      configurable: true,\n      enumerable: false,\n      value: {\n        listeners: [listener]\n      }\n    });\n    arrayEvents.forEach(function (key) {\n      var method = 'onData' + key.charAt(0).toUpperCase() + key.slice(1);\n      var base = array[key];\n      Object.defineProperty(array, key, {\n        configurable: true,\n        enumerable: false,\n        value: function value() {\n          var args = Array.prototype.slice.call(arguments);\n          var res = base.apply(this, args);\n          helpers$1.each(array._chartjs.listeners, function (object) {\n            if (typeof object[method] === 'function') {\n              object[method].apply(object, args);\n            }\n          });\n          return res;\n        }\n      });\n    });\n  }\n  /**\n   * Removes the given array event listener and cleanup extra attached properties (such as\n   * the _chartjs stub and overridden methods) if array doesn't have any more listeners.\n   */\n\n\n  function unlistenArrayEvents(array, listener) {\n    var stub = array._chartjs;\n\n    if (!stub) {\n      return;\n    }\n\n    var listeners = stub.listeners;\n    var index = listeners.indexOf(listener);\n\n    if (index !== -1) {\n      listeners.splice(index, 1);\n    }\n\n    if (listeners.length > 0) {\n      return;\n    }\n\n    arrayEvents.forEach(function (key) {\n      delete array[key];\n    });\n    delete array._chartjs;\n  } // Base class for all dataset controllers (line, bar, etc)\n\n\n  var DatasetController = function DatasetController(chart, datasetIndex) {\n    this.initialize(chart, datasetIndex);\n  };\n\n  helpers$1.extend(DatasetController.prototype, {\n    /**\n     * Element type used to generate a meta dataset (e.g. Chart.element.Line).\n     * @type {Chart.core.element}\n     */\n    datasetElementType: null,\n\n    /**\n     * Element type used to generate a meta data (e.g. Chart.element.Point).\n     * @type {Chart.core.element}\n     */\n    dataElementType: null,\n\n    /**\n     * Dataset element option keys to be resolved in _resolveDatasetElementOptions.\n     * A derived controller may override this to resolve controller-specific options.\n     * The keys defined here are for backward compatibility for legend styles.\n     * @private\n     */\n    _datasetElementOptions: ['backgroundColor', 'borderCapStyle', 'borderColor', 'borderDash', 'borderDashOffset', 'borderJoinStyle', 'borderWidth'],\n\n    /**\n     * Data element option keys to be resolved in _resolveDataElementOptions.\n     * A derived controller may override this to resolve controller-specific options.\n     * The keys defined here are for backward compatibility for legend styles.\n     * @private\n     */\n    _dataElementOptions: ['backgroundColor', 'borderColor', 'borderWidth', 'pointStyle'],\n    initialize: function initialize(chart, datasetIndex) {\n      var me = this;\n      me.chart = chart;\n      me.index = datasetIndex;\n      me.linkScales();\n      me.addElements();\n      me._type = me.getMeta().type;\n    },\n    updateIndex: function updateIndex(datasetIndex) {\n      this.index = datasetIndex;\n    },\n    linkScales: function linkScales() {\n      var me = this;\n      var meta = me.getMeta();\n      var chart = me.chart;\n      var scales = chart.scales;\n      var dataset = me.getDataset();\n      var scalesOpts = chart.options.scales;\n\n      if (meta.xAxisID === null || !(meta.xAxisID in scales) || dataset.xAxisID) {\n        meta.xAxisID = dataset.xAxisID || scalesOpts.xAxes[0].id;\n      }\n\n      if (meta.yAxisID === null || !(meta.yAxisID in scales) || dataset.yAxisID) {\n        meta.yAxisID = dataset.yAxisID || scalesOpts.yAxes[0].id;\n      }\n    },\n    getDataset: function getDataset() {\n      return this.chart.data.datasets[this.index];\n    },\n    getMeta: function getMeta() {\n      return this.chart.getDatasetMeta(this.index);\n    },\n    getScaleForId: function getScaleForId(scaleID) {\n      return this.chart.scales[scaleID];\n    },\n\n    /**\n     * @private\n     */\n    _getValueScaleId: function _getValueScaleId() {\n      return this.getMeta().yAxisID;\n    },\n\n    /**\n     * @private\n     */\n    _getIndexScaleId: function _getIndexScaleId() {\n      return this.getMeta().xAxisID;\n    },\n\n    /**\n     * @private\n     */\n    _getValueScale: function _getValueScale() {\n      return this.getScaleForId(this._getValueScaleId());\n    },\n\n    /**\n     * @private\n     */\n    _getIndexScale: function _getIndexScale() {\n      return this.getScaleForId(this._getIndexScaleId());\n    },\n    reset: function reset() {\n      this._update(true);\n    },\n\n    /**\n     * @private\n     */\n    destroy: function destroy() {\n      if (this._data) {\n        unlistenArrayEvents(this._data, this);\n      }\n    },\n    createMetaDataset: function createMetaDataset() {\n      var me = this;\n      var type = me.datasetElementType;\n      return type && new type({\n        _chart: me.chart,\n        _datasetIndex: me.index\n      });\n    },\n    createMetaData: function createMetaData(index) {\n      var me = this;\n      var type = me.dataElementType;\n      return type && new type({\n        _chart: me.chart,\n        _datasetIndex: me.index,\n        _index: index\n      });\n    },\n    addElements: function addElements() {\n      var me = this;\n      var meta = me.getMeta();\n      var data = me.getDataset().data || [];\n      var metaData = meta.data;\n      var i, ilen;\n\n      for (i = 0, ilen = data.length; i < ilen; ++i) {\n        metaData[i] = metaData[i] || me.createMetaData(i);\n      }\n\n      meta.dataset = meta.dataset || me.createMetaDataset();\n    },\n    addElementAndReset: function addElementAndReset(index) {\n      var element = this.createMetaData(index);\n      this.getMeta().data.splice(index, 0, element);\n      this.updateElement(element, index, true);\n    },\n    buildOrUpdateElements: function buildOrUpdateElements() {\n      var me = this;\n      var dataset = me.getDataset();\n      var data = dataset.data || (dataset.data = []); // In order to correctly handle data addition/deletion animation (an thus simulate\n      // real-time charts), we need to monitor these data modifications and synchronize\n      // the internal meta data accordingly.\n\n      if (me._data !== data) {\n        if (me._data) {\n          // This case happens when the user replaced the data array instance.\n          unlistenArrayEvents(me._data, me);\n        }\n\n        if (data && Object.isExtensible(data)) {\n          listenArrayEvents(data, me);\n        }\n\n        me._data = data;\n      } // Re-sync meta data in case the user replaced the data array or if we missed\n      // any updates and so make sure that we handle number of datapoints changing.\n\n\n      me.resyncElements();\n    },\n\n    /**\n     * Returns the merged user-supplied and default dataset-level options\n     * @private\n     */\n    _configure: function _configure() {\n      var me = this;\n      me._config = helpers$1.merge({}, [me.chart.options.datasets[me._type], me.getDataset()], {\n        merger: function merger(key, target, source) {\n          if (key !== '_meta' && key !== 'data') {\n            helpers$1._merger(key, target, source);\n          }\n        }\n      });\n    },\n    _update: function _update(reset) {\n      var me = this;\n\n      me._configure();\n\n      me._cachedDataOpts = null;\n      me.update(reset);\n    },\n    update: helpers$1.noop,\n    transition: function transition(easingValue) {\n      var meta = this.getMeta();\n      var elements = meta.data || [];\n      var ilen = elements.length;\n      var i = 0;\n\n      for (; i < ilen; ++i) {\n        elements[i].transition(easingValue);\n      }\n\n      if (meta.dataset) {\n        meta.dataset.transition(easingValue);\n      }\n    },\n    draw: function draw() {\n      var meta = this.getMeta();\n      var elements = meta.data || [];\n      var ilen = elements.length;\n      var i = 0;\n\n      if (meta.dataset) {\n        meta.dataset.draw();\n      }\n\n      for (; i < ilen; ++i) {\n        elements[i].draw();\n      }\n    },\n\n    /**\n     * Returns a set of predefined style properties that should be used to represent the dataset\n     * or the data if the index is specified\n     * @param {number} index - data index\n     * @return {IStyleInterface} style object\n     */\n    getStyle: function getStyle(index) {\n      var me = this;\n      var meta = me.getMeta();\n      var dataset = meta.dataset;\n      var style;\n\n      me._configure();\n\n      if (dataset && index === undefined) {\n        style = me._resolveDatasetElementOptions(dataset || {});\n      } else {\n        index = index || 0;\n        style = me._resolveDataElementOptions(meta.data[index] || {}, index);\n      }\n\n      if (style.fill === false || style.fill === null) {\n        style.backgroundColor = style.borderColor;\n      }\n\n      return style;\n    },\n\n    /**\n     * @private\n     */\n    _resolveDatasetElementOptions: function _resolveDatasetElementOptions(element, hover) {\n      var me = this;\n      var chart = me.chart;\n      var datasetOpts = me._config;\n      var custom = element.custom || {};\n      var options = chart.options.elements[me.datasetElementType.prototype._type] || {};\n      var elementOptions = me._datasetElementOptions;\n      var values = {};\n      var i, ilen, key, readKey; // Scriptable options\n\n      var context = {\n        chart: chart,\n        dataset: me.getDataset(),\n        datasetIndex: me.index,\n        hover: hover\n      };\n\n      for (i = 0, ilen = elementOptions.length; i < ilen; ++i) {\n        key = elementOptions[i];\n        readKey = hover ? 'hover' + key.charAt(0).toUpperCase() + key.slice(1) : key;\n        values[key] = resolve([custom[readKey], datasetOpts[readKey], options[readKey]], context);\n      }\n\n      return values;\n    },\n\n    /**\n     * @private\n     */\n    _resolveDataElementOptions: function _resolveDataElementOptions(element, index) {\n      var me = this;\n      var custom = element && element.custom;\n      var cached = me._cachedDataOpts;\n\n      if (cached && !custom) {\n        return cached;\n      }\n\n      var chart = me.chart;\n      var datasetOpts = me._config;\n      var options = chart.options.elements[me.dataElementType.prototype._type] || {};\n      var elementOptions = me._dataElementOptions;\n      var values = {}; // Scriptable options\n\n      var context = {\n        chart: chart,\n        dataIndex: index,\n        dataset: me.getDataset(),\n        datasetIndex: me.index\n      }; // `resolve` sets cacheable to `false` if any option is indexed or scripted\n\n      var info = {\n        cacheable: !custom\n      };\n      var keys, i, ilen, key;\n      custom = custom || {};\n\n      if (helpers$1.isArray(elementOptions)) {\n        for (i = 0, ilen = elementOptions.length; i < ilen; ++i) {\n          key = elementOptions[i];\n          values[key] = resolve([custom[key], datasetOpts[key], options[key]], context, index, info);\n        }\n      } else {\n        keys = Object.keys(elementOptions);\n\n        for (i = 0, ilen = keys.length; i < ilen; ++i) {\n          key = keys[i];\n          values[key] = resolve([custom[key], datasetOpts[elementOptions[key]], datasetOpts[key], options[key]], context, index, info);\n        }\n      }\n\n      if (info.cacheable) {\n        me._cachedDataOpts = Object.freeze(values);\n      }\n\n      return values;\n    },\n    removeHoverStyle: function removeHoverStyle(element) {\n      helpers$1.merge(element._model, element.$previousStyle || {});\n      delete element.$previousStyle;\n    },\n    setHoverStyle: function setHoverStyle(element) {\n      var dataset = this.chart.data.datasets[element._datasetIndex];\n      var index = element._index;\n      var custom = element.custom || {};\n      var model = element._model;\n      var getHoverColor = helpers$1.getHoverColor;\n      element.$previousStyle = {\n        backgroundColor: model.backgroundColor,\n        borderColor: model.borderColor,\n        borderWidth: model.borderWidth\n      };\n      model.backgroundColor = resolve([custom.hoverBackgroundColor, dataset.hoverBackgroundColor, getHoverColor(model.backgroundColor)], undefined, index);\n      model.borderColor = resolve([custom.hoverBorderColor, dataset.hoverBorderColor, getHoverColor(model.borderColor)], undefined, index);\n      model.borderWidth = resolve([custom.hoverBorderWidth, dataset.hoverBorderWidth, model.borderWidth], undefined, index);\n    },\n\n    /**\n     * @private\n     */\n    _removeDatasetHoverStyle: function _removeDatasetHoverStyle() {\n      var element = this.getMeta().dataset;\n\n      if (element) {\n        this.removeHoverStyle(element);\n      }\n    },\n\n    /**\n     * @private\n     */\n    _setDatasetHoverStyle: function _setDatasetHoverStyle() {\n      var element = this.getMeta().dataset;\n      var prev = {};\n      var i, ilen, key, keys, hoverOptions, model;\n\n      if (!element) {\n        return;\n      }\n\n      model = element._model;\n      hoverOptions = this._resolveDatasetElementOptions(element, true);\n      keys = Object.keys(hoverOptions);\n\n      for (i = 0, ilen = keys.length; i < ilen; ++i) {\n        key = keys[i];\n        prev[key] = model[key];\n        model[key] = hoverOptions[key];\n      }\n\n      element.$previousStyle = prev;\n    },\n\n    /**\n     * @private\n     */\n    resyncElements: function resyncElements() {\n      var me = this;\n      var meta = me.getMeta();\n      var data = me.getDataset().data;\n      var numMeta = meta.data.length;\n      var numData = data.length;\n\n      if (numData < numMeta) {\n        meta.data.splice(numData, numMeta - numData);\n      } else if (numData > numMeta) {\n        me.insertElements(numMeta, numData - numMeta);\n      }\n    },\n\n    /**\n     * @private\n     */\n    insertElements: function insertElements(start, count) {\n      for (var i = 0; i < count; ++i) {\n        this.addElementAndReset(start + i);\n      }\n    },\n\n    /**\n     * @private\n     */\n    onDataPush: function onDataPush() {\n      var count = arguments.length;\n      this.insertElements(this.getDataset().data.length - count, count);\n    },\n\n    /**\n     * @private\n     */\n    onDataPop: function onDataPop() {\n      this.getMeta().data.pop();\n    },\n\n    /**\n     * @private\n     */\n    onDataShift: function onDataShift() {\n      this.getMeta().data.shift();\n    },\n\n    /**\n     * @private\n     */\n    onDataSplice: function onDataSplice(start, count) {\n      this.getMeta().data.splice(start, count);\n      this.insertElements(start, arguments.length - 2);\n    },\n\n    /**\n     * @private\n     */\n    onDataUnshift: function onDataUnshift() {\n      this.insertElements(0, arguments.length);\n    }\n  });\n  DatasetController.extend = helpers$1.inherits;\n  var core_datasetController = DatasetController;\n  var TAU = Math.PI * 2;\n\n  core_defaults._set('global', {\n    elements: {\n      arc: {\n        backgroundColor: core_defaults.global.defaultColor,\n        borderColor: '#fff',\n        borderWidth: 2,\n        borderAlign: 'center'\n      }\n    }\n  });\n\n  function clipArc(ctx, arc) {\n    var startAngle = arc.startAngle;\n    var endAngle = arc.endAngle;\n    var pixelMargin = arc.pixelMargin;\n    var angleMargin = pixelMargin / arc.outerRadius;\n    var x = arc.x;\n    var y = arc.y; // Draw an inner border by cliping the arc and drawing a double-width border\n    // Enlarge the clipping arc by 0.33 pixels to eliminate glitches between borders\n\n    ctx.beginPath();\n    ctx.arc(x, y, arc.outerRadius, startAngle - angleMargin, endAngle + angleMargin);\n\n    if (arc.innerRadius > pixelMargin) {\n      angleMargin = pixelMargin / arc.innerRadius;\n      ctx.arc(x, y, arc.innerRadius - pixelMargin, endAngle + angleMargin, startAngle - angleMargin, true);\n    } else {\n      ctx.arc(x, y, pixelMargin, endAngle + Math.PI / 2, startAngle - Math.PI / 2);\n    }\n\n    ctx.closePath();\n    ctx.clip();\n  }\n\n  function drawFullCircleBorders(ctx, vm, arc, inner) {\n    var endAngle = arc.endAngle;\n    var i;\n\n    if (inner) {\n      arc.endAngle = arc.startAngle + TAU;\n      clipArc(ctx, arc);\n      arc.endAngle = endAngle;\n\n      if (arc.endAngle === arc.startAngle && arc.fullCircles) {\n        arc.endAngle += TAU;\n        arc.fullCircles--;\n      }\n    }\n\n    ctx.beginPath();\n    ctx.arc(arc.x, arc.y, arc.innerRadius, arc.startAngle + TAU, arc.startAngle, true);\n\n    for (i = 0; i < arc.fullCircles; ++i) {\n      ctx.stroke();\n    }\n\n    ctx.beginPath();\n    ctx.arc(arc.x, arc.y, vm.outerRadius, arc.startAngle, arc.startAngle + TAU);\n\n    for (i = 0; i < arc.fullCircles; ++i) {\n      ctx.stroke();\n    }\n  }\n\n  function drawBorder(ctx, vm, arc) {\n    var inner = vm.borderAlign === 'inner';\n\n    if (inner) {\n      ctx.lineWidth = vm.borderWidth * 2;\n      ctx.lineJoin = 'round';\n    } else {\n      ctx.lineWidth = vm.borderWidth;\n      ctx.lineJoin = 'bevel';\n    }\n\n    if (arc.fullCircles) {\n      drawFullCircleBorders(ctx, vm, arc, inner);\n    }\n\n    if (inner) {\n      clipArc(ctx, arc);\n    }\n\n    ctx.beginPath();\n    ctx.arc(arc.x, arc.y, vm.outerRadius, arc.startAngle, arc.endAngle);\n    ctx.arc(arc.x, arc.y, arc.innerRadius, arc.endAngle, arc.startAngle, true);\n    ctx.closePath();\n    ctx.stroke();\n  }\n\n  var element_arc = core_element.extend({\n    _type: 'arc',\n    inLabelRange: function inLabelRange(mouseX) {\n      var vm = this._view;\n\n      if (vm) {\n        return Math.pow(mouseX - vm.x, 2) < Math.pow(vm.radius + vm.hoverRadius, 2);\n      }\n\n      return false;\n    },\n    inRange: function inRange(chartX, chartY) {\n      var vm = this._view;\n\n      if (vm) {\n        var pointRelativePosition = helpers$1.getAngleFromPoint(vm, {\n          x: chartX,\n          y: chartY\n        });\n        var angle = pointRelativePosition.angle;\n        var distance = pointRelativePosition.distance; // Sanitise angle range\n\n        var startAngle = vm.startAngle;\n        var endAngle = vm.endAngle;\n\n        while (endAngle < startAngle) {\n          endAngle += TAU;\n        }\n\n        while (angle > endAngle) {\n          angle -= TAU;\n        }\n\n        while (angle < startAngle) {\n          angle += TAU;\n        } // Check if within the range of the open/close angle\n\n\n        var betweenAngles = angle >= startAngle && angle <= endAngle;\n        var withinRadius = distance >= vm.innerRadius && distance <= vm.outerRadius;\n        return betweenAngles && withinRadius;\n      }\n\n      return false;\n    },\n    getCenterPoint: function getCenterPoint() {\n      var vm = this._view;\n      var halfAngle = (vm.startAngle + vm.endAngle) / 2;\n      var halfRadius = (vm.innerRadius + vm.outerRadius) / 2;\n      return {\n        x: vm.x + Math.cos(halfAngle) * halfRadius,\n        y: vm.y + Math.sin(halfAngle) * halfRadius\n      };\n    },\n    getArea: function getArea() {\n      var vm = this._view;\n      return Math.PI * ((vm.endAngle - vm.startAngle) / (2 * Math.PI)) * (Math.pow(vm.outerRadius, 2) - Math.pow(vm.innerRadius, 2));\n    },\n    tooltipPosition: function tooltipPosition() {\n      var vm = this._view;\n      var centreAngle = vm.startAngle + (vm.endAngle - vm.startAngle) / 2;\n      var rangeFromCentre = (vm.outerRadius - vm.innerRadius) / 2 + vm.innerRadius;\n      return {\n        x: vm.x + Math.cos(centreAngle) * rangeFromCentre,\n        y: vm.y + Math.sin(centreAngle) * rangeFromCentre\n      };\n    },\n    draw: function draw() {\n      var ctx = this._chart.ctx;\n      var vm = this._view;\n      var pixelMargin = vm.borderAlign === 'inner' ? 0.33 : 0;\n      var arc = {\n        x: vm.x,\n        y: vm.y,\n        innerRadius: vm.innerRadius,\n        outerRadius: Math.max(vm.outerRadius - pixelMargin, 0),\n        pixelMargin: pixelMargin,\n        startAngle: vm.startAngle,\n        endAngle: vm.endAngle,\n        fullCircles: Math.floor(vm.circumference / TAU)\n      };\n      var i;\n      ctx.save();\n      ctx.fillStyle = vm.backgroundColor;\n      ctx.strokeStyle = vm.borderColor;\n\n      if (arc.fullCircles) {\n        arc.endAngle = arc.startAngle + TAU;\n        ctx.beginPath();\n        ctx.arc(arc.x, arc.y, arc.outerRadius, arc.startAngle, arc.endAngle);\n        ctx.arc(arc.x, arc.y, arc.innerRadius, arc.endAngle, arc.startAngle, true);\n        ctx.closePath();\n\n        for (i = 0; i < arc.fullCircles; ++i) {\n          ctx.fill();\n        }\n\n        arc.endAngle = arc.startAngle + vm.circumference % TAU;\n      }\n\n      ctx.beginPath();\n      ctx.arc(arc.x, arc.y, arc.outerRadius, arc.startAngle, arc.endAngle);\n      ctx.arc(arc.x, arc.y, arc.innerRadius, arc.endAngle, arc.startAngle, true);\n      ctx.closePath();\n      ctx.fill();\n\n      if (vm.borderWidth) {\n        drawBorder(ctx, vm, arc);\n      }\n\n      ctx.restore();\n    }\n  });\n  var valueOrDefault$1 = helpers$1.valueOrDefault;\n  var defaultColor = core_defaults.global.defaultColor;\n\n  core_defaults._set('global', {\n    elements: {\n      line: {\n        tension: 0.4,\n        backgroundColor: defaultColor,\n        borderWidth: 3,\n        borderColor: defaultColor,\n        borderCapStyle: 'butt',\n        borderDash: [],\n        borderDashOffset: 0.0,\n        borderJoinStyle: 'miter',\n        capBezierPoints: true,\n        fill: true // do we fill in the area between the line and its base axis\n\n      }\n    }\n  });\n\n  var element_line = core_element.extend({\n    _type: 'line',\n    draw: function draw() {\n      var me = this;\n      var vm = me._view;\n      var ctx = me._chart.ctx;\n      var spanGaps = vm.spanGaps;\n\n      var points = me._children.slice(); // clone array\n\n\n      var globalDefaults = core_defaults.global;\n      var globalOptionLineElements = globalDefaults.elements.line;\n      var lastDrawnIndex = -1;\n      var closePath = me._loop;\n      var index, previous, currentVM;\n\n      if (!points.length) {\n        return;\n      }\n\n      if (me._loop) {\n        for (index = 0; index < points.length; ++index) {\n          previous = helpers$1.previousItem(points, index); // If the line has an open path, shift the point array\n\n          if (!points[index]._view.skip && previous._view.skip) {\n            points = points.slice(index).concat(points.slice(0, index));\n            closePath = spanGaps;\n            break;\n          }\n        } // If the line has a close path, add the first point again\n\n\n        if (closePath) {\n          points.push(points[0]);\n        }\n      }\n\n      ctx.save(); // Stroke Line Options\n\n      ctx.lineCap = vm.borderCapStyle || globalOptionLineElements.borderCapStyle; // IE 9 and 10 do not support line dash\n\n      if (ctx.setLineDash) {\n        ctx.setLineDash(vm.borderDash || globalOptionLineElements.borderDash);\n      }\n\n      ctx.lineDashOffset = valueOrDefault$1(vm.borderDashOffset, globalOptionLineElements.borderDashOffset);\n      ctx.lineJoin = vm.borderJoinStyle || globalOptionLineElements.borderJoinStyle;\n      ctx.lineWidth = valueOrDefault$1(vm.borderWidth, globalOptionLineElements.borderWidth);\n      ctx.strokeStyle = vm.borderColor || globalDefaults.defaultColor; // Stroke Line\n\n      ctx.beginPath(); // First point moves to it's starting position no matter what\n\n      currentVM = points[0]._view;\n\n      if (!currentVM.skip) {\n        ctx.moveTo(currentVM.x, currentVM.y);\n        lastDrawnIndex = 0;\n      }\n\n      for (index = 1; index < points.length; ++index) {\n        currentVM = points[index]._view;\n        previous = lastDrawnIndex === -1 ? helpers$1.previousItem(points, index) : points[lastDrawnIndex];\n\n        if (!currentVM.skip) {\n          if (lastDrawnIndex !== index - 1 && !spanGaps || lastDrawnIndex === -1) {\n            // There was a gap and this is the first point after the gap\n            ctx.moveTo(currentVM.x, currentVM.y);\n          } else {\n            // Line to next point\n            helpers$1.canvas.lineTo(ctx, previous._view, currentVM);\n          }\n\n          lastDrawnIndex = index;\n        }\n      }\n\n      if (closePath) {\n        ctx.closePath();\n      }\n\n      ctx.stroke();\n      ctx.restore();\n    }\n  });\n  var valueOrDefault$2 = helpers$1.valueOrDefault;\n  var defaultColor$1 = core_defaults.global.defaultColor;\n\n  core_defaults._set('global', {\n    elements: {\n      point: {\n        radius: 3,\n        pointStyle: 'circle',\n        backgroundColor: defaultColor$1,\n        borderColor: defaultColor$1,\n        borderWidth: 1,\n        // Hover\n        hitRadius: 1,\n        hoverRadius: 4,\n        hoverBorderWidth: 1\n      }\n    }\n  });\n\n  function xRange(mouseX) {\n    var vm = this._view;\n    return vm ? Math.abs(mouseX - vm.x) < vm.radius + vm.hitRadius : false;\n  }\n\n  function yRange(mouseY) {\n    var vm = this._view;\n    return vm ? Math.abs(mouseY - vm.y) < vm.radius + vm.hitRadius : false;\n  }\n\n  var element_point = core_element.extend({\n    _type: 'point',\n    inRange: function inRange(mouseX, mouseY) {\n      var vm = this._view;\n      return vm ? Math.pow(mouseX - vm.x, 2) + Math.pow(mouseY - vm.y, 2) < Math.pow(vm.hitRadius + vm.radius, 2) : false;\n    },\n    inLabelRange: xRange,\n    inXRange: xRange,\n    inYRange: yRange,\n    getCenterPoint: function getCenterPoint() {\n      var vm = this._view;\n      return {\n        x: vm.x,\n        y: vm.y\n      };\n    },\n    getArea: function getArea() {\n      return Math.PI * Math.pow(this._view.radius, 2);\n    },\n    tooltipPosition: function tooltipPosition() {\n      var vm = this._view;\n      return {\n        x: vm.x,\n        y: vm.y,\n        padding: vm.radius + vm.borderWidth\n      };\n    },\n    draw: function draw(chartArea) {\n      var vm = this._view;\n      var ctx = this._chart.ctx;\n      var pointStyle = vm.pointStyle;\n      var rotation = vm.rotation;\n      var radius = vm.radius;\n      var x = vm.x;\n      var y = vm.y;\n      var globalDefaults = core_defaults.global;\n      var defaultColor = globalDefaults.defaultColor; // eslint-disable-line no-shadow\n\n      if (vm.skip) {\n        return;\n      } // Clipping for Points.\n\n\n      if (chartArea === undefined || helpers$1.canvas._isPointInArea(vm, chartArea)) {\n        ctx.strokeStyle = vm.borderColor || defaultColor;\n        ctx.lineWidth = valueOrDefault$2(vm.borderWidth, globalDefaults.elements.point.borderWidth);\n        ctx.fillStyle = vm.backgroundColor || defaultColor;\n        helpers$1.canvas.drawPoint(ctx, pointStyle, radius, x, y, rotation);\n      }\n    }\n  });\n  var defaultColor$2 = core_defaults.global.defaultColor;\n\n  core_defaults._set('global', {\n    elements: {\n      rectangle: {\n        backgroundColor: defaultColor$2,\n        borderColor: defaultColor$2,\n        borderSkipped: 'bottom',\n        borderWidth: 0\n      }\n    }\n  });\n\n  function isVertical(vm) {\n    return vm && vm.width !== undefined;\n  }\n  /**\n   * Helper function to get the bounds of the bar regardless of the orientation\n   * @param bar {Chart.Element.Rectangle} the bar\n   * @return {Bounds} bounds of the bar\n   * @private\n   */\n\n\n  function getBarBounds(vm) {\n    var x1, x2, y1, y2, half;\n\n    if (isVertical(vm)) {\n      half = vm.width / 2;\n      x1 = vm.x - half;\n      x2 = vm.x + half;\n      y1 = Math.min(vm.y, vm.base);\n      y2 = Math.max(vm.y, vm.base);\n    } else {\n      half = vm.height / 2;\n      x1 = Math.min(vm.x, vm.base);\n      x2 = Math.max(vm.x, vm.base);\n      y1 = vm.y - half;\n      y2 = vm.y + half;\n    }\n\n    return {\n      left: x1,\n      top: y1,\n      right: x2,\n      bottom: y2\n    };\n  }\n\n  function swap(orig, v1, v2) {\n    return orig === v1 ? v2 : orig === v2 ? v1 : orig;\n  }\n\n  function parseBorderSkipped(vm) {\n    var edge = vm.borderSkipped;\n    var res = {};\n\n    if (!edge) {\n      return res;\n    }\n\n    if (vm.horizontal) {\n      if (vm.base > vm.x) {\n        edge = swap(edge, 'left', 'right');\n      }\n    } else if (vm.base < vm.y) {\n      edge = swap(edge, 'bottom', 'top');\n    }\n\n    res[edge] = true;\n    return res;\n  }\n\n  function parseBorderWidth(vm, maxW, maxH) {\n    var value = vm.borderWidth;\n    var skip = parseBorderSkipped(vm);\n    var t, r, b, l;\n\n    if (helpers$1.isObject(value)) {\n      t = +value.top || 0;\n      r = +value.right || 0;\n      b = +value.bottom || 0;\n      l = +value.left || 0;\n    } else {\n      t = r = b = l = +value || 0;\n    }\n\n    return {\n      t: skip.top || t < 0 ? 0 : t > maxH ? maxH : t,\n      r: skip.right || r < 0 ? 0 : r > maxW ? maxW : r,\n      b: skip.bottom || b < 0 ? 0 : b > maxH ? maxH : b,\n      l: skip.left || l < 0 ? 0 : l > maxW ? maxW : l\n    };\n  }\n\n  function boundingRects(vm) {\n    var bounds = getBarBounds(vm);\n    var width = bounds.right - bounds.left;\n    var height = bounds.bottom - bounds.top;\n    var border = parseBorderWidth(vm, width / 2, height / 2);\n    return {\n      outer: {\n        x: bounds.left,\n        y: bounds.top,\n        w: width,\n        h: height\n      },\n      inner: {\n        x: bounds.left + border.l,\n        y: bounds.top + border.t,\n        w: width - border.l - border.r,\n        h: height - border.t - border.b\n      }\n    };\n  }\n\n  function _inRange(vm, x, y) {\n    var skipX = x === null;\n    var skipY = y === null;\n    var bounds = !vm || skipX && skipY ? false : getBarBounds(vm);\n    return bounds && (skipX || x >= bounds.left && x <= bounds.right) && (skipY || y >= bounds.top && y <= bounds.bottom);\n  }\n\n  var element_rectangle = core_element.extend({\n    _type: 'rectangle',\n    draw: function draw() {\n      var ctx = this._chart.ctx;\n      var vm = this._view;\n      var rects = boundingRects(vm);\n      var outer = rects.outer;\n      var inner = rects.inner;\n      ctx.fillStyle = vm.backgroundColor;\n      ctx.fillRect(outer.x, outer.y, outer.w, outer.h);\n\n      if (outer.w === inner.w && outer.h === inner.h) {\n        return;\n      }\n\n      ctx.save();\n      ctx.beginPath();\n      ctx.rect(outer.x, outer.y, outer.w, outer.h);\n      ctx.clip();\n      ctx.fillStyle = vm.borderColor;\n      ctx.rect(inner.x, inner.y, inner.w, inner.h);\n      ctx.fill('evenodd');\n      ctx.restore();\n    },\n    height: function height() {\n      var vm = this._view;\n      return vm.base - vm.y;\n    },\n    inRange: function inRange(mouseX, mouseY) {\n      return _inRange(this._view, mouseX, mouseY);\n    },\n    inLabelRange: function inLabelRange(mouseX, mouseY) {\n      var vm = this._view;\n      return isVertical(vm) ? _inRange(vm, mouseX, null) : _inRange(vm, null, mouseY);\n    },\n    inXRange: function inXRange(mouseX) {\n      return _inRange(this._view, mouseX, null);\n    },\n    inYRange: function inYRange(mouseY) {\n      return _inRange(this._view, null, mouseY);\n    },\n    getCenterPoint: function getCenterPoint() {\n      var vm = this._view;\n      var x, y;\n\n      if (isVertical(vm)) {\n        x = vm.x;\n        y = (vm.y + vm.base) / 2;\n      } else {\n        x = (vm.x + vm.base) / 2;\n        y = vm.y;\n      }\n\n      return {\n        x: x,\n        y: y\n      };\n    },\n    getArea: function getArea() {\n      var vm = this._view;\n      return isVertical(vm) ? vm.width * Math.abs(vm.y - vm.base) : vm.height * Math.abs(vm.x - vm.base);\n    },\n    tooltipPosition: function tooltipPosition() {\n      var vm = this._view;\n      return {\n        x: vm.x,\n        y: vm.y\n      };\n    }\n  });\n  var elements = {};\n  var Arc = element_arc;\n  var Line = element_line;\n  var Point = element_point;\n  var Rectangle = element_rectangle;\n  elements.Arc = Arc;\n  elements.Line = Line;\n  elements.Point = Point;\n  elements.Rectangle = Rectangle;\n  var deprecated = helpers$1._deprecated;\n  var valueOrDefault$3 = helpers$1.valueOrDefault;\n\n  core_defaults._set('bar', {\n    hover: {\n      mode: 'label'\n    },\n    scales: {\n      xAxes: [{\n        type: 'category',\n        offset: true,\n        gridLines: {\n          offsetGridLines: true\n        }\n      }],\n      yAxes: [{\n        type: 'linear'\n      }]\n    }\n  });\n\n  core_defaults._set('global', {\n    datasets: {\n      bar: {\n        categoryPercentage: 0.8,\n        barPercentage: 0.9\n      }\n    }\n  });\n  /**\n   * Computes the \"optimal\" sample size to maintain bars equally sized while preventing overlap.\n   * @private\n   */\n\n\n  function computeMinSampleSize(scale, pixels) {\n    var min = scale._length;\n    var prev, curr, i, ilen;\n\n    for (i = 1, ilen = pixels.length; i < ilen; ++i) {\n      min = Math.min(min, Math.abs(pixels[i] - pixels[i - 1]));\n    }\n\n    for (i = 0, ilen = scale.getTicks().length; i < ilen; ++i) {\n      curr = scale.getPixelForTick(i);\n      min = i > 0 ? Math.min(min, Math.abs(curr - prev)) : min;\n      prev = curr;\n    }\n\n    return min;\n  }\n  /**\n   * Computes an \"ideal\" category based on the absolute bar thickness or, if undefined or null,\n   * uses the smallest interval (see computeMinSampleSize) that prevents bar overlapping. This\n   * mode currently always generates bars equally sized (until we introduce scriptable options?).\n   * @private\n   */\n\n\n  function computeFitCategoryTraits(index, ruler, options) {\n    var thickness = options.barThickness;\n    var count = ruler.stackCount;\n    var curr = ruler.pixels[index];\n    var min = helpers$1.isNullOrUndef(thickness) ? computeMinSampleSize(ruler.scale, ruler.pixels) : -1;\n    var size, ratio;\n\n    if (helpers$1.isNullOrUndef(thickness)) {\n      size = min * options.categoryPercentage;\n      ratio = options.barPercentage;\n    } else {\n      // When bar thickness is enforced, category and bar percentages are ignored.\n      // Note(SB): we could add support for relative bar thickness (e.g. barThickness: '50%')\n      // and deprecate barPercentage since this value is ignored when thickness is absolute.\n      size = thickness * count;\n      ratio = 1;\n    }\n\n    return {\n      chunk: size / count,\n      ratio: ratio,\n      start: curr - size / 2\n    };\n  }\n  /**\n   * Computes an \"optimal\" category that globally arranges bars side by side (no gap when\n   * percentage options are 1), based on the previous and following categories. This mode\n   * generates bars with different widths when data are not evenly spaced.\n   * @private\n   */\n\n\n  function computeFlexCategoryTraits(index, ruler, options) {\n    var pixels = ruler.pixels;\n    var curr = pixels[index];\n    var prev = index > 0 ? pixels[index - 1] : null;\n    var next = index < pixels.length - 1 ? pixels[index + 1] : null;\n    var percent = options.categoryPercentage;\n    var start, size;\n\n    if (prev === null) {\n      // first data: its size is double based on the next point or,\n      // if it's also the last data, we use the scale size.\n      prev = curr - (next === null ? ruler.end - ruler.start : next - curr);\n    }\n\n    if (next === null) {\n      // last data: its size is also double based on the previous point.\n      next = curr + curr - prev;\n    }\n\n    start = curr - (curr - Math.min(prev, next)) / 2 * percent;\n    size = Math.abs(next - prev) / 2 * percent;\n    return {\n      chunk: size / ruler.stackCount,\n      ratio: options.barPercentage,\n      start: start\n    };\n  }\n\n  var controller_bar = core_datasetController.extend({\n    dataElementType: elements.Rectangle,\n\n    /**\n     * @private\n     */\n    _dataElementOptions: ['backgroundColor', 'borderColor', 'borderSkipped', 'borderWidth', 'barPercentage', 'barThickness', 'categoryPercentage', 'maxBarThickness', 'minBarLength'],\n    initialize: function initialize() {\n      var me = this;\n      var meta, scaleOpts;\n      core_datasetController.prototype.initialize.apply(me, arguments);\n      meta = me.getMeta();\n      meta.stack = me.getDataset().stack;\n      meta.bar = true;\n      scaleOpts = me._getIndexScale().options;\n      deprecated('bar chart', scaleOpts.barPercentage, 'scales.[x/y]Axes.barPercentage', 'dataset.barPercentage');\n      deprecated('bar chart', scaleOpts.barThickness, 'scales.[x/y]Axes.barThickness', 'dataset.barThickness');\n      deprecated('bar chart', scaleOpts.categoryPercentage, 'scales.[x/y]Axes.categoryPercentage', 'dataset.categoryPercentage');\n      deprecated('bar chart', me._getValueScale().options.minBarLength, 'scales.[x/y]Axes.minBarLength', 'dataset.minBarLength');\n      deprecated('bar chart', scaleOpts.maxBarThickness, 'scales.[x/y]Axes.maxBarThickness', 'dataset.maxBarThickness');\n    },\n    update: function update(reset) {\n      var me = this;\n      var rects = me.getMeta().data;\n      var i, ilen;\n      me._ruler = me.getRuler();\n\n      for (i = 0, ilen = rects.length; i < ilen; ++i) {\n        me.updateElement(rects[i], i, reset);\n      }\n    },\n    updateElement: function updateElement(rectangle, index, reset) {\n      var me = this;\n      var meta = me.getMeta();\n      var dataset = me.getDataset();\n\n      var options = me._resolveDataElementOptions(rectangle, index);\n\n      rectangle._xScale = me.getScaleForId(meta.xAxisID);\n      rectangle._yScale = me.getScaleForId(meta.yAxisID);\n      rectangle._datasetIndex = me.index;\n      rectangle._index = index;\n      rectangle._model = {\n        backgroundColor: options.backgroundColor,\n        borderColor: options.borderColor,\n        borderSkipped: options.borderSkipped,\n        borderWidth: options.borderWidth,\n        datasetLabel: dataset.label,\n        label: me.chart.data.labels[index]\n      };\n\n      if (helpers$1.isArray(dataset.data[index])) {\n        rectangle._model.borderSkipped = null;\n      }\n\n      me._updateElementGeometry(rectangle, index, reset, options);\n\n      rectangle.pivot();\n    },\n\n    /**\n     * @private\n     */\n    _updateElementGeometry: function _updateElementGeometry(rectangle, index, reset, options) {\n      var me = this;\n      var model = rectangle._model;\n\n      var vscale = me._getValueScale();\n\n      var base = vscale.getBasePixel();\n      var horizontal = vscale.isHorizontal();\n      var ruler = me._ruler || me.getRuler();\n      var vpixels = me.calculateBarValuePixels(me.index, index, options);\n      var ipixels = me.calculateBarIndexPixels(me.index, index, ruler, options);\n      model.horizontal = horizontal;\n      model.base = reset ? base : vpixels.base;\n      model.x = horizontal ? reset ? base : vpixels.head : ipixels.center;\n      model.y = horizontal ? ipixels.center : reset ? base : vpixels.head;\n      model.height = horizontal ? ipixels.size : undefined;\n      model.width = horizontal ? undefined : ipixels.size;\n    },\n\n    /**\n     * Returns the stacks based on groups and bar visibility.\n     * @param {number} [last] - The dataset index\n     * @returns {string[]} The list of stack IDs\n     * @private\n     */\n    _getStacks: function _getStacks(last) {\n      var me = this;\n\n      var scale = me._getIndexScale();\n\n      var metasets = scale._getMatchingVisibleMetas(me._type);\n\n      var stacked = scale.options.stacked;\n      var ilen = metasets.length;\n      var stacks = [];\n      var i, meta;\n\n      for (i = 0; i < ilen; ++i) {\n        meta = metasets[i]; // stacked   | meta.stack\n        //           | found | not found | undefined\n        // false     |   x   |     x     |     x\n        // true      |       |     x     |\n        // undefined |       |     x     |     x\n\n        if (stacked === false || stacks.indexOf(meta.stack) === -1 || stacked === undefined && meta.stack === undefined) {\n          stacks.push(meta.stack);\n        }\n\n        if (meta.index === last) {\n          break;\n        }\n      }\n\n      return stacks;\n    },\n\n    /**\n     * Returns the effective number of stacks based on groups and bar visibility.\n     * @private\n     */\n    getStackCount: function getStackCount() {\n      return this._getStacks().length;\n    },\n\n    /**\n     * Returns the stack index for the given dataset based on groups and bar visibility.\n     * @param {number} [datasetIndex] - The dataset index\n     * @param {string} [name] - The stack name to find\n     * @returns {number} The stack index\n     * @private\n     */\n    getStackIndex: function getStackIndex(datasetIndex, name) {\n      var stacks = this._getStacks(datasetIndex);\n\n      var index = name !== undefined ? stacks.indexOf(name) : -1; // indexOf returns -1 if element is not present\n\n      return index === -1 ? stacks.length - 1 : index;\n    },\n\n    /**\n     * @private\n     */\n    getRuler: function getRuler() {\n      var me = this;\n\n      var scale = me._getIndexScale();\n\n      var pixels = [];\n      var i, ilen;\n\n      for (i = 0, ilen = me.getMeta().data.length; i < ilen; ++i) {\n        pixels.push(scale.getPixelForValue(null, i, me.index));\n      }\n\n      return {\n        pixels: pixels,\n        start: scale._startPixel,\n        end: scale._endPixel,\n        stackCount: me.getStackCount(),\n        scale: scale\n      };\n    },\n\n    /**\n     * Note: pixel values are not clamped to the scale area.\n     * @private\n     */\n    calculateBarValuePixels: function calculateBarValuePixels(datasetIndex, index, options) {\n      var me = this;\n      var chart = me.chart;\n\n      var scale = me._getValueScale();\n\n      var isHorizontal = scale.isHorizontal();\n      var datasets = chart.data.datasets;\n\n      var metasets = scale._getMatchingVisibleMetas(me._type);\n\n      var value = scale._parseValue(datasets[datasetIndex].data[index]);\n\n      var minBarLength = options.minBarLength;\n      var stacked = scale.options.stacked;\n      var stack = me.getMeta().stack;\n      var start = value.start === undefined ? 0 : value.max >= 0 && value.min >= 0 ? value.min : value.max;\n      var length = value.start === undefined ? value.end : value.max >= 0 && value.min >= 0 ? value.max - value.min : value.min - value.max;\n      var ilen = metasets.length;\n      var i, imeta, ivalue, base, head, size, stackLength;\n\n      if (stacked || stacked === undefined && stack !== undefined) {\n        for (i = 0; i < ilen; ++i) {\n          imeta = metasets[i];\n\n          if (imeta.index === datasetIndex) {\n            break;\n          }\n\n          if (imeta.stack === stack) {\n            stackLength = scale._parseValue(datasets[imeta.index].data[index]);\n            ivalue = stackLength.start === undefined ? stackLength.end : stackLength.min >= 0 && stackLength.max >= 0 ? stackLength.max : stackLength.min;\n\n            if (value.min < 0 && ivalue < 0 || value.max >= 0 && ivalue > 0) {\n              start += ivalue;\n            }\n          }\n        }\n      }\n\n      base = scale.getPixelForValue(start);\n      head = scale.getPixelForValue(start + length);\n      size = head - base;\n\n      if (minBarLength !== undefined && Math.abs(size) < minBarLength) {\n        size = minBarLength;\n\n        if (length >= 0 && !isHorizontal || length < 0 && isHorizontal) {\n          head = base - minBarLength;\n        } else {\n          head = base + minBarLength;\n        }\n      }\n\n      return {\n        size: size,\n        base: base,\n        head: head,\n        center: head + size / 2\n      };\n    },\n\n    /**\n     * @private\n     */\n    calculateBarIndexPixels: function calculateBarIndexPixels(datasetIndex, index, ruler, options) {\n      var me = this;\n      var range = options.barThickness === 'flex' ? computeFlexCategoryTraits(index, ruler, options) : computeFitCategoryTraits(index, ruler, options);\n      var stackIndex = me.getStackIndex(datasetIndex, me.getMeta().stack);\n      var center = range.start + range.chunk * stackIndex + range.chunk / 2;\n      var size = Math.min(valueOrDefault$3(options.maxBarThickness, Infinity), range.chunk * range.ratio);\n      return {\n        base: center - size / 2,\n        head: center + size / 2,\n        center: center,\n        size: size\n      };\n    },\n    draw: function draw() {\n      var me = this;\n      var chart = me.chart;\n\n      var scale = me._getValueScale();\n\n      var rects = me.getMeta().data;\n      var dataset = me.getDataset();\n      var ilen = rects.length;\n      var i = 0;\n      helpers$1.canvas.clipArea(chart.ctx, chart.chartArea);\n\n      for (; i < ilen; ++i) {\n        var val = scale._parseValue(dataset.data[i]);\n\n        if (!isNaN(val.min) && !isNaN(val.max)) {\n          rects[i].draw();\n        }\n      }\n\n      helpers$1.canvas.unclipArea(chart.ctx);\n    },\n\n    /**\n     * @private\n     */\n    _resolveDataElementOptions: function _resolveDataElementOptions() {\n      var me = this;\n      var values = helpers$1.extend({}, core_datasetController.prototype._resolveDataElementOptions.apply(me, arguments));\n\n      var indexOpts = me._getIndexScale().options;\n\n      var valueOpts = me._getValueScale().options;\n\n      values.barPercentage = valueOrDefault$3(indexOpts.barPercentage, values.barPercentage);\n      values.barThickness = valueOrDefault$3(indexOpts.barThickness, values.barThickness);\n      values.categoryPercentage = valueOrDefault$3(indexOpts.categoryPercentage, values.categoryPercentage);\n      values.maxBarThickness = valueOrDefault$3(indexOpts.maxBarThickness, values.maxBarThickness);\n      values.minBarLength = valueOrDefault$3(valueOpts.minBarLength, values.minBarLength);\n      return values;\n    }\n  });\n  var valueOrDefault$4 = helpers$1.valueOrDefault;\n  var resolve$1 = helpers$1.options.resolve;\n\n  core_defaults._set('bubble', {\n    hover: {\n      mode: 'single'\n    },\n    scales: {\n      xAxes: [{\n        type: 'linear',\n        // bubble should probably use a linear scale by default\n        position: 'bottom',\n        id: 'x-axis-0' // need an ID so datasets can reference the scale\n\n      }],\n      yAxes: [{\n        type: 'linear',\n        position: 'left',\n        id: 'y-axis-0'\n      }]\n    },\n    tooltips: {\n      callbacks: {\n        title: function title() {\n          // Title doesn't make sense for scatter since we format the data as a point\n          return '';\n        },\n        label: function label(item, data) {\n          var datasetLabel = data.datasets[item.datasetIndex].label || '';\n          var dataPoint = data.datasets[item.datasetIndex].data[item.index];\n          return datasetLabel + ': (' + item.xLabel + ', ' + item.yLabel + ', ' + dataPoint.r + ')';\n        }\n      }\n    }\n  });\n\n  var controller_bubble = core_datasetController.extend({\n    /**\n     * @protected\n     */\n    dataElementType: elements.Point,\n\n    /**\n     * @private\n     */\n    _dataElementOptions: ['backgroundColor', 'borderColor', 'borderWidth', 'hoverBackgroundColor', 'hoverBorderColor', 'hoverBorderWidth', 'hoverRadius', 'hitRadius', 'pointStyle', 'rotation'],\n\n    /**\n     * @protected\n     */\n    update: function update(reset) {\n      var me = this;\n      var meta = me.getMeta();\n      var points = meta.data; // Update Points\n\n      helpers$1.each(points, function (point, index) {\n        me.updateElement(point, index, reset);\n      });\n    },\n\n    /**\n     * @protected\n     */\n    updateElement: function updateElement(point, index, reset) {\n      var me = this;\n      var meta = me.getMeta();\n      var custom = point.custom || {};\n      var xScale = me.getScaleForId(meta.xAxisID);\n      var yScale = me.getScaleForId(meta.yAxisID);\n\n      var options = me._resolveDataElementOptions(point, index);\n\n      var data = me.getDataset().data[index];\n      var dsIndex = me.index;\n      var x = reset ? xScale.getPixelForDecimal(0.5) : xScale.getPixelForValue(typeof data === 'object' ? data : NaN, index, dsIndex);\n      var y = reset ? yScale.getBasePixel() : yScale.getPixelForValue(data, index, dsIndex);\n      point._xScale = xScale;\n      point._yScale = yScale;\n      point._options = options;\n      point._datasetIndex = dsIndex;\n      point._index = index;\n      point._model = {\n        backgroundColor: options.backgroundColor,\n        borderColor: options.borderColor,\n        borderWidth: options.borderWidth,\n        hitRadius: options.hitRadius,\n        pointStyle: options.pointStyle,\n        rotation: options.rotation,\n        radius: reset ? 0 : options.radius,\n        skip: custom.skip || isNaN(x) || isNaN(y),\n        x: x,\n        y: y\n      };\n      point.pivot();\n    },\n\n    /**\n     * @protected\n     */\n    setHoverStyle: function setHoverStyle(point) {\n      var model = point._model;\n      var options = point._options;\n      var getHoverColor = helpers$1.getHoverColor;\n      point.$previousStyle = {\n        backgroundColor: model.backgroundColor,\n        borderColor: model.borderColor,\n        borderWidth: model.borderWidth,\n        radius: model.radius\n      };\n      model.backgroundColor = valueOrDefault$4(options.hoverBackgroundColor, getHoverColor(options.backgroundColor));\n      model.borderColor = valueOrDefault$4(options.hoverBorderColor, getHoverColor(options.borderColor));\n      model.borderWidth = valueOrDefault$4(options.hoverBorderWidth, options.borderWidth);\n      model.radius = options.radius + options.hoverRadius;\n    },\n\n    /**\n     * @private\n     */\n    _resolveDataElementOptions: function _resolveDataElementOptions(point, index) {\n      var me = this;\n      var chart = me.chart;\n      var dataset = me.getDataset();\n      var custom = point.custom || {};\n      var data = dataset.data[index] || {};\n\n      var values = core_datasetController.prototype._resolveDataElementOptions.apply(me, arguments); // Scriptable options\n\n\n      var context = {\n        chart: chart,\n        dataIndex: index,\n        dataset: dataset,\n        datasetIndex: me.index\n      }; // In case values were cached (and thus frozen), we need to clone the values\n\n      if (me._cachedDataOpts === values) {\n        values = helpers$1.extend({}, values);\n      } // Custom radius resolution\n\n\n      values.radius = resolve$1([custom.radius, data.r, me._config.radius, chart.options.elements.point.radius], context, index);\n      return values;\n    }\n  });\n  var valueOrDefault$5 = helpers$1.valueOrDefault;\n  var PI$1 = Math.PI;\n  var DOUBLE_PI$1 = PI$1 * 2;\n  var HALF_PI$1 = PI$1 / 2;\n\n  core_defaults._set('doughnut', {\n    animation: {\n      // Boolean - Whether we animate the rotation of the Doughnut\n      animateRotate: true,\n      // Boolean - Whether we animate scaling the Doughnut from the centre\n      animateScale: false\n    },\n    hover: {\n      mode: 'single'\n    },\n    legendCallback: function legendCallback(chart) {\n      var list = document.createElement('ul');\n      var data = chart.data;\n      var datasets = data.datasets;\n      var labels = data.labels;\n      var i, ilen, listItem, listItemSpan;\n      list.setAttribute('class', chart.id + '-legend');\n\n      if (datasets.length) {\n        for (i = 0, ilen = datasets[0].data.length; i < ilen; ++i) {\n          listItem = list.appendChild(document.createElement('li'));\n          listItemSpan = listItem.appendChild(document.createElement('span'));\n          listItemSpan.style.backgroundColor = datasets[0].backgroundColor[i];\n\n          if (labels[i]) {\n            listItem.appendChild(document.createTextNode(labels[i]));\n          }\n        }\n      }\n\n      return list.outerHTML;\n    },\n    legend: {\n      labels: {\n        generateLabels: function generateLabels(chart) {\n          var data = chart.data;\n\n          if (data.labels.length && data.datasets.length) {\n            return data.labels.map(function (label, i) {\n              var meta = chart.getDatasetMeta(0);\n              var style = meta.controller.getStyle(i);\n              return {\n                text: label,\n                fillStyle: style.backgroundColor,\n                strokeStyle: style.borderColor,\n                lineWidth: style.borderWidth,\n                hidden: isNaN(data.datasets[0].data[i]) || meta.data[i].hidden,\n                // Extra data used for toggling the correct item\n                index: i\n              };\n            });\n          }\n\n          return [];\n        }\n      },\n      onClick: function onClick(e, legendItem) {\n        var index = legendItem.index;\n        var chart = this.chart;\n        var i, ilen, meta;\n\n        for (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) {\n          meta = chart.getDatasetMeta(i); // toggle visibility of index if exists\n\n          if (meta.data[index]) {\n            meta.data[index].hidden = !meta.data[index].hidden;\n          }\n        }\n\n        chart.update();\n      }\n    },\n    // The percentage of the chart that we cut out of the middle.\n    cutoutPercentage: 50,\n    // The rotation of the chart, where the first data arc begins.\n    rotation: -HALF_PI$1,\n    // The total circumference of the chart.\n    circumference: DOUBLE_PI$1,\n    // Need to override these to give a nice default\n    tooltips: {\n      callbacks: {\n        title: function title() {\n          return '';\n        },\n        label: function label(tooltipItem, data) {\n          var dataLabel = data.labels[tooltipItem.index];\n          var value = ': ' + data.datasets[tooltipItem.datasetIndex].data[tooltipItem.index];\n\n          if (helpers$1.isArray(dataLabel)) {\n            // show value on first line of multiline label\n            // need to clone because we are changing the value\n            dataLabel = dataLabel.slice();\n            dataLabel[0] += value;\n          } else {\n            dataLabel += value;\n          }\n\n          return dataLabel;\n        }\n      }\n    }\n  });\n\n  var controller_doughnut = core_datasetController.extend({\n    dataElementType: elements.Arc,\n    linkScales: helpers$1.noop,\n\n    /**\n     * @private\n     */\n    _dataElementOptions: ['backgroundColor', 'borderColor', 'borderWidth', 'borderAlign', 'hoverBackgroundColor', 'hoverBorderColor', 'hoverBorderWidth'],\n    // Get index of the dataset in relation to the visible datasets. This allows determining the inner and outer radius correctly\n    getRingIndex: function getRingIndex(datasetIndex) {\n      var ringIndex = 0;\n\n      for (var j = 0; j < datasetIndex; ++j) {\n        if (this.chart.isDatasetVisible(j)) {\n          ++ringIndex;\n        }\n      }\n\n      return ringIndex;\n    },\n    update: function update(reset) {\n      var me = this;\n      var chart = me.chart;\n      var chartArea = chart.chartArea;\n      var opts = chart.options;\n      var ratioX = 1;\n      var ratioY = 1;\n      var offsetX = 0;\n      var offsetY = 0;\n      var meta = me.getMeta();\n      var arcs = meta.data;\n      var cutout = opts.cutoutPercentage / 100 || 0;\n      var circumference = opts.circumference;\n\n      var chartWeight = me._getRingWeight(me.index);\n\n      var maxWidth, maxHeight, i, ilen; // If the chart's circumference isn't a full circle, calculate size as a ratio of the width/height of the arc\n\n      if (circumference < DOUBLE_PI$1) {\n        var startAngle = opts.rotation % DOUBLE_PI$1;\n        startAngle += startAngle >= PI$1 ? -DOUBLE_PI$1 : startAngle < -PI$1 ? DOUBLE_PI$1 : 0;\n        var endAngle = startAngle + circumference;\n        var startX = Math.cos(startAngle);\n        var startY = Math.sin(startAngle);\n        var endX = Math.cos(endAngle);\n        var endY = Math.sin(endAngle);\n        var contains0 = startAngle <= 0 && endAngle >= 0 || endAngle >= DOUBLE_PI$1;\n        var contains90 = startAngle <= HALF_PI$1 && endAngle >= HALF_PI$1 || endAngle >= DOUBLE_PI$1 + HALF_PI$1;\n        var contains180 = startAngle === -PI$1 || endAngle >= PI$1;\n        var contains270 = startAngle <= -HALF_PI$1 && endAngle >= -HALF_PI$1 || endAngle >= PI$1 + HALF_PI$1;\n        var minX = contains180 ? -1 : Math.min(startX, startX * cutout, endX, endX * cutout);\n        var minY = contains270 ? -1 : Math.min(startY, startY * cutout, endY, endY * cutout);\n        var maxX = contains0 ? 1 : Math.max(startX, startX * cutout, endX, endX * cutout);\n        var maxY = contains90 ? 1 : Math.max(startY, startY * cutout, endY, endY * cutout);\n        ratioX = (maxX - minX) / 2;\n        ratioY = (maxY - minY) / 2;\n        offsetX = -(maxX + minX) / 2;\n        offsetY = -(maxY + minY) / 2;\n      }\n\n      for (i = 0, ilen = arcs.length; i < ilen; ++i) {\n        arcs[i]._options = me._resolveDataElementOptions(arcs[i], i);\n      }\n\n      chart.borderWidth = me.getMaxBorderWidth();\n      maxWidth = (chartArea.right - chartArea.left - chart.borderWidth) / ratioX;\n      maxHeight = (chartArea.bottom - chartArea.top - chart.borderWidth) / ratioY;\n      chart.outerRadius = Math.max(Math.min(maxWidth, maxHeight) / 2, 0);\n      chart.innerRadius = Math.max(chart.outerRadius * cutout, 0);\n      chart.radiusLength = (chart.outerRadius - chart.innerRadius) / (me._getVisibleDatasetWeightTotal() || 1);\n      chart.offsetX = offsetX * chart.outerRadius;\n      chart.offsetY = offsetY * chart.outerRadius;\n      meta.total = me.calculateTotal();\n      me.outerRadius = chart.outerRadius - chart.radiusLength * me._getRingWeightOffset(me.index);\n      me.innerRadius = Math.max(me.outerRadius - chart.radiusLength * chartWeight, 0);\n\n      for (i = 0, ilen = arcs.length; i < ilen; ++i) {\n        me.updateElement(arcs[i], i, reset);\n      }\n    },\n    updateElement: function updateElement(arc, index, reset) {\n      var me = this;\n      var chart = me.chart;\n      var chartArea = chart.chartArea;\n      var opts = chart.options;\n      var animationOpts = opts.animation;\n      var centerX = (chartArea.left + chartArea.right) / 2;\n      var centerY = (chartArea.top + chartArea.bottom) / 2;\n      var startAngle = opts.rotation; // non reset case handled later\n\n      var endAngle = opts.rotation; // non reset case handled later\n\n      var dataset = me.getDataset();\n      var circumference = reset && animationOpts.animateRotate ? 0 : arc.hidden ? 0 : me.calculateCircumference(dataset.data[index]) * (opts.circumference / DOUBLE_PI$1);\n      var innerRadius = reset && animationOpts.animateScale ? 0 : me.innerRadius;\n      var outerRadius = reset && animationOpts.animateScale ? 0 : me.outerRadius;\n      var options = arc._options || {};\n      helpers$1.extend(arc, {\n        // Utility\n        _datasetIndex: me.index,\n        _index: index,\n        // Desired view properties\n        _model: {\n          backgroundColor: options.backgroundColor,\n          borderColor: options.borderColor,\n          borderWidth: options.borderWidth,\n          borderAlign: options.borderAlign,\n          x: centerX + chart.offsetX,\n          y: centerY + chart.offsetY,\n          startAngle: startAngle,\n          endAngle: endAngle,\n          circumference: circumference,\n          outerRadius: outerRadius,\n          innerRadius: innerRadius,\n          label: helpers$1.valueAtIndexOrDefault(dataset.label, index, chart.data.labels[index])\n        }\n      });\n      var model = arc._model; // Set correct angles if not resetting\n\n      if (!reset || !animationOpts.animateRotate) {\n        if (index === 0) {\n          model.startAngle = opts.rotation;\n        } else {\n          model.startAngle = me.getMeta().data[index - 1]._model.endAngle;\n        }\n\n        model.endAngle = model.startAngle + model.circumference;\n      }\n\n      arc.pivot();\n    },\n    calculateTotal: function calculateTotal() {\n      var dataset = this.getDataset();\n      var meta = this.getMeta();\n      var total = 0;\n      var value;\n      helpers$1.each(meta.data, function (element, index) {\n        value = dataset.data[index];\n\n        if (!isNaN(value) && !element.hidden) {\n          total += Math.abs(value);\n        }\n      });\n      /* if (total === 0) {\n      \ttotal = NaN;\n      }*/\n\n      return total;\n    },\n    calculateCircumference: function calculateCircumference(value) {\n      var total = this.getMeta().total;\n\n      if (total > 0 && !isNaN(value)) {\n        return DOUBLE_PI$1 * (Math.abs(value) / total);\n      }\n\n      return 0;\n    },\n    // gets the max border or hover width to properly scale pie charts\n    getMaxBorderWidth: function getMaxBorderWidth(arcs) {\n      var me = this;\n      var max = 0;\n      var chart = me.chart;\n      var i, ilen, meta, arc, controller, options, borderWidth, hoverWidth;\n\n      if (!arcs) {\n        // Find the outmost visible dataset\n        for (i = 0, ilen = chart.data.datasets.length; i < ilen; ++i) {\n          if (chart.isDatasetVisible(i)) {\n            meta = chart.getDatasetMeta(i);\n            arcs = meta.data;\n\n            if (i !== me.index) {\n              controller = meta.controller;\n            }\n\n            break;\n          }\n        }\n      }\n\n      if (!arcs) {\n        return 0;\n      }\n\n      for (i = 0, ilen = arcs.length; i < ilen; ++i) {\n        arc = arcs[i];\n\n        if (controller) {\n          controller._configure();\n\n          options = controller._resolveDataElementOptions(arc, i);\n        } else {\n          options = arc._options;\n        }\n\n        if (options.borderAlign !== 'inner') {\n          borderWidth = options.borderWidth;\n          hoverWidth = options.hoverBorderWidth;\n          max = borderWidth > max ? borderWidth : max;\n          max = hoverWidth > max ? hoverWidth : max;\n        }\n      }\n\n      return max;\n    },\n\n    /**\n     * @protected\n     */\n    setHoverStyle: function setHoverStyle(arc) {\n      var model = arc._model;\n      var options = arc._options;\n      var getHoverColor = helpers$1.getHoverColor;\n      arc.$previousStyle = {\n        backgroundColor: model.backgroundColor,\n        borderColor: model.borderColor,\n        borderWidth: model.borderWidth\n      };\n      model.backgroundColor = valueOrDefault$5(options.hoverBackgroundColor, getHoverColor(options.backgroundColor));\n      model.borderColor = valueOrDefault$5(options.hoverBorderColor, getHoverColor(options.borderColor));\n      model.borderWidth = valueOrDefault$5(options.hoverBorderWidth, options.borderWidth);\n    },\n\n    /**\n     * Get radius length offset of the dataset in relation to the visible datasets weights. This allows determining the inner and outer radius correctly\n     * @private\n     */\n    _getRingWeightOffset: function _getRingWeightOffset(datasetIndex) {\n      var ringWeightOffset = 0;\n\n      for (var i = 0; i < datasetIndex; ++i) {\n        if (this.chart.isDatasetVisible(i)) {\n          ringWeightOffset += this._getRingWeight(i);\n        }\n      }\n\n      return ringWeightOffset;\n    },\n\n    /**\n     * @private\n     */\n    _getRingWeight: function _getRingWeight(dataSetIndex) {\n      return Math.max(valueOrDefault$5(this.chart.data.datasets[dataSetIndex].weight, 1), 0);\n    },\n\n    /**\n     * Returns the sum of all visibile data set weights.  This value can be 0.\n     * @private\n     */\n    _getVisibleDatasetWeightTotal: function _getVisibleDatasetWeightTotal() {\n      return this._getRingWeightOffset(this.chart.data.datasets.length);\n    }\n  });\n\n  core_defaults._set('horizontalBar', {\n    hover: {\n      mode: 'index',\n      axis: 'y'\n    },\n    scales: {\n      xAxes: [{\n        type: 'linear',\n        position: 'bottom'\n      }],\n      yAxes: [{\n        type: 'category',\n        position: 'left',\n        offset: true,\n        gridLines: {\n          offsetGridLines: true\n        }\n      }]\n    },\n    elements: {\n      rectangle: {\n        borderSkipped: 'left'\n      }\n    },\n    tooltips: {\n      mode: 'index',\n      axis: 'y'\n    }\n  });\n\n  core_defaults._set('global', {\n    datasets: {\n      horizontalBar: {\n        categoryPercentage: 0.8,\n        barPercentage: 0.9\n      }\n    }\n  });\n\n  var controller_horizontalBar = controller_bar.extend({\n    /**\n     * @private\n     */\n    _getValueScaleId: function _getValueScaleId() {\n      return this.getMeta().xAxisID;\n    },\n\n    /**\n     * @private\n     */\n    _getIndexScaleId: function _getIndexScaleId() {\n      return this.getMeta().yAxisID;\n    }\n  });\n  var valueOrDefault$6 = helpers$1.valueOrDefault;\n  var resolve$2 = helpers$1.options.resolve;\n  var isPointInArea = helpers$1.canvas._isPointInArea;\n\n  core_defaults._set('line', {\n    showLines: true,\n    spanGaps: false,\n    hover: {\n      mode: 'label'\n    },\n    scales: {\n      xAxes: [{\n        type: 'category',\n        id: 'x-axis-0'\n      }],\n      yAxes: [{\n        type: 'linear',\n        id: 'y-axis-0'\n      }]\n    }\n  });\n\n  function scaleClip(scale, halfBorderWidth) {\n    var tickOpts = scale && scale.options.ticks || {};\n    var reverse = tickOpts.reverse;\n    var min = tickOpts.min === undefined ? halfBorderWidth : 0;\n    var max = tickOpts.max === undefined ? halfBorderWidth : 0;\n    return {\n      start: reverse ? max : min,\n      end: reverse ? min : max\n    };\n  }\n\n  function defaultClip(xScale, yScale, borderWidth) {\n    var halfBorderWidth = borderWidth / 2;\n    var x = scaleClip(xScale, halfBorderWidth);\n    var y = scaleClip(yScale, halfBorderWidth);\n    return {\n      top: y.end,\n      right: x.end,\n      bottom: y.start,\n      left: x.start\n    };\n  }\n\n  function toClip(value) {\n    var t, r, b, l;\n\n    if (helpers$1.isObject(value)) {\n      t = value.top;\n      r = value.right;\n      b = value.bottom;\n      l = value.left;\n    } else {\n      t = r = b = l = value;\n    }\n\n    return {\n      top: t,\n      right: r,\n      bottom: b,\n      left: l\n    };\n  }\n\n  var controller_line = core_datasetController.extend({\n    datasetElementType: elements.Line,\n    dataElementType: elements.Point,\n\n    /**\n     * @private\n     */\n    _datasetElementOptions: ['backgroundColor', 'borderCapStyle', 'borderColor', 'borderDash', 'borderDashOffset', 'borderJoinStyle', 'borderWidth', 'cubicInterpolationMode', 'fill'],\n\n    /**\n     * @private\n     */\n    _dataElementOptions: {\n      backgroundColor: 'pointBackgroundColor',\n      borderColor: 'pointBorderColor',\n      borderWidth: 'pointBorderWidth',\n      hitRadius: 'pointHitRadius',\n      hoverBackgroundColor: 'pointHoverBackgroundColor',\n      hoverBorderColor: 'pointHoverBorderColor',\n      hoverBorderWidth: 'pointHoverBorderWidth',\n      hoverRadius: 'pointHoverRadius',\n      pointStyle: 'pointStyle',\n      radius: 'pointRadius',\n      rotation: 'pointRotation'\n    },\n    update: function update(reset) {\n      var me = this;\n      var meta = me.getMeta();\n      var line = meta.dataset;\n      var points = meta.data || [];\n      var options = me.chart.options;\n      var config = me._config;\n      var showLine = me._showLine = valueOrDefault$6(config.showLine, options.showLines);\n      var i, ilen;\n      me._xScale = me.getScaleForId(meta.xAxisID);\n      me._yScale = me.getScaleForId(meta.yAxisID); // Update Line\n\n      if (showLine) {\n        // Compatibility: If the properties are defined with only the old name, use those values\n        if (config.tension !== undefined && config.lineTension === undefined) {\n          config.lineTension = config.tension;\n        } // Utility\n\n\n        line._scale = me._yScale;\n        line._datasetIndex = me.index; // Data\n\n        line._children = points; // Model\n\n        line._model = me._resolveDatasetElementOptions(line);\n        line.pivot();\n      } // Update Points\n\n\n      for (i = 0, ilen = points.length; i < ilen; ++i) {\n        me.updateElement(points[i], i, reset);\n      }\n\n      if (showLine && line._model.tension !== 0) {\n        me.updateBezierControlPoints();\n      } // Now pivot the point for animation\n\n\n      for (i = 0, ilen = points.length; i < ilen; ++i) {\n        points[i].pivot();\n      }\n    },\n    updateElement: function updateElement(point, index, reset) {\n      var me = this;\n      var meta = me.getMeta();\n      var custom = point.custom || {};\n      var dataset = me.getDataset();\n      var datasetIndex = me.index;\n      var value = dataset.data[index];\n      var xScale = me._xScale;\n      var yScale = me._yScale;\n      var lineModel = meta.dataset._model;\n      var x, y;\n\n      var options = me._resolveDataElementOptions(point, index);\n\n      x = xScale.getPixelForValue(typeof value === 'object' ? value : NaN, index, datasetIndex);\n      y = reset ? yScale.getBasePixel() : me.calculatePointY(value, index, datasetIndex); // Utility\n\n      point._xScale = xScale;\n      point._yScale = yScale;\n      point._options = options;\n      point._datasetIndex = datasetIndex;\n      point._index = index; // Desired view properties\n\n      point._model = {\n        x: x,\n        y: y,\n        skip: custom.skip || isNaN(x) || isNaN(y),\n        // Appearance\n        radius: options.radius,\n        pointStyle: options.pointStyle,\n        rotation: options.rotation,\n        backgroundColor: options.backgroundColor,\n        borderColor: options.borderColor,\n        borderWidth: options.borderWidth,\n        tension: valueOrDefault$6(custom.tension, lineModel ? lineModel.tension : 0),\n        steppedLine: lineModel ? lineModel.steppedLine : false,\n        // Tooltip\n        hitRadius: options.hitRadius\n      };\n    },\n\n    /**\n     * @private\n     */\n    _resolveDatasetElementOptions: function _resolveDatasetElementOptions(element) {\n      var me = this;\n      var config = me._config;\n      var custom = element.custom || {};\n      var options = me.chart.options;\n      var lineOptions = options.elements.line;\n\n      var values = core_datasetController.prototype._resolveDatasetElementOptions.apply(me, arguments); // The default behavior of lines is to break at null values, according\n      // to https://github.com/chartjs/Chart.js/issues/2435#issuecomment-216718158\n      // This option gives lines the ability to span gaps\n\n\n      values.spanGaps = valueOrDefault$6(config.spanGaps, options.spanGaps);\n      values.tension = valueOrDefault$6(config.lineTension, lineOptions.tension);\n      values.steppedLine = resolve$2([custom.steppedLine, config.steppedLine, lineOptions.stepped]);\n      values.clip = toClip(valueOrDefault$6(config.clip, defaultClip(me._xScale, me._yScale, values.borderWidth)));\n      return values;\n    },\n    calculatePointY: function calculatePointY(value, index, datasetIndex) {\n      var me = this;\n      var chart = me.chart;\n      var yScale = me._yScale;\n      var sumPos = 0;\n      var sumNeg = 0;\n      var i, ds, dsMeta, stackedRightValue, rightValue, metasets, ilen;\n\n      if (yScale.options.stacked) {\n        rightValue = +yScale.getRightValue(value);\n        metasets = chart._getSortedVisibleDatasetMetas();\n        ilen = metasets.length;\n\n        for (i = 0; i < ilen; ++i) {\n          dsMeta = metasets[i];\n\n          if (dsMeta.index === datasetIndex) {\n            break;\n          }\n\n          ds = chart.data.datasets[dsMeta.index];\n\n          if (dsMeta.type === 'line' && dsMeta.yAxisID === yScale.id) {\n            stackedRightValue = +yScale.getRightValue(ds.data[index]);\n\n            if (stackedRightValue < 0) {\n              sumNeg += stackedRightValue || 0;\n            } else {\n              sumPos += stackedRightValue || 0;\n            }\n          }\n        }\n\n        if (rightValue < 0) {\n          return yScale.getPixelForValue(sumNeg + rightValue);\n        }\n\n        return yScale.getPixelForValue(sumPos + rightValue);\n      }\n\n      return yScale.getPixelForValue(value);\n    },\n    updateBezierControlPoints: function updateBezierControlPoints() {\n      var me = this;\n      var chart = me.chart;\n      var meta = me.getMeta();\n      var lineModel = meta.dataset._model;\n      var area = chart.chartArea;\n      var points = meta.data || [];\n      var i, ilen, model, controlPoints; // Only consider points that are drawn in case the spanGaps option is used\n\n      if (lineModel.spanGaps) {\n        points = points.filter(function (pt) {\n          return !pt._model.skip;\n        });\n      }\n\n      function capControlPoint(pt, min, max) {\n        return Math.max(Math.min(pt, max), min);\n      }\n\n      if (lineModel.cubicInterpolationMode === 'monotone') {\n        helpers$1.splineCurveMonotone(points);\n      } else {\n        for (i = 0, ilen = points.length; i < ilen; ++i) {\n          model = points[i]._model;\n          controlPoints = helpers$1.splineCurve(helpers$1.previousItem(points, i)._model, model, helpers$1.nextItem(points, i)._model, lineModel.tension);\n          model.controlPointPreviousX = controlPoints.previous.x;\n          model.controlPointPreviousY = controlPoints.previous.y;\n          model.controlPointNextX = controlPoints.next.x;\n          model.controlPointNextY = controlPoints.next.y;\n        }\n      }\n\n      if (chart.options.elements.line.capBezierPoints) {\n        for (i = 0, ilen = points.length; i < ilen; ++i) {\n          model = points[i]._model;\n\n          if (isPointInArea(model, area)) {\n            if (i > 0 && isPointInArea(points[i - 1]._model, area)) {\n              model.controlPointPreviousX = capControlPoint(model.controlPointPreviousX, area.left, area.right);\n              model.controlPointPreviousY = capControlPoint(model.controlPointPreviousY, area.top, area.bottom);\n            }\n\n            if (i < points.length - 1 && isPointInArea(points[i + 1]._model, area)) {\n              model.controlPointNextX = capControlPoint(model.controlPointNextX, area.left, area.right);\n              model.controlPointNextY = capControlPoint(model.controlPointNextY, area.top, area.bottom);\n            }\n          }\n        }\n      }\n    },\n    draw: function draw() {\n      var me = this;\n      var chart = me.chart;\n      var meta = me.getMeta();\n      var points = meta.data || [];\n      var area = chart.chartArea;\n      var canvas = chart.canvas;\n      var i = 0;\n      var ilen = points.length;\n      var clip;\n\n      if (me._showLine) {\n        clip = meta.dataset._model.clip;\n        helpers$1.canvas.clipArea(chart.ctx, {\n          left: clip.left === false ? 0 : area.left - clip.left,\n          right: clip.right === false ? canvas.width : area.right + clip.right,\n          top: clip.top === false ? 0 : area.top - clip.top,\n          bottom: clip.bottom === false ? canvas.height : area.bottom + clip.bottom\n        });\n        meta.dataset.draw();\n        helpers$1.canvas.unclipArea(chart.ctx);\n      } // Draw the points\n\n\n      for (; i < ilen; ++i) {\n        points[i].draw(area);\n      }\n    },\n\n    /**\n     * @protected\n     */\n    setHoverStyle: function setHoverStyle(point) {\n      var model = point._model;\n      var options = point._options;\n      var getHoverColor = helpers$1.getHoverColor;\n      point.$previousStyle = {\n        backgroundColor: model.backgroundColor,\n        borderColor: model.borderColor,\n        borderWidth: model.borderWidth,\n        radius: model.radius\n      };\n      model.backgroundColor = valueOrDefault$6(options.hoverBackgroundColor, getHoverColor(options.backgroundColor));\n      model.borderColor = valueOrDefault$6(options.hoverBorderColor, getHoverColor(options.borderColor));\n      model.borderWidth = valueOrDefault$6(options.hoverBorderWidth, options.borderWidth);\n      model.radius = valueOrDefault$6(options.hoverRadius, options.radius);\n    }\n  });\n  var resolve$3 = helpers$1.options.resolve;\n\n  core_defaults._set('polarArea', {\n    scale: {\n      type: 'radialLinear',\n      angleLines: {\n        display: false\n      },\n      gridLines: {\n        circular: true\n      },\n      pointLabels: {\n        display: false\n      },\n      ticks: {\n        beginAtZero: true\n      }\n    },\n    // Boolean - Whether to animate the rotation of the chart\n    animation: {\n      animateRotate: true,\n      animateScale: true\n    },\n    startAngle: -0.5 * Math.PI,\n    legendCallback: function legendCallback(chart) {\n      var list = document.createElement('ul');\n      var data = chart.data;\n      var datasets = data.datasets;\n      var labels = data.labels;\n      var i, ilen, listItem, listItemSpan;\n      list.setAttribute('class', chart.id + '-legend');\n\n      if (datasets.length) {\n        for (i = 0, ilen = datasets[0].data.length; i < ilen; ++i) {\n          listItem = list.appendChild(document.createElement('li'));\n          listItemSpan = listItem.appendChild(document.createElement('span'));\n          listItemSpan.style.backgroundColor = datasets[0].backgroundColor[i];\n\n          if (labels[i]) {\n            listItem.appendChild(document.createTextNode(labels[i]));\n          }\n        }\n      }\n\n      return list.outerHTML;\n    },\n    legend: {\n      labels: {\n        generateLabels: function generateLabels(chart) {\n          var data = chart.data;\n\n          if (data.labels.length && data.datasets.length) {\n            return data.labels.map(function (label, i) {\n              var meta = chart.getDatasetMeta(0);\n              var style = meta.controller.getStyle(i);\n              return {\n                text: label,\n                fillStyle: style.backgroundColor,\n                strokeStyle: style.borderColor,\n                lineWidth: style.borderWidth,\n                hidden: isNaN(data.datasets[0].data[i]) || meta.data[i].hidden,\n                // Extra data used for toggling the correct item\n                index: i\n              };\n            });\n          }\n\n          return [];\n        }\n      },\n      onClick: function onClick(e, legendItem) {\n        var index = legendItem.index;\n        var chart = this.chart;\n        var i, ilen, meta;\n\n        for (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) {\n          meta = chart.getDatasetMeta(i);\n          meta.data[index].hidden = !meta.data[index].hidden;\n        }\n\n        chart.update();\n      }\n    },\n    // Need to override these to give a nice default\n    tooltips: {\n      callbacks: {\n        title: function title() {\n          return '';\n        },\n        label: function label(item, data) {\n          return data.labels[item.index] + ': ' + item.yLabel;\n        }\n      }\n    }\n  });\n\n  var controller_polarArea = core_datasetController.extend({\n    dataElementType: elements.Arc,\n    linkScales: helpers$1.noop,\n\n    /**\n     * @private\n     */\n    _dataElementOptions: ['backgroundColor', 'borderColor', 'borderWidth', 'borderAlign', 'hoverBackgroundColor', 'hoverBorderColor', 'hoverBorderWidth'],\n\n    /**\n     * @private\n     */\n    _getIndexScaleId: function _getIndexScaleId() {\n      return this.chart.scale.id;\n    },\n\n    /**\n     * @private\n     */\n    _getValueScaleId: function _getValueScaleId() {\n      return this.chart.scale.id;\n    },\n    update: function update(reset) {\n      var me = this;\n      var dataset = me.getDataset();\n      var meta = me.getMeta();\n      var start = me.chart.options.startAngle || 0;\n      var starts = me._starts = [];\n      var angles = me._angles = [];\n      var arcs = meta.data;\n      var i, ilen, angle;\n\n      me._updateRadius();\n\n      meta.count = me.countVisibleElements();\n\n      for (i = 0, ilen = dataset.data.length; i < ilen; i++) {\n        starts[i] = start;\n        angle = me._computeAngle(i);\n        angles[i] = angle;\n        start += angle;\n      }\n\n      for (i = 0, ilen = arcs.length; i < ilen; ++i) {\n        arcs[i]._options = me._resolveDataElementOptions(arcs[i], i);\n        me.updateElement(arcs[i], i, reset);\n      }\n    },\n\n    /**\n     * @private\n     */\n    _updateRadius: function _updateRadius() {\n      var me = this;\n      var chart = me.chart;\n      var chartArea = chart.chartArea;\n      var opts = chart.options;\n      var minSize = Math.min(chartArea.right - chartArea.left, chartArea.bottom - chartArea.top);\n      chart.outerRadius = Math.max(minSize / 2, 0);\n      chart.innerRadius = Math.max(opts.cutoutPercentage ? chart.outerRadius / 100 * opts.cutoutPercentage : 1, 0);\n      chart.radiusLength = (chart.outerRadius - chart.innerRadius) / chart.getVisibleDatasetCount();\n      me.outerRadius = chart.outerRadius - chart.radiusLength * me.index;\n      me.innerRadius = me.outerRadius - chart.radiusLength;\n    },\n    updateElement: function updateElement(arc, index, reset) {\n      var me = this;\n      var chart = me.chart;\n      var dataset = me.getDataset();\n      var opts = chart.options;\n      var animationOpts = opts.animation;\n      var scale = chart.scale;\n      var labels = chart.data.labels;\n      var centerX = scale.xCenter;\n      var centerY = scale.yCenter; // var negHalfPI = -0.5 * Math.PI;\n\n      var datasetStartAngle = opts.startAngle;\n      var distance = arc.hidden ? 0 : scale.getDistanceFromCenterForValue(dataset.data[index]);\n      var startAngle = me._starts[index];\n      var endAngle = startAngle + (arc.hidden ? 0 : me._angles[index]);\n      var resetRadius = animationOpts.animateScale ? 0 : scale.getDistanceFromCenterForValue(dataset.data[index]);\n      var options = arc._options || {};\n      helpers$1.extend(arc, {\n        // Utility\n        _datasetIndex: me.index,\n        _index: index,\n        _scale: scale,\n        // Desired view properties\n        _model: {\n          backgroundColor: options.backgroundColor,\n          borderColor: options.borderColor,\n          borderWidth: options.borderWidth,\n          borderAlign: options.borderAlign,\n          x: centerX,\n          y: centerY,\n          innerRadius: 0,\n          outerRadius: reset ? resetRadius : distance,\n          startAngle: reset && animationOpts.animateRotate ? datasetStartAngle : startAngle,\n          endAngle: reset && animationOpts.animateRotate ? datasetStartAngle : endAngle,\n          label: helpers$1.valueAtIndexOrDefault(labels, index, labels[index])\n        }\n      });\n      arc.pivot();\n    },\n    countVisibleElements: function countVisibleElements() {\n      var dataset = this.getDataset();\n      var meta = this.getMeta();\n      var count = 0;\n      helpers$1.each(meta.data, function (element, index) {\n        if (!isNaN(dataset.data[index]) && !element.hidden) {\n          count++;\n        }\n      });\n      return count;\n    },\n\n    /**\n     * @protected\n     */\n    setHoverStyle: function setHoverStyle(arc) {\n      var model = arc._model;\n      var options = arc._options;\n      var getHoverColor = helpers$1.getHoverColor;\n      var valueOrDefault = helpers$1.valueOrDefault;\n      arc.$previousStyle = {\n        backgroundColor: model.backgroundColor,\n        borderColor: model.borderColor,\n        borderWidth: model.borderWidth\n      };\n      model.backgroundColor = valueOrDefault(options.hoverBackgroundColor, getHoverColor(options.backgroundColor));\n      model.borderColor = valueOrDefault(options.hoverBorderColor, getHoverColor(options.borderColor));\n      model.borderWidth = valueOrDefault(options.hoverBorderWidth, options.borderWidth);\n    },\n\n    /**\n     * @private\n     */\n    _computeAngle: function _computeAngle(index) {\n      var me = this;\n      var count = this.getMeta().count;\n      var dataset = me.getDataset();\n      var meta = me.getMeta();\n\n      if (isNaN(dataset.data[index]) || meta.data[index].hidden) {\n        return 0;\n      } // Scriptable options\n\n\n      var context = {\n        chart: me.chart,\n        dataIndex: index,\n        dataset: dataset,\n        datasetIndex: me.index\n      };\n      return resolve$3([me.chart.options.elements.arc.angle, 2 * Math.PI / count], context, index);\n    }\n  });\n\n  core_defaults._set('pie', helpers$1.clone(core_defaults.doughnut));\n\n  core_defaults._set('pie', {\n    cutoutPercentage: 0\n  }); // Pie charts are Doughnut chart with different defaults\n\n\n  var controller_pie = controller_doughnut;\n  var valueOrDefault$7 = helpers$1.valueOrDefault;\n\n  core_defaults._set('radar', {\n    spanGaps: false,\n    scale: {\n      type: 'radialLinear'\n    },\n    elements: {\n      line: {\n        fill: 'start',\n        tension: 0 // no bezier in radar\n\n      }\n    }\n  });\n\n  var controller_radar = core_datasetController.extend({\n    datasetElementType: elements.Line,\n    dataElementType: elements.Point,\n    linkScales: helpers$1.noop,\n\n    /**\n     * @private\n     */\n    _datasetElementOptions: ['backgroundColor', 'borderWidth', 'borderColor', 'borderCapStyle', 'borderDash', 'borderDashOffset', 'borderJoinStyle', 'fill'],\n\n    /**\n     * @private\n     */\n    _dataElementOptions: {\n      backgroundColor: 'pointBackgroundColor',\n      borderColor: 'pointBorderColor',\n      borderWidth: 'pointBorderWidth',\n      hitRadius: 'pointHitRadius',\n      hoverBackgroundColor: 'pointHoverBackgroundColor',\n      hoverBorderColor: 'pointHoverBorderColor',\n      hoverBorderWidth: 'pointHoverBorderWidth',\n      hoverRadius: 'pointHoverRadius',\n      pointStyle: 'pointStyle',\n      radius: 'pointRadius',\n      rotation: 'pointRotation'\n    },\n\n    /**\n     * @private\n     */\n    _getIndexScaleId: function _getIndexScaleId() {\n      return this.chart.scale.id;\n    },\n\n    /**\n     * @private\n     */\n    _getValueScaleId: function _getValueScaleId() {\n      return this.chart.scale.id;\n    },\n    update: function update(reset) {\n      var me = this;\n      var meta = me.getMeta();\n      var line = meta.dataset;\n      var points = meta.data || [];\n      var scale = me.chart.scale;\n      var config = me._config;\n      var i, ilen; // Compatibility: If the properties are defined with only the old name, use those values\n\n      if (config.tension !== undefined && config.lineTension === undefined) {\n        config.lineTension = config.tension;\n      } // Utility\n\n\n      line._scale = scale;\n      line._datasetIndex = me.index; // Data\n\n      line._children = points;\n      line._loop = true; // Model\n\n      line._model = me._resolveDatasetElementOptions(line);\n      line.pivot(); // Update Points\n\n      for (i = 0, ilen = points.length; i < ilen; ++i) {\n        me.updateElement(points[i], i, reset);\n      } // Update bezier control points\n\n\n      me.updateBezierControlPoints(); // Now pivot the point for animation\n\n      for (i = 0, ilen = points.length; i < ilen; ++i) {\n        points[i].pivot();\n      }\n    },\n    updateElement: function updateElement(point, index, reset) {\n      var me = this;\n      var custom = point.custom || {};\n      var dataset = me.getDataset();\n      var scale = me.chart.scale;\n      var pointPosition = scale.getPointPositionForValue(index, dataset.data[index]);\n\n      var options = me._resolveDataElementOptions(point, index);\n\n      var lineModel = me.getMeta().dataset._model;\n\n      var x = reset ? scale.xCenter : pointPosition.x;\n      var y = reset ? scale.yCenter : pointPosition.y; // Utility\n\n      point._scale = scale;\n      point._options = options;\n      point._datasetIndex = me.index;\n      point._index = index; // Desired view properties\n\n      point._model = {\n        x: x,\n        // value not used in dataset scale, but we want a consistent API between scales\n        y: y,\n        skip: custom.skip || isNaN(x) || isNaN(y),\n        // Appearance\n        radius: options.radius,\n        pointStyle: options.pointStyle,\n        rotation: options.rotation,\n        backgroundColor: options.backgroundColor,\n        borderColor: options.borderColor,\n        borderWidth: options.borderWidth,\n        tension: valueOrDefault$7(custom.tension, lineModel ? lineModel.tension : 0),\n        // Tooltip\n        hitRadius: options.hitRadius\n      };\n    },\n\n    /**\n     * @private\n     */\n    _resolveDatasetElementOptions: function _resolveDatasetElementOptions() {\n      var me = this;\n      var config = me._config;\n      var options = me.chart.options;\n\n      var values = core_datasetController.prototype._resolveDatasetElementOptions.apply(me, arguments);\n\n      values.spanGaps = valueOrDefault$7(config.spanGaps, options.spanGaps);\n      values.tension = valueOrDefault$7(config.lineTension, options.elements.line.tension);\n      return values;\n    },\n    updateBezierControlPoints: function updateBezierControlPoints() {\n      var me = this;\n      var meta = me.getMeta();\n      var area = me.chart.chartArea;\n      var points = meta.data || [];\n      var i, ilen, model, controlPoints; // Only consider points that are drawn in case the spanGaps option is used\n\n      if (meta.dataset._model.spanGaps) {\n        points = points.filter(function (pt) {\n          return !pt._model.skip;\n        });\n      }\n\n      function capControlPoint(pt, min, max) {\n        return Math.max(Math.min(pt, max), min);\n      }\n\n      for (i = 0, ilen = points.length; i < ilen; ++i) {\n        model = points[i]._model;\n        controlPoints = helpers$1.splineCurve(helpers$1.previousItem(points, i, true)._model, model, helpers$1.nextItem(points, i, true)._model, model.tension); // Prevent the bezier going outside of the bounds of the graph\n\n        model.controlPointPreviousX = capControlPoint(controlPoints.previous.x, area.left, area.right);\n        model.controlPointPreviousY = capControlPoint(controlPoints.previous.y, area.top, area.bottom);\n        model.controlPointNextX = capControlPoint(controlPoints.next.x, area.left, area.right);\n        model.controlPointNextY = capControlPoint(controlPoints.next.y, area.top, area.bottom);\n      }\n    },\n    setHoverStyle: function setHoverStyle(point) {\n      var model = point._model;\n      var options = point._options;\n      var getHoverColor = helpers$1.getHoverColor;\n      point.$previousStyle = {\n        backgroundColor: model.backgroundColor,\n        borderColor: model.borderColor,\n        borderWidth: model.borderWidth,\n        radius: model.radius\n      };\n      model.backgroundColor = valueOrDefault$7(options.hoverBackgroundColor, getHoverColor(options.backgroundColor));\n      model.borderColor = valueOrDefault$7(options.hoverBorderColor, getHoverColor(options.borderColor));\n      model.borderWidth = valueOrDefault$7(options.hoverBorderWidth, options.borderWidth);\n      model.radius = valueOrDefault$7(options.hoverRadius, options.radius);\n    }\n  });\n\n  core_defaults._set('scatter', {\n    hover: {\n      mode: 'single'\n    },\n    scales: {\n      xAxes: [{\n        id: 'x-axis-1',\n        // need an ID so datasets can reference the scale\n        type: 'linear',\n        // scatter should not use a category axis\n        position: 'bottom'\n      }],\n      yAxes: [{\n        id: 'y-axis-1',\n        type: 'linear',\n        position: 'left'\n      }]\n    },\n    tooltips: {\n      callbacks: {\n        title: function title() {\n          return ''; // doesn't make sense for scatter since data are formatted as a point\n        },\n        label: function label(item) {\n          return '(' + item.xLabel + ', ' + item.yLabel + ')';\n        }\n      }\n    }\n  });\n\n  core_defaults._set('global', {\n    datasets: {\n      scatter: {\n        showLine: false\n      }\n    }\n  }); // Scatter charts use line controllers\n\n\n  var controller_scatter = controller_line; // NOTE export a map in which the key represents the controller type, not\n  // the class, and so must be CamelCase in order to be correctly retrieved\n  // by the controller in core.controller.js (`controllers[meta.type]`).\n\n  var controllers = {\n    bar: controller_bar,\n    bubble: controller_bubble,\n    doughnut: controller_doughnut,\n    horizontalBar: controller_horizontalBar,\n    line: controller_line,\n    polarArea: controller_polarArea,\n    pie: controller_pie,\n    radar: controller_radar,\n    scatter: controller_scatter\n  };\n  /**\n   * Helper function to get relative position for an event\n   * @param {Event|IEvent} event - The event to get the position for\n   * @param {Chart} chart - The chart\n   * @returns {object} the event position\n   */\n\n  function getRelativePosition(e, chart) {\n    if (e[\"native\"]) {\n      return {\n        x: e.x,\n        y: e.y\n      };\n    }\n\n    return helpers$1.getRelativePosition(e, chart);\n  }\n  /**\n   * Helper function to traverse all of the visible elements in the chart\n   * @param {Chart} chart - the chart\n   * @param {function} handler - the callback to execute for each visible item\n   */\n\n\n  function parseVisibleItems(chart, handler) {\n    var metasets = chart._getSortedVisibleDatasetMetas();\n\n    var metadata, i, j, ilen, jlen, element;\n\n    for (i = 0, ilen = metasets.length; i < ilen; ++i) {\n      metadata = metasets[i].data;\n\n      for (j = 0, jlen = metadata.length; j < jlen; ++j) {\n        element = metadata[j];\n\n        if (!element._view.skip) {\n          handler(element);\n        }\n      }\n    }\n  }\n  /**\n   * Helper function to get the items that intersect the event position\n   * @param {ChartElement[]} items - elements to filter\n   * @param {object} position - the point to be nearest to\n   * @return {ChartElement[]} the nearest items\n   */\n\n\n  function getIntersectItems(chart, position) {\n    var elements = [];\n    parseVisibleItems(chart, function (element) {\n      if (element.inRange(position.x, position.y)) {\n        elements.push(element);\n      }\n    });\n    return elements;\n  }\n  /**\n   * Helper function to get the items nearest to the event position considering all visible items in teh chart\n   * @param {Chart} chart - the chart to look at elements from\n   * @param {object} position - the point to be nearest to\n   * @param {boolean} intersect - if true, only consider items that intersect the position\n   * @param {function} distanceMetric - function to provide the distance between points\n   * @return {ChartElement[]} the nearest items\n   */\n\n\n  function getNearestItems(chart, position, intersect, distanceMetric) {\n    var minDistance = Number.POSITIVE_INFINITY;\n    var nearestItems = [];\n    parseVisibleItems(chart, function (element) {\n      if (intersect && !element.inRange(position.x, position.y)) {\n        return;\n      }\n\n      var center = element.getCenterPoint();\n      var distance = distanceMetric(position, center);\n\n      if (distance < minDistance) {\n        nearestItems = [element];\n        minDistance = distance;\n      } else if (distance === minDistance) {\n        // Can have multiple items at the same distance in which case we sort by size\n        nearestItems.push(element);\n      }\n    });\n    return nearestItems;\n  }\n  /**\n   * Get a distance metric function for two points based on the\n   * axis mode setting\n   * @param {string} axis - the axis mode. x|y|xy\n   */\n\n\n  function getDistanceMetricForAxis(axis) {\n    var useX = axis.indexOf('x') !== -1;\n    var useY = axis.indexOf('y') !== -1;\n    return function (pt1, pt2) {\n      var deltaX = useX ? Math.abs(pt1.x - pt2.x) : 0;\n      var deltaY = useY ? Math.abs(pt1.y - pt2.y) : 0;\n      return Math.sqrt(Math.pow(deltaX, 2) + Math.pow(deltaY, 2));\n    };\n  }\n\n  function indexMode(chart, e, options) {\n    var position = getRelativePosition(e, chart); // Default axis for index mode is 'x' to match old behaviour\n\n    options.axis = options.axis || 'x';\n    var distanceMetric = getDistanceMetricForAxis(options.axis);\n    var items = options.intersect ? getIntersectItems(chart, position) : getNearestItems(chart, position, false, distanceMetric);\n    var elements = [];\n\n    if (!items.length) {\n      return [];\n    }\n\n    chart._getSortedVisibleDatasetMetas().forEach(function (meta) {\n      var element = meta.data[items[0]._index]; // don't count items that are skipped (null data)\n\n      if (element && !element._view.skip) {\n        elements.push(element);\n      }\n    });\n\n    return elements;\n  }\n  /**\n   * @interface IInteractionOptions\n   */\n\n  /**\n   * If true, only consider items that intersect the point\n   * @name IInterfaceOptions#boolean\n   * @type Boolean\n   */\n\n  /**\n   * Contains interaction related functions\n   * @namespace Chart.Interaction\n   */\n\n\n  var core_interaction = {\n    // Helper function for different modes\n    modes: {\n      single: function single(chart, e) {\n        var position = getRelativePosition(e, chart);\n        var elements = [];\n        parseVisibleItems(chart, function (element) {\n          if (element.inRange(position.x, position.y)) {\n            elements.push(element);\n            return elements;\n          }\n        });\n        return elements.slice(0, 1);\n      },\n\n      /**\n       * @function Chart.Interaction.modes.label\n       * @deprecated since version 2.4.0\n       * @todo remove at version 3\n       * @private\n       */\n      label: indexMode,\n\n      /**\n       * Returns items at the same index. If the options.intersect parameter is true, we only return items if we intersect something\n       * If the options.intersect mode is false, we find the nearest item and return the items at the same index as that item\n       * @function Chart.Interaction.modes.index\n       * @since v2.4.0\n       * @param {Chart} chart - the chart we are returning items from\n       * @param {Event} e - the event we are find things at\n       * @param {IInteractionOptions} options - options to use during interaction\n       * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\n       */\n      index: indexMode,\n\n      /**\n       * Returns items in the same dataset. If the options.intersect parameter is true, we only return items if we intersect something\n       * If the options.intersect is false, we find the nearest item and return the items in that dataset\n       * @function Chart.Interaction.modes.dataset\n       * @param {Chart} chart - the chart we are returning items from\n       * @param {Event} e - the event we are find things at\n       * @param {IInteractionOptions} options - options to use during interaction\n       * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\n       */\n      dataset: function dataset(chart, e, options) {\n        var position = getRelativePosition(e, chart);\n        options.axis = options.axis || 'xy';\n        var distanceMetric = getDistanceMetricForAxis(options.axis);\n        var items = options.intersect ? getIntersectItems(chart, position) : getNearestItems(chart, position, false, distanceMetric);\n\n        if (items.length > 0) {\n          items = chart.getDatasetMeta(items[0]._datasetIndex).data;\n        }\n\n        return items;\n      },\n\n      /**\n       * @function Chart.Interaction.modes.x-axis\n       * @deprecated since version 2.4.0. Use index mode and intersect == true\n       * @todo remove at version 3\n       * @private\n       */\n      'x-axis': function xAxis(chart, e) {\n        return indexMode(chart, e, {\n          intersect: false\n        });\n      },\n\n      /**\n       * Point mode returns all elements that hit test based on the event position\n       * of the event\n       * @function Chart.Interaction.modes.intersect\n       * @param {Chart} chart - the chart we are returning items from\n       * @param {Event} e - the event we are find things at\n       * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\n       */\n      point: function point(chart, e) {\n        var position = getRelativePosition(e, chart);\n        return getIntersectItems(chart, position);\n      },\n\n      /**\n       * nearest mode returns the element closest to the point\n       * @function Chart.Interaction.modes.intersect\n       * @param {Chart} chart - the chart we are returning items from\n       * @param {Event} e - the event we are find things at\n       * @param {IInteractionOptions} options - options to use\n       * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\n       */\n      nearest: function nearest(chart, e, options) {\n        var position = getRelativePosition(e, chart);\n        options.axis = options.axis || 'xy';\n        var distanceMetric = getDistanceMetricForAxis(options.axis);\n        return getNearestItems(chart, position, options.intersect, distanceMetric);\n      },\n\n      /**\n       * x mode returns the elements that hit-test at the current x coordinate\n       * @function Chart.Interaction.modes.x\n       * @param {Chart} chart - the chart we are returning items from\n       * @param {Event} e - the event we are find things at\n       * @param {IInteractionOptions} options - options to use\n       * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\n       */\n      x: function x(chart, e, options) {\n        var position = getRelativePosition(e, chart);\n        var items = [];\n        var intersectsItem = false;\n        parseVisibleItems(chart, function (element) {\n          if (element.inXRange(position.x)) {\n            items.push(element);\n          }\n\n          if (element.inRange(position.x, position.y)) {\n            intersectsItem = true;\n          }\n        }); // If we want to trigger on an intersect and we don't have any items\n        // that intersect the position, return nothing\n\n        if (options.intersect && !intersectsItem) {\n          items = [];\n        }\n\n        return items;\n      },\n\n      /**\n       * y mode returns the elements that hit-test at the current y coordinate\n       * @function Chart.Interaction.modes.y\n       * @param {Chart} chart - the chart we are returning items from\n       * @param {Event} e - the event we are find things at\n       * @param {IInteractionOptions} options - options to use\n       * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\n       */\n      y: function y(chart, e, options) {\n        var position = getRelativePosition(e, chart);\n        var items = [];\n        var intersectsItem = false;\n        parseVisibleItems(chart, function (element) {\n          if (element.inYRange(position.y)) {\n            items.push(element);\n          }\n\n          if (element.inRange(position.x, position.y)) {\n            intersectsItem = true;\n          }\n        }); // If we want to trigger on an intersect and we don't have any items\n        // that intersect the position, return nothing\n\n        if (options.intersect && !intersectsItem) {\n          items = [];\n        }\n\n        return items;\n      }\n    }\n  };\n  var extend = helpers$1.extend;\n\n  function filterByPosition(array, position) {\n    return helpers$1.where(array, function (v) {\n      return v.pos === position;\n    });\n  }\n\n  function sortByWeight(array, reverse) {\n    return array.sort(function (a, b) {\n      var v0 = reverse ? b : a;\n      var v1 = reverse ? a : b;\n      return v0.weight === v1.weight ? v0.index - v1.index : v0.weight - v1.weight;\n    });\n  }\n\n  function wrapBoxes(boxes) {\n    var layoutBoxes = [];\n    var i, ilen, box;\n\n    for (i = 0, ilen = (boxes || []).length; i < ilen; ++i) {\n      box = boxes[i];\n      layoutBoxes.push({\n        index: i,\n        box: box,\n        pos: box.position,\n        horizontal: box.isHorizontal(),\n        weight: box.weight\n      });\n    }\n\n    return layoutBoxes;\n  }\n\n  function setLayoutDims(layouts, params) {\n    var i, ilen, layout;\n\n    for (i = 0, ilen = layouts.length; i < ilen; ++i) {\n      layout = layouts[i]; // store width used instead of chartArea.w in fitBoxes\n\n      layout.width = layout.horizontal ? layout.box.fullWidth && params.availableWidth : params.vBoxMaxWidth; // store height used instead of chartArea.h in fitBoxes\n\n      layout.height = layout.horizontal && params.hBoxMaxHeight;\n    }\n  }\n\n  function buildLayoutBoxes(boxes) {\n    var layoutBoxes = wrapBoxes(boxes);\n    var left = sortByWeight(filterByPosition(layoutBoxes, 'left'), true);\n    var right = sortByWeight(filterByPosition(layoutBoxes, 'right'));\n    var top = sortByWeight(filterByPosition(layoutBoxes, 'top'), true);\n    var bottom = sortByWeight(filterByPosition(layoutBoxes, 'bottom'));\n    return {\n      leftAndTop: left.concat(top),\n      rightAndBottom: right.concat(bottom),\n      chartArea: filterByPosition(layoutBoxes, 'chartArea'),\n      vertical: left.concat(right),\n      horizontal: top.concat(bottom)\n    };\n  }\n\n  function getCombinedMax(maxPadding, chartArea, a, b) {\n    return Math.max(maxPadding[a], chartArea[a]) + Math.max(maxPadding[b], chartArea[b]);\n  }\n\n  function updateDims(chartArea, params, layout) {\n    var box = layout.box;\n    var maxPadding = chartArea.maxPadding;\n    var newWidth, newHeight;\n\n    if (layout.size) {\n      // this layout was already counted for, lets first reduce old size\n      chartArea[layout.pos] -= layout.size;\n    }\n\n    layout.size = layout.horizontal ? box.height : box.width;\n    chartArea[layout.pos] += layout.size;\n\n    if (box.getPadding) {\n      var boxPadding = box.getPadding();\n      maxPadding.top = Math.max(maxPadding.top, boxPadding.top);\n      maxPadding.left = Math.max(maxPadding.left, boxPadding.left);\n      maxPadding.bottom = Math.max(maxPadding.bottom, boxPadding.bottom);\n      maxPadding.right = Math.max(maxPadding.right, boxPadding.right);\n    }\n\n    newWidth = params.outerWidth - getCombinedMax(maxPadding, chartArea, 'left', 'right');\n    newHeight = params.outerHeight - getCombinedMax(maxPadding, chartArea, 'top', 'bottom');\n\n    if (newWidth !== chartArea.w || newHeight !== chartArea.h) {\n      chartArea.w = newWidth;\n      chartArea.h = newHeight; // return true if chart area changed in layout's direction\n\n      return layout.horizontal ? newWidth !== chartArea.w : newHeight !== chartArea.h;\n    }\n  }\n\n  function handleMaxPadding(chartArea) {\n    var maxPadding = chartArea.maxPadding;\n\n    function updatePos(pos) {\n      var change = Math.max(maxPadding[pos] - chartArea[pos], 0);\n      chartArea[pos] += change;\n      return change;\n    }\n\n    chartArea.y += updatePos('top');\n    chartArea.x += updatePos('left');\n    updatePos('right');\n    updatePos('bottom');\n  }\n\n  function getMargins(horizontal, chartArea) {\n    var maxPadding = chartArea.maxPadding;\n\n    function marginForPositions(positions) {\n      var margin = {\n        left: 0,\n        top: 0,\n        right: 0,\n        bottom: 0\n      };\n      positions.forEach(function (pos) {\n        margin[pos] = Math.max(chartArea[pos], maxPadding[pos]);\n      });\n      return margin;\n    }\n\n    return horizontal ? marginForPositions(['left', 'right']) : marginForPositions(['top', 'bottom']);\n  }\n\n  function fitBoxes(boxes, chartArea, params) {\n    var refitBoxes = [];\n    var i, ilen, layout, box, refit, changed;\n\n    for (i = 0, ilen = boxes.length; i < ilen; ++i) {\n      layout = boxes[i];\n      box = layout.box;\n      box.update(layout.width || chartArea.w, layout.height || chartArea.h, getMargins(layout.horizontal, chartArea));\n\n      if (updateDims(chartArea, params, layout)) {\n        changed = true;\n\n        if (refitBoxes.length) {\n          // Dimensions changed and there were non full width boxes before this\n          // -> we have to refit those\n          refit = true;\n        }\n      }\n\n      if (!box.fullWidth) {\n        // fullWidth boxes don't need to be re-fitted in any case\n        refitBoxes.push(layout);\n      }\n    }\n\n    return refit ? fitBoxes(refitBoxes, chartArea, params) || changed : changed;\n  }\n\n  function placeBoxes(boxes, chartArea, params) {\n    var userPadding = params.padding;\n    var x = chartArea.x;\n    var y = chartArea.y;\n    var i, ilen, layout, box;\n\n    for (i = 0, ilen = boxes.length; i < ilen; ++i) {\n      layout = boxes[i];\n      box = layout.box;\n\n      if (layout.horizontal) {\n        box.left = box.fullWidth ? userPadding.left : chartArea.left;\n        box.right = box.fullWidth ? params.outerWidth - userPadding.right : chartArea.left + chartArea.w;\n        box.top = y;\n        box.bottom = y + box.height;\n        box.width = box.right - box.left;\n        y = box.bottom;\n      } else {\n        box.left = x;\n        box.right = x + box.width;\n        box.top = chartArea.top;\n        box.bottom = chartArea.top + chartArea.h;\n        box.height = box.bottom - box.top;\n        x = box.right;\n      }\n    }\n\n    chartArea.x = x;\n    chartArea.y = y;\n  }\n\n  core_defaults._set('global', {\n    layout: {\n      padding: {\n        top: 0,\n        right: 0,\n        bottom: 0,\n        left: 0\n      }\n    }\n  });\n  /**\n   * @interface ILayoutItem\n   * @prop {string} position - The position of the item in the chart layout. Possible values are\n   * 'left', 'top', 'right', 'bottom', and 'chartArea'\n   * @prop {number} weight - The weight used to sort the item. Higher weights are further away from the chart area\n   * @prop {boolean} fullWidth - if true, and the item is horizontal, then push vertical boxes down\n   * @prop {function} isHorizontal - returns true if the layout item is horizontal (ie. top or bottom)\n   * @prop {function} update - Takes two parameters: width and height. Returns size of item\n   * @prop {function} getPadding -  Returns an object with padding on the edges\n   * @prop {number} width - Width of item. Must be valid after update()\n   * @prop {number} height - Height of item. Must be valid after update()\n   * @prop {number} left - Left edge of the item. Set by layout system and cannot be used in update\n   * @prop {number} top - Top edge of the item. Set by layout system and cannot be used in update\n   * @prop {number} right - Right edge of the item. Set by layout system and cannot be used in update\n   * @prop {number} bottom - Bottom edge of the item. Set by layout system and cannot be used in update\n   */\n  // The layout service is very self explanatory.  It's responsible for the layout within a chart.\n  // Scales, Legends and Plugins all rely on the layout service and can easily register to be placed anywhere they need\n  // It is this service's responsibility of carrying out that layout.\n\n\n  var core_layouts = {\n    defaults: {},\n\n    /**\n     * Register a box to a chart.\n     * A box is simply a reference to an object that requires layout. eg. Scales, Legend, Title.\n     * @param {Chart} chart - the chart to use\n     * @param {ILayoutItem} item - the item to add to be layed out\n     */\n    addBox: function addBox(chart, item) {\n      if (!chart.boxes) {\n        chart.boxes = [];\n      } // initialize item with default values\n\n\n      item.fullWidth = item.fullWidth || false;\n      item.position = item.position || 'top';\n      item.weight = item.weight || 0;\n\n      item._layers = item._layers || function () {\n        return [{\n          z: 0,\n          draw: function draw() {\n            item.draw.apply(item, arguments);\n          }\n        }];\n      };\n\n      chart.boxes.push(item);\n    },\n\n    /**\n     * Remove a layoutItem from a chart\n     * @param {Chart} chart - the chart to remove the box from\n     * @param {ILayoutItem} layoutItem - the item to remove from the layout\n     */\n    removeBox: function removeBox(chart, layoutItem) {\n      var index = chart.boxes ? chart.boxes.indexOf(layoutItem) : -1;\n\n      if (index !== -1) {\n        chart.boxes.splice(index, 1);\n      }\n    },\n\n    /**\n     * Sets (or updates) options on the given `item`.\n     * @param {Chart} chart - the chart in which the item lives (or will be added to)\n     * @param {ILayoutItem} item - the item to configure with the given options\n     * @param {object} options - the new item options.\n     */\n    configure: function configure(chart, item, options) {\n      var props = ['fullWidth', 'position', 'weight'];\n      var ilen = props.length;\n      var i = 0;\n      var prop;\n\n      for (; i < ilen; ++i) {\n        prop = props[i];\n\n        if (options.hasOwnProperty(prop)) {\n          item[prop] = options[prop];\n        }\n      }\n    },\n\n    /**\n     * Fits boxes of the given chart into the given size by having each box measure itself\n     * then running a fitting algorithm\n     * @param {Chart} chart - the chart\n     * @param {number} width - the width to fit into\n     * @param {number} height - the height to fit into\n     */\n    update: function update(chart, width, height) {\n      if (!chart) {\n        return;\n      }\n\n      var layoutOptions = chart.options.layout || {};\n      var padding = helpers$1.options.toPadding(layoutOptions.padding);\n      var availableWidth = width - padding.width;\n      var availableHeight = height - padding.height;\n      var boxes = buildLayoutBoxes(chart.boxes);\n      var verticalBoxes = boxes.vertical;\n      var horizontalBoxes = boxes.horizontal; // Essentially we now have any number of boxes on each of the 4 sides.\n      // Our canvas looks like the following.\n      // The areas L1 and L2 are the left axes. R1 is the right axis, T1 is the top axis and\n      // B1 is the bottom axis\n      // There are also 4 quadrant-like locations (left to right instead of clockwise) reserved for chart overlays\n      // These locations are single-box locations only, when trying to register a chartArea location that is already taken,\n      // an error will be thrown.\n      //\n      // |----------------------------------------------------|\n      // |                  T1 (Full Width)                   |\n      // |----------------------------------------------------|\n      // |    |    |                 T2                  |    |\n      // |    |----|-------------------------------------|----|\n      // |    |    | C1 |                           | C2 |    |\n      // |    |    |----|                           |----|    |\n      // |    |    |                                     |    |\n      // | L1 | L2 |           ChartArea (C0)            | R1 |\n      // |    |    |                                     |    |\n      // |    |    |----|                           |----|    |\n      // |    |    | C3 |                           | C4 |    |\n      // |    |----|-------------------------------------|----|\n      // |    |    |                 B1                  |    |\n      // |----------------------------------------------------|\n      // |                  B2 (Full Width)                   |\n      // |----------------------------------------------------|\n      //\n\n      var params = Object.freeze({\n        outerWidth: width,\n        outerHeight: height,\n        padding: padding,\n        availableWidth: availableWidth,\n        vBoxMaxWidth: availableWidth / 2 / verticalBoxes.length,\n        hBoxMaxHeight: availableHeight / 2\n      });\n      var chartArea = extend({\n        maxPadding: extend({}, padding),\n        w: availableWidth,\n        h: availableHeight,\n        x: padding.left,\n        y: padding.top\n      }, padding);\n      setLayoutDims(verticalBoxes.concat(horizontalBoxes), params); // First fit vertical boxes\n\n      fitBoxes(verticalBoxes, chartArea, params); // Then fit horizontal boxes\n\n      if (fitBoxes(horizontalBoxes, chartArea, params)) {\n        // if the area changed, re-fit vertical boxes\n        fitBoxes(verticalBoxes, chartArea, params);\n      }\n\n      handleMaxPadding(chartArea); // Finally place the boxes to correct coordinates\n\n      placeBoxes(boxes.leftAndTop, chartArea, params); // Move to opposite side of chart\n\n      chartArea.x += chartArea.w;\n      chartArea.y += chartArea.h;\n      placeBoxes(boxes.rightAndBottom, chartArea, params);\n      chart.chartArea = {\n        left: chartArea.left,\n        top: chartArea.top,\n        right: chartArea.left + chartArea.w,\n        bottom: chartArea.top + chartArea.h\n      }; // Finally update boxes in chartArea (radial scale for example)\n\n      helpers$1.each(boxes.chartArea, function (layout) {\n        var box = layout.box;\n        extend(box, chart.chartArea);\n        box.update(chartArea.w, chartArea.h);\n      });\n    }\n  };\n  /**\n   * Platform fallback implementation (minimal).\n   * @see https://github.com/chartjs/Chart.js/pull/4591#issuecomment-319575939\n   */\n\n  var platform_basic = {\n    acquireContext: function acquireContext(item) {\n      if (item && item.canvas) {\n        // Support for any object associated to a canvas (including a context2d)\n        item = item.canvas;\n      }\n\n      return item && item.getContext('2d') || null;\n    }\n  };\n  var platform_dom = \"/*\\n * DOM element rendering detection\\n * https://davidwalsh.name/detect-node-insertion\\n */\\n@keyframes chartjs-render-animation {\\n\\tfrom { opacity: 0.99; }\\n\\tto { opacity: 1; }\\n}\\n\\n.chartjs-render-monitor {\\n\\tanimation: chartjs-render-animation 0.001s;\\n}\\n\\n/*\\n * DOM element resizing detection\\n * https://github.com/marcj/css-element-queries\\n */\\n.chartjs-size-monitor,\\n.chartjs-size-monitor-expand,\\n.chartjs-size-monitor-shrink {\\n\\tposition: absolute;\\n\\tdirection: ltr;\\n\\tleft: 0;\\n\\ttop: 0;\\n\\tright: 0;\\n\\tbottom: 0;\\n\\toverflow: hidden;\\n\\tpointer-events: none;\\n\\tvisibility: hidden;\\n\\tz-index: -1;\\n}\\n\\n.chartjs-size-monitor-expand > div {\\n\\tposition: absolute;\\n\\twidth: 1000000px;\\n\\theight: 1000000px;\\n\\tleft: 0;\\n\\ttop: 0;\\n}\\n\\n.chartjs-size-monitor-shrink > div {\\n\\tposition: absolute;\\n\\twidth: 200%;\\n\\theight: 200%;\\n\\tleft: 0;\\n\\ttop: 0;\\n}\\n\";\n  var platform_dom$1 =\n  /*#__PURE__*/\n  Object.freeze({\n    __proto__: null,\n    'default': platform_dom\n  });\n  var stylesheet = getCjsExportFromNamespace(platform_dom$1);\n  var EXPANDO_KEY = '$chartjs';\n  var CSS_PREFIX = 'chartjs-';\n  var CSS_SIZE_MONITOR = CSS_PREFIX + 'size-monitor';\n  var CSS_RENDER_MONITOR = CSS_PREFIX + 'render-monitor';\n  var CSS_RENDER_ANIMATION = CSS_PREFIX + 'render-animation';\n  var ANIMATION_START_EVENTS = ['animationstart', 'webkitAnimationStart'];\n  /**\n   * DOM event types -> Chart.js event types.\n   * Note: only events with different types are mapped.\n   * @see https://developer.mozilla.org/en-US/docs/Web/Events\n   */\n\n  var EVENT_TYPES = {\n    touchstart: 'mousedown',\n    touchmove: 'mousemove',\n    touchend: 'mouseup',\n    pointerenter: 'mouseenter',\n    pointerdown: 'mousedown',\n    pointermove: 'mousemove',\n    pointerup: 'mouseup',\n    pointerleave: 'mouseout',\n    pointerout: 'mouseout'\n  };\n  /**\n   * The \"used\" size is the final value of a dimension property after all calculations have\n   * been performed. This method uses the computed style of `element` but returns undefined\n   * if the computed style is not expressed in pixels. That can happen in some cases where\n   * `element` has a size relative to its parent and this last one is not yet displayed,\n   * for example because of `display: none` on a parent node.\n   * @see https://developer.mozilla.org/en-US/docs/Web/CSS/used_value\n   * @returns {number} Size in pixels or undefined if unknown.\n   */\n\n  function readUsedSize(element, property) {\n    var value = helpers$1.getStyle(element, property);\n    var matches = value && value.match(/^(\\d+)(\\.\\d+)?px$/);\n    return matches ? Number(matches[1]) : undefined;\n  }\n  /**\n   * Initializes the canvas style and render size without modifying the canvas display size,\n   * since responsiveness is handled by the controller.resize() method. The config is used\n   * to determine the aspect ratio to apply in case no explicit height has been specified.\n   */\n\n\n  function initCanvas(canvas, config) {\n    var style = canvas.style; // NOTE(SB) canvas.getAttribute('width') !== canvas.width: in the first case it\n    // returns null or '' if no explicit value has been set to the canvas attribute.\n\n    var renderHeight = canvas.getAttribute('height');\n    var renderWidth = canvas.getAttribute('width'); // Chart.js modifies some canvas values that we want to restore on destroy\n\n    canvas[EXPANDO_KEY] = {\n      initial: {\n        height: renderHeight,\n        width: renderWidth,\n        style: {\n          display: style.display,\n          height: style.height,\n          width: style.width\n        }\n      }\n    }; // Force canvas to display as block to avoid extra space caused by inline\n    // elements, which would interfere with the responsive resize process.\n    // https://github.com/chartjs/Chart.js/issues/2538\n\n    style.display = style.display || 'block';\n\n    if (renderWidth === null || renderWidth === '') {\n      var displayWidth = readUsedSize(canvas, 'width');\n\n      if (displayWidth !== undefined) {\n        canvas.width = displayWidth;\n      }\n    }\n\n    if (renderHeight === null || renderHeight === '') {\n      if (canvas.style.height === '') {\n        // If no explicit render height and style height, let's apply the aspect ratio,\n        // which one can be specified by the user but also by charts as default option\n        // (i.e. options.aspectRatio). If not specified, use canvas aspect ratio of 2.\n        canvas.height = canvas.width / (config.options.aspectRatio || 2);\n      } else {\n        var displayHeight = readUsedSize(canvas, 'height');\n\n        if (displayWidth !== undefined) {\n          canvas.height = displayHeight;\n        }\n      }\n    }\n\n    return canvas;\n  }\n  /**\n   * Detects support for options object argument in addEventListener.\n   * https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#Safely_detecting_option_support\n   * @private\n   */\n\n\n  var supportsEventListenerOptions = function () {\n    var supports = false;\n\n    try {\n      var options = Object.defineProperty({}, 'passive', {\n        // eslint-disable-next-line getter-return\n        get: function get() {\n          supports = true;\n        }\n      });\n      window.addEventListener('e', null, options);\n    } catch (e) {// continue regardless of error\n    }\n\n    return supports;\n  }(); // Default passive to true as expected by Chrome for 'touchstart' and 'touchend' events.\n  // https://github.com/chartjs/Chart.js/issues/4287\n\n\n  var eventListenerOptions = supportsEventListenerOptions ? {\n    passive: true\n  } : false;\n\n  function addListener(node, type, listener) {\n    node.addEventListener(type, listener, eventListenerOptions);\n  }\n\n  function removeListener(node, type, listener) {\n    node.removeEventListener(type, listener, eventListenerOptions);\n  }\n\n  function createEvent(type, chart, x, y, nativeEvent) {\n    return {\n      type: type,\n      chart: chart,\n      \"native\": nativeEvent || null,\n      x: x !== undefined ? x : null,\n      y: y !== undefined ? y : null\n    };\n  }\n\n  function fromNativeEvent(event, chart) {\n    var type = EVENT_TYPES[event.type] || event.type;\n    var pos = helpers$1.getRelativePosition(event, chart);\n    return createEvent(type, chart, pos.x, pos.y, event);\n  }\n\n  function throttled(fn, thisArg) {\n    var ticking = false;\n    var args = [];\n    return function () {\n      args = Array.prototype.slice.call(arguments);\n      thisArg = thisArg || this;\n\n      if (!ticking) {\n        ticking = true;\n        helpers$1.requestAnimFrame.call(window, function () {\n          ticking = false;\n          fn.apply(thisArg, args);\n        });\n      }\n    };\n  }\n\n  function createDiv(cls) {\n    var el = document.createElement('div');\n    el.className = cls || '';\n    return el;\n  } // Implementation based on https://github.com/marcj/css-element-queries\n\n\n  function createResizer(handler) {\n    var maxSize = 1000000; // NOTE(SB) Don't use innerHTML because it could be considered unsafe.\n    // https://github.com/chartjs/Chart.js/issues/5902\n\n    var resizer = createDiv(CSS_SIZE_MONITOR);\n    var expand = createDiv(CSS_SIZE_MONITOR + '-expand');\n    var shrink = createDiv(CSS_SIZE_MONITOR + '-shrink');\n    expand.appendChild(createDiv());\n    shrink.appendChild(createDiv());\n    resizer.appendChild(expand);\n    resizer.appendChild(shrink);\n\n    resizer._reset = function () {\n      expand.scrollLeft = maxSize;\n      expand.scrollTop = maxSize;\n      shrink.scrollLeft = maxSize;\n      shrink.scrollTop = maxSize;\n    };\n\n    var onScroll = function onScroll() {\n      resizer._reset();\n\n      handler();\n    };\n\n    addListener(expand, 'scroll', onScroll.bind(expand, 'expand'));\n    addListener(shrink, 'scroll', onScroll.bind(shrink, 'shrink'));\n    return resizer;\n  } // https://davidwalsh.name/detect-node-insertion\n\n\n  function watchForRender(node, handler) {\n    var expando = node[EXPANDO_KEY] || (node[EXPANDO_KEY] = {});\n\n    var proxy = expando.renderProxy = function (e) {\n      if (e.animationName === CSS_RENDER_ANIMATION) {\n        handler();\n      }\n    };\n\n    helpers$1.each(ANIMATION_START_EVENTS, function (type) {\n      addListener(node, type, proxy);\n    }); // #4737: Chrome might skip the CSS animation when the CSS_RENDER_MONITOR class\n    // is removed then added back immediately (same animation frame?). Accessing the\n    // `offsetParent` property will force a reflow and re-evaluate the CSS animation.\n    // https://gist.github.com/paulirish/5d52fb081b3570c81e3a#box-metrics\n    // https://github.com/chartjs/Chart.js/issues/4737\n\n    expando.reflow = !!node.offsetParent;\n    node.classList.add(CSS_RENDER_MONITOR);\n  }\n\n  function unwatchForRender(node) {\n    var expando = node[EXPANDO_KEY] || {};\n    var proxy = expando.renderProxy;\n\n    if (proxy) {\n      helpers$1.each(ANIMATION_START_EVENTS, function (type) {\n        removeListener(node, type, proxy);\n      });\n      delete expando.renderProxy;\n    }\n\n    node.classList.remove(CSS_RENDER_MONITOR);\n  }\n\n  function addResizeListener(node, listener, chart) {\n    var expando = node[EXPANDO_KEY] || (node[EXPANDO_KEY] = {}); // Let's keep track of this added resizer and thus avoid DOM query when removing it.\n\n    var resizer = expando.resizer = createResizer(throttled(function () {\n      if (expando.resizer) {\n        var container = chart.options.maintainAspectRatio && node.parentNode;\n        var w = container ? container.clientWidth : 0;\n        listener(createEvent('resize', chart));\n\n        if (container && container.clientWidth < w && chart.canvas) {\n          // If the container size shrank during chart resize, let's assume\n          // scrollbar appeared. So we resize again with the scrollbar visible -\n          // effectively making chart smaller and the scrollbar hidden again.\n          // Because we are inside `throttled`, and currently `ticking`, scroll\n          // events are ignored during this whole 2 resize process.\n          // If we assumed wrong and something else happened, we are resizing\n          // twice in a frame (potential performance issue)\n          listener(createEvent('resize', chart));\n        }\n      }\n    })); // The resizer needs to be attached to the node parent, so we first need to be\n    // sure that `node` is attached to the DOM before injecting the resizer element.\n\n    watchForRender(node, function () {\n      if (expando.resizer) {\n        var container = node.parentNode;\n\n        if (container && container !== resizer.parentNode) {\n          container.insertBefore(resizer, container.firstChild);\n        } // The container size might have changed, let's reset the resizer state.\n\n\n        resizer._reset();\n      }\n    });\n  }\n\n  function removeResizeListener(node) {\n    var expando = node[EXPANDO_KEY] || {};\n    var resizer = expando.resizer;\n    delete expando.resizer;\n    unwatchForRender(node);\n\n    if (resizer && resizer.parentNode) {\n      resizer.parentNode.removeChild(resizer);\n    }\n  }\n  /**\n   * Injects CSS styles inline if the styles are not already present.\n   * @param {HTMLDocument|ShadowRoot} rootNode - the node to contain the <style>.\n   * @param {string} css - the CSS to be injected.\n   */\n\n\n  function injectCSS(rootNode, css) {\n    // https://stackoverflow.com/q/3922139\n    var expando = rootNode[EXPANDO_KEY] || (rootNode[EXPANDO_KEY] = {});\n\n    if (!expando.containsStyles) {\n      expando.containsStyles = true;\n      css = '/* Chart.js */\\n' + css;\n      var style = document.createElement('style');\n      style.setAttribute('type', 'text/css');\n      style.appendChild(document.createTextNode(css));\n      rootNode.appendChild(style);\n    }\n  }\n\n  var platform_dom$2 = {\n    /**\n     * When `true`, prevents the automatic injection of the stylesheet required to\n     * correctly detect when the chart is added to the DOM and then resized. This\n     * switch has been added to allow external stylesheet (`dist/Chart(.min)?.js`)\n     * to be manually imported to make this library compatible with any CSP.\n     * See https://github.com/chartjs/Chart.js/issues/5208\n     */\n    disableCSSInjection: false,\n\n    /**\n     * This property holds whether this platform is enabled for the current environment.\n     * Currently used by platform.js to select the proper implementation.\n     * @private\n     */\n    _enabled: typeof window !== 'undefined' && typeof document !== 'undefined',\n\n    /**\n     * Initializes resources that depend on platform options.\n     * @param {HTMLCanvasElement} canvas - The Canvas element.\n     * @private\n     */\n    _ensureLoaded: function _ensureLoaded(canvas) {\n      if (!this.disableCSSInjection) {\n        // If the canvas is in a shadow DOM, then the styles must also be inserted\n        // into the same shadow DOM.\n        // https://github.com/chartjs/Chart.js/issues/5763\n        var root = canvas.getRootNode ? canvas.getRootNode() : document;\n        var targetNode = root.host ? root : document.head;\n        injectCSS(targetNode, stylesheet);\n      }\n    },\n    acquireContext: function acquireContext(item, config) {\n      if (typeof item === 'string') {\n        item = document.getElementById(item);\n      } else if (item.length) {\n        // Support for array based queries (such as jQuery)\n        item = item[0];\n      }\n\n      if (item && item.canvas) {\n        // Support for any object associated to a canvas (including a context2d)\n        item = item.canvas;\n      } // To prevent canvas fingerprinting, some add-ons undefine the getContext\n      // method, for example: https://github.com/kkapsner/CanvasBlocker\n      // https://github.com/chartjs/Chart.js/issues/2807\n\n\n      var context = item && item.getContext && item.getContext('2d'); // `instanceof HTMLCanvasElement/CanvasRenderingContext2D` fails when the item is\n      // inside an iframe or when running in a protected environment. We could guess the\n      // types from their toString() value but let's keep things flexible and assume it's\n      // a sufficient condition if the item has a context2D which has item as `canvas`.\n      // https://github.com/chartjs/Chart.js/issues/3887\n      // https://github.com/chartjs/Chart.js/issues/4102\n      // https://github.com/chartjs/Chart.js/issues/4152\n\n      if (context && context.canvas === item) {\n        // Load platform resources on first chart creation, to make it possible to\n        // import the library before setting platform options.\n        this._ensureLoaded(item);\n\n        initCanvas(item, config);\n        return context;\n      }\n\n      return null;\n    },\n    releaseContext: function releaseContext(context) {\n      var canvas = context.canvas;\n\n      if (!canvas[EXPANDO_KEY]) {\n        return;\n      }\n\n      var initial = canvas[EXPANDO_KEY].initial;\n      ['height', 'width'].forEach(function (prop) {\n        var value = initial[prop];\n\n        if (helpers$1.isNullOrUndef(value)) {\n          canvas.removeAttribute(prop);\n        } else {\n          canvas.setAttribute(prop, value);\n        }\n      });\n      helpers$1.each(initial.style || {}, function (value, key) {\n        canvas.style[key] = value;\n      }); // The canvas render size might have been changed (and thus the state stack discarded),\n      // we can't use save() and restore() to restore the initial state. So make sure that at\n      // least the canvas context is reset to the default state by setting the canvas width.\n      // https://www.w3.org/TR/2011/WD-html5-20110525/the-canvas-element.html\n      // eslint-disable-next-line no-self-assign\n\n      canvas.width = canvas.width;\n      delete canvas[EXPANDO_KEY];\n    },\n    addEventListener: function addEventListener(chart, type, listener) {\n      var canvas = chart.canvas;\n\n      if (type === 'resize') {\n        // Note: the resize event is not supported on all browsers.\n        addResizeListener(canvas, listener, chart);\n        return;\n      }\n\n      var expando = listener[EXPANDO_KEY] || (listener[EXPANDO_KEY] = {});\n      var proxies = expando.proxies || (expando.proxies = {});\n\n      var proxy = proxies[chart.id + '_' + type] = function (event) {\n        listener(fromNativeEvent(event, chart));\n      };\n\n      addListener(canvas, type, proxy);\n    },\n    removeEventListener: function removeEventListener(chart, type, listener) {\n      var canvas = chart.canvas;\n\n      if (type === 'resize') {\n        // Note: the resize event is not supported on all browsers.\n        removeResizeListener(canvas);\n        return;\n      }\n\n      var expando = listener[EXPANDO_KEY] || {};\n      var proxies = expando.proxies || {};\n      var proxy = proxies[chart.id + '_' + type];\n\n      if (!proxy) {\n        return;\n      }\n\n      removeListener(canvas, type, proxy);\n    }\n  }; // DEPRECATIONS\n\n  /**\n   * Provided for backward compatibility, use EventTarget.addEventListener instead.\n   * EventTarget.addEventListener compatibility: Chrome, Opera 7, Safari, FF1.5+, IE9+\n   * @see https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener\n   * @function Chart.helpers.addEvent\n   * @deprecated since version 2.7.0\n   * @todo remove at version 3\n   * @private\n   */\n\n  helpers$1.addEvent = addListener;\n  /**\n   * Provided for backward compatibility, use EventTarget.removeEventListener instead.\n   * EventTarget.removeEventListener compatibility: Chrome, Opera 7, Safari, FF1.5+, IE9+\n   * @see https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/removeEventListener\n   * @function Chart.helpers.removeEvent\n   * @deprecated since version 2.7.0\n   * @todo remove at version 3\n   * @private\n   */\n\n  helpers$1.removeEvent = removeListener; // @TODO Make possible to select another platform at build time.\n\n  var implementation = platform_dom$2._enabled ? platform_dom$2 : platform_basic;\n  /**\n   * @namespace Chart.platform\n   * @see https://chartjs.gitbooks.io/proposals/content/Platform.html\n   * @since 2.4.0\n   */\n\n  var platform = helpers$1.extend({\n    /**\n     * @since 2.7.0\n     */\n    initialize: function initialize() {},\n\n    /**\n     * Called at chart construction time, returns a context2d instance implementing\n     * the [W3C Canvas 2D Context API standard]{@link https://www.w3.org/TR/2dcontext/}.\n     * @param {*} item - The native item from which to acquire context (platform specific)\n     * @param {object} options - The chart options\n     * @returns {CanvasRenderingContext2D} context2d instance\n     */\n    acquireContext: function acquireContext() {},\n\n    /**\n     * Called at chart destruction time, releases any resources associated to the context\n     * previously returned by the acquireContext() method.\n     * @param {CanvasRenderingContext2D} context - The context2d instance\n     * @returns {boolean} true if the method succeeded, else false\n     */\n    releaseContext: function releaseContext() {},\n\n    /**\n     * Registers the specified listener on the given chart.\n     * @param {Chart} chart - Chart from which to listen for event\n     * @param {string} type - The ({@link IEvent}) type to listen for\n     * @param {function} listener - Receives a notification (an object that implements\n     * the {@link IEvent} interface) when an event of the specified type occurs.\n     */\n    addEventListener: function addEventListener() {},\n\n    /**\n     * Removes the specified listener previously registered with addEventListener.\n     * @param {Chart} chart - Chart from which to remove the listener\n     * @param {string} type - The ({@link IEvent}) type to remove\n     * @param {function} listener - The listener function to remove from the event target.\n     */\n    removeEventListener: function removeEventListener() {}\n  }, implementation);\n\n  core_defaults._set('global', {\n    plugins: {}\n  });\n  /**\n   * The plugin service singleton\n   * @namespace Chart.plugins\n   * @since 2.1.0\n   */\n\n\n  var core_plugins = {\n    /**\n     * Globally registered plugins.\n     * @private\n     */\n    _plugins: [],\n\n    /**\n     * This identifier is used to invalidate the descriptors cache attached to each chart\n     * when a global plugin is registered or unregistered. In this case, the cache ID is\n     * incremented and descriptors are regenerated during following API calls.\n     * @private\n     */\n    _cacheId: 0,\n\n    /**\n     * Registers the given plugin(s) if not already registered.\n     * @param {IPlugin[]|IPlugin} plugins plugin instance(s).\n     */\n    register: function register(plugins) {\n      var p = this._plugins;\n      [].concat(plugins).forEach(function (plugin) {\n        if (p.indexOf(plugin) === -1) {\n          p.push(plugin);\n        }\n      });\n      this._cacheId++;\n    },\n\n    /**\n     * Unregisters the given plugin(s) only if registered.\n     * @param {IPlugin[]|IPlugin} plugins plugin instance(s).\n     */\n    unregister: function unregister(plugins) {\n      var p = this._plugins;\n      [].concat(plugins).forEach(function (plugin) {\n        var idx = p.indexOf(plugin);\n\n        if (idx !== -1) {\n          p.splice(idx, 1);\n        }\n      });\n      this._cacheId++;\n    },\n\n    /**\n     * Remove all registered plugins.\n     * @since 2.1.5\n     */\n    clear: function clear() {\n      this._plugins = [];\n      this._cacheId++;\n    },\n\n    /**\n     * Returns the number of registered plugins?\n     * @returns {number}\n     * @since 2.1.5\n     */\n    count: function count() {\n      return this._plugins.length;\n    },\n\n    /**\n     * Returns all registered plugin instances.\n     * @returns {IPlugin[]} array of plugin objects.\n     * @since 2.1.5\n     */\n    getAll: function getAll() {\n      return this._plugins;\n    },\n\n    /**\n     * Calls enabled plugins for `chart` on the specified hook and with the given args.\n     * This method immediately returns as soon as a plugin explicitly returns false. The\n     * returned value can be used, for instance, to interrupt the current action.\n     * @param {Chart} chart - The chart instance for which plugins should be called.\n     * @param {string} hook - The name of the plugin method to call (e.g. 'beforeUpdate').\n     * @param {Array} [args] - Extra arguments to apply to the hook call.\n     * @returns {boolean} false if any of the plugins return false, else returns true.\n     */\n    notify: function notify(chart, hook, args) {\n      var descriptors = this.descriptors(chart);\n      var ilen = descriptors.length;\n      var i, descriptor, plugin, params, method;\n\n      for (i = 0; i < ilen; ++i) {\n        descriptor = descriptors[i];\n        plugin = descriptor.plugin;\n        method = plugin[hook];\n\n        if (typeof method === 'function') {\n          params = [chart].concat(args || []);\n          params.push(descriptor.options);\n\n          if (method.apply(plugin, params) === false) {\n            return false;\n          }\n        }\n      }\n\n      return true;\n    },\n\n    /**\n     * Returns descriptors of enabled plugins for the given chart.\n     * @returns {object[]} [{ plugin, options }]\n     * @private\n     */\n    descriptors: function descriptors(chart) {\n      var cache = chart.$plugins || (chart.$plugins = {});\n\n      if (cache.id === this._cacheId) {\n        return cache.descriptors;\n      }\n\n      var plugins = [];\n      var descriptors = [];\n      var config = chart && chart.config || {};\n      var options = config.options && config.options.plugins || {};\n\n      this._plugins.concat(config.plugins || []).forEach(function (plugin) {\n        var idx = plugins.indexOf(plugin);\n\n        if (idx !== -1) {\n          return;\n        }\n\n        var id = plugin.id;\n        var opts = options[id];\n\n        if (opts === false) {\n          return;\n        }\n\n        if (opts === true) {\n          opts = helpers$1.clone(core_defaults.global.plugins[id]);\n        }\n\n        plugins.push(plugin);\n        descriptors.push({\n          plugin: plugin,\n          options: opts || {}\n        });\n      });\n\n      cache.descriptors = descriptors;\n      cache.id = this._cacheId;\n      return descriptors;\n    },\n\n    /**\n     * Invalidates cache for the given chart: descriptors hold a reference on plugin option,\n     * but in some cases, this reference can be changed by the user when updating options.\n     * https://github.com/chartjs/Chart.js/issues/5111#issuecomment-355934167\n     * @private\n     */\n    _invalidate: function _invalidate(chart) {\n      delete chart.$plugins;\n    }\n  };\n  var core_scaleService = {\n    // Scale registration object. Extensions can register new scale types (such as log or DB scales) and then\n    // use the new chart options to grab the correct scale\n    constructors: {},\n    // Use a registration function so that we can move to an ES6 map when we no longer need to support\n    // old browsers\n    // Scale config defaults\n    defaults: {},\n    registerScaleType: function registerScaleType(type, scaleConstructor, scaleDefaults) {\n      this.constructors[type] = scaleConstructor;\n      this.defaults[type] = helpers$1.clone(scaleDefaults);\n    },\n    getScaleConstructor: function getScaleConstructor(type) {\n      return this.constructors.hasOwnProperty(type) ? this.constructors[type] : undefined;\n    },\n    getScaleDefaults: function getScaleDefaults(type) {\n      // Return the scale defaults merged with the global settings so that we always use the latest ones\n      return this.defaults.hasOwnProperty(type) ? helpers$1.merge({}, [core_defaults.scale, this.defaults[type]]) : {};\n    },\n    updateScaleDefaults: function updateScaleDefaults(type, additions) {\n      var me = this;\n\n      if (me.defaults.hasOwnProperty(type)) {\n        me.defaults[type] = helpers$1.extend(me.defaults[type], additions);\n      }\n    },\n    addScalesToLayout: function addScalesToLayout(chart) {\n      // Adds each scale to the chart.boxes array to be sized accordingly\n      helpers$1.each(chart.scales, function (scale) {\n        // Set ILayoutItem parameters for backwards compatibility\n        scale.fullWidth = scale.options.fullWidth;\n        scale.position = scale.options.position;\n        scale.weight = scale.options.weight;\n        core_layouts.addBox(chart, scale);\n      });\n    }\n  };\n  var valueOrDefault$8 = helpers$1.valueOrDefault;\n  var getRtlHelper = helpers$1.rtl.getRtlAdapter;\n\n  core_defaults._set('global', {\n    tooltips: {\n      enabled: true,\n      custom: null,\n      mode: 'nearest',\n      position: 'average',\n      intersect: true,\n      backgroundColor: 'rgba(0,0,0,0.8)',\n      titleFontStyle: 'bold',\n      titleSpacing: 2,\n      titleMarginBottom: 6,\n      titleFontColor: '#fff',\n      titleAlign: 'left',\n      bodySpacing: 2,\n      bodyFontColor: '#fff',\n      bodyAlign: 'left',\n      footerFontStyle: 'bold',\n      footerSpacing: 2,\n      footerMarginTop: 6,\n      footerFontColor: '#fff',\n      footerAlign: 'left',\n      yPadding: 6,\n      xPadding: 6,\n      caretPadding: 2,\n      caretSize: 5,\n      cornerRadius: 6,\n      multiKeyBackground: '#fff',\n      displayColors: true,\n      borderColor: 'rgba(0,0,0,0)',\n      borderWidth: 0,\n      callbacks: {\n        // Args are: (tooltipItems, data)\n        beforeTitle: helpers$1.noop,\n        title: function title(tooltipItems, data) {\n          var title = '';\n          var labels = data.labels;\n          var labelCount = labels ? labels.length : 0;\n\n          if (tooltipItems.length > 0) {\n            var item = tooltipItems[0];\n\n            if (item.label) {\n              title = item.label;\n            } else if (item.xLabel) {\n              title = item.xLabel;\n            } else if (labelCount > 0 && item.index < labelCount) {\n              title = labels[item.index];\n            }\n          }\n\n          return title;\n        },\n        afterTitle: helpers$1.noop,\n        // Args are: (tooltipItems, data)\n        beforeBody: helpers$1.noop,\n        // Args are: (tooltipItem, data)\n        beforeLabel: helpers$1.noop,\n        label: function label(tooltipItem, data) {\n          var label = data.datasets[tooltipItem.datasetIndex].label || '';\n\n          if (label) {\n            label += ': ';\n          }\n\n          if (!helpers$1.isNullOrUndef(tooltipItem.value)) {\n            label += tooltipItem.value;\n          } else {\n            label += tooltipItem.yLabel;\n          }\n\n          return label;\n        },\n        labelColor: function labelColor(tooltipItem, chart) {\n          var meta = chart.getDatasetMeta(tooltipItem.datasetIndex);\n          var activeElement = meta.data[tooltipItem.index];\n          var view = activeElement._view;\n          return {\n            borderColor: view.borderColor,\n            backgroundColor: view.backgroundColor\n          };\n        },\n        labelTextColor: function labelTextColor() {\n          return this._options.bodyFontColor;\n        },\n        afterLabel: helpers$1.noop,\n        // Args are: (tooltipItems, data)\n        afterBody: helpers$1.noop,\n        // Args are: (tooltipItems, data)\n        beforeFooter: helpers$1.noop,\n        footer: helpers$1.noop,\n        afterFooter: helpers$1.noop\n      }\n    }\n  });\n\n  var positioners = {\n    /**\n     * Average mode places the tooltip at the average position of the elements shown\n     * @function Chart.Tooltip.positioners.average\n     * @param elements {ChartElement[]} the elements being displayed in the tooltip\n     * @returns {object} tooltip position\n     */\n    average: function average(elements) {\n      if (!elements.length) {\n        return false;\n      }\n\n      var i, len;\n      var x = 0;\n      var y = 0;\n      var count = 0;\n\n      for (i = 0, len = elements.length; i < len; ++i) {\n        var el = elements[i];\n\n        if (el && el.hasValue()) {\n          var pos = el.tooltipPosition();\n          x += pos.x;\n          y += pos.y;\n          ++count;\n        }\n      }\n\n      return {\n        x: x / count,\n        y: y / count\n      };\n    },\n\n    /**\n     * Gets the tooltip position nearest of the item nearest to the event position\n     * @function Chart.Tooltip.positioners.nearest\n     * @param elements {Chart.Element[]} the tooltip elements\n     * @param eventPosition {object} the position of the event in canvas coordinates\n     * @returns {object} the tooltip position\n     */\n    nearest: function nearest(elements, eventPosition) {\n      var x = eventPosition.x;\n      var y = eventPosition.y;\n      var minDistance = Number.POSITIVE_INFINITY;\n      var i, len, nearestElement;\n\n      for (i = 0, len = elements.length; i < len; ++i) {\n        var el = elements[i];\n\n        if (el && el.hasValue()) {\n          var center = el.getCenterPoint();\n          var d = helpers$1.distanceBetweenPoints(eventPosition, center);\n\n          if (d < minDistance) {\n            minDistance = d;\n            nearestElement = el;\n          }\n        }\n      }\n\n      if (nearestElement) {\n        var tp = nearestElement.tooltipPosition();\n        x = tp.x;\n        y = tp.y;\n      }\n\n      return {\n        x: x,\n        y: y\n      };\n    }\n  }; // Helper to push or concat based on if the 2nd parameter is an array or not\n\n  function pushOrConcat(base, toPush) {\n    if (toPush) {\n      if (helpers$1.isArray(toPush)) {\n        // base = base.concat(toPush);\n        Array.prototype.push.apply(base, toPush);\n      } else {\n        base.push(toPush);\n      }\n    }\n\n    return base;\n  }\n  /**\n   * Returns array of strings split by newline\n   * @param {string} value - The value to split by newline.\n   * @returns {string[]} value if newline present - Returned from String split() method\n   * @function\n   */\n\n\n  function splitNewlines(str) {\n    if ((typeof str === 'string' || str instanceof String) && str.indexOf('\\n') > -1) {\n      return str.split('\\n');\n    }\n\n    return str;\n  }\n  /**\n   * Private helper to create a tooltip item model\n   * @param element - the chart element (point, arc, bar) to create the tooltip item for\n   * @return new tooltip item\n   */\n\n\n  function createTooltipItem(element) {\n    var xScale = element._xScale;\n    var yScale = element._yScale || element._scale; // handle radar || polarArea charts\n\n    var index = element._index;\n    var datasetIndex = element._datasetIndex;\n\n    var controller = element._chart.getDatasetMeta(datasetIndex).controller;\n\n    var indexScale = controller._getIndexScale();\n\n    var valueScale = controller._getValueScale();\n\n    return {\n      xLabel: xScale ? xScale.getLabelForIndex(index, datasetIndex) : '',\n      yLabel: yScale ? yScale.getLabelForIndex(index, datasetIndex) : '',\n      label: indexScale ? '' + indexScale.getLabelForIndex(index, datasetIndex) : '',\n      value: valueScale ? '' + valueScale.getLabelForIndex(index, datasetIndex) : '',\n      index: index,\n      datasetIndex: datasetIndex,\n      x: element._model.x,\n      y: element._model.y\n    };\n  }\n  /**\n   * Helper to get the reset model for the tooltip\n   * @param tooltipOpts {object} the tooltip options\n   */\n\n\n  function getBaseModel(tooltipOpts) {\n    var globalDefaults = core_defaults.global;\n    return {\n      // Positioning\n      xPadding: tooltipOpts.xPadding,\n      yPadding: tooltipOpts.yPadding,\n      xAlign: tooltipOpts.xAlign,\n      yAlign: tooltipOpts.yAlign,\n      // Drawing direction and text direction\n      rtl: tooltipOpts.rtl,\n      textDirection: tooltipOpts.textDirection,\n      // Body\n      bodyFontColor: tooltipOpts.bodyFontColor,\n      _bodyFontFamily: valueOrDefault$8(tooltipOpts.bodyFontFamily, globalDefaults.defaultFontFamily),\n      _bodyFontStyle: valueOrDefault$8(tooltipOpts.bodyFontStyle, globalDefaults.defaultFontStyle),\n      _bodyAlign: tooltipOpts.bodyAlign,\n      bodyFontSize: valueOrDefault$8(tooltipOpts.bodyFontSize, globalDefaults.defaultFontSize),\n      bodySpacing: tooltipOpts.bodySpacing,\n      // Title\n      titleFontColor: tooltipOpts.titleFontColor,\n      _titleFontFamily: valueOrDefault$8(tooltipOpts.titleFontFamily, globalDefaults.defaultFontFamily),\n      _titleFontStyle: valueOrDefault$8(tooltipOpts.titleFontStyle, globalDefaults.defaultFontStyle),\n      titleFontSize: valueOrDefault$8(tooltipOpts.titleFontSize, globalDefaults.defaultFontSize),\n      _titleAlign: tooltipOpts.titleAlign,\n      titleSpacing: tooltipOpts.titleSpacing,\n      titleMarginBottom: tooltipOpts.titleMarginBottom,\n      // Footer\n      footerFontColor: tooltipOpts.footerFontColor,\n      _footerFontFamily: valueOrDefault$8(tooltipOpts.footerFontFamily, globalDefaults.defaultFontFamily),\n      _footerFontStyle: valueOrDefault$8(tooltipOpts.footerFontStyle, globalDefaults.defaultFontStyle),\n      footerFontSize: valueOrDefault$8(tooltipOpts.footerFontSize, globalDefaults.defaultFontSize),\n      _footerAlign: tooltipOpts.footerAlign,\n      footerSpacing: tooltipOpts.footerSpacing,\n      footerMarginTop: tooltipOpts.footerMarginTop,\n      // Appearance\n      caretSize: tooltipOpts.caretSize,\n      cornerRadius: tooltipOpts.cornerRadius,\n      backgroundColor: tooltipOpts.backgroundColor,\n      opacity: 0,\n      legendColorBackground: tooltipOpts.multiKeyBackground,\n      displayColors: tooltipOpts.displayColors,\n      borderColor: tooltipOpts.borderColor,\n      borderWidth: tooltipOpts.borderWidth\n    };\n  }\n  /**\n   * Get the size of the tooltip\n   */\n\n\n  function getTooltipSize(tooltip, model) {\n    var ctx = tooltip._chart.ctx;\n    var height = model.yPadding * 2; // Tooltip Padding\n\n    var width = 0; // Count of all lines in the body\n\n    var body = model.body;\n    var combinedBodyLength = body.reduce(function (count, bodyItem) {\n      return count + bodyItem.before.length + bodyItem.lines.length + bodyItem.after.length;\n    }, 0);\n    combinedBodyLength += model.beforeBody.length + model.afterBody.length;\n    var titleLineCount = model.title.length;\n    var footerLineCount = model.footer.length;\n    var titleFontSize = model.titleFontSize;\n    var bodyFontSize = model.bodyFontSize;\n    var footerFontSize = model.footerFontSize;\n    height += titleLineCount * titleFontSize; // Title Lines\n\n    height += titleLineCount ? (titleLineCount - 1) * model.titleSpacing : 0; // Title Line Spacing\n\n    height += titleLineCount ? model.titleMarginBottom : 0; // Title's bottom Margin\n\n    height += combinedBodyLength * bodyFontSize; // Body Lines\n\n    height += combinedBodyLength ? (combinedBodyLength - 1) * model.bodySpacing : 0; // Body Line Spacing\n\n    height += footerLineCount ? model.footerMarginTop : 0; // Footer Margin\n\n    height += footerLineCount * footerFontSize; // Footer Lines\n\n    height += footerLineCount ? (footerLineCount - 1) * model.footerSpacing : 0; // Footer Line Spacing\n    // Title width\n\n    var widthPadding = 0;\n\n    var maxLineWidth = function maxLineWidth(line) {\n      width = Math.max(width, ctx.measureText(line).width + widthPadding);\n    };\n\n    ctx.font = helpers$1.fontString(titleFontSize, model._titleFontStyle, model._titleFontFamily);\n    helpers$1.each(model.title, maxLineWidth); // Body width\n\n    ctx.font = helpers$1.fontString(bodyFontSize, model._bodyFontStyle, model._bodyFontFamily);\n    helpers$1.each(model.beforeBody.concat(model.afterBody), maxLineWidth); // Body lines may include some extra width due to the color box\n\n    widthPadding = model.displayColors ? bodyFontSize + 2 : 0;\n    helpers$1.each(body, function (bodyItem) {\n      helpers$1.each(bodyItem.before, maxLineWidth);\n      helpers$1.each(bodyItem.lines, maxLineWidth);\n      helpers$1.each(bodyItem.after, maxLineWidth);\n    }); // Reset back to 0\n\n    widthPadding = 0; // Footer width\n\n    ctx.font = helpers$1.fontString(footerFontSize, model._footerFontStyle, model._footerFontFamily);\n    helpers$1.each(model.footer, maxLineWidth); // Add padding\n\n    width += 2 * model.xPadding;\n    return {\n      width: width,\n      height: height\n    };\n  }\n  /**\n   * Helper to get the alignment of a tooltip given the size\n   */\n\n\n  function determineAlignment(tooltip, size) {\n    var model = tooltip._model;\n    var chart = tooltip._chart;\n    var chartArea = tooltip._chart.chartArea;\n    var xAlign = 'center';\n    var yAlign = 'center';\n\n    if (model.y < size.height) {\n      yAlign = 'top';\n    } else if (model.y > chart.height - size.height) {\n      yAlign = 'bottom';\n    }\n\n    var lf, rf; // functions to determine left, right alignment\n\n    var olf, orf; // functions to determine if left/right alignment causes tooltip to go outside chart\n\n    var yf; // function to get the y alignment if the tooltip goes outside of the left or right edges\n\n    var midX = (chartArea.left + chartArea.right) / 2;\n    var midY = (chartArea.top + chartArea.bottom) / 2;\n\n    if (yAlign === 'center') {\n      lf = function lf(x) {\n        return x <= midX;\n      };\n\n      rf = function rf(x) {\n        return x > midX;\n      };\n    } else {\n      lf = function lf(x) {\n        return x <= size.width / 2;\n      };\n\n      rf = function rf(x) {\n        return x >= chart.width - size.width / 2;\n      };\n    }\n\n    olf = function olf(x) {\n      return x + size.width + model.caretSize + model.caretPadding > chart.width;\n    };\n\n    orf = function orf(x) {\n      return x - size.width - model.caretSize - model.caretPadding < 0;\n    };\n\n    yf = function yf(y) {\n      return y <= midY ? 'top' : 'bottom';\n    };\n\n    if (lf(model.x)) {\n      xAlign = 'left'; // Is tooltip too wide and goes over the right side of the chart.?\n\n      if (olf(model.x)) {\n        xAlign = 'center';\n        yAlign = yf(model.y);\n      }\n    } else if (rf(model.x)) {\n      xAlign = 'right'; // Is tooltip too wide and goes outside left edge of canvas?\n\n      if (orf(model.x)) {\n        xAlign = 'center';\n        yAlign = yf(model.y);\n      }\n    }\n\n    var opts = tooltip._options;\n    return {\n      xAlign: opts.xAlign ? opts.xAlign : xAlign,\n      yAlign: opts.yAlign ? opts.yAlign : yAlign\n    };\n  }\n  /**\n   * Helper to get the location a tooltip needs to be placed at given the initial position (via the vm) and the size and alignment\n   */\n\n\n  function getBackgroundPoint(vm, size, alignment, chart) {\n    // Background Position\n    var x = vm.x;\n    var y = vm.y;\n    var caretSize = vm.caretSize;\n    var caretPadding = vm.caretPadding;\n    var cornerRadius = vm.cornerRadius;\n    var xAlign = alignment.xAlign;\n    var yAlign = alignment.yAlign;\n    var paddingAndSize = caretSize + caretPadding;\n    var radiusAndPadding = cornerRadius + caretPadding;\n\n    if (xAlign === 'right') {\n      x -= size.width;\n    } else if (xAlign === 'center') {\n      x -= size.width / 2;\n\n      if (x + size.width > chart.width) {\n        x = chart.width - size.width;\n      }\n\n      if (x < 0) {\n        x = 0;\n      }\n    }\n\n    if (yAlign === 'top') {\n      y += paddingAndSize;\n    } else if (yAlign === 'bottom') {\n      y -= size.height + paddingAndSize;\n    } else {\n      y -= size.height / 2;\n    }\n\n    if (yAlign === 'center') {\n      if (xAlign === 'left') {\n        x += paddingAndSize;\n      } else if (xAlign === 'right') {\n        x -= paddingAndSize;\n      }\n    } else if (xAlign === 'left') {\n      x -= radiusAndPadding;\n    } else if (xAlign === 'right') {\n      x += radiusAndPadding;\n    }\n\n    return {\n      x: x,\n      y: y\n    };\n  }\n\n  function getAlignedX(vm, align) {\n    return align === 'center' ? vm.x + vm.width / 2 : align === 'right' ? vm.x + vm.width - vm.xPadding : vm.x + vm.xPadding;\n  }\n  /**\n   * Helper to build before and after body lines\n   */\n\n\n  function getBeforeAfterBodyLines(callback) {\n    return pushOrConcat([], splitNewlines(callback));\n  }\n\n  var exports$4 = core_element.extend({\n    initialize: function initialize() {\n      this._model = getBaseModel(this._options);\n      this._lastActive = [];\n    },\n    // Get the title\n    // Args are: (tooltipItem, data)\n    getTitle: function getTitle() {\n      var me = this;\n      var opts = me._options;\n      var callbacks = opts.callbacks;\n      var beforeTitle = callbacks.beforeTitle.apply(me, arguments);\n      var title = callbacks.title.apply(me, arguments);\n      var afterTitle = callbacks.afterTitle.apply(me, arguments);\n      var lines = [];\n      lines = pushOrConcat(lines, splitNewlines(beforeTitle));\n      lines = pushOrConcat(lines, splitNewlines(title));\n      lines = pushOrConcat(lines, splitNewlines(afterTitle));\n      return lines;\n    },\n    // Args are: (tooltipItem, data)\n    getBeforeBody: function getBeforeBody() {\n      return getBeforeAfterBodyLines(this._options.callbacks.beforeBody.apply(this, arguments));\n    },\n    // Args are: (tooltipItem, data)\n    getBody: function getBody(tooltipItems, data) {\n      var me = this;\n      var callbacks = me._options.callbacks;\n      var bodyItems = [];\n      helpers$1.each(tooltipItems, function (tooltipItem) {\n        var bodyItem = {\n          before: [],\n          lines: [],\n          after: []\n        };\n        pushOrConcat(bodyItem.before, splitNewlines(callbacks.beforeLabel.call(me, tooltipItem, data)));\n        pushOrConcat(bodyItem.lines, callbacks.label.call(me, tooltipItem, data));\n        pushOrConcat(bodyItem.after, splitNewlines(callbacks.afterLabel.call(me, tooltipItem, data)));\n        bodyItems.push(bodyItem);\n      });\n      return bodyItems;\n    },\n    // Args are: (tooltipItem, data)\n    getAfterBody: function getAfterBody() {\n      return getBeforeAfterBodyLines(this._options.callbacks.afterBody.apply(this, arguments));\n    },\n    // Get the footer and beforeFooter and afterFooter lines\n    // Args are: (tooltipItem, data)\n    getFooter: function getFooter() {\n      var me = this;\n      var callbacks = me._options.callbacks;\n      var beforeFooter = callbacks.beforeFooter.apply(me, arguments);\n      var footer = callbacks.footer.apply(me, arguments);\n      var afterFooter = callbacks.afterFooter.apply(me, arguments);\n      var lines = [];\n      lines = pushOrConcat(lines, splitNewlines(beforeFooter));\n      lines = pushOrConcat(lines, splitNewlines(footer));\n      lines = pushOrConcat(lines, splitNewlines(afterFooter));\n      return lines;\n    },\n    update: function update(changed) {\n      var me = this;\n      var opts = me._options; // Need to regenerate the model because its faster than using extend and it is necessary due to the optimization in Chart.Element.transition\n      // that does _view = _model if ease === 1. This causes the 2nd tooltip update to set properties in both the view and model at the same time\n      // which breaks any animations.\n\n      var existingModel = me._model;\n      var model = me._model = getBaseModel(opts);\n      var active = me._active;\n      var data = me._data; // In the case where active.length === 0 we need to keep these at existing values for good animations\n\n      var alignment = {\n        xAlign: existingModel.xAlign,\n        yAlign: existingModel.yAlign\n      };\n      var backgroundPoint = {\n        x: existingModel.x,\n        y: existingModel.y\n      };\n      var tooltipSize = {\n        width: existingModel.width,\n        height: existingModel.height\n      };\n      var tooltipPosition = {\n        x: existingModel.caretX,\n        y: existingModel.caretY\n      };\n      var i, len;\n\n      if (active.length) {\n        model.opacity = 1;\n        var labelColors = [];\n        var labelTextColors = [];\n        tooltipPosition = positioners[opts.position].call(me, active, me._eventPosition);\n        var tooltipItems = [];\n\n        for (i = 0, len = active.length; i < len; ++i) {\n          tooltipItems.push(createTooltipItem(active[i]));\n        } // If the user provided a filter function, use it to modify the tooltip items\n\n\n        if (opts.filter) {\n          tooltipItems = tooltipItems.filter(function (a) {\n            return opts.filter(a, data);\n          });\n        } // If the user provided a sorting function, use it to modify the tooltip items\n\n\n        if (opts.itemSort) {\n          tooltipItems = tooltipItems.sort(function (a, b) {\n            return opts.itemSort(a, b, data);\n          });\n        } // Determine colors for boxes\n\n\n        helpers$1.each(tooltipItems, function (tooltipItem) {\n          labelColors.push(opts.callbacks.labelColor.call(me, tooltipItem, me._chart));\n          labelTextColors.push(opts.callbacks.labelTextColor.call(me, tooltipItem, me._chart));\n        }); // Build the Text Lines\n\n        model.title = me.getTitle(tooltipItems, data);\n        model.beforeBody = me.getBeforeBody(tooltipItems, data);\n        model.body = me.getBody(tooltipItems, data);\n        model.afterBody = me.getAfterBody(tooltipItems, data);\n        model.footer = me.getFooter(tooltipItems, data); // Initial positioning and colors\n\n        model.x = tooltipPosition.x;\n        model.y = tooltipPosition.y;\n        model.caretPadding = opts.caretPadding;\n        model.labelColors = labelColors;\n        model.labelTextColors = labelTextColors; // data points\n\n        model.dataPoints = tooltipItems; // We need to determine alignment of the tooltip\n\n        tooltipSize = getTooltipSize(this, model);\n        alignment = determineAlignment(this, tooltipSize); // Final Size and Position\n\n        backgroundPoint = getBackgroundPoint(model, tooltipSize, alignment, me._chart);\n      } else {\n        model.opacity = 0;\n      }\n\n      model.xAlign = alignment.xAlign;\n      model.yAlign = alignment.yAlign;\n      model.x = backgroundPoint.x;\n      model.y = backgroundPoint.y;\n      model.width = tooltipSize.width;\n      model.height = tooltipSize.height; // Point where the caret on the tooltip points to\n\n      model.caretX = tooltipPosition.x;\n      model.caretY = tooltipPosition.y;\n      me._model = model;\n\n      if (changed && opts.custom) {\n        opts.custom.call(me, model);\n      }\n\n      return me;\n    },\n    drawCaret: function drawCaret(tooltipPoint, size) {\n      var ctx = this._chart.ctx;\n      var vm = this._view;\n      var caretPosition = this.getCaretPosition(tooltipPoint, size, vm);\n      ctx.lineTo(caretPosition.x1, caretPosition.y1);\n      ctx.lineTo(caretPosition.x2, caretPosition.y2);\n      ctx.lineTo(caretPosition.x3, caretPosition.y3);\n    },\n    getCaretPosition: function getCaretPosition(tooltipPoint, size, vm) {\n      var x1, x2, x3, y1, y2, y3;\n      var caretSize = vm.caretSize;\n      var cornerRadius = vm.cornerRadius;\n      var xAlign = vm.xAlign;\n      var yAlign = vm.yAlign;\n      var ptX = tooltipPoint.x;\n      var ptY = tooltipPoint.y;\n      var width = size.width;\n      var height = size.height;\n\n      if (yAlign === 'center') {\n        y2 = ptY + height / 2;\n\n        if (xAlign === 'left') {\n          x1 = ptX;\n          x2 = x1 - caretSize;\n          x3 = x1;\n          y1 = y2 + caretSize;\n          y3 = y2 - caretSize;\n        } else {\n          x1 = ptX + width;\n          x2 = x1 + caretSize;\n          x3 = x1;\n          y1 = y2 - caretSize;\n          y3 = y2 + caretSize;\n        }\n      } else {\n        if (xAlign === 'left') {\n          x2 = ptX + cornerRadius + caretSize;\n          x1 = x2 - caretSize;\n          x3 = x2 + caretSize;\n        } else if (xAlign === 'right') {\n          x2 = ptX + width - cornerRadius - caretSize;\n          x1 = x2 - caretSize;\n          x3 = x2 + caretSize;\n        } else {\n          x2 = vm.caretX;\n          x1 = x2 - caretSize;\n          x3 = x2 + caretSize;\n        }\n\n        if (yAlign === 'top') {\n          y1 = ptY;\n          y2 = y1 - caretSize;\n          y3 = y1;\n        } else {\n          y1 = ptY + height;\n          y2 = y1 + caretSize;\n          y3 = y1; // invert drawing order\n\n          var tmp = x3;\n          x3 = x1;\n          x1 = tmp;\n        }\n      }\n\n      return {\n        x1: x1,\n        x2: x2,\n        x3: x3,\n        y1: y1,\n        y2: y2,\n        y3: y3\n      };\n    },\n    drawTitle: function drawTitle(pt, vm, ctx) {\n      var title = vm.title;\n      var length = title.length;\n      var titleFontSize, titleSpacing, i;\n\n      if (length) {\n        var rtlHelper = getRtlHelper(vm.rtl, vm.x, vm.width);\n        pt.x = getAlignedX(vm, vm._titleAlign);\n        ctx.textAlign = rtlHelper.textAlign(vm._titleAlign);\n        ctx.textBaseline = 'middle';\n        titleFontSize = vm.titleFontSize;\n        titleSpacing = vm.titleSpacing;\n        ctx.fillStyle = vm.titleFontColor;\n        ctx.font = helpers$1.fontString(titleFontSize, vm._titleFontStyle, vm._titleFontFamily);\n\n        for (i = 0; i < length; ++i) {\n          ctx.fillText(title[i], rtlHelper.x(pt.x), pt.y + titleFontSize / 2);\n          pt.y += titleFontSize + titleSpacing; // Line Height and spacing\n\n          if (i + 1 === length) {\n            pt.y += vm.titleMarginBottom - titleSpacing; // If Last, add margin, remove spacing\n          }\n        }\n      }\n    },\n    drawBody: function drawBody(pt, vm, ctx) {\n      var bodyFontSize = vm.bodyFontSize;\n      var bodySpacing = vm.bodySpacing;\n      var bodyAlign = vm._bodyAlign;\n      var body = vm.body;\n      var drawColorBoxes = vm.displayColors;\n      var xLinePadding = 0;\n      var colorX = drawColorBoxes ? getAlignedX(vm, 'left') : 0;\n      var rtlHelper = getRtlHelper(vm.rtl, vm.x, vm.width);\n\n      var fillLineOfText = function fillLineOfText(line) {\n        ctx.fillText(line, rtlHelper.x(pt.x + xLinePadding), pt.y + bodyFontSize / 2);\n        pt.y += bodyFontSize + bodySpacing;\n      };\n\n      var bodyItem, textColor, labelColors, lines, i, j, ilen, jlen;\n      var bodyAlignForCalculation = rtlHelper.textAlign(bodyAlign);\n      ctx.textAlign = bodyAlign;\n      ctx.textBaseline = 'middle';\n      ctx.font = helpers$1.fontString(bodyFontSize, vm._bodyFontStyle, vm._bodyFontFamily);\n      pt.x = getAlignedX(vm, bodyAlignForCalculation); // Before body lines\n\n      ctx.fillStyle = vm.bodyFontColor;\n      helpers$1.each(vm.beforeBody, fillLineOfText);\n      xLinePadding = drawColorBoxes && bodyAlignForCalculation !== 'right' ? bodyAlign === 'center' ? bodyFontSize / 2 + 1 : bodyFontSize + 2 : 0; // Draw body lines now\n\n      for (i = 0, ilen = body.length; i < ilen; ++i) {\n        bodyItem = body[i];\n        textColor = vm.labelTextColors[i];\n        labelColors = vm.labelColors[i];\n        ctx.fillStyle = textColor;\n        helpers$1.each(bodyItem.before, fillLineOfText);\n        lines = bodyItem.lines;\n\n        for (j = 0, jlen = lines.length; j < jlen; ++j) {\n          // Draw Legend-like boxes if needed\n          if (drawColorBoxes) {\n            var rtlColorX = rtlHelper.x(colorX); // Fill a white rect so that colours merge nicely if the opacity is < 1\n\n            ctx.fillStyle = vm.legendColorBackground;\n            ctx.fillRect(rtlHelper.leftForLtr(rtlColorX, bodyFontSize), pt.y, bodyFontSize, bodyFontSize); // Border\n\n            ctx.lineWidth = 1;\n            ctx.strokeStyle = labelColors.borderColor;\n            ctx.strokeRect(rtlHelper.leftForLtr(rtlColorX, bodyFontSize), pt.y, bodyFontSize, bodyFontSize); // Inner square\n\n            ctx.fillStyle = labelColors.backgroundColor;\n            ctx.fillRect(rtlHelper.leftForLtr(rtlHelper.xPlus(rtlColorX, 1), bodyFontSize - 2), pt.y + 1, bodyFontSize - 2, bodyFontSize - 2);\n            ctx.fillStyle = textColor;\n          }\n\n          fillLineOfText(lines[j]);\n        }\n\n        helpers$1.each(bodyItem.after, fillLineOfText);\n      } // Reset back to 0 for after body\n\n\n      xLinePadding = 0; // After body lines\n\n      helpers$1.each(vm.afterBody, fillLineOfText);\n      pt.y -= bodySpacing; // Remove last body spacing\n    },\n    drawFooter: function drawFooter(pt, vm, ctx) {\n      var footer = vm.footer;\n      var length = footer.length;\n      var footerFontSize, i;\n\n      if (length) {\n        var rtlHelper = getRtlHelper(vm.rtl, vm.x, vm.width);\n        pt.x = getAlignedX(vm, vm._footerAlign);\n        pt.y += vm.footerMarginTop;\n        ctx.textAlign = rtlHelper.textAlign(vm._footerAlign);\n        ctx.textBaseline = 'middle';\n        footerFontSize = vm.footerFontSize;\n        ctx.fillStyle = vm.footerFontColor;\n        ctx.font = helpers$1.fontString(footerFontSize, vm._footerFontStyle, vm._footerFontFamily);\n\n        for (i = 0; i < length; ++i) {\n          ctx.fillText(footer[i], rtlHelper.x(pt.x), pt.y + footerFontSize / 2);\n          pt.y += footerFontSize + vm.footerSpacing;\n        }\n      }\n    },\n    drawBackground: function drawBackground(pt, vm, ctx, tooltipSize) {\n      ctx.fillStyle = vm.backgroundColor;\n      ctx.strokeStyle = vm.borderColor;\n      ctx.lineWidth = vm.borderWidth;\n      var xAlign = vm.xAlign;\n      var yAlign = vm.yAlign;\n      var x = pt.x;\n      var y = pt.y;\n      var width = tooltipSize.width;\n      var height = tooltipSize.height;\n      var radius = vm.cornerRadius;\n      ctx.beginPath();\n      ctx.moveTo(x + radius, y);\n\n      if (yAlign === 'top') {\n        this.drawCaret(pt, tooltipSize);\n      }\n\n      ctx.lineTo(x + width - radius, y);\n      ctx.quadraticCurveTo(x + width, y, x + width, y + radius);\n\n      if (yAlign === 'center' && xAlign === 'right') {\n        this.drawCaret(pt, tooltipSize);\n      }\n\n      ctx.lineTo(x + width, y + height - radius);\n      ctx.quadraticCurveTo(x + width, y + height, x + width - radius, y + height);\n\n      if (yAlign === 'bottom') {\n        this.drawCaret(pt, tooltipSize);\n      }\n\n      ctx.lineTo(x + radius, y + height);\n      ctx.quadraticCurveTo(x, y + height, x, y + height - radius);\n\n      if (yAlign === 'center' && xAlign === 'left') {\n        this.drawCaret(pt, tooltipSize);\n      }\n\n      ctx.lineTo(x, y + radius);\n      ctx.quadraticCurveTo(x, y, x + radius, y);\n      ctx.closePath();\n      ctx.fill();\n\n      if (vm.borderWidth > 0) {\n        ctx.stroke();\n      }\n    },\n    draw: function draw() {\n      var ctx = this._chart.ctx;\n      var vm = this._view;\n\n      if (vm.opacity === 0) {\n        return;\n      }\n\n      var tooltipSize = {\n        width: vm.width,\n        height: vm.height\n      };\n      var pt = {\n        x: vm.x,\n        y: vm.y\n      }; // IE11/Edge does not like very small opacities, so snap to 0\n\n      var opacity = Math.abs(vm.opacity < 1e-3) ? 0 : vm.opacity; // Truthy/falsey value for empty tooltip\n\n      var hasTooltipContent = vm.title.length || vm.beforeBody.length || vm.body.length || vm.afterBody.length || vm.footer.length;\n\n      if (this._options.enabled && hasTooltipContent) {\n        ctx.save();\n        ctx.globalAlpha = opacity; // Draw Background\n\n        this.drawBackground(pt, vm, ctx, tooltipSize); // Draw Title, Body, and Footer\n\n        pt.y += vm.yPadding;\n        helpers$1.rtl.overrideTextDirection(ctx, vm.textDirection); // Titles\n\n        this.drawTitle(pt, vm, ctx); // Body\n\n        this.drawBody(pt, vm, ctx); // Footer\n\n        this.drawFooter(pt, vm, ctx);\n        helpers$1.rtl.restoreTextDirection(ctx, vm.textDirection);\n        ctx.restore();\n      }\n    },\n\n    /**\n     * Handle an event\n     * @private\n     * @param {IEvent} event - The event to handle\n     * @returns {boolean} true if the tooltip changed\n     */\n    handleEvent: function handleEvent(e) {\n      var me = this;\n      var options = me._options;\n      var changed = false;\n      me._lastActive = me._lastActive || []; // Find Active Elements for tooltips\n\n      if (e.type === 'mouseout') {\n        me._active = [];\n      } else {\n        me._active = me._chart.getElementsAtEventForMode(e, options.mode, options);\n\n        if (options.reverse) {\n          me._active.reverse();\n        }\n      } // Remember Last Actives\n\n\n      changed = !helpers$1.arrayEquals(me._active, me._lastActive); // Only handle target event on tooltip change\n\n      if (changed) {\n        me._lastActive = me._active;\n\n        if (options.enabled || options.custom) {\n          me._eventPosition = {\n            x: e.x,\n            y: e.y\n          };\n          me.update(true);\n          me.pivot();\n        }\n      }\n\n      return changed;\n    }\n  });\n  /**\n   * @namespace Chart.Tooltip.positioners\n   */\n\n  var positioners_1 = positioners;\n  var core_tooltip = exports$4;\n  core_tooltip.positioners = positioners_1;\n  var valueOrDefault$9 = helpers$1.valueOrDefault;\n\n  core_defaults._set('global', {\n    elements: {},\n    events: ['mousemove', 'mouseout', 'click', 'touchstart', 'touchmove'],\n    hover: {\n      onHover: null,\n      mode: 'nearest',\n      intersect: true,\n      animationDuration: 400\n    },\n    onClick: null,\n    maintainAspectRatio: true,\n    responsive: true,\n    responsiveAnimationDuration: 0\n  });\n  /**\n   * Recursively merge the given config objects representing the `scales` option\n   * by incorporating scale defaults in `xAxes` and `yAxes` array items, then\n   * returns a deep copy of the result, thus doesn't alter inputs.\n   */\n\n\n  function mergeScaleConfig()\n  /* config objects ... */\n  {\n    return helpers$1.merge({}, [].slice.call(arguments), {\n      merger: function merger(key, target, source, options) {\n        if (key === 'xAxes' || key === 'yAxes') {\n          var slen = source[key].length;\n          var i, type, scale;\n\n          if (!target[key]) {\n            target[key] = [];\n          }\n\n          for (i = 0; i < slen; ++i) {\n            scale = source[key][i];\n            type = valueOrDefault$9(scale.type, key === 'xAxes' ? 'category' : 'linear');\n\n            if (i >= target[key].length) {\n              target[key].push({});\n            }\n\n            if (!target[key][i].type || scale.type && scale.type !== target[key][i].type) {\n              // new/untyped scale or type changed: let's apply the new defaults\n              // then merge source scale to correctly overwrite the defaults.\n              helpers$1.merge(target[key][i], [core_scaleService.getScaleDefaults(type), scale]);\n            } else {\n              // scales type are the same\n              helpers$1.merge(target[key][i], scale);\n            }\n          }\n        } else {\n          helpers$1._merger(key, target, source, options);\n        }\n      }\n    });\n  }\n  /**\n   * Recursively merge the given config objects as the root options by handling\n   * default scale options for the `scales` and `scale` properties, then returns\n   * a deep copy of the result, thus doesn't alter inputs.\n   */\n\n\n  function mergeConfig()\n  /* config objects ... */\n  {\n    return helpers$1.merge({}, [].slice.call(arguments), {\n      merger: function merger(key, target, source, options) {\n        var tval = target[key] || {};\n        var sval = source[key];\n\n        if (key === 'scales') {\n          // scale config merging is complex. Add our own function here for that\n          target[key] = mergeScaleConfig(tval, sval);\n        } else if (key === 'scale') {\n          // used in polar area & radar charts since there is only one scale\n          target[key] = helpers$1.merge(tval, [core_scaleService.getScaleDefaults(sval.type), sval]);\n        } else {\n          helpers$1._merger(key, target, source, options);\n        }\n      }\n    });\n  }\n\n  function initConfig(config) {\n    config = config || {}; // Do NOT use mergeConfig for the data object because this method merges arrays\n    // and so would change references to labels and datasets, preventing data updates.\n\n    var data = config.data = config.data || {};\n    data.datasets = data.datasets || [];\n    data.labels = data.labels || [];\n    config.options = mergeConfig(core_defaults.global, core_defaults[config.type], config.options || {});\n    return config;\n  }\n\n  function updateConfig(chart) {\n    var newOptions = chart.options;\n    helpers$1.each(chart.scales, function (scale) {\n      core_layouts.removeBox(chart, scale);\n    });\n    newOptions = mergeConfig(core_defaults.global, core_defaults[chart.config.type], newOptions);\n    chart.options = chart.config.options = newOptions;\n    chart.ensureScalesHaveIDs();\n    chart.buildOrUpdateScales(); // Tooltip\n\n    chart.tooltip._options = newOptions.tooltips;\n    chart.tooltip.initialize();\n  }\n\n  function nextAvailableScaleId(axesOpts, prefix, index) {\n    var id;\n\n    var hasId = function hasId(obj) {\n      return obj.id === id;\n    };\n\n    do {\n      id = prefix + index++;\n    } while (helpers$1.findIndex(axesOpts, hasId) >= 0);\n\n    return id;\n  }\n\n  function positionIsHorizontal(position) {\n    return position === 'top' || position === 'bottom';\n  }\n\n  function compare2Level(l1, l2) {\n    return function (a, b) {\n      return a[l1] === b[l1] ? a[l2] - b[l2] : a[l1] - b[l1];\n    };\n  }\n\n  var Chart = function Chart(item, config) {\n    this.construct(item, config);\n    return this;\n  };\n\n  helpers$1.extend(Chart.prototype,\n  /** @lends Chart */\n  {\n    /**\n     * @private\n     */\n    construct: function construct(item, config) {\n      var me = this;\n      config = initConfig(config);\n      var context = platform.acquireContext(item, config);\n      var canvas = context && context.canvas;\n      var height = canvas && canvas.height;\n      var width = canvas && canvas.width;\n      me.id = helpers$1.uid();\n      me.ctx = context;\n      me.canvas = canvas;\n      me.config = config;\n      me.width = width;\n      me.height = height;\n      me.aspectRatio = height ? width / height : null;\n      me.options = config.options;\n      me._bufferedRender = false;\n      me._layers = [];\n      /**\n       * Provided for backward compatibility, Chart and Chart.Controller have been merged,\n       * the \"instance\" still need to be defined since it might be called from plugins.\n       * @prop Chart#chart\n       * @deprecated since version 2.6.0\n       * @todo remove at version 3\n       * @private\n       */\n\n      me.chart = me;\n      me.controller = me; // chart.chart.controller #inception\n      // Add the chart instance to the global namespace\n\n      Chart.instances[me.id] = me; // Define alias to the config data: `chart.data === chart.config.data`\n\n      Object.defineProperty(me, 'data', {\n        get: function get() {\n          return me.config.data;\n        },\n        set: function set(value) {\n          me.config.data = value;\n        }\n      });\n\n      if (!context || !canvas) {\n        // The given item is not a compatible context2d element, let's return before finalizing\n        // the chart initialization but after setting basic chart / controller properties that\n        // can help to figure out that the chart is not valid (e.g chart.canvas !== null);\n        // https://github.com/chartjs/Chart.js/issues/2807\n        console.error(\"Failed to create chart: can't acquire context from the given item\");\n        return;\n      }\n\n      me.initialize();\n      me.update();\n    },\n\n    /**\n     * @private\n     */\n    initialize: function initialize() {\n      var me = this; // Before init plugin notification\n\n      core_plugins.notify(me, 'beforeInit');\n      helpers$1.retinaScale(me, me.options.devicePixelRatio);\n      me.bindEvents();\n\n      if (me.options.responsive) {\n        // Initial resize before chart draws (must be silent to preserve initial animations).\n        me.resize(true);\n      }\n\n      me.initToolTip(); // After init plugin notification\n\n      core_plugins.notify(me, 'afterInit');\n      return me;\n    },\n    clear: function clear() {\n      helpers$1.canvas.clear(this);\n      return this;\n    },\n    stop: function stop() {\n      // Stops any current animation loop occurring\n      core_animations.cancelAnimation(this);\n      return this;\n    },\n    resize: function resize(silent) {\n      var me = this;\n      var options = me.options;\n      var canvas = me.canvas;\n      var aspectRatio = options.maintainAspectRatio && me.aspectRatio || null; // the canvas render width and height will be casted to integers so make sure that\n      // the canvas display style uses the same integer values to avoid blurring effect.\n      // Set to 0 instead of canvas.size because the size defaults to 300x150 if the element is collapsed\n\n      var newWidth = Math.max(0, Math.floor(helpers$1.getMaximumWidth(canvas)));\n      var newHeight = Math.max(0, Math.floor(aspectRatio ? newWidth / aspectRatio : helpers$1.getMaximumHeight(canvas)));\n\n      if (me.width === newWidth && me.height === newHeight) {\n        return;\n      }\n\n      canvas.width = me.width = newWidth;\n      canvas.height = me.height = newHeight;\n      canvas.style.width = newWidth + 'px';\n      canvas.style.height = newHeight + 'px';\n      helpers$1.retinaScale(me, options.devicePixelRatio);\n\n      if (!silent) {\n        // Notify any plugins about the resize\n        var newSize = {\n          width: newWidth,\n          height: newHeight\n        };\n        core_plugins.notify(me, 'resize', [newSize]); // Notify of resize\n\n        if (options.onResize) {\n          options.onResize(me, newSize);\n        }\n\n        me.stop();\n        me.update({\n          duration: options.responsiveAnimationDuration\n        });\n      }\n    },\n    ensureScalesHaveIDs: function ensureScalesHaveIDs() {\n      var options = this.options;\n      var scalesOptions = options.scales || {};\n      var scaleOptions = options.scale;\n      helpers$1.each(scalesOptions.xAxes, function (xAxisOptions, index) {\n        if (!xAxisOptions.id) {\n          xAxisOptions.id = nextAvailableScaleId(scalesOptions.xAxes, 'x-axis-', index);\n        }\n      });\n      helpers$1.each(scalesOptions.yAxes, function (yAxisOptions, index) {\n        if (!yAxisOptions.id) {\n          yAxisOptions.id = nextAvailableScaleId(scalesOptions.yAxes, 'y-axis-', index);\n        }\n      });\n\n      if (scaleOptions) {\n        scaleOptions.id = scaleOptions.id || 'scale';\n      }\n    },\n\n    /**\n     * Builds a map of scale ID to scale object for future lookup.\n     */\n    buildOrUpdateScales: function buildOrUpdateScales() {\n      var me = this;\n      var options = me.options;\n      var scales = me.scales || {};\n      var items = [];\n      var updated = Object.keys(scales).reduce(function (obj, id) {\n        obj[id] = false;\n        return obj;\n      }, {});\n\n      if (options.scales) {\n        items = items.concat((options.scales.xAxes || []).map(function (xAxisOptions) {\n          return {\n            options: xAxisOptions,\n            dtype: 'category',\n            dposition: 'bottom'\n          };\n        }), (options.scales.yAxes || []).map(function (yAxisOptions) {\n          return {\n            options: yAxisOptions,\n            dtype: 'linear',\n            dposition: 'left'\n          };\n        }));\n      }\n\n      if (options.scale) {\n        items.push({\n          options: options.scale,\n          dtype: 'radialLinear',\n          isDefault: true,\n          dposition: 'chartArea'\n        });\n      }\n\n      helpers$1.each(items, function (item) {\n        var scaleOptions = item.options;\n        var id = scaleOptions.id;\n        var scaleType = valueOrDefault$9(scaleOptions.type, item.dtype);\n\n        if (positionIsHorizontal(scaleOptions.position) !== positionIsHorizontal(item.dposition)) {\n          scaleOptions.position = item.dposition;\n        }\n\n        updated[id] = true;\n        var scale = null;\n\n        if (id in scales && scales[id].type === scaleType) {\n          scale = scales[id];\n          scale.options = scaleOptions;\n          scale.ctx = me.ctx;\n          scale.chart = me;\n        } else {\n          var scaleClass = core_scaleService.getScaleConstructor(scaleType);\n\n          if (!scaleClass) {\n            return;\n          }\n\n          scale = new scaleClass({\n            id: id,\n            type: scaleType,\n            options: scaleOptions,\n            ctx: me.ctx,\n            chart: me\n          });\n          scales[scale.id] = scale;\n        }\n\n        scale.mergeTicksOptions(); // TODO(SB): I think we should be able to remove this custom case (options.scale)\n        // and consider it as a regular scale part of the \"scales\"\" map only! This would\n        // make the logic easier and remove some useless? custom code.\n\n        if (item.isDefault) {\n          me.scale = scale;\n        }\n      }); // clear up discarded scales\n\n      helpers$1.each(updated, function (hasUpdated, id) {\n        if (!hasUpdated) {\n          delete scales[id];\n        }\n      });\n      me.scales = scales;\n      core_scaleService.addScalesToLayout(this);\n    },\n    buildOrUpdateControllers: function buildOrUpdateControllers() {\n      var me = this;\n      var newControllers = [];\n      var datasets = me.data.datasets;\n      var i, ilen;\n\n      for (i = 0, ilen = datasets.length; i < ilen; i++) {\n        var dataset = datasets[i];\n        var meta = me.getDatasetMeta(i);\n        var type = dataset.type || me.config.type;\n\n        if (meta.type && meta.type !== type) {\n          me.destroyDatasetMeta(i);\n          meta = me.getDatasetMeta(i);\n        }\n\n        meta.type = type;\n        meta.order = dataset.order || 0;\n        meta.index = i;\n\n        if (meta.controller) {\n          meta.controller.updateIndex(i);\n          meta.controller.linkScales();\n        } else {\n          var ControllerClass = controllers[meta.type];\n\n          if (ControllerClass === undefined) {\n            throw new Error('\"' + meta.type + '\" is not a chart type.');\n          }\n\n          meta.controller = new ControllerClass(me, i);\n          newControllers.push(meta.controller);\n        }\n      }\n\n      return newControllers;\n    },\n\n    /**\n     * Reset the elements of all datasets\n     * @private\n     */\n    resetElements: function resetElements() {\n      var me = this;\n      helpers$1.each(me.data.datasets, function (dataset, datasetIndex) {\n        me.getDatasetMeta(datasetIndex).controller.reset();\n      }, me);\n    },\n\n    /**\n    * Resets the chart back to it's state before the initial animation\n    */\n    reset: function reset() {\n      this.resetElements();\n      this.tooltip.initialize();\n    },\n    update: function update(config) {\n      var me = this;\n      var i, ilen;\n\n      if (!config || typeof config !== 'object') {\n        // backwards compatibility\n        config = {\n          duration: config,\n          lazy: arguments[1]\n        };\n      }\n\n      updateConfig(me); // plugins options references might have change, let's invalidate the cache\n      // https://github.com/chartjs/Chart.js/issues/5111#issuecomment-355934167\n\n      core_plugins._invalidate(me);\n\n      if (core_plugins.notify(me, 'beforeUpdate') === false) {\n        return;\n      } // In case the entire data object changed\n\n\n      me.tooltip._data = me.data; // Make sure dataset controllers are updated and new controllers are reset\n\n      var newControllers = me.buildOrUpdateControllers(); // Make sure all dataset controllers have correct meta data counts\n\n      for (i = 0, ilen = me.data.datasets.length; i < ilen; i++) {\n        me.getDatasetMeta(i).controller.buildOrUpdateElements();\n      }\n\n      me.updateLayout(); // Can only reset the new controllers after the scales have been updated\n\n      if (me.options.animation && me.options.animation.duration) {\n        helpers$1.each(newControllers, function (controller) {\n          controller.reset();\n        });\n      }\n\n      me.updateDatasets(); // Need to reset tooltip in case it is displayed with elements that are removed\n      // after update.\n\n      me.tooltip.initialize(); // Last active contains items that were previously in the tooltip.\n      // When we reset the tooltip, we need to clear it\n\n      me.lastActive = []; // Do this before render so that any plugins that need final scale updates can use it\n\n      core_plugins.notify(me, 'afterUpdate');\n\n      me._layers.sort(compare2Level('z', '_idx'));\n\n      if (me._bufferedRender) {\n        me._bufferedRequest = {\n          duration: config.duration,\n          easing: config.easing,\n          lazy: config.lazy\n        };\n      } else {\n        me.render(config);\n      }\n    },\n\n    /**\n     * Updates the chart layout unless a plugin returns `false` to the `beforeLayout`\n     * hook, in which case, plugins will not be called on `afterLayout`.\n     * @private\n     */\n    updateLayout: function updateLayout() {\n      var me = this;\n\n      if (core_plugins.notify(me, 'beforeLayout') === false) {\n        return;\n      }\n\n      core_layouts.update(this, this.width, this.height);\n      me._layers = [];\n      helpers$1.each(me.boxes, function (box) {\n        // _configure is called twice, once in core.scale.update and once here.\n        // Here the boxes are fully updated and at their final positions.\n        if (box._configure) {\n          box._configure();\n        }\n\n        me._layers.push.apply(me._layers, box._layers());\n      }, me);\n\n      me._layers.forEach(function (item, index) {\n        item._idx = index;\n      });\n      /**\n       * Provided for backward compatibility, use `afterLayout` instead.\n       * @method IPlugin#afterScaleUpdate\n       * @deprecated since version 2.5.0\n       * @todo remove at version 3\n       * @private\n       */\n\n\n      core_plugins.notify(me, 'afterScaleUpdate');\n      core_plugins.notify(me, 'afterLayout');\n    },\n\n    /**\n     * Updates all datasets unless a plugin returns `false` to the `beforeDatasetsUpdate`\n     * hook, in which case, plugins will not be called on `afterDatasetsUpdate`.\n     * @private\n     */\n    updateDatasets: function updateDatasets() {\n      var me = this;\n\n      if (core_plugins.notify(me, 'beforeDatasetsUpdate') === false) {\n        return;\n      }\n\n      for (var i = 0, ilen = me.data.datasets.length; i < ilen; ++i) {\n        me.updateDataset(i);\n      }\n\n      core_plugins.notify(me, 'afterDatasetsUpdate');\n    },\n\n    /**\n     * Updates dataset at index unless a plugin returns `false` to the `beforeDatasetUpdate`\n     * hook, in which case, plugins will not be called on `afterDatasetUpdate`.\n     * @private\n     */\n    updateDataset: function updateDataset(index) {\n      var me = this;\n      var meta = me.getDatasetMeta(index);\n      var args = {\n        meta: meta,\n        index: index\n      };\n\n      if (core_plugins.notify(me, 'beforeDatasetUpdate', [args]) === false) {\n        return;\n      }\n\n      meta.controller._update();\n\n      core_plugins.notify(me, 'afterDatasetUpdate', [args]);\n    },\n    render: function render(config) {\n      var me = this;\n\n      if (!config || typeof config !== 'object') {\n        // backwards compatibility\n        config = {\n          duration: config,\n          lazy: arguments[1]\n        };\n      }\n\n      var animationOptions = me.options.animation;\n      var duration = valueOrDefault$9(config.duration, animationOptions && animationOptions.duration);\n      var lazy = config.lazy;\n\n      if (core_plugins.notify(me, 'beforeRender') === false) {\n        return;\n      }\n\n      var onComplete = function onComplete(animation) {\n        core_plugins.notify(me, 'afterRender');\n        helpers$1.callback(animationOptions && animationOptions.onComplete, [animation], me);\n      };\n\n      if (animationOptions && duration) {\n        var animation = new core_animation({\n          numSteps: duration / 16.66,\n          // 60 fps\n          easing: config.easing || animationOptions.easing,\n          render: function render(chart, animationObject) {\n            var easingFunction = helpers$1.easing.effects[animationObject.easing];\n            var currentStep = animationObject.currentStep;\n            var stepDecimal = currentStep / animationObject.numSteps;\n            chart.draw(easingFunction(stepDecimal), stepDecimal, currentStep);\n          },\n          onAnimationProgress: animationOptions.onProgress,\n          onAnimationComplete: onComplete\n        });\n        core_animations.addAnimation(me, animation, duration, lazy);\n      } else {\n        me.draw(); // See https://github.com/chartjs/Chart.js/issues/3781\n\n        onComplete(new core_animation({\n          numSteps: 0,\n          chart: me\n        }));\n      }\n\n      return me;\n    },\n    draw: function draw(easingValue) {\n      var me = this;\n      var i, layers;\n      me.clear();\n\n      if (helpers$1.isNullOrUndef(easingValue)) {\n        easingValue = 1;\n      }\n\n      me.transition(easingValue);\n\n      if (me.width <= 0 || me.height <= 0) {\n        return;\n      }\n\n      if (core_plugins.notify(me, 'beforeDraw', [easingValue]) === false) {\n        return;\n      } // Because of plugin hooks (before/afterDatasetsDraw), datasets can't\n      // currently be part of layers. Instead, we draw\n      // layers <= 0 before(default, backward compat), and the rest after\n\n\n      layers = me._layers;\n\n      for (i = 0; i < layers.length && layers[i].z <= 0; ++i) {\n        layers[i].draw(me.chartArea);\n      }\n\n      me.drawDatasets(easingValue); // Rest of layers\n\n      for (; i < layers.length; ++i) {\n        layers[i].draw(me.chartArea);\n      }\n\n      me._drawTooltip(easingValue);\n\n      core_plugins.notify(me, 'afterDraw', [easingValue]);\n    },\n\n    /**\n     * @private\n     */\n    transition: function transition(easingValue) {\n      var me = this;\n\n      for (var i = 0, ilen = (me.data.datasets || []).length; i < ilen; ++i) {\n        if (me.isDatasetVisible(i)) {\n          me.getDatasetMeta(i).controller.transition(easingValue);\n        }\n      }\n\n      me.tooltip.transition(easingValue);\n    },\n\n    /**\n     * @private\n     */\n    _getSortedDatasetMetas: function _getSortedDatasetMetas(filterVisible) {\n      var me = this;\n      var datasets = me.data.datasets || [];\n      var result = [];\n      var i, ilen;\n\n      for (i = 0, ilen = datasets.length; i < ilen; ++i) {\n        if (!filterVisible || me.isDatasetVisible(i)) {\n          result.push(me.getDatasetMeta(i));\n        }\n      }\n\n      result.sort(compare2Level('order', 'index'));\n      return result;\n    },\n\n    /**\n     * @private\n     */\n    _getSortedVisibleDatasetMetas: function _getSortedVisibleDatasetMetas() {\n      return this._getSortedDatasetMetas(true);\n    },\n\n    /**\n     * Draws all datasets unless a plugin returns `false` to the `beforeDatasetsDraw`\n     * hook, in which case, plugins will not be called on `afterDatasetsDraw`.\n     * @private\n     */\n    drawDatasets: function drawDatasets(easingValue) {\n      var me = this;\n      var metasets, i;\n\n      if (core_plugins.notify(me, 'beforeDatasetsDraw', [easingValue]) === false) {\n        return;\n      }\n\n      metasets = me._getSortedVisibleDatasetMetas();\n\n      for (i = metasets.length - 1; i >= 0; --i) {\n        me.drawDataset(metasets[i], easingValue);\n      }\n\n      core_plugins.notify(me, 'afterDatasetsDraw', [easingValue]);\n    },\n\n    /**\n     * Draws dataset at index unless a plugin returns `false` to the `beforeDatasetDraw`\n     * hook, in which case, plugins will not be called on `afterDatasetDraw`.\n     * @private\n     */\n    drawDataset: function drawDataset(meta, easingValue) {\n      var me = this;\n      var args = {\n        meta: meta,\n        index: meta.index,\n        easingValue: easingValue\n      };\n\n      if (core_plugins.notify(me, 'beforeDatasetDraw', [args]) === false) {\n        return;\n      }\n\n      meta.controller.draw(easingValue);\n      core_plugins.notify(me, 'afterDatasetDraw', [args]);\n    },\n\n    /**\n     * Draws tooltip unless a plugin returns `false` to the `beforeTooltipDraw`\n     * hook, in which case, plugins will not be called on `afterTooltipDraw`.\n     * @private\n     */\n    _drawTooltip: function _drawTooltip(easingValue) {\n      var me = this;\n      var tooltip = me.tooltip;\n      var args = {\n        tooltip: tooltip,\n        easingValue: easingValue\n      };\n\n      if (core_plugins.notify(me, 'beforeTooltipDraw', [args]) === false) {\n        return;\n      }\n\n      tooltip.draw();\n      core_plugins.notify(me, 'afterTooltipDraw', [args]);\n    },\n\n    /**\n     * Get the single element that was clicked on\n     * @return An object containing the dataset index and element index of the matching element. Also contains the rectangle that was draw\n     */\n    getElementAtEvent: function getElementAtEvent(e) {\n      return core_interaction.modes.single(this, e);\n    },\n    getElementsAtEvent: function getElementsAtEvent(e) {\n      return core_interaction.modes.label(this, e, {\n        intersect: true\n      });\n    },\n    getElementsAtXAxis: function getElementsAtXAxis(e) {\n      return core_interaction.modes['x-axis'](this, e, {\n        intersect: true\n      });\n    },\n    getElementsAtEventForMode: function getElementsAtEventForMode(e, mode, options) {\n      var method = core_interaction.modes[mode];\n\n      if (typeof method === 'function') {\n        return method(this, e, options);\n      }\n\n      return [];\n    },\n    getDatasetAtEvent: function getDatasetAtEvent(e) {\n      return core_interaction.modes.dataset(this, e, {\n        intersect: true\n      });\n    },\n    getDatasetMeta: function getDatasetMeta(datasetIndex) {\n      var me = this;\n      var dataset = me.data.datasets[datasetIndex];\n\n      if (!dataset._meta) {\n        dataset._meta = {};\n      }\n\n      var meta = dataset._meta[me.id];\n\n      if (!meta) {\n        meta = dataset._meta[me.id] = {\n          type: null,\n          data: [],\n          dataset: null,\n          controller: null,\n          hidden: null,\n          // See isDatasetVisible() comment\n          xAxisID: null,\n          yAxisID: null,\n          order: dataset.order || 0,\n          index: datasetIndex\n        };\n      }\n\n      return meta;\n    },\n    getVisibleDatasetCount: function getVisibleDatasetCount() {\n      var count = 0;\n\n      for (var i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n        if (this.isDatasetVisible(i)) {\n          count++;\n        }\n      }\n\n      return count;\n    },\n    isDatasetVisible: function isDatasetVisible(datasetIndex) {\n      var meta = this.getDatasetMeta(datasetIndex); // meta.hidden is a per chart dataset hidden flag override with 3 states: if true or false,\n      // the dataset.hidden value is ignored, else if null, the dataset hidden state is returned.\n\n      return typeof meta.hidden === 'boolean' ? !meta.hidden : !this.data.datasets[datasetIndex].hidden;\n    },\n    generateLegend: function generateLegend() {\n      return this.options.legendCallback(this);\n    },\n\n    /**\n     * @private\n     */\n    destroyDatasetMeta: function destroyDatasetMeta(datasetIndex) {\n      var id = this.id;\n      var dataset = this.data.datasets[datasetIndex];\n      var meta = dataset._meta && dataset._meta[id];\n\n      if (meta) {\n        meta.controller.destroy();\n        delete dataset._meta[id];\n      }\n    },\n    destroy: function destroy() {\n      var me = this;\n      var canvas = me.canvas;\n      var i, ilen;\n      me.stop(); // dataset controllers need to cleanup associated data\n\n      for (i = 0, ilen = me.data.datasets.length; i < ilen; ++i) {\n        me.destroyDatasetMeta(i);\n      }\n\n      if (canvas) {\n        me.unbindEvents();\n        helpers$1.canvas.clear(me);\n        platform.releaseContext(me.ctx);\n        me.canvas = null;\n        me.ctx = null;\n      }\n\n      core_plugins.notify(me, 'destroy');\n      delete Chart.instances[me.id];\n    },\n    toBase64Image: function toBase64Image() {\n      return this.canvas.toDataURL.apply(this.canvas, arguments);\n    },\n    initToolTip: function initToolTip() {\n      var me = this;\n      me.tooltip = new core_tooltip({\n        _chart: me,\n        _chartInstance: me,\n        // deprecated, backward compatibility\n        _data: me.data,\n        _options: me.options.tooltips\n      }, me);\n    },\n\n    /**\n     * @private\n     */\n    bindEvents: function bindEvents() {\n      var me = this;\n      var listeners = me._listeners = {};\n\n      var listener = function listener() {\n        me.eventHandler.apply(me, arguments);\n      };\n\n      helpers$1.each(me.options.events, function (type) {\n        platform.addEventListener(me, type, listener);\n        listeners[type] = listener;\n      }); // Elements used to detect size change should not be injected for non responsive charts.\n      // See https://github.com/chartjs/Chart.js/issues/2210\n\n      if (me.options.responsive) {\n        listener = function listener() {\n          me.resize();\n        };\n\n        platform.addEventListener(me, 'resize', listener);\n        listeners.resize = listener;\n      }\n    },\n\n    /**\n     * @private\n     */\n    unbindEvents: function unbindEvents() {\n      var me = this;\n      var listeners = me._listeners;\n\n      if (!listeners) {\n        return;\n      }\n\n      delete me._listeners;\n      helpers$1.each(listeners, function (listener, type) {\n        platform.removeEventListener(me, type, listener);\n      });\n    },\n    updateHoverStyle: function updateHoverStyle(elements, mode, enabled) {\n      var prefix = enabled ? 'set' : 'remove';\n      var element, i, ilen;\n\n      for (i = 0, ilen = elements.length; i < ilen; ++i) {\n        element = elements[i];\n\n        if (element) {\n          this.getDatasetMeta(element._datasetIndex).controller[prefix + 'HoverStyle'](element);\n        }\n      }\n\n      if (mode === 'dataset') {\n        this.getDatasetMeta(elements[0]._datasetIndex).controller['_' + prefix + 'DatasetHoverStyle']();\n      }\n    },\n\n    /**\n     * @private\n     */\n    eventHandler: function eventHandler(e) {\n      var me = this;\n      var tooltip = me.tooltip;\n\n      if (core_plugins.notify(me, 'beforeEvent', [e]) === false) {\n        return;\n      } // Buffer any update calls so that renders do not occur\n\n\n      me._bufferedRender = true;\n      me._bufferedRequest = null;\n      var changed = me.handleEvent(e); // for smooth tooltip animations issue #4989\n      // the tooltip should be the source of change\n      // Animation check workaround:\n      // tooltip._start will be null when tooltip isn't animating\n\n      if (tooltip) {\n        changed = tooltip._start ? tooltip.handleEvent(e) : changed | tooltip.handleEvent(e);\n      }\n\n      core_plugins.notify(me, 'afterEvent', [e]);\n      var bufferedRequest = me._bufferedRequest;\n\n      if (bufferedRequest) {\n        // If we have an update that was triggered, we need to do a normal render\n        me.render(bufferedRequest);\n      } else if (changed && !me.animating) {\n        // If entering, leaving, or changing elements, animate the change via pivot\n        me.stop(); // We only need to render at this point. Updating will cause scales to be\n        // recomputed generating flicker & using more memory than necessary.\n\n        me.render({\n          duration: me.options.hover.animationDuration,\n          lazy: true\n        });\n      }\n\n      me._bufferedRender = false;\n      me._bufferedRequest = null;\n      return me;\n    },\n\n    /**\n     * Handle an event\n     * @private\n     * @param {IEvent} event the event to handle\n     * @return {boolean} true if the chart needs to re-render\n     */\n    handleEvent: function handleEvent(e) {\n      var me = this;\n      var options = me.options || {};\n      var hoverOptions = options.hover;\n      var changed = false;\n      me.lastActive = me.lastActive || []; // Find Active Elements for hover and tooltips\n\n      if (e.type === 'mouseout') {\n        me.active = [];\n      } else {\n        me.active = me.getElementsAtEventForMode(e, hoverOptions.mode, hoverOptions);\n      } // Invoke onHover hook\n      // Need to call with native event here to not break backwards compatibility\n\n\n      helpers$1.callback(options.onHover || options.hover.onHover, [e[\"native\"], me.active], me);\n\n      if (e.type === 'mouseup' || e.type === 'click') {\n        if (options.onClick) {\n          // Use e.native here for backwards compatibility\n          options.onClick.call(me, e[\"native\"], me.active);\n        }\n      } // Remove styling for last active (even if it may still be active)\n\n\n      if (me.lastActive.length) {\n        me.updateHoverStyle(me.lastActive, hoverOptions.mode, false);\n      } // Built in hover styling\n\n\n      if (me.active.length && hoverOptions.mode) {\n        me.updateHoverStyle(me.active, hoverOptions.mode, true);\n      }\n\n      changed = !helpers$1.arrayEquals(me.active, me.lastActive); // Remember Last Actives\n\n      me.lastActive = me.active;\n      return changed;\n    }\n  });\n  /**\n   * NOTE(SB) We actually don't use this container anymore but we need to keep it\n   * for backward compatibility. Though, it can still be useful for plugins that\n   * would need to work on multiple charts?!\n   */\n\n  Chart.instances = {};\n  var core_controller = Chart; // DEPRECATIONS\n\n  /**\n   * Provided for backward compatibility, use Chart instead.\n   * @class Chart.Controller\n   * @deprecated since version 2.6\n   * @todo remove at version 3\n   * @private\n   */\n\n  Chart.Controller = Chart;\n  /**\n   * Provided for backward compatibility, not available anymore.\n   * @namespace Chart\n   * @deprecated since version 2.8\n   * @todo remove at version 3\n   * @private\n   */\n\n  Chart.types = {};\n  /**\n   * Provided for backward compatibility, not available anymore.\n   * @namespace Chart.helpers.configMerge\n   * @deprecated since version 2.8.0\n   * @todo remove at version 3\n   * @private\n   */\n\n  helpers$1.configMerge = mergeConfig;\n  /**\n   * Provided for backward compatibility, not available anymore.\n   * @namespace Chart.helpers.scaleMerge\n   * @deprecated since version 2.8.0\n   * @todo remove at version 3\n   * @private\n   */\n\n  helpers$1.scaleMerge = mergeScaleConfig;\n\n  var core_helpers = function core_helpers() {\n    // -- Basic js utility methods\n    helpers$1.where = function (collection, filterCallback) {\n      if (helpers$1.isArray(collection) && Array.prototype.filter) {\n        return collection.filter(filterCallback);\n      }\n\n      var filtered = [];\n      helpers$1.each(collection, function (item) {\n        if (filterCallback(item)) {\n          filtered.push(item);\n        }\n      });\n      return filtered;\n    };\n\n    helpers$1.findIndex = Array.prototype.findIndex ? function (array, callback, scope) {\n      return array.findIndex(callback, scope);\n    } : function (array, callback, scope) {\n      scope = scope === undefined ? array : scope;\n\n      for (var i = 0, ilen = array.length; i < ilen; ++i) {\n        if (callback.call(scope, array[i], i, array)) {\n          return i;\n        }\n      }\n\n      return -1;\n    };\n\n    helpers$1.findNextWhere = function (arrayToSearch, filterCallback, startIndex) {\n      // Default to start of the array\n      if (helpers$1.isNullOrUndef(startIndex)) {\n        startIndex = -1;\n      }\n\n      for (var i = startIndex + 1; i < arrayToSearch.length; i++) {\n        var currentItem = arrayToSearch[i];\n\n        if (filterCallback(currentItem)) {\n          return currentItem;\n        }\n      }\n    };\n\n    helpers$1.findPreviousWhere = function (arrayToSearch, filterCallback, startIndex) {\n      // Default to end of the array\n      if (helpers$1.isNullOrUndef(startIndex)) {\n        startIndex = arrayToSearch.length;\n      }\n\n      for (var i = startIndex - 1; i >= 0; i--) {\n        var currentItem = arrayToSearch[i];\n\n        if (filterCallback(currentItem)) {\n          return currentItem;\n        }\n      }\n    }; // -- Math methods\n\n\n    helpers$1.isNumber = function (n) {\n      return !isNaN(parseFloat(n)) && isFinite(n);\n    };\n\n    helpers$1.almostEquals = function (x, y, epsilon) {\n      return Math.abs(x - y) < epsilon;\n    };\n\n    helpers$1.almostWhole = function (x, epsilon) {\n      var rounded = Math.round(x);\n      return rounded - epsilon <= x && rounded + epsilon >= x;\n    };\n\n    helpers$1.max = function (array) {\n      return array.reduce(function (max, value) {\n        if (!isNaN(value)) {\n          return Math.max(max, value);\n        }\n\n        return max;\n      }, Number.NEGATIVE_INFINITY);\n    };\n\n    helpers$1.min = function (array) {\n      return array.reduce(function (min, value) {\n        if (!isNaN(value)) {\n          return Math.min(min, value);\n        }\n\n        return min;\n      }, Number.POSITIVE_INFINITY);\n    };\n\n    helpers$1.sign = Math.sign ? function (x) {\n      return Math.sign(x);\n    } : function (x) {\n      x = +x; // convert to a number\n\n      if (x === 0 || isNaN(x)) {\n        return x;\n      }\n\n      return x > 0 ? 1 : -1;\n    };\n\n    helpers$1.toRadians = function (degrees) {\n      return degrees * (Math.PI / 180);\n    };\n\n    helpers$1.toDegrees = function (radians) {\n      return radians * (180 / Math.PI);\n    };\n    /**\n     * Returns the number of decimal places\n     * i.e. the number of digits after the decimal point, of the value of this Number.\n     * @param {number} x - A number.\n     * @returns {number} The number of decimal places.\n     * @private\n     */\n\n\n    helpers$1._decimalPlaces = function (x) {\n      if (!helpers$1.isFinite(x)) {\n        return;\n      }\n\n      var e = 1;\n      var p = 0;\n\n      while (Math.round(x * e) / e !== x) {\n        e *= 10;\n        p++;\n      }\n\n      return p;\n    }; // Gets the angle from vertical upright to the point about a centre.\n\n\n    helpers$1.getAngleFromPoint = function (centrePoint, anglePoint) {\n      var distanceFromXCenter = anglePoint.x - centrePoint.x;\n      var distanceFromYCenter = anglePoint.y - centrePoint.y;\n      var radialDistanceFromCenter = Math.sqrt(distanceFromXCenter * distanceFromXCenter + distanceFromYCenter * distanceFromYCenter);\n      var angle = Math.atan2(distanceFromYCenter, distanceFromXCenter);\n\n      if (angle < -0.5 * Math.PI) {\n        angle += 2.0 * Math.PI; // make sure the returned angle is in the range of (-PI/2, 3PI/2]\n      }\n\n      return {\n        angle: angle,\n        distance: radialDistanceFromCenter\n      };\n    };\n\n    helpers$1.distanceBetweenPoints = function (pt1, pt2) {\n      return Math.sqrt(Math.pow(pt2.x - pt1.x, 2) + Math.pow(pt2.y - pt1.y, 2));\n    };\n    /**\n     * Provided for backward compatibility, not available anymore\n     * @function Chart.helpers.aliasPixel\n     * @deprecated since version 2.8.0\n     * @todo remove at version 3\n     */\n\n\n    helpers$1.aliasPixel = function (pixelWidth) {\n      return pixelWidth % 2 === 0 ? 0 : 0.5;\n    };\n    /**\n     * Returns the aligned pixel value to avoid anti-aliasing blur\n     * @param {Chart} chart - The chart instance.\n     * @param {number} pixel - A pixel value.\n     * @param {number} width - The width of the element.\n     * @returns {number} The aligned pixel value.\n     * @private\n     */\n\n\n    helpers$1._alignPixel = function (chart, pixel, width) {\n      var devicePixelRatio = chart.currentDevicePixelRatio;\n      var halfWidth = width / 2;\n      return Math.round((pixel - halfWidth) * devicePixelRatio) / devicePixelRatio + halfWidth;\n    };\n\n    helpers$1.splineCurve = function (firstPoint, middlePoint, afterPoint, t) {\n      // Props to Rob Spencer at scaled innovation for his post on splining between points\n      // http://scaledinnovation.com/analytics/splines/aboutSplines.html\n      // This function must also respect \"skipped\" points\n      var previous = firstPoint.skip ? middlePoint : firstPoint;\n      var current = middlePoint;\n      var next = afterPoint.skip ? middlePoint : afterPoint;\n      var d01 = Math.sqrt(Math.pow(current.x - previous.x, 2) + Math.pow(current.y - previous.y, 2));\n      var d12 = Math.sqrt(Math.pow(next.x - current.x, 2) + Math.pow(next.y - current.y, 2));\n      var s01 = d01 / (d01 + d12);\n      var s12 = d12 / (d01 + d12); // If all points are the same, s01 & s02 will be inf\n\n      s01 = isNaN(s01) ? 0 : s01;\n      s12 = isNaN(s12) ? 0 : s12;\n      var fa = t * s01; // scaling factor for triangle Ta\n\n      var fb = t * s12;\n      return {\n        previous: {\n          x: current.x - fa * (next.x - previous.x),\n          y: current.y - fa * (next.y - previous.y)\n        },\n        next: {\n          x: current.x + fb * (next.x - previous.x),\n          y: current.y + fb * (next.y - previous.y)\n        }\n      };\n    };\n\n    helpers$1.EPSILON = Number.EPSILON || 1e-14;\n\n    helpers$1.splineCurveMonotone = function (points) {\n      // This function calculates Bézier control points in a similar way than |splineCurve|,\n      // but preserves monotonicity of the provided data and ensures no local extremums are added\n      // between the dataset discrete points due to the interpolation.\n      // See : https://en.wikipedia.org/wiki/Monotone_cubic_interpolation\n      var pointsWithTangents = (points || []).map(function (point) {\n        return {\n          model: point._model,\n          deltaK: 0,\n          mK: 0\n        };\n      }); // Calculate slopes (deltaK) and initialize tangents (mK)\n\n      var pointsLen = pointsWithTangents.length;\n      var i, pointBefore, pointCurrent, pointAfter;\n\n      for (i = 0; i < pointsLen; ++i) {\n        pointCurrent = pointsWithTangents[i];\n\n        if (pointCurrent.model.skip) {\n          continue;\n        }\n\n        pointBefore = i > 0 ? pointsWithTangents[i - 1] : null;\n        pointAfter = i < pointsLen - 1 ? pointsWithTangents[i + 1] : null;\n\n        if (pointAfter && !pointAfter.model.skip) {\n          var slopeDeltaX = pointAfter.model.x - pointCurrent.model.x; // In the case of two points that appear at the same x pixel, slopeDeltaX is 0\n\n          pointCurrent.deltaK = slopeDeltaX !== 0 ? (pointAfter.model.y - pointCurrent.model.y) / slopeDeltaX : 0;\n        }\n\n        if (!pointBefore || pointBefore.model.skip) {\n          pointCurrent.mK = pointCurrent.deltaK;\n        } else if (!pointAfter || pointAfter.model.skip) {\n          pointCurrent.mK = pointBefore.deltaK;\n        } else if (this.sign(pointBefore.deltaK) !== this.sign(pointCurrent.deltaK)) {\n          pointCurrent.mK = 0;\n        } else {\n          pointCurrent.mK = (pointBefore.deltaK + pointCurrent.deltaK) / 2;\n        }\n      } // Adjust tangents to ensure monotonic properties\n\n\n      var alphaK, betaK, tauK, squaredMagnitude;\n\n      for (i = 0; i < pointsLen - 1; ++i) {\n        pointCurrent = pointsWithTangents[i];\n        pointAfter = pointsWithTangents[i + 1];\n\n        if (pointCurrent.model.skip || pointAfter.model.skip) {\n          continue;\n        }\n\n        if (helpers$1.almostEquals(pointCurrent.deltaK, 0, this.EPSILON)) {\n          pointCurrent.mK = pointAfter.mK = 0;\n          continue;\n        }\n\n        alphaK = pointCurrent.mK / pointCurrent.deltaK;\n        betaK = pointAfter.mK / pointCurrent.deltaK;\n        squaredMagnitude = Math.pow(alphaK, 2) + Math.pow(betaK, 2);\n\n        if (squaredMagnitude <= 9) {\n          continue;\n        }\n\n        tauK = 3 / Math.sqrt(squaredMagnitude);\n        pointCurrent.mK = alphaK * tauK * pointCurrent.deltaK;\n        pointAfter.mK = betaK * tauK * pointCurrent.deltaK;\n      } // Compute control points\n\n\n      var deltaX;\n\n      for (i = 0; i < pointsLen; ++i) {\n        pointCurrent = pointsWithTangents[i];\n\n        if (pointCurrent.model.skip) {\n          continue;\n        }\n\n        pointBefore = i > 0 ? pointsWithTangents[i - 1] : null;\n        pointAfter = i < pointsLen - 1 ? pointsWithTangents[i + 1] : null;\n\n        if (pointBefore && !pointBefore.model.skip) {\n          deltaX = (pointCurrent.model.x - pointBefore.model.x) / 3;\n          pointCurrent.model.controlPointPreviousX = pointCurrent.model.x - deltaX;\n          pointCurrent.model.controlPointPreviousY = pointCurrent.model.y - deltaX * pointCurrent.mK;\n        }\n\n        if (pointAfter && !pointAfter.model.skip) {\n          deltaX = (pointAfter.model.x - pointCurrent.model.x) / 3;\n          pointCurrent.model.controlPointNextX = pointCurrent.model.x + deltaX;\n          pointCurrent.model.controlPointNextY = pointCurrent.model.y + deltaX * pointCurrent.mK;\n        }\n      }\n    };\n\n    helpers$1.nextItem = function (collection, index, loop) {\n      if (loop) {\n        return index >= collection.length - 1 ? collection[0] : collection[index + 1];\n      }\n\n      return index >= collection.length - 1 ? collection[collection.length - 1] : collection[index + 1];\n    };\n\n    helpers$1.previousItem = function (collection, index, loop) {\n      if (loop) {\n        return index <= 0 ? collection[collection.length - 1] : collection[index - 1];\n      }\n\n      return index <= 0 ? collection[0] : collection[index - 1];\n    }; // Implementation of the nice number algorithm used in determining where axis labels will go\n\n\n    helpers$1.niceNum = function (range, round) {\n      var exponent = Math.floor(helpers$1.log10(range));\n      var fraction = range / Math.pow(10, exponent);\n      var niceFraction;\n\n      if (round) {\n        if (fraction < 1.5) {\n          niceFraction = 1;\n        } else if (fraction < 3) {\n          niceFraction = 2;\n        } else if (fraction < 7) {\n          niceFraction = 5;\n        } else {\n          niceFraction = 10;\n        }\n      } else if (fraction <= 1.0) {\n        niceFraction = 1;\n      } else if (fraction <= 2) {\n        niceFraction = 2;\n      } else if (fraction <= 5) {\n        niceFraction = 5;\n      } else {\n        niceFraction = 10;\n      }\n\n      return niceFraction * Math.pow(10, exponent);\n    }; // Request animation polyfill - https://www.paulirish.com/2011/requestanimationframe-for-smart-animating/\n\n\n    helpers$1.requestAnimFrame = function () {\n      if (typeof window === 'undefined') {\n        return function (callback) {\n          callback();\n        };\n      }\n\n      return window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame || window.msRequestAnimationFrame || function (callback) {\n        return window.setTimeout(callback, 1000 / 60);\n      };\n    }(); // -- DOM methods\n\n\n    helpers$1.getRelativePosition = function (evt, chart) {\n      var mouseX, mouseY;\n      var e = evt.originalEvent || evt;\n      var canvas = evt.target || evt.srcElement;\n      var boundingRect = canvas.getBoundingClientRect();\n      var touches = e.touches;\n\n      if (touches && touches.length > 0) {\n        mouseX = touches[0].clientX;\n        mouseY = touches[0].clientY;\n      } else {\n        mouseX = e.clientX;\n        mouseY = e.clientY;\n      } // Scale mouse coordinates into canvas coordinates\n      // by following the pattern laid out by 'jerryj' in the comments of\n      // https://www.html5canvastutorials.com/advanced/html5-canvas-mouse-coordinates/\n\n\n      var paddingLeft = parseFloat(helpers$1.getStyle(canvas, 'padding-left'));\n      var paddingTop = parseFloat(helpers$1.getStyle(canvas, 'padding-top'));\n      var paddingRight = parseFloat(helpers$1.getStyle(canvas, 'padding-right'));\n      var paddingBottom = parseFloat(helpers$1.getStyle(canvas, 'padding-bottom'));\n      var width = boundingRect.right - boundingRect.left - paddingLeft - paddingRight;\n      var height = boundingRect.bottom - boundingRect.top - paddingTop - paddingBottom; // We divide by the current device pixel ratio, because the canvas is scaled up by that amount in each direction. However\n      // the backend model is in unscaled coordinates. Since we are going to deal with our model coordinates, we go back here\n\n      mouseX = Math.round((mouseX - boundingRect.left - paddingLeft) / width * canvas.width / chart.currentDevicePixelRatio);\n      mouseY = Math.round((mouseY - boundingRect.top - paddingTop) / height * canvas.height / chart.currentDevicePixelRatio);\n      return {\n        x: mouseX,\n        y: mouseY\n      };\n    }; // Private helper function to convert max-width/max-height values that may be percentages into a number\n\n\n    function parseMaxStyle(styleValue, node, parentProperty) {\n      var valueInPixels;\n\n      if (typeof styleValue === 'string') {\n        valueInPixels = parseInt(styleValue, 10);\n\n        if (styleValue.indexOf('%') !== -1) {\n          // percentage * size in dimension\n          valueInPixels = valueInPixels / 100 * node.parentNode[parentProperty];\n        }\n      } else {\n        valueInPixels = styleValue;\n      }\n\n      return valueInPixels;\n    }\n    /**\n     * Returns if the given value contains an effective constraint.\n     * @private\n     */\n\n\n    function isConstrainedValue(value) {\n      return value !== undefined && value !== null && value !== 'none';\n    }\n    /**\n     * Returns the max width or height of the given DOM node in a cross-browser compatible fashion\n     * @param {HTMLElement} domNode - the node to check the constraint on\n     * @param {string} maxStyle - the style that defines the maximum for the direction we are using ('max-width' / 'max-height')\n     * @param {string} percentageProperty - property of parent to use when calculating width as a percentage\n     * @see {@link https://www.nathanaeljones.com/blog/2013/reading-max-width-cross-browser}\n     */\n\n\n    function getConstraintDimension(domNode, maxStyle, percentageProperty) {\n      var view = document.defaultView;\n\n      var parentNode = helpers$1._getParentNode(domNode);\n\n      var constrainedNode = view.getComputedStyle(domNode)[maxStyle];\n      var constrainedContainer = view.getComputedStyle(parentNode)[maxStyle];\n      var hasCNode = isConstrainedValue(constrainedNode);\n      var hasCContainer = isConstrainedValue(constrainedContainer);\n      var infinity = Number.POSITIVE_INFINITY;\n\n      if (hasCNode || hasCContainer) {\n        return Math.min(hasCNode ? parseMaxStyle(constrainedNode, domNode, percentageProperty) : infinity, hasCContainer ? parseMaxStyle(constrainedContainer, parentNode, percentageProperty) : infinity);\n      }\n\n      return 'none';\n    } // returns Number or undefined if no constraint\n\n\n    helpers$1.getConstraintWidth = function (domNode) {\n      return getConstraintDimension(domNode, 'max-width', 'clientWidth');\n    }; // returns Number or undefined if no constraint\n\n\n    helpers$1.getConstraintHeight = function (domNode) {\n      return getConstraintDimension(domNode, 'max-height', 'clientHeight');\n    };\n    /**\n     * @private\n    \t */\n\n\n    helpers$1._calculatePadding = function (container, padding, parentDimension) {\n      padding = helpers$1.getStyle(container, padding);\n      return padding.indexOf('%') > -1 ? parentDimension * parseInt(padding, 10) / 100 : parseInt(padding, 10);\n    };\n    /**\n     * @private\n     */\n\n\n    helpers$1._getParentNode = function (domNode) {\n      var parent = domNode.parentNode;\n\n      if (parent && parent.toString() === '[object ShadowRoot]') {\n        parent = parent.host;\n      }\n\n      return parent;\n    };\n\n    helpers$1.getMaximumWidth = function (domNode) {\n      var container = helpers$1._getParentNode(domNode);\n\n      if (!container) {\n        return domNode.clientWidth;\n      }\n\n      var clientWidth = container.clientWidth;\n\n      var paddingLeft = helpers$1._calculatePadding(container, 'padding-left', clientWidth);\n\n      var paddingRight = helpers$1._calculatePadding(container, 'padding-right', clientWidth);\n\n      var w = clientWidth - paddingLeft - paddingRight;\n      var cw = helpers$1.getConstraintWidth(domNode);\n      return isNaN(cw) ? w : Math.min(w, cw);\n    };\n\n    helpers$1.getMaximumHeight = function (domNode) {\n      var container = helpers$1._getParentNode(domNode);\n\n      if (!container) {\n        return domNode.clientHeight;\n      }\n\n      var clientHeight = container.clientHeight;\n\n      var paddingTop = helpers$1._calculatePadding(container, 'padding-top', clientHeight);\n\n      var paddingBottom = helpers$1._calculatePadding(container, 'padding-bottom', clientHeight);\n\n      var h = clientHeight - paddingTop - paddingBottom;\n      var ch = helpers$1.getConstraintHeight(domNode);\n      return isNaN(ch) ? h : Math.min(h, ch);\n    };\n\n    helpers$1.getStyle = function (el, property) {\n      return el.currentStyle ? el.currentStyle[property] : document.defaultView.getComputedStyle(el, null).getPropertyValue(property);\n    };\n\n    helpers$1.retinaScale = function (chart, forceRatio) {\n      var pixelRatio = chart.currentDevicePixelRatio = forceRatio || typeof window !== 'undefined' && window.devicePixelRatio || 1;\n\n      if (pixelRatio === 1) {\n        return;\n      }\n\n      var canvas = chart.canvas;\n      var height = chart.height;\n      var width = chart.width;\n      canvas.height = height * pixelRatio;\n      canvas.width = width * pixelRatio;\n      chart.ctx.scale(pixelRatio, pixelRatio); // If no style has been set on the canvas, the render size is used as display size,\n      // making the chart visually bigger, so let's enforce it to the \"correct\" values.\n      // See https://github.com/chartjs/Chart.js/issues/3575\n\n      if (!canvas.style.height && !canvas.style.width) {\n        canvas.style.height = height + 'px';\n        canvas.style.width = width + 'px';\n      }\n    }; // -- Canvas methods\n\n\n    helpers$1.fontString = function (pixelSize, fontStyle, fontFamily) {\n      return fontStyle + ' ' + pixelSize + 'px ' + fontFamily;\n    };\n\n    helpers$1.longestText = function (ctx, font, arrayOfThings, cache) {\n      cache = cache || {};\n      var data = cache.data = cache.data || {};\n      var gc = cache.garbageCollect = cache.garbageCollect || [];\n\n      if (cache.font !== font) {\n        data = cache.data = {};\n        gc = cache.garbageCollect = [];\n        cache.font = font;\n      }\n\n      ctx.font = font;\n      var longest = 0;\n      var ilen = arrayOfThings.length;\n      var i, j, jlen, thing, nestedThing;\n\n      for (i = 0; i < ilen; i++) {\n        thing = arrayOfThings[i]; // Undefined strings and arrays should not be measured\n\n        if (thing !== undefined && thing !== null && helpers$1.isArray(thing) !== true) {\n          longest = helpers$1.measureText(ctx, data, gc, longest, thing);\n        } else if (helpers$1.isArray(thing)) {\n          // if it is an array lets measure each element\n          // to do maybe simplify this function a bit so we can do this more recursively?\n          for (j = 0, jlen = thing.length; j < jlen; j++) {\n            nestedThing = thing[j]; // Undefined strings and arrays should not be measured\n\n            if (nestedThing !== undefined && nestedThing !== null && !helpers$1.isArray(nestedThing)) {\n              longest = helpers$1.measureText(ctx, data, gc, longest, nestedThing);\n            }\n          }\n        }\n      }\n\n      var gcLen = gc.length / 2;\n\n      if (gcLen > arrayOfThings.length) {\n        for (i = 0; i < gcLen; i++) {\n          delete data[gc[i]];\n        }\n\n        gc.splice(0, gcLen);\n      }\n\n      return longest;\n    };\n\n    helpers$1.measureText = function (ctx, data, gc, longest, string) {\n      var textWidth = data[string];\n\n      if (!textWidth) {\n        textWidth = data[string] = ctx.measureText(string).width;\n        gc.push(string);\n      }\n\n      if (textWidth > longest) {\n        longest = textWidth;\n      }\n\n      return longest;\n    };\n    /**\n     * @deprecated\n     */\n\n\n    helpers$1.numberOfLabelLines = function (arrayOfThings) {\n      var numberOfLines = 1;\n      helpers$1.each(arrayOfThings, function (thing) {\n        if (helpers$1.isArray(thing)) {\n          if (thing.length > numberOfLines) {\n            numberOfLines = thing.length;\n          }\n        }\n      });\n      return numberOfLines;\n    };\n\n    helpers$1.color = !chartjsColor ? function (value) {\n      console.error('Color.js not found!');\n      return value;\n    } : function (value) {\n      /* global CanvasGradient */\n      if (value instanceof CanvasGradient) {\n        value = core_defaults.global.defaultColor;\n      }\n\n      return chartjsColor(value);\n    };\n\n    helpers$1.getHoverColor = function (colorValue) {\n      /* global CanvasPattern */\n      return colorValue instanceof CanvasPattern || colorValue instanceof CanvasGradient ? colorValue : helpers$1.color(colorValue).saturate(0.5).darken(0.1).rgbString();\n    };\n  };\n\n  function _abstract() {\n    throw new Error('This method is not implemented: either no adapter can ' + 'be found or an incomplete integration was provided.');\n  }\n  /**\n   * Date adapter (current used by the time scale)\n   * @namespace Chart._adapters._date\n   * @memberof Chart._adapters\n   * @private\n   */\n\n  /**\n   * Currently supported unit string values.\n   * @typedef {('millisecond'|'second'|'minute'|'hour'|'day'|'week'|'month'|'quarter'|'year')}\n   * @memberof Chart._adapters._date\n   * @name Unit\n   */\n\n  /**\n   * @class\n   */\n\n\n  function DateAdapter(options) {\n    this.options = options || {};\n  }\n\n  helpers$1.extend(DateAdapter.prototype,\n  /** @lends DateAdapter */\n  {\n    /**\n     * Returns a map of time formats for the supported formatting units defined\n     * in Unit as well as 'datetime' representing a detailed date/time string.\n     * @returns {{string: string}}\n     */\n    formats: _abstract,\n\n    /**\n     * Parses the given `value` and return the associated timestamp.\n     * @param {any} value - the value to parse (usually comes from the data)\n     * @param {string} [format] - the expected data format\n     * @returns {(number|null)}\n     * @function\n     */\n    parse: _abstract,\n\n    /**\n     * Returns the formatted date in the specified `format` for a given `timestamp`.\n     * @param {number} timestamp - the timestamp to format\n     * @param {string} format - the date/time token\n     * @return {string}\n     * @function\n     */\n    format: _abstract,\n\n    /**\n     * Adds the specified `amount` of `unit` to the given `timestamp`.\n     * @param {number} timestamp - the input timestamp\n     * @param {number} amount - the amount to add\n     * @param {Unit} unit - the unit as string\n     * @return {number}\n     * @function\n     */\n    add: _abstract,\n\n    /**\n     * Returns the number of `unit` between the given timestamps.\n     * @param {number} max - the input timestamp (reference)\n     * @param {number} min - the timestamp to substract\n     * @param {Unit} unit - the unit as string\n     * @return {number}\n     * @function\n     */\n    diff: _abstract,\n\n    /**\n     * Returns start of `unit` for the given `timestamp`.\n     * @param {number} timestamp - the input timestamp\n     * @param {Unit} unit - the unit as string\n     * @param {number} [weekday] - the ISO day of the week with 1 being Monday\n     * and 7 being Sunday (only needed if param *unit* is `isoWeek`).\n     * @function\n     */\n    startOf: _abstract,\n\n    /**\n     * Returns end of `unit` for the given `timestamp`.\n     * @param {number} timestamp - the input timestamp\n     * @param {Unit} unit - the unit as string\n     * @function\n     */\n    endOf: _abstract,\n    // DEPRECATIONS\n\n    /**\n     * Provided for backward compatibility for scale.getValueForPixel(),\n     * this method should be overridden only by the moment adapter.\n     * @deprecated since version 2.8.0\n     * @todo remove at version 3\n     * @private\n     */\n    _create: function _create(value) {\n      return value;\n    }\n  });\n\n  DateAdapter.override = function (members) {\n    helpers$1.extend(DateAdapter.prototype, members);\n  };\n\n  var _date = DateAdapter;\n  var core_adapters = {\n    _date: _date\n  };\n  /**\n   * Namespace to hold static tick generation functions\n   * @namespace Chart.Ticks\n   */\n\n  var core_ticks = {\n    /**\n     * Namespace to hold formatters for different types of ticks\n     * @namespace Chart.Ticks.formatters\n     */\n    formatters: {\n      /**\n       * Formatter for value labels\n       * @method Chart.Ticks.formatters.values\n       * @param value the value to display\n       * @return {string|string[]} the label to display\n       */\n      values: function values(value) {\n        return helpers$1.isArray(value) ? value : '' + value;\n      },\n\n      /**\n       * Formatter for linear numeric ticks\n       * @method Chart.Ticks.formatters.linear\n       * @param tickValue {number} the value to be formatted\n       * @param index {number} the position of the tickValue parameter in the ticks array\n       * @param ticks {number[]} the list of ticks being converted\n       * @return {string} string representation of the tickValue parameter\n       */\n      linear: function linear(tickValue, index, ticks) {\n        // If we have lots of ticks, don't use the ones\n        var delta = ticks.length > 3 ? ticks[2] - ticks[1] : ticks[1] - ticks[0]; // If we have a number like 2.5 as the delta, figure out how many decimal places we need\n\n        if (Math.abs(delta) > 1) {\n          if (tickValue !== Math.floor(tickValue)) {\n            // not an integer\n            delta = tickValue - Math.floor(tickValue);\n          }\n        }\n\n        var logDelta = helpers$1.log10(Math.abs(delta));\n        var tickString = '';\n\n        if (tickValue !== 0) {\n          var maxTick = Math.max(Math.abs(ticks[0]), Math.abs(ticks[ticks.length - 1]));\n\n          if (maxTick < 1e-4) {\n            // all ticks are small numbers; use scientific notation\n            var logTick = helpers$1.log10(Math.abs(tickValue));\n            var numExponential = Math.floor(logTick) - Math.floor(logDelta);\n            numExponential = Math.max(Math.min(numExponential, 20), 0);\n            tickString = tickValue.toExponential(numExponential);\n          } else {\n            var numDecimal = -1 * Math.floor(logDelta);\n            numDecimal = Math.max(Math.min(numDecimal, 20), 0); // toFixed has a max of 20 decimal places\n\n            tickString = tickValue.toFixed(numDecimal);\n          }\n        } else {\n          tickString = '0'; // never show decimal places for 0\n        }\n\n        return tickString;\n      },\n      logarithmic: function logarithmic(tickValue, index, ticks) {\n        var remain = tickValue / Math.pow(10, Math.floor(helpers$1.log10(tickValue)));\n\n        if (tickValue === 0) {\n          return '0';\n        } else if (remain === 1 || remain === 2 || remain === 5 || index === 0 || index === ticks.length - 1) {\n          return tickValue.toExponential();\n        }\n\n        return '';\n      }\n    }\n  };\n  var isArray = helpers$1.isArray;\n  var isNullOrUndef = helpers$1.isNullOrUndef;\n  var valueOrDefault$a = helpers$1.valueOrDefault;\n  var valueAtIndexOrDefault = helpers$1.valueAtIndexOrDefault;\n\n  core_defaults._set('scale', {\n    display: true,\n    position: 'left',\n    offset: false,\n    // grid line settings\n    gridLines: {\n      display: true,\n      color: 'rgba(0,0,0,0.1)',\n      lineWidth: 1,\n      drawBorder: true,\n      drawOnChartArea: true,\n      drawTicks: true,\n      tickMarkLength: 10,\n      zeroLineWidth: 1,\n      zeroLineColor: 'rgba(0,0,0,0.25)',\n      zeroLineBorderDash: [],\n      zeroLineBorderDashOffset: 0.0,\n      offsetGridLines: false,\n      borderDash: [],\n      borderDashOffset: 0.0\n    },\n    // scale label\n    scaleLabel: {\n      // display property\n      display: false,\n      // actual label\n      labelString: '',\n      // top/bottom padding\n      padding: {\n        top: 4,\n        bottom: 4\n      }\n    },\n    // label settings\n    ticks: {\n      beginAtZero: false,\n      minRotation: 0,\n      maxRotation: 50,\n      mirror: false,\n      padding: 0,\n      reverse: false,\n      display: true,\n      autoSkip: true,\n      autoSkipPadding: 0,\n      labelOffset: 0,\n      // We pass through arrays to be rendered as multiline labels, we convert Others to strings here.\n      callback: core_ticks.formatters.values,\n      minor: {},\n      major: {}\n    }\n  });\n  /** Returns a new array containing numItems from arr */\n\n\n  function sample(arr, numItems) {\n    var result = [];\n    var increment = arr.length / numItems;\n    var i = 0;\n    var len = arr.length;\n\n    for (; i < len; i += increment) {\n      result.push(arr[Math.floor(i)]);\n    }\n\n    return result;\n  }\n\n  function getPixelForGridLine(scale, index, offsetGridLines) {\n    var length = scale.getTicks().length;\n    var validIndex = Math.min(index, length - 1);\n    var lineValue = scale.getPixelForTick(validIndex);\n    var start = scale._startPixel;\n    var end = scale._endPixel;\n    var epsilon = 1e-6; // 1e-6 is margin in pixels for accumulated error.\n\n    var offset;\n\n    if (offsetGridLines) {\n      if (length === 1) {\n        offset = Math.max(lineValue - start, end - lineValue);\n      } else if (index === 0) {\n        offset = (scale.getPixelForTick(1) - lineValue) / 2;\n      } else {\n        offset = (lineValue - scale.getPixelForTick(validIndex - 1)) / 2;\n      }\n\n      lineValue += validIndex < index ? offset : -offset; // Return undefined if the pixel is out of the range\n\n      if (lineValue < start - epsilon || lineValue > end + epsilon) {\n        return;\n      }\n    }\n\n    return lineValue;\n  }\n\n  function garbageCollect(caches, length) {\n    helpers$1.each(caches, function (cache) {\n      var gc = cache.gc;\n      var gcLen = gc.length / 2;\n      var i;\n\n      if (gcLen > length) {\n        for (i = 0; i < gcLen; ++i) {\n          delete cache.data[gc[i]];\n        }\n\n        gc.splice(0, gcLen);\n      }\n    });\n  }\n  /**\n   * Returns {width, height, offset} objects for the first, last, widest, highest tick\n   * labels where offset indicates the anchor point offset from the top in pixels.\n   */\n\n\n  function computeLabelSizes(ctx, tickFonts, ticks, caches) {\n    var length = ticks.length;\n    var widths = [];\n    var heights = [];\n    var offsets = [];\n    var i, j, jlen, label, tickFont, fontString, cache, lineHeight, width, height, nestedLabel, widest, highest;\n\n    for (i = 0; i < length; ++i) {\n      label = ticks[i].label;\n      tickFont = ticks[i].major ? tickFonts.major : tickFonts.minor;\n      ctx.font = fontString = tickFont.string;\n      cache = caches[fontString] = caches[fontString] || {\n        data: {},\n        gc: []\n      };\n      lineHeight = tickFont.lineHeight;\n      width = height = 0; // Undefined labels and arrays should not be measured\n\n      if (!isNullOrUndef(label) && !isArray(label)) {\n        width = helpers$1.measureText(ctx, cache.data, cache.gc, width, label);\n        height = lineHeight;\n      } else if (isArray(label)) {\n        // if it is an array let's measure each element\n        for (j = 0, jlen = label.length; j < jlen; ++j) {\n          nestedLabel = label[j]; // Undefined labels and arrays should not be measured\n\n          if (!isNullOrUndef(nestedLabel) && !isArray(nestedLabel)) {\n            width = helpers$1.measureText(ctx, cache.data, cache.gc, width, nestedLabel);\n            height += lineHeight;\n          }\n        }\n      }\n\n      widths.push(width);\n      heights.push(height);\n      offsets.push(lineHeight / 2);\n    }\n\n    garbageCollect(caches, length);\n    widest = widths.indexOf(Math.max.apply(null, widths));\n    highest = heights.indexOf(Math.max.apply(null, heights));\n\n    function valueAt(idx) {\n      return {\n        width: widths[idx] || 0,\n        height: heights[idx] || 0,\n        offset: offsets[idx] || 0\n      };\n    }\n\n    return {\n      first: valueAt(0),\n      last: valueAt(length - 1),\n      widest: valueAt(widest),\n      highest: valueAt(highest)\n    };\n  }\n\n  function getTickMarkLength(options) {\n    return options.drawTicks ? options.tickMarkLength : 0;\n  }\n\n  function getScaleLabelHeight(options) {\n    var font, padding;\n\n    if (!options.display) {\n      return 0;\n    }\n\n    font = helpers$1.options._parseFont(options);\n    padding = helpers$1.options.toPadding(options.padding);\n    return font.lineHeight + padding.height;\n  }\n\n  function parseFontOptions(options, nestedOpts) {\n    return helpers$1.extend(helpers$1.options._parseFont({\n      fontFamily: valueOrDefault$a(nestedOpts.fontFamily, options.fontFamily),\n      fontSize: valueOrDefault$a(nestedOpts.fontSize, options.fontSize),\n      fontStyle: valueOrDefault$a(nestedOpts.fontStyle, options.fontStyle),\n      lineHeight: valueOrDefault$a(nestedOpts.lineHeight, options.lineHeight)\n    }), {\n      color: helpers$1.options.resolve([nestedOpts.fontColor, options.fontColor, core_defaults.global.defaultFontColor])\n    });\n  }\n\n  function parseTickFontOptions(options) {\n    var minor = parseFontOptions(options, options.minor);\n    var major = options.major.enabled ? parseFontOptions(options, options.major) : minor;\n    return {\n      minor: minor,\n      major: major\n    };\n  }\n\n  function nonSkipped(ticksToFilter) {\n    var filtered = [];\n    var item, index, len;\n\n    for (index = 0, len = ticksToFilter.length; index < len; ++index) {\n      item = ticksToFilter[index];\n\n      if (typeof item._index !== 'undefined') {\n        filtered.push(item);\n      }\n    }\n\n    return filtered;\n  }\n\n  function getEvenSpacing(arr) {\n    var len = arr.length;\n    var i, diff;\n\n    if (len < 2) {\n      return false;\n    }\n\n    for (diff = arr[0], i = 1; i < len; ++i) {\n      if (arr[i] - arr[i - 1] !== diff) {\n        return false;\n      }\n    }\n\n    return diff;\n  }\n\n  function calculateSpacing(majorIndices, ticks, axisLength, ticksLimit) {\n    var evenMajorSpacing = getEvenSpacing(majorIndices);\n    var spacing = (ticks.length - 1) / ticksLimit;\n    var factors, factor, i, ilen; // If the major ticks are evenly spaced apart, place the minor ticks\n    // so that they divide the major ticks into even chunks\n\n    if (!evenMajorSpacing) {\n      return Math.max(spacing, 1);\n    }\n\n    factors = helpers$1.math._factorize(evenMajorSpacing);\n\n    for (i = 0, ilen = factors.length - 1; i < ilen; i++) {\n      factor = factors[i];\n\n      if (factor > spacing) {\n        return factor;\n      }\n    }\n\n    return Math.max(spacing, 1);\n  }\n\n  function getMajorIndices(ticks) {\n    var result = [];\n    var i, ilen;\n\n    for (i = 0, ilen = ticks.length; i < ilen; i++) {\n      if (ticks[i].major) {\n        result.push(i);\n      }\n    }\n\n    return result;\n  }\n\n  function skipMajors(ticks, majorIndices, spacing) {\n    var count = 0;\n    var next = majorIndices[0];\n    var i, tick;\n    spacing = Math.ceil(spacing);\n\n    for (i = 0; i < ticks.length; i++) {\n      tick = ticks[i];\n\n      if (i === next) {\n        tick._index = i;\n        count++;\n        next = majorIndices[count * spacing];\n      } else {\n        delete tick.label;\n      }\n    }\n  }\n\n  function skip(ticks, spacing, majorStart, majorEnd) {\n    var start = valueOrDefault$a(majorStart, 0);\n    var end = Math.min(valueOrDefault$a(majorEnd, ticks.length), ticks.length);\n    var count = 0;\n    var length, i, tick, next;\n    spacing = Math.ceil(spacing);\n\n    if (majorEnd) {\n      length = majorEnd - majorStart;\n      spacing = length / Math.floor(length / spacing);\n    }\n\n    next = start;\n\n    while (next < 0) {\n      count++;\n      next = Math.round(start + count * spacing);\n    }\n\n    for (i = Math.max(start, 0); i < end; i++) {\n      tick = ticks[i];\n\n      if (i === next) {\n        tick._index = i;\n        count++;\n        next = Math.round(start + count * spacing);\n      } else {\n        delete tick.label;\n      }\n    }\n  }\n\n  var Scale = core_element.extend({\n    zeroLineIndex: 0,\n\n    /**\n     * Get the padding needed for the scale\n     * @method getPadding\n     * @private\n     * @returns {Padding} the necessary padding\n     */\n    getPadding: function getPadding() {\n      var me = this;\n      return {\n        left: me.paddingLeft || 0,\n        top: me.paddingTop || 0,\n        right: me.paddingRight || 0,\n        bottom: me.paddingBottom || 0\n      };\n    },\n\n    /**\n     * Returns the scale tick objects ({label, major})\n     * @since 2.7\n     */\n    getTicks: function getTicks() {\n      return this._ticks;\n    },\n\n    /**\n    * @private\n    */\n    _getLabels: function _getLabels() {\n      var data = this.chart.data;\n      return this.options.labels || (this.isHorizontal() ? data.xLabels : data.yLabels) || data.labels || [];\n    },\n    // These methods are ordered by lifecyle. Utilities then follow.\n    // Any function defined here is inherited by all scale types.\n    // Any function can be extended by the scale type\n\n    /**\n     * Provided for backward compatibility, not available anymore\n     * @function Chart.Scale.mergeTicksOptions\n     * @deprecated since version 2.8.0\n     * @todo remove at version 3\n     */\n    mergeTicksOptions: function mergeTicksOptions() {// noop\n    },\n    beforeUpdate: function beforeUpdate() {\n      helpers$1.callback(this.options.beforeUpdate, [this]);\n    },\n\n    /**\n     * @param {number} maxWidth - the max width in pixels\n     * @param {number} maxHeight - the max height in pixels\n     * @param {object} margins - the space between the edge of the other scales and edge of the chart\n     *   This space comes from two sources:\n     *     - padding - space that's required to show the labels at the edges of the scale\n     *     - thickness of scales or legends in another orientation\n     */\n    update: function update(maxWidth, maxHeight, margins) {\n      var me = this;\n      var tickOpts = me.options.ticks;\n      var sampleSize = tickOpts.sampleSize;\n      var i, ilen, labels, ticks, samplingEnabled; // Update Lifecycle - Probably don't want to ever extend or overwrite this function ;)\n\n      me.beforeUpdate(); // Absorb the master measurements\n\n      me.maxWidth = maxWidth;\n      me.maxHeight = maxHeight;\n      me.margins = helpers$1.extend({\n        left: 0,\n        right: 0,\n        top: 0,\n        bottom: 0\n      }, margins);\n      me._ticks = null;\n      me.ticks = null;\n      me._labelSizes = null;\n      me._maxLabelLines = 0;\n      me.longestLabelWidth = 0;\n      me.longestTextCache = me.longestTextCache || {};\n      me._gridLineItems = null;\n      me._labelItems = null; // Dimensions\n\n      me.beforeSetDimensions();\n      me.setDimensions();\n      me.afterSetDimensions(); // Data min/max\n\n      me.beforeDataLimits();\n      me.determineDataLimits();\n      me.afterDataLimits(); // Ticks - `this.ticks` is now DEPRECATED!\n      // Internal ticks are now stored as objects in the PRIVATE `this._ticks` member\n      // and must not be accessed directly from outside this class. `this.ticks` being\n      // around for long time and not marked as private, we can't change its structure\n      // without unexpected breaking changes. If you need to access the scale ticks,\n      // use scale.getTicks() instead.\n\n      me.beforeBuildTicks(); // New implementations should return an array of objects but for BACKWARD COMPAT,\n      // we still support no return (`this.ticks` internally set by calling this method).\n\n      ticks = me.buildTicks() || []; // Allow modification of ticks in callback.\n\n      ticks = me.afterBuildTicks(ticks) || ticks; // Ensure ticks contains ticks in new tick format\n\n      if ((!ticks || !ticks.length) && me.ticks) {\n        ticks = [];\n\n        for (i = 0, ilen = me.ticks.length; i < ilen; ++i) {\n          ticks.push({\n            value: me.ticks[i],\n            major: false\n          });\n        }\n      }\n\n      me._ticks = ticks; // Compute tick rotation and fit using a sampled subset of labels\n      // We generally don't need to compute the size of every single label for determining scale size\n\n      samplingEnabled = sampleSize < ticks.length;\n      labels = me._convertTicksToLabels(samplingEnabled ? sample(ticks, sampleSize) : ticks); // _configure is called twice, once here, once from core.controller.updateLayout.\n      // Here we haven't been positioned yet, but dimensions are correct.\n      // Variables set in _configure are needed for calculateTickRotation, and\n      // it's ok that coordinates are not correct there, only dimensions matter.\n\n      me._configure(); // Tick Rotation\n\n\n      me.beforeCalculateTickRotation();\n      me.calculateTickRotation();\n      me.afterCalculateTickRotation();\n      me.beforeFit();\n      me.fit();\n      me.afterFit(); // Auto-skip\n\n      me._ticksToDraw = tickOpts.display && (tickOpts.autoSkip || tickOpts.source === 'auto') ? me._autoSkip(ticks) : ticks;\n\n      if (samplingEnabled) {\n        // Generate labels using all non-skipped ticks\n        labels = me._convertTicksToLabels(me._ticksToDraw);\n      }\n\n      me.ticks = labels; // BACKWARD COMPATIBILITY\n      // IMPORTANT: after this point, we consider that `this.ticks` will NEVER change!\n\n      me.afterUpdate(); // TODO(v3): remove minSize as a public property and return value from all layout boxes. It is unused\n      // make maxWidth and maxHeight private\n\n      return me.minSize;\n    },\n\n    /**\n     * @private\n     */\n    _configure: function _configure() {\n      var me = this;\n      var reversePixels = me.options.ticks.reverse;\n      var startPixel, endPixel;\n\n      if (me.isHorizontal()) {\n        startPixel = me.left;\n        endPixel = me.right;\n      } else {\n        startPixel = me.top;\n        endPixel = me.bottom; // by default vertical scales are from bottom to top, so pixels are reversed\n\n        reversePixels = !reversePixels;\n      }\n\n      me._startPixel = startPixel;\n      me._endPixel = endPixel;\n      me._reversePixels = reversePixels;\n      me._length = endPixel - startPixel;\n    },\n    afterUpdate: function afterUpdate() {\n      helpers$1.callback(this.options.afterUpdate, [this]);\n    },\n    //\n    beforeSetDimensions: function beforeSetDimensions() {\n      helpers$1.callback(this.options.beforeSetDimensions, [this]);\n    },\n    setDimensions: function setDimensions() {\n      var me = this; // Set the unconstrained dimension before label rotation\n\n      if (me.isHorizontal()) {\n        // Reset position before calculating rotation\n        me.width = me.maxWidth;\n        me.left = 0;\n        me.right = me.width;\n      } else {\n        me.height = me.maxHeight; // Reset position before calculating rotation\n\n        me.top = 0;\n        me.bottom = me.height;\n      } // Reset padding\n\n\n      me.paddingLeft = 0;\n      me.paddingTop = 0;\n      me.paddingRight = 0;\n      me.paddingBottom = 0;\n    },\n    afterSetDimensions: function afterSetDimensions() {\n      helpers$1.callback(this.options.afterSetDimensions, [this]);\n    },\n    // Data limits\n    beforeDataLimits: function beforeDataLimits() {\n      helpers$1.callback(this.options.beforeDataLimits, [this]);\n    },\n    determineDataLimits: helpers$1.noop,\n    afterDataLimits: function afterDataLimits() {\n      helpers$1.callback(this.options.afterDataLimits, [this]);\n    },\n    //\n    beforeBuildTicks: function beforeBuildTicks() {\n      helpers$1.callback(this.options.beforeBuildTicks, [this]);\n    },\n    buildTicks: helpers$1.noop,\n    afterBuildTicks: function afterBuildTicks(ticks) {\n      var me = this; // ticks is empty for old axis implementations here\n\n      if (isArray(ticks) && ticks.length) {\n        return helpers$1.callback(me.options.afterBuildTicks, [me, ticks]);\n      } // Support old implementations (that modified `this.ticks` directly in buildTicks)\n\n\n      me.ticks = helpers$1.callback(me.options.afterBuildTicks, [me, me.ticks]) || me.ticks;\n      return ticks;\n    },\n    beforeTickToLabelConversion: function beforeTickToLabelConversion() {\n      helpers$1.callback(this.options.beforeTickToLabelConversion, [this]);\n    },\n    convertTicksToLabels: function convertTicksToLabels() {\n      var me = this; // Convert ticks to strings\n\n      var tickOpts = me.options.ticks;\n      me.ticks = me.ticks.map(tickOpts.userCallback || tickOpts.callback, this);\n    },\n    afterTickToLabelConversion: function afterTickToLabelConversion() {\n      helpers$1.callback(this.options.afterTickToLabelConversion, [this]);\n    },\n    //\n    beforeCalculateTickRotation: function beforeCalculateTickRotation() {\n      helpers$1.callback(this.options.beforeCalculateTickRotation, [this]);\n    },\n    calculateTickRotation: function calculateTickRotation() {\n      var me = this;\n      var options = me.options;\n      var tickOpts = options.ticks;\n      var numTicks = me.getTicks().length;\n      var minRotation = tickOpts.minRotation || 0;\n      var maxRotation = tickOpts.maxRotation;\n      var labelRotation = minRotation;\n      var labelSizes, maxLabelWidth, maxLabelHeight, maxWidth, tickWidth, maxHeight, maxLabelDiagonal;\n\n      if (!me._isVisible() || !tickOpts.display || minRotation >= maxRotation || numTicks <= 1 || !me.isHorizontal()) {\n        me.labelRotation = minRotation;\n        return;\n      }\n\n      labelSizes = me._getLabelSizes();\n      maxLabelWidth = labelSizes.widest.width;\n      maxLabelHeight = labelSizes.highest.height - labelSizes.highest.offset; // Estimate the width of each grid based on the canvas width, the maximum\n      // label width and the number of tick intervals\n\n      maxWidth = Math.min(me.maxWidth, me.chart.width - maxLabelWidth);\n      tickWidth = options.offset ? me.maxWidth / numTicks : maxWidth / (numTicks - 1); // Allow 3 pixels x2 padding either side for label readability\n\n      if (maxLabelWidth + 6 > tickWidth) {\n        tickWidth = maxWidth / (numTicks - (options.offset ? 0.5 : 1));\n        maxHeight = me.maxHeight - getTickMarkLength(options.gridLines) - tickOpts.padding - getScaleLabelHeight(options.scaleLabel);\n        maxLabelDiagonal = Math.sqrt(maxLabelWidth * maxLabelWidth + maxLabelHeight * maxLabelHeight);\n        labelRotation = helpers$1.toDegrees(Math.min(Math.asin(Math.min((labelSizes.highest.height + 6) / tickWidth, 1)), Math.asin(Math.min(maxHeight / maxLabelDiagonal, 1)) - Math.asin(maxLabelHeight / maxLabelDiagonal)));\n        labelRotation = Math.max(minRotation, Math.min(maxRotation, labelRotation));\n      }\n\n      me.labelRotation = labelRotation;\n    },\n    afterCalculateTickRotation: function afterCalculateTickRotation() {\n      helpers$1.callback(this.options.afterCalculateTickRotation, [this]);\n    },\n    //\n    beforeFit: function beforeFit() {\n      helpers$1.callback(this.options.beforeFit, [this]);\n    },\n    fit: function fit() {\n      var me = this; // Reset\n\n      var minSize = me.minSize = {\n        width: 0,\n        height: 0\n      };\n      var chart = me.chart;\n      var opts = me.options;\n      var tickOpts = opts.ticks;\n      var scaleLabelOpts = opts.scaleLabel;\n      var gridLineOpts = opts.gridLines;\n\n      var display = me._isVisible();\n\n      var isBottom = opts.position === 'bottom';\n      var isHorizontal = me.isHorizontal(); // Width\n\n      if (isHorizontal) {\n        minSize.width = me.maxWidth;\n      } else if (display) {\n        minSize.width = getTickMarkLength(gridLineOpts) + getScaleLabelHeight(scaleLabelOpts);\n      } // height\n\n\n      if (!isHorizontal) {\n        minSize.height = me.maxHeight; // fill all the height\n      } else if (display) {\n        minSize.height = getTickMarkLength(gridLineOpts) + getScaleLabelHeight(scaleLabelOpts);\n      } // Don't bother fitting the ticks if we are not showing the labels\n\n\n      if (tickOpts.display && display) {\n        var tickFonts = parseTickFontOptions(tickOpts);\n\n        var labelSizes = me._getLabelSizes();\n\n        var firstLabelSize = labelSizes.first;\n        var lastLabelSize = labelSizes.last;\n        var widestLabelSize = labelSizes.widest;\n        var highestLabelSize = labelSizes.highest;\n        var lineSpace = tickFonts.minor.lineHeight * 0.4;\n        var tickPadding = tickOpts.padding;\n\n        if (isHorizontal) {\n          // A horizontal axis is more constrained by the height.\n          var isRotated = me.labelRotation !== 0;\n          var angleRadians = helpers$1.toRadians(me.labelRotation);\n          var cosRotation = Math.cos(angleRadians);\n          var sinRotation = Math.sin(angleRadians);\n          var labelHeight = sinRotation * widestLabelSize.width + cosRotation * (highestLabelSize.height - (isRotated ? highestLabelSize.offset : 0)) + (isRotated ? 0 : lineSpace); // padding\n\n          minSize.height = Math.min(me.maxHeight, minSize.height + labelHeight + tickPadding);\n          var offsetLeft = me.getPixelForTick(0) - me.left;\n          var offsetRight = me.right - me.getPixelForTick(me.getTicks().length - 1);\n          var paddingLeft, paddingRight; // Ensure that our ticks are always inside the canvas. When rotated, ticks are right aligned\n          // which means that the right padding is dominated by the font height\n\n          if (isRotated) {\n            paddingLeft = isBottom ? cosRotation * firstLabelSize.width + sinRotation * firstLabelSize.offset : sinRotation * (firstLabelSize.height - firstLabelSize.offset);\n            paddingRight = isBottom ? sinRotation * (lastLabelSize.height - lastLabelSize.offset) : cosRotation * lastLabelSize.width + sinRotation * lastLabelSize.offset;\n          } else {\n            paddingLeft = firstLabelSize.width / 2;\n            paddingRight = lastLabelSize.width / 2;\n          } // Adjust padding taking into account changes in offsets\n          // and add 3 px to move away from canvas edges\n\n\n          me.paddingLeft = Math.max((paddingLeft - offsetLeft) * me.width / (me.width - offsetLeft), 0) + 3;\n          me.paddingRight = Math.max((paddingRight - offsetRight) * me.width / (me.width - offsetRight), 0) + 3;\n        } else {\n          // A vertical axis is more constrained by the width. Labels are the\n          // dominant factor here, so get that length first and account for padding\n          var labelWidth = tickOpts.mirror ? 0 : // use lineSpace for consistency with horizontal axis\n          // tickPadding is not implemented for horizontal\n          widestLabelSize.width + tickPadding + lineSpace;\n          minSize.width = Math.min(me.maxWidth, minSize.width + labelWidth);\n          me.paddingTop = firstLabelSize.height / 2;\n          me.paddingBottom = lastLabelSize.height / 2;\n        }\n      }\n\n      me.handleMargins();\n\n      if (isHorizontal) {\n        me.width = me._length = chart.width - me.margins.left - me.margins.right;\n        me.height = minSize.height;\n      } else {\n        me.width = minSize.width;\n        me.height = me._length = chart.height - me.margins.top - me.margins.bottom;\n      }\n    },\n\n    /**\n     * Handle margins and padding interactions\n     * @private\n     */\n    handleMargins: function handleMargins() {\n      var me = this;\n\n      if (me.margins) {\n        me.margins.left = Math.max(me.paddingLeft, me.margins.left);\n        me.margins.top = Math.max(me.paddingTop, me.margins.top);\n        me.margins.right = Math.max(me.paddingRight, me.margins.right);\n        me.margins.bottom = Math.max(me.paddingBottom, me.margins.bottom);\n      }\n    },\n    afterFit: function afterFit() {\n      helpers$1.callback(this.options.afterFit, [this]);\n    },\n    // Shared Methods\n    isHorizontal: function isHorizontal() {\n      var pos = this.options.position;\n      return pos === 'top' || pos === 'bottom';\n    },\n    isFullWidth: function isFullWidth() {\n      return this.options.fullWidth;\n    },\n    // Get the correct value. NaN bad inputs, If the value type is object get the x or y based on whether we are horizontal or not\n    getRightValue: function getRightValue(rawValue) {\n      // Null and undefined values first\n      if (isNullOrUndef(rawValue)) {\n        return NaN;\n      } // isNaN(object) returns true, so make sure NaN is checking for a number; Discard Infinite values\n\n\n      if ((typeof rawValue === 'number' || rawValue instanceof Number) && !isFinite(rawValue)) {\n        return NaN;\n      } // If it is in fact an object, dive in one more level\n\n\n      if (rawValue) {\n        if (this.isHorizontal()) {\n          if (rawValue.x !== undefined) {\n            return this.getRightValue(rawValue.x);\n          }\n        } else if (rawValue.y !== undefined) {\n          return this.getRightValue(rawValue.y);\n        }\n      } // Value is good, return it\n\n\n      return rawValue;\n    },\n    _convertTicksToLabels: function _convertTicksToLabels(ticks) {\n      var me = this;\n      var labels, i, ilen;\n      me.ticks = ticks.map(function (tick) {\n        return tick.value;\n      });\n      me.beforeTickToLabelConversion(); // New implementations should return the formatted tick labels but for BACKWARD\n      // COMPAT, we still support no return (`this.ticks` internally changed by calling\n      // this method and supposed to contain only string values).\n\n      labels = me.convertTicksToLabels(ticks) || me.ticks;\n      me.afterTickToLabelConversion(); // BACKWARD COMPAT: synchronize `_ticks` with labels (so potentially `this.ticks`)\n\n      for (i = 0, ilen = ticks.length; i < ilen; ++i) {\n        ticks[i].label = labels[i];\n      }\n\n      return labels;\n    },\n\n    /**\n     * @private\n     */\n    _getLabelSizes: function _getLabelSizes() {\n      var me = this;\n      var labelSizes = me._labelSizes;\n\n      if (!labelSizes) {\n        me._labelSizes = labelSizes = computeLabelSizes(me.ctx, parseTickFontOptions(me.options.ticks), me.getTicks(), me.longestTextCache);\n        me.longestLabelWidth = labelSizes.widest.width;\n      }\n\n      return labelSizes;\n    },\n\n    /**\n     * @private\n     */\n    _parseValue: function _parseValue(value) {\n      var start, end, min, max;\n\n      if (isArray(value)) {\n        start = +this.getRightValue(value[0]);\n        end = +this.getRightValue(value[1]);\n        min = Math.min(start, end);\n        max = Math.max(start, end);\n      } else {\n        value = +this.getRightValue(value);\n        start = undefined;\n        end = value;\n        min = value;\n        max = value;\n      }\n\n      return {\n        min: min,\n        max: max,\n        start: start,\n        end: end\n      };\n    },\n\n    /**\n    * @private\n    */\n    _getScaleLabel: function _getScaleLabel(rawValue) {\n      var v = this._parseValue(rawValue);\n\n      if (v.start !== undefined) {\n        return '[' + v.start + ', ' + v.end + ']';\n      }\n\n      return +this.getRightValue(rawValue);\n    },\n\n    /**\n     * Used to get the value to display in the tooltip for the data at the given index\n     * @param index\n     * @param datasetIndex\n     */\n    getLabelForIndex: helpers$1.noop,\n\n    /**\n     * Returns the location of the given data point. Value can either be an index or a numerical value\n     * The coordinate (0, 0) is at the upper-left corner of the canvas\n     * @param value\n     * @param index\n     * @param datasetIndex\n     */\n    getPixelForValue: helpers$1.noop,\n\n    /**\n     * Used to get the data value from a given pixel. This is the inverse of getPixelForValue\n     * The coordinate (0, 0) is at the upper-left corner of the canvas\n     * @param pixel\n     */\n    getValueForPixel: helpers$1.noop,\n\n    /**\n     * Returns the location of the tick at the given index\n     * The coordinate (0, 0) is at the upper-left corner of the canvas\n     */\n    getPixelForTick: function getPixelForTick(index) {\n      var me = this;\n      var offset = me.options.offset;\n      var numTicks = me._ticks.length;\n      var tickWidth = 1 / Math.max(numTicks - (offset ? 0 : 1), 1);\n      return index < 0 || index > numTicks - 1 ? null : me.getPixelForDecimal(index * tickWidth + (offset ? tickWidth / 2 : 0));\n    },\n\n    /**\n     * Utility for getting the pixel location of a percentage of scale\n     * The coordinate (0, 0) is at the upper-left corner of the canvas\n     */\n    getPixelForDecimal: function getPixelForDecimal(decimal) {\n      var me = this;\n\n      if (me._reversePixels) {\n        decimal = 1 - decimal;\n      }\n\n      return me._startPixel + decimal * me._length;\n    },\n    getDecimalForPixel: function getDecimalForPixel(pixel) {\n      var decimal = (pixel - this._startPixel) / this._length;\n      return this._reversePixels ? 1 - decimal : decimal;\n    },\n\n    /**\n     * Returns the pixel for the minimum chart value\n     * The coordinate (0, 0) is at the upper-left corner of the canvas\n     */\n    getBasePixel: function getBasePixel() {\n      return this.getPixelForValue(this.getBaseValue());\n    },\n    getBaseValue: function getBaseValue() {\n      var me = this;\n      var min = me.min;\n      var max = me.max;\n      return me.beginAtZero ? 0 : min < 0 && max < 0 ? max : min > 0 && max > 0 ? min : 0;\n    },\n\n    /**\n     * Returns a subset of ticks to be plotted to avoid overlapping labels.\n     * @private\n     */\n    _autoSkip: function _autoSkip(ticks) {\n      var me = this;\n      var tickOpts = me.options.ticks;\n      var axisLength = me._length;\n      var ticksLimit = tickOpts.maxTicksLimit || axisLength / me._tickSize() + 1;\n      var majorIndices = tickOpts.major.enabled ? getMajorIndices(ticks) : [];\n      var numMajorIndices = majorIndices.length;\n      var first = majorIndices[0];\n      var last = majorIndices[numMajorIndices - 1];\n      var i, ilen, spacing, avgMajorSpacing; // If there are too many major ticks to display them all\n\n      if (numMajorIndices > ticksLimit) {\n        skipMajors(ticks, majorIndices, numMajorIndices / ticksLimit);\n        return nonSkipped(ticks);\n      }\n\n      spacing = calculateSpacing(majorIndices, ticks, axisLength, ticksLimit);\n\n      if (numMajorIndices > 0) {\n        for (i = 0, ilen = numMajorIndices - 1; i < ilen; i++) {\n          skip(ticks, spacing, majorIndices[i], majorIndices[i + 1]);\n        }\n\n        avgMajorSpacing = numMajorIndices > 1 ? (last - first) / (numMajorIndices - 1) : null;\n        skip(ticks, spacing, helpers$1.isNullOrUndef(avgMajorSpacing) ? 0 : first - avgMajorSpacing, first);\n        skip(ticks, spacing, last, helpers$1.isNullOrUndef(avgMajorSpacing) ? ticks.length : last + avgMajorSpacing);\n        return nonSkipped(ticks);\n      }\n\n      skip(ticks, spacing);\n      return nonSkipped(ticks);\n    },\n\n    /**\n     * @private\n     */\n    _tickSize: function _tickSize() {\n      var me = this;\n      var optionTicks = me.options.ticks; // Calculate space needed by label in axis direction.\n\n      var rot = helpers$1.toRadians(me.labelRotation);\n      var cos = Math.abs(Math.cos(rot));\n      var sin = Math.abs(Math.sin(rot));\n\n      var labelSizes = me._getLabelSizes();\n\n      var padding = optionTicks.autoSkipPadding || 0;\n      var w = labelSizes ? labelSizes.widest.width + padding : 0;\n      var h = labelSizes ? labelSizes.highest.height + padding : 0; // Calculate space needed for 1 tick in axis direction.\n\n      return me.isHorizontal() ? h * cos > w * sin ? w / cos : h / sin : h * sin < w * cos ? h / cos : w / sin;\n    },\n\n    /**\n     * @private\n     */\n    _isVisible: function _isVisible() {\n      var me = this;\n      var chart = me.chart;\n      var display = me.options.display;\n      var i, ilen, meta;\n\n      if (display !== 'auto') {\n        return !!display;\n      } // When 'auto', the scale is visible if at least one associated dataset is visible.\n\n\n      for (i = 0, ilen = chart.data.datasets.length; i < ilen; ++i) {\n        if (chart.isDatasetVisible(i)) {\n          meta = chart.getDatasetMeta(i);\n\n          if (meta.xAxisID === me.id || meta.yAxisID === me.id) {\n            return true;\n          }\n        }\n      }\n\n      return false;\n    },\n\n    /**\n     * @private\n     */\n    _computeGridLineItems: function _computeGridLineItems(chartArea) {\n      var me = this;\n      var chart = me.chart;\n      var options = me.options;\n      var gridLines = options.gridLines;\n      var position = options.position;\n      var offsetGridLines = gridLines.offsetGridLines;\n      var isHorizontal = me.isHorizontal();\n      var ticks = me._ticksToDraw;\n      var ticksLength = ticks.length + (offsetGridLines ? 1 : 0);\n      var tl = getTickMarkLength(gridLines);\n      var items = [];\n      var axisWidth = gridLines.drawBorder ? valueAtIndexOrDefault(gridLines.lineWidth, 0, 0) : 0;\n      var axisHalfWidth = axisWidth / 2;\n      var alignPixel = helpers$1._alignPixel;\n\n      var alignBorderValue = function alignBorderValue(pixel) {\n        return alignPixel(chart, pixel, axisWidth);\n      };\n\n      var borderValue, i, tick, lineValue, alignedLineValue;\n      var tx1, ty1, tx2, ty2, x1, y1, x2, y2, lineWidth, lineColor, borderDash, borderDashOffset;\n\n      if (position === 'top') {\n        borderValue = alignBorderValue(me.bottom);\n        ty1 = me.bottom - tl;\n        ty2 = borderValue - axisHalfWidth;\n        y1 = alignBorderValue(chartArea.top) + axisHalfWidth;\n        y2 = chartArea.bottom;\n      } else if (position === 'bottom') {\n        borderValue = alignBorderValue(me.top);\n        y1 = chartArea.top;\n        y2 = alignBorderValue(chartArea.bottom) - axisHalfWidth;\n        ty1 = borderValue + axisHalfWidth;\n        ty2 = me.top + tl;\n      } else if (position === 'left') {\n        borderValue = alignBorderValue(me.right);\n        tx1 = me.right - tl;\n        tx2 = borderValue - axisHalfWidth;\n        x1 = alignBorderValue(chartArea.left) + axisHalfWidth;\n        x2 = chartArea.right;\n      } else {\n        borderValue = alignBorderValue(me.left);\n        x1 = chartArea.left;\n        x2 = alignBorderValue(chartArea.right) - axisHalfWidth;\n        tx1 = borderValue + axisHalfWidth;\n        tx2 = me.left + tl;\n      }\n\n      for (i = 0; i < ticksLength; ++i) {\n        tick = ticks[i] || {}; // autoskipper skipped this tick (#4635)\n\n        if (isNullOrUndef(tick.label) && i < ticks.length) {\n          continue;\n        }\n\n        if (i === me.zeroLineIndex && options.offset === offsetGridLines) {\n          // Draw the first index specially\n          lineWidth = gridLines.zeroLineWidth;\n          lineColor = gridLines.zeroLineColor;\n          borderDash = gridLines.zeroLineBorderDash || [];\n          borderDashOffset = gridLines.zeroLineBorderDashOffset || 0.0;\n        } else {\n          lineWidth = valueAtIndexOrDefault(gridLines.lineWidth, i, 1);\n          lineColor = valueAtIndexOrDefault(gridLines.color, i, 'rgba(0,0,0,0.1)');\n          borderDash = gridLines.borderDash || [];\n          borderDashOffset = gridLines.borderDashOffset || 0.0;\n        }\n\n        lineValue = getPixelForGridLine(me, tick._index || i, offsetGridLines); // Skip if the pixel is out of the range\n\n        if (lineValue === undefined) {\n          continue;\n        }\n\n        alignedLineValue = alignPixel(chart, lineValue, lineWidth);\n\n        if (isHorizontal) {\n          tx1 = tx2 = x1 = x2 = alignedLineValue;\n        } else {\n          ty1 = ty2 = y1 = y2 = alignedLineValue;\n        }\n\n        items.push({\n          tx1: tx1,\n          ty1: ty1,\n          tx2: tx2,\n          ty2: ty2,\n          x1: x1,\n          y1: y1,\n          x2: x2,\n          y2: y2,\n          width: lineWidth,\n          color: lineColor,\n          borderDash: borderDash,\n          borderDashOffset: borderDashOffset\n        });\n      }\n\n      items.ticksLength = ticksLength;\n      items.borderValue = borderValue;\n      return items;\n    },\n\n    /**\n     * @private\n     */\n    _computeLabelItems: function _computeLabelItems() {\n      var me = this;\n      var options = me.options;\n      var optionTicks = options.ticks;\n      var position = options.position;\n      var isMirrored = optionTicks.mirror;\n      var isHorizontal = me.isHorizontal();\n      var ticks = me._ticksToDraw;\n      var fonts = parseTickFontOptions(optionTicks);\n      var tickPadding = optionTicks.padding;\n      var tl = getTickMarkLength(options.gridLines);\n      var rotation = -helpers$1.toRadians(me.labelRotation);\n      var items = [];\n      var i, ilen, tick, label, x, y, textAlign, pixel, font, lineHeight, lineCount, textOffset;\n\n      if (position === 'top') {\n        y = me.bottom - tl - tickPadding;\n        textAlign = !rotation ? 'center' : 'left';\n      } else if (position === 'bottom') {\n        y = me.top + tl + tickPadding;\n        textAlign = !rotation ? 'center' : 'right';\n      } else if (position === 'left') {\n        x = me.right - (isMirrored ? 0 : tl) - tickPadding;\n        textAlign = isMirrored ? 'left' : 'right';\n      } else {\n        x = me.left + (isMirrored ? 0 : tl) + tickPadding;\n        textAlign = isMirrored ? 'right' : 'left';\n      }\n\n      for (i = 0, ilen = ticks.length; i < ilen; ++i) {\n        tick = ticks[i];\n        label = tick.label; // autoskipper skipped this tick (#4635)\n\n        if (isNullOrUndef(label)) {\n          continue;\n        }\n\n        pixel = me.getPixelForTick(tick._index || i) + optionTicks.labelOffset;\n        font = tick.major ? fonts.major : fonts.minor;\n        lineHeight = font.lineHeight;\n        lineCount = isArray(label) ? label.length : 1;\n\n        if (isHorizontal) {\n          x = pixel;\n          textOffset = position === 'top' ? ((!rotation ? 0.5 : 1) - lineCount) * lineHeight : (!rotation ? 0.5 : 0) * lineHeight;\n        } else {\n          y = pixel;\n          textOffset = (1 - lineCount) * lineHeight / 2;\n        }\n\n        items.push({\n          x: x,\n          y: y,\n          rotation: rotation,\n          label: label,\n          font: font,\n          textOffset: textOffset,\n          textAlign: textAlign\n        });\n      }\n\n      return items;\n    },\n\n    /**\n     * @private\n     */\n    _drawGrid: function _drawGrid(chartArea) {\n      var me = this;\n      var gridLines = me.options.gridLines;\n\n      if (!gridLines.display) {\n        return;\n      }\n\n      var ctx = me.ctx;\n      var chart = me.chart;\n      var alignPixel = helpers$1._alignPixel;\n      var axisWidth = gridLines.drawBorder ? valueAtIndexOrDefault(gridLines.lineWidth, 0, 0) : 0;\n\n      var items = me._gridLineItems || (me._gridLineItems = me._computeGridLineItems(chartArea));\n\n      var width, color, i, ilen, item;\n\n      for (i = 0, ilen = items.length; i < ilen; ++i) {\n        item = items[i];\n        width = item.width;\n        color = item.color;\n\n        if (width && color) {\n          ctx.save();\n          ctx.lineWidth = width;\n          ctx.strokeStyle = color;\n\n          if (ctx.setLineDash) {\n            ctx.setLineDash(item.borderDash);\n            ctx.lineDashOffset = item.borderDashOffset;\n          }\n\n          ctx.beginPath();\n\n          if (gridLines.drawTicks) {\n            ctx.moveTo(item.tx1, item.ty1);\n            ctx.lineTo(item.tx2, item.ty2);\n          }\n\n          if (gridLines.drawOnChartArea) {\n            ctx.moveTo(item.x1, item.y1);\n            ctx.lineTo(item.x2, item.y2);\n          }\n\n          ctx.stroke();\n          ctx.restore();\n        }\n      }\n\n      if (axisWidth) {\n        // Draw the line at the edge of the axis\n        var firstLineWidth = axisWidth;\n        var lastLineWidth = valueAtIndexOrDefault(gridLines.lineWidth, items.ticksLength - 1, 1);\n        var borderValue = items.borderValue;\n        var x1, x2, y1, y2;\n\n        if (me.isHorizontal()) {\n          x1 = alignPixel(chart, me.left, firstLineWidth) - firstLineWidth / 2;\n          x2 = alignPixel(chart, me.right, lastLineWidth) + lastLineWidth / 2;\n          y1 = y2 = borderValue;\n        } else {\n          y1 = alignPixel(chart, me.top, firstLineWidth) - firstLineWidth / 2;\n          y2 = alignPixel(chart, me.bottom, lastLineWidth) + lastLineWidth / 2;\n          x1 = x2 = borderValue;\n        }\n\n        ctx.lineWidth = axisWidth;\n        ctx.strokeStyle = valueAtIndexOrDefault(gridLines.color, 0);\n        ctx.beginPath();\n        ctx.moveTo(x1, y1);\n        ctx.lineTo(x2, y2);\n        ctx.stroke();\n      }\n    },\n\n    /**\n     * @private\n     */\n    _drawLabels: function _drawLabels() {\n      var me = this;\n      var optionTicks = me.options.ticks;\n\n      if (!optionTicks.display) {\n        return;\n      }\n\n      var ctx = me.ctx;\n\n      var items = me._labelItems || (me._labelItems = me._computeLabelItems());\n\n      var i, j, ilen, jlen, item, tickFont, label, y;\n\n      for (i = 0, ilen = items.length; i < ilen; ++i) {\n        item = items[i];\n        tickFont = item.font; // Make sure we draw text in the correct color and font\n\n        ctx.save();\n        ctx.translate(item.x, item.y);\n        ctx.rotate(item.rotation);\n        ctx.font = tickFont.string;\n        ctx.fillStyle = tickFont.color;\n        ctx.textBaseline = 'middle';\n        ctx.textAlign = item.textAlign;\n        label = item.label;\n        y = item.textOffset;\n\n        if (isArray(label)) {\n          for (j = 0, jlen = label.length; j < jlen; ++j) {\n            // We just make sure the multiline element is a string here..\n            ctx.fillText('' + label[j], 0, y);\n            y += tickFont.lineHeight;\n          }\n        } else {\n          ctx.fillText(label, 0, y);\n        }\n\n        ctx.restore();\n      }\n    },\n\n    /**\n     * @private\n     */\n    _drawTitle: function _drawTitle() {\n      var me = this;\n      var ctx = me.ctx;\n      var options = me.options;\n      var scaleLabel = options.scaleLabel;\n\n      if (!scaleLabel.display) {\n        return;\n      }\n\n      var scaleLabelFontColor = valueOrDefault$a(scaleLabel.fontColor, core_defaults.global.defaultFontColor);\n\n      var scaleLabelFont = helpers$1.options._parseFont(scaleLabel);\n\n      var scaleLabelPadding = helpers$1.options.toPadding(scaleLabel.padding);\n      var halfLineHeight = scaleLabelFont.lineHeight / 2;\n      var position = options.position;\n      var rotation = 0;\n      var scaleLabelX, scaleLabelY;\n\n      if (me.isHorizontal()) {\n        scaleLabelX = me.left + me.width / 2; // midpoint of the width\n\n        scaleLabelY = position === 'bottom' ? me.bottom - halfLineHeight - scaleLabelPadding.bottom : me.top + halfLineHeight + scaleLabelPadding.top;\n      } else {\n        var isLeft = position === 'left';\n        scaleLabelX = isLeft ? me.left + halfLineHeight + scaleLabelPadding.top : me.right - halfLineHeight - scaleLabelPadding.top;\n        scaleLabelY = me.top + me.height / 2;\n        rotation = isLeft ? -0.5 * Math.PI : 0.5 * Math.PI;\n      }\n\n      ctx.save();\n      ctx.translate(scaleLabelX, scaleLabelY);\n      ctx.rotate(rotation);\n      ctx.textAlign = 'center';\n      ctx.textBaseline = 'middle';\n      ctx.fillStyle = scaleLabelFontColor; // render in correct colour\n\n      ctx.font = scaleLabelFont.string;\n      ctx.fillText(scaleLabel.labelString, 0, 0);\n      ctx.restore();\n    },\n    draw: function draw(chartArea) {\n      var me = this;\n\n      if (!me._isVisible()) {\n        return;\n      }\n\n      me._drawGrid(chartArea);\n\n      me._drawTitle();\n\n      me._drawLabels();\n    },\n\n    /**\n     * @private\n     */\n    _layers: function _layers() {\n      var me = this;\n      var opts = me.options;\n      var tz = opts.ticks && opts.ticks.z || 0;\n      var gz = opts.gridLines && opts.gridLines.z || 0;\n\n      if (!me._isVisible() || tz === gz || me.draw !== me._draw) {\n        // backward compatibility: draw has been overridden by custom scale\n        return [{\n          z: tz,\n          draw: function draw() {\n            me.draw.apply(me, arguments);\n          }\n        }];\n      }\n\n      return [{\n        z: gz,\n        draw: function draw() {\n          me._drawGrid.apply(me, arguments);\n\n          me._drawTitle.apply(me, arguments);\n        }\n      }, {\n        z: tz,\n        draw: function draw() {\n          me._drawLabels.apply(me, arguments);\n        }\n      }];\n    },\n\n    /**\n     * @private\n     */\n    _getMatchingVisibleMetas: function _getMatchingVisibleMetas(type) {\n      var me = this;\n      var isHorizontal = me.isHorizontal();\n      return me.chart._getSortedVisibleDatasetMetas().filter(function (meta) {\n        return (!type || meta.type === type) && (isHorizontal ? meta.xAxisID === me.id : meta.yAxisID === me.id);\n      });\n    }\n  });\n  Scale.prototype._draw = Scale.prototype.draw;\n  var core_scale = Scale;\n  var isNullOrUndef$1 = helpers$1.isNullOrUndef;\n  var defaultConfig = {\n    position: 'bottom'\n  };\n  var scale_category = core_scale.extend({\n    determineDataLimits: function determineDataLimits() {\n      var me = this;\n\n      var labels = me._getLabels();\n\n      var ticksOpts = me.options.ticks;\n      var min = ticksOpts.min;\n      var max = ticksOpts.max;\n      var minIndex = 0;\n      var maxIndex = labels.length - 1;\n      var findIndex;\n\n      if (min !== undefined) {\n        // user specified min value\n        findIndex = labels.indexOf(min);\n\n        if (findIndex >= 0) {\n          minIndex = findIndex;\n        }\n      }\n\n      if (max !== undefined) {\n        // user specified max value\n        findIndex = labels.indexOf(max);\n\n        if (findIndex >= 0) {\n          maxIndex = findIndex;\n        }\n      }\n\n      me.minIndex = minIndex;\n      me.maxIndex = maxIndex;\n      me.min = labels[minIndex];\n      me.max = labels[maxIndex];\n    },\n    buildTicks: function buildTicks() {\n      var me = this;\n\n      var labels = me._getLabels();\n\n      var minIndex = me.minIndex;\n      var maxIndex = me.maxIndex; // If we are viewing some subset of labels, slice the original array\n\n      me.ticks = minIndex === 0 && maxIndex === labels.length - 1 ? labels : labels.slice(minIndex, maxIndex + 1);\n    },\n    getLabelForIndex: function getLabelForIndex(index, datasetIndex) {\n      var me = this;\n      var chart = me.chart;\n\n      if (chart.getDatasetMeta(datasetIndex).controller._getValueScaleId() === me.id) {\n        return me.getRightValue(chart.data.datasets[datasetIndex].data[index]);\n      }\n\n      return me._getLabels()[index];\n    },\n    _configure: function _configure() {\n      var me = this;\n      var offset = me.options.offset;\n      var ticks = me.ticks;\n\n      core_scale.prototype._configure.call(me);\n\n      if (!me.isHorizontal()) {\n        // For backward compatibility, vertical category scale reverse is inverted.\n        me._reversePixels = !me._reversePixels;\n      }\n\n      if (!ticks) {\n        return;\n      }\n\n      me._startValue = me.minIndex - (offset ? 0.5 : 0);\n      me._valueRange = Math.max(ticks.length - (offset ? 0 : 1), 1);\n    },\n    // Used to get data value locations.  Value can either be an index or a numerical value\n    getPixelForValue: function getPixelForValue(value, index, datasetIndex) {\n      var me = this;\n      var valueCategory, labels, idx;\n\n      if (!isNullOrUndef$1(index) && !isNullOrUndef$1(datasetIndex)) {\n        value = me.chart.data.datasets[datasetIndex].data[index];\n      } // If value is a data object, then index is the index in the data array,\n      // not the index of the scale. We need to change that.\n\n\n      if (!isNullOrUndef$1(value)) {\n        valueCategory = me.isHorizontal() ? value.x : value.y;\n      }\n\n      if (valueCategory !== undefined || value !== undefined && isNaN(index)) {\n        labels = me._getLabels();\n        value = helpers$1.valueOrDefault(valueCategory, value);\n        idx = labels.indexOf(value);\n        index = idx !== -1 ? idx : index;\n\n        if (isNaN(index)) {\n          index = value;\n        }\n      }\n\n      return me.getPixelForDecimal((index - me._startValue) / me._valueRange);\n    },\n    getPixelForTick: function getPixelForTick(index) {\n      var ticks = this.ticks;\n      return index < 0 || index > ticks.length - 1 ? null : this.getPixelForValue(ticks[index], index + this.minIndex);\n    },\n    getValueForPixel: function getValueForPixel(pixel) {\n      var me = this;\n      var value = Math.round(me._startValue + me.getDecimalForPixel(pixel) * me._valueRange);\n      return Math.min(Math.max(value, 0), me.ticks.length - 1);\n    },\n    getBasePixel: function getBasePixel() {\n      return this.bottom;\n    }\n  }); // INTERNAL: static default options, registered in src/index.js\n\n  var _defaults = defaultConfig;\n  scale_category._defaults = _defaults;\n  var noop = helpers$1.noop;\n  var isNullOrUndef$2 = helpers$1.isNullOrUndef;\n  /**\n   * Generate a set of linear ticks\n   * @param generationOptions the options used to generate the ticks\n   * @param dataRange the range of the data\n   * @returns {number[]} array of tick values\n   */\n\n  function generateTicks(generationOptions, dataRange) {\n    var ticks = []; // To get a \"nice\" value for the tick spacing, we will use the appropriately named\n    // \"nice number\" algorithm. See https://stackoverflow.com/questions/8506881/nice-label-algorithm-for-charts-with-minimum-ticks\n    // for details.\n\n    var MIN_SPACING = 1e-14;\n    var stepSize = generationOptions.stepSize;\n    var unit = stepSize || 1;\n    var maxNumSpaces = generationOptions.maxTicks - 1;\n    var min = generationOptions.min;\n    var max = generationOptions.max;\n    var precision = generationOptions.precision;\n    var rmin = dataRange.min;\n    var rmax = dataRange.max;\n    var spacing = helpers$1.niceNum((rmax - rmin) / maxNumSpaces / unit) * unit;\n    var factor, niceMin, niceMax, numSpaces; // Beyond MIN_SPACING floating point numbers being to lose precision\n    // such that we can't do the math necessary to generate ticks\n\n    if (spacing < MIN_SPACING && isNullOrUndef$2(min) && isNullOrUndef$2(max)) {\n      return [rmin, rmax];\n    }\n\n    numSpaces = Math.ceil(rmax / spacing) - Math.floor(rmin / spacing);\n\n    if (numSpaces > maxNumSpaces) {\n      // If the calculated num of spaces exceeds maxNumSpaces, recalculate it\n      spacing = helpers$1.niceNum(numSpaces * spacing / maxNumSpaces / unit) * unit;\n    }\n\n    if (stepSize || isNullOrUndef$2(precision)) {\n      // If a precision is not specified, calculate factor based on spacing\n      factor = Math.pow(10, helpers$1._decimalPlaces(spacing));\n    } else {\n      // If the user specified a precision, round to that number of decimal places\n      factor = Math.pow(10, precision);\n      spacing = Math.ceil(spacing * factor) / factor;\n    }\n\n    niceMin = Math.floor(rmin / spacing) * spacing;\n    niceMax = Math.ceil(rmax / spacing) * spacing; // If min, max and stepSize is set and they make an evenly spaced scale use it.\n\n    if (stepSize) {\n      // If very close to our whole number, use it.\n      if (!isNullOrUndef$2(min) && helpers$1.almostWhole(min / spacing, spacing / 1000)) {\n        niceMin = min;\n      }\n\n      if (!isNullOrUndef$2(max) && helpers$1.almostWhole(max / spacing, spacing / 1000)) {\n        niceMax = max;\n      }\n    }\n\n    numSpaces = (niceMax - niceMin) / spacing; // If very close to our rounded value, use it.\n\n    if (helpers$1.almostEquals(numSpaces, Math.round(numSpaces), spacing / 1000)) {\n      numSpaces = Math.round(numSpaces);\n    } else {\n      numSpaces = Math.ceil(numSpaces);\n    }\n\n    niceMin = Math.round(niceMin * factor) / factor;\n    niceMax = Math.round(niceMax * factor) / factor;\n    ticks.push(isNullOrUndef$2(min) ? niceMin : min);\n\n    for (var j = 1; j < numSpaces; ++j) {\n      ticks.push(Math.round((niceMin + j * spacing) * factor) / factor);\n    }\n\n    ticks.push(isNullOrUndef$2(max) ? niceMax : max);\n    return ticks;\n  }\n\n  var scale_linearbase = core_scale.extend({\n    getRightValue: function getRightValue(value) {\n      if (typeof value === 'string') {\n        return +value;\n      }\n\n      return core_scale.prototype.getRightValue.call(this, value);\n    },\n    handleTickRangeOptions: function handleTickRangeOptions() {\n      var me = this;\n      var opts = me.options;\n      var tickOpts = opts.ticks; // If we are forcing it to begin at 0, but 0 will already be rendered on the chart,\n      // do nothing since that would make the chart weird. If the user really wants a weird chart\n      // axis, they can manually override it\n\n      if (tickOpts.beginAtZero) {\n        var minSign = helpers$1.sign(me.min);\n        var maxSign = helpers$1.sign(me.max);\n\n        if (minSign < 0 && maxSign < 0) {\n          // move the top up to 0\n          me.max = 0;\n        } else if (minSign > 0 && maxSign > 0) {\n          // move the bottom down to 0\n          me.min = 0;\n        }\n      }\n\n      var setMin = tickOpts.min !== undefined || tickOpts.suggestedMin !== undefined;\n      var setMax = tickOpts.max !== undefined || tickOpts.suggestedMax !== undefined;\n\n      if (tickOpts.min !== undefined) {\n        me.min = tickOpts.min;\n      } else if (tickOpts.suggestedMin !== undefined) {\n        if (me.min === null) {\n          me.min = tickOpts.suggestedMin;\n        } else {\n          me.min = Math.min(me.min, tickOpts.suggestedMin);\n        }\n      }\n\n      if (tickOpts.max !== undefined) {\n        me.max = tickOpts.max;\n      } else if (tickOpts.suggestedMax !== undefined) {\n        if (me.max === null) {\n          me.max = tickOpts.suggestedMax;\n        } else {\n          me.max = Math.max(me.max, tickOpts.suggestedMax);\n        }\n      }\n\n      if (setMin !== setMax) {\n        // We set the min or the max but not both.\n        // So ensure that our range is good\n        // Inverted or 0 length range can happen when\n        // ticks.min is set, and no datasets are visible\n        if (me.min >= me.max) {\n          if (setMin) {\n            me.max = me.min + 1;\n          } else {\n            me.min = me.max - 1;\n          }\n        }\n      }\n\n      if (me.min === me.max) {\n        me.max++;\n\n        if (!tickOpts.beginAtZero) {\n          me.min--;\n        }\n      }\n    },\n    getTickLimit: function getTickLimit() {\n      var me = this;\n      var tickOpts = me.options.ticks;\n      var stepSize = tickOpts.stepSize;\n      var maxTicksLimit = tickOpts.maxTicksLimit;\n      var maxTicks;\n\n      if (stepSize) {\n        maxTicks = Math.ceil(me.max / stepSize) - Math.floor(me.min / stepSize) + 1;\n      } else {\n        maxTicks = me._computeTickLimit();\n        maxTicksLimit = maxTicksLimit || 11;\n      }\n\n      if (maxTicksLimit) {\n        maxTicks = Math.min(maxTicksLimit, maxTicks);\n      }\n\n      return maxTicks;\n    },\n    _computeTickLimit: function _computeTickLimit() {\n      return Number.POSITIVE_INFINITY;\n    },\n    handleDirectionalChanges: noop,\n    buildTicks: function buildTicks() {\n      var me = this;\n      var opts = me.options;\n      var tickOpts = opts.ticks; // Figure out what the max number of ticks we can support it is based on the size of\n      // the axis area. For now, we say that the minimum tick spacing in pixels must be 40\n      // We also limit the maximum number of ticks to 11 which gives a nice 10 squares on\n      // the graph. Make sure we always have at least 2 ticks\n\n      var maxTicks = me.getTickLimit();\n      maxTicks = Math.max(2, maxTicks);\n      var numericGeneratorOptions = {\n        maxTicks: maxTicks,\n        min: tickOpts.min,\n        max: tickOpts.max,\n        precision: tickOpts.precision,\n        stepSize: helpers$1.valueOrDefault(tickOpts.fixedStepSize, tickOpts.stepSize)\n      };\n      var ticks = me.ticks = generateTicks(numericGeneratorOptions, me);\n      me.handleDirectionalChanges(); // At this point, we need to update our max and min given the tick values since we have expanded the\n      // range of the scale\n\n      me.max = helpers$1.max(ticks);\n      me.min = helpers$1.min(ticks);\n\n      if (tickOpts.reverse) {\n        ticks.reverse();\n        me.start = me.max;\n        me.end = me.min;\n      } else {\n        me.start = me.min;\n        me.end = me.max;\n      }\n    },\n    convertTicksToLabels: function convertTicksToLabels() {\n      var me = this;\n      me.ticksAsNumbers = me.ticks.slice();\n      me.zeroLineIndex = me.ticks.indexOf(0);\n      core_scale.prototype.convertTicksToLabels.call(me);\n    },\n    _configure: function _configure() {\n      var me = this;\n      var ticks = me.getTicks();\n      var start = me.min;\n      var end = me.max;\n      var offset;\n\n      core_scale.prototype._configure.call(me);\n\n      if (me.options.offset && ticks.length) {\n        offset = (end - start) / Math.max(ticks.length - 1, 1) / 2;\n        start -= offset;\n        end += offset;\n      }\n\n      me._startValue = start;\n      me._endValue = end;\n      me._valueRange = end - start;\n    }\n  });\n  var defaultConfig$1 = {\n    position: 'left',\n    ticks: {\n      callback: core_ticks.formatters.linear\n    }\n  };\n  var DEFAULT_MIN = 0;\n  var DEFAULT_MAX = 1;\n\n  function getOrCreateStack(stacks, stacked, meta) {\n    var key = [meta.type, // we have a separate stack for stack=undefined datasets when the opts.stacked is undefined\n    stacked === undefined && meta.stack === undefined ? meta.index : '', meta.stack].join('.');\n\n    if (stacks[key] === undefined) {\n      stacks[key] = {\n        pos: [],\n        neg: []\n      };\n    }\n\n    return stacks[key];\n  }\n\n  function stackData(scale, stacks, meta, data) {\n    var opts = scale.options;\n    var stacked = opts.stacked;\n    var stack = getOrCreateStack(stacks, stacked, meta);\n    var pos = stack.pos;\n    var neg = stack.neg;\n    var ilen = data.length;\n    var i, value;\n\n    for (i = 0; i < ilen; ++i) {\n      value = scale._parseValue(data[i]);\n\n      if (isNaN(value.min) || isNaN(value.max) || meta.data[i].hidden) {\n        continue;\n      }\n\n      pos[i] = pos[i] || 0;\n      neg[i] = neg[i] || 0;\n\n      if (opts.relativePoints) {\n        pos[i] = 100;\n      } else if (value.min < 0 || value.max < 0) {\n        neg[i] += value.min;\n      } else {\n        pos[i] += value.max;\n      }\n    }\n  }\n\n  function updateMinMax(scale, meta, data) {\n    var ilen = data.length;\n    var i, value;\n\n    for (i = 0; i < ilen; ++i) {\n      value = scale._parseValue(data[i]);\n\n      if (isNaN(value.min) || isNaN(value.max) || meta.data[i].hidden) {\n        continue;\n      }\n\n      scale.min = Math.min(scale.min, value.min);\n      scale.max = Math.max(scale.max, value.max);\n    }\n  }\n\n  var scale_linear = scale_linearbase.extend({\n    determineDataLimits: function determineDataLimits() {\n      var me = this;\n      var opts = me.options;\n      var chart = me.chart;\n      var datasets = chart.data.datasets;\n\n      var metasets = me._getMatchingVisibleMetas();\n\n      var hasStacks = opts.stacked;\n      var stacks = {};\n      var ilen = metasets.length;\n      var i, meta, data, values;\n      me.min = Number.POSITIVE_INFINITY;\n      me.max = Number.NEGATIVE_INFINITY;\n\n      if (hasStacks === undefined) {\n        for (i = 0; !hasStacks && i < ilen; ++i) {\n          meta = metasets[i];\n          hasStacks = meta.stack !== undefined;\n        }\n      }\n\n      for (i = 0; i < ilen; ++i) {\n        meta = metasets[i];\n        data = datasets[meta.index].data;\n\n        if (hasStacks) {\n          stackData(me, stacks, meta, data);\n        } else {\n          updateMinMax(me, meta, data);\n        }\n      }\n\n      helpers$1.each(stacks, function (stackValues) {\n        values = stackValues.pos.concat(stackValues.neg);\n        me.min = Math.min(me.min, helpers$1.min(values));\n        me.max = Math.max(me.max, helpers$1.max(values));\n      });\n      me.min = helpers$1.isFinite(me.min) && !isNaN(me.min) ? me.min : DEFAULT_MIN;\n      me.max = helpers$1.isFinite(me.max) && !isNaN(me.max) ? me.max : DEFAULT_MAX; // Common base implementation to handle ticks.min, ticks.max, ticks.beginAtZero\n\n      me.handleTickRangeOptions();\n    },\n    // Returns the maximum number of ticks based on the scale dimension\n    _computeTickLimit: function _computeTickLimit() {\n      var me = this;\n      var tickFont;\n\n      if (me.isHorizontal()) {\n        return Math.ceil(me.width / 40);\n      }\n\n      tickFont = helpers$1.options._parseFont(me.options.ticks);\n      return Math.ceil(me.height / tickFont.lineHeight);\n    },\n    // Called after the ticks are built. We need\n    handleDirectionalChanges: function handleDirectionalChanges() {\n      if (!this.isHorizontal()) {\n        // We are in a vertical orientation. The top value is the highest. So reverse the array\n        this.ticks.reverse();\n      }\n    },\n    getLabelForIndex: function getLabelForIndex(index, datasetIndex) {\n      return this._getScaleLabel(this.chart.data.datasets[datasetIndex].data[index]);\n    },\n    // Utils\n    getPixelForValue: function getPixelForValue(value) {\n      var me = this;\n      return me.getPixelForDecimal((+me.getRightValue(value) - me._startValue) / me._valueRange);\n    },\n    getValueForPixel: function getValueForPixel(pixel) {\n      return this._startValue + this.getDecimalForPixel(pixel) * this._valueRange;\n    },\n    getPixelForTick: function getPixelForTick(index) {\n      var ticks = this.ticksAsNumbers;\n\n      if (index < 0 || index > ticks.length - 1) {\n        return null;\n      }\n\n      return this.getPixelForValue(ticks[index]);\n    }\n  }); // INTERNAL: static default options, registered in src/index.js\n\n  var _defaults$1 = defaultConfig$1;\n  scale_linear._defaults = _defaults$1;\n  var valueOrDefault$b = helpers$1.valueOrDefault;\n  var log10 = helpers$1.math.log10;\n  /**\n   * Generate a set of logarithmic ticks\n   * @param generationOptions the options used to generate the ticks\n   * @param dataRange the range of the data\n   * @returns {number[]} array of tick values\n   */\n\n  function generateTicks$1(generationOptions, dataRange) {\n    var ticks = [];\n    var tickVal = valueOrDefault$b(generationOptions.min, Math.pow(10, Math.floor(log10(dataRange.min))));\n    var endExp = Math.floor(log10(dataRange.max));\n    var endSignificand = Math.ceil(dataRange.max / Math.pow(10, endExp));\n    var exp, significand;\n\n    if (tickVal === 0) {\n      exp = Math.floor(log10(dataRange.minNotZero));\n      significand = Math.floor(dataRange.minNotZero / Math.pow(10, exp));\n      ticks.push(tickVal);\n      tickVal = significand * Math.pow(10, exp);\n    } else {\n      exp = Math.floor(log10(tickVal));\n      significand = Math.floor(tickVal / Math.pow(10, exp));\n    }\n\n    var precision = exp < 0 ? Math.pow(10, Math.abs(exp)) : 1;\n\n    do {\n      ticks.push(tickVal);\n      ++significand;\n\n      if (significand === 10) {\n        significand = 1;\n        ++exp;\n        precision = exp >= 0 ? 1 : precision;\n      }\n\n      tickVal = Math.round(significand * Math.pow(10, exp) * precision) / precision;\n    } while (exp < endExp || exp === endExp && significand < endSignificand);\n\n    var lastTick = valueOrDefault$b(generationOptions.max, tickVal);\n    ticks.push(lastTick);\n    return ticks;\n  }\n\n  var defaultConfig$2 = {\n    position: 'left',\n    // label settings\n    ticks: {\n      callback: core_ticks.formatters.logarithmic\n    }\n  }; // TODO(v3): change this to positiveOrDefault\n\n  function nonNegativeOrDefault(value, defaultValue) {\n    return helpers$1.isFinite(value) && value >= 0 ? value : defaultValue;\n  }\n\n  var scale_logarithmic = core_scale.extend({\n    determineDataLimits: function determineDataLimits() {\n      var me = this;\n      var opts = me.options;\n      var chart = me.chart;\n      var datasets = chart.data.datasets;\n      var isHorizontal = me.isHorizontal();\n\n      function IDMatches(meta) {\n        return isHorizontal ? meta.xAxisID === me.id : meta.yAxisID === me.id;\n      }\n\n      var datasetIndex, meta, value, data, i, ilen; // Calculate Range\n\n      me.min = Number.POSITIVE_INFINITY;\n      me.max = Number.NEGATIVE_INFINITY;\n      me.minNotZero = Number.POSITIVE_INFINITY;\n      var hasStacks = opts.stacked;\n\n      if (hasStacks === undefined) {\n        for (datasetIndex = 0; datasetIndex < datasets.length; datasetIndex++) {\n          meta = chart.getDatasetMeta(datasetIndex);\n\n          if (chart.isDatasetVisible(datasetIndex) && IDMatches(meta) && meta.stack !== undefined) {\n            hasStacks = true;\n            break;\n          }\n        }\n      }\n\n      if (opts.stacked || hasStacks) {\n        var valuesPerStack = {};\n\n        for (datasetIndex = 0; datasetIndex < datasets.length; datasetIndex++) {\n          meta = chart.getDatasetMeta(datasetIndex);\n          var key = [meta.type, // we have a separate stack for stack=undefined datasets when the opts.stacked is undefined\n          opts.stacked === undefined && meta.stack === undefined ? datasetIndex : '', meta.stack].join('.');\n\n          if (chart.isDatasetVisible(datasetIndex) && IDMatches(meta)) {\n            if (valuesPerStack[key] === undefined) {\n              valuesPerStack[key] = [];\n            }\n\n            data = datasets[datasetIndex].data;\n\n            for (i = 0, ilen = data.length; i < ilen; i++) {\n              var values = valuesPerStack[key];\n              value = me._parseValue(data[i]); // invalid, hidden and negative values are ignored\n\n              if (isNaN(value.min) || isNaN(value.max) || meta.data[i].hidden || value.min < 0 || value.max < 0) {\n                continue;\n              }\n\n              values[i] = values[i] || 0;\n              values[i] += value.max;\n            }\n          }\n        }\n\n        helpers$1.each(valuesPerStack, function (valuesForType) {\n          if (valuesForType.length > 0) {\n            var minVal = helpers$1.min(valuesForType);\n            var maxVal = helpers$1.max(valuesForType);\n            me.min = Math.min(me.min, minVal);\n            me.max = Math.max(me.max, maxVal);\n          }\n        });\n      } else {\n        for (datasetIndex = 0; datasetIndex < datasets.length; datasetIndex++) {\n          meta = chart.getDatasetMeta(datasetIndex);\n\n          if (chart.isDatasetVisible(datasetIndex) && IDMatches(meta)) {\n            data = datasets[datasetIndex].data;\n\n            for (i = 0, ilen = data.length; i < ilen; i++) {\n              value = me._parseValue(data[i]); // invalid, hidden and negative values are ignored\n\n              if (isNaN(value.min) || isNaN(value.max) || meta.data[i].hidden || value.min < 0 || value.max < 0) {\n                continue;\n              }\n\n              me.min = Math.min(value.min, me.min);\n              me.max = Math.max(value.max, me.max);\n\n              if (value.min !== 0) {\n                me.minNotZero = Math.min(value.min, me.minNotZero);\n              }\n            }\n          }\n        }\n      }\n\n      me.min = helpers$1.isFinite(me.min) ? me.min : null;\n      me.max = helpers$1.isFinite(me.max) ? me.max : null;\n      me.minNotZero = helpers$1.isFinite(me.minNotZero) ? me.minNotZero : null; // Common base implementation to handle ticks.min, ticks.max\n\n      this.handleTickRangeOptions();\n    },\n    handleTickRangeOptions: function handleTickRangeOptions() {\n      var me = this;\n      var tickOpts = me.options.ticks;\n      var DEFAULT_MIN = 1;\n      var DEFAULT_MAX = 10;\n      me.min = nonNegativeOrDefault(tickOpts.min, me.min);\n      me.max = nonNegativeOrDefault(tickOpts.max, me.max);\n\n      if (me.min === me.max) {\n        if (me.min !== 0 && me.min !== null) {\n          me.min = Math.pow(10, Math.floor(log10(me.min)) - 1);\n          me.max = Math.pow(10, Math.floor(log10(me.max)) + 1);\n        } else {\n          me.min = DEFAULT_MIN;\n          me.max = DEFAULT_MAX;\n        }\n      }\n\n      if (me.min === null) {\n        me.min = Math.pow(10, Math.floor(log10(me.max)) - 1);\n      }\n\n      if (me.max === null) {\n        me.max = me.min !== 0 ? Math.pow(10, Math.floor(log10(me.min)) + 1) : DEFAULT_MAX;\n      }\n\n      if (me.minNotZero === null) {\n        if (me.min > 0) {\n          me.minNotZero = me.min;\n        } else if (me.max < 1) {\n          me.minNotZero = Math.pow(10, Math.floor(log10(me.max)));\n        } else {\n          me.minNotZero = DEFAULT_MIN;\n        }\n      }\n    },\n    buildTicks: function buildTicks() {\n      var me = this;\n      var tickOpts = me.options.ticks;\n      var reverse = !me.isHorizontal();\n      var generationOptions = {\n        min: nonNegativeOrDefault(tickOpts.min),\n        max: nonNegativeOrDefault(tickOpts.max)\n      };\n      var ticks = me.ticks = generateTicks$1(generationOptions, me); // At this point, we need to update our max and min given the tick values since we have expanded the\n      // range of the scale\n\n      me.max = helpers$1.max(ticks);\n      me.min = helpers$1.min(ticks);\n\n      if (tickOpts.reverse) {\n        reverse = !reverse;\n        me.start = me.max;\n        me.end = me.min;\n      } else {\n        me.start = me.min;\n        me.end = me.max;\n      }\n\n      if (reverse) {\n        ticks.reverse();\n      }\n    },\n    convertTicksToLabels: function convertTicksToLabels() {\n      this.tickValues = this.ticks.slice();\n      core_scale.prototype.convertTicksToLabels.call(this);\n    },\n    // Get the correct tooltip label\n    getLabelForIndex: function getLabelForIndex(index, datasetIndex) {\n      return this._getScaleLabel(this.chart.data.datasets[datasetIndex].data[index]);\n    },\n    getPixelForTick: function getPixelForTick(index) {\n      var ticks = this.tickValues;\n\n      if (index < 0 || index > ticks.length - 1) {\n        return null;\n      }\n\n      return this.getPixelForValue(ticks[index]);\n    },\n\n    /**\n     * Returns the value of the first tick.\n     * @param {number} value - The minimum not zero value.\n     * @return {number} The first tick value.\n     * @private\n     */\n    _getFirstTickValue: function _getFirstTickValue(value) {\n      var exp = Math.floor(log10(value));\n      var significand = Math.floor(value / Math.pow(10, exp));\n      return significand * Math.pow(10, exp);\n    },\n    _configure: function _configure() {\n      var me = this;\n      var start = me.min;\n      var offset = 0;\n\n      core_scale.prototype._configure.call(me);\n\n      if (start === 0) {\n        start = me._getFirstTickValue(me.minNotZero);\n        offset = valueOrDefault$b(me.options.ticks.fontSize, core_defaults.global.defaultFontSize) / me._length;\n      }\n\n      me._startValue = log10(start);\n      me._valueOffset = offset;\n      me._valueRange = (log10(me.max) - log10(start)) / (1 - offset);\n    },\n    getPixelForValue: function getPixelForValue(value) {\n      var me = this;\n      var decimal = 0;\n      value = +me.getRightValue(value);\n\n      if (value > me.min && value > 0) {\n        decimal = (log10(value) - me._startValue) / me._valueRange + me._valueOffset;\n      }\n\n      return me.getPixelForDecimal(decimal);\n    },\n    getValueForPixel: function getValueForPixel(pixel) {\n      var me = this;\n      var decimal = me.getDecimalForPixel(pixel);\n      return decimal === 0 && me.min === 0 ? 0 : Math.pow(10, me._startValue + (decimal - me._valueOffset) * me._valueRange);\n    }\n  }); // INTERNAL: static default options, registered in src/index.js\n\n  var _defaults$2 = defaultConfig$2;\n  scale_logarithmic._defaults = _defaults$2;\n  var valueOrDefault$c = helpers$1.valueOrDefault;\n  var valueAtIndexOrDefault$1 = helpers$1.valueAtIndexOrDefault;\n  var resolve$4 = helpers$1.options.resolve;\n  var defaultConfig$3 = {\n    display: true,\n    // Boolean - Whether to animate scaling the chart from the centre\n    animate: true,\n    position: 'chartArea',\n    angleLines: {\n      display: true,\n      color: 'rgba(0,0,0,0.1)',\n      lineWidth: 1,\n      borderDash: [],\n      borderDashOffset: 0.0\n    },\n    gridLines: {\n      circular: false\n    },\n    // label settings\n    ticks: {\n      // Boolean - Show a backdrop to the scale label\n      showLabelBackdrop: true,\n      // String - The colour of the label backdrop\n      backdropColor: 'rgba(255,255,255,0.75)',\n      // Number - The backdrop padding above & below the label in pixels\n      backdropPaddingY: 2,\n      // Number - The backdrop padding to the side of the label in pixels\n      backdropPaddingX: 2,\n      callback: core_ticks.formatters.linear\n    },\n    pointLabels: {\n      // Boolean - if true, show point labels\n      display: true,\n      // Number - Point label font size in pixels\n      fontSize: 10,\n      // Function - Used to convert point labels\n      callback: function callback(label) {\n        return label;\n      }\n    }\n  };\n\n  function getTickBackdropHeight(opts) {\n    var tickOpts = opts.ticks;\n\n    if (tickOpts.display && opts.display) {\n      return valueOrDefault$c(tickOpts.fontSize, core_defaults.global.defaultFontSize) + tickOpts.backdropPaddingY * 2;\n    }\n\n    return 0;\n  }\n\n  function measureLabelSize(ctx, lineHeight, label) {\n    if (helpers$1.isArray(label)) {\n      return {\n        w: helpers$1.longestText(ctx, ctx.font, label),\n        h: label.length * lineHeight\n      };\n    }\n\n    return {\n      w: ctx.measureText(label).width,\n      h: lineHeight\n    };\n  }\n\n  function determineLimits(angle, pos, size, min, max) {\n    if (angle === min || angle === max) {\n      return {\n        start: pos - size / 2,\n        end: pos + size / 2\n      };\n    } else if (angle < min || angle > max) {\n      return {\n        start: pos - size,\n        end: pos\n      };\n    }\n\n    return {\n      start: pos,\n      end: pos + size\n    };\n  }\n  /**\n   * Helper function to fit a radial linear scale with point labels\n   */\n\n\n  function fitWithPointLabels(scale) {\n    // Right, this is really confusing and there is a lot of maths going on here\n    // The gist of the problem is here: https://gist.github.com/nnnick/696cc9c55f4b0beb8fe9\n    //\n    // Reaction: https://dl.dropboxusercontent.com/u/34601363/toomuchscience.gif\n    //\n    // Solution:\n    //\n    // We assume the radius of the polygon is half the size of the canvas at first\n    // at each index we check if the text overlaps.\n    //\n    // Where it does, we store that angle and that index.\n    //\n    // After finding the largest index and angle we calculate how much we need to remove\n    // from the shape radius to move the point inwards by that x.\n    //\n    // We average the left and right distances to get the maximum shape radius that can fit in the box\n    // along with labels.\n    //\n    // Once we have that, we can find the centre point for the chart, by taking the x text protrusion\n    // on each side, removing that from the size, halving it and adding the left x protrusion width.\n    //\n    // This will mean we have a shape fitted to the canvas, as large as it can be with the labels\n    // and position it in the most space efficient manner\n    //\n    // https://dl.dropboxusercontent.com/u/34601363/yeahscience.gif\n    var plFont = helpers$1.options._parseFont(scale.options.pointLabels); // Get maximum radius of the polygon. Either half the height (minus the text width) or half the width.\n    // Use this to calculate the offset + change. - Make sure L/R protrusion is at least 0 to stop issues with centre points\n\n\n    var furthestLimits = {\n      l: 0,\n      r: scale.width,\n      t: 0,\n      b: scale.height - scale.paddingTop\n    };\n    var furthestAngles = {};\n    var i, textSize, pointPosition;\n    scale.ctx.font = plFont.string;\n    scale._pointLabelSizes = [];\n    var valueCount = scale.chart.data.labels.length;\n\n    for (i = 0; i < valueCount; i++) {\n      pointPosition = scale.getPointPosition(i, scale.drawingArea + 5);\n      textSize = measureLabelSize(scale.ctx, plFont.lineHeight, scale.pointLabels[i]);\n      scale._pointLabelSizes[i] = textSize; // Add quarter circle to make degree 0 mean top of circle\n\n      var angleRadians = scale.getIndexAngle(i);\n      var angle = helpers$1.toDegrees(angleRadians) % 360;\n      var hLimits = determineLimits(angle, pointPosition.x, textSize.w, 0, 180);\n      var vLimits = determineLimits(angle, pointPosition.y, textSize.h, 90, 270);\n\n      if (hLimits.start < furthestLimits.l) {\n        furthestLimits.l = hLimits.start;\n        furthestAngles.l = angleRadians;\n      }\n\n      if (hLimits.end > furthestLimits.r) {\n        furthestLimits.r = hLimits.end;\n        furthestAngles.r = angleRadians;\n      }\n\n      if (vLimits.start < furthestLimits.t) {\n        furthestLimits.t = vLimits.start;\n        furthestAngles.t = angleRadians;\n      }\n\n      if (vLimits.end > furthestLimits.b) {\n        furthestLimits.b = vLimits.end;\n        furthestAngles.b = angleRadians;\n      }\n    }\n\n    scale.setReductions(scale.drawingArea, furthestLimits, furthestAngles);\n  }\n\n  function getTextAlignForAngle(angle) {\n    if (angle === 0 || angle === 180) {\n      return 'center';\n    } else if (angle < 180) {\n      return 'left';\n    }\n\n    return 'right';\n  }\n\n  function fillText(ctx, text, position, lineHeight) {\n    var y = position.y + lineHeight / 2;\n    var i, ilen;\n\n    if (helpers$1.isArray(text)) {\n      for (i = 0, ilen = text.length; i < ilen; ++i) {\n        ctx.fillText(text[i], position.x, y);\n        y += lineHeight;\n      }\n    } else {\n      ctx.fillText(text, position.x, y);\n    }\n  }\n\n  function adjustPointPositionForLabelHeight(angle, textSize, position) {\n    if (angle === 90 || angle === 270) {\n      position.y -= textSize.h / 2;\n    } else if (angle > 270 || angle < 90) {\n      position.y -= textSize.h;\n    }\n  }\n\n  function drawPointLabels(scale) {\n    var ctx = scale.ctx;\n    var opts = scale.options;\n    var pointLabelOpts = opts.pointLabels;\n    var tickBackdropHeight = getTickBackdropHeight(opts);\n    var outerDistance = scale.getDistanceFromCenterForValue(opts.ticks.reverse ? scale.min : scale.max);\n\n    var plFont = helpers$1.options._parseFont(pointLabelOpts);\n\n    ctx.save();\n    ctx.font = plFont.string;\n    ctx.textBaseline = 'middle';\n\n    for (var i = scale.chart.data.labels.length - 1; i >= 0; i--) {\n      // Extra pixels out for some label spacing\n      var extra = i === 0 ? tickBackdropHeight / 2 : 0;\n      var pointLabelPosition = scale.getPointPosition(i, outerDistance + extra + 5); // Keep this in loop since we may support array properties here\n\n      var pointLabelFontColor = valueAtIndexOrDefault$1(pointLabelOpts.fontColor, i, core_defaults.global.defaultFontColor);\n      ctx.fillStyle = pointLabelFontColor;\n      var angleRadians = scale.getIndexAngle(i);\n      var angle = helpers$1.toDegrees(angleRadians);\n      ctx.textAlign = getTextAlignForAngle(angle);\n      adjustPointPositionForLabelHeight(angle, scale._pointLabelSizes[i], pointLabelPosition);\n      fillText(ctx, scale.pointLabels[i], pointLabelPosition, plFont.lineHeight);\n    }\n\n    ctx.restore();\n  }\n\n  function drawRadiusLine(scale, gridLineOpts, radius, index) {\n    var ctx = scale.ctx;\n    var circular = gridLineOpts.circular;\n    var valueCount = scale.chart.data.labels.length;\n    var lineColor = valueAtIndexOrDefault$1(gridLineOpts.color, index - 1);\n    var lineWidth = valueAtIndexOrDefault$1(gridLineOpts.lineWidth, index - 1);\n    var pointPosition;\n\n    if (!circular && !valueCount || !lineColor || !lineWidth) {\n      return;\n    }\n\n    ctx.save();\n    ctx.strokeStyle = lineColor;\n    ctx.lineWidth = lineWidth;\n\n    if (ctx.setLineDash) {\n      ctx.setLineDash(gridLineOpts.borderDash || []);\n      ctx.lineDashOffset = gridLineOpts.borderDashOffset || 0.0;\n    }\n\n    ctx.beginPath();\n\n    if (circular) {\n      // Draw circular arcs between the points\n      ctx.arc(scale.xCenter, scale.yCenter, radius, 0, Math.PI * 2);\n    } else {\n      // Draw straight lines connecting each index\n      pointPosition = scale.getPointPosition(0, radius);\n      ctx.moveTo(pointPosition.x, pointPosition.y);\n\n      for (var i = 1; i < valueCount; i++) {\n        pointPosition = scale.getPointPosition(i, radius);\n        ctx.lineTo(pointPosition.x, pointPosition.y);\n      }\n    }\n\n    ctx.closePath();\n    ctx.stroke();\n    ctx.restore();\n  }\n\n  function numberOrZero(param) {\n    return helpers$1.isNumber(param) ? param : 0;\n  }\n\n  var scale_radialLinear = scale_linearbase.extend({\n    setDimensions: function setDimensions() {\n      var me = this; // Set the unconstrained dimension before label rotation\n\n      me.width = me.maxWidth;\n      me.height = me.maxHeight;\n      me.paddingTop = getTickBackdropHeight(me.options) / 2;\n      me.xCenter = Math.floor(me.width / 2);\n      me.yCenter = Math.floor((me.height - me.paddingTop) / 2);\n      me.drawingArea = Math.min(me.height - me.paddingTop, me.width) / 2;\n    },\n    determineDataLimits: function determineDataLimits() {\n      var me = this;\n      var chart = me.chart;\n      var min = Number.POSITIVE_INFINITY;\n      var max = Number.NEGATIVE_INFINITY;\n      helpers$1.each(chart.data.datasets, function (dataset, datasetIndex) {\n        if (chart.isDatasetVisible(datasetIndex)) {\n          var meta = chart.getDatasetMeta(datasetIndex);\n          helpers$1.each(dataset.data, function (rawValue, index) {\n            var value = +me.getRightValue(rawValue);\n\n            if (isNaN(value) || meta.data[index].hidden) {\n              return;\n            }\n\n            min = Math.min(value, min);\n            max = Math.max(value, max);\n          });\n        }\n      });\n      me.min = min === Number.POSITIVE_INFINITY ? 0 : min;\n      me.max = max === Number.NEGATIVE_INFINITY ? 0 : max; // Common base implementation to handle ticks.min, ticks.max, ticks.beginAtZero\n\n      me.handleTickRangeOptions();\n    },\n    // Returns the maximum number of ticks based on the scale dimension\n    _computeTickLimit: function _computeTickLimit() {\n      return Math.ceil(this.drawingArea / getTickBackdropHeight(this.options));\n    },\n    convertTicksToLabels: function convertTicksToLabels() {\n      var me = this;\n      scale_linearbase.prototype.convertTicksToLabels.call(me); // Point labels\n\n      me.pointLabels = me.chart.data.labels.map(function () {\n        var label = helpers$1.callback(me.options.pointLabels.callback, arguments, me);\n        return label || label === 0 ? label : '';\n      });\n    },\n    getLabelForIndex: function getLabelForIndex(index, datasetIndex) {\n      return +this.getRightValue(this.chart.data.datasets[datasetIndex].data[index]);\n    },\n    fit: function fit() {\n      var me = this;\n      var opts = me.options;\n\n      if (opts.display && opts.pointLabels.display) {\n        fitWithPointLabels(me);\n      } else {\n        me.setCenterPoint(0, 0, 0, 0);\n      }\n    },\n\n    /**\n     * Set radius reductions and determine new radius and center point\n     * @private\n     */\n    setReductions: function setReductions(largestPossibleRadius, furthestLimits, furthestAngles) {\n      var me = this;\n      var radiusReductionLeft = furthestLimits.l / Math.sin(furthestAngles.l);\n      var radiusReductionRight = Math.max(furthestLimits.r - me.width, 0) / Math.sin(furthestAngles.r);\n      var radiusReductionTop = -furthestLimits.t / Math.cos(furthestAngles.t);\n      var radiusReductionBottom = -Math.max(furthestLimits.b - (me.height - me.paddingTop), 0) / Math.cos(furthestAngles.b);\n      radiusReductionLeft = numberOrZero(radiusReductionLeft);\n      radiusReductionRight = numberOrZero(radiusReductionRight);\n      radiusReductionTop = numberOrZero(radiusReductionTop);\n      radiusReductionBottom = numberOrZero(radiusReductionBottom);\n      me.drawingArea = Math.min(Math.floor(largestPossibleRadius - (radiusReductionLeft + radiusReductionRight) / 2), Math.floor(largestPossibleRadius - (radiusReductionTop + radiusReductionBottom) / 2));\n      me.setCenterPoint(radiusReductionLeft, radiusReductionRight, radiusReductionTop, radiusReductionBottom);\n    },\n    setCenterPoint: function setCenterPoint(leftMovement, rightMovement, topMovement, bottomMovement) {\n      var me = this;\n      var maxRight = me.width - rightMovement - me.drawingArea;\n      var maxLeft = leftMovement + me.drawingArea;\n      var maxTop = topMovement + me.drawingArea;\n      var maxBottom = me.height - me.paddingTop - bottomMovement - me.drawingArea;\n      me.xCenter = Math.floor((maxLeft + maxRight) / 2 + me.left);\n      me.yCenter = Math.floor((maxTop + maxBottom) / 2 + me.top + me.paddingTop);\n    },\n    getIndexAngle: function getIndexAngle(index) {\n      var chart = this.chart;\n      var angleMultiplier = 360 / chart.data.labels.length;\n      var options = chart.options || {};\n      var startAngle = options.startAngle || 0; // Start from the top instead of right, so remove a quarter of the circle\n\n      var angle = (index * angleMultiplier + startAngle) % 360;\n      return (angle < 0 ? angle + 360 : angle) * Math.PI * 2 / 360;\n    },\n    getDistanceFromCenterForValue: function getDistanceFromCenterForValue(value) {\n      var me = this;\n\n      if (helpers$1.isNullOrUndef(value)) {\n        return NaN;\n      } // Take into account half font size + the yPadding of the top value\n\n\n      var scalingFactor = me.drawingArea / (me.max - me.min);\n\n      if (me.options.ticks.reverse) {\n        return (me.max - value) * scalingFactor;\n      }\n\n      return (value - me.min) * scalingFactor;\n    },\n    getPointPosition: function getPointPosition(index, distanceFromCenter) {\n      var me = this;\n      var thisAngle = me.getIndexAngle(index) - Math.PI / 2;\n      return {\n        x: Math.cos(thisAngle) * distanceFromCenter + me.xCenter,\n        y: Math.sin(thisAngle) * distanceFromCenter + me.yCenter\n      };\n    },\n    getPointPositionForValue: function getPointPositionForValue(index, value) {\n      return this.getPointPosition(index, this.getDistanceFromCenterForValue(value));\n    },\n    getBasePosition: function getBasePosition(index) {\n      var me = this;\n      var min = me.min;\n      var max = me.max;\n      return me.getPointPositionForValue(index || 0, me.beginAtZero ? 0 : min < 0 && max < 0 ? max : min > 0 && max > 0 ? min : 0);\n    },\n\n    /**\n     * @private\n     */\n    _drawGrid: function _drawGrid() {\n      var me = this;\n      var ctx = me.ctx;\n      var opts = me.options;\n      var gridLineOpts = opts.gridLines;\n      var angleLineOpts = opts.angleLines;\n      var lineWidth = valueOrDefault$c(angleLineOpts.lineWidth, gridLineOpts.lineWidth);\n      var lineColor = valueOrDefault$c(angleLineOpts.color, gridLineOpts.color);\n      var i, offset, position;\n\n      if (opts.pointLabels.display) {\n        drawPointLabels(me);\n      }\n\n      if (gridLineOpts.display) {\n        helpers$1.each(me.ticks, function (label, index) {\n          if (index !== 0) {\n            offset = me.getDistanceFromCenterForValue(me.ticksAsNumbers[index]);\n            drawRadiusLine(me, gridLineOpts, offset, index);\n          }\n        });\n      }\n\n      if (angleLineOpts.display && lineWidth && lineColor) {\n        ctx.save();\n        ctx.lineWidth = lineWidth;\n        ctx.strokeStyle = lineColor;\n\n        if (ctx.setLineDash) {\n          ctx.setLineDash(resolve$4([angleLineOpts.borderDash, gridLineOpts.borderDash, []]));\n          ctx.lineDashOffset = resolve$4([angleLineOpts.borderDashOffset, gridLineOpts.borderDashOffset, 0.0]);\n        }\n\n        for (i = me.chart.data.labels.length - 1; i >= 0; i--) {\n          offset = me.getDistanceFromCenterForValue(opts.ticks.reverse ? me.min : me.max);\n          position = me.getPointPosition(i, offset);\n          ctx.beginPath();\n          ctx.moveTo(me.xCenter, me.yCenter);\n          ctx.lineTo(position.x, position.y);\n          ctx.stroke();\n        }\n\n        ctx.restore();\n      }\n    },\n\n    /**\n     * @private\n     */\n    _drawLabels: function _drawLabels() {\n      var me = this;\n      var ctx = me.ctx;\n      var opts = me.options;\n      var tickOpts = opts.ticks;\n\n      if (!tickOpts.display) {\n        return;\n      }\n\n      var startAngle = me.getIndexAngle(0);\n\n      var tickFont = helpers$1.options._parseFont(tickOpts);\n\n      var tickFontColor = valueOrDefault$c(tickOpts.fontColor, core_defaults.global.defaultFontColor);\n      var offset, width;\n      ctx.save();\n      ctx.font = tickFont.string;\n      ctx.translate(me.xCenter, me.yCenter);\n      ctx.rotate(startAngle);\n      ctx.textAlign = 'center';\n      ctx.textBaseline = 'middle';\n      helpers$1.each(me.ticks, function (label, index) {\n        if (index === 0 && !tickOpts.reverse) {\n          return;\n        }\n\n        offset = me.getDistanceFromCenterForValue(me.ticksAsNumbers[index]);\n\n        if (tickOpts.showLabelBackdrop) {\n          width = ctx.measureText(label).width;\n          ctx.fillStyle = tickOpts.backdropColor;\n          ctx.fillRect(-width / 2 - tickOpts.backdropPaddingX, -offset - tickFont.size / 2 - tickOpts.backdropPaddingY, width + tickOpts.backdropPaddingX * 2, tickFont.size + tickOpts.backdropPaddingY * 2);\n        }\n\n        ctx.fillStyle = tickFontColor;\n        ctx.fillText(label, 0, -offset);\n      });\n      ctx.restore();\n    },\n\n    /**\n     * @private\n     */\n    _drawTitle: helpers$1.noop\n  }); // INTERNAL: static default options, registered in src/index.js\n\n  var _defaults$3 = defaultConfig$3;\n  scale_radialLinear._defaults = _defaults$3;\n  var deprecated$1 = helpers$1._deprecated;\n  var resolve$5 = helpers$1.options.resolve;\n  var valueOrDefault$d = helpers$1.valueOrDefault; // Integer constants are from the ES6 spec.\n\n  var MIN_INTEGER = Number.MIN_SAFE_INTEGER || -9007199254740991;\n  var MAX_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991;\n  var INTERVALS = {\n    millisecond: {\n      common: true,\n      size: 1,\n      steps: 1000\n    },\n    second: {\n      common: true,\n      size: 1000,\n      steps: 60\n    },\n    minute: {\n      common: true,\n      size: 60000,\n      steps: 60\n    },\n    hour: {\n      common: true,\n      size: 3600000,\n      steps: 24\n    },\n    day: {\n      common: true,\n      size: 86400000,\n      steps: 30\n    },\n    week: {\n      common: false,\n      size: 604800000,\n      steps: 4\n    },\n    month: {\n      common: true,\n      size: 2.628e9,\n      steps: 12\n    },\n    quarter: {\n      common: false,\n      size: 7.884e9,\n      steps: 4\n    },\n    year: {\n      common: true,\n      size: 3.154e10\n    }\n  };\n  var UNITS = Object.keys(INTERVALS);\n\n  function sorter(a, b) {\n    return a - b;\n  }\n\n  function arrayUnique(items) {\n    var hash = {};\n    var out = [];\n    var i, ilen, item;\n\n    for (i = 0, ilen = items.length; i < ilen; ++i) {\n      item = items[i];\n\n      if (!hash[item]) {\n        hash[item] = true;\n        out.push(item);\n      }\n    }\n\n    return out;\n  }\n\n  function getMin(options) {\n    return helpers$1.valueOrDefault(options.time.min, options.ticks.min);\n  }\n\n  function getMax(options) {\n    return helpers$1.valueOrDefault(options.time.max, options.ticks.max);\n  }\n  /**\n   * Returns an array of {time, pos} objects used to interpolate a specific `time` or position\n   * (`pos`) on the scale, by searching entries before and after the requested value. `pos` is\n   * a decimal between 0 and 1: 0 being the start of the scale (left or top) and 1 the other\n   * extremity (left + width or top + height). Note that it would be more optimized to directly\n   * store pre-computed pixels, but the scale dimensions are not guaranteed at the time we need\n   * to create the lookup table. The table ALWAYS contains at least two items: min and max.\n   *\n   * @param {number[]} timestamps - timestamps sorted from lowest to highest.\n   * @param {string} distribution - If 'linear', timestamps will be spread linearly along the min\n   * and max range, so basically, the table will contains only two items: {min, 0} and {max, 1}.\n   * If 'series', timestamps will be positioned at the same distance from each other. In this\n   * case, only timestamps that break the time linearity are registered, meaning that in the\n   * best case, all timestamps are linear, the table contains only min and max.\n   */\n\n\n  function buildLookupTable(timestamps, min, max, distribution) {\n    if (distribution === 'linear' || !timestamps.length) {\n      return [{\n        time: min,\n        pos: 0\n      }, {\n        time: max,\n        pos: 1\n      }];\n    }\n\n    var table = [];\n    var items = [min];\n    var i, ilen, prev, curr, next;\n\n    for (i = 0, ilen = timestamps.length; i < ilen; ++i) {\n      curr = timestamps[i];\n\n      if (curr > min && curr < max) {\n        items.push(curr);\n      }\n    }\n\n    items.push(max);\n\n    for (i = 0, ilen = items.length; i < ilen; ++i) {\n      next = items[i + 1];\n      prev = items[i - 1];\n      curr = items[i]; // only add points that breaks the scale linearity\n\n      if (prev === undefined || next === undefined || Math.round((next + prev) / 2) !== curr) {\n        table.push({\n          time: curr,\n          pos: i / (ilen - 1)\n        });\n      }\n    }\n\n    return table;\n  } // @see adapted from https://www.anujgakhar.com/2014/03/01/binary-search-in-javascript/\n\n\n  function lookup(table, key, value) {\n    var lo = 0;\n    var hi = table.length - 1;\n    var mid, i0, i1;\n\n    while (lo >= 0 && lo <= hi) {\n      mid = lo + hi >> 1;\n      i0 = table[mid - 1] || null;\n      i1 = table[mid];\n\n      if (!i0) {\n        // given value is outside table (before first item)\n        return {\n          lo: null,\n          hi: i1\n        };\n      } else if (i1[key] < value) {\n        lo = mid + 1;\n      } else if (i0[key] > value) {\n        hi = mid - 1;\n      } else {\n        return {\n          lo: i0,\n          hi: i1\n        };\n      }\n    } // given value is outside table (after last item)\n\n\n    return {\n      lo: i1,\n      hi: null\n    };\n  }\n  /**\n   * Linearly interpolates the given source `value` using the table items `skey` values and\n   * returns the associated `tkey` value. For example, interpolate(table, 'time', 42, 'pos')\n   * returns the position for a timestamp equal to 42. If value is out of bounds, values at\n   * index [0, 1] or [n - 1, n] are used for the interpolation.\n   */\n\n\n  function interpolate$1(table, skey, sval, tkey) {\n    var range = lookup(table, skey, sval); // Note: the lookup table ALWAYS contains at least 2 items (min and max)\n\n    var prev = !range.lo ? table[0] : !range.hi ? table[table.length - 2] : range.lo;\n    var next = !range.lo ? table[1] : !range.hi ? table[table.length - 1] : range.hi;\n    var span = next[skey] - prev[skey];\n    var ratio = span ? (sval - prev[skey]) / span : 0;\n    var offset = (next[tkey] - prev[tkey]) * ratio;\n    return prev[tkey] + offset;\n  }\n\n  function toTimestamp(scale, input) {\n    var adapter = scale._adapter;\n    var options = scale.options.time;\n    var parser = options.parser;\n    var format = parser || options.format;\n    var value = input;\n\n    if (typeof parser === 'function') {\n      value = parser(value);\n    } // Only parse if its not a timestamp already\n\n\n    if (!helpers$1.isFinite(value)) {\n      value = typeof format === 'string' ? adapter.parse(value, format) : adapter.parse(value);\n    }\n\n    if (value !== null) {\n      return +value;\n    } // Labels are in an incompatible format and no `parser` has been provided.\n    // The user might still use the deprecated `format` option for parsing.\n\n\n    if (!parser && typeof format === 'function') {\n      value = format(input); // `format` could return something else than a timestamp, if so, parse it\n\n      if (!helpers$1.isFinite(value)) {\n        value = adapter.parse(value);\n      }\n    }\n\n    return value;\n  }\n\n  function parse(scale, input) {\n    if (helpers$1.isNullOrUndef(input)) {\n      return null;\n    }\n\n    var options = scale.options.time;\n    var value = toTimestamp(scale, scale.getRightValue(input));\n\n    if (value === null) {\n      return value;\n    }\n\n    if (options.round) {\n      value = +scale._adapter.startOf(value, options.round);\n    }\n\n    return value;\n  }\n  /**\n   * Figures out what unit results in an appropriate number of auto-generated ticks\n   */\n\n\n  function determineUnitForAutoTicks(minUnit, min, max, capacity) {\n    var ilen = UNITS.length;\n    var i, interval, factor;\n\n    for (i = UNITS.indexOf(minUnit); i < ilen - 1; ++i) {\n      interval = INTERVALS[UNITS[i]];\n      factor = interval.steps ? interval.steps : MAX_INTEGER;\n\n      if (interval.common && Math.ceil((max - min) / (factor * interval.size)) <= capacity) {\n        return UNITS[i];\n      }\n    }\n\n    return UNITS[ilen - 1];\n  }\n  /**\n   * Figures out what unit to format a set of ticks with\n   */\n\n\n  function determineUnitForFormatting(scale, numTicks, minUnit, min, max) {\n    var i, unit;\n\n    for (i = UNITS.length - 1; i >= UNITS.indexOf(minUnit); i--) {\n      unit = UNITS[i];\n\n      if (INTERVALS[unit].common && scale._adapter.diff(max, min, unit) >= numTicks - 1) {\n        return unit;\n      }\n    }\n\n    return UNITS[minUnit ? UNITS.indexOf(minUnit) : 0];\n  }\n\n  function determineMajorUnit(unit) {\n    for (var i = UNITS.indexOf(unit) + 1, ilen = UNITS.length; i < ilen; ++i) {\n      if (INTERVALS[UNITS[i]].common) {\n        return UNITS[i];\n      }\n    }\n  }\n  /**\n   * Generates a maximum of `capacity` timestamps between min and max, rounded to the\n   * `minor` unit using the given scale time `options`.\n   * Important: this method can return ticks outside the min and max range, it's the\n   * responsibility of the calling code to clamp values if needed.\n   */\n\n\n  function generate(scale, min, max, capacity) {\n    var adapter = scale._adapter;\n    var options = scale.options;\n    var timeOpts = options.time;\n    var minor = timeOpts.unit || determineUnitForAutoTicks(timeOpts.minUnit, min, max, capacity);\n    var stepSize = resolve$5([timeOpts.stepSize, timeOpts.unitStepSize, 1]);\n    var weekday = minor === 'week' ? timeOpts.isoWeekday : false;\n    var first = min;\n    var ticks = [];\n    var time; // For 'week' unit, handle the first day of week option\n\n    if (weekday) {\n      first = +adapter.startOf(first, 'isoWeek', weekday);\n    } // Align first ticks on unit\n\n\n    first = +adapter.startOf(first, weekday ? 'day' : minor); // Prevent browser from freezing in case user options request millions of milliseconds\n\n    if (adapter.diff(max, min, minor) > 100000 * stepSize) {\n      throw min + ' and ' + max + ' are too far apart with stepSize of ' + stepSize + ' ' + minor;\n    }\n\n    for (time = first; time < max; time = +adapter.add(time, stepSize, minor)) {\n      ticks.push(time);\n    }\n\n    if (time === max || options.bounds === 'ticks') {\n      ticks.push(time);\n    }\n\n    return ticks;\n  }\n  /**\n   * Returns the start and end offsets from edges in the form of {start, end}\n   * where each value is a relative width to the scale and ranges between 0 and 1.\n   * They add extra margins on the both sides by scaling down the original scale.\n   * Offsets are added when the `offset` option is true.\n   */\n\n\n  function computeOffsets(table, ticks, min, max, options) {\n    var start = 0;\n    var end = 0;\n    var first, last;\n\n    if (options.offset && ticks.length) {\n      first = interpolate$1(table, 'time', ticks[0], 'pos');\n\n      if (ticks.length === 1) {\n        start = 1 - first;\n      } else {\n        start = (interpolate$1(table, 'time', ticks[1], 'pos') - first) / 2;\n      }\n\n      last = interpolate$1(table, 'time', ticks[ticks.length - 1], 'pos');\n\n      if (ticks.length === 1) {\n        end = last;\n      } else {\n        end = (last - interpolate$1(table, 'time', ticks[ticks.length - 2], 'pos')) / 2;\n      }\n    }\n\n    return {\n      start: start,\n      end: end,\n      factor: 1 / (start + 1 + end)\n    };\n  }\n\n  function setMajorTicks(scale, ticks, map, majorUnit) {\n    var adapter = scale._adapter;\n    var first = +adapter.startOf(ticks[0].value, majorUnit);\n    var last = ticks[ticks.length - 1].value;\n    var major, index;\n\n    for (major = first; major <= last; major = +adapter.add(major, 1, majorUnit)) {\n      index = map[major];\n\n      if (index >= 0) {\n        ticks[index].major = true;\n      }\n    }\n\n    return ticks;\n  }\n\n  function ticksFromTimestamps(scale, values, majorUnit) {\n    var ticks = [];\n    var map = {};\n    var ilen = values.length;\n    var i, value;\n\n    for (i = 0; i < ilen; ++i) {\n      value = values[i];\n      map[value] = i;\n      ticks.push({\n        value: value,\n        major: false\n      });\n    } // We set the major ticks separately from the above loop because calling startOf for every tick\n    // is expensive when there is a large number of ticks\n\n\n    return ilen === 0 || !majorUnit ? ticks : setMajorTicks(scale, ticks, map, majorUnit);\n  }\n\n  var defaultConfig$4 = {\n    position: 'bottom',\n\n    /**\n     * Data distribution along the scale:\n     * - 'linear': data are spread according to their time (distances can vary),\n     * - 'series': data are spread at the same distance from each other.\n     * @see https://github.com/chartjs/Chart.js/pull/4507\n     * @since 2.7.0\n     */\n    distribution: 'linear',\n\n    /**\n     * Scale boundary strategy (bypassed by min/max time options)\n     * - `data`: make sure data are fully visible, ticks outside are removed\n     * - `ticks`: make sure ticks are fully visible, data outside are truncated\n     * @see https://github.com/chartjs/Chart.js/pull/4556\n     * @since 2.7.0\n     */\n    bounds: 'data',\n    adapters: {},\n    time: {\n      parser: false,\n      // false == a pattern string from https://momentjs.com/docs/#/parsing/string-format/ or a custom callback that converts its argument to a moment\n      unit: false,\n      // false == automatic or override with week, month, year, etc.\n      round: false,\n      // none, or override with week, month, year, etc.\n      displayFormat: false,\n      // DEPRECATED\n      isoWeekday: false,\n      // override week start day - see https://momentjs.com/docs/#/get-set/iso-weekday/\n      minUnit: 'millisecond',\n      displayFormats: {}\n    },\n    ticks: {\n      autoSkip: false,\n\n      /**\n       * Ticks generation input values:\n       * - 'auto': generates \"optimal\" ticks based on scale size and time options.\n       * - 'data': generates ticks from data (including labels from data {t|x|y} objects).\n       * - 'labels': generates ticks from user given `data.labels` values ONLY.\n       * @see https://github.com/chartjs/Chart.js/pull/4507\n       * @since 2.7.0\n       */\n      source: 'auto',\n      major: {\n        enabled: false\n      }\n    }\n  };\n  var scale_time = core_scale.extend({\n    initialize: function initialize() {\n      this.mergeTicksOptions();\n      core_scale.prototype.initialize.call(this);\n    },\n    update: function update() {\n      var me = this;\n      var options = me.options;\n      var time = options.time || (options.time = {});\n      var adapter = me._adapter = new core_adapters._date(options.adapters.date); // DEPRECATIONS: output a message only one time per update\n\n      deprecated$1('time scale', time.format, 'time.format', 'time.parser');\n      deprecated$1('time scale', time.min, 'time.min', 'ticks.min');\n      deprecated$1('time scale', time.max, 'time.max', 'ticks.max'); // Backward compatibility: before introducing adapter, `displayFormats` was\n      // supposed to contain *all* unit/string pairs but this can't be resolved\n      // when loading the scale (adapters are loaded afterward), so let's populate\n      // missing formats on update\n\n      helpers$1.mergeIf(time.displayFormats, adapter.formats());\n      return core_scale.prototype.update.apply(me, arguments);\n    },\n\n    /**\n     * Allows data to be referenced via 't' attribute\n     */\n    getRightValue: function getRightValue(rawValue) {\n      if (rawValue && rawValue.t !== undefined) {\n        rawValue = rawValue.t;\n      }\n\n      return core_scale.prototype.getRightValue.call(this, rawValue);\n    },\n    determineDataLimits: function determineDataLimits() {\n      var me = this;\n      var chart = me.chart;\n      var adapter = me._adapter;\n      var options = me.options;\n      var unit = options.time.unit || 'day';\n      var min = MAX_INTEGER;\n      var max = MIN_INTEGER;\n      var timestamps = [];\n      var datasets = [];\n      var labels = [];\n      var i, j, ilen, jlen, data, timestamp, labelsAdded;\n\n      var dataLabels = me._getLabels();\n\n      for (i = 0, ilen = dataLabels.length; i < ilen; ++i) {\n        labels.push(parse(me, dataLabels[i]));\n      }\n\n      for (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) {\n        if (chart.isDatasetVisible(i)) {\n          data = chart.data.datasets[i].data; // Let's consider that all data have the same format.\n\n          if (helpers$1.isObject(data[0])) {\n            datasets[i] = [];\n\n            for (j = 0, jlen = data.length; j < jlen; ++j) {\n              timestamp = parse(me, data[j]);\n              timestamps.push(timestamp);\n              datasets[i][j] = timestamp;\n            }\n          } else {\n            datasets[i] = labels.slice(0);\n\n            if (!labelsAdded) {\n              timestamps = timestamps.concat(labels);\n              labelsAdded = true;\n            }\n          }\n        } else {\n          datasets[i] = [];\n        }\n      }\n\n      if (labels.length) {\n        min = Math.min(min, labels[0]);\n        max = Math.max(max, labels[labels.length - 1]);\n      }\n\n      if (timestamps.length) {\n        timestamps = ilen > 1 ? arrayUnique(timestamps).sort(sorter) : timestamps.sort(sorter);\n        min = Math.min(min, timestamps[0]);\n        max = Math.max(max, timestamps[timestamps.length - 1]);\n      }\n\n      min = parse(me, getMin(options)) || min;\n      max = parse(me, getMax(options)) || max; // In case there is no valid min/max, set limits based on unit time option\n\n      min = min === MAX_INTEGER ? +adapter.startOf(Date.now(), unit) : min;\n      max = max === MIN_INTEGER ? +adapter.endOf(Date.now(), unit) + 1 : max; // Make sure that max is strictly higher than min (required by the lookup table)\n\n      me.min = Math.min(min, max);\n      me.max = Math.max(min + 1, max); // PRIVATE\n\n      me._table = [];\n      me._timestamps = {\n        data: timestamps,\n        datasets: datasets,\n        labels: labels\n      };\n    },\n    buildTicks: function buildTicks() {\n      var me = this;\n      var min = me.min;\n      var max = me.max;\n      var options = me.options;\n      var tickOpts = options.ticks;\n      var timeOpts = options.time;\n      var timestamps = me._timestamps;\n      var ticks = [];\n      var capacity = me.getLabelCapacity(min);\n      var source = tickOpts.source;\n      var distribution = options.distribution;\n      var i, ilen, timestamp;\n\n      if (source === 'data' || source === 'auto' && distribution === 'series') {\n        timestamps = timestamps.data;\n      } else if (source === 'labels') {\n        timestamps = timestamps.labels;\n      } else {\n        timestamps = generate(me, min, max, capacity);\n      }\n\n      if (options.bounds === 'ticks' && timestamps.length) {\n        min = timestamps[0];\n        max = timestamps[timestamps.length - 1];\n      } // Enforce limits with user min/max options\n\n\n      min = parse(me, getMin(options)) || min;\n      max = parse(me, getMax(options)) || max; // Remove ticks outside the min/max range\n\n      for (i = 0, ilen = timestamps.length; i < ilen; ++i) {\n        timestamp = timestamps[i];\n\n        if (timestamp >= min && timestamp <= max) {\n          ticks.push(timestamp);\n        }\n      }\n\n      me.min = min;\n      me.max = max; // PRIVATE\n      // determineUnitForFormatting relies on the number of ticks so we don't use it when\n      // autoSkip is enabled because we don't yet know what the final number of ticks will be\n\n      me._unit = timeOpts.unit || (tickOpts.autoSkip ? determineUnitForAutoTicks(timeOpts.minUnit, me.min, me.max, capacity) : determineUnitForFormatting(me, ticks.length, timeOpts.minUnit, me.min, me.max));\n      me._majorUnit = !tickOpts.major.enabled || me._unit === 'year' ? undefined : determineMajorUnit(me._unit);\n      me._table = buildLookupTable(me._timestamps.data, min, max, distribution);\n      me._offsets = computeOffsets(me._table, ticks, min, max, options);\n\n      if (tickOpts.reverse) {\n        ticks.reverse();\n      }\n\n      return ticksFromTimestamps(me, ticks, me._majorUnit);\n    },\n    getLabelForIndex: function getLabelForIndex(index, datasetIndex) {\n      var me = this;\n      var adapter = me._adapter;\n      var data = me.chart.data;\n      var timeOpts = me.options.time;\n      var label = data.labels && index < data.labels.length ? data.labels[index] : '';\n      var value = data.datasets[datasetIndex].data[index];\n\n      if (helpers$1.isObject(value)) {\n        label = me.getRightValue(value);\n      }\n\n      if (timeOpts.tooltipFormat) {\n        return adapter.format(toTimestamp(me, label), timeOpts.tooltipFormat);\n      }\n\n      if (typeof label === 'string') {\n        return label;\n      }\n\n      return adapter.format(toTimestamp(me, label), timeOpts.displayFormats.datetime);\n    },\n\n    /**\n     * Function to format an individual tick mark\n     * @private\n     */\n    tickFormatFunction: function tickFormatFunction(time, index, ticks, format) {\n      var me = this;\n      var adapter = me._adapter;\n      var options = me.options;\n      var formats = options.time.displayFormats;\n      var minorFormat = formats[me._unit];\n      var majorUnit = me._majorUnit;\n      var majorFormat = formats[majorUnit];\n      var tick = ticks[index];\n      var tickOpts = options.ticks;\n      var major = majorUnit && majorFormat && tick && tick.major;\n      var label = adapter.format(time, format ? format : major ? majorFormat : minorFormat);\n      var nestedTickOpts = major ? tickOpts.major : tickOpts.minor;\n      var formatter = resolve$5([nestedTickOpts.callback, nestedTickOpts.userCallback, tickOpts.callback, tickOpts.userCallback]);\n      return formatter ? formatter(label, index, ticks) : label;\n    },\n    convertTicksToLabels: function convertTicksToLabels(ticks) {\n      var labels = [];\n      var i, ilen;\n\n      for (i = 0, ilen = ticks.length; i < ilen; ++i) {\n        labels.push(this.tickFormatFunction(ticks[i].value, i, ticks));\n      }\n\n      return labels;\n    },\n\n    /**\n     * @private\n     */\n    getPixelForOffset: function getPixelForOffset(time) {\n      var me = this;\n      var offsets = me._offsets;\n      var pos = interpolate$1(me._table, 'time', time, 'pos');\n      return me.getPixelForDecimal((offsets.start + pos) * offsets.factor);\n    },\n    getPixelForValue: function getPixelForValue(value, index, datasetIndex) {\n      var me = this;\n      var time = null;\n\n      if (index !== undefined && datasetIndex !== undefined) {\n        time = me._timestamps.datasets[datasetIndex][index];\n      }\n\n      if (time === null) {\n        time = parse(me, value);\n      }\n\n      if (time !== null) {\n        return me.getPixelForOffset(time);\n      }\n    },\n    getPixelForTick: function getPixelForTick(index) {\n      var ticks = this.getTicks();\n      return index >= 0 && index < ticks.length ? this.getPixelForOffset(ticks[index].value) : null;\n    },\n    getValueForPixel: function getValueForPixel(pixel) {\n      var me = this;\n      var offsets = me._offsets;\n      var pos = me.getDecimalForPixel(pixel) / offsets.factor - offsets.end;\n      var time = interpolate$1(me._table, 'pos', pos, 'time'); // DEPRECATION, we should return time directly\n\n      return me._adapter._create(time);\n    },\n\n    /**\n     * @private\n     */\n    _getLabelSize: function _getLabelSize(label) {\n      var me = this;\n      var ticksOpts = me.options.ticks;\n      var tickLabelWidth = me.ctx.measureText(label).width;\n      var angle = helpers$1.toRadians(me.isHorizontal() ? ticksOpts.maxRotation : ticksOpts.minRotation);\n      var cosRotation = Math.cos(angle);\n      var sinRotation = Math.sin(angle);\n      var tickFontSize = valueOrDefault$d(ticksOpts.fontSize, core_defaults.global.defaultFontSize);\n      return {\n        w: tickLabelWidth * cosRotation + tickFontSize * sinRotation,\n        h: tickLabelWidth * sinRotation + tickFontSize * cosRotation\n      };\n    },\n\n    /**\n     * Crude approximation of what the label width might be\n     * @private\n     */\n    getLabelWidth: function getLabelWidth(label) {\n      return this._getLabelSize(label).w;\n    },\n\n    /**\n     * @private\n     */\n    getLabelCapacity: function getLabelCapacity(exampleTime) {\n      var me = this;\n      var timeOpts = me.options.time;\n      var displayFormats = timeOpts.displayFormats; // pick the longest format (milliseconds) for guestimation\n\n      var format = displayFormats[timeOpts.unit] || displayFormats.millisecond;\n      var exampleLabel = me.tickFormatFunction(exampleTime, 0, ticksFromTimestamps(me, [exampleTime], me._majorUnit), format);\n\n      var size = me._getLabelSize(exampleLabel);\n\n      var capacity = Math.floor(me.isHorizontal() ? me.width / size.w : me.height / size.h);\n\n      if (me.options.offset) {\n        capacity--;\n      }\n\n      return capacity > 0 ? capacity : 1;\n    }\n  }); // INTERNAL: static default options, registered in src/index.js\n\n  var _defaults$4 = defaultConfig$4;\n  scale_time._defaults = _defaults$4;\n  var scales = {\n    category: scale_category,\n    linear: scale_linear,\n    logarithmic: scale_logarithmic,\n    radialLinear: scale_radialLinear,\n    time: scale_time\n  };\n  var FORMATS = {\n    datetime: 'MMM D, YYYY, h:mm:ss a',\n    millisecond: 'h:mm:ss.SSS a',\n    second: 'h:mm:ss a',\n    minute: 'h:mm a',\n    hour: 'hA',\n    day: 'MMM D',\n    week: 'll',\n    month: 'MMM YYYY',\n    quarter: '[Q]Q - YYYY',\n    year: 'YYYY'\n  };\n\n  core_adapters._date.override(typeof moment === 'function' ? {\n    _id: 'moment',\n    // DEBUG ONLY\n    formats: function formats() {\n      return FORMATS;\n    },\n    parse: function parse(value, format) {\n      if (typeof value === 'string' && typeof format === 'string') {\n        value = moment(value, format);\n      } else if (!(value instanceof moment)) {\n        value = moment(value);\n      }\n\n      return value.isValid() ? value.valueOf() : null;\n    },\n    format: function format(time, _format) {\n      return moment(time).format(_format);\n    },\n    add: function add(time, amount, unit) {\n      return moment(time).add(amount, unit).valueOf();\n    },\n    diff: function diff(max, min, unit) {\n      return moment(max).diff(moment(min), unit);\n    },\n    startOf: function startOf(time, unit, weekday) {\n      time = moment(time);\n\n      if (unit === 'isoWeek') {\n        return time.isoWeekday(weekday).valueOf();\n      }\n\n      return time.startOf(unit).valueOf();\n    },\n    endOf: function endOf(time, unit) {\n      return moment(time).endOf(unit).valueOf();\n    },\n    // DEPRECATIONS\n\n    /**\n     * Provided for backward compatibility with scale.getValueForPixel().\n     * @deprecated since version 2.8.0\n     * @todo remove at version 3\n     * @private\n     */\n    _create: function _create(time) {\n      return moment(time);\n    }\n  } : {});\n\n  core_defaults._set('global', {\n    plugins: {\n      filler: {\n        propagate: true\n      }\n    }\n  });\n\n  var mappers = {\n    dataset: function dataset(source) {\n      var index = source.fill;\n      var chart = source.chart;\n      var meta = chart.getDatasetMeta(index);\n      var visible = meta && chart.isDatasetVisible(index);\n      var points = visible && meta.dataset._children || [];\n      var length = points.length || 0;\n      return !length ? null : function (point, i) {\n        return i < length && points[i]._view || null;\n      };\n    },\n    boundary: function boundary(source) {\n      var boundary = source.boundary;\n      var x = boundary ? boundary.x : null;\n      var y = boundary ? boundary.y : null;\n\n      if (helpers$1.isArray(boundary)) {\n        return function (point, i) {\n          return boundary[i];\n        };\n      }\n\n      return function (point) {\n        return {\n          x: x === null ? point.x : x,\n          y: y === null ? point.y : y\n        };\n      };\n    }\n  }; // @todo if (fill[0] === '#')\n\n  function decodeFill(el, index, count) {\n    var model = el._model || {};\n    var fill = model.fill;\n    var target;\n\n    if (fill === undefined) {\n      fill = !!model.backgroundColor;\n    }\n\n    if (fill === false || fill === null) {\n      return false;\n    }\n\n    if (fill === true) {\n      return 'origin';\n    }\n\n    target = parseFloat(fill, 10);\n\n    if (isFinite(target) && Math.floor(target) === target) {\n      if (fill[0] === '-' || fill[0] === '+') {\n        target = index + target;\n      }\n\n      if (target === index || target < 0 || target >= count) {\n        return false;\n      }\n\n      return target;\n    }\n\n    switch (fill) {\n      // compatibility\n      case 'bottom':\n        return 'start';\n\n      case 'top':\n        return 'end';\n\n      case 'zero':\n        return 'origin';\n      // supported boundaries\n\n      case 'origin':\n      case 'start':\n      case 'end':\n        return fill;\n      // invalid fill values\n\n      default:\n        return false;\n    }\n  }\n\n  function computeLinearBoundary(source) {\n    var model = source.el._model || {};\n    var scale = source.el._scale || {};\n    var fill = source.fill;\n    var target = null;\n    var horizontal;\n\n    if (isFinite(fill)) {\n      return null;\n    } // Backward compatibility: until v3, we still need to support boundary values set on\n    // the model (scaleTop, scaleBottom and scaleZero) because some external plugins and\n    // controllers might still use it (e.g. the Smith chart).\n\n\n    if (fill === 'start') {\n      target = model.scaleBottom === undefined ? scale.bottom : model.scaleBottom;\n    } else if (fill === 'end') {\n      target = model.scaleTop === undefined ? scale.top : model.scaleTop;\n    } else if (model.scaleZero !== undefined) {\n      target = model.scaleZero;\n    } else if (scale.getBasePixel) {\n      target = scale.getBasePixel();\n    }\n\n    if (target !== undefined && target !== null) {\n      if (target.x !== undefined && target.y !== undefined) {\n        return target;\n      }\n\n      if (helpers$1.isFinite(target)) {\n        horizontal = scale.isHorizontal();\n        return {\n          x: horizontal ? target : null,\n          y: horizontal ? null : target\n        };\n      }\n    }\n\n    return null;\n  }\n\n  function computeCircularBoundary(source) {\n    var scale = source.el._scale;\n    var options = scale.options;\n    var length = scale.chart.data.labels.length;\n    var fill = source.fill;\n    var target = [];\n    var start, end, center, i, point;\n\n    if (!length) {\n      return null;\n    }\n\n    start = options.ticks.reverse ? scale.max : scale.min;\n    end = options.ticks.reverse ? scale.min : scale.max;\n    center = scale.getPointPositionForValue(0, start);\n\n    for (i = 0; i < length; ++i) {\n      point = fill === 'start' || fill === 'end' ? scale.getPointPositionForValue(i, fill === 'start' ? start : end) : scale.getBasePosition(i);\n\n      if (options.gridLines.circular) {\n        point.cx = center.x;\n        point.cy = center.y;\n        point.angle = scale.getIndexAngle(i) - Math.PI / 2;\n      }\n\n      target.push(point);\n    }\n\n    return target;\n  }\n\n  function computeBoundary(source) {\n    var scale = source.el._scale || {};\n\n    if (scale.getPointPositionForValue) {\n      return computeCircularBoundary(source);\n    }\n\n    return computeLinearBoundary(source);\n  }\n\n  function resolveTarget(sources, index, propagate) {\n    var source = sources[index];\n    var fill = source.fill;\n    var visited = [index];\n    var target;\n\n    if (!propagate) {\n      return fill;\n    }\n\n    while (fill !== false && visited.indexOf(fill) === -1) {\n      if (!isFinite(fill)) {\n        return fill;\n      }\n\n      target = sources[fill];\n\n      if (!target) {\n        return false;\n      }\n\n      if (target.visible) {\n        return fill;\n      }\n\n      visited.push(fill);\n      fill = target.fill;\n    }\n\n    return false;\n  }\n\n  function createMapper(source) {\n    var fill = source.fill;\n    var type = 'dataset';\n\n    if (fill === false) {\n      return null;\n    }\n\n    if (!isFinite(fill)) {\n      type = 'boundary';\n    }\n\n    return mappers[type](source);\n  }\n\n  function isDrawable(point) {\n    return point && !point.skip;\n  }\n\n  function drawArea(ctx, curve0, curve1, len0, len1) {\n    var i, cx, cy, r;\n\n    if (!len0 || !len1) {\n      return;\n    } // building first area curve (normal)\n\n\n    ctx.moveTo(curve0[0].x, curve0[0].y);\n\n    for (i = 1; i < len0; ++i) {\n      helpers$1.canvas.lineTo(ctx, curve0[i - 1], curve0[i]);\n    }\n\n    if (curve1[0].angle !== undefined) {\n      cx = curve1[0].cx;\n      cy = curve1[0].cy;\n      r = Math.sqrt(Math.pow(curve1[0].x - cx, 2) + Math.pow(curve1[0].y - cy, 2));\n\n      for (i = len1 - 1; i > 0; --i) {\n        ctx.arc(cx, cy, r, curve1[i].angle, curve1[i - 1].angle, true);\n      }\n\n      return;\n    } // joining the two area curves\n\n\n    ctx.lineTo(curve1[len1 - 1].x, curve1[len1 - 1].y); // building opposite area curve (reverse)\n\n    for (i = len1 - 1; i > 0; --i) {\n      helpers$1.canvas.lineTo(ctx, curve1[i], curve1[i - 1], true);\n    }\n  }\n\n  function doFill(ctx, points, mapper, view, color, loop) {\n    var count = points.length;\n    var span = view.spanGaps;\n    var curve0 = [];\n    var curve1 = [];\n    var len0 = 0;\n    var len1 = 0;\n    var i, ilen, index, p0, p1, d0, d1, loopOffset;\n    ctx.beginPath();\n\n    for (i = 0, ilen = count; i < ilen; ++i) {\n      index = i % count;\n      p0 = points[index]._view;\n      p1 = mapper(p0, index, view);\n      d0 = isDrawable(p0);\n      d1 = isDrawable(p1);\n\n      if (loop && loopOffset === undefined && d0) {\n        loopOffset = i + 1;\n        ilen = count + loopOffset;\n      }\n\n      if (d0 && d1) {\n        len0 = curve0.push(p0);\n        len1 = curve1.push(p1);\n      } else if (len0 && len1) {\n        if (!span) {\n          drawArea(ctx, curve0, curve1, len0, len1);\n          len0 = len1 = 0;\n          curve0 = [];\n          curve1 = [];\n        } else {\n          if (d0) {\n            curve0.push(p0);\n          }\n\n          if (d1) {\n            curve1.push(p1);\n          }\n        }\n      }\n    }\n\n    drawArea(ctx, curve0, curve1, len0, len1);\n    ctx.closePath();\n    ctx.fillStyle = color;\n    ctx.fill();\n  }\n\n  var plugin_filler = {\n    id: 'filler',\n    afterDatasetsUpdate: function afterDatasetsUpdate(chart, options) {\n      var count = (chart.data.datasets || []).length;\n      var propagate = options.propagate;\n      var sources = [];\n      var meta, i, el, source;\n\n      for (i = 0; i < count; ++i) {\n        meta = chart.getDatasetMeta(i);\n        el = meta.dataset;\n        source = null;\n\n        if (el && el._model && el instanceof elements.Line) {\n          source = {\n            visible: chart.isDatasetVisible(i),\n            fill: decodeFill(el, i, count),\n            chart: chart,\n            el: el\n          };\n        }\n\n        meta.$filler = source;\n        sources.push(source);\n      }\n\n      for (i = 0; i < count; ++i) {\n        source = sources[i];\n\n        if (!source) {\n          continue;\n        }\n\n        source.fill = resolveTarget(sources, i, propagate);\n        source.boundary = computeBoundary(source);\n        source.mapper = createMapper(source);\n      }\n    },\n    beforeDatasetsDraw: function beforeDatasetsDraw(chart) {\n      var metasets = chart._getSortedVisibleDatasetMetas();\n\n      var ctx = chart.ctx;\n      var meta, i, el, view, points, mapper, color;\n\n      for (i = metasets.length - 1; i >= 0; --i) {\n        meta = metasets[i].$filler;\n\n        if (!meta || !meta.visible) {\n          continue;\n        }\n\n        el = meta.el;\n        view = el._view;\n        points = el._children || [];\n        mapper = meta.mapper;\n        color = view.backgroundColor || core_defaults.global.defaultColor;\n\n        if (mapper && color && points.length) {\n          helpers$1.canvas.clipArea(ctx, chart.chartArea);\n          doFill(ctx, points, mapper, view, color, el._loop);\n          helpers$1.canvas.unclipArea(ctx);\n        }\n      }\n    }\n  };\n  var getRtlHelper$1 = helpers$1.rtl.getRtlAdapter;\n  var noop$1 = helpers$1.noop;\n  var valueOrDefault$e = helpers$1.valueOrDefault;\n\n  core_defaults._set('global', {\n    legend: {\n      display: true,\n      position: 'top',\n      align: 'center',\n      fullWidth: true,\n      reverse: false,\n      weight: 1000,\n      // a callback that will handle\n      onClick: function onClick(e, legendItem) {\n        var index = legendItem.datasetIndex;\n        var ci = this.chart;\n        var meta = ci.getDatasetMeta(index); // See controller.isDatasetVisible comment\n\n        meta.hidden = meta.hidden === null ? !ci.data.datasets[index].hidden : null; // We hid a dataset ... rerender the chart\n\n        ci.update();\n      },\n      onHover: null,\n      onLeave: null,\n      labels: {\n        boxWidth: 40,\n        padding: 10,\n        // Generates labels shown in the legend\n        // Valid properties to return:\n        // text : text to display\n        // fillStyle : fill of coloured box\n        // strokeStyle: stroke of coloured box\n        // hidden : if this legend item refers to a hidden item\n        // lineCap : cap style for line\n        // lineDash\n        // lineDashOffset :\n        // lineJoin :\n        // lineWidth :\n        generateLabels: function generateLabels(chart) {\n          var datasets = chart.data.datasets;\n          var options = chart.options.legend || {};\n          var usePointStyle = options.labels && options.labels.usePointStyle;\n          return chart._getSortedDatasetMetas().map(function (meta) {\n            var style = meta.controller.getStyle(usePointStyle ? 0 : undefined);\n            return {\n              text: datasets[meta.index].label,\n              fillStyle: style.backgroundColor,\n              hidden: !chart.isDatasetVisible(meta.index),\n              lineCap: style.borderCapStyle,\n              lineDash: style.borderDash,\n              lineDashOffset: style.borderDashOffset,\n              lineJoin: style.borderJoinStyle,\n              lineWidth: style.borderWidth,\n              strokeStyle: style.borderColor,\n              pointStyle: style.pointStyle,\n              rotation: style.rotation,\n              // Below is extra data used for toggling the datasets\n              datasetIndex: meta.index\n            };\n          }, this);\n        }\n      }\n    },\n    legendCallback: function legendCallback(chart) {\n      var list = document.createElement('ul');\n      var datasets = chart.data.datasets;\n      var i, ilen, listItem, listItemSpan;\n      list.setAttribute('class', chart.id + '-legend');\n\n      for (i = 0, ilen = datasets.length; i < ilen; i++) {\n        listItem = list.appendChild(document.createElement('li'));\n        listItemSpan = listItem.appendChild(document.createElement('span'));\n        listItemSpan.style.backgroundColor = datasets[i].backgroundColor;\n\n        if (datasets[i].label) {\n          listItem.appendChild(document.createTextNode(datasets[i].label));\n        }\n      }\n\n      return list.outerHTML;\n    }\n  });\n  /**\n   * Helper function to get the box width based on the usePointStyle option\n   * @param {object} labelopts - the label options on the legend\n   * @param {number} fontSize - the label font size\n   * @return {number} width of the color box area\n   */\n\n\n  function getBoxWidth(labelOpts, fontSize) {\n    return labelOpts.usePointStyle && labelOpts.boxWidth > fontSize ? fontSize : labelOpts.boxWidth;\n  }\n  /**\n   * IMPORTANT: this class is exposed publicly as Chart.Legend, backward compatibility required!\n   */\n\n\n  var Legend = core_element.extend({\n    initialize: function initialize(config) {\n      var me = this;\n      helpers$1.extend(me, config); // Contains hit boxes for each dataset (in dataset order)\n\n      me.legendHitBoxes = [];\n      /**\n      \t * @private\n      \t */\n\n      me._hoveredItem = null; // Are we in doughnut mode which has a different data type\n\n      me.doughnutMode = false;\n    },\n    // These methods are ordered by lifecycle. Utilities then follow.\n    // Any function defined here is inherited by all legend types.\n    // Any function can be extended by the legend type\n    beforeUpdate: noop$1,\n    update: function update(maxWidth, maxHeight, margins) {\n      var me = this; // Update Lifecycle - Probably don't want to ever extend or overwrite this function ;)\n\n      me.beforeUpdate(); // Absorb the master measurements\n\n      me.maxWidth = maxWidth;\n      me.maxHeight = maxHeight;\n      me.margins = margins; // Dimensions\n\n      me.beforeSetDimensions();\n      me.setDimensions();\n      me.afterSetDimensions(); // Labels\n\n      me.beforeBuildLabels();\n      me.buildLabels();\n      me.afterBuildLabels(); // Fit\n\n      me.beforeFit();\n      me.fit();\n      me.afterFit(); //\n\n      me.afterUpdate();\n      return me.minSize;\n    },\n    afterUpdate: noop$1,\n    //\n    beforeSetDimensions: noop$1,\n    setDimensions: function setDimensions() {\n      var me = this; // Set the unconstrained dimension before label rotation\n\n      if (me.isHorizontal()) {\n        // Reset position before calculating rotation\n        me.width = me.maxWidth;\n        me.left = 0;\n        me.right = me.width;\n      } else {\n        me.height = me.maxHeight; // Reset position before calculating rotation\n\n        me.top = 0;\n        me.bottom = me.height;\n      } // Reset padding\n\n\n      me.paddingLeft = 0;\n      me.paddingTop = 0;\n      me.paddingRight = 0;\n      me.paddingBottom = 0; // Reset minSize\n\n      me.minSize = {\n        width: 0,\n        height: 0\n      };\n    },\n    afterSetDimensions: noop$1,\n    //\n    beforeBuildLabels: noop$1,\n    buildLabels: function buildLabels() {\n      var me = this;\n      var labelOpts = me.options.labels || {};\n      var legendItems = helpers$1.callback(labelOpts.generateLabels, [me.chart], me) || [];\n\n      if (labelOpts.filter) {\n        legendItems = legendItems.filter(function (item) {\n          return labelOpts.filter(item, me.chart.data);\n        });\n      }\n\n      if (me.options.reverse) {\n        legendItems.reverse();\n      }\n\n      me.legendItems = legendItems;\n    },\n    afterBuildLabels: noop$1,\n    //\n    beforeFit: noop$1,\n    fit: function fit() {\n      var me = this;\n      var opts = me.options;\n      var labelOpts = opts.labels;\n      var display = opts.display;\n      var ctx = me.ctx;\n\n      var labelFont = helpers$1.options._parseFont(labelOpts);\n\n      var fontSize = labelFont.size; // Reset hit boxes\n\n      var hitboxes = me.legendHitBoxes = [];\n      var minSize = me.minSize;\n      var isHorizontal = me.isHorizontal();\n\n      if (isHorizontal) {\n        minSize.width = me.maxWidth; // fill all the width\n\n        minSize.height = display ? 10 : 0;\n      } else {\n        minSize.width = display ? 10 : 0;\n        minSize.height = me.maxHeight; // fill all the height\n      } // Increase sizes here\n\n\n      if (!display) {\n        me.width = minSize.width = me.height = minSize.height = 0;\n        return;\n      }\n\n      ctx.font = labelFont.string;\n\n      if (isHorizontal) {\n        // Labels\n        // Width of each line of legend boxes. Labels wrap onto multiple lines when there are too many to fit on one\n        var lineWidths = me.lineWidths = [0];\n        var totalHeight = 0;\n        ctx.textAlign = 'left';\n        ctx.textBaseline = 'middle';\n        helpers$1.each(me.legendItems, function (legendItem, i) {\n          var boxWidth = getBoxWidth(labelOpts, fontSize);\n          var width = boxWidth + fontSize / 2 + ctx.measureText(legendItem.text).width;\n\n          if (i === 0 || lineWidths[lineWidths.length - 1] + width + 2 * labelOpts.padding > minSize.width) {\n            totalHeight += fontSize + labelOpts.padding;\n            lineWidths[lineWidths.length - (i > 0 ? 0 : 1)] = 0;\n          } // Store the hitbox width and height here. Final position will be updated in `draw`\n\n\n          hitboxes[i] = {\n            left: 0,\n            top: 0,\n            width: width,\n            height: fontSize\n          };\n          lineWidths[lineWidths.length - 1] += width + labelOpts.padding;\n        });\n        minSize.height += totalHeight;\n      } else {\n        var vPadding = labelOpts.padding;\n        var columnWidths = me.columnWidths = [];\n        var columnHeights = me.columnHeights = [];\n        var totalWidth = labelOpts.padding;\n        var currentColWidth = 0;\n        var currentColHeight = 0;\n        helpers$1.each(me.legendItems, function (legendItem, i) {\n          var boxWidth = getBoxWidth(labelOpts, fontSize);\n          var itemWidth = boxWidth + fontSize / 2 + ctx.measureText(legendItem.text).width; // If too tall, go to new column\n\n          if (i > 0 && currentColHeight + fontSize + 2 * vPadding > minSize.height) {\n            totalWidth += currentColWidth + labelOpts.padding;\n            columnWidths.push(currentColWidth); // previous column width\n\n            columnHeights.push(currentColHeight);\n            currentColWidth = 0;\n            currentColHeight = 0;\n          } // Get max width\n\n\n          currentColWidth = Math.max(currentColWidth, itemWidth);\n          currentColHeight += fontSize + vPadding; // Store the hitbox width and height here. Final position will be updated in `draw`\n\n          hitboxes[i] = {\n            left: 0,\n            top: 0,\n            width: itemWidth,\n            height: fontSize\n          };\n        });\n        totalWidth += currentColWidth;\n        columnWidths.push(currentColWidth);\n        columnHeights.push(currentColHeight);\n        minSize.width += totalWidth;\n      }\n\n      me.width = minSize.width;\n      me.height = minSize.height;\n    },\n    afterFit: noop$1,\n    // Shared Methods\n    isHorizontal: function isHorizontal() {\n      return this.options.position === 'top' || this.options.position === 'bottom';\n    },\n    // Actually draw the legend on the canvas\n    draw: function draw() {\n      var me = this;\n      var opts = me.options;\n      var labelOpts = opts.labels;\n      var globalDefaults = core_defaults.global;\n      var defaultColor = globalDefaults.defaultColor;\n      var lineDefault = globalDefaults.elements.line;\n      var legendHeight = me.height;\n      var columnHeights = me.columnHeights;\n      var legendWidth = me.width;\n      var lineWidths = me.lineWidths;\n\n      if (!opts.display) {\n        return;\n      }\n\n      var rtlHelper = getRtlHelper$1(opts.rtl, me.left, me.minSize.width);\n      var ctx = me.ctx;\n      var fontColor = valueOrDefault$e(labelOpts.fontColor, globalDefaults.defaultFontColor);\n\n      var labelFont = helpers$1.options._parseFont(labelOpts);\n\n      var fontSize = labelFont.size;\n      var cursor; // Canvas setup\n\n      ctx.textAlign = rtlHelper.textAlign('left');\n      ctx.textBaseline = 'middle';\n      ctx.lineWidth = 0.5;\n      ctx.strokeStyle = fontColor; // for strikethrough effect\n\n      ctx.fillStyle = fontColor; // render in correct colour\n\n      ctx.font = labelFont.string;\n      var boxWidth = getBoxWidth(labelOpts, fontSize);\n      var hitboxes = me.legendHitBoxes; // current position\n\n      var drawLegendBox = function drawLegendBox(x, y, legendItem) {\n        if (isNaN(boxWidth) || boxWidth <= 0) {\n          return;\n        } // Set the ctx for the box\n\n\n        ctx.save();\n        var lineWidth = valueOrDefault$e(legendItem.lineWidth, lineDefault.borderWidth);\n        ctx.fillStyle = valueOrDefault$e(legendItem.fillStyle, defaultColor);\n        ctx.lineCap = valueOrDefault$e(legendItem.lineCap, lineDefault.borderCapStyle);\n        ctx.lineDashOffset = valueOrDefault$e(legendItem.lineDashOffset, lineDefault.borderDashOffset);\n        ctx.lineJoin = valueOrDefault$e(legendItem.lineJoin, lineDefault.borderJoinStyle);\n        ctx.lineWidth = lineWidth;\n        ctx.strokeStyle = valueOrDefault$e(legendItem.strokeStyle, defaultColor);\n\n        if (ctx.setLineDash) {\n          // IE 9 and 10 do not support line dash\n          ctx.setLineDash(valueOrDefault$e(legendItem.lineDash, lineDefault.borderDash));\n        }\n\n        if (labelOpts && labelOpts.usePointStyle) {\n          // Recalculate x and y for drawPoint() because its expecting\n          // x and y to be center of figure (instead of top left)\n          var radius = boxWidth * Math.SQRT2 / 2;\n          var centerX = rtlHelper.xPlus(x, boxWidth / 2);\n          var centerY = y + fontSize / 2; // Draw pointStyle as legend symbol\n\n          helpers$1.canvas.drawPoint(ctx, legendItem.pointStyle, radius, centerX, centerY, legendItem.rotation);\n        } else {\n          // Draw box as legend symbol\n          ctx.fillRect(rtlHelper.leftForLtr(x, boxWidth), y, boxWidth, fontSize);\n\n          if (lineWidth !== 0) {\n            ctx.strokeRect(rtlHelper.leftForLtr(x, boxWidth), y, boxWidth, fontSize);\n          }\n        }\n\n        ctx.restore();\n      };\n\n      var fillText = function fillText(x, y, legendItem, textWidth) {\n        var halfFontSize = fontSize / 2;\n        var xLeft = rtlHelper.xPlus(x, boxWidth + halfFontSize);\n        var yMiddle = y + halfFontSize;\n        ctx.fillText(legendItem.text, xLeft, yMiddle);\n\n        if (legendItem.hidden) {\n          // Strikethrough the text if hidden\n          ctx.beginPath();\n          ctx.lineWidth = 2;\n          ctx.moveTo(xLeft, yMiddle);\n          ctx.lineTo(rtlHelper.xPlus(xLeft, textWidth), yMiddle);\n          ctx.stroke();\n        }\n      };\n\n      var alignmentOffset = function alignmentOffset(dimension, blockSize) {\n        switch (opts.align) {\n          case 'start':\n            return labelOpts.padding;\n\n          case 'end':\n            return dimension - blockSize;\n\n          default:\n            // center\n            return (dimension - blockSize + labelOpts.padding) / 2;\n        }\n      }; // Horizontal\n\n\n      var isHorizontal = me.isHorizontal();\n\n      if (isHorizontal) {\n        cursor = {\n          x: me.left + alignmentOffset(legendWidth, lineWidths[0]),\n          y: me.top + labelOpts.padding,\n          line: 0\n        };\n      } else {\n        cursor = {\n          x: me.left + labelOpts.padding,\n          y: me.top + alignmentOffset(legendHeight, columnHeights[0]),\n          line: 0\n        };\n      }\n\n      helpers$1.rtl.overrideTextDirection(me.ctx, opts.textDirection);\n      var itemHeight = fontSize + labelOpts.padding;\n      helpers$1.each(me.legendItems, function (legendItem, i) {\n        var textWidth = ctx.measureText(legendItem.text).width;\n        var width = boxWidth + fontSize / 2 + textWidth;\n        var x = cursor.x;\n        var y = cursor.y;\n        rtlHelper.setWidth(me.minSize.width); // Use (me.left + me.minSize.width) and (me.top + me.minSize.height)\n        // instead of me.right and me.bottom because me.width and me.height\n        // may have been changed since me.minSize was calculated\n\n        if (isHorizontal) {\n          if (i > 0 && x + width + labelOpts.padding > me.left + me.minSize.width) {\n            y = cursor.y += itemHeight;\n            cursor.line++;\n            x = cursor.x = me.left + alignmentOffset(legendWidth, lineWidths[cursor.line]);\n          }\n        } else if (i > 0 && y + itemHeight > me.top + me.minSize.height) {\n          x = cursor.x = x + me.columnWidths[cursor.line] + labelOpts.padding;\n          cursor.line++;\n          y = cursor.y = me.top + alignmentOffset(legendHeight, columnHeights[cursor.line]);\n        }\n\n        var realX = rtlHelper.x(x);\n        drawLegendBox(realX, y, legendItem);\n        hitboxes[i].left = rtlHelper.leftForLtr(realX, hitboxes[i].width);\n        hitboxes[i].top = y; // Fill the actual label\n\n        fillText(realX, y, legendItem, textWidth);\n\n        if (isHorizontal) {\n          cursor.x += width + labelOpts.padding;\n        } else {\n          cursor.y += itemHeight;\n        }\n      });\n      helpers$1.rtl.restoreTextDirection(me.ctx, opts.textDirection);\n    },\n\n    /**\n     * @private\n     */\n    _getLegendItemAt: function _getLegendItemAt(x, y) {\n      var me = this;\n      var i, hitBox, lh;\n\n      if (x >= me.left && x <= me.right && y >= me.top && y <= me.bottom) {\n        // See if we are touching one of the dataset boxes\n        lh = me.legendHitBoxes;\n\n        for (i = 0; i < lh.length; ++i) {\n          hitBox = lh[i];\n\n          if (x >= hitBox.left && x <= hitBox.left + hitBox.width && y >= hitBox.top && y <= hitBox.top + hitBox.height) {\n            // Touching an element\n            return me.legendItems[i];\n          }\n        }\n      }\n\n      return null;\n    },\n\n    /**\n     * Handle an event\n     * @private\n     * @param {IEvent} event - The event to handle\n     */\n    handleEvent: function handleEvent(e) {\n      var me = this;\n      var opts = me.options;\n      var type = e.type === 'mouseup' ? 'click' : e.type;\n      var hoveredItem;\n\n      if (type === 'mousemove') {\n        if (!opts.onHover && !opts.onLeave) {\n          return;\n        }\n      } else if (type === 'click') {\n        if (!opts.onClick) {\n          return;\n        }\n      } else {\n        return;\n      } // Chart event already has relative position in it\n\n\n      hoveredItem = me._getLegendItemAt(e.x, e.y);\n\n      if (type === 'click') {\n        if (hoveredItem && opts.onClick) {\n          // use e.native for backwards compatibility\n          opts.onClick.call(me, e[\"native\"], hoveredItem);\n        }\n      } else {\n        if (opts.onLeave && hoveredItem !== me._hoveredItem) {\n          if (me._hoveredItem) {\n            opts.onLeave.call(me, e[\"native\"], me._hoveredItem);\n          }\n\n          me._hoveredItem = hoveredItem;\n        }\n\n        if (opts.onHover && hoveredItem) {\n          // use e.native for backwards compatibility\n          opts.onHover.call(me, e[\"native\"], hoveredItem);\n        }\n      }\n    }\n  });\n\n  function createNewLegendAndAttach(chart, legendOpts) {\n    var legend = new Legend({\n      ctx: chart.ctx,\n      options: legendOpts,\n      chart: chart\n    });\n    core_layouts.configure(chart, legend, legendOpts);\n    core_layouts.addBox(chart, legend);\n    chart.legend = legend;\n  }\n\n  var plugin_legend = {\n    id: 'legend',\n\n    /**\n     * Backward compatibility: since 2.1.5, the legend is registered as a plugin, making\n     * Chart.Legend obsolete. To avoid a breaking change, we export the Legend as part of\n     * the plugin, which one will be re-exposed in the chart.js file.\n     * https://github.com/chartjs/Chart.js/pull/2640\n     * @private\n     */\n    _element: Legend,\n    beforeInit: function beforeInit(chart) {\n      var legendOpts = chart.options.legend;\n\n      if (legendOpts) {\n        createNewLegendAndAttach(chart, legendOpts);\n      }\n    },\n    beforeUpdate: function beforeUpdate(chart) {\n      var legendOpts = chart.options.legend;\n      var legend = chart.legend;\n\n      if (legendOpts) {\n        helpers$1.mergeIf(legendOpts, core_defaults.global.legend);\n\n        if (legend) {\n          core_layouts.configure(chart, legend, legendOpts);\n          legend.options = legendOpts;\n        } else {\n          createNewLegendAndAttach(chart, legendOpts);\n        }\n      } else if (legend) {\n        core_layouts.removeBox(chart, legend);\n        delete chart.legend;\n      }\n    },\n    afterEvent: function afterEvent(chart, e) {\n      var legend = chart.legend;\n\n      if (legend) {\n        legend.handleEvent(e);\n      }\n    }\n  };\n  var noop$2 = helpers$1.noop;\n\n  core_defaults._set('global', {\n    title: {\n      display: false,\n      fontStyle: 'bold',\n      fullWidth: true,\n      padding: 10,\n      position: 'top',\n      text: '',\n      weight: 2000 // by default greater than legend (1000) to be above\n\n    }\n  });\n  /**\n   * IMPORTANT: this class is exposed publicly as Chart.Legend, backward compatibility required!\n   */\n\n\n  var Title = core_element.extend({\n    initialize: function initialize(config) {\n      var me = this;\n      helpers$1.extend(me, config); // Contains hit boxes for each dataset (in dataset order)\n\n      me.legendHitBoxes = [];\n    },\n    // These methods are ordered by lifecycle. Utilities then follow.\n    beforeUpdate: noop$2,\n    update: function update(maxWidth, maxHeight, margins) {\n      var me = this; // Update Lifecycle - Probably don't want to ever extend or overwrite this function ;)\n\n      me.beforeUpdate(); // Absorb the master measurements\n\n      me.maxWidth = maxWidth;\n      me.maxHeight = maxHeight;\n      me.margins = margins; // Dimensions\n\n      me.beforeSetDimensions();\n      me.setDimensions();\n      me.afterSetDimensions(); // Labels\n\n      me.beforeBuildLabels();\n      me.buildLabels();\n      me.afterBuildLabels(); // Fit\n\n      me.beforeFit();\n      me.fit();\n      me.afterFit(); //\n\n      me.afterUpdate();\n      return me.minSize;\n    },\n    afterUpdate: noop$2,\n    //\n    beforeSetDimensions: noop$2,\n    setDimensions: function setDimensions() {\n      var me = this; // Set the unconstrained dimension before label rotation\n\n      if (me.isHorizontal()) {\n        // Reset position before calculating rotation\n        me.width = me.maxWidth;\n        me.left = 0;\n        me.right = me.width;\n      } else {\n        me.height = me.maxHeight; // Reset position before calculating rotation\n\n        me.top = 0;\n        me.bottom = me.height;\n      } // Reset padding\n\n\n      me.paddingLeft = 0;\n      me.paddingTop = 0;\n      me.paddingRight = 0;\n      me.paddingBottom = 0; // Reset minSize\n\n      me.minSize = {\n        width: 0,\n        height: 0\n      };\n    },\n    afterSetDimensions: noop$2,\n    //\n    beforeBuildLabels: noop$2,\n    buildLabels: noop$2,\n    afterBuildLabels: noop$2,\n    //\n    beforeFit: noop$2,\n    fit: function fit() {\n      var me = this;\n      var opts = me.options;\n      var minSize = me.minSize = {};\n      var isHorizontal = me.isHorizontal();\n      var lineCount, textSize;\n\n      if (!opts.display) {\n        me.width = minSize.width = me.height = minSize.height = 0;\n        return;\n      }\n\n      lineCount = helpers$1.isArray(opts.text) ? opts.text.length : 1;\n      textSize = lineCount * helpers$1.options._parseFont(opts).lineHeight + opts.padding * 2;\n      me.width = minSize.width = isHorizontal ? me.maxWidth : textSize;\n      me.height = minSize.height = isHorizontal ? textSize : me.maxHeight;\n    },\n    afterFit: noop$2,\n    // Shared Methods\n    isHorizontal: function isHorizontal() {\n      var pos = this.options.position;\n      return pos === 'top' || pos === 'bottom';\n    },\n    // Actually draw the title block on the canvas\n    draw: function draw() {\n      var me = this;\n      var ctx = me.ctx;\n      var opts = me.options;\n\n      if (!opts.display) {\n        return;\n      }\n\n      var fontOpts = helpers$1.options._parseFont(opts);\n\n      var lineHeight = fontOpts.lineHeight;\n      var offset = lineHeight / 2 + opts.padding;\n      var rotation = 0;\n      var top = me.top;\n      var left = me.left;\n      var bottom = me.bottom;\n      var right = me.right;\n      var maxWidth, titleX, titleY;\n      ctx.fillStyle = helpers$1.valueOrDefault(opts.fontColor, core_defaults.global.defaultFontColor); // render in correct colour\n\n      ctx.font = fontOpts.string; // Horizontal\n\n      if (me.isHorizontal()) {\n        titleX = left + (right - left) / 2; // midpoint of the width\n\n        titleY = top + offset;\n        maxWidth = right - left;\n      } else {\n        titleX = opts.position === 'left' ? left + offset : right - offset;\n        titleY = top + (bottom - top) / 2;\n        maxWidth = bottom - top;\n        rotation = Math.PI * (opts.position === 'left' ? -0.5 : 0.5);\n      }\n\n      ctx.save();\n      ctx.translate(titleX, titleY);\n      ctx.rotate(rotation);\n      ctx.textAlign = 'center';\n      ctx.textBaseline = 'middle';\n      var text = opts.text;\n\n      if (helpers$1.isArray(text)) {\n        var y = 0;\n\n        for (var i = 0; i < text.length; ++i) {\n          ctx.fillText(text[i], 0, y, maxWidth);\n          y += lineHeight;\n        }\n      } else {\n        ctx.fillText(text, 0, 0, maxWidth);\n      }\n\n      ctx.restore();\n    }\n  });\n\n  function createNewTitleBlockAndAttach(chart, titleOpts) {\n    var title = new Title({\n      ctx: chart.ctx,\n      options: titleOpts,\n      chart: chart\n    });\n    core_layouts.configure(chart, title, titleOpts);\n    core_layouts.addBox(chart, title);\n    chart.titleBlock = title;\n  }\n\n  var plugin_title = {\n    id: 'title',\n\n    /**\n     * Backward compatibility: since 2.1.5, the title is registered as a plugin, making\n     * Chart.Title obsolete. To avoid a breaking change, we export the Title as part of\n     * the plugin, which one will be re-exposed in the chart.js file.\n     * https://github.com/chartjs/Chart.js/pull/2640\n     * @private\n     */\n    _element: Title,\n    beforeInit: function beforeInit(chart) {\n      var titleOpts = chart.options.title;\n\n      if (titleOpts) {\n        createNewTitleBlockAndAttach(chart, titleOpts);\n      }\n    },\n    beforeUpdate: function beforeUpdate(chart) {\n      var titleOpts = chart.options.title;\n      var titleBlock = chart.titleBlock;\n\n      if (titleOpts) {\n        helpers$1.mergeIf(titleOpts, core_defaults.global.title);\n\n        if (titleBlock) {\n          core_layouts.configure(chart, titleBlock, titleOpts);\n          titleBlock.options = titleOpts;\n        } else {\n          createNewTitleBlockAndAttach(chart, titleOpts);\n        }\n      } else if (titleBlock) {\n        core_layouts.removeBox(chart, titleBlock);\n        delete chart.titleBlock;\n      }\n    }\n  };\n  var plugins = {};\n  var filler = plugin_filler;\n  var legend = plugin_legend;\n  var title = plugin_title;\n  plugins.filler = filler;\n  plugins.legend = legend;\n  plugins.title = title;\n  /**\n   * @namespace Chart\n   */\n\n  core_controller.helpers = helpers$1; // @todo dispatch these helpers into appropriated helpers/helpers.* file and write unit tests!\n\n  core_helpers();\n  core_controller._adapters = core_adapters;\n  core_controller.Animation = core_animation;\n  core_controller.animationService = core_animations;\n  core_controller.controllers = controllers;\n  core_controller.DatasetController = core_datasetController;\n  core_controller.defaults = core_defaults;\n  core_controller.Element = core_element;\n  core_controller.elements = elements;\n  core_controller.Interaction = core_interaction;\n  core_controller.layouts = core_layouts;\n  core_controller.platform = platform;\n  core_controller.plugins = core_plugins;\n  core_controller.Scale = core_scale;\n  core_controller.scaleService = core_scaleService;\n  core_controller.Ticks = core_ticks;\n  core_controller.Tooltip = core_tooltip; // Register built-in scales\n\n  core_controller.helpers.each(scales, function (scale, type) {\n    core_controller.scaleService.registerScaleType(type, scale, scale._defaults);\n  }); // Load to register built-in adapters (as side effects)\n  // Loading built-in plugins\n\n  for (var k in plugins) {\n    if (plugins.hasOwnProperty(k)) {\n      core_controller.plugins.register(plugins[k]);\n    }\n  }\n\n  core_controller.platform.initialize();\n  var src = core_controller;\n\n  if (typeof window !== 'undefined') {\n    window.Chart = core_controller;\n  } // DEPRECATIONS\n\n  /**\n   * Provided for backward compatibility, not available anymore\n   * @namespace Chart.Chart\n   * @deprecated since version 2.8.0\n   * @todo remove at version 3\n   * @private\n   */\n\n\n  core_controller.Chart = core_controller;\n  /**\n   * Provided for backward compatibility, not available anymore\n   * @namespace Chart.Legend\n   * @deprecated since version 2.1.5\n   * @todo remove at version 3\n   * @private\n   */\n\n  core_controller.Legend = plugins.legend._element;\n  /**\n   * Provided for backward compatibility, not available anymore\n   * @namespace Chart.Title\n   * @deprecated since version 2.1.5\n   * @todo remove at version 3\n   * @private\n   */\n\n  core_controller.Title = plugins.title._element;\n  /**\n   * Provided for backward compatibility, use Chart.plugins instead\n   * @namespace Chart.pluginService\n   * @deprecated since version 2.1.5\n   * @todo remove at version 3\n   * @private\n   */\n\n  core_controller.pluginService = core_controller.plugins;\n  /**\n   * Provided for backward compatibility, inheriting from Chart.PlugingBase has no\n   * effect, instead simply create/register plugins via plain JavaScript objects.\n   * @interface Chart.PluginBase\n   * @deprecated since version 2.5.0\n   * @todo remove at version 3\n   * @private\n   */\n\n  core_controller.PluginBase = core_controller.Element.extend({});\n  /**\n   * Provided for backward compatibility, use Chart.helpers.canvas instead.\n   * @namespace Chart.canvasHelpers\n   * @deprecated since version 2.6.0\n   * @todo remove at version 3\n   * @private\n   */\n\n  core_controller.canvasHelpers = core_controller.helpers.canvas;\n  /**\n   * Provided for backward compatibility, use Chart.layouts instead.\n   * @namespace Chart.layoutService\n   * @deprecated since version 2.7.3\n   * @todo remove at version 3\n   * @private\n   */\n\n  core_controller.layoutService = core_controller.layouts;\n  /**\n   * Provided for backward compatibility, not available anymore.\n   * @namespace Chart.LinearScaleBase\n   * @deprecated since version 2.8\n   * @todo remove at version 3\n   * @private\n   */\n\n  core_controller.LinearScaleBase = scale_linearbase;\n  /**\n   * Provided for backward compatibility, instead we should create a new Chart\n   * by setting the type in the config (`new Chart(id, {type: '{chart-type}'}`).\n   * @deprecated since version 2.8.0\n   * @todo remove at version 3\n   */\n\n  core_controller.helpers.each(['Bar', 'Bubble', 'Doughnut', 'Line', 'PolarArea', 'Radar', 'Scatter'], function (klass) {\n    core_controller[klass] = function (ctx, cfg) {\n      return new core_controller(ctx, core_controller.helpers.merge(cfg || {}, {\n        type: klass.charAt(0).toLowerCase() + klass.slice(1)\n      }));\n    };\n  });\n  return src;\n});","require(\"core-js/modules/es6.symbol\");\n\nvar arrayFilter = require('./_arrayFilter'),\n    stubArray = require('./stubArray');\n/** Used for built-in method references. */\n\n\nvar objectProto = Object.prototype;\n/** Built-in value references. */\n\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n/* Built-in method references for those with the same name as other `lodash` methods. */\n\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n\nvar getSymbols = !nativeGetSymbols ? stubArray : function (object) {\n  if (object == null) {\n    return [];\n  }\n\n  object = Object(object);\n  return arrayFilter(nativeGetSymbols(object), function (symbol) {\n    return propertyIsEnumerable.call(object, symbol);\n  });\n};\nmodule.exports = getSymbols;","require(\"core-js/modules/es6.regexp.replace\");\n\nrequire(\"core-js/modules/es6.regexp.constructor\");\n\nrequire(\"core-js/modules/es6.regexp.to-string\");\n\nrequire(\"core-js/modules/es6.date.to-string\");\n\nrequire(\"core-js/modules/es6.object.to-string\");\n\nvar isFunction = require('./isFunction'),\n    isMasked = require('./_isMasked'),\n    isObject = require('./isObject'),\n    toSource = require('./_toSource');\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\n\n\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n/** Used to detect host constructors (Safari). */\n\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n/** Used for built-in method references. */\n\nvar funcProto = Function.prototype,\n    objectProto = Object.prototype;\n/** Used to resolve the decompiled source of functions. */\n\nvar funcToString = funcProto.toString;\n/** Used to check objects for own properties. */\n\nvar hasOwnProperty = objectProto.hasOwnProperty;\n/** Used to detect if a method is native. */\n\nvar reIsNative = RegExp('^' + funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&').replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$');\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n *  else `false`.\n */\n\nfunction baseIsNative(value) {\n  if (!isObject(value) || isMasked(value)) {\n    return false;\n  }\n\n  var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n  return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n  return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;","// 22.1.3.6 Array.prototype.fill(value, start = 0, end = this.length)\n'use strict';\nvar toObject = require('./_to-object');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nvar toLength = require('./_to-length');\nmodule.exports = function fill(value /* , start = 0, end = @length */) {\n  var O = toObject(this);\n  var length = toLength(O.length);\n  var aLen = arguments.length;\n  var index = toAbsoluteIndex(aLen > 1 ? arguments[1] : undefined, length);\n  var end = aLen > 2 ? arguments[2] : undefined;\n  var endPos = end === undefined ? length : toAbsoluteIndex(end, length);\n  while (endPos > index) O[index++] = value;\n  return O;\n};\n","var Symbol = require('./_Symbol'),\n    getRawTag = require('./_getRawTag'),\n    objectToString = require('./_objectToString');\n/** `Object#toString` result references. */\n\n\nvar nullTag = '[object Null]',\n    undefinedTag = '[object Undefined]';\n/** Built-in value references. */\n\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n\nfunction baseGetTag(value) {\n  if (value == null) {\n    return value === undefined ? undefinedTag : nullTag;\n  }\n\n  return symToStringTag && symToStringTag in Object(value) ? getRawTag(value) : objectToString(value);\n}\n\nmodule.exports = baseGetTag;","var getNative = require('./_getNative');\n\nvar defineProperty = function () {\n  try {\n    var func = getNative(Object, 'defineProperty');\n    func({}, '', {});\n    return func;\n  } catch (e) {}\n}();\n\nmodule.exports = defineProperty;","var isStrictComparable = require('./_isStrictComparable'),\n    keys = require('./keys');\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\n\n\nfunction getMatchData(object) {\n  var result = keys(object),\n      length = result.length;\n\n  while (length--) {\n    var key = result[length],\n        value = object[key];\n    result[length] = [key, value, isStrictComparable(value)];\n  }\n\n  return result;\n}\n\nmodule.exports = getMatchData;","var getNative = require('./_getNative'),\n    root = require('./_root');\n/* Built-in method references that are verified to be native. */\n\n\nvar WeakMap = getNative(root, 'WeakMap');\nmodule.exports = WeakMap;","var baseAssignValue = require('./_baseAssignValue'),\n    createAggregator = require('./_createAggregator');\n/**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the last element responsible for generating the key. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * var array = [\n *   { 'dir': 'left', 'code': 97 },\n *   { 'dir': 'right', 'code': 100 }\n * ];\n *\n * _.keyBy(array, function(o) {\n *   return String.fromCharCode(o.code);\n * });\n * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }\n *\n * _.keyBy(array, 'dir');\n * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }\n */\n\n\nvar keyBy = createAggregator(function (result, value, key) {\n  baseAssignValue(result, key, value);\n});\nmodule.exports = keyBy;","require(\"core-js/modules/es6.array.map\");\n\nvar isKeyable = require('./_isKeyable');\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\n\n\nfunction getMapData(map, key) {\n  var data = map.__data__;\n  return isKeyable(key) ? data[typeof key == 'string' ? 'string' : 'hash'] : data.map;\n}\n\nmodule.exports = getMapData;","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n *  else `false`.\n */\nfunction arraySome(array, predicate) {\n  var index = -1,\n      length = array == null ? 0 : array.length;\n\n  while (++index < length) {\n    if (predicate(array[index], index, array)) {\n      return true;\n    }\n  }\n\n  return false;\n}\n\nmodule.exports = arraySome;","var DataView = require('./_DataView'),\n    Map = require('./_Map'),\n    Promise = require('./_Promise'),\n    Set = require('./_Set'),\n    WeakMap = require('./_WeakMap'),\n    baseGetTag = require('./_baseGetTag'),\n    toSource = require('./_toSource');\n/** `Object#toString` result references. */\n\n\nvar mapTag = '[object Map]',\n    objectTag = '[object Object]',\n    promiseTag = '[object Promise]',\n    setTag = '[object Set]',\n    weakMapTag = '[object WeakMap]';\nvar dataViewTag = '[object DataView]';\n/** Used to detect maps, sets, and weakmaps. */\n\nvar dataViewCtorString = toSource(DataView),\n    mapCtorString = toSource(Map),\n    promiseCtorString = toSource(Promise),\n    setCtorString = toSource(Set),\n    weakMapCtorString = toSource(WeakMap);\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n\nvar getTag = baseGetTag; // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\n\nif (DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag || Map && getTag(new Map()) != mapTag || Promise && getTag(Promise.resolve()) != promiseTag || Set && getTag(new Set()) != setTag || WeakMap && getTag(new WeakMap()) != weakMapTag) {\n  getTag = function getTag(value) {\n    var result = baseGetTag(value),\n        Ctor = result == objectTag ? value.constructor : undefined,\n        ctorString = Ctor ? toSource(Ctor) : '';\n\n    if (ctorString) {\n      switch (ctorString) {\n        case dataViewCtorString:\n          return dataViewTag;\n\n        case mapCtorString:\n          return mapTag;\n\n        case promiseCtorString:\n          return promiseTag;\n\n        case setCtorString:\n          return setTag;\n\n        case weakMapCtorString:\n          return weakMapTag;\n      }\n    }\n\n    return result;\n  };\n}\n\nmodule.exports = getTag;","var baseForOwn = require('./_baseForOwn'),\n    createBaseEach = require('./_createBaseEach');\n/**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n\n\nvar baseEach = createBaseEach(baseForOwn);\nmodule.exports = baseEach;","var nativeCreate = require('./_nativeCreate');\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\n\n\nfunction hashClear() {\n  this.__data__ = nativeCreate ? nativeCreate(null) : {};\n  this.size = 0;\n}\n\nmodule.exports = hashClear;","import \"core-js/modules/web.dom.iterable\";\nimport \"core-js/modules/es6.array.iterator\";\nimport \"core-js/modules/es6.object.to-string\";\nimport \"core-js/modules/es7.object.values\";\nimport \"core-js/modules/es6.array.for-each\";\nimport \"core-js/modules/es6.array.map\";\nimport \"core-js/modules/es6.object.set-prototype-of\";\nimport \"core-js/modules/es6.object.create\";\nimport \"core-js/modules/es6.array.index-of\";\nimport \"core-js/modules/es6.object.assign\";\n\nvar _extends = Object.assign || function (target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments[i];\n\n    for (var key in source) {\n      if (Object.prototype.hasOwnProperty.call(source, key)) {\n        target[key] = source[key];\n      }\n    }\n  }\n\n  return target;\n};\n\nfunction _objectWithoutProperties(obj, keys) {\n  var target = {};\n\n  for (var i in obj) {\n    if (keys.indexOf(i) >= 0) continue;\n    if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;\n    target[i] = obj[i];\n  }\n\n  return target;\n}\n\nfunction _classCallCheck(instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n}\n\nfunction _possibleConstructorReturn(self, call) {\n  if (!self) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n\n  return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n}\n\nfunction _inherits(subClass, superClass) {\n  if (typeof superClass !== \"function\" && superClass !== null) {\n    throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n  }\n\n  subClass.prototype = Object.create(superClass && superClass.prototype, {\n    constructor: {\n      value: subClass,\n      enumerable: false,\n      writable: true,\n      configurable: true\n    }\n  });\n  if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport Chart from 'chart.js';\nimport isEqual from 'lodash/isEqual';\nimport keyBy from 'lodash/keyBy';\nvar NODE_ENV = typeof process !== 'undefined' && process.env && process.env.NODE_ENV;\n\nvar ChartComponent = function (_React$Component) {\n  _inherits(ChartComponent, _React$Component);\n\n  function ChartComponent() {\n    _classCallCheck(this, ChartComponent);\n\n    var _this = _possibleConstructorReturn(this, _React$Component.call(this));\n\n    _this.handleOnClick = function (event) {\n      var instance = _this.chartInstance;\n      var _this$props = _this.props,\n          getDatasetAtEvent = _this$props.getDatasetAtEvent,\n          getElementAtEvent = _this$props.getElementAtEvent,\n          getElementsAtEvent = _this$props.getElementsAtEvent,\n          onElementsClick = _this$props.onElementsClick;\n      getDatasetAtEvent && getDatasetAtEvent(instance.getDatasetAtEvent(event), event);\n      getElementAtEvent && getElementAtEvent(instance.getElementAtEvent(event), event);\n      getElementsAtEvent && getElementsAtEvent(instance.getElementsAtEvent(event), event);\n      onElementsClick && onElementsClick(instance.getElementsAtEvent(event), event); // Backward compatibility\n    };\n\n    _this.ref = function (element) {\n      _this.element = element;\n    };\n\n    _this.chartInstance = undefined;\n    return _this;\n  }\n\n  ChartComponent.prototype.componentDidMount = function componentDidMount() {\n    this.renderChart();\n  };\n\n  ChartComponent.prototype.componentDidUpdate = function componentDidUpdate() {\n    if (this.props.redraw) {\n      this.destroyChart();\n      this.renderChart();\n      return;\n    }\n\n    this.updateChart();\n  };\n\n  ChartComponent.prototype.shouldComponentUpdate = function shouldComponentUpdate(nextProps) {\n    var _props = this.props,\n        redraw = _props.redraw,\n        type = _props.type,\n        options = _props.options,\n        plugins = _props.plugins,\n        legend = _props.legend,\n        height = _props.height,\n        width = _props.width;\n\n    if (nextProps.redraw === true) {\n      return true;\n    }\n\n    if (height !== nextProps.height || width !== nextProps.width) {\n      return true;\n    }\n\n    if (type !== nextProps.type) {\n      return true;\n    }\n\n    if (!isEqual(legend, nextProps.legend)) {\n      return true;\n    }\n\n    if (!isEqual(options, nextProps.options)) {\n      return true;\n    }\n\n    var nextData = this.transformDataProp(nextProps);\n\n    if (!isEqual(this.shadowDataProp, nextData)) {\n      return true;\n    }\n\n    return !isEqual(plugins, nextProps.plugins);\n  };\n\n  ChartComponent.prototype.componentWillUnmount = function componentWillUnmount() {\n    this.destroyChart();\n  };\n\n  ChartComponent.prototype.transformDataProp = function transformDataProp(props) {\n    var data = props.data;\n\n    if (typeof data == 'function') {\n      var node = this.element;\n      return data(node);\n    } else {\n      return data;\n    }\n  }; // Chart.js directly mutates the data.dataset objects by adding _meta proprerty\n  // this makes impossible to compare the current and next data changes\n  // therefore we memoize the data prop while sending a fake to Chart.js for mutation.\n  // see https://github.com/chartjs/Chart.js/blob/master/src/core/core.controller.js#L615-L617\n\n\n  ChartComponent.prototype.memoizeDataProps = function memoizeDataProps() {\n    if (!this.props.data) {\n      return;\n    }\n\n    var data = this.transformDataProp(this.props);\n    this.shadowDataProp = _extends({}, data, {\n      datasets: data.datasets && data.datasets.map(function (set) {\n        return _extends({}, set);\n      })\n    });\n    this.saveCurrentDatasets(); // to remove the dataset metadata from this chart when the chart is destroyed\n\n    return data;\n  };\n\n  ChartComponent.prototype.checkDatasets = function checkDatasets(datasets) {\n    var isDev = NODE_ENV !== 'production' && NODE_ENV !== 'prod';\n    var usingCustomKeyProvider = this.props.datasetKeyProvider !== ChartComponent.getLabelAsKey;\n    var multipleDatasets = datasets.length > 1;\n\n    if (isDev && multipleDatasets && !usingCustomKeyProvider) {\n      var shouldWarn = false;\n      datasets.forEach(function (dataset) {\n        if (!dataset.label) {\n          shouldWarn = true;\n        }\n      });\n\n      if (shouldWarn) {\n        console.error('[react-chartjs-2] Warning: Each dataset needs a unique key. By default, the \"label\" property on each dataset is used. Alternatively, you may provide a \"datasetKeyProvider\" as a prop that returns a unique key.');\n      }\n    }\n  };\n\n  ChartComponent.prototype.getCurrentDatasets = function getCurrentDatasets() {\n    return this.chartInstance && this.chartInstance.config.data && this.chartInstance.config.data.datasets || [];\n  };\n\n  ChartComponent.prototype.saveCurrentDatasets = function saveCurrentDatasets() {\n    var _this2 = this;\n\n    this.datasets = this.datasets || {};\n    var currentDatasets = this.getCurrentDatasets();\n    currentDatasets.forEach(function (d) {\n      _this2.datasets[_this2.props.datasetKeyProvider(d)] = d;\n    });\n  };\n\n  ChartComponent.prototype.updateChart = function updateChart() {\n    var _this3 = this;\n\n    var options = this.props.options;\n    var data = this.memoizeDataProps(this.props);\n    if (!this.chartInstance) return;\n\n    if (options) {\n      this.chartInstance.options = Chart.helpers.configMerge(this.chartInstance.options, options);\n    } // Pipe datasets to chart instance datasets enabling\n    // seamless transitions\n\n\n    var currentDatasets = this.getCurrentDatasets();\n    var nextDatasets = data.datasets || [];\n    this.checkDatasets(currentDatasets);\n    var currentDatasetsIndexed = keyBy(currentDatasets, this.props.datasetKeyProvider); // We can safely replace the dataset array, as long as we retain the _meta property\n    // on each dataset.\n\n    this.chartInstance.config.data.datasets = nextDatasets.map(function (next) {\n      var current = currentDatasetsIndexed[_this3.props.datasetKeyProvider(next)];\n\n      if (current && current.type === next.type && next.data) {\n        // Be robust to no data. Relevant for other update mechanisms as in chartjs-plugin-streaming.\n        // The data array must be edited in place. As chart.js adds listeners to it.\n        current.data.splice(next.data.length);\n        next.data.forEach(function (point, pid) {\n          current.data[pid] = next.data[pid];\n        });\n\n        var _data = next.data,\n            otherProps = _objectWithoutProperties(next, ['data']); // Merge properties. Notice a weakness here. If a property is removed\n        // from next, it will be retained by current and never disappears.\n        // Workaround is to set value to null or undefined in next.\n\n\n        return _extends({}, current, otherProps);\n      } else {\n        return next;\n      }\n    });\n\n    var datasets = data.datasets,\n        rest = _objectWithoutProperties(data, ['datasets']);\n\n    this.chartInstance.config.data = _extends({}, this.chartInstance.config.data, rest);\n    this.chartInstance.update();\n  };\n\n  ChartComponent.prototype.renderChart = function renderChart() {\n    var _props2 = this.props,\n        options = _props2.options,\n        legend = _props2.legend,\n        type = _props2.type,\n        plugins = _props2.plugins;\n    var node = this.element;\n    var data = this.memoizeDataProps();\n\n    if (typeof legend !== 'undefined' && !isEqual(ChartComponent.defaultProps.legend, legend)) {\n      options.legend = legend;\n    }\n\n    this.chartInstance = new Chart(node, {\n      type: type,\n      data: data,\n      options: options,\n      plugins: plugins\n    });\n  };\n\n  ChartComponent.prototype.destroyChart = function destroyChart() {\n    if (!this.chartInstance) {\n      return;\n    } // Put all of the datasets that have existed in the chart back on the chart\n    // so that the metadata associated with this chart get destroyed.\n    // This allows the datasets to be used in another chart. This can happen,\n    // for example, in a tabbed UI where the chart gets created each time the\n    // tab gets switched to the chart and uses the same data).\n\n\n    this.saveCurrentDatasets();\n    var datasets = Object.values(this.datasets);\n    this.chartInstance.config.data.datasets = datasets;\n    this.chartInstance.destroy();\n  };\n\n  ChartComponent.prototype.render = function render() {\n    var _props3 = this.props,\n        height = _props3.height,\n        width = _props3.width,\n        id = _props3.id;\n    return React.createElement('canvas', {\n      ref: this.ref,\n      height: height,\n      width: width,\n      id: id,\n      onClick: this.handleOnClick\n    });\n  };\n\n  return ChartComponent;\n}(React.Component);\n\nChartComponent.getLabelAsKey = function (d) {\n  return d.label;\n};\n\nChartComponent.propTypes = {\n  data: PropTypes.oneOfType([PropTypes.object, PropTypes.func]).isRequired,\n  getDatasetAtEvent: PropTypes.func,\n  getElementAtEvent: PropTypes.func,\n  getElementsAtEvent: PropTypes.func,\n  height: PropTypes.number,\n  legend: PropTypes.object,\n  onElementsClick: PropTypes.func,\n  options: PropTypes.object,\n  plugins: PropTypes.arrayOf(PropTypes.object),\n  redraw: PropTypes.bool,\n  type: function type(props, propName, componentName) {\n    if (!Chart.controllers[props[propName]]) {\n      return new Error('Invalid chart type `' + props[propName] + '` supplied to' + ' `' + componentName + '`.');\n    }\n  },\n  width: PropTypes.number,\n  datasetKeyProvider: PropTypes.func\n};\nChartComponent.defaultProps = {\n  legend: {\n    display: true,\n    position: 'bottom'\n  },\n  type: 'doughnut',\n  height: 150,\n  width: 300,\n  redraw: false,\n  options: {},\n  datasetKeyProvider: ChartComponent.getLabelAsKey\n};\nexport default ChartComponent;\nexport var Doughnut = function (_React$Component2) {\n  _inherits(Doughnut, _React$Component2);\n\n  function Doughnut() {\n    _classCallCheck(this, Doughnut);\n\n    return _possibleConstructorReturn(this, _React$Component2.apply(this, arguments));\n  }\n\n  Doughnut.prototype.render = function render() {\n    var _this5 = this;\n\n    return React.createElement(ChartComponent, _extends({}, this.props, {\n      ref: function ref(_ref) {\n        return _this5.chartInstance = _ref && _ref.chartInstance;\n      },\n      type: 'doughnut'\n    }));\n  };\n\n  return Doughnut;\n}(React.Component);\nexport var Pie = function (_React$Component3) {\n  _inherits(Pie, _React$Component3);\n\n  function Pie() {\n    _classCallCheck(this, Pie);\n\n    return _possibleConstructorReturn(this, _React$Component3.apply(this, arguments));\n  }\n\n  Pie.prototype.render = function render() {\n    var _this7 = this;\n\n    return React.createElement(ChartComponent, _extends({}, this.props, {\n      ref: function ref(_ref2) {\n        return _this7.chartInstance = _ref2 && _ref2.chartInstance;\n      },\n      type: 'pie'\n    }));\n  };\n\n  return Pie;\n}(React.Component);\nexport var Line = function (_React$Component4) {\n  _inherits(Line, _React$Component4);\n\n  function Line() {\n    _classCallCheck(this, Line);\n\n    return _possibleConstructorReturn(this, _React$Component4.apply(this, arguments));\n  }\n\n  Line.prototype.render = function render() {\n    var _this9 = this;\n\n    return React.createElement(ChartComponent, _extends({}, this.props, {\n      ref: function ref(_ref3) {\n        return _this9.chartInstance = _ref3 && _ref3.chartInstance;\n      },\n      type: 'line'\n    }));\n  };\n\n  return Line;\n}(React.Component);\nexport var Bar = function (_React$Component5) {\n  _inherits(Bar, _React$Component5);\n\n  function Bar() {\n    _classCallCheck(this, Bar);\n\n    return _possibleConstructorReturn(this, _React$Component5.apply(this, arguments));\n  }\n\n  Bar.prototype.render = function render() {\n    var _this11 = this;\n\n    return React.createElement(ChartComponent, _extends({}, this.props, {\n      ref: function ref(_ref4) {\n        return _this11.chartInstance = _ref4 && _ref4.chartInstance;\n      },\n      type: 'bar'\n    }));\n  };\n\n  return Bar;\n}(React.Component);\nexport var HorizontalBar = function (_React$Component6) {\n  _inherits(HorizontalBar, _React$Component6);\n\n  function HorizontalBar() {\n    _classCallCheck(this, HorizontalBar);\n\n    return _possibleConstructorReturn(this, _React$Component6.apply(this, arguments));\n  }\n\n  HorizontalBar.prototype.render = function render() {\n    var _this13 = this;\n\n    return React.createElement(ChartComponent, _extends({}, this.props, {\n      ref: function ref(_ref5) {\n        return _this13.chartInstance = _ref5 && _ref5.chartInstance;\n      },\n      type: 'horizontalBar'\n    }));\n  };\n\n  return HorizontalBar;\n}(React.Component);\nexport var Radar = function (_React$Component7) {\n  _inherits(Radar, _React$Component7);\n\n  function Radar() {\n    _classCallCheck(this, Radar);\n\n    return _possibleConstructorReturn(this, _React$Component7.apply(this, arguments));\n  }\n\n  Radar.prototype.render = function render() {\n    var _this15 = this;\n\n    return React.createElement(ChartComponent, _extends({}, this.props, {\n      ref: function ref(_ref6) {\n        return _this15.chartInstance = _ref6 && _ref6.chartInstance;\n      },\n      type: 'radar'\n    }));\n  };\n\n  return Radar;\n}(React.Component);\nexport var Polar = function (_React$Component8) {\n  _inherits(Polar, _React$Component8);\n\n  function Polar() {\n    _classCallCheck(this, Polar);\n\n    return _possibleConstructorReturn(this, _React$Component8.apply(this, arguments));\n  }\n\n  Polar.prototype.render = function render() {\n    var _this17 = this;\n\n    return React.createElement(ChartComponent, _extends({}, this.props, {\n      ref: function ref(_ref7) {\n        return _this17.chartInstance = _ref7 && _ref7.chartInstance;\n      },\n      type: 'polarArea'\n    }));\n  };\n\n  return Polar;\n}(React.Component);\nexport var Bubble = function (_React$Component9) {\n  _inherits(Bubble, _React$Component9);\n\n  function Bubble() {\n    _classCallCheck(this, Bubble);\n\n    return _possibleConstructorReturn(this, _React$Component9.apply(this, arguments));\n  }\n\n  Bubble.prototype.render = function render() {\n    var _this19 = this;\n\n    return React.createElement(ChartComponent, _extends({}, this.props, {\n      ref: function ref(_ref8) {\n        return _this19.chartInstance = _ref8 && _ref8.chartInstance;\n      },\n      type: 'bubble'\n    }));\n  };\n\n  return Bubble;\n}(React.Component);\nexport var Scatter = function (_React$Component10) {\n  _inherits(Scatter, _React$Component10);\n\n  function Scatter() {\n    _classCallCheck(this, Scatter);\n\n    return _possibleConstructorReturn(this, _React$Component10.apply(this, arguments));\n  }\n\n  Scatter.prototype.render = function render() {\n    var _this21 = this;\n\n    return React.createElement(ChartComponent, _extends({}, this.props, {\n      ref: function ref(_ref9) {\n        return _this21.chartInstance = _ref9 && _ref9.chartInstance;\n      },\n      type: 'scatter'\n    }));\n  };\n\n  return Scatter;\n}(React.Component);\nexport var defaults = Chart.defaults;\nexport { Chart };","var DESCRIPTORS = require('./_descriptors');\nvar getKeys = require('./_object-keys');\nvar toIObject = require('./_to-iobject');\nvar isEnum = require('./_object-pie').f;\nmodule.exports = function (isEntries) {\n  return function (it) {\n    var O = toIObject(it);\n    var keys = getKeys(O);\n    var length = keys.length;\n    var i = 0;\n    var result = [];\n    var key;\n    while (length > i) {\n      key = keys[i++];\n      if (!DESCRIPTORS || isEnum.call(O, key)) {\n        result.push(isEntries ? [key, O[key]] : O[key]);\n      }\n    }\n    return result;\n  };\n};\n","var arrayAggregator = require('./_arrayAggregator'),\n    baseAggregator = require('./_baseAggregator'),\n    baseIteratee = require('./_baseIteratee'),\n    isArray = require('./isArray');\n/**\n * Creates a function like `_.groupBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} [initializer] The accumulator object initializer.\n * @returns {Function} Returns the new aggregator function.\n */\n\n\nfunction createAggregator(setter, initializer) {\n  return function (collection, iteratee) {\n    var func = isArray(collection) ? arrayAggregator : baseAggregator,\n        accumulator = initializer ? initializer() : {};\n    return func(collection, setter, baseIteratee(iteratee, 2), accumulator);\n  };\n}\n\nmodule.exports = createAggregator;","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n  var index = -1,\n      result = Array(n);\n\n  while (++index < n) {\n    result[index] = iteratee(index);\n  }\n\n  return result;\n}\n\nmodule.exports = baseTimes;","require(\"core-js/modules/web.dom.iterable\");\n\nrequire(\"core-js/modules/es6.array.iterator\");\n\nrequire(\"core-js/modules/es6.object.to-string\");\n\nrequire(\"core-js/modules/es6.object.keys\");\n\nvar overArg = require('./_overArg');\n/* Built-in method references for those with the same name as other `lodash` methods. */\n\n\nvar nativeKeys = overArg(Object.keys, Object);\nmodule.exports = nativeKeys;","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n  return this.__data__.has(key);\n}\n\nmodule.exports = stackHas;","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\nmodule.exports = freeGlobal;","var listCacheClear = require('./_listCacheClear'),\n    listCacheDelete = require('./_listCacheDelete'),\n    listCacheGet = require('./_listCacheGet'),\n    listCacheHas = require('./_listCacheHas'),\n    listCacheSet = require('./_listCacheSet');\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n\n\nfunction ListCache(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n  this.clear();\n\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n} // Add methods to `ListCache`.\n\n\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\nmodule.exports = ListCache;","var baseIsEqual = require('./_baseIsEqual');\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\n\n\nfunction isEqual(value, other) {\n  return baseIsEqual(value, other);\n}\n\nmodule.exports = isEqual;","var getNative = require('./_getNative');\n/* Built-in method references that are verified to be native. */\n\n\nvar nativeCreate = getNative(Object, 'create');\nmodule.exports = nativeCreate;","require(\"core-js/modules/es6.object.define-property\");\n\nmodule.exports = function (module) {\n  if (!module.webpackPolyfill) {\n    module.deprecate = function () {};\n\n    module.paths = []; // module.parent = undefined by default\n\n    if (!module.children) module.children = [];\n    Object.defineProperty(module, \"loaded\", {\n      enumerable: true,\n      get: function get() {\n        return module.l;\n      }\n    });\n    Object.defineProperty(module, \"id\", {\n      enumerable: true,\n      get: function get() {\n        return module.i;\n      }\n    });\n    module.webpackPolyfill = 1;\n  }\n\n  return module;\n};","require(\"core-js/modules/es6.array.is-array\");\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\nmodule.exports = isArray;","var assocIndexOf = require('./_assocIndexOf');\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\n\n\nfunction listCacheSet(key, value) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    ++this.size;\n    data.push([key, value]);\n  } else {\n    data[index][1] = value;\n  }\n\n  return this;\n}\n\nmodule.exports = listCacheSet;","var baseIsMatch = require('./_baseIsMatch'),\n    getMatchData = require('./_getMatchData'),\n    matchesStrictComparable = require('./_matchesStrictComparable');\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\n\n\nfunction baseMatches(source) {\n  var matchData = getMatchData(source);\n\n  if (matchData.length == 1 && matchData[0][2]) {\n    return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n  }\n\n  return function (object) {\n    return object === source || baseIsMatch(object, source, matchData);\n  };\n}\n\nmodule.exports = baseMatches;","var castPath = require('./_castPath'),\n    toKey = require('./_toKey');\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\n\n\nfunction baseGet(object, path) {\n  path = castPath(path, object);\n  var index = 0,\n      length = path.length;\n\n  while (object != null && index < length) {\n    object = object[toKey(path[index++])];\n  }\n\n  return index && index == length ? object : undefined;\n}\n\nmodule.exports = baseGet;","// 19.1.2.12 Object.isFrozen(O)\nvar isObject = require('./_is-object');\n\nrequire('./_object-sap')('isFrozen', function ($isFrozen) {\n  return function isFrozen(it) {\n    return isObject(it) ? $isFrozen ? $isFrozen(it) : false : true;\n  };\n});\n","var assocIndexOf = require('./_assocIndexOf');\n/** Used for built-in method references. */\n\n\nvar arrayProto = Array.prototype;\n/** Built-in value references. */\n\nvar splice = arrayProto.splice;\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n\nfunction listCacheDelete(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    return false;\n  }\n\n  var lastIndex = data.length - 1;\n\n  if (index == lastIndex) {\n    data.pop();\n  } else {\n    splice.call(data, index, 1);\n  }\n\n  --this.size;\n  return true;\n}\n\nmodule.exports = listCacheDelete;","var baseTimes = require('./_baseTimes'),\n    isArguments = require('./isArguments'),\n    isArray = require('./isArray'),\n    isBuffer = require('./isBuffer'),\n    isIndex = require('./_isIndex'),\n    isTypedArray = require('./isTypedArray');\n/** Used for built-in method references. */\n\n\nvar objectProto = Object.prototype;\n/** Used to check objects for own properties. */\n\nvar hasOwnProperty = objectProto.hasOwnProperty;\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\n\nfunction arrayLikeKeys(value, inherited) {\n  var isArr = isArray(value),\n      isArg = !isArr && isArguments(value),\n      isBuff = !isArr && !isArg && isBuffer(value),\n      isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n      skipIndexes = isArr || isArg || isBuff || isType,\n      result = skipIndexes ? baseTimes(value.length, String) : [],\n      length = result.length;\n\n  for (var key in value) {\n    if ((inherited || hasOwnProperty.call(value, key)) && !(skipIndexes && ( // Safari 9 has enumerable `arguments.length` in strict mode.\n    key == 'length' || // Node.js 0.10 has enumerable non-index properties on buffers.\n    isBuff && (key == 'offset' || key == 'parent') || // PhantomJS 2 has enumerable non-index properties on typed arrays.\n    isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset') || // Skip index properties.\n    isIndex(key, length)))) {\n      result.push(key);\n    }\n  }\n\n  return result;\n}\n\nmodule.exports = arrayLikeKeys;","// 22.1.3.6 Array.prototype.fill(value, start = 0, end = this.length)\nvar $export = require('./_export');\n\n$export($export.P, 'Array', { fill: require('./_array-fill') });\n\nrequire('./_add-to-unscopables')('fill');\n","var baseIsTypedArray = require('./_baseIsTypedArray'),\n    baseUnary = require('./_baseUnary'),\n    nodeUtil = require('./_nodeUtil');\n/* Node.js helper references. */\n\n\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\n\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\nmodule.exports = isTypedArray;","var createBaseFor = require('./_createBaseFor');\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n\n\nvar baseFor = createBaseFor();\nmodule.exports = baseFor;","var baseGetTag = require('./_baseGetTag'),\n    isLength = require('./isLength'),\n    isObjectLike = require('./isObjectLike');\n/** `Object#toString` result references. */\n\n\nvar argsTag = '[object Arguments]',\n    arrayTag = '[object Array]',\n    boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    errorTag = '[object Error]',\n    funcTag = '[object Function]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    objectTag = '[object Object]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    weakMapTag = '[object WeakMap]';\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]',\n    float32Tag = '[object Float32Array]',\n    float64Tag = '[object Float64Array]',\n    int8Tag = '[object Int8Array]',\n    int16Tag = '[object Int16Array]',\n    int32Tag = '[object Int32Array]',\n    uint8Tag = '[object Uint8Array]',\n    uint8ClampedTag = '[object Uint8ClampedArray]',\n    uint16Tag = '[object Uint16Array]',\n    uint32Tag = '[object Uint32Array]';\n/** Used to identify `toStringTag` values of typed arrays. */\n\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] = typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = typedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] = typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = typedArrayTags[errorTag] = typedArrayTags[funcTag] = typedArrayTags[mapTag] = typedArrayTags[numberTag] = typedArrayTags[objectTag] = typedArrayTags[regexpTag] = typedArrayTags[setTag] = typedArrayTags[stringTag] = typedArrayTags[weakMapTag] = false;\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\n\nfunction baseIsTypedArray(value) {\n  return isObjectLike(value) && isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;","var baseToString = require('./_baseToString');\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\n\n\nfunction toString(value) {\n  return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;","var mapCacheClear = require('./_mapCacheClear'),\n    mapCacheDelete = require('./_mapCacheDelete'),\n    mapCacheGet = require('./_mapCacheGet'),\n    mapCacheHas = require('./_mapCacheHas'),\n    mapCacheSet = require('./_mapCacheSet');\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n\n\nfunction MapCache(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n  this.clear();\n\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n} // Add methods to `MapCache`.\n\n\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\nmodule.exports = MapCache;","var Stack = require('./_Stack'),\n    equalArrays = require('./_equalArrays'),\n    equalByTag = require('./_equalByTag'),\n    equalObjects = require('./_equalObjects'),\n    getTag = require('./_getTag'),\n    isArray = require('./isArray'),\n    isBuffer = require('./isBuffer'),\n    isTypedArray = require('./isTypedArray');\n/** Used to compose bitmasks for value comparisons. */\n\n\nvar COMPARE_PARTIAL_FLAG = 1;\n/** `Object#toString` result references. */\n\nvar argsTag = '[object Arguments]',\n    arrayTag = '[object Array]',\n    objectTag = '[object Object]';\n/** Used for built-in method references. */\n\nvar objectProto = Object.prototype;\n/** Used to check objects for own properties. */\n\nvar hasOwnProperty = objectProto.hasOwnProperty;\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n  var objIsArr = isArray(object),\n      othIsArr = isArray(other),\n      objTag = objIsArr ? arrayTag : getTag(object),\n      othTag = othIsArr ? arrayTag : getTag(other);\n  objTag = objTag == argsTag ? objectTag : objTag;\n  othTag = othTag == argsTag ? objectTag : othTag;\n  var objIsObj = objTag == objectTag,\n      othIsObj = othTag == objectTag,\n      isSameTag = objTag == othTag;\n\n  if (isSameTag && isBuffer(object)) {\n    if (!isBuffer(other)) {\n      return false;\n    }\n\n    objIsArr = true;\n    objIsObj = false;\n  }\n\n  if (isSameTag && !objIsObj) {\n    stack || (stack = new Stack());\n    return objIsArr || isTypedArray(object) ? equalArrays(object, other, bitmask, customizer, equalFunc, stack) : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n  }\n\n  if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n    var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n        othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n    if (objIsWrapped || othIsWrapped) {\n      var objUnwrapped = objIsWrapped ? object.value() : object,\n          othUnwrapped = othIsWrapped ? other.value() : other;\n      stack || (stack = new Stack());\n      return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n    }\n  }\n\n  if (!isSameTag) {\n    return false;\n  }\n\n  stack || (stack = new Stack());\n  return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nmodule.exports = baseIsEqualDeep;","// 20.2.2.21 Math.log10(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n  log10: function log10(x) {\n    return Math.log(x) * Math.LOG10E;\n  }\n});\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n  var index = -1,\n      length = array == null ? 0 : array.length,\n      result = Array(length);\n\n  while (++index < length) {\n    result[index] = iteratee(array[index], index, array);\n  }\n\n  return result;\n}\n\nmodule.exports = arrayMap;","var getNative = require('./_getNative'),\n    root = require('./_root');\n/* Built-in method references that are verified to be native. */\n\n\nvar Map = getNative(root, 'Map');\nmodule.exports = Map;","var nativeCreate = require('./_nativeCreate');\n/** Used for built-in method references. */\n\n\nvar objectProto = Object.prototype;\n/** Used to check objects for own properties. */\n\nvar hasOwnProperty = objectProto.hasOwnProperty;\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n\nfunction hashHas(key) {\n  var data = this.__data__;\n  return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;","var Hash = require('./_Hash'),\n    ListCache = require('./_ListCache'),\n    Map = require('./_Map');\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\n\n\nfunction mapCacheClear() {\n  this.size = 0;\n  this.__data__ = {\n    'hash': new Hash(),\n    'map': new (Map || ListCache)(),\n    'string': new Hash()\n  };\n}\n\nmodule.exports = mapCacheClear;","var arrayPush = require('./_arrayPush'),\n    isArray = require('./isArray');\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\n\n\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n  var result = keysFunc(object);\n  return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nmodule.exports = baseGetAllKeys;","var ListCache = require('./_ListCache'),\n    stackClear = require('./_stackClear'),\n    stackDelete = require('./_stackDelete'),\n    stackGet = require('./_stackGet'),\n    stackHas = require('./_stackHas'),\n    stackSet = require('./_stackSet');\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n\n\nfunction Stack(entries) {\n  var data = this.__data__ = new ListCache(entries);\n  this.size = data.size;\n} // Add methods to `Stack`.\n\n\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\nmodule.exports = Stack;","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\n\nfunction setCacheAdd(value) {\n  this.__data__.set(value, HASH_UNDEFINED);\n\n  return this;\n}\n\nmodule.exports = setCacheAdd;","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n  return this.__data__.get(key);\n}\n\nmodule.exports = stackGet;","// 20.1.2.6 Number.MAX_SAFE_INTEGER\nvar $export = require('./_export');\n\n$export($export.S, 'Number', { MAX_SAFE_INTEGER: 0x1fffffffffffff });\n","var baseHasIn = require('./_baseHasIn'),\n    hasPath = require('./_hasPath');\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\n\n\nfunction hasIn(object, path) {\n  return object != null && hasPath(object, path, baseHasIn);\n}\n\nmodule.exports = hasIn;","// https://github.com/tc39/proposal-object-values-entries\nvar $export = require('./_export');\nvar $values = require('./_object-to-array')(false);\n\n$export($export.S, 'Object', {\n  values: function values(it) {\n    return $values(it);\n  }\n});\n","var defineProperty = require('./_defineProperty');\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n\n\nfunction baseAssignValue(object, key, value) {\n  if (key == '__proto__' && defineProperty) {\n    defineProperty(object, key, {\n      'configurable': true,\n      'enumerable': true,\n      'value': value,\n      'writable': true\n    });\n  } else {\n    object[key] = value;\n  }\n}\n\nmodule.exports = baseAssignValue;","// 20.3.4.36 / 15.9.5.43 Date.prototype.toISOString()\nvar $export = require('./_export');\nvar toISOString = require('./_date-to-iso-string');\n\n// PhantomJS / old WebKit has a broken implementations\n$export($export.P + $export.F * (Date.prototype.toISOString !== toISOString), 'Date', {\n  toISOString: toISOString\n});\n","'use strict';\n// 20.3.4.36 / 15.9.5.43 Date.prototype.toISOString()\nvar fails = require('./_fails');\nvar getTime = Date.prototype.getTime;\nvar $toISOString = Date.prototype.toISOString;\n\nvar lz = function (num) {\n  return num > 9 ? num : '0' + num;\n};\n\n// PhantomJS / old WebKit has a broken implementations\nmodule.exports = (fails(function () {\n  return $toISOString.call(new Date(-5e13 - 1)) != '0385-07-25T07:06:39.999Z';\n}) || !fails(function () {\n  $toISOString.call(new Date(NaN));\n})) ? function toISOString() {\n  if (!isFinite(getTime.call(this))) throw RangeError('Invalid time value');\n  var d = this;\n  var y = d.getUTCFullYear();\n  var m = d.getUTCMilliseconds();\n  var s = y < 0 ? '-' : y > 9999 ? '+' : '';\n  return s + ('00000' + Math.abs(y)).slice(s ? -6 : -4) +\n    '-' + lz(d.getUTCMonth() + 1) + '-' + lz(d.getUTCDate()) +\n    'T' + lz(d.getUTCHours()) + ':' + lz(d.getUTCMinutes()) +\n    ':' + lz(d.getUTCSeconds()) + '.' + (m > 99 ? m : '0' + lz(m)) + 'Z';\n} : $toISOString;\n","var getMapData = require('./_getMapData');\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n\n\nfunction mapCacheDelete(key) {\n  var result = getMapData(this, key)['delete'](key);\n  this.size -= result ? 1 : 0;\n  return result;\n}\n\nmodule.exports = mapCacheDelete;","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n  return function (arg) {\n    return func(transform(arg));\n  };\n}\n\nmodule.exports = overArg;","// 20.1.2.10 Number.MIN_SAFE_INTEGER\nvar $export = require('./_export');\n\n$export($export.S, 'Number', { MIN_SAFE_INTEGER: -0x1fffffffffffff });\n","var isArrayLike = require('./isArrayLike');\n/**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n\n\nfunction createBaseEach(eachFunc, fromRight) {\n  return function (collection, iteratee) {\n    if (collection == null) {\n      return collection;\n    }\n\n    if (!isArrayLike(collection)) {\n      return eachFunc(collection, iteratee);\n    }\n\n    var length = collection.length,\n        index = fromRight ? length : -1,\n        iterable = Object(collection);\n\n    while (fromRight ? index-- : ++index < length) {\n      if (iteratee(iterable[index], index, iterable) === false) {\n        break;\n      }\n    }\n\n    return collection;\n  };\n}\n\nmodule.exports = createBaseEach;","var baseGetTag = require('./_baseGetTag'),\n    isObject = require('./isObject');\n/** `Object#toString` result references. */\n\n\nvar asyncTag = '[object AsyncFunction]',\n    funcTag = '[object Function]',\n    genTag = '[object GeneratorFunction]',\n    proxyTag = '[object Proxy]';\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\n\nfunction isFunction(value) {\n  if (!isObject(value)) {\n    return false;\n  } // The use of `Object#toString` avoids issues with the `typeof` operator\n  // in Safari 9 which returns 'object' for typed arrays and other constructors.\n\n\n  var tag = baseGetTag(value);\n  return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n  return value === other || value !== value && other !== other;\n}\n\nmodule.exports = eq;","var Stack = require('./_Stack'),\n    baseIsEqual = require('./_baseIsEqual');\n/** Used to compose bitmasks for value comparisons. */\n\n\nvar COMPARE_PARTIAL_FLAG = 1,\n    COMPARE_UNORDERED_FLAG = 2;\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\n\nfunction baseIsMatch(object, source, matchData, customizer) {\n  var index = matchData.length,\n      length = index,\n      noCustomizer = !customizer;\n\n  if (object == null) {\n    return !length;\n  }\n\n  object = Object(object);\n\n  while (index--) {\n    var data = matchData[index];\n\n    if (noCustomizer && data[2] ? data[1] !== object[data[0]] : !(data[0] in object)) {\n      return false;\n    }\n  }\n\n  while (++index < length) {\n    data = matchData[index];\n    var key = data[0],\n        objValue = object[key],\n        srcValue = data[1];\n\n    if (noCustomizer && data[2]) {\n      if (objValue === undefined && !(key in object)) {\n        return false;\n      }\n    } else {\n      var stack = new Stack();\n\n      if (customizer) {\n        var result = customizer(objValue, srcValue, key, object, source, stack);\n      }\n\n      if (!(result === undefined ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack) : result)) {\n        return false;\n      }\n    }\n  }\n\n  return true;\n}\n\nmodule.exports = baseIsMatch;","// 20.2.2.28 Math.sign(x)\nmodule.exports = Math.sign || function sign(x) {\n  // eslint-disable-next-line no-self-compare\n  return (x = +x) == 0 || x != x ? x : x < 0 ? -1 : 1;\n};\n","/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n  return function (object, iteratee, keysFunc) {\n    var index = -1,\n        iterable = Object(object),\n        props = keysFunc(object),\n        length = props.length;\n\n    while (length--) {\n      var key = props[fromRight ? length : ++index];\n\n      if (iteratee(iterable[key], key, iterable) === false) {\n        break;\n      }\n    }\n\n    return object;\n  };\n}\n\nmodule.exports = createBaseFor;","var freeGlobal = require('./_freeGlobal');\n/** Detect free variable `exports`. */\n\n\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n/** Detect free variable `module`. */\n\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n/** Detect the popular CommonJS extension `module.exports`. */\n\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n/** Detect free variable `process` from Node.js. */\n\nvar freeProcess = moduleExports && freeGlobal.process;\n/** Used to access faster Node.js helpers. */\n\nvar nodeUtil = function () {\n  try {\n    // Use `util.types` for Node.js 10+.\n    var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n    if (types) {\n      return types;\n    } // Legacy `process.binding('util')` for Node.js < 10.\n\n\n    return freeProcess && freeProcess.binding && freeProcess.binding('util');\n  } catch (e) {}\n}();\n\nmodule.exports = nodeUtil;","var baseGet = require('./_baseGet');\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\n\n\nfunction get(object, path, defaultValue) {\n  var result = object == null ? undefined : baseGet(object, path);\n  return result === undefined ? defaultValue : result;\n}\n\nmodule.exports = get;","var root = require('./_root');\n/** Built-in value references. */\n\n\nvar Symbol = root.Symbol;\nmodule.exports = Symbol;","/**\n * A specialized version of `baseAggregator` for arrays.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\nfunction arrayAggregator(array, setter, iteratee, accumulator) {\n  var index = -1,\n      length = array == null ? 0 : array.length;\n\n  while (++index < length) {\n    var value = array[index];\n    setter(accumulator, value, iteratee(value), array);\n  }\n\n  return accumulator;\n}\n\nmodule.exports = arrayAggregator;","var SetCache = require('./_SetCache'),\n    arraySome = require('./_arraySome'),\n    cacheHas = require('./_cacheHas');\n/** Used to compose bitmasks for value comparisons. */\n\n\nvar COMPARE_PARTIAL_FLAG = 1,\n    COMPARE_UNORDERED_FLAG = 2;\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\n\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n  var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n      arrLength = array.length,\n      othLength = other.length;\n\n  if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n    return false;\n  } // Assume cyclic values are equal.\n\n\n  var stacked = stack.get(array);\n\n  if (stacked && stack.get(other)) {\n    return stacked == other;\n  }\n\n  var index = -1,\n      result = true,\n      seen = bitmask & COMPARE_UNORDERED_FLAG ? new SetCache() : undefined;\n  stack.set(array, other);\n  stack.set(other, array); // Ignore non-index properties.\n\n  while (++index < arrLength) {\n    var arrValue = array[index],\n        othValue = other[index];\n\n    if (customizer) {\n      var compared = isPartial ? customizer(othValue, arrValue, index, other, array, stack) : customizer(arrValue, othValue, index, array, other, stack);\n    }\n\n    if (compared !== undefined) {\n      if (compared) {\n        continue;\n      }\n\n      result = false;\n      break;\n    } // Recursively compare arrays (susceptible to call stack limits).\n\n\n    if (seen) {\n      if (!arraySome(other, function (othValue, othIndex) {\n        if (!cacheHas(seen, othIndex) && (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n          return seen.push(othIndex);\n        }\n      })) {\n        result = false;\n        break;\n      }\n    } else if (!(arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n      result = false;\n      break;\n    }\n  }\n\n  stack['delete'](array);\n  stack['delete'](other);\n  return result;\n}\n\nmodule.exports = equalArrays;","import React, {Component} from \"react\";\n\nimport { Line, } from 'react-chartjs-2';\n\nclass LineChart extends Component {\n   state = {\n        lineChartData: this.props.lineChartData,\n    }\n\n    static defaultProps = {\n        displayLegend: true,\n        legendPosition:'bottom',\n    }\n\n    render(){\n        return(\n            <div>\n                <Line\n                    data={this.state.lineChartData}\n                    height={220}\n                    width={250}\n                    options={{\n                        scales:{\n                            xAxes: [{\n                                display: true,\n                                ticks: {\n                                    fontColor: \"white\",\n                                    maxTicksLimit: 3,\n                                },\n                                gridLines: {\n                                    color: \"white\",\n                                },\n                                scaleLabel: {\n                                    display: true,\n                                    labelString: this.props.xAxis,\n                                    fontColor: 'white'                                    \n                                  }\n                            }],\n                            yAxes: [{\n                                display: true,\n                                ticks: {\n                                    fontColor: \"white\",\n                                    maxTicksLimit: 3,\n                    \n                                },\n                                gridLines: {\n                                    color: \"white\",\n                                },\n                                scaleLabel: {\n                                    display: true,\n                                    labelString: this.props.yAxis,\n                                    fontColor: 'white'                                    \n                                  }\n                            }]\n\n                        },\n                        legend:{\n                            labels : {\n                                fontColor: \"white\"\n                            },\n                            display:this.props.displayLegend,\n                            position:this.props.legendPosition\n                        },\n                        animation: {\n                            duration: 2000,\n                            easing: 'easeOutCubic',\n                        },\n                    }}\n                />\n                \n            </div>\n        )\n    }\n}\n\nexport default LineChart;","import React, {Component} from \"react\";\n\nimport { Bar } from 'react-chartjs-2';\n\nclass BarChart extends Component {\n    state = {\n        barChartData: this.props.barChartData,\n    }\n    \n    static defaultProps = {\n        displayLegend: false,\n        legendPosition:'bottom',\n    }\n\n    render(){\n        return(\n            <div>\n                <Bar\n                    data={this.state.barChartData}\n                    height={220}\n                    width={250}\n                    options={{\n                        scales:{\n                            xAxes: [{\n                                display: true,\n                                ticks: {\n                                    fontColor: \"white\",\n                                },\n                                gridLines: {\n                                    color: \"white\",\n                                },\n                                scaleLabel: {\n                                    display: false,\n                                    labelString: this.props.xAxis,\n                                    fontColor: 'white'                                    \n                                  }\n                            }],\n                            yAxes: [{\n                                display: true,\n                                ticks: {\n                                    fontColor: \"white\",\n                                    maxTicksLimit: 4,\n                                    padding:2,\n                                    beginAtZero: true\n                                },\n                                gridLines: {\n                                    color: \"white\",\n                                },\n                                scaleLabel: {\n                                    display: true,\n                                    labelString: this.props.yAxis,\n                                    fontColor: 'white'                                    \n                                }\n                            }]\n\n                        },\n                        legend:{\n                            display:this.props.displayLegend,\n                            position:this.props.legendPosition\n                        },\n                        animation: {\n                            duration: 2000,\n                            easing: 'easeOutCubic',\n                        },\n                      }}\n                />                \n            </div>\n        )\n    }\n}\n\nexport default BarChart;","// Copyright (c) 2017, 2020 IBM Corp. and others\n\n// This program and the accompanying materials are made available under\n// the terms of the Eclipse Public License 2.0 which accompanies this\n// distribution and is available at https://www.eclipse.org/legal/epl-2.0/\n// or the Apache License, Version 2.0 which accompanies this distribution and\n// is available at https://www.apache.org/licenses/LICENSE-2.0.\n\n// This Source Code may also be made available under the following\n// Secondary Licenses when the conditions for such availability set\n// forth in the Eclipse Public License, v. 2.0 are satisfied: GNU\n// General Public License, version 2 with the GNU Classpath\n// Exception [1] and GNU General Public License, version 2 with the\n// OpenJDK Assembly Exception [2].\n\n// [1] https://www.gnu.org/software/classpath/license.html\n// [2] http://openjdk.java.net/legal/assembly-exception.html\n\n// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 OR LicenseRef-GPL-2.0 WITH Assembly-exception\n\n// The project website pages cannot be redistributed\n\n/** @jsx jsx */\n\nimport { jsx } from \"theme-ui\";\nimport LineChart from \"../components/lineChart\";\nimport BarChart from \"../components/barChart\";\nconst PerformanceCard = ({ children, primary, graphData, heading, chartType, xAxis, yAxis }) => {\n    if (chartType === \"line\") {\n        return (\n            <div\n              sx={{\n                boxShadow: primary ? \"cardShadow\" : null,\n                borderRadius: \"card\",\n                backgroundColor: \"primary\",\n                color: \"white\",\n                marginY: 5,\n                marginX: 1,\n                width:\"18rem\",\n                display: \"flex\",\n                flexDirection: \"column\",\n                justifyContent: \"center\",\n                alignItems: \"center\",\n              }}\n            >\n                <h5 sx={{fontSize:\"1.1rem\",margin:\"0.5rem 1.5rem 0.5rem 1.5rem\", textAlign:\"center\", height:\"3rem\",}}>{heading}</h5>\n                 <LineChart lineChartData={graphData} legendPosition=\"bottom\" xAxis={xAxis} yAxis={yAxis}/>\n              <div\n              sx={{\n                boxShadowBottom: primary ? \"cardShadow\" : null,\n                borderBottomRightRadius: \"card\",\n                borderBottomLeftRadius: \"card\",\n                backgroundColor: \"white\",\n                borderTop: \"0.35rem solid #5DA7A3\",\n                color: \"darkText\",\n                height:\"50%\",\n                padding:\"4rem 1rem\",\n                display: \"flex\",\n                justifyContent: \"center\",\n                alignItems: \"center\",\n                width:\"100%\",\n                marginBottom:\"-4rem\",\n                marginTop:\"1rem\"\n \n              }}\n            >\n              {children}\n            </div>\n            </div>\n            \n          );\n    } else {\n        return (\n            <div\n              sx={{\n        \n                boxShadow: primary ? \"cardShadow\" : null,\n                borderRadius: \"card\",\n                backgroundColor: \"primary\",\n                color: \"white\",\n                marginY: 5,\n                marginX: 1,\n                width:\"18rem\",\n                display: \"flex\",\n                flexDirection: \"column\",\n                justifyContent: \"center\",\n                alignItems: \"center\",\n              }}\n            >\n                <h5 sx={{fontSize:\"1.1rem\",margin:\"0.5rem 1rem 0.5rem 1rem\", textAlign:\"center\", height:\"3rem\",}}>{heading}</h5>\n                <BarChart barChartData={graphData} yAxis={yAxis}/>\n              <div\n              sx={{\n                boxShadowBottom: primary ? \"cardShadow\" : null,\n                borderBottomRightRadius: \"card\",\n                borderBottomLeftRadius: \"card\",\n                backgroundColor: \"white\",\n                borderTop: \"0.35rem solid #5DA7A3\",\n                color: \"darkText\",\n                height:\"50%\",\n                padding:\"4rem 1rem\",\n                display: \"flex\",\n                justifyContent: \"center\",\n                alignItems: \"center\",\n                width:\"100%\",\n                marginBottom:\"-4rem\",\n                marginTop:\"1rem\"\n              }}\n            >\n              {children}\n            </div>\n            </div>\n            \n          );\n    }\n};\n\nexport default PerformanceCard;\n","// Copyright (c) 2017, 2020 IBM Corp. and others\n\n// This program and the accompanying materials are made available under\n// the terms of the Eclipse Public License 2.0 which accompanies this\n// distribution and is available at https://www.eclipse.org/legal/epl-2.0/\n// or the Apache License, Version 2.0 which accompanies this distribution and\n// is available at https://www.apache.org/licenses/LICENSE-2.0.\n\n// This Source Code may also be made available under the following\n// Secondary Licenses when the conditions for such availability set\n// forth in the Eclipse Public License, v. 2.0 are satisfied: GNU\n// General Public License, version 2 with the GNU Classpath\n// Exception [1] and GNU General Public License, version 2 with the\n// OpenJDK Assembly Exception [2].\n\n// [1] https://www.gnu.org/software/classpath/license.html\n// [2] http://openjdk.java.net/legal/assembly-exception.html\n\n// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 OR LicenseRef-GPL-2.0 WITH Assembly-exception\n\n// The project website pages cannot be redistributed\n\nimport Layout from \"../components/layout\";\n\n/** @jsx jsx */\nimport { jsx, Styled } from \"theme-ui\";\nimport {Component} from \"react\";\n\nimport PerformanceCard from \"../components/performanceCard\";\n\nclass performance extends Component {\n  state = {\n      barChartJDK8Footprint:{ \n        labels: ['OpenJ9', 'HotSpot'],\n        datasets:[\n          {\n            data:[\n              0.34,              \n              1\n            ],\n            backgroundColor:[\n              '#5DA7A3',\n              '#E58B23'\n            ]\n          }\n        ]\n      },\n      lineChartJK8FootprintDuringrampup:{ \n        labels: [0, 200, 400, 600, 800, 1000, 1200, 1400, 1600, 1800],\n        datasets:[\n          {\n            label: 'OpenJ9',\n            data:[\n              232,\n              488,\n              505,\n              511,\n              516,\n              517,\n              520,\n              521,\n              521,\n              522\n            ],\n            fill: false,\n            borderColor: \"#5DA7A3\",\n            backgroundColor:'#5DA7A3'\n          },\n          {\n            label: 'HotSpot',\n            data:[\n              563,\n              902,\n              1023,\n              1140,\n              1200,\n              1218,\n              1220,\n              1289,\n              1359,\n              1368\n            ],\n            fill: false,\n            borderColor:'#E58B23',\n            backgroundColor:'#E58B23'\n          },\n        ]\n      },\n      barChartJDK8Startup:{ \n        labels: ['OpenJ9', 'HotSpot'],\n        datasets:[\n          {\n            data:[\n              0.58,              \n              1\n            ],\n            backgroundColor:[\n              '#5DA7A3',\n              '#E58B23'\n            ]\n          }\n        ]\n      },\n      lineChartJK8FasterRampupInTheCloud:{ \n        labels: [0, 150, 300, 450, 600, 750, 900, 1050, 1200, 1350],\n        datasets:[\n          {\n            label: 'OpenJ9',\n            data:[\n              8.5,\n              1064,\n              1063,\n              1133,\n              1188.5,\n              1071,\n              1125.5,\n              1084.5,\n              1095,\n              1104.5,\n           \n            ],\n            fill: false,\n            borderColor: \"#5DA7A3\",\n            backgroundColor:'#5DA7A3'\n          },\n          {\n            label: 'HotSpot',\n            data:[\n              10.5,\n              529.5,\n              700.5,\n              832.5,\n              796,\n              829.5,\n              698.5,\n              791.5,\n              1017,\n              1175.5,\n            ],\n            fill: false,\n            borderColor:'#E58B23',\n            backgroundColor:'#E58B23'\n          },\n        ]\n      },\n    } \n  \n  render (){\n    return(\n      <Layout isHome={false} title=\"Eclipse OpenJ9 performance\" description=\"OpenJDK with OpenJ9 demonstrates significantly better performance than HotSpot.\">\n      <section sx={{ backgroundColor: \"#F5F9FC\",  paddingX: \"7%\", paddingTop: \"5%\", paddingBottom: \"1%\" }}>\n        <Styled.h1 sx={{marginBottom:\"1rem\"}}>Performance Overview</Styled.h1>\n          <Styled.p>\n            Application performance can be measured using many different metrics, including startup time,\n            ramp-up time, footprint, and response time, as well as throughput. At Eclipse OpenJ9, we keep a watchful eye on all\n            of these metrics, making sensible tradeoffs and providing tuning options that allow the virtual machine (VM) to be optimized for different workloads.\n          </Styled.p>\n      </section>\n      \n      <section\n        sx={{\n          backgroundColor: \"#F5F9FC\",\n          paddingX: \"7%\",\n          paddingTop: \"1%\",\n          paddingBottom: \"3%\"\n        }}\n      >\n        <Styled.h2>OpenJDK 8 performance with Eclipse OpenJ9</Styled.h2>\n        <Styled.p sx={{marginBottom:\"0.5rem\"}}>\n          The result is that OpenJDK 8 with OpenJ9 demonstrates significantly better performance than with Hotspot.\n        </Styled.p>\n    \n        \n        <div\n          sx={{\n            display: \"flex\",\n            justifyContent: \"space-around\",\n            flexWrap: \"wrap\"\n          }}\n        >\n          <PerformanceCard graphData={this.state.barChartJDK8Footprint} heading=\"66% smaller footprint after startup\" primary={true} chartType=\"bar\" yAxis=\"Relative resident set size\"> \n            <p>OpenJ9 is highly optimized for cloud workloads, where minimizing memory footprint is important.\n              Out of the box, the footprint is 66% smaller than HotSpot.</p>\n          </PerformanceCard>\n          <PerformanceCard graphData={this.state.lineChartJK8FootprintDuringrampup} heading=\"63% smaller footprint during ramp up\" primary={true} chartType=\"line\" yAxis=\"Resident Set Size (MB)\" xAxis=\"Time (s)\"> \n            <p>Memory footprint increases rapidly when load is applied. However, at steady state,\n              OpenJ9 consistently used around 63% less physical memory than HotSpot.</p>\n          </PerformanceCard>\n          <PerformanceCard graphData={this.state.barChartJDK8Startup} heading=\"42% faster startup time\" primary={true} chartType=\"bar\" yAxis=\"Relative start-up time\"> \n            <p>Shared classes and Ahead-of-Time (AOT) technologies typically reduce startup time. By using -Xquickstart mode as well,\n              you can reduce startup time by up to 42%.</p>\n          </PerformanceCard>\n          <PerformanceCard graphData={this.state.lineChartJK8FasterRampupInTheCloud} heading=\"Faster ramp-up time in the cloud\" primary={true} chartType=\"line\" xAxis=\"Time (s)\" yAxis=\"Throughput\"> \n            <p>OpenJ9 reaches peak throughput on a single CPU core in 8.5 minutes compared with 30 minutes for Hotspot.\n              Ideal for short-lived VMs running in the cloud.</p>\n          </PerformanceCard>\n        </div>\n        <div\n          sx={{\n            display: \"flex\",\n            justifyContent: \"center\",\n            paddingBottom: \"5%\"\n          }}\n        >\n          <a sx={{\n              variant: \"buttons.secondary\",\n              display: \"flex\",\n              alignItems: \"center\",\n              justifyContent: \"center\",\n              textDecoration: \"none\",\n              width:\"16rem\",\n              marginTop:\"7rem\"\n              }} \n              href=\"https://github.com/eclipse/openj9-website/blob/master/benchmark/daytrader7.md\" rel=\"noopener noreferrer\" target=\"_blank\">Read more performance details</a>\n        </div>\n      </section>\n    </Layout>\n    )\n  }\n}\n\nexport default performance;\n \n","var getMapData = require('./_getMapData');\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n\n\nfunction mapCacheHas(key) {\n  return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;","var baseGetAllKeys = require('./_baseGetAllKeys'),\n    getSymbols = require('./_getSymbols'),\n    keys = require('./keys');\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n\n\nfunction getAllKeys(object) {\n  return baseGetAllKeys(object, keys, getSymbols);\n}\n\nmodule.exports = getAllKeys;","require(\"core-js/modules/es6.array.for-each\");\n\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n  var index = -1,\n      result = Array(set.size);\n  set.forEach(function (value) {\n    result[++index] = value;\n  });\n  return result;\n}\n\nmodule.exports = setToArray;","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n  return function (value) {\n    return func(value);\n  };\n}\n\nmodule.exports = baseUnary;","var getAllKeys = require('./_getAllKeys');\n/** Used to compose bitmasks for value comparisons. */\n\n\nvar COMPARE_PARTIAL_FLAG = 1;\n/** Used for built-in method references. */\n\nvar objectProto = Object.prototype;\n/** Used to check objects for own properties. */\n\nvar hasOwnProperty = objectProto.hasOwnProperty;\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n  var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n      objProps = getAllKeys(object),\n      objLength = objProps.length,\n      othProps = getAllKeys(other),\n      othLength = othProps.length;\n\n  if (objLength != othLength && !isPartial) {\n    return false;\n  }\n\n  var index = objLength;\n\n  while (index--) {\n    var key = objProps[index];\n\n    if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n      return false;\n    }\n  } // Assume cyclic values are equal.\n\n\n  var stacked = stack.get(object);\n\n  if (stacked && stack.get(other)) {\n    return stacked == other;\n  }\n\n  var result = true;\n  stack.set(object, other);\n  stack.set(other, object);\n  var skipCtor = isPartial;\n\n  while (++index < objLength) {\n    key = objProps[index];\n    var objValue = object[key],\n        othValue = other[key];\n\n    if (customizer) {\n      var compared = isPartial ? customizer(othValue, objValue, key, other, object, stack) : customizer(objValue, othValue, key, object, other, stack);\n    } // Recursively compare objects (susceptible to call stack limits).\n\n\n    if (!(compared === undefined ? objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack) : compared)) {\n      result = false;\n      break;\n    }\n\n    skipCtor || (skipCtor = key == 'constructor');\n  }\n\n  if (result && !skipCtor) {\n    var objCtor = object.constructor,\n        othCtor = other.constructor; // Non `Object` object instances with different constructors are not equal.\n\n    if (objCtor != othCtor && 'constructor' in object && 'constructor' in other && !(typeof objCtor == 'function' && objCtor instanceof objCtor && typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n      result = false;\n    }\n  }\n\n  stack['delete'](object);\n  stack['delete'](other);\n  return result;\n}\n\nmodule.exports = equalObjects;","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\n\nfunction isLength(value) {\n  return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;","var assocIndexOf = require('./_assocIndexOf');\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n\n\nfunction listCacheGet(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n  return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;","var getNative = require('./_getNative'),\n    root = require('./_root');\n/* Built-in method references that are verified to be native. */\n\n\nvar DataView = getNative(root, 'DataView');\nmodule.exports = DataView;","var nativeCreate = require('./_nativeCreate');\n/** Used to stand-in for `undefined` hash values. */\n\n\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n/** Used for built-in method references. */\n\nvar objectProto = Object.prototype;\n/** Used to check objects for own properties. */\n\nvar hasOwnProperty = objectProto.hasOwnProperty;\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n\nfunction hashGet(key) {\n  var data = this.__data__;\n\n  if (nativeCreate) {\n    var result = data[key];\n    return result === HASH_UNDEFINED ? undefined : result;\n  }\n\n  return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;","var baseMatches = require('./_baseMatches'),\n    baseMatchesProperty = require('./_baseMatchesProperty'),\n    identity = require('./identity'),\n    isArray = require('./isArray'),\n    property = require('./property');\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\n\n\nfunction baseIteratee(value) {\n  // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n  // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n  if (typeof value == 'function') {\n    return value;\n  }\n\n  if (value == null) {\n    return identity;\n  }\n\n  if (typeof value == 'object') {\n    return isArray(value) ? baseMatchesProperty(value[0], value[1]) : baseMatches(value);\n  }\n\n  return property(value);\n}\n\nmodule.exports = baseIteratee;","var baseIsEqualDeep = require('./_baseIsEqualDeep'),\n    isObjectLike = require('./isObjectLike');\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n *  1 - Unordered comparison\n *  2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\n\n\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n  if (value === other) {\n    return true;\n  }\n\n  if (value == null || other == null || !isObjectLike(value) && !isObjectLike(other)) {\n    return value !== value && other !== other;\n  }\n\n  return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nmodule.exports = baseIsEqual;","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n/** Used to detect unsigned integer values. */\n\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\n\nfunction isIndex(value, length) {\n  var type = typeof value;\n  length = length == null ? MAX_SAFE_INTEGER : length;\n  return !!length && (type == 'number' || type != 'symbol' && reIsUint.test(value)) && value > -1 && value % 1 == 0 && value < length;\n}\n\nmodule.exports = isIndex;","require(\"core-js/modules/es6.date.to-json\");\n\nrequire(\"core-js/modules/es6.date.to-iso-string\");\n\nrequire(\"core-js/modules/es6.date.now\");\n\nrequire(\"core-js/modules/es6.function.name\");\n\nrequire(\"core-js/modules/es6.array.for-each\");\n\nrequire(\"core-js/modules/es6.regexp.split\");\n\nrequire(\"core-js/modules/es6.array.index-of\");\n\nrequire(\"core-js/modules/es6.regexp.match\");\n\nrequire(\"core-js/modules/es6.array.sort\");\n\nrequire(\"core-js/modules/es6.regexp.replace\");\n\nrequire(\"core-js/modules/web.dom.iterable\");\n\nrequire(\"core-js/modules/es6.array.iterator\");\n\nrequire(\"core-js/modules/es6.object.keys\");\n\nrequire(\"core-js/modules/es6.regexp.constructor\");\n\nrequire(\"core-js/modules/es6.object.is-frozen\");\n\nrequire(\"core-js/modules/es6.array.some\");\n\nrequire(\"core-js/modules/es6.regexp.to-string\");\n\nrequire(\"core-js/modules/es6.date.to-string\");\n\nrequire(\"core-js/modules/es6.object.to-string\");\n\n//! moment.js\n;\n\n(function (global, factory) {\n  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : typeof define === 'function' && define.amd ? define(factory) : global.moment = factory();\n})(this, function () {\n  'use strict';\n\n  var hookCallback;\n\n  function hooks() {\n    return hookCallback.apply(null, arguments);\n  } // This is done to register the method called with moment()\n  // without creating circular dependencies.\n\n\n  function setHookCallback(callback) {\n    hookCallback = callback;\n  }\n\n  function isArray(input) {\n    return input instanceof Array || Object.prototype.toString.call(input) === '[object Array]';\n  }\n\n  function isObject(input) {\n    // IE8 will treat undefined and null as object if it wasn't for\n    // input != null\n    return input != null && Object.prototype.toString.call(input) === '[object Object]';\n  }\n\n  function isObjectEmpty(obj) {\n    if (Object.getOwnPropertyNames) {\n      return Object.getOwnPropertyNames(obj).length === 0;\n    } else {\n      var k;\n\n      for (k in obj) {\n        if (obj.hasOwnProperty(k)) {\n          return false;\n        }\n      }\n\n      return true;\n    }\n  }\n\n  function isUndefined(input) {\n    return input === void 0;\n  }\n\n  function isNumber(input) {\n    return typeof input === 'number' || Object.prototype.toString.call(input) === '[object Number]';\n  }\n\n  function isDate(input) {\n    return input instanceof Date || Object.prototype.toString.call(input) === '[object Date]';\n  }\n\n  function map(arr, fn) {\n    var res = [],\n        i;\n\n    for (i = 0; i < arr.length; ++i) {\n      res.push(fn(arr[i], i));\n    }\n\n    return res;\n  }\n\n  function hasOwnProp(a, b) {\n    return Object.prototype.hasOwnProperty.call(a, b);\n  }\n\n  function extend(a, b) {\n    for (var i in b) {\n      if (hasOwnProp(b, i)) {\n        a[i] = b[i];\n      }\n    }\n\n    if (hasOwnProp(b, 'toString')) {\n      a.toString = b.toString;\n    }\n\n    if (hasOwnProp(b, 'valueOf')) {\n      a.valueOf = b.valueOf;\n    }\n\n    return a;\n  }\n\n  function createUTC(input, format, locale, strict) {\n    return createLocalOrUTC(input, format, locale, strict, true).utc();\n  }\n\n  function defaultParsingFlags() {\n    // We need to deep clone this object.\n    return {\n      empty: false,\n      unusedTokens: [],\n      unusedInput: [],\n      overflow: -2,\n      charsLeftOver: 0,\n      nullInput: false,\n      invalidMonth: null,\n      invalidFormat: false,\n      userInvalidated: false,\n      iso: false,\n      parsedDateParts: [],\n      meridiem: null,\n      rfc2822: false,\n      weekdayMismatch: false\n    };\n  }\n\n  function getParsingFlags(m) {\n    if (m._pf == null) {\n      m._pf = defaultParsingFlags();\n    }\n\n    return m._pf;\n  }\n\n  var some;\n\n  if (Array.prototype.some) {\n    some = Array.prototype.some;\n  } else {\n    some = function some(fun) {\n      var t = Object(this);\n      var len = t.length >>> 0;\n\n      for (var i = 0; i < len; i++) {\n        if (i in t && fun.call(this, t[i], i, t)) {\n          return true;\n        }\n      }\n\n      return false;\n    };\n  }\n\n  function isValid(m) {\n    if (m._isValid == null) {\n      var flags = getParsingFlags(m);\n      var parsedParts = some.call(flags.parsedDateParts, function (i) {\n        return i != null;\n      });\n      var isNowValid = !isNaN(m._d.getTime()) && flags.overflow < 0 && !flags.empty && !flags.invalidMonth && !flags.invalidWeekday && !flags.weekdayMismatch && !flags.nullInput && !flags.invalidFormat && !flags.userInvalidated && (!flags.meridiem || flags.meridiem && parsedParts);\n\n      if (m._strict) {\n        isNowValid = isNowValid && flags.charsLeftOver === 0 && flags.unusedTokens.length === 0 && flags.bigHour === undefined;\n      }\n\n      if (Object.isFrozen == null || !Object.isFrozen(m)) {\n        m._isValid = isNowValid;\n      } else {\n        return isNowValid;\n      }\n    }\n\n    return m._isValid;\n  }\n\n  function createInvalid(flags) {\n    var m = createUTC(NaN);\n\n    if (flags != null) {\n      extend(getParsingFlags(m), flags);\n    } else {\n      getParsingFlags(m).userInvalidated = true;\n    }\n\n    return m;\n  } // Plugins that add properties should also add the key here (null value),\n  // so we can properly clone ourselves.\n\n\n  var momentProperties = hooks.momentProperties = [];\n\n  function copyConfig(to, from) {\n    var i, prop, val;\n\n    if (!isUndefined(from._isAMomentObject)) {\n      to._isAMomentObject = from._isAMomentObject;\n    }\n\n    if (!isUndefined(from._i)) {\n      to._i = from._i;\n    }\n\n    if (!isUndefined(from._f)) {\n      to._f = from._f;\n    }\n\n    if (!isUndefined(from._l)) {\n      to._l = from._l;\n    }\n\n    if (!isUndefined(from._strict)) {\n      to._strict = from._strict;\n    }\n\n    if (!isUndefined(from._tzm)) {\n      to._tzm = from._tzm;\n    }\n\n    if (!isUndefined(from._isUTC)) {\n      to._isUTC = from._isUTC;\n    }\n\n    if (!isUndefined(from._offset)) {\n      to._offset = from._offset;\n    }\n\n    if (!isUndefined(from._pf)) {\n      to._pf = getParsingFlags(from);\n    }\n\n    if (!isUndefined(from._locale)) {\n      to._locale = from._locale;\n    }\n\n    if (momentProperties.length > 0) {\n      for (i = 0; i < momentProperties.length; i++) {\n        prop = momentProperties[i];\n        val = from[prop];\n\n        if (!isUndefined(val)) {\n          to[prop] = val;\n        }\n      }\n    }\n\n    return to;\n  }\n\n  var updateInProgress = false; // Moment prototype object\n\n  function Moment(config) {\n    copyConfig(this, config);\n    this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n\n    if (!this.isValid()) {\n      this._d = new Date(NaN);\n    } // Prevent infinite loop in case updateOffset creates new moment\n    // objects.\n\n\n    if (updateInProgress === false) {\n      updateInProgress = true;\n      hooks.updateOffset(this);\n      updateInProgress = false;\n    }\n  }\n\n  function isMoment(obj) {\n    return obj instanceof Moment || obj != null && obj._isAMomentObject != null;\n  }\n\n  function absFloor(number) {\n    if (number < 0) {\n      // -0 -> 0\n      return Math.ceil(number) || 0;\n    } else {\n      return Math.floor(number);\n    }\n  }\n\n  function toInt(argumentForCoercion) {\n    var coercedNumber = +argumentForCoercion,\n        value = 0;\n\n    if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n      value = absFloor(coercedNumber);\n    }\n\n    return value;\n  } // compare two arrays, return the number of differences\n\n\n  function compareArrays(array1, array2, dontConvert) {\n    var len = Math.min(array1.length, array2.length),\n        lengthDiff = Math.abs(array1.length - array2.length),\n        diffs = 0,\n        i;\n\n    for (i = 0; i < len; i++) {\n      if (dontConvert && array1[i] !== array2[i] || !dontConvert && toInt(array1[i]) !== toInt(array2[i])) {\n        diffs++;\n      }\n    }\n\n    return diffs + lengthDiff;\n  }\n\n  function warn(msg) {\n    if (hooks.suppressDeprecationWarnings === false && typeof console !== 'undefined' && console.warn) {\n      console.warn('Deprecation warning: ' + msg);\n    }\n  }\n\n  function deprecate(msg, fn) {\n    var firstTime = true;\n    return extend(function () {\n      if (hooks.deprecationHandler != null) {\n        hooks.deprecationHandler(null, msg);\n      }\n\n      if (firstTime) {\n        var args = [];\n        var arg;\n\n        for (var i = 0; i < arguments.length; i++) {\n          arg = '';\n\n          if (typeof arguments[i] === 'object') {\n            arg += '\\n[' + i + '] ';\n\n            for (var key in arguments[0]) {\n              arg += key + ': ' + arguments[0][key] + ', ';\n            }\n\n            arg = arg.slice(0, -2); // Remove trailing comma and space\n          } else {\n            arg = arguments[i];\n          }\n\n          args.push(arg);\n        }\n\n        warn(msg + '\\nArguments: ' + Array.prototype.slice.call(args).join('') + '\\n' + new Error().stack);\n        firstTime = false;\n      }\n\n      return fn.apply(this, arguments);\n    }, fn);\n  }\n\n  var deprecations = {};\n\n  function deprecateSimple(name, msg) {\n    if (hooks.deprecationHandler != null) {\n      hooks.deprecationHandler(name, msg);\n    }\n\n    if (!deprecations[name]) {\n      warn(msg);\n      deprecations[name] = true;\n    }\n  }\n\n  hooks.suppressDeprecationWarnings = false;\n  hooks.deprecationHandler = null;\n\n  function isFunction(input) {\n    return input instanceof Function || Object.prototype.toString.call(input) === '[object Function]';\n  }\n\n  function set(config) {\n    var prop, i;\n\n    for (i in config) {\n      prop = config[i];\n\n      if (isFunction(prop)) {\n        this[i] = prop;\n      } else {\n        this['_' + i] = prop;\n      }\n    }\n\n    this._config = config; // Lenient ordinal parsing accepts just a number in addition to\n    // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n    // TODO: Remove \"ordinalParse\" fallback in next major release.\n\n    this._dayOfMonthOrdinalParseLenient = new RegExp((this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) + '|' + /\\d{1,2}/.source);\n  }\n\n  function mergeConfigs(parentConfig, childConfig) {\n    var res = extend({}, parentConfig),\n        prop;\n\n    for (prop in childConfig) {\n      if (hasOwnProp(childConfig, prop)) {\n        if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n          res[prop] = {};\n          extend(res[prop], parentConfig[prop]);\n          extend(res[prop], childConfig[prop]);\n        } else if (childConfig[prop] != null) {\n          res[prop] = childConfig[prop];\n        } else {\n          delete res[prop];\n        }\n      }\n    }\n\n    for (prop in parentConfig) {\n      if (hasOwnProp(parentConfig, prop) && !hasOwnProp(childConfig, prop) && isObject(parentConfig[prop])) {\n        // make sure changes to properties don't modify parent config\n        res[prop] = extend({}, res[prop]);\n      }\n    }\n\n    return res;\n  }\n\n  function Locale(config) {\n    if (config != null) {\n      this.set(config);\n    }\n  }\n\n  var keys;\n\n  if (Object.keys) {\n    keys = Object.keys;\n  } else {\n    keys = function keys(obj) {\n      var i,\n          res = [];\n\n      for (i in obj) {\n        if (hasOwnProp(obj, i)) {\n          res.push(i);\n        }\n      }\n\n      return res;\n    };\n  }\n\n  var defaultCalendar = {\n    sameDay: '[Today at] LT',\n    nextDay: '[Tomorrow at] LT',\n    nextWeek: 'dddd [at] LT',\n    lastDay: '[Yesterday at] LT',\n    lastWeek: '[Last] dddd [at] LT',\n    sameElse: 'L'\n  };\n\n  function calendar(key, mom, now) {\n    var output = this._calendar[key] || this._calendar['sameElse'];\n    return isFunction(output) ? output.call(mom, now) : output;\n  }\n\n  var defaultLongDateFormat = {\n    LTS: 'h:mm:ss A',\n    LT: 'h:mm A',\n    L: 'MM/DD/YYYY',\n    LL: 'MMMM D, YYYY',\n    LLL: 'MMMM D, YYYY h:mm A',\n    LLLL: 'dddd, MMMM D, YYYY h:mm A'\n  };\n\n  function longDateFormat(key) {\n    var format = this._longDateFormat[key],\n        formatUpper = this._longDateFormat[key.toUpperCase()];\n\n    if (format || !formatUpper) {\n      return format;\n    }\n\n    this._longDateFormat[key] = formatUpper.replace(/MMMM|MM|DD|dddd/g, function (val) {\n      return val.slice(1);\n    });\n    return this._longDateFormat[key];\n  }\n\n  var defaultInvalidDate = 'Invalid date';\n\n  function invalidDate() {\n    return this._invalidDate;\n  }\n\n  var defaultOrdinal = '%d';\n  var defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\n  function ordinal(number) {\n    return this._ordinal.replace('%d', number);\n  }\n\n  var defaultRelativeTime = {\n    future: 'in %s',\n    past: '%s ago',\n    s: 'a few seconds',\n    ss: '%d seconds',\n    m: 'a minute',\n    mm: '%d minutes',\n    h: 'an hour',\n    hh: '%d hours',\n    d: 'a day',\n    dd: '%d days',\n    M: 'a month',\n    MM: '%d months',\n    y: 'a year',\n    yy: '%d years'\n  };\n\n  function relativeTime(number, withoutSuffix, string, isFuture) {\n    var output = this._relativeTime[string];\n    return isFunction(output) ? output(number, withoutSuffix, string, isFuture) : output.replace(/%d/i, number);\n  }\n\n  function pastFuture(diff, output) {\n    var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n    return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n  }\n\n  var aliases = {};\n\n  function addUnitAlias(unit, shorthand) {\n    var lowerCase = unit.toLowerCase();\n    aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;\n  }\n\n  function normalizeUnits(units) {\n    return typeof units === 'string' ? aliases[units] || aliases[units.toLowerCase()] : undefined;\n  }\n\n  function normalizeObjectUnits(inputObject) {\n    var normalizedInput = {},\n        normalizedProp,\n        prop;\n\n    for (prop in inputObject) {\n      if (hasOwnProp(inputObject, prop)) {\n        normalizedProp = normalizeUnits(prop);\n\n        if (normalizedProp) {\n          normalizedInput[normalizedProp] = inputObject[prop];\n        }\n      }\n    }\n\n    return normalizedInput;\n  }\n\n  var priorities = {};\n\n  function addUnitPriority(unit, priority) {\n    priorities[unit] = priority;\n  }\n\n  function getPrioritizedUnits(unitsObj) {\n    var units = [];\n\n    for (var u in unitsObj) {\n      units.push({\n        unit: u,\n        priority: priorities[u]\n      });\n    }\n\n    units.sort(function (a, b) {\n      return a.priority - b.priority;\n    });\n    return units;\n  }\n\n  function zeroFill(number, targetLength, forceSign) {\n    var absNumber = '' + Math.abs(number),\n        zerosToFill = targetLength - absNumber.length,\n        sign = number >= 0;\n    return (sign ? forceSign ? '+' : '' : '-') + Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) + absNumber;\n  }\n\n  var formattingTokens = /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g;\n  var localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g;\n  var formatFunctions = {};\n  var formatTokenFunctions = {}; // token:    'M'\n  // padded:   ['MM', 2]\n  // ordinal:  'Mo'\n  // callback: function () { this.month() + 1 }\n\n  function addFormatToken(token, padded, ordinal, callback) {\n    var func = callback;\n\n    if (typeof callback === 'string') {\n      func = function func() {\n        return this[callback]();\n      };\n    }\n\n    if (token) {\n      formatTokenFunctions[token] = func;\n    }\n\n    if (padded) {\n      formatTokenFunctions[padded[0]] = function () {\n        return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n      };\n    }\n\n    if (ordinal) {\n      formatTokenFunctions[ordinal] = function () {\n        return this.localeData().ordinal(func.apply(this, arguments), token);\n      };\n    }\n  }\n\n  function removeFormattingTokens(input) {\n    if (input.match(/\\[[\\s\\S]/)) {\n      return input.replace(/^\\[|\\]$/g, '');\n    }\n\n    return input.replace(/\\\\/g, '');\n  }\n\n  function makeFormatFunction(format) {\n    var array = format.match(formattingTokens),\n        i,\n        length;\n\n    for (i = 0, length = array.length; i < length; i++) {\n      if (formatTokenFunctions[array[i]]) {\n        array[i] = formatTokenFunctions[array[i]];\n      } else {\n        array[i] = removeFormattingTokens(array[i]);\n      }\n    }\n\n    return function (mom) {\n      var output = '',\n          i;\n\n      for (i = 0; i < length; i++) {\n        output += isFunction(array[i]) ? array[i].call(mom, format) : array[i];\n      }\n\n      return output;\n    };\n  } // format date using native date object\n\n\n  function formatMoment(m, format) {\n    if (!m.isValid()) {\n      return m.localeData().invalidDate();\n    }\n\n    format = expandFormat(format, m.localeData());\n    formatFunctions[format] = formatFunctions[format] || makeFormatFunction(format);\n    return formatFunctions[format](m);\n  }\n\n  function expandFormat(format, locale) {\n    var i = 5;\n\n    function replaceLongDateFormatTokens(input) {\n      return locale.longDateFormat(input) || input;\n    }\n\n    localFormattingTokens.lastIndex = 0;\n\n    while (i >= 0 && localFormattingTokens.test(format)) {\n      format = format.replace(localFormattingTokens, replaceLongDateFormatTokens);\n      localFormattingTokens.lastIndex = 0;\n      i -= 1;\n    }\n\n    return format;\n  }\n\n  var match1 = /\\d/; //       0 - 9\n\n  var match2 = /\\d\\d/; //      00 - 99\n\n  var match3 = /\\d{3}/; //     000 - 999\n\n  var match4 = /\\d{4}/; //    0000 - 9999\n\n  var match6 = /[+-]?\\d{6}/; // -999999 - 999999\n\n  var match1to2 = /\\d\\d?/; //       0 - 99\n\n  var match3to4 = /\\d\\d\\d\\d?/; //     999 - 9999\n\n  var match5to6 = /\\d\\d\\d\\d\\d\\d?/; //   99999 - 999999\n\n  var match1to3 = /\\d{1,3}/; //       0 - 999\n\n  var match1to4 = /\\d{1,4}/; //       0 - 9999\n\n  var match1to6 = /[+-]?\\d{1,6}/; // -999999 - 999999\n\n  var matchUnsigned = /\\d+/; //       0 - inf\n\n  var matchSigned = /[+-]?\\d+/; //    -inf - inf\n\n  var matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi; // +00:00 -00:00 +0000 -0000 or Z\n\n  var matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi; // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n\n  var matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/; // 123456789 123456789.123\n  // any word (or two) characters or numbers including two/three word month in arabic.\n  // includes scottish gaelic two word and hyphenated months\n\n  var matchWord = /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i;\n  var regexes = {};\n\n  function addRegexToken(token, regex, strictRegex) {\n    regexes[token] = isFunction(regex) ? regex : function (isStrict, localeData) {\n      return isStrict && strictRegex ? strictRegex : regex;\n    };\n  }\n\n  function getParseRegexForToken(token, config) {\n    if (!hasOwnProp(regexes, token)) {\n      return new RegExp(unescapeFormat(token));\n    }\n\n    return regexes[token](config._strict, config._locale);\n  } // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n\n\n  function unescapeFormat(s) {\n    return regexEscape(s.replace('\\\\', '').replace(/\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g, function (matched, p1, p2, p3, p4) {\n      return p1 || p2 || p3 || p4;\n    }));\n  }\n\n  function regexEscape(s) {\n    return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n  }\n\n  var tokens = {};\n\n  function addParseToken(token, callback) {\n    var i,\n        func = callback;\n\n    if (typeof token === 'string') {\n      token = [token];\n    }\n\n    if (isNumber(callback)) {\n      func = function func(input, array) {\n        array[callback] = toInt(input);\n      };\n    }\n\n    for (i = 0; i < token.length; i++) {\n      tokens[token[i]] = func;\n    }\n  }\n\n  function addWeekParseToken(token, callback) {\n    addParseToken(token, function (input, array, config, token) {\n      config._w = config._w || {};\n      callback(input, config._w, config, token);\n    });\n  }\n\n  function addTimeToArrayFromToken(token, input, config) {\n    if (input != null && hasOwnProp(tokens, token)) {\n      tokens[token](input, config._a, config, token);\n    }\n  }\n\n  var YEAR = 0;\n  var MONTH = 1;\n  var DATE = 2;\n  var HOUR = 3;\n  var MINUTE = 4;\n  var SECOND = 5;\n  var MILLISECOND = 6;\n  var WEEK = 7;\n  var WEEKDAY = 8; // FORMATTING\n\n  addFormatToken('Y', 0, 0, function () {\n    var y = this.year();\n    return y <= 9999 ? '' + y : '+' + y;\n  });\n  addFormatToken(0, ['YY', 2], 0, function () {\n    return this.year() % 100;\n  });\n  addFormatToken(0, ['YYYY', 4], 0, 'year');\n  addFormatToken(0, ['YYYYY', 5], 0, 'year');\n  addFormatToken(0, ['YYYYYY', 6, true], 0, 'year'); // ALIASES\n\n  addUnitAlias('year', 'y'); // PRIORITIES\n\n  addUnitPriority('year', 1); // PARSING\n\n  addRegexToken('Y', matchSigned);\n  addRegexToken('YY', match1to2, match2);\n  addRegexToken('YYYY', match1to4, match4);\n  addRegexToken('YYYYY', match1to6, match6);\n  addRegexToken('YYYYYY', match1to6, match6);\n  addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n  addParseToken('YYYY', function (input, array) {\n    array[YEAR] = input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n  });\n  addParseToken('YY', function (input, array) {\n    array[YEAR] = hooks.parseTwoDigitYear(input);\n  });\n  addParseToken('Y', function (input, array) {\n    array[YEAR] = parseInt(input, 10);\n  }); // HELPERS\n\n  function daysInYear(year) {\n    return isLeapYear(year) ? 366 : 365;\n  }\n\n  function isLeapYear(year) {\n    return year % 4 === 0 && year % 100 !== 0 || year % 400 === 0;\n  } // HOOKS\n\n\n  hooks.parseTwoDigitYear = function (input) {\n    return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n  }; // MOMENTS\n\n\n  var getSetYear = makeGetSet('FullYear', true);\n\n  function getIsLeapYear() {\n    return isLeapYear(this.year());\n  }\n\n  function makeGetSet(unit, keepTime) {\n    return function (value) {\n      if (value != null) {\n        set$1(this, unit, value);\n        hooks.updateOffset(this, keepTime);\n        return this;\n      } else {\n        return get(this, unit);\n      }\n    };\n  }\n\n  function get(mom, unit) {\n    return mom.isValid() ? mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]() : NaN;\n  }\n\n  function set$1(mom, unit, value) {\n    if (mom.isValid() && !isNaN(value)) {\n      if (unit === 'FullYear' && isLeapYear(mom.year()) && mom.month() === 1 && mom.date() === 29) {\n        mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value, mom.month(), daysInMonth(value, mom.month()));\n      } else {\n        mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);\n      }\n    }\n  } // MOMENTS\n\n\n  function stringGet(units) {\n    units = normalizeUnits(units);\n\n    if (isFunction(this[units])) {\n      return this[units]();\n    }\n\n    return this;\n  }\n\n  function stringSet(units, value) {\n    if (typeof units === 'object') {\n      units = normalizeObjectUnits(units);\n      var prioritized = getPrioritizedUnits(units);\n\n      for (var i = 0; i < prioritized.length; i++) {\n        this[prioritized[i].unit](units[prioritized[i].unit]);\n      }\n    } else {\n      units = normalizeUnits(units);\n\n      if (isFunction(this[units])) {\n        return this[units](value);\n      }\n    }\n\n    return this;\n  }\n\n  function mod(n, x) {\n    return (n % x + x) % x;\n  }\n\n  var indexOf;\n\n  if (Array.prototype.indexOf) {\n    indexOf = Array.prototype.indexOf;\n  } else {\n    indexOf = function indexOf(o) {\n      // I know\n      var i;\n\n      for (i = 0; i < this.length; ++i) {\n        if (this[i] === o) {\n          return i;\n        }\n      }\n\n      return -1;\n    };\n  }\n\n  function daysInMonth(year, month) {\n    if (isNaN(year) || isNaN(month)) {\n      return NaN;\n    }\n\n    var modMonth = mod(month, 12);\n    year += (month - modMonth) / 12;\n    return modMonth === 1 ? isLeapYear(year) ? 29 : 28 : 31 - modMonth % 7 % 2;\n  } // FORMATTING\n\n\n  addFormatToken('M', ['MM', 2], 'Mo', function () {\n    return this.month() + 1;\n  });\n  addFormatToken('MMM', 0, 0, function (format) {\n    return this.localeData().monthsShort(this, format);\n  });\n  addFormatToken('MMMM', 0, 0, function (format) {\n    return this.localeData().months(this, format);\n  }); // ALIASES\n\n  addUnitAlias('month', 'M'); // PRIORITY\n\n  addUnitPriority('month', 8); // PARSING\n\n  addRegexToken('M', match1to2);\n  addRegexToken('MM', match1to2, match2);\n  addRegexToken('MMM', function (isStrict, locale) {\n    return locale.monthsShortRegex(isStrict);\n  });\n  addRegexToken('MMMM', function (isStrict, locale) {\n    return locale.monthsRegex(isStrict);\n  });\n  addParseToken(['M', 'MM'], function (input, array) {\n    array[MONTH] = toInt(input) - 1;\n  });\n  addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n    var month = config._locale.monthsParse(input, token, config._strict); // if we didn't find a month name, mark the date as invalid.\n\n\n    if (month != null) {\n      array[MONTH] = month;\n    } else {\n      getParsingFlags(config).invalidMonth = input;\n    }\n  }); // LOCALES\n\n  var MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/;\n  var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_');\n\n  function localeMonths(m, format) {\n    if (!m) {\n      return isArray(this._months) ? this._months : this._months['standalone'];\n    }\n\n    return isArray(this._months) ? this._months[m.month()] : this._months[(this._months.isFormat || MONTHS_IN_FORMAT).test(format) ? 'format' : 'standalone'][m.month()];\n  }\n\n  var defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_');\n\n  function localeMonthsShort(m, format) {\n    if (!m) {\n      return isArray(this._monthsShort) ? this._monthsShort : this._monthsShort['standalone'];\n    }\n\n    return isArray(this._monthsShort) ? this._monthsShort[m.month()] : this._monthsShort[MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'][m.month()];\n  }\n\n  function handleStrictParse(monthName, format, strict) {\n    var i,\n        ii,\n        mom,\n        llc = monthName.toLocaleLowerCase();\n\n    if (!this._monthsParse) {\n      // this is not used\n      this._monthsParse = [];\n      this._longMonthsParse = [];\n      this._shortMonthsParse = [];\n\n      for (i = 0; i < 12; ++i) {\n        mom = createUTC([2000, i]);\n        this._shortMonthsParse[i] = this.monthsShort(mom, '').toLocaleLowerCase();\n        this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n      }\n    }\n\n    if (strict) {\n      if (format === 'MMM') {\n        ii = indexOf.call(this._shortMonthsParse, llc);\n        return ii !== -1 ? ii : null;\n      } else {\n        ii = indexOf.call(this._longMonthsParse, llc);\n        return ii !== -1 ? ii : null;\n      }\n    } else {\n      if (format === 'MMM') {\n        ii = indexOf.call(this._shortMonthsParse, llc);\n\n        if (ii !== -1) {\n          return ii;\n        }\n\n        ii = indexOf.call(this._longMonthsParse, llc);\n        return ii !== -1 ? ii : null;\n      } else {\n        ii = indexOf.call(this._longMonthsParse, llc);\n\n        if (ii !== -1) {\n          return ii;\n        }\n\n        ii = indexOf.call(this._shortMonthsParse, llc);\n        return ii !== -1 ? ii : null;\n      }\n    }\n  }\n\n  function localeMonthsParse(monthName, format, strict) {\n    var i, mom, regex;\n\n    if (this._monthsParseExact) {\n      return handleStrictParse.call(this, monthName, format, strict);\n    }\n\n    if (!this._monthsParse) {\n      this._monthsParse = [];\n      this._longMonthsParse = [];\n      this._shortMonthsParse = [];\n    } // TODO: add sorting\n    // Sorting makes sure if one month (or abbr) is a prefix of another\n    // see sorting in computeMonthsParse\n\n\n    for (i = 0; i < 12; i++) {\n      // make the regex if we don't have it already\n      mom = createUTC([2000, i]);\n\n      if (strict && !this._longMonthsParse[i]) {\n        this._longMonthsParse[i] = new RegExp('^' + this.months(mom, '').replace('.', '') + '$', 'i');\n        this._shortMonthsParse[i] = new RegExp('^' + this.monthsShort(mom, '').replace('.', '') + '$', 'i');\n      }\n\n      if (!strict && !this._monthsParse[i]) {\n        regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n        this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n      } // test the regex\n\n\n      if (strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName)) {\n        return i;\n      } else if (strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName)) {\n        return i;\n      } else if (!strict && this._monthsParse[i].test(monthName)) {\n        return i;\n      }\n    }\n  } // MOMENTS\n\n\n  function setMonth(mom, value) {\n    var dayOfMonth;\n\n    if (!mom.isValid()) {\n      // No op\n      return mom;\n    }\n\n    if (typeof value === 'string') {\n      if (/^\\d+$/.test(value)) {\n        value = toInt(value);\n      } else {\n        value = mom.localeData().monthsParse(value); // TODO: Another silent failure?\n\n        if (!isNumber(value)) {\n          return mom;\n        }\n      }\n    }\n\n    dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));\n\n    mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);\n\n    return mom;\n  }\n\n  function getSetMonth(value) {\n    if (value != null) {\n      setMonth(this, value);\n      hooks.updateOffset(this, true);\n      return this;\n    } else {\n      return get(this, 'Month');\n    }\n  }\n\n  function getDaysInMonth() {\n    return daysInMonth(this.year(), this.month());\n  }\n\n  var defaultMonthsShortRegex = matchWord;\n\n  function monthsShortRegex(isStrict) {\n    if (this._monthsParseExact) {\n      if (!hasOwnProp(this, '_monthsRegex')) {\n        computeMonthsParse.call(this);\n      }\n\n      if (isStrict) {\n        return this._monthsShortStrictRegex;\n      } else {\n        return this._monthsShortRegex;\n      }\n    } else {\n      if (!hasOwnProp(this, '_monthsShortRegex')) {\n        this._monthsShortRegex = defaultMonthsShortRegex;\n      }\n\n      return this._monthsShortStrictRegex && isStrict ? this._monthsShortStrictRegex : this._monthsShortRegex;\n    }\n  }\n\n  var defaultMonthsRegex = matchWord;\n\n  function monthsRegex(isStrict) {\n    if (this._monthsParseExact) {\n      if (!hasOwnProp(this, '_monthsRegex')) {\n        computeMonthsParse.call(this);\n      }\n\n      if (isStrict) {\n        return this._monthsStrictRegex;\n      } else {\n        return this._monthsRegex;\n      }\n    } else {\n      if (!hasOwnProp(this, '_monthsRegex')) {\n        this._monthsRegex = defaultMonthsRegex;\n      }\n\n      return this._monthsStrictRegex && isStrict ? this._monthsStrictRegex : this._monthsRegex;\n    }\n  }\n\n  function computeMonthsParse() {\n    function cmpLenRev(a, b) {\n      return b.length - a.length;\n    }\n\n    var shortPieces = [],\n        longPieces = [],\n        mixedPieces = [],\n        i,\n        mom;\n\n    for (i = 0; i < 12; i++) {\n      // make the regex if we don't have it already\n      mom = createUTC([2000, i]);\n      shortPieces.push(this.monthsShort(mom, ''));\n      longPieces.push(this.months(mom, ''));\n      mixedPieces.push(this.months(mom, ''));\n      mixedPieces.push(this.monthsShort(mom, ''));\n    } // Sorting makes sure if one month (or abbr) is a prefix of another it\n    // will match the longer piece.\n\n\n    shortPieces.sort(cmpLenRev);\n    longPieces.sort(cmpLenRev);\n    mixedPieces.sort(cmpLenRev);\n\n    for (i = 0; i < 12; i++) {\n      shortPieces[i] = regexEscape(shortPieces[i]);\n      longPieces[i] = regexEscape(longPieces[i]);\n    }\n\n    for (i = 0; i < 24; i++) {\n      mixedPieces[i] = regexEscape(mixedPieces[i]);\n    }\n\n    this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n    this._monthsShortRegex = this._monthsRegex;\n    this._monthsStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i');\n    this._monthsShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i');\n  }\n\n  function createDate(y, m, d, h, M, s, ms) {\n    // can't just apply() to create a date:\n    // https://stackoverflow.com/q/181348\n    var date; // the date constructor remaps years 0-99 to 1900-1999\n\n    if (y < 100 && y >= 0) {\n      // preserve leap years using a full 400 year cycle, then reset\n      date = new Date(y + 400, m, d, h, M, s, ms);\n\n      if (isFinite(date.getFullYear())) {\n        date.setFullYear(y);\n      }\n    } else {\n      date = new Date(y, m, d, h, M, s, ms);\n    }\n\n    return date;\n  }\n\n  function createUTCDate(y) {\n    var date; // the Date.UTC function remaps years 0-99 to 1900-1999\n\n    if (y < 100 && y >= 0) {\n      var args = Array.prototype.slice.call(arguments); // preserve leap years using a full 400 year cycle, then reset\n\n      args[0] = y + 400;\n      date = new Date(Date.UTC.apply(null, args));\n\n      if (isFinite(date.getUTCFullYear())) {\n        date.setUTCFullYear(y);\n      }\n    } else {\n      date = new Date(Date.UTC.apply(null, arguments));\n    }\n\n    return date;\n  } // start-of-first-week - start-of-year\n\n\n  function firstWeekOffset(year, dow, doy) {\n    var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n    fwd = 7 + dow - doy,\n        // first-week day local weekday -- which local weekday is fwd\n    fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n    return -fwdlw + fwd - 1;\n  } // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n\n\n  function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n    var localWeekday = (7 + weekday - dow) % 7,\n        weekOffset = firstWeekOffset(year, dow, doy),\n        dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n        resYear,\n        resDayOfYear;\n\n    if (dayOfYear <= 0) {\n      resYear = year - 1;\n      resDayOfYear = daysInYear(resYear) + dayOfYear;\n    } else if (dayOfYear > daysInYear(year)) {\n      resYear = year + 1;\n      resDayOfYear = dayOfYear - daysInYear(year);\n    } else {\n      resYear = year;\n      resDayOfYear = dayOfYear;\n    }\n\n    return {\n      year: resYear,\n      dayOfYear: resDayOfYear\n    };\n  }\n\n  function weekOfYear(mom, dow, doy) {\n    var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n        week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n        resWeek,\n        resYear;\n\n    if (week < 1) {\n      resYear = mom.year() - 1;\n      resWeek = week + weeksInYear(resYear, dow, doy);\n    } else if (week > weeksInYear(mom.year(), dow, doy)) {\n      resWeek = week - weeksInYear(mom.year(), dow, doy);\n      resYear = mom.year() + 1;\n    } else {\n      resYear = mom.year();\n      resWeek = week;\n    }\n\n    return {\n      week: resWeek,\n      year: resYear\n    };\n  }\n\n  function weeksInYear(year, dow, doy) {\n    var weekOffset = firstWeekOffset(year, dow, doy),\n        weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n    return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n  } // FORMATTING\n\n\n  addFormatToken('w', ['ww', 2], 'wo', 'week');\n  addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek'); // ALIASES\n\n  addUnitAlias('week', 'w');\n  addUnitAlias('isoWeek', 'W'); // PRIORITIES\n\n  addUnitPriority('week', 5);\n  addUnitPriority('isoWeek', 5); // PARSING\n\n  addRegexToken('w', match1to2);\n  addRegexToken('ww', match1to2, match2);\n  addRegexToken('W', match1to2);\n  addRegexToken('WW', match1to2, match2);\n  addWeekParseToken(['w', 'ww', 'W', 'WW'], function (input, week, config, token) {\n    week[token.substr(0, 1)] = toInt(input);\n  }); // HELPERS\n  // LOCALES\n\n  function localeWeek(mom) {\n    return weekOfYear(mom, this._week.dow, this._week.doy).week;\n  }\n\n  var defaultLocaleWeek = {\n    dow: 0,\n    // Sunday is the first day of the week.\n    doy: 6 // The week that contains Jan 6th is the first week of the year.\n\n  };\n\n  function localeFirstDayOfWeek() {\n    return this._week.dow;\n  }\n\n  function localeFirstDayOfYear() {\n    return this._week.doy;\n  } // MOMENTS\n\n\n  function getSetWeek(input) {\n    var week = this.localeData().week(this);\n    return input == null ? week : this.add((input - week) * 7, 'd');\n  }\n\n  function getSetISOWeek(input) {\n    var week = weekOfYear(this, 1, 4).week;\n    return input == null ? week : this.add((input - week) * 7, 'd');\n  } // FORMATTING\n\n\n  addFormatToken('d', 0, 'do', 'day');\n  addFormatToken('dd', 0, 0, function (format) {\n    return this.localeData().weekdaysMin(this, format);\n  });\n  addFormatToken('ddd', 0, 0, function (format) {\n    return this.localeData().weekdaysShort(this, format);\n  });\n  addFormatToken('dddd', 0, 0, function (format) {\n    return this.localeData().weekdays(this, format);\n  });\n  addFormatToken('e', 0, 0, 'weekday');\n  addFormatToken('E', 0, 0, 'isoWeekday'); // ALIASES\n\n  addUnitAlias('day', 'd');\n  addUnitAlias('weekday', 'e');\n  addUnitAlias('isoWeekday', 'E'); // PRIORITY\n\n  addUnitPriority('day', 11);\n  addUnitPriority('weekday', 11);\n  addUnitPriority('isoWeekday', 11); // PARSING\n\n  addRegexToken('d', match1to2);\n  addRegexToken('e', match1to2);\n  addRegexToken('E', match1to2);\n  addRegexToken('dd', function (isStrict, locale) {\n    return locale.weekdaysMinRegex(isStrict);\n  });\n  addRegexToken('ddd', function (isStrict, locale) {\n    return locale.weekdaysShortRegex(isStrict);\n  });\n  addRegexToken('dddd', function (isStrict, locale) {\n    return locale.weekdaysRegex(isStrict);\n  });\n  addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n    var weekday = config._locale.weekdaysParse(input, token, config._strict); // if we didn't get a weekday name, mark the date as invalid\n\n\n    if (weekday != null) {\n      week.d = weekday;\n    } else {\n      getParsingFlags(config).invalidWeekday = input;\n    }\n  });\n  addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n    week[token] = toInt(input);\n  }); // HELPERS\n\n  function parseWeekday(input, locale) {\n    if (typeof input !== 'string') {\n      return input;\n    }\n\n    if (!isNaN(input)) {\n      return parseInt(input, 10);\n    }\n\n    input = locale.weekdaysParse(input);\n\n    if (typeof input === 'number') {\n      return input;\n    }\n\n    return null;\n  }\n\n  function parseIsoWeekday(input, locale) {\n    if (typeof input === 'string') {\n      return locale.weekdaysParse(input) % 7 || 7;\n    }\n\n    return isNaN(input) ? null : input;\n  } // LOCALES\n\n\n  function shiftWeekdays(ws, n) {\n    return ws.slice(n, 7).concat(ws.slice(0, n));\n  }\n\n  var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_');\n\n  function localeWeekdays(m, format) {\n    var weekdays = isArray(this._weekdays) ? this._weekdays : this._weekdays[m && m !== true && this._weekdays.isFormat.test(format) ? 'format' : 'standalone'];\n    return m === true ? shiftWeekdays(weekdays, this._week.dow) : m ? weekdays[m.day()] : weekdays;\n  }\n\n  var defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_');\n\n  function localeWeekdaysShort(m) {\n    return m === true ? shiftWeekdays(this._weekdaysShort, this._week.dow) : m ? this._weekdaysShort[m.day()] : this._weekdaysShort;\n  }\n\n  var defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_');\n\n  function localeWeekdaysMin(m) {\n    return m === true ? shiftWeekdays(this._weekdaysMin, this._week.dow) : m ? this._weekdaysMin[m.day()] : this._weekdaysMin;\n  }\n\n  function handleStrictParse$1(weekdayName, format, strict) {\n    var i,\n        ii,\n        mom,\n        llc = weekdayName.toLocaleLowerCase();\n\n    if (!this._weekdaysParse) {\n      this._weekdaysParse = [];\n      this._shortWeekdaysParse = [];\n      this._minWeekdaysParse = [];\n\n      for (i = 0; i < 7; ++i) {\n        mom = createUTC([2000, 1]).day(i);\n        this._minWeekdaysParse[i] = this.weekdaysMin(mom, '').toLocaleLowerCase();\n        this._shortWeekdaysParse[i] = this.weekdaysShort(mom, '').toLocaleLowerCase();\n        this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n      }\n    }\n\n    if (strict) {\n      if (format === 'dddd') {\n        ii = indexOf.call(this._weekdaysParse, llc);\n        return ii !== -1 ? ii : null;\n      } else if (format === 'ddd') {\n        ii = indexOf.call(this._shortWeekdaysParse, llc);\n        return ii !== -1 ? ii : null;\n      } else {\n        ii = indexOf.call(this._minWeekdaysParse, llc);\n        return ii !== -1 ? ii : null;\n      }\n    } else {\n      if (format === 'dddd') {\n        ii = indexOf.call(this._weekdaysParse, llc);\n\n        if (ii !== -1) {\n          return ii;\n        }\n\n        ii = indexOf.call(this._shortWeekdaysParse, llc);\n\n        if (ii !== -1) {\n          return ii;\n        }\n\n        ii = indexOf.call(this._minWeekdaysParse, llc);\n        return ii !== -1 ? ii : null;\n      } else if (format === 'ddd') {\n        ii = indexOf.call(this._shortWeekdaysParse, llc);\n\n        if (ii !== -1) {\n          return ii;\n        }\n\n        ii = indexOf.call(this._weekdaysParse, llc);\n\n        if (ii !== -1) {\n          return ii;\n        }\n\n        ii = indexOf.call(this._minWeekdaysParse, llc);\n        return ii !== -1 ? ii : null;\n      } else {\n        ii = indexOf.call(this._minWeekdaysParse, llc);\n\n        if (ii !== -1) {\n          return ii;\n        }\n\n        ii = indexOf.call(this._weekdaysParse, llc);\n\n        if (ii !== -1) {\n          return ii;\n        }\n\n        ii = indexOf.call(this._shortWeekdaysParse, llc);\n        return ii !== -1 ? ii : null;\n      }\n    }\n  }\n\n  function localeWeekdaysParse(weekdayName, format, strict) {\n    var i, mom, regex;\n\n    if (this._weekdaysParseExact) {\n      return handleStrictParse$1.call(this, weekdayName, format, strict);\n    }\n\n    if (!this._weekdaysParse) {\n      this._weekdaysParse = [];\n      this._minWeekdaysParse = [];\n      this._shortWeekdaysParse = [];\n      this._fullWeekdaysParse = [];\n    }\n\n    for (i = 0; i < 7; i++) {\n      // make the regex if we don't have it already\n      mom = createUTC([2000, 1]).day(i);\n\n      if (strict && !this._fullWeekdaysParse[i]) {\n        this._fullWeekdaysParse[i] = new RegExp('^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$', 'i');\n        this._shortWeekdaysParse[i] = new RegExp('^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$', 'i');\n        this._minWeekdaysParse[i] = new RegExp('^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$', 'i');\n      }\n\n      if (!this._weekdaysParse[i]) {\n        regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, '');\n        this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n      } // test the regex\n\n\n      if (strict && format === 'dddd' && this._fullWeekdaysParse[i].test(weekdayName)) {\n        return i;\n      } else if (strict && format === 'ddd' && this._shortWeekdaysParse[i].test(weekdayName)) {\n        return i;\n      } else if (strict && format === 'dd' && this._minWeekdaysParse[i].test(weekdayName)) {\n        return i;\n      } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n        return i;\n      }\n    }\n  } // MOMENTS\n\n\n  function getSetDayOfWeek(input) {\n    if (!this.isValid()) {\n      return input != null ? this : NaN;\n    }\n\n    var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();\n\n    if (input != null) {\n      input = parseWeekday(input, this.localeData());\n      return this.add(input - day, 'd');\n    } else {\n      return day;\n    }\n  }\n\n  function getSetLocaleDayOfWeek(input) {\n    if (!this.isValid()) {\n      return input != null ? this : NaN;\n    }\n\n    var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n    return input == null ? weekday : this.add(input - weekday, 'd');\n  }\n\n  function getSetISODayOfWeek(input) {\n    if (!this.isValid()) {\n      return input != null ? this : NaN;\n    } // behaves the same as moment#day except\n    // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n    // as a setter, sunday should belong to the previous week.\n\n\n    if (input != null) {\n      var weekday = parseIsoWeekday(input, this.localeData());\n      return this.day(this.day() % 7 ? weekday : weekday - 7);\n    } else {\n      return this.day() || 7;\n    }\n  }\n\n  var defaultWeekdaysRegex = matchWord;\n\n  function weekdaysRegex(isStrict) {\n    if (this._weekdaysParseExact) {\n      if (!hasOwnProp(this, '_weekdaysRegex')) {\n        computeWeekdaysParse.call(this);\n      }\n\n      if (isStrict) {\n        return this._weekdaysStrictRegex;\n      } else {\n        return this._weekdaysRegex;\n      }\n    } else {\n      if (!hasOwnProp(this, '_weekdaysRegex')) {\n        this._weekdaysRegex = defaultWeekdaysRegex;\n      }\n\n      return this._weekdaysStrictRegex && isStrict ? this._weekdaysStrictRegex : this._weekdaysRegex;\n    }\n  }\n\n  var defaultWeekdaysShortRegex = matchWord;\n\n  function weekdaysShortRegex(isStrict) {\n    if (this._weekdaysParseExact) {\n      if (!hasOwnProp(this, '_weekdaysRegex')) {\n        computeWeekdaysParse.call(this);\n      }\n\n      if (isStrict) {\n        return this._weekdaysShortStrictRegex;\n      } else {\n        return this._weekdaysShortRegex;\n      }\n    } else {\n      if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n        this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n      }\n\n      return this._weekdaysShortStrictRegex && isStrict ? this._weekdaysShortStrictRegex : this._weekdaysShortRegex;\n    }\n  }\n\n  var defaultWeekdaysMinRegex = matchWord;\n\n  function weekdaysMinRegex(isStrict) {\n    if (this._weekdaysParseExact) {\n      if (!hasOwnProp(this, '_weekdaysRegex')) {\n        computeWeekdaysParse.call(this);\n      }\n\n      if (isStrict) {\n        return this._weekdaysMinStrictRegex;\n      } else {\n        return this._weekdaysMinRegex;\n      }\n    } else {\n      if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n        this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n      }\n\n      return this._weekdaysMinStrictRegex && isStrict ? this._weekdaysMinStrictRegex : this._weekdaysMinRegex;\n    }\n  }\n\n  function computeWeekdaysParse() {\n    function cmpLenRev(a, b) {\n      return b.length - a.length;\n    }\n\n    var minPieces = [],\n        shortPieces = [],\n        longPieces = [],\n        mixedPieces = [],\n        i,\n        mom,\n        minp,\n        shortp,\n        longp;\n\n    for (i = 0; i < 7; i++) {\n      // make the regex if we don't have it already\n      mom = createUTC([2000, 1]).day(i);\n      minp = this.weekdaysMin(mom, '');\n      shortp = this.weekdaysShort(mom, '');\n      longp = this.weekdays(mom, '');\n      minPieces.push(minp);\n      shortPieces.push(shortp);\n      longPieces.push(longp);\n      mixedPieces.push(minp);\n      mixedPieces.push(shortp);\n      mixedPieces.push(longp);\n    } // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n    // will match the longer piece.\n\n\n    minPieces.sort(cmpLenRev);\n    shortPieces.sort(cmpLenRev);\n    longPieces.sort(cmpLenRev);\n    mixedPieces.sort(cmpLenRev);\n\n    for (i = 0; i < 7; i++) {\n      shortPieces[i] = regexEscape(shortPieces[i]);\n      longPieces[i] = regexEscape(longPieces[i]);\n      mixedPieces[i] = regexEscape(mixedPieces[i]);\n    }\n\n    this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n    this._weekdaysShortRegex = this._weekdaysRegex;\n    this._weekdaysMinRegex = this._weekdaysRegex;\n    this._weekdaysStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i');\n    this._weekdaysShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i');\n    this._weekdaysMinStrictRegex = new RegExp('^(' + minPieces.join('|') + ')', 'i');\n  } // FORMATTING\n\n\n  function hFormat() {\n    return this.hours() % 12 || 12;\n  }\n\n  function kFormat() {\n    return this.hours() || 24;\n  }\n\n  addFormatToken('H', ['HH', 2], 0, 'hour');\n  addFormatToken('h', ['hh', 2], 0, hFormat);\n  addFormatToken('k', ['kk', 2], 0, kFormat);\n  addFormatToken('hmm', 0, 0, function () {\n    return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n  });\n  addFormatToken('hmmss', 0, 0, function () {\n    return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2) + zeroFill(this.seconds(), 2);\n  });\n  addFormatToken('Hmm', 0, 0, function () {\n    return '' + this.hours() + zeroFill(this.minutes(), 2);\n  });\n  addFormatToken('Hmmss', 0, 0, function () {\n    return '' + this.hours() + zeroFill(this.minutes(), 2) + zeroFill(this.seconds(), 2);\n  });\n\n  function meridiem(token, lowercase) {\n    addFormatToken(token, 0, 0, function () {\n      return this.localeData().meridiem(this.hours(), this.minutes(), lowercase);\n    });\n  }\n\n  meridiem('a', true);\n  meridiem('A', false); // ALIASES\n\n  addUnitAlias('hour', 'h'); // PRIORITY\n\n  addUnitPriority('hour', 13); // PARSING\n\n  function matchMeridiem(isStrict, locale) {\n    return locale._meridiemParse;\n  }\n\n  addRegexToken('a', matchMeridiem);\n  addRegexToken('A', matchMeridiem);\n  addRegexToken('H', match1to2);\n  addRegexToken('h', match1to2);\n  addRegexToken('k', match1to2);\n  addRegexToken('HH', match1to2, match2);\n  addRegexToken('hh', match1to2, match2);\n  addRegexToken('kk', match1to2, match2);\n  addRegexToken('hmm', match3to4);\n  addRegexToken('hmmss', match5to6);\n  addRegexToken('Hmm', match3to4);\n  addRegexToken('Hmmss', match5to6);\n  addParseToken(['H', 'HH'], HOUR);\n  addParseToken(['k', 'kk'], function (input, array, config) {\n    var kInput = toInt(input);\n    array[HOUR] = kInput === 24 ? 0 : kInput;\n  });\n  addParseToken(['a', 'A'], function (input, array, config) {\n    config._isPm = config._locale.isPM(input);\n    config._meridiem = input;\n  });\n  addParseToken(['h', 'hh'], function (input, array, config) {\n    array[HOUR] = toInt(input);\n    getParsingFlags(config).bigHour = true;\n  });\n  addParseToken('hmm', function (input, array, config) {\n    var pos = input.length - 2;\n    array[HOUR] = toInt(input.substr(0, pos));\n    array[MINUTE] = toInt(input.substr(pos));\n    getParsingFlags(config).bigHour = true;\n  });\n  addParseToken('hmmss', function (input, array, config) {\n    var pos1 = input.length - 4;\n    var pos2 = input.length - 2;\n    array[HOUR] = toInt(input.substr(0, pos1));\n    array[MINUTE] = toInt(input.substr(pos1, 2));\n    array[SECOND] = toInt(input.substr(pos2));\n    getParsingFlags(config).bigHour = true;\n  });\n  addParseToken('Hmm', function (input, array, config) {\n    var pos = input.length - 2;\n    array[HOUR] = toInt(input.substr(0, pos));\n    array[MINUTE] = toInt(input.substr(pos));\n  });\n  addParseToken('Hmmss', function (input, array, config) {\n    var pos1 = input.length - 4;\n    var pos2 = input.length - 2;\n    array[HOUR] = toInt(input.substr(0, pos1));\n    array[MINUTE] = toInt(input.substr(pos1, 2));\n    array[SECOND] = toInt(input.substr(pos2));\n  }); // LOCALES\n\n  function localeIsPM(input) {\n    // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n    // Using charAt should be more compatible.\n    return (input + '').toLowerCase().charAt(0) === 'p';\n  }\n\n  var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i;\n\n  function localeMeridiem(hours, minutes, isLower) {\n    if (hours > 11) {\n      return isLower ? 'pm' : 'PM';\n    } else {\n      return isLower ? 'am' : 'AM';\n    }\n  } // MOMENTS\n  // Setting the hour should keep the time, because the user explicitly\n  // specified which hour they want. So trying to maintain the same hour (in\n  // a new timezone) makes sense. Adding/subtracting hours does not follow\n  // this rule.\n\n\n  var getSetHour = makeGetSet('Hours', true);\n  var baseConfig = {\n    calendar: defaultCalendar,\n    longDateFormat: defaultLongDateFormat,\n    invalidDate: defaultInvalidDate,\n    ordinal: defaultOrdinal,\n    dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n    relativeTime: defaultRelativeTime,\n    months: defaultLocaleMonths,\n    monthsShort: defaultLocaleMonthsShort,\n    week: defaultLocaleWeek,\n    weekdays: defaultLocaleWeekdays,\n    weekdaysMin: defaultLocaleWeekdaysMin,\n    weekdaysShort: defaultLocaleWeekdaysShort,\n    meridiemParse: defaultLocaleMeridiemParse\n  }; // internal storage for locale config files\n\n  var locales = {};\n  var localeFamilies = {};\n  var globalLocale;\n\n  function normalizeLocale(key) {\n    return key ? key.toLowerCase().replace('_', '-') : key;\n  } // pick the locale from the array\n  // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n  // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n\n\n  function chooseLocale(names) {\n    var i = 0,\n        j,\n        next,\n        locale,\n        split;\n\n    while (i < names.length) {\n      split = normalizeLocale(names[i]).split('-');\n      j = split.length;\n      next = normalizeLocale(names[i + 1]);\n      next = next ? next.split('-') : null;\n\n      while (j > 0) {\n        locale = loadLocale(split.slice(0, j).join('-'));\n\n        if (locale) {\n          return locale;\n        }\n\n        if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) {\n          //the next array item is better than a shallower substring of this one\n          break;\n        }\n\n        j--;\n      }\n\n      i++;\n    }\n\n    return globalLocale;\n  }\n\n  function loadLocale(name) {\n    var oldLocale = null; // TODO: Find a better way to register and load all the locales in Node\n\n    if (!locales[name] && typeof module !== 'undefined' && module && module.exports) {\n      try {\n        oldLocale = globalLocale._abbr;\n        var aliasedRequire = require;\n        aliasedRequire('./locale/' + name);\n        getSetGlobalLocale(oldLocale);\n      } catch (e) {}\n    }\n\n    return locales[name];\n  } // This function will load locale and then set the global locale.  If\n  // no arguments are passed in, it will simply return the current global\n  // locale key.\n\n\n  function getSetGlobalLocale(key, values) {\n    var data;\n\n    if (key) {\n      if (isUndefined(values)) {\n        data = getLocale(key);\n      } else {\n        data = defineLocale(key, values);\n      }\n\n      if (data) {\n        // moment.duration._locale = moment._locale = data;\n        globalLocale = data;\n      } else {\n        if (typeof console !== 'undefined' && console.warn) {\n          //warn user if arguments are passed but the locale could not be set\n          console.warn('Locale ' + key + ' not found. Did you forget to load it?');\n        }\n      }\n    }\n\n    return globalLocale._abbr;\n  }\n\n  function defineLocale(name, config) {\n    if (config !== null) {\n      var locale,\n          parentConfig = baseConfig;\n      config.abbr = name;\n\n      if (locales[name] != null) {\n        deprecateSimple('defineLocaleOverride', 'use moment.updateLocale(localeName, config) to change ' + 'an existing locale. moment.defineLocale(localeName, ' + 'config) should only be used for creating a new locale ' + 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.');\n        parentConfig = locales[name]._config;\n      } else if (config.parentLocale != null) {\n        if (locales[config.parentLocale] != null) {\n          parentConfig = locales[config.parentLocale]._config;\n        } else {\n          locale = loadLocale(config.parentLocale);\n\n          if (locale != null) {\n            parentConfig = locale._config;\n          } else {\n            if (!localeFamilies[config.parentLocale]) {\n              localeFamilies[config.parentLocale] = [];\n            }\n\n            localeFamilies[config.parentLocale].push({\n              name: name,\n              config: config\n            });\n            return null;\n          }\n        }\n      }\n\n      locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n      if (localeFamilies[name]) {\n        localeFamilies[name].forEach(function (x) {\n          defineLocale(x.name, x.config);\n        });\n      } // backwards compat for now: also set the locale\n      // make sure we set the locale AFTER all child locales have been\n      // created, so we won't end up with the child locale set.\n\n\n      getSetGlobalLocale(name);\n      return locales[name];\n    } else {\n      // useful for testing\n      delete locales[name];\n      return null;\n    }\n  }\n\n  function updateLocale(name, config) {\n    if (config != null) {\n      var locale,\n          tmpLocale,\n          parentConfig = baseConfig; // MERGE\n\n      tmpLocale = loadLocale(name);\n\n      if (tmpLocale != null) {\n        parentConfig = tmpLocale._config;\n      }\n\n      config = mergeConfigs(parentConfig, config);\n      locale = new Locale(config);\n      locale.parentLocale = locales[name];\n      locales[name] = locale; // backwards compat for now: also set the locale\n\n      getSetGlobalLocale(name);\n    } else {\n      // pass null for config to unupdate, useful for tests\n      if (locales[name] != null) {\n        if (locales[name].parentLocale != null) {\n          locales[name] = locales[name].parentLocale;\n        } else if (locales[name] != null) {\n          delete locales[name];\n        }\n      }\n    }\n\n    return locales[name];\n  } // returns locale data\n\n\n  function getLocale(key) {\n    var locale;\n\n    if (key && key._locale && key._locale._abbr) {\n      key = key._locale._abbr;\n    }\n\n    if (!key) {\n      return globalLocale;\n    }\n\n    if (!isArray(key)) {\n      //short-circuit everything else\n      locale = loadLocale(key);\n\n      if (locale) {\n        return locale;\n      }\n\n      key = [key];\n    }\n\n    return chooseLocale(key);\n  }\n\n  function listLocales() {\n    return keys(locales);\n  }\n\n  function checkOverflow(m) {\n    var overflow;\n    var a = m._a;\n\n    if (a && getParsingFlags(m).overflow === -2) {\n      overflow = a[MONTH] < 0 || a[MONTH] > 11 ? MONTH : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH]) ? DATE : a[HOUR] < 0 || a[HOUR] > 24 || a[HOUR] === 24 && (a[MINUTE] !== 0 || a[SECOND] !== 0 || a[MILLISECOND] !== 0) ? HOUR : a[MINUTE] < 0 || a[MINUTE] > 59 ? MINUTE : a[SECOND] < 0 || a[SECOND] > 59 ? SECOND : a[MILLISECOND] < 0 || a[MILLISECOND] > 999 ? MILLISECOND : -1;\n\n      if (getParsingFlags(m)._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) {\n        overflow = DATE;\n      }\n\n      if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n        overflow = WEEK;\n      }\n\n      if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n        overflow = WEEKDAY;\n      }\n\n      getParsingFlags(m).overflow = overflow;\n    }\n\n    return m;\n  } // Pick the first defined of two or three arguments.\n\n\n  function defaults(a, b, c) {\n    if (a != null) {\n      return a;\n    }\n\n    if (b != null) {\n      return b;\n    }\n\n    return c;\n  }\n\n  function currentDateArray(config) {\n    // hooks is actually the exported moment object\n    var nowValue = new Date(hooks.now());\n\n    if (config._useUTC) {\n      return [nowValue.getUTCFullYear(), nowValue.getUTCMonth(), nowValue.getUTCDate()];\n    }\n\n    return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n  } // convert an array to a date.\n  // the array should mirror the parameters below\n  // note: all values past the year are optional and will default to the lowest possible value.\n  // [year, month, day , hour, minute, second, millisecond]\n\n\n  function configFromArray(config) {\n    var i,\n        date,\n        input = [],\n        currentDate,\n        expectedWeekday,\n        yearToUse;\n\n    if (config._d) {\n      return;\n    }\n\n    currentDate = currentDateArray(config); //compute day of the year from weeks and weekdays\n\n    if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n      dayOfYearFromWeekInfo(config);\n    } //if the day of the year is set, figure out what it is\n\n\n    if (config._dayOfYear != null) {\n      yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n      if (config._dayOfYear > daysInYear(yearToUse) || config._dayOfYear === 0) {\n        getParsingFlags(config)._overflowDayOfYear = true;\n      }\n\n      date = createUTCDate(yearToUse, 0, config._dayOfYear);\n      config._a[MONTH] = date.getUTCMonth();\n      config._a[DATE] = date.getUTCDate();\n    } // Default to current date.\n    // * if no year, month, day of month are given, default to today\n    // * if day of month is given, default month and year\n    // * if month is given, default only year\n    // * if year is given, don't default anything\n\n\n    for (i = 0; i < 3 && config._a[i] == null; ++i) {\n      config._a[i] = input[i] = currentDate[i];\n    } // Zero out whatever was not defaulted, including time\n\n\n    for (; i < 7; i++) {\n      config._a[i] = input[i] = config._a[i] == null ? i === 2 ? 1 : 0 : config._a[i];\n    } // Check for 24:00:00.000\n\n\n    if (config._a[HOUR] === 24 && config._a[MINUTE] === 0 && config._a[SECOND] === 0 && config._a[MILLISECOND] === 0) {\n      config._nextDay = true;\n      config._a[HOUR] = 0;\n    }\n\n    config._d = (config._useUTC ? createUTCDate : createDate).apply(null, input);\n    expectedWeekday = config._useUTC ? config._d.getUTCDay() : config._d.getDay(); // Apply timezone offset from input. The actual utcOffset can be changed\n    // with parseZone.\n\n    if (config._tzm != null) {\n      config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n    }\n\n    if (config._nextDay) {\n      config._a[HOUR] = 24;\n    } // check for mismatching day of week\n\n\n    if (config._w && typeof config._w.d !== 'undefined' && config._w.d !== expectedWeekday) {\n      getParsingFlags(config).weekdayMismatch = true;\n    }\n  }\n\n  function dayOfYearFromWeekInfo(config) {\n    var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow;\n    w = config._w;\n\n    if (w.GG != null || w.W != null || w.E != null) {\n      dow = 1;\n      doy = 4; // TODO: We need to take the current isoWeekYear, but that depends on\n      // how we interpret now (local, utc, fixed offset). So create\n      // a now version of current config (take local/utc/offset flags, and\n      // create now).\n\n      weekYear = defaults(w.GG, config._a[YEAR], weekOfYear(createLocal(), 1, 4).year);\n      week = defaults(w.W, 1);\n      weekday = defaults(w.E, 1);\n\n      if (weekday < 1 || weekday > 7) {\n        weekdayOverflow = true;\n      }\n    } else {\n      dow = config._locale._week.dow;\n      doy = config._locale._week.doy;\n      var curWeek = weekOfYear(createLocal(), dow, doy);\n      weekYear = defaults(w.gg, config._a[YEAR], curWeek.year); // Default to current week.\n\n      week = defaults(w.w, curWeek.week);\n\n      if (w.d != null) {\n        // weekday -- low day numbers are considered next week\n        weekday = w.d;\n\n        if (weekday < 0 || weekday > 6) {\n          weekdayOverflow = true;\n        }\n      } else if (w.e != null) {\n        // local weekday -- counting starts from beginning of week\n        weekday = w.e + dow;\n\n        if (w.e < 0 || w.e > 6) {\n          weekdayOverflow = true;\n        }\n      } else {\n        // default to beginning of week\n        weekday = dow;\n      }\n    }\n\n    if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n      getParsingFlags(config)._overflowWeeks = true;\n    } else if (weekdayOverflow != null) {\n      getParsingFlags(config)._overflowWeekday = true;\n    } else {\n      temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n      config._a[YEAR] = temp.year;\n      config._dayOfYear = temp.dayOfYear;\n    }\n  } // iso 8601 regex\n  // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n\n\n  var extendedIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/;\n  var basicIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/;\n  var tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/;\n  var isoDates = [['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/], ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/], ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/], ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false], ['YYYY-DDD', /\\d{4}-\\d{3}/], ['YYYY-MM', /\\d{4}-\\d\\d/, false], ['YYYYYYMMDD', /[+-]\\d{10}/], ['YYYYMMDD', /\\d{8}/], // YYYYMM is NOT allowed by the standard\n  ['GGGG[W]WWE', /\\d{4}W\\d{3}/], ['GGGG[W]WW', /\\d{4}W\\d{2}/, false], ['YYYYDDD', /\\d{7}/]]; // iso time formats and regexes\n\n  var isoTimes = [['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/], ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/], ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/], ['HH:mm', /\\d\\d:\\d\\d/], ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/], ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/], ['HHmmss', /\\d\\d\\d\\d\\d\\d/], ['HHmm', /\\d\\d\\d\\d/], ['HH', /\\d\\d/]];\n  var aspNetJsonRegex = /^\\/?Date\\((\\-?\\d+)/i; // date from iso format\n\n  function configFromISO(config) {\n    var i,\n        l,\n        string = config._i,\n        match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n        allowTime,\n        dateFormat,\n        timeFormat,\n        tzFormat;\n\n    if (match) {\n      getParsingFlags(config).iso = true;\n\n      for (i = 0, l = isoDates.length; i < l; i++) {\n        if (isoDates[i][1].exec(match[1])) {\n          dateFormat = isoDates[i][0];\n          allowTime = isoDates[i][2] !== false;\n          break;\n        }\n      }\n\n      if (dateFormat == null) {\n        config._isValid = false;\n        return;\n      }\n\n      if (match[3]) {\n        for (i = 0, l = isoTimes.length; i < l; i++) {\n          if (isoTimes[i][1].exec(match[3])) {\n            // match[2] should be 'T' or space\n            timeFormat = (match[2] || ' ') + isoTimes[i][0];\n            break;\n          }\n        }\n\n        if (timeFormat == null) {\n          config._isValid = false;\n          return;\n        }\n      }\n\n      if (!allowTime && timeFormat != null) {\n        config._isValid = false;\n        return;\n      }\n\n      if (match[4]) {\n        if (tzRegex.exec(match[4])) {\n          tzFormat = 'Z';\n        } else {\n          config._isValid = false;\n          return;\n        }\n      }\n\n      config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n      configFromStringAndFormat(config);\n    } else {\n      config._isValid = false;\n    }\n  } // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n\n\n  var rfc2822 = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/;\n\n  function extractFromRFC2822Strings(yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr) {\n    var result = [untruncateYear(yearStr), defaultLocaleMonthsShort.indexOf(monthStr), parseInt(dayStr, 10), parseInt(hourStr, 10), parseInt(minuteStr, 10)];\n\n    if (secondStr) {\n      result.push(parseInt(secondStr, 10));\n    }\n\n    return result;\n  }\n\n  function untruncateYear(yearStr) {\n    var year = parseInt(yearStr, 10);\n\n    if (year <= 49) {\n      return 2000 + year;\n    } else if (year <= 999) {\n      return 1900 + year;\n    }\n\n    return year;\n  }\n\n  function preprocessRFC2822(s) {\n    // Remove comments and folding whitespace and replace multiple-spaces with a single space\n    return s.replace(/\\([^)]*\\)|[\\n\\t]/g, ' ').replace(/(\\s\\s+)/g, ' ').replace(/^\\s\\s*/, '').replace(/\\s\\s*$/, '');\n  }\n\n  function checkWeekday(weekdayStr, parsedInput, config) {\n    if (weekdayStr) {\n      // TODO: Replace the vanilla JS Date object with an indepentent day-of-week check.\n      var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n          weekdayActual = new Date(parsedInput[0], parsedInput[1], parsedInput[2]).getDay();\n\n      if (weekdayProvided !== weekdayActual) {\n        getParsingFlags(config).weekdayMismatch = true;\n        config._isValid = false;\n        return false;\n      }\n    }\n\n    return true;\n  }\n\n  var obsOffsets = {\n    UT: 0,\n    GMT: 0,\n    EDT: -4 * 60,\n    EST: -5 * 60,\n    CDT: -5 * 60,\n    CST: -6 * 60,\n    MDT: -6 * 60,\n    MST: -7 * 60,\n    PDT: -7 * 60,\n    PST: -8 * 60\n  };\n\n  function calculateOffset(obsOffset, militaryOffset, numOffset) {\n    if (obsOffset) {\n      return obsOffsets[obsOffset];\n    } else if (militaryOffset) {\n      // the only allowed military tz is Z\n      return 0;\n    } else {\n      var hm = parseInt(numOffset, 10);\n      var m = hm % 100,\n          h = (hm - m) / 100;\n      return h * 60 + m;\n    }\n  } // date and time from ref 2822 format\n\n\n  function configFromRFC2822(config) {\n    var match = rfc2822.exec(preprocessRFC2822(config._i));\n\n    if (match) {\n      var parsedArray = extractFromRFC2822Strings(match[4], match[3], match[2], match[5], match[6], match[7]);\n\n      if (!checkWeekday(match[1], parsedArray, config)) {\n        return;\n      }\n\n      config._a = parsedArray;\n      config._tzm = calculateOffset(match[8], match[9], match[10]);\n      config._d = createUTCDate.apply(null, config._a);\n\n      config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n      getParsingFlags(config).rfc2822 = true;\n    } else {\n      config._isValid = false;\n    }\n  } // date from iso format or fallback\n\n\n  function configFromString(config) {\n    var matched = aspNetJsonRegex.exec(config._i);\n\n    if (matched !== null) {\n      config._d = new Date(+matched[1]);\n      return;\n    }\n\n    configFromISO(config);\n\n    if (config._isValid === false) {\n      delete config._isValid;\n    } else {\n      return;\n    }\n\n    configFromRFC2822(config);\n\n    if (config._isValid === false) {\n      delete config._isValid;\n    } else {\n      return;\n    } // Final attempt, use Input Fallback\n\n\n    hooks.createFromInputFallback(config);\n  }\n\n  hooks.createFromInputFallback = deprecate('value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' + 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' + 'discouraged and will be removed in an upcoming major release. Please refer to ' + 'http://momentjs.com/guides/#/warnings/js-date/ for more info.', function (config) {\n    config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n  }); // constant that refers to the ISO standard\n\n  hooks.ISO_8601 = function () {}; // constant that refers to the RFC 2822 form\n\n\n  hooks.RFC_2822 = function () {}; // date from string and format string\n\n\n  function configFromStringAndFormat(config) {\n    // TODO: Move this to another part of the creation flow to prevent circular deps\n    if (config._f === hooks.ISO_8601) {\n      configFromISO(config);\n      return;\n    }\n\n    if (config._f === hooks.RFC_2822) {\n      configFromRFC2822(config);\n      return;\n    }\n\n    config._a = [];\n    getParsingFlags(config).empty = true; // This array is used to make a Date, either with `new Date` or `Date.UTC`\n\n    var string = '' + config._i,\n        i,\n        parsedInput,\n        tokens,\n        token,\n        skipped,\n        stringLength = string.length,\n        totalParsedInputLength = 0;\n    tokens = expandFormat(config._f, config._locale).match(formattingTokens) || [];\n\n    for (i = 0; i < tokens.length; i++) {\n      token = tokens[i];\n      parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0]; // console.log('token', token, 'parsedInput', parsedInput,\n      //         'regex', getParseRegexForToken(token, config));\n\n      if (parsedInput) {\n        skipped = string.substr(0, string.indexOf(parsedInput));\n\n        if (skipped.length > 0) {\n          getParsingFlags(config).unusedInput.push(skipped);\n        }\n\n        string = string.slice(string.indexOf(parsedInput) + parsedInput.length);\n        totalParsedInputLength += parsedInput.length;\n      } // don't parse if it's not a known token\n\n\n      if (formatTokenFunctions[token]) {\n        if (parsedInput) {\n          getParsingFlags(config).empty = false;\n        } else {\n          getParsingFlags(config).unusedTokens.push(token);\n        }\n\n        addTimeToArrayFromToken(token, parsedInput, config);\n      } else if (config._strict && !parsedInput) {\n        getParsingFlags(config).unusedTokens.push(token);\n      }\n    } // add remaining unparsed input length to the string\n\n\n    getParsingFlags(config).charsLeftOver = stringLength - totalParsedInputLength;\n\n    if (string.length > 0) {\n      getParsingFlags(config).unusedInput.push(string);\n    } // clear _12h flag if hour is <= 12\n\n\n    if (config._a[HOUR] <= 12 && getParsingFlags(config).bigHour === true && config._a[HOUR] > 0) {\n      getParsingFlags(config).bigHour = undefined;\n    }\n\n    getParsingFlags(config).parsedDateParts = config._a.slice(0);\n    getParsingFlags(config).meridiem = config._meridiem; // handle meridiem\n\n    config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], config._meridiem);\n    configFromArray(config);\n    checkOverflow(config);\n  }\n\n  function meridiemFixWrap(locale, hour, meridiem) {\n    var isPm;\n\n    if (meridiem == null) {\n      // nothing to do\n      return hour;\n    }\n\n    if (locale.meridiemHour != null) {\n      return locale.meridiemHour(hour, meridiem);\n    } else if (locale.isPM != null) {\n      // Fallback\n      isPm = locale.isPM(meridiem);\n\n      if (isPm && hour < 12) {\n        hour += 12;\n      }\n\n      if (!isPm && hour === 12) {\n        hour = 0;\n      }\n\n      return hour;\n    } else {\n      // this is not supposed to happen\n      return hour;\n    }\n  } // date from string and array of format strings\n\n\n  function configFromStringAndArray(config) {\n    var tempConfig, bestMoment, scoreToBeat, i, currentScore;\n\n    if (config._f.length === 0) {\n      getParsingFlags(config).invalidFormat = true;\n      config._d = new Date(NaN);\n      return;\n    }\n\n    for (i = 0; i < config._f.length; i++) {\n      currentScore = 0;\n      tempConfig = copyConfig({}, config);\n\n      if (config._useUTC != null) {\n        tempConfig._useUTC = config._useUTC;\n      }\n\n      tempConfig._f = config._f[i];\n      configFromStringAndFormat(tempConfig);\n\n      if (!isValid(tempConfig)) {\n        continue;\n      } // if there is any input that was not parsed add a penalty for that format\n\n\n      currentScore += getParsingFlags(tempConfig).charsLeftOver; //or tokens\n\n      currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n      getParsingFlags(tempConfig).score = currentScore;\n\n      if (scoreToBeat == null || currentScore < scoreToBeat) {\n        scoreToBeat = currentScore;\n        bestMoment = tempConfig;\n      }\n    }\n\n    extend(config, bestMoment || tempConfig);\n  }\n\n  function configFromObject(config) {\n    if (config._d) {\n      return;\n    }\n\n    var i = normalizeObjectUnits(config._i);\n    config._a = map([i.year, i.month, i.day || i.date, i.hour, i.minute, i.second, i.millisecond], function (obj) {\n      return obj && parseInt(obj, 10);\n    });\n    configFromArray(config);\n  }\n\n  function createFromConfig(config) {\n    var res = new Moment(checkOverflow(prepareConfig(config)));\n\n    if (res._nextDay) {\n      // Adding is smart enough around DST\n      res.add(1, 'd');\n      res._nextDay = undefined;\n    }\n\n    return res;\n  }\n\n  function prepareConfig(config) {\n    var input = config._i,\n        format = config._f;\n    config._locale = config._locale || getLocale(config._l);\n\n    if (input === null || format === undefined && input === '') {\n      return createInvalid({\n        nullInput: true\n      });\n    }\n\n    if (typeof input === 'string') {\n      config._i = input = config._locale.preparse(input);\n    }\n\n    if (isMoment(input)) {\n      return new Moment(checkOverflow(input));\n    } else if (isDate(input)) {\n      config._d = input;\n    } else if (isArray(format)) {\n      configFromStringAndArray(config);\n    } else if (format) {\n      configFromStringAndFormat(config);\n    } else {\n      configFromInput(config);\n    }\n\n    if (!isValid(config)) {\n      config._d = null;\n    }\n\n    return config;\n  }\n\n  function configFromInput(config) {\n    var input = config._i;\n\n    if (isUndefined(input)) {\n      config._d = new Date(hooks.now());\n    } else if (isDate(input)) {\n      config._d = new Date(input.valueOf());\n    } else if (typeof input === 'string') {\n      configFromString(config);\n    } else if (isArray(input)) {\n      config._a = map(input.slice(0), function (obj) {\n        return parseInt(obj, 10);\n      });\n      configFromArray(config);\n    } else if (isObject(input)) {\n      configFromObject(config);\n    } else if (isNumber(input)) {\n      // from milliseconds\n      config._d = new Date(input);\n    } else {\n      hooks.createFromInputFallback(config);\n    }\n  }\n\n  function createLocalOrUTC(input, format, locale, strict, isUTC) {\n    var c = {};\n\n    if (locale === true || locale === false) {\n      strict = locale;\n      locale = undefined;\n    }\n\n    if (isObject(input) && isObjectEmpty(input) || isArray(input) && input.length === 0) {\n      input = undefined;\n    } // object construction must be done this way.\n    // https://github.com/moment/moment/issues/1423\n\n\n    c._isAMomentObject = true;\n    c._useUTC = c._isUTC = isUTC;\n    c._l = locale;\n    c._i = input;\n    c._f = format;\n    c._strict = strict;\n    return createFromConfig(c);\n  }\n\n  function createLocal(input, format, locale, strict) {\n    return createLocalOrUTC(input, format, locale, strict, false);\n  }\n\n  var prototypeMin = deprecate('moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/', function () {\n    var other = createLocal.apply(null, arguments);\n\n    if (this.isValid() && other.isValid()) {\n      return other < this ? this : other;\n    } else {\n      return createInvalid();\n    }\n  });\n  var prototypeMax = deprecate('moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/', function () {\n    var other = createLocal.apply(null, arguments);\n\n    if (this.isValid() && other.isValid()) {\n      return other > this ? this : other;\n    } else {\n      return createInvalid();\n    }\n  }); // Pick a moment m from moments so that m[fn](other) is true for all\n  // other. This relies on the function fn to be transitive.\n  //\n  // moments should either be an array of moment objects or an array, whose\n  // first element is an array of moment objects.\n\n  function pickBy(fn, moments) {\n    var res, i;\n\n    if (moments.length === 1 && isArray(moments[0])) {\n      moments = moments[0];\n    }\n\n    if (!moments.length) {\n      return createLocal();\n    }\n\n    res = moments[0];\n\n    for (i = 1; i < moments.length; ++i) {\n      if (!moments[i].isValid() || moments[i][fn](res)) {\n        res = moments[i];\n      }\n    }\n\n    return res;\n  } // TODO: Use [].sort instead?\n\n\n  function min() {\n    var args = [].slice.call(arguments, 0);\n    return pickBy('isBefore', args);\n  }\n\n  function max() {\n    var args = [].slice.call(arguments, 0);\n    return pickBy('isAfter', args);\n  }\n\n  var now = function now() {\n    return Date.now ? Date.now() : +new Date();\n  };\n\n  var ordering = ['year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second', 'millisecond'];\n\n  function isDurationValid(m) {\n    for (var key in m) {\n      if (!(indexOf.call(ordering, key) !== -1 && (m[key] == null || !isNaN(m[key])))) {\n        return false;\n      }\n    }\n\n    var unitHasDecimal = false;\n\n    for (var i = 0; i < ordering.length; ++i) {\n      if (m[ordering[i]]) {\n        if (unitHasDecimal) {\n          return false; // only allow non-integers for smallest unit\n        }\n\n        if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n          unitHasDecimal = true;\n        }\n      }\n    }\n\n    return true;\n  }\n\n  function isValid$1() {\n    return this._isValid;\n  }\n\n  function createInvalid$1() {\n    return createDuration(NaN);\n  }\n\n  function Duration(duration) {\n    var normalizedInput = normalizeObjectUnits(duration),\n        years = normalizedInput.year || 0,\n        quarters = normalizedInput.quarter || 0,\n        months = normalizedInput.month || 0,\n        weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n        days = normalizedInput.day || 0,\n        hours = normalizedInput.hour || 0,\n        minutes = normalizedInput.minute || 0,\n        seconds = normalizedInput.second || 0,\n        milliseconds = normalizedInput.millisecond || 0;\n    this._isValid = isDurationValid(normalizedInput); // representation for dateAddRemove\n\n    this._milliseconds = +milliseconds + seconds * 1e3 + // 1000\n    minutes * 6e4 + // 1000 * 60\n    hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n    // Because of dateAddRemove treats 24 hours as different from a\n    // day when working around DST, we need to store them separately\n\n    this._days = +days + weeks * 7; // It is impossible to translate months into days without knowing\n    // which months you are are talking about, so we have to store\n    // it separately.\n\n    this._months = +months + quarters * 3 + years * 12;\n    this._data = {};\n    this._locale = getLocale();\n\n    this._bubble();\n  }\n\n  function isDuration(obj) {\n    return obj instanceof Duration;\n  }\n\n  function absRound(number) {\n    if (number < 0) {\n      return Math.round(-1 * number) * -1;\n    } else {\n      return Math.round(number);\n    }\n  } // FORMATTING\n\n\n  function offset(token, separator) {\n    addFormatToken(token, 0, 0, function () {\n      var offset = this.utcOffset();\n      var sign = '+';\n\n      if (offset < 0) {\n        offset = -offset;\n        sign = '-';\n      }\n\n      return sign + zeroFill(~~(offset / 60), 2) + separator + zeroFill(~~offset % 60, 2);\n    });\n  }\n\n  offset('Z', ':');\n  offset('ZZ', ''); // PARSING\n\n  addRegexToken('Z', matchShortOffset);\n  addRegexToken('ZZ', matchShortOffset);\n  addParseToken(['Z', 'ZZ'], function (input, array, config) {\n    config._useUTC = true;\n    config._tzm = offsetFromString(matchShortOffset, input);\n  }); // HELPERS\n  // timezone chunker\n  // '+10:00' > ['10',  '00']\n  // '-1530'  > ['-15', '30']\n\n  var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n  function offsetFromString(matcher, string) {\n    var matches = (string || '').match(matcher);\n\n    if (matches === null) {\n      return null;\n    }\n\n    var chunk = matches[matches.length - 1] || [];\n    var parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n    var minutes = +(parts[1] * 60) + toInt(parts[2]);\n    return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;\n  } // Return a moment from input, that is local/utc/zone equivalent to model.\n\n\n  function cloneWithOffset(input, model) {\n    var res, diff;\n\n    if (model._isUTC) {\n      res = model.clone();\n      diff = (isMoment(input) || isDate(input) ? input.valueOf() : createLocal(input).valueOf()) - res.valueOf(); // Use low-level api, because this fn is low-level api.\n\n      res._d.setTime(res._d.valueOf() + diff);\n\n      hooks.updateOffset(res, false);\n      return res;\n    } else {\n      return createLocal(input).local();\n    }\n  }\n\n  function getDateOffset(m) {\n    // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n    // https://github.com/moment/moment/pull/1871\n    return -Math.round(m._d.getTimezoneOffset() / 15) * 15;\n  } // HOOKS\n  // This function will be called whenever a moment is mutated.\n  // It is intended to keep the offset in sync with the timezone.\n\n\n  hooks.updateOffset = function () {}; // MOMENTS\n  // keepLocalTime = true means only change the timezone, without\n  // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n  // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n  // +0200, so we adjust the time as needed, to be valid.\n  //\n  // Keeping the time actually adds/subtracts (one hour)\n  // from the actual represented time. That is why we call updateOffset\n  // a second time. In case it wants us to change the offset again\n  // _changeInProgress == true case, then we have to adjust, because\n  // there is no such time in the given timezone.\n\n\n  function getSetOffset(input, keepLocalTime, keepMinutes) {\n    var offset = this._offset || 0,\n        localAdjust;\n\n    if (!this.isValid()) {\n      return input != null ? this : NaN;\n    }\n\n    if (input != null) {\n      if (typeof input === 'string') {\n        input = offsetFromString(matchShortOffset, input);\n\n        if (input === null) {\n          return this;\n        }\n      } else if (Math.abs(input) < 16 && !keepMinutes) {\n        input = input * 60;\n      }\n\n      if (!this._isUTC && keepLocalTime) {\n        localAdjust = getDateOffset(this);\n      }\n\n      this._offset = input;\n      this._isUTC = true;\n\n      if (localAdjust != null) {\n        this.add(localAdjust, 'm');\n      }\n\n      if (offset !== input) {\n        if (!keepLocalTime || this._changeInProgress) {\n          addSubtract(this, createDuration(input - offset, 'm'), 1, false);\n        } else if (!this._changeInProgress) {\n          this._changeInProgress = true;\n          hooks.updateOffset(this, true);\n          this._changeInProgress = null;\n        }\n      }\n\n      return this;\n    } else {\n      return this._isUTC ? offset : getDateOffset(this);\n    }\n  }\n\n  function getSetZone(input, keepLocalTime) {\n    if (input != null) {\n      if (typeof input !== 'string') {\n        input = -input;\n      }\n\n      this.utcOffset(input, keepLocalTime);\n      return this;\n    } else {\n      return -this.utcOffset();\n    }\n  }\n\n  function setOffsetToUTC(keepLocalTime) {\n    return this.utcOffset(0, keepLocalTime);\n  }\n\n  function setOffsetToLocal(keepLocalTime) {\n    if (this._isUTC) {\n      this.utcOffset(0, keepLocalTime);\n      this._isUTC = false;\n\n      if (keepLocalTime) {\n        this.subtract(getDateOffset(this), 'm');\n      }\n    }\n\n    return this;\n  }\n\n  function setOffsetToParsedOffset() {\n    if (this._tzm != null) {\n      this.utcOffset(this._tzm, false, true);\n    } else if (typeof this._i === 'string') {\n      var tZone = offsetFromString(matchOffset, this._i);\n\n      if (tZone != null) {\n        this.utcOffset(tZone);\n      } else {\n        this.utcOffset(0, true);\n      }\n    }\n\n    return this;\n  }\n\n  function hasAlignedHourOffset(input) {\n    if (!this.isValid()) {\n      return false;\n    }\n\n    input = input ? createLocal(input).utcOffset() : 0;\n    return (this.utcOffset() - input) % 60 === 0;\n  }\n\n  function isDaylightSavingTime() {\n    return this.utcOffset() > this.clone().month(0).utcOffset() || this.utcOffset() > this.clone().month(5).utcOffset();\n  }\n\n  function isDaylightSavingTimeShifted() {\n    if (!isUndefined(this._isDSTShifted)) {\n      return this._isDSTShifted;\n    }\n\n    var c = {};\n    copyConfig(c, this);\n    c = prepareConfig(c);\n\n    if (c._a) {\n      var other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n      this._isDSTShifted = this.isValid() && compareArrays(c._a, other.toArray()) > 0;\n    } else {\n      this._isDSTShifted = false;\n    }\n\n    return this._isDSTShifted;\n  }\n\n  function isLocal() {\n    return this.isValid() ? !this._isUTC : false;\n  }\n\n  function isUtcOffset() {\n    return this.isValid() ? this._isUTC : false;\n  }\n\n  function isUtc() {\n    return this.isValid() ? this._isUTC && this._offset === 0 : false;\n  } // ASP.NET json date format regex\n\n\n  var aspNetRegex = /^(\\-|\\+)?(?:(\\d*)[. ])?(\\d+)\\:(\\d+)(?:\\:(\\d+)(\\.\\d*)?)?$/; // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n  // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n  // and further modified to allow for strings containing both week and day\n\n  var isoRegex = /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n  function createDuration(input, key) {\n    var duration = input,\n        // matching against regexp is expensive, do it on demand\n    match = null,\n        sign,\n        ret,\n        diffRes;\n\n    if (isDuration(input)) {\n      duration = {\n        ms: input._milliseconds,\n        d: input._days,\n        M: input._months\n      };\n    } else if (isNumber(input)) {\n      duration = {};\n\n      if (key) {\n        duration[key] = input;\n      } else {\n        duration.milliseconds = input;\n      }\n    } else if (!!(match = aspNetRegex.exec(input))) {\n      sign = match[1] === '-' ? -1 : 1;\n      duration = {\n        y: 0,\n        d: toInt(match[DATE]) * sign,\n        h: toInt(match[HOUR]) * sign,\n        m: toInt(match[MINUTE]) * sign,\n        s: toInt(match[SECOND]) * sign,\n        ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign // the millisecond decimal point is included in the match\n\n      };\n    } else if (!!(match = isoRegex.exec(input))) {\n      sign = match[1] === '-' ? -1 : 1;\n      duration = {\n        y: parseIso(match[2], sign),\n        M: parseIso(match[3], sign),\n        w: parseIso(match[4], sign),\n        d: parseIso(match[5], sign),\n        h: parseIso(match[6], sign),\n        m: parseIso(match[7], sign),\n        s: parseIso(match[8], sign)\n      };\n    } else if (duration == null) {\n      // checks for null or undefined\n      duration = {};\n    } else if (typeof duration === 'object' && ('from' in duration || 'to' in duration)) {\n      diffRes = momentsDifference(createLocal(duration.from), createLocal(duration.to));\n      duration = {};\n      duration.ms = diffRes.milliseconds;\n      duration.M = diffRes.months;\n    }\n\n    ret = new Duration(duration);\n\n    if (isDuration(input) && hasOwnProp(input, '_locale')) {\n      ret._locale = input._locale;\n    }\n\n    return ret;\n  }\n\n  createDuration.fn = Duration.prototype;\n  createDuration.invalid = createInvalid$1;\n\n  function parseIso(inp, sign) {\n    // We'd normally use ~~inp for this, but unfortunately it also\n    // converts floats to ints.\n    // inp may be undefined, so careful calling replace on it.\n    var res = inp && parseFloat(inp.replace(',', '.')); // apply sign while we're at it\n\n    return (isNaN(res) ? 0 : res) * sign;\n  }\n\n  function positiveMomentsDifference(base, other) {\n    var res = {};\n    res.months = other.month() - base.month() + (other.year() - base.year()) * 12;\n\n    if (base.clone().add(res.months, 'M').isAfter(other)) {\n      --res.months;\n    }\n\n    res.milliseconds = +other - +base.clone().add(res.months, 'M');\n    return res;\n  }\n\n  function momentsDifference(base, other) {\n    var res;\n\n    if (!(base.isValid() && other.isValid())) {\n      return {\n        milliseconds: 0,\n        months: 0\n      };\n    }\n\n    other = cloneWithOffset(other, base);\n\n    if (base.isBefore(other)) {\n      res = positiveMomentsDifference(base, other);\n    } else {\n      res = positiveMomentsDifference(other, base);\n      res.milliseconds = -res.milliseconds;\n      res.months = -res.months;\n    }\n\n    return res;\n  } // TODO: remove 'name' arg after deprecation is removed\n\n\n  function createAdder(direction, name) {\n    return function (val, period) {\n      var dur, tmp; //invert the arguments, but complain about it\n\n      if (period !== null && !isNaN(+period)) {\n        deprecateSimple(name, 'moment().' + name + '(period, number) is deprecated. Please use moment().' + name + '(number, period). ' + 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.');\n        tmp = val;\n        val = period;\n        period = tmp;\n      }\n\n      val = typeof val === 'string' ? +val : val;\n      dur = createDuration(val, period);\n      addSubtract(this, dur, direction);\n      return this;\n    };\n  }\n\n  function addSubtract(mom, duration, isAdding, updateOffset) {\n    var milliseconds = duration._milliseconds,\n        days = absRound(duration._days),\n        months = absRound(duration._months);\n\n    if (!mom.isValid()) {\n      // No op\n      return;\n    }\n\n    updateOffset = updateOffset == null ? true : updateOffset;\n\n    if (months) {\n      setMonth(mom, get(mom, 'Month') + months * isAdding);\n    }\n\n    if (days) {\n      set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n    }\n\n    if (milliseconds) {\n      mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n    }\n\n    if (updateOffset) {\n      hooks.updateOffset(mom, days || months);\n    }\n  }\n\n  var add = createAdder(1, 'add');\n  var subtract = createAdder(-1, 'subtract');\n\n  function getCalendarFormat(myMoment, now) {\n    var diff = myMoment.diff(now, 'days', true);\n    return diff < -6 ? 'sameElse' : diff < -1 ? 'lastWeek' : diff < 0 ? 'lastDay' : diff < 1 ? 'sameDay' : diff < 2 ? 'nextDay' : diff < 7 ? 'nextWeek' : 'sameElse';\n  }\n\n  function calendar$1(time, formats) {\n    // We want to compare the start of today, vs this.\n    // Getting start-of-today depends on whether we're local/utc/offset or not.\n    var now = time || createLocal(),\n        sod = cloneWithOffset(now, this).startOf('day'),\n        format = hooks.calendarFormat(this, sod) || 'sameElse';\n    var output = formats && (isFunction(formats[format]) ? formats[format].call(this, now) : formats[format]);\n    return this.format(output || this.localeData().calendar(format, this, createLocal(now)));\n  }\n\n  function clone() {\n    return new Moment(this);\n  }\n\n  function isAfter(input, units) {\n    var localInput = isMoment(input) ? input : createLocal(input);\n\n    if (!(this.isValid() && localInput.isValid())) {\n      return false;\n    }\n\n    units = normalizeUnits(units) || 'millisecond';\n\n    if (units === 'millisecond') {\n      return this.valueOf() > localInput.valueOf();\n    } else {\n      return localInput.valueOf() < this.clone().startOf(units).valueOf();\n    }\n  }\n\n  function isBefore(input, units) {\n    var localInput = isMoment(input) ? input : createLocal(input);\n\n    if (!(this.isValid() && localInput.isValid())) {\n      return false;\n    }\n\n    units = normalizeUnits(units) || 'millisecond';\n\n    if (units === 'millisecond') {\n      return this.valueOf() < localInput.valueOf();\n    } else {\n      return this.clone().endOf(units).valueOf() < localInput.valueOf();\n    }\n  }\n\n  function isBetween(from, to, units, inclusivity) {\n    var localFrom = isMoment(from) ? from : createLocal(from),\n        localTo = isMoment(to) ? to : createLocal(to);\n\n    if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n      return false;\n    }\n\n    inclusivity = inclusivity || '()';\n    return (inclusivity[0] === '(' ? this.isAfter(localFrom, units) : !this.isBefore(localFrom, units)) && (inclusivity[1] === ')' ? this.isBefore(localTo, units) : !this.isAfter(localTo, units));\n  }\n\n  function isSame(input, units) {\n    var localInput = isMoment(input) ? input : createLocal(input),\n        inputMs;\n\n    if (!(this.isValid() && localInput.isValid())) {\n      return false;\n    }\n\n    units = normalizeUnits(units) || 'millisecond';\n\n    if (units === 'millisecond') {\n      return this.valueOf() === localInput.valueOf();\n    } else {\n      inputMs = localInput.valueOf();\n      return this.clone().startOf(units).valueOf() <= inputMs && inputMs <= this.clone().endOf(units).valueOf();\n    }\n  }\n\n  function isSameOrAfter(input, units) {\n    return this.isSame(input, units) || this.isAfter(input, units);\n  }\n\n  function isSameOrBefore(input, units) {\n    return this.isSame(input, units) || this.isBefore(input, units);\n  }\n\n  function diff(input, units, asFloat) {\n    var that, zoneDelta, output;\n\n    if (!this.isValid()) {\n      return NaN;\n    }\n\n    that = cloneWithOffset(input, this);\n\n    if (!that.isValid()) {\n      return NaN;\n    }\n\n    zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n    units = normalizeUnits(units);\n\n    switch (units) {\n      case 'year':\n        output = monthDiff(this, that) / 12;\n        break;\n\n      case 'month':\n        output = monthDiff(this, that);\n        break;\n\n      case 'quarter':\n        output = monthDiff(this, that) / 3;\n        break;\n\n      case 'second':\n        output = (this - that) / 1e3;\n        break;\n      // 1000\n\n      case 'minute':\n        output = (this - that) / 6e4;\n        break;\n      // 1000 * 60\n\n      case 'hour':\n        output = (this - that) / 36e5;\n        break;\n      // 1000 * 60 * 60\n\n      case 'day':\n        output = (this - that - zoneDelta) / 864e5;\n        break;\n      // 1000 * 60 * 60 * 24, negate dst\n\n      case 'week':\n        output = (this - that - zoneDelta) / 6048e5;\n        break;\n      // 1000 * 60 * 60 * 24 * 7, negate dst\n\n      default:\n        output = this - that;\n    }\n\n    return asFloat ? output : absFloor(output);\n  }\n\n  function monthDiff(a, b) {\n    // difference in months\n    var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),\n        // b is in (anchor - 1 month, anchor + 1 month)\n    anchor = a.clone().add(wholeMonthDiff, 'months'),\n        anchor2,\n        adjust;\n\n    if (b - anchor < 0) {\n      anchor2 = a.clone().add(wholeMonthDiff - 1, 'months'); // linear across the month\n\n      adjust = (b - anchor) / (anchor - anchor2);\n    } else {\n      anchor2 = a.clone().add(wholeMonthDiff + 1, 'months'); // linear across the month\n\n      adjust = (b - anchor) / (anchor2 - anchor);\n    } //check for negative zero, return zero if negative zero\n\n\n    return -(wholeMonthDiff + adjust) || 0;\n  }\n\n  hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n  hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\n  function toString() {\n    return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n  }\n\n  function toISOString(keepOffset) {\n    if (!this.isValid()) {\n      return null;\n    }\n\n    var utc = keepOffset !== true;\n    var m = utc ? this.clone().utc() : this;\n\n    if (m.year() < 0 || m.year() > 9999) {\n      return formatMoment(m, utc ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ');\n    }\n\n    if (isFunction(Date.prototype.toISOString)) {\n      // native implementation is ~50x faster, use it when we can\n      if (utc) {\n        return this.toDate().toISOString();\n      } else {\n        return new Date(this.valueOf() + this.utcOffset() * 60 * 1000).toISOString().replace('Z', formatMoment(m, 'Z'));\n      }\n    }\n\n    return formatMoment(m, utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ');\n  }\n  /**\n   * Return a human readable representation of a moment that can\n   * also be evaluated to get a new moment which is the same\n   *\n   * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n   */\n\n\n  function inspect() {\n    if (!this.isValid()) {\n      return 'moment.invalid(/* ' + this._i + ' */)';\n    }\n\n    var func = 'moment';\n    var zone = '';\n\n    if (!this.isLocal()) {\n      func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n      zone = 'Z';\n    }\n\n    var prefix = '[' + func + '(\"]';\n    var year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';\n    var datetime = '-MM-DD[T]HH:mm:ss.SSS';\n    var suffix = zone + '[\")]';\n    return this.format(prefix + year + datetime + suffix);\n  }\n\n  function format(inputString) {\n    if (!inputString) {\n      inputString = this.isUtc() ? hooks.defaultFormatUtc : hooks.defaultFormat;\n    }\n\n    var output = formatMoment(this, inputString);\n    return this.localeData().postformat(output);\n  }\n\n  function from(time, withoutSuffix) {\n    if (this.isValid() && (isMoment(time) && time.isValid() || createLocal(time).isValid())) {\n      return createDuration({\n        to: this,\n        from: time\n      }).locale(this.locale()).humanize(!withoutSuffix);\n    } else {\n      return this.localeData().invalidDate();\n    }\n  }\n\n  function fromNow(withoutSuffix) {\n    return this.from(createLocal(), withoutSuffix);\n  }\n\n  function to(time, withoutSuffix) {\n    if (this.isValid() && (isMoment(time) && time.isValid() || createLocal(time).isValid())) {\n      return createDuration({\n        from: this,\n        to: time\n      }).locale(this.locale()).humanize(!withoutSuffix);\n    } else {\n      return this.localeData().invalidDate();\n    }\n  }\n\n  function toNow(withoutSuffix) {\n    return this.to(createLocal(), withoutSuffix);\n  } // If passed a locale key, it will set the locale for this\n  // instance.  Otherwise, it will return the locale configuration\n  // variables for this instance.\n\n\n  function locale(key) {\n    var newLocaleData;\n\n    if (key === undefined) {\n      return this._locale._abbr;\n    } else {\n      newLocaleData = getLocale(key);\n\n      if (newLocaleData != null) {\n        this._locale = newLocaleData;\n      }\n\n      return this;\n    }\n  }\n\n  var lang = deprecate('moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.', function (key) {\n    if (key === undefined) {\n      return this.localeData();\n    } else {\n      return this.locale(key);\n    }\n  });\n\n  function localeData() {\n    return this._locale;\n  }\n\n  var MS_PER_SECOND = 1000;\n  var MS_PER_MINUTE = 60 * MS_PER_SECOND;\n  var MS_PER_HOUR = 60 * MS_PER_MINUTE;\n  var MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR; // actual modulo - handles negative numbers (for dates before 1970):\n\n  function mod$1(dividend, divisor) {\n    return (dividend % divisor + divisor) % divisor;\n  }\n\n  function localStartOfDate(y, m, d) {\n    // the date constructor remaps years 0-99 to 1900-1999\n    if (y < 100 && y >= 0) {\n      // preserve leap years using a full 400 year cycle, then reset\n      return new Date(y + 400, m, d) - MS_PER_400_YEARS;\n    } else {\n      return new Date(y, m, d).valueOf();\n    }\n  }\n\n  function utcStartOfDate(y, m, d) {\n    // Date.UTC remaps years 0-99 to 1900-1999\n    if (y < 100 && y >= 0) {\n      // preserve leap years using a full 400 year cycle, then reset\n      return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;\n    } else {\n      return Date.UTC(y, m, d);\n    }\n  }\n\n  function startOf(units) {\n    var time;\n    units = normalizeUnits(units);\n\n    if (units === undefined || units === 'millisecond' || !this.isValid()) {\n      return this;\n    }\n\n    var startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n    switch (units) {\n      case 'year':\n        time = startOfDate(this.year(), 0, 1);\n        break;\n\n      case 'quarter':\n        time = startOfDate(this.year(), this.month() - this.month() % 3, 1);\n        break;\n\n      case 'month':\n        time = startOfDate(this.year(), this.month(), 1);\n        break;\n\n      case 'week':\n        time = startOfDate(this.year(), this.month(), this.date() - this.weekday());\n        break;\n\n      case 'isoWeek':\n        time = startOfDate(this.year(), this.month(), this.date() - (this.isoWeekday() - 1));\n        break;\n\n      case 'day':\n      case 'date':\n        time = startOfDate(this.year(), this.month(), this.date());\n        break;\n\n      case 'hour':\n        time = this._d.valueOf();\n        time -= mod$1(time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE), MS_PER_HOUR);\n        break;\n\n      case 'minute':\n        time = this._d.valueOf();\n        time -= mod$1(time, MS_PER_MINUTE);\n        break;\n\n      case 'second':\n        time = this._d.valueOf();\n        time -= mod$1(time, MS_PER_SECOND);\n        break;\n    }\n\n    this._d.setTime(time);\n\n    hooks.updateOffset(this, true);\n    return this;\n  }\n\n  function endOf(units) {\n    var time;\n    units = normalizeUnits(units);\n\n    if (units === undefined || units === 'millisecond' || !this.isValid()) {\n      return this;\n    }\n\n    var startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n    switch (units) {\n      case 'year':\n        time = startOfDate(this.year() + 1, 0, 1) - 1;\n        break;\n\n      case 'quarter':\n        time = startOfDate(this.year(), this.month() - this.month() % 3 + 3, 1) - 1;\n        break;\n\n      case 'month':\n        time = startOfDate(this.year(), this.month() + 1, 1) - 1;\n        break;\n\n      case 'week':\n        time = startOfDate(this.year(), this.month(), this.date() - this.weekday() + 7) - 1;\n        break;\n\n      case 'isoWeek':\n        time = startOfDate(this.year(), this.month(), this.date() - (this.isoWeekday() - 1) + 7) - 1;\n        break;\n\n      case 'day':\n      case 'date':\n        time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;\n        break;\n\n      case 'hour':\n        time = this._d.valueOf();\n        time += MS_PER_HOUR - mod$1(time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE), MS_PER_HOUR) - 1;\n        break;\n\n      case 'minute':\n        time = this._d.valueOf();\n        time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;\n        break;\n\n      case 'second':\n        time = this._d.valueOf();\n        time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;\n        break;\n    }\n\n    this._d.setTime(time);\n\n    hooks.updateOffset(this, true);\n    return this;\n  }\n\n  function valueOf() {\n    return this._d.valueOf() - (this._offset || 0) * 60000;\n  }\n\n  function unix() {\n    return Math.floor(this.valueOf() / 1000);\n  }\n\n  function toDate() {\n    return new Date(this.valueOf());\n  }\n\n  function toArray() {\n    var m = this;\n    return [m.year(), m.month(), m.date(), m.hour(), m.minute(), m.second(), m.millisecond()];\n  }\n\n  function toObject() {\n    var m = this;\n    return {\n      years: m.year(),\n      months: m.month(),\n      date: m.date(),\n      hours: m.hours(),\n      minutes: m.minutes(),\n      seconds: m.seconds(),\n      milliseconds: m.milliseconds()\n    };\n  }\n\n  function toJSON() {\n    // new Date(NaN).toJSON() === null\n    return this.isValid() ? this.toISOString() : null;\n  }\n\n  function isValid$2() {\n    return isValid(this);\n  }\n\n  function parsingFlags() {\n    return extend({}, getParsingFlags(this));\n  }\n\n  function invalidAt() {\n    return getParsingFlags(this).overflow;\n  }\n\n  function creationData() {\n    return {\n      input: this._i,\n      format: this._f,\n      locale: this._locale,\n      isUTC: this._isUTC,\n      strict: this._strict\n    };\n  } // FORMATTING\n\n\n  addFormatToken(0, ['gg', 2], 0, function () {\n    return this.weekYear() % 100;\n  });\n  addFormatToken(0, ['GG', 2], 0, function () {\n    return this.isoWeekYear() % 100;\n  });\n\n  function addWeekYearFormatToken(token, getter) {\n    addFormatToken(0, [token, token.length], 0, getter);\n  }\n\n  addWeekYearFormatToken('gggg', 'weekYear');\n  addWeekYearFormatToken('ggggg', 'weekYear');\n  addWeekYearFormatToken('GGGG', 'isoWeekYear');\n  addWeekYearFormatToken('GGGGG', 'isoWeekYear'); // ALIASES\n\n  addUnitAlias('weekYear', 'gg');\n  addUnitAlias('isoWeekYear', 'GG'); // PRIORITY\n\n  addUnitPriority('weekYear', 1);\n  addUnitPriority('isoWeekYear', 1); // PARSING\n\n  addRegexToken('G', matchSigned);\n  addRegexToken('g', matchSigned);\n  addRegexToken('GG', match1to2, match2);\n  addRegexToken('gg', match1to2, match2);\n  addRegexToken('GGGG', match1to4, match4);\n  addRegexToken('gggg', match1to4, match4);\n  addRegexToken('GGGGG', match1to6, match6);\n  addRegexToken('ggggg', match1to6, match6);\n  addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (input, week, config, token) {\n    week[token.substr(0, 2)] = toInt(input);\n  });\n  addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n    week[token] = hooks.parseTwoDigitYear(input);\n  }); // MOMENTS\n\n  function getSetWeekYear(input) {\n    return getSetWeekYearHelper.call(this, input, this.week(), this.weekday(), this.localeData()._week.dow, this.localeData()._week.doy);\n  }\n\n  function getSetISOWeekYear(input) {\n    return getSetWeekYearHelper.call(this, input, this.isoWeek(), this.isoWeekday(), 1, 4);\n  }\n\n  function getISOWeeksInYear() {\n    return weeksInYear(this.year(), 1, 4);\n  }\n\n  function getWeeksInYear() {\n    var weekInfo = this.localeData()._week;\n\n    return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n  }\n\n  function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n    var weeksTarget;\n\n    if (input == null) {\n      return weekOfYear(this, dow, doy).year;\n    } else {\n      weeksTarget = weeksInYear(input, dow, doy);\n\n      if (week > weeksTarget) {\n        week = weeksTarget;\n      }\n\n      return setWeekAll.call(this, input, week, weekday, dow, doy);\n    }\n  }\n\n  function setWeekAll(weekYear, week, weekday, dow, doy) {\n    var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n        date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n    this.year(date.getUTCFullYear());\n    this.month(date.getUTCMonth());\n    this.date(date.getUTCDate());\n    return this;\n  } // FORMATTING\n\n\n  addFormatToken('Q', 0, 'Qo', 'quarter'); // ALIASES\n\n  addUnitAlias('quarter', 'Q'); // PRIORITY\n\n  addUnitPriority('quarter', 7); // PARSING\n\n  addRegexToken('Q', match1);\n  addParseToken('Q', function (input, array) {\n    array[MONTH] = (toInt(input) - 1) * 3;\n  }); // MOMENTS\n\n  function getSetQuarter(input) {\n    return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3);\n  } // FORMATTING\n\n\n  addFormatToken('D', ['DD', 2], 'Do', 'date'); // ALIASES\n\n  addUnitAlias('date', 'D'); // PRIORITY\n\n  addUnitPriority('date', 9); // PARSING\n\n  addRegexToken('D', match1to2);\n  addRegexToken('DD', match1to2, match2);\n  addRegexToken('Do', function (isStrict, locale) {\n    // TODO: Remove \"ordinalParse\" fallback in next major release.\n    return isStrict ? locale._dayOfMonthOrdinalParse || locale._ordinalParse : locale._dayOfMonthOrdinalParseLenient;\n  });\n  addParseToken(['D', 'DD'], DATE);\n  addParseToken('Do', function (input, array) {\n    array[DATE] = toInt(input.match(match1to2)[0]);\n  }); // MOMENTS\n\n  var getSetDayOfMonth = makeGetSet('Date', true); // FORMATTING\n\n  addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear'); // ALIASES\n\n  addUnitAlias('dayOfYear', 'DDD'); // PRIORITY\n\n  addUnitPriority('dayOfYear', 4); // PARSING\n\n  addRegexToken('DDD', match1to3);\n  addRegexToken('DDDD', match3);\n  addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n    config._dayOfYear = toInt(input);\n  }); // HELPERS\n  // MOMENTS\n\n  function getSetDayOfYear(input) {\n    var dayOfYear = Math.round((this.clone().startOf('day') - this.clone().startOf('year')) / 864e5) + 1;\n    return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');\n  } // FORMATTING\n\n\n  addFormatToken('m', ['mm', 2], 0, 'minute'); // ALIASES\n\n  addUnitAlias('minute', 'm'); // PRIORITY\n\n  addUnitPriority('minute', 14); // PARSING\n\n  addRegexToken('m', match1to2);\n  addRegexToken('mm', match1to2, match2);\n  addParseToken(['m', 'mm'], MINUTE); // MOMENTS\n\n  var getSetMinute = makeGetSet('Minutes', false); // FORMATTING\n\n  addFormatToken('s', ['ss', 2], 0, 'second'); // ALIASES\n\n  addUnitAlias('second', 's'); // PRIORITY\n\n  addUnitPriority('second', 15); // PARSING\n\n  addRegexToken('s', match1to2);\n  addRegexToken('ss', match1to2, match2);\n  addParseToken(['s', 'ss'], SECOND); // MOMENTS\n\n  var getSetSecond = makeGetSet('Seconds', false); // FORMATTING\n\n  addFormatToken('S', 0, 0, function () {\n    return ~~(this.millisecond() / 100);\n  });\n  addFormatToken(0, ['SS', 2], 0, function () {\n    return ~~(this.millisecond() / 10);\n  });\n  addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n  addFormatToken(0, ['SSSS', 4], 0, function () {\n    return this.millisecond() * 10;\n  });\n  addFormatToken(0, ['SSSSS', 5], 0, function () {\n    return this.millisecond() * 100;\n  });\n  addFormatToken(0, ['SSSSSS', 6], 0, function () {\n    return this.millisecond() * 1000;\n  });\n  addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n    return this.millisecond() * 10000;\n  });\n  addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n    return this.millisecond() * 100000;\n  });\n  addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n    return this.millisecond() * 1000000;\n  }); // ALIASES\n\n  addUnitAlias('millisecond', 'ms'); // PRIORITY\n\n  addUnitPriority('millisecond', 16); // PARSING\n\n  addRegexToken('S', match1to3, match1);\n  addRegexToken('SS', match1to3, match2);\n  addRegexToken('SSS', match1to3, match3);\n  var token;\n\n  for (token = 'SSSS'; token.length <= 9; token += 'S') {\n    addRegexToken(token, matchUnsigned);\n  }\n\n  function parseMs(input, array) {\n    array[MILLISECOND] = toInt(('0.' + input) * 1000);\n  }\n\n  for (token = 'S'; token.length <= 9; token += 'S') {\n    addParseToken(token, parseMs);\n  } // MOMENTS\n\n\n  var getSetMillisecond = makeGetSet('Milliseconds', false); // FORMATTING\n\n  addFormatToken('z', 0, 0, 'zoneAbbr');\n  addFormatToken('zz', 0, 0, 'zoneName'); // MOMENTS\n\n  function getZoneAbbr() {\n    return this._isUTC ? 'UTC' : '';\n  }\n\n  function getZoneName() {\n    return this._isUTC ? 'Coordinated Universal Time' : '';\n  }\n\n  var proto = Moment.prototype;\n  proto.add = add;\n  proto.calendar = calendar$1;\n  proto.clone = clone;\n  proto.diff = diff;\n  proto.endOf = endOf;\n  proto.format = format;\n  proto.from = from;\n  proto.fromNow = fromNow;\n  proto.to = to;\n  proto.toNow = toNow;\n  proto.get = stringGet;\n  proto.invalidAt = invalidAt;\n  proto.isAfter = isAfter;\n  proto.isBefore = isBefore;\n  proto.isBetween = isBetween;\n  proto.isSame = isSame;\n  proto.isSameOrAfter = isSameOrAfter;\n  proto.isSameOrBefore = isSameOrBefore;\n  proto.isValid = isValid$2;\n  proto.lang = lang;\n  proto.locale = locale;\n  proto.localeData = localeData;\n  proto.max = prototypeMax;\n  proto.min = prototypeMin;\n  proto.parsingFlags = parsingFlags;\n  proto.set = stringSet;\n  proto.startOf = startOf;\n  proto.subtract = subtract;\n  proto.toArray = toArray;\n  proto.toObject = toObject;\n  proto.toDate = toDate;\n  proto.toISOString = toISOString;\n  proto.inspect = inspect;\n  proto.toJSON = toJSON;\n  proto.toString = toString;\n  proto.unix = unix;\n  proto.valueOf = valueOf;\n  proto.creationData = creationData;\n  proto.year = getSetYear;\n  proto.isLeapYear = getIsLeapYear;\n  proto.weekYear = getSetWeekYear;\n  proto.isoWeekYear = getSetISOWeekYear;\n  proto.quarter = proto.quarters = getSetQuarter;\n  proto.month = getSetMonth;\n  proto.daysInMonth = getDaysInMonth;\n  proto.week = proto.weeks = getSetWeek;\n  proto.isoWeek = proto.isoWeeks = getSetISOWeek;\n  proto.weeksInYear = getWeeksInYear;\n  proto.isoWeeksInYear = getISOWeeksInYear;\n  proto.date = getSetDayOfMonth;\n  proto.day = proto.days = getSetDayOfWeek;\n  proto.weekday = getSetLocaleDayOfWeek;\n  proto.isoWeekday = getSetISODayOfWeek;\n  proto.dayOfYear = getSetDayOfYear;\n  proto.hour = proto.hours = getSetHour;\n  proto.minute = proto.minutes = getSetMinute;\n  proto.second = proto.seconds = getSetSecond;\n  proto.millisecond = proto.milliseconds = getSetMillisecond;\n  proto.utcOffset = getSetOffset;\n  proto.utc = setOffsetToUTC;\n  proto.local = setOffsetToLocal;\n  proto.parseZone = setOffsetToParsedOffset;\n  proto.hasAlignedHourOffset = hasAlignedHourOffset;\n  proto.isDST = isDaylightSavingTime;\n  proto.isLocal = isLocal;\n  proto.isUtcOffset = isUtcOffset;\n  proto.isUtc = isUtc;\n  proto.isUTC = isUtc;\n  proto.zoneAbbr = getZoneAbbr;\n  proto.zoneName = getZoneName;\n  proto.dates = deprecate('dates accessor is deprecated. Use date instead.', getSetDayOfMonth);\n  proto.months = deprecate('months accessor is deprecated. Use month instead', getSetMonth);\n  proto.years = deprecate('years accessor is deprecated. Use year instead', getSetYear);\n  proto.zone = deprecate('moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/', getSetZone);\n  proto.isDSTShifted = deprecate('isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information', isDaylightSavingTimeShifted);\n\n  function createUnix(input) {\n    return createLocal(input * 1000);\n  }\n\n  function createInZone() {\n    return createLocal.apply(null, arguments).parseZone();\n  }\n\n  function preParsePostFormat(string) {\n    return string;\n  }\n\n  var proto$1 = Locale.prototype;\n  proto$1.calendar = calendar;\n  proto$1.longDateFormat = longDateFormat;\n  proto$1.invalidDate = invalidDate;\n  proto$1.ordinal = ordinal;\n  proto$1.preparse = preParsePostFormat;\n  proto$1.postformat = preParsePostFormat;\n  proto$1.relativeTime = relativeTime;\n  proto$1.pastFuture = pastFuture;\n  proto$1.set = set;\n  proto$1.months = localeMonths;\n  proto$1.monthsShort = localeMonthsShort;\n  proto$1.monthsParse = localeMonthsParse;\n  proto$1.monthsRegex = monthsRegex;\n  proto$1.monthsShortRegex = monthsShortRegex;\n  proto$1.week = localeWeek;\n  proto$1.firstDayOfYear = localeFirstDayOfYear;\n  proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n  proto$1.weekdays = localeWeekdays;\n  proto$1.weekdaysMin = localeWeekdaysMin;\n  proto$1.weekdaysShort = localeWeekdaysShort;\n  proto$1.weekdaysParse = localeWeekdaysParse;\n  proto$1.weekdaysRegex = weekdaysRegex;\n  proto$1.weekdaysShortRegex = weekdaysShortRegex;\n  proto$1.weekdaysMinRegex = weekdaysMinRegex;\n  proto$1.isPM = localeIsPM;\n  proto$1.meridiem = localeMeridiem;\n\n  function get$1(format, index, field, setter) {\n    var locale = getLocale();\n    var utc = createUTC().set(setter, index);\n    return locale[field](utc, format);\n  }\n\n  function listMonthsImpl(format, index, field) {\n    if (isNumber(format)) {\n      index = format;\n      format = undefined;\n    }\n\n    format = format || '';\n\n    if (index != null) {\n      return get$1(format, index, field, 'month');\n    }\n\n    var i;\n    var out = [];\n\n    for (i = 0; i < 12; i++) {\n      out[i] = get$1(format, i, field, 'month');\n    }\n\n    return out;\n  } // ()\n  // (5)\n  // (fmt, 5)\n  // (fmt)\n  // (true)\n  // (true, 5)\n  // (true, fmt, 5)\n  // (true, fmt)\n\n\n  function listWeekdaysImpl(localeSorted, format, index, field) {\n    if (typeof localeSorted === 'boolean') {\n      if (isNumber(format)) {\n        index = format;\n        format = undefined;\n      }\n\n      format = format || '';\n    } else {\n      format = localeSorted;\n      index = format;\n      localeSorted = false;\n\n      if (isNumber(format)) {\n        index = format;\n        format = undefined;\n      }\n\n      format = format || '';\n    }\n\n    var locale = getLocale(),\n        shift = localeSorted ? locale._week.dow : 0;\n\n    if (index != null) {\n      return get$1(format, (index + shift) % 7, field, 'day');\n    }\n\n    var i;\n    var out = [];\n\n    for (i = 0; i < 7; i++) {\n      out[i] = get$1(format, (i + shift) % 7, field, 'day');\n    }\n\n    return out;\n  }\n\n  function listMonths(format, index) {\n    return listMonthsImpl(format, index, 'months');\n  }\n\n  function listMonthsShort(format, index) {\n    return listMonthsImpl(format, index, 'monthsShort');\n  }\n\n  function listWeekdays(localeSorted, format, index) {\n    return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n  }\n\n  function listWeekdaysShort(localeSorted, format, index) {\n    return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n  }\n\n  function listWeekdaysMin(localeSorted, format, index) {\n    return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n  }\n\n  getSetGlobalLocale('en', {\n    dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n    ordinal: function ordinal(number) {\n      var b = number % 10,\n          output = toInt(number % 100 / 10) === 1 ? 'th' : b === 1 ? 'st' : b === 2 ? 'nd' : b === 3 ? 'rd' : 'th';\n      return number + output;\n    }\n  }); // Side effect imports\n\n  hooks.lang = deprecate('moment.lang is deprecated. Use moment.locale instead.', getSetGlobalLocale);\n  hooks.langData = deprecate('moment.langData is deprecated. Use moment.localeData instead.', getLocale);\n  var mathAbs = Math.abs;\n\n  function abs() {\n    var data = this._data;\n    this._milliseconds = mathAbs(this._milliseconds);\n    this._days = mathAbs(this._days);\n    this._months = mathAbs(this._months);\n    data.milliseconds = mathAbs(data.milliseconds);\n    data.seconds = mathAbs(data.seconds);\n    data.minutes = mathAbs(data.minutes);\n    data.hours = mathAbs(data.hours);\n    data.months = mathAbs(data.months);\n    data.years = mathAbs(data.years);\n    return this;\n  }\n\n  function addSubtract$1(duration, input, value, direction) {\n    var other = createDuration(input, value);\n    duration._milliseconds += direction * other._milliseconds;\n    duration._days += direction * other._days;\n    duration._months += direction * other._months;\n    return duration._bubble();\n  } // supports only 2.0-style add(1, 's') or add(duration)\n\n\n  function add$1(input, value) {\n    return addSubtract$1(this, input, value, 1);\n  } // supports only 2.0-style subtract(1, 's') or subtract(duration)\n\n\n  function subtract$1(input, value) {\n    return addSubtract$1(this, input, value, -1);\n  }\n\n  function absCeil(number) {\n    if (number < 0) {\n      return Math.floor(number);\n    } else {\n      return Math.ceil(number);\n    }\n  }\n\n  function bubble() {\n    var milliseconds = this._milliseconds;\n    var days = this._days;\n    var months = this._months;\n    var data = this._data;\n    var seconds, minutes, hours, years, monthsFromDays; // if we have a mix of positive and negative values, bubble down first\n    // check: https://github.com/moment/moment/issues/2166\n\n    if (!(milliseconds >= 0 && days >= 0 && months >= 0 || milliseconds <= 0 && days <= 0 && months <= 0)) {\n      milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n      days = 0;\n      months = 0;\n    } // The following code bubbles up values, see the tests for\n    // examples of what that means.\n\n\n    data.milliseconds = milliseconds % 1000;\n    seconds = absFloor(milliseconds / 1000);\n    data.seconds = seconds % 60;\n    minutes = absFloor(seconds / 60);\n    data.minutes = minutes % 60;\n    hours = absFloor(minutes / 60);\n    data.hours = hours % 24;\n    days += absFloor(hours / 24); // convert days to months\n\n    monthsFromDays = absFloor(daysToMonths(days));\n    months += monthsFromDays;\n    days -= absCeil(monthsToDays(monthsFromDays)); // 12 months -> 1 year\n\n    years = absFloor(months / 12);\n    months %= 12;\n    data.days = days;\n    data.months = months;\n    data.years = years;\n    return this;\n  }\n\n  function daysToMonths(days) {\n    // 400 years have 146097 days (taking into account leap year rules)\n    // 400 years have 12 months === 4800\n    return days * 4800 / 146097;\n  }\n\n  function monthsToDays(months) {\n    // the reverse of daysToMonths\n    return months * 146097 / 4800;\n  }\n\n  function as(units) {\n    if (!this.isValid()) {\n      return NaN;\n    }\n\n    var days;\n    var months;\n    var milliseconds = this._milliseconds;\n    units = normalizeUnits(units);\n\n    if (units === 'month' || units === 'quarter' || units === 'year') {\n      days = this._days + milliseconds / 864e5;\n      months = this._months + daysToMonths(days);\n\n      switch (units) {\n        case 'month':\n          return months;\n\n        case 'quarter':\n          return months / 3;\n\n        case 'year':\n          return months / 12;\n      }\n    } else {\n      // handle milliseconds separately because of floating point math errors (issue #1867)\n      days = this._days + Math.round(monthsToDays(this._months));\n\n      switch (units) {\n        case 'week':\n          return days / 7 + milliseconds / 6048e5;\n\n        case 'day':\n          return days + milliseconds / 864e5;\n\n        case 'hour':\n          return days * 24 + milliseconds / 36e5;\n\n        case 'minute':\n          return days * 1440 + milliseconds / 6e4;\n\n        case 'second':\n          return days * 86400 + milliseconds / 1000;\n        // Math.floor prevents floating point math errors here\n\n        case 'millisecond':\n          return Math.floor(days * 864e5) + milliseconds;\n\n        default:\n          throw new Error('Unknown unit ' + units);\n      }\n    }\n  } // TODO: Use this.as('ms')?\n\n\n  function valueOf$1() {\n    if (!this.isValid()) {\n      return NaN;\n    }\n\n    return this._milliseconds + this._days * 864e5 + this._months % 12 * 2592e6 + toInt(this._months / 12) * 31536e6;\n  }\n\n  function makeAs(alias) {\n    return function () {\n      return this.as(alias);\n    };\n  }\n\n  var asMilliseconds = makeAs('ms');\n  var asSeconds = makeAs('s');\n  var asMinutes = makeAs('m');\n  var asHours = makeAs('h');\n  var asDays = makeAs('d');\n  var asWeeks = makeAs('w');\n  var asMonths = makeAs('M');\n  var asQuarters = makeAs('Q');\n  var asYears = makeAs('y');\n\n  function clone$1() {\n    return createDuration(this);\n  }\n\n  function get$2(units) {\n    units = normalizeUnits(units);\n    return this.isValid() ? this[units + 's']() : NaN;\n  }\n\n  function makeGetter(name) {\n    return function () {\n      return this.isValid() ? this._data[name] : NaN;\n    };\n  }\n\n  var milliseconds = makeGetter('milliseconds');\n  var seconds = makeGetter('seconds');\n  var minutes = makeGetter('minutes');\n  var hours = makeGetter('hours');\n  var days = makeGetter('days');\n  var months = makeGetter('months');\n  var years = makeGetter('years');\n\n  function weeks() {\n    return absFloor(this.days() / 7);\n  }\n\n  var round = Math.round;\n  var thresholds = {\n    ss: 44,\n    // a few seconds to seconds\n    s: 45,\n    // seconds to minute\n    m: 45,\n    // minutes to hour\n    h: 22,\n    // hours to day\n    d: 26,\n    // days to month\n    M: 11 // months to year\n\n  }; // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n\n  function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n    return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n  }\n\n  function relativeTime$1(posNegDuration, withoutSuffix, locale) {\n    var duration = createDuration(posNegDuration).abs();\n    var seconds = round(duration.as('s'));\n    var minutes = round(duration.as('m'));\n    var hours = round(duration.as('h'));\n    var days = round(duration.as('d'));\n    var months = round(duration.as('M'));\n    var years = round(duration.as('y'));\n    var a = seconds <= thresholds.ss && ['s', seconds] || seconds < thresholds.s && ['ss', seconds] || minutes <= 1 && ['m'] || minutes < thresholds.m && ['mm', minutes] || hours <= 1 && ['h'] || hours < thresholds.h && ['hh', hours] || days <= 1 && ['d'] || days < thresholds.d && ['dd', days] || months <= 1 && ['M'] || months < thresholds.M && ['MM', months] || years <= 1 && ['y'] || ['yy', years];\n    a[2] = withoutSuffix;\n    a[3] = +posNegDuration > 0;\n    a[4] = locale;\n    return substituteTimeAgo.apply(null, a);\n  } // This function allows you to set the rounding function for relative time strings\n\n\n  function getSetRelativeTimeRounding(roundingFunction) {\n    if (roundingFunction === undefined) {\n      return round;\n    }\n\n    if (typeof roundingFunction === 'function') {\n      round = roundingFunction;\n      return true;\n    }\n\n    return false;\n  } // This function allows you to set a threshold for relative time strings\n\n\n  function getSetRelativeTimeThreshold(threshold, limit) {\n    if (thresholds[threshold] === undefined) {\n      return false;\n    }\n\n    if (limit === undefined) {\n      return thresholds[threshold];\n    }\n\n    thresholds[threshold] = limit;\n\n    if (threshold === 's') {\n      thresholds.ss = limit - 1;\n    }\n\n    return true;\n  }\n\n  function humanize(withSuffix) {\n    if (!this.isValid()) {\n      return this.localeData().invalidDate();\n    }\n\n    var locale = this.localeData();\n    var output = relativeTime$1(this, !withSuffix, locale);\n\n    if (withSuffix) {\n      output = locale.pastFuture(+this, output);\n    }\n\n    return locale.postformat(output);\n  }\n\n  var abs$1 = Math.abs;\n\n  function sign(x) {\n    return (x > 0) - (x < 0) || +x;\n  }\n\n  function toISOString$1() {\n    // for ISO strings we do not use the normal bubbling rules:\n    //  * milliseconds bubble up until they become hours\n    //  * days do not bubble at all\n    //  * months bubble up until they become years\n    // This is because there is no context-free conversion between hours and days\n    // (think of clock changes)\n    // and also not between days and months (28-31 days per month)\n    if (!this.isValid()) {\n      return this.localeData().invalidDate();\n    }\n\n    var seconds = abs$1(this._milliseconds) / 1000;\n    var days = abs$1(this._days);\n    var months = abs$1(this._months);\n    var minutes, hours, years; // 3600 seconds -> 60 minutes -> 1 hour\n\n    minutes = absFloor(seconds / 60);\n    hours = absFloor(minutes / 60);\n    seconds %= 60;\n    minutes %= 60; // 12 months -> 1 year\n\n    years = absFloor(months / 12);\n    months %= 12; // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n\n    var Y = years;\n    var M = months;\n    var D = days;\n    var h = hours;\n    var m = minutes;\n    var s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n    var total = this.asSeconds();\n\n    if (!total) {\n      // this is the same as C#'s (Noda) and python (isodate)...\n      // but not other JS (goog.date)\n      return 'P0D';\n    }\n\n    var totalSign = total < 0 ? '-' : '';\n    var ymSign = sign(this._months) !== sign(total) ? '-' : '';\n    var daysSign = sign(this._days) !== sign(total) ? '-' : '';\n    var hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n    return totalSign + 'P' + (Y ? ymSign + Y + 'Y' : '') + (M ? ymSign + M + 'M' : '') + (D ? daysSign + D + 'D' : '') + (h || m || s ? 'T' : '') + (h ? hmsSign + h + 'H' : '') + (m ? hmsSign + m + 'M' : '') + (s ? hmsSign + s + 'S' : '');\n  }\n\n  var proto$2 = Duration.prototype;\n  proto$2.isValid = isValid$1;\n  proto$2.abs = abs;\n  proto$2.add = add$1;\n  proto$2.subtract = subtract$1;\n  proto$2.as = as;\n  proto$2.asMilliseconds = asMilliseconds;\n  proto$2.asSeconds = asSeconds;\n  proto$2.asMinutes = asMinutes;\n  proto$2.asHours = asHours;\n  proto$2.asDays = asDays;\n  proto$2.asWeeks = asWeeks;\n  proto$2.asMonths = asMonths;\n  proto$2.asQuarters = asQuarters;\n  proto$2.asYears = asYears;\n  proto$2.valueOf = valueOf$1;\n  proto$2._bubble = bubble;\n  proto$2.clone = clone$1;\n  proto$2.get = get$2;\n  proto$2.milliseconds = milliseconds;\n  proto$2.seconds = seconds;\n  proto$2.minutes = minutes;\n  proto$2.hours = hours;\n  proto$2.days = days;\n  proto$2.weeks = weeks;\n  proto$2.months = months;\n  proto$2.years = years;\n  proto$2.humanize = humanize;\n  proto$2.toISOString = toISOString$1;\n  proto$2.toString = toISOString$1;\n  proto$2.toJSON = toISOString$1;\n  proto$2.locale = locale;\n  proto$2.localeData = localeData;\n  proto$2.toIsoString = deprecate('toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)', toISOString$1);\n  proto$2.lang = lang; // Side effect imports\n  // FORMATTING\n\n  addFormatToken('X', 0, 0, 'unix');\n  addFormatToken('x', 0, 0, 'valueOf'); // PARSING\n\n  addRegexToken('x', matchSigned);\n  addRegexToken('X', matchTimestamp);\n  addParseToken('X', function (input, array, config) {\n    config._d = new Date(parseFloat(input, 10) * 1000);\n  });\n  addParseToken('x', function (input, array, config) {\n    config._d = new Date(toInt(input));\n  }); // Side effect imports\n\n  hooks.version = '2.24.0';\n  setHookCallback(createLocal);\n  hooks.fn = proto;\n  hooks.min = min;\n  hooks.max = max;\n  hooks.now = now;\n  hooks.utc = createUTC;\n  hooks.unix = createUnix;\n  hooks.months = listMonths;\n  hooks.isDate = isDate;\n  hooks.locale = getSetGlobalLocale;\n  hooks.invalid = createInvalid;\n  hooks.duration = createDuration;\n  hooks.isMoment = isMoment;\n  hooks.weekdays = listWeekdays;\n  hooks.parseZone = createInZone;\n  hooks.localeData = getLocale;\n  hooks.isDuration = isDuration;\n  hooks.monthsShort = listMonthsShort;\n  hooks.weekdaysMin = listWeekdaysMin;\n  hooks.defineLocale = defineLocale;\n  hooks.updateLocale = updateLocale;\n  hooks.locales = listLocales;\n  hooks.weekdaysShort = listWeekdaysShort;\n  hooks.normalizeUnits = normalizeUnits;\n  hooks.relativeTimeRounding = getSetRelativeTimeRounding;\n  hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n  hooks.calendarFormat = getCalendarFormat;\n  hooks.prototype = proto; // currently HTML5 input type only supports 24-hour formats\n\n  hooks.HTML5_FMT = {\n    DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm',\n    // <input type=\"datetime-local\" />\n    DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss',\n    // <input type=\"datetime-local\" step=\"1\" />\n    DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS',\n    // <input type=\"datetime-local\" step=\"0.001\" />\n    DATE: 'YYYY-MM-DD',\n    // <input type=\"date\" />\n    TIME: 'HH:mm',\n    // <input type=\"time\" />\n    TIME_SECONDS: 'HH:mm:ss',\n    // <input type=\"time\" step=\"1\" />\n    TIME_MS: 'HH:mm:ss.SSS',\n    // <input type=\"time\" step=\"0.001\" />\n    WEEK: 'GGGG-[W]WW',\n    // <input type=\"week\" />\n    MONTH: 'YYYY-MM' // <input type=\"month\" />\n\n  };\n  return hooks;\n});","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n  return cache.has(key);\n}\n\nmodule.exports = cacheHas;","'use strict';\nvar global = require('./_global');\nvar has = require('./_has');\nvar cof = require('./_cof');\nvar inheritIfRequired = require('./_inherit-if-required');\nvar toPrimitive = require('./_to-primitive');\nvar fails = require('./_fails');\nvar gOPN = require('./_object-gopn').f;\nvar gOPD = require('./_object-gopd').f;\nvar dP = require('./_object-dp').f;\nvar $trim = require('./_string-trim').trim;\nvar NUMBER = 'Number';\nvar $Number = global[NUMBER];\nvar Base = $Number;\nvar proto = $Number.prototype;\n// Opera ~12 has broken Object#toString\nvar BROKEN_COF = cof(require('./_object-create')(proto)) == NUMBER;\nvar TRIM = 'trim' in String.prototype;\n\n// 7.1.3 ToNumber(argument)\nvar toNumber = function (argument) {\n  var it = toPrimitive(argument, false);\n  if (typeof it == 'string' && it.length > 2) {\n    it = TRIM ? it.trim() : $trim(it, 3);\n    var first = it.charCodeAt(0);\n    var third, radix, maxCode;\n    if (first === 43 || first === 45) {\n      third = it.charCodeAt(2);\n      if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix\n    } else if (first === 48) {\n      switch (it.charCodeAt(1)) {\n        case 66: case 98: radix = 2; maxCode = 49; break; // fast equal /^0b[01]+$/i\n        case 79: case 111: radix = 8; maxCode = 55; break; // fast equal /^0o[0-7]+$/i\n        default: return +it;\n      }\n      for (var digits = it.slice(2), i = 0, l = digits.length, code; i < l; i++) {\n        code = digits.charCodeAt(i);\n        // parseInt parses a string to a first unavailable symbol\n        // but ToNumber should return NaN if a string contains unavailable symbols\n        if (code < 48 || code > maxCode) return NaN;\n      } return parseInt(digits, radix);\n    }\n  } return +it;\n};\n\nif (!$Number(' 0o1') || !$Number('0b1') || $Number('+0x1')) {\n  $Number = function Number(value) {\n    var it = arguments.length < 1 ? 0 : value;\n    var that = this;\n    return that instanceof $Number\n      // check on 1..constructor(foo) case\n      && (BROKEN_COF ? fails(function () { proto.valueOf.call(that); }) : cof(that) != NUMBER)\n        ? inheritIfRequired(new Base(toNumber(it)), that, $Number) : toNumber(it);\n  };\n  for (var keys = require('./_descriptors') ? gOPN(Base) : (\n    // ES3:\n    'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' +\n    // ES6 (in case, if modules with ES6 Number statics required before):\n    'EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,' +\n    'MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger'\n  ).split(','), j = 0, key; keys.length > j; j++) {\n    if (has(Base, key = keys[j]) && !has($Number, key)) {\n      dP($Number, key, gOPD(Base, key));\n    }\n  }\n  $Number.prototype = proto;\n  proto.constructor = $Number;\n  require('./_redefine')(global, NUMBER, $Number);\n}\n","var eq = require('./eq');\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n\n\nfunction assocIndexOf(array, key) {\n  var length = array.length;\n\n  while (length--) {\n    if (eq(array[length][0], key)) {\n      return length;\n    }\n  }\n\n  return -1;\n}\n\nmodule.exports = assocIndexOf;","var getNative = require('./_getNative'),\n    root = require('./_root');\n/* Built-in method references that are verified to be native. */\n\n\nvar Set = getNative(root, 'Set');\nmodule.exports = Set;","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n  return value;\n}\n\nmodule.exports = identity;","require(\"core-js/modules/es6.regexp.to-string\");\n\nrequire(\"core-js/modules/es6.date.to-string\");\n\nrequire(\"core-js/modules/es6.object.to-string\");\n\nvar Symbol = require('./_Symbol'),\n    arrayMap = require('./_arrayMap'),\n    isArray = require('./isArray'),\n    isSymbol = require('./isSymbol');\n/** Used as references for various `Number` constants. */\n\n\nvar INFINITY = 1 / 0;\n/** Used to convert symbols to primitives and strings. */\n\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n    symbolToString = symbolProto ? symbolProto.toString : undefined;\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\n\nfunction baseToString(value) {\n  // Exit early for strings to avoid a performance hit in some environments.\n  if (typeof value == 'string') {\n    return value;\n  }\n\n  if (isArray(value)) {\n    // Recursively convert values (susceptible to call stack limits).\n    return arrayMap(value, baseToString) + '';\n  }\n\n  if (isSymbol(value)) {\n    return symbolToString ? symbolToString.call(value) : '';\n  }\n\n  var result = value + '';\n  return result == '0' && 1 / value == -INFINITY ? '-0' : result;\n}\n\nmodule.exports = baseToString;"],"sourceRoot":""}
\ No newline at end of file
diff --git a/favicon-32x32.png b/favicon-32x32.png
index ab2c9df..82c73a6 100644
--- a/favicon-32x32.png
+++ b/favicon-32x32.png
Binary files differ
diff --git a/icons/icon-144x144.png b/icons/icon-144x144.png
index 17e7ff1..e268bb3 100644
--- a/icons/icon-144x144.png
+++ b/icons/icon-144x144.png
Binary files differ
diff --git a/icons/icon-192x192.png b/icons/icon-192x192.png
index 8189cfa..849f006 100644
--- a/icons/icon-192x192.png
+++ b/icons/icon-192x192.png
Binary files differ
diff --git a/icons/icon-256x256.png b/icons/icon-256x256.png
index 2981f2d..8fa8ae4 100644
--- a/icons/icon-256x256.png
+++ b/icons/icon-256x256.png
Binary files differ
diff --git a/icons/icon-384x384.png b/icons/icon-384x384.png
index 9737df0..cb8c62a 100644
--- a/icons/icon-384x384.png
+++ b/icons/icon-384x384.png
Binary files differ
diff --git a/icons/icon-48x48.png b/icons/icon-48x48.png
index 234f723..a3fe86b 100644
--- a/icons/icon-48x48.png
+++ b/icons/icon-48x48.png
Binary files differ
diff --git a/icons/icon-512x512.png b/icons/icon-512x512.png
index 295a6cd..7e75760 100644
--- a/icons/icon-512x512.png
+++ b/icons/icon-512x512.png
Binary files differ
diff --git a/icons/icon-72x72.png b/icons/icon-72x72.png
index d89cbc3..f83b7ad 100644
--- a/icons/icon-72x72.png
+++ b/icons/icon-72x72.png
Binary files differ
diff --git a/icons/icon-96x96.png b/icons/icon-96x96.png
index 7208455..0a2dde4 100644
--- a/icons/icon-96x96.png
+++ b/icons/icon-96x96.png
Binary files differ
diff --git a/index.html b/index.html
index ec954a2..46bb0ca 100644
--- a/index.html
+++ b/index.html
@@ -1,7 +1,7 @@
 <!DOCTYPE html><html><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="ie=edge"/><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"/><style data-href="/openj9/styles.49a8f6a822c9d7d4566b.css">/*!
  * Font Awesome Free 5.12.1 by @fontawesome - https://fontawesome.com
  * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
- */.fa,.fab,.fad,.fal,.far,.fas{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-.0667em}.fa-xs{font-size:.75em}.fa-sm{font-size:.875em}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:2.5em;padding-left:0}.fa-ul>li{position:relative}.fa-li{left:-2em;position:absolute;text-align:center;width:2em;line-height:inherit}.fa-border{border:.08em solid #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.fab.fa-pull-left,.fal.fa-pull-left,.far.fa-pull-left,.fas.fa-pull-left{margin-right:.3em}.fa.fa-pull-right,.fab.fa-pull-right,.fal.fa-pull-right,.far.fa-pull-right,.fas.fa-pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s linear infinite;animation:fa-spin 2s linear infinite}.fa-pulse{-webkit-animation:fa-spin 1s steps(8) infinite;animation:fa-spin 1s steps(8) infinite}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scaleX(-1);transform:scaleX(-1)}.fa-flip-vertical{-webkit-transform:scaleY(-1);transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical,.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{-webkit-transform:scale(-1);transform:scale(-1)}:root .fa-flip-both,:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270{-webkit-filter:none;filter:none}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-500px:before{content:"\F26E"}.fa-accessible-icon:before{content:"\F368"}.fa-accusoft:before{content:"\F369"}.fa-acquisitions-incorporated:before{content:"\F6AF"}.fa-ad:before{content:"\F641"}.fa-address-book:before{content:"\F2B9"}.fa-address-card:before{content:"\F2BB"}.fa-adjust:before{content:"\F042"}.fa-adn:before{content:"\F170"}.fa-adobe:before{content:"\F778"}.fa-adversal:before{content:"\F36A"}.fa-affiliatetheme:before{content:"\F36B"}.fa-air-freshener:before{content:"\F5D0"}.fa-airbnb:before{content:"\F834"}.fa-algolia:before{content:"\F36C"}.fa-align-center:before{content:"\F037"}.fa-align-justify:before{content:"\F039"}.fa-align-left:before{content:"\F036"}.fa-align-right:before{content:"\F038"}.fa-alipay:before{content:"\F642"}.fa-allergies:before{content:"\F461"}.fa-amazon:before{content:"\F270"}.fa-amazon-pay:before{content:"\F42C"}.fa-ambulance:before{content:"\F0F9"}.fa-american-sign-language-interpreting:before{content:"\F2A3"}.fa-amilia:before{content:"\F36D"}.fa-anchor:before{content:"\F13D"}.fa-android:before{content:"\F17B"}.fa-angellist:before{content:"\F209"}.fa-angle-double-down:before{content:"\F103"}.fa-angle-double-left:before{content:"\F100"}.fa-angle-double-right:before{content:"\F101"}.fa-angle-double-up:before{content:"\F102"}.fa-angle-down:before{content:"\F107"}.fa-angle-left:before{content:"\F104"}.fa-angle-right:before{content:"\F105"}.fa-angle-up:before{content:"\F106"}.fa-angry:before{content:"\F556"}.fa-angrycreative:before{content:"\F36E"}.fa-angular:before{content:"\F420"}.fa-ankh:before{content:"\F644"}.fa-app-store:before{content:"\F36F"}.fa-app-store-ios:before{content:"\F370"}.fa-apper:before{content:"\F371"}.fa-apple:before{content:"\F179"}.fa-apple-alt:before{content:"\F5D1"}.fa-apple-pay:before{content:"\F415"}.fa-archive:before{content:"\F187"}.fa-archway:before{content:"\F557"}.fa-arrow-alt-circle-down:before{content:"\F358"}.fa-arrow-alt-circle-left:before{content:"\F359"}.fa-arrow-alt-circle-right:before{content:"\F35A"}.fa-arrow-alt-circle-up:before{content:"\F35B"}.fa-arrow-circle-down:before{content:"\F0AB"}.fa-arrow-circle-left:before{content:"\F0A8"}.fa-arrow-circle-right:before{content:"\F0A9"}.fa-arrow-circle-up:before{content:"\F0AA"}.fa-arrow-down:before{content:"\F063"}.fa-arrow-left:before{content:"\F060"}.fa-arrow-right:before{content:"\F061"}.fa-arrow-up:before{content:"\F062"}.fa-arrows-alt:before{content:"\F0B2"}.fa-arrows-alt-h:before{content:"\F337"}.fa-arrows-alt-v:before{content:"\F338"}.fa-artstation:before{content:"\F77A"}.fa-assistive-listening-systems:before{content:"\F2A2"}.fa-asterisk:before{content:"\F069"}.fa-asymmetrik:before{content:"\F372"}.fa-at:before{content:"\F1FA"}.fa-atlas:before{content:"\F558"}.fa-atlassian:before{content:"\F77B"}.fa-atom:before{content:"\F5D2"}.fa-audible:before{content:"\F373"}.fa-audio-description:before{content:"\F29E"}.fa-autoprefixer:before{content:"\F41C"}.fa-avianex:before{content:"\F374"}.fa-aviato:before{content:"\F421"}.fa-award:before{content:"\F559"}.fa-aws:before{content:"\F375"}.fa-baby:before{content:"\F77C"}.fa-baby-carriage:before{content:"\F77D"}.fa-backspace:before{content:"\F55A"}.fa-backward:before{content:"\F04A"}.fa-bacon:before{content:"\F7E5"}.fa-bahai:before{content:"\F666"}.fa-balance-scale:before{content:"\F24E"}.fa-balance-scale-left:before{content:"\F515"}.fa-balance-scale-right:before{content:"\F516"}.fa-ban:before{content:"\F05E"}.fa-band-aid:before{content:"\F462"}.fa-bandcamp:before{content:"\F2D5"}.fa-barcode:before{content:"\F02A"}.fa-bars:before{content:"\F0C9"}.fa-baseball-ball:before{content:"\F433"}.fa-basketball-ball:before{content:"\F434"}.fa-bath:before{content:"\F2CD"}.fa-battery-empty:before{content:"\F244"}.fa-battery-full:before{content:"\F240"}.fa-battery-half:before{content:"\F242"}.fa-battery-quarter:before{content:"\F243"}.fa-battery-three-quarters:before{content:"\F241"}.fa-battle-net:before{content:"\F835"}.fa-bed:before{content:"\F236"}.fa-beer:before{content:"\F0FC"}.fa-behance:before{content:"\F1B4"}.fa-behance-square:before{content:"\F1B5"}.fa-bell:before{content:"\F0F3"}.fa-bell-slash:before{content:"\F1F6"}.fa-bezier-curve:before{content:"\F55B"}.fa-bible:before{content:"\F647"}.fa-bicycle:before{content:"\F206"}.fa-biking:before{content:"\F84A"}.fa-bimobject:before{content:"\F378"}.fa-binoculars:before{content:"\F1E5"}.fa-biohazard:before{content:"\F780"}.fa-birthday-cake:before{content:"\F1FD"}.fa-bitbucket:before{content:"\F171"}.fa-bitcoin:before{content:"\F379"}.fa-bity:before{content:"\F37A"}.fa-black-tie:before{content:"\F27E"}.fa-blackberry:before{content:"\F37B"}.fa-blender:before{content:"\F517"}.fa-blender-phone:before{content:"\F6B6"}.fa-blind:before{content:"\F29D"}.fa-blog:before{content:"\F781"}.fa-blogger:before{content:"\F37C"}.fa-blogger-b:before{content:"\F37D"}.fa-bluetooth:before{content:"\F293"}.fa-bluetooth-b:before{content:"\F294"}.fa-bold:before{content:"\F032"}.fa-bolt:before{content:"\F0E7"}.fa-bomb:before{content:"\F1E2"}.fa-bone:before{content:"\F5D7"}.fa-bong:before{content:"\F55C"}.fa-book:before{content:"\F02D"}.fa-book-dead:before{content:"\F6B7"}.fa-book-medical:before{content:"\F7E6"}.fa-book-open:before{content:"\F518"}.fa-book-reader:before{content:"\F5DA"}.fa-bookmark:before{content:"\F02E"}.fa-bootstrap:before{content:"\F836"}.fa-border-all:before{content:"\F84C"}.fa-border-none:before{content:"\F850"}.fa-border-style:before{content:"\F853"}.fa-bowling-ball:before{content:"\F436"}.fa-box:before{content:"\F466"}.fa-box-open:before{content:"\F49E"}.fa-boxes:before{content:"\F468"}.fa-braille:before{content:"\F2A1"}.fa-brain:before{content:"\F5DC"}.fa-bread-slice:before{content:"\F7EC"}.fa-briefcase:before{content:"\F0B1"}.fa-briefcase-medical:before{content:"\F469"}.fa-broadcast-tower:before{content:"\F519"}.fa-broom:before{content:"\F51A"}.fa-brush:before{content:"\F55D"}.fa-btc:before{content:"\F15A"}.fa-buffer:before{content:"\F837"}.fa-bug:before{content:"\F188"}.fa-building:before{content:"\F1AD"}.fa-bullhorn:before{content:"\F0A1"}.fa-bullseye:before{content:"\F140"}.fa-burn:before{content:"\F46A"}.fa-buromobelexperte:before{content:"\F37F"}.fa-bus:before{content:"\F207"}.fa-bus-alt:before{content:"\F55E"}.fa-business-time:before{content:"\F64A"}.fa-buy-n-large:before{content:"\F8A6"}.fa-buysellads:before{content:"\F20D"}.fa-calculator:before{content:"\F1EC"}.fa-calendar:before{content:"\F133"}.fa-calendar-alt:before{content:"\F073"}.fa-calendar-check:before{content:"\F274"}.fa-calendar-day:before{content:"\F783"}.fa-calendar-minus:before{content:"\F272"}.fa-calendar-plus:before{content:"\F271"}.fa-calendar-times:before{content:"\F273"}.fa-calendar-week:before{content:"\F784"}.fa-camera:before{content:"\F030"}.fa-camera-retro:before{content:"\F083"}.fa-campground:before{content:"\F6BB"}.fa-canadian-maple-leaf:before{content:"\F785"}.fa-candy-cane:before{content:"\F786"}.fa-cannabis:before{content:"\F55F"}.fa-capsules:before{content:"\F46B"}.fa-car:before{content:"\F1B9"}.fa-car-alt:before{content:"\F5DE"}.fa-car-battery:before{content:"\F5DF"}.fa-car-crash:before{content:"\F5E1"}.fa-car-side:before{content:"\F5E4"}.fa-caravan:before{content:"\F8FF"}.fa-caret-down:before{content:"\F0D7"}.fa-caret-left:before{content:"\F0D9"}.fa-caret-right:before{content:"\F0DA"}.fa-caret-square-down:before{content:"\F150"}.fa-caret-square-left:before{content:"\F191"}.fa-caret-square-right:before{content:"\F152"}.fa-caret-square-up:before{content:"\F151"}.fa-caret-up:before{content:"\F0D8"}.fa-carrot:before{content:"\F787"}.fa-cart-arrow-down:before{content:"\F218"}.fa-cart-plus:before{content:"\F217"}.fa-cash-register:before{content:"\F788"}.fa-cat:before{content:"\F6BE"}.fa-cc-amazon-pay:before{content:"\F42D"}.fa-cc-amex:before{content:"\F1F3"}.fa-cc-apple-pay:before{content:"\F416"}.fa-cc-diners-club:before{content:"\F24C"}.fa-cc-discover:before{content:"\F1F2"}.fa-cc-jcb:before{content:"\F24B"}.fa-cc-mastercard:before{content:"\F1F1"}.fa-cc-paypal:before{content:"\F1F4"}.fa-cc-stripe:before{content:"\F1F5"}.fa-cc-visa:before{content:"\F1F0"}.fa-centercode:before{content:"\F380"}.fa-centos:before{content:"\F789"}.fa-certificate:before{content:"\F0A3"}.fa-chair:before{content:"\F6C0"}.fa-chalkboard:before{content:"\F51B"}.fa-chalkboard-teacher:before{content:"\F51C"}.fa-charging-station:before{content:"\F5E7"}.fa-chart-area:before{content:"\F1FE"}.fa-chart-bar:before{content:"\F080"}.fa-chart-line:before{content:"\F201"}.fa-chart-pie:before{content:"\F200"}.fa-check:before{content:"\F00C"}.fa-check-circle:before{content:"\F058"}.fa-check-double:before{content:"\F560"}.fa-check-square:before{content:"\F14A"}.fa-cheese:before{content:"\F7EF"}.fa-chess:before{content:"\F439"}.fa-chess-bishop:before{content:"\F43A"}.fa-chess-board:before{content:"\F43C"}.fa-chess-king:before{content:"\F43F"}.fa-chess-knight:before{content:"\F441"}.fa-chess-pawn:before{content:"\F443"}.fa-chess-queen:before{content:"\F445"}.fa-chess-rook:before{content:"\F447"}.fa-chevron-circle-down:before{content:"\F13A"}.fa-chevron-circle-left:before{content:"\F137"}.fa-chevron-circle-right:before{content:"\F138"}.fa-chevron-circle-up:before{content:"\F139"}.fa-chevron-down:before{content:"\F078"}.fa-chevron-left:before{content:"\F053"}.fa-chevron-right:before{content:"\F054"}.fa-chevron-up:before{content:"\F077"}.fa-child:before{content:"\F1AE"}.fa-chrome:before{content:"\F268"}.fa-chromecast:before{content:"\F838"}.fa-church:before{content:"\F51D"}.fa-circle:before{content:"\F111"}.fa-circle-notch:before{content:"\F1CE"}.fa-city:before{content:"\F64F"}.fa-clinic-medical:before{content:"\F7F2"}.fa-clipboard:before{content:"\F328"}.fa-clipboard-check:before{content:"\F46C"}.fa-clipboard-list:before{content:"\F46D"}.fa-clock:before{content:"\F017"}.fa-clone:before{content:"\F24D"}.fa-closed-captioning:before{content:"\F20A"}.fa-cloud:before{content:"\F0C2"}.fa-cloud-download-alt:before{content:"\F381"}.fa-cloud-meatball:before{content:"\F73B"}.fa-cloud-moon:before{content:"\F6C3"}.fa-cloud-moon-rain:before{content:"\F73C"}.fa-cloud-rain:before{content:"\F73D"}.fa-cloud-showers-heavy:before{content:"\F740"}.fa-cloud-sun:before{content:"\F6C4"}.fa-cloud-sun-rain:before{content:"\F743"}.fa-cloud-upload-alt:before{content:"\F382"}.fa-cloudscale:before{content:"\F383"}.fa-cloudsmith:before{content:"\F384"}.fa-cloudversify:before{content:"\F385"}.fa-cocktail:before{content:"\F561"}.fa-code:before{content:"\F121"}.fa-code-branch:before{content:"\F126"}.fa-codepen:before{content:"\F1CB"}.fa-codiepie:before{content:"\F284"}.fa-coffee:before{content:"\F0F4"}.fa-cog:before{content:"\F013"}.fa-cogs:before{content:"\F085"}.fa-coins:before{content:"\F51E"}.fa-columns:before{content:"\F0DB"}.fa-comment:before{content:"\F075"}.fa-comment-alt:before{content:"\F27A"}.fa-comment-dollar:before{content:"\F651"}.fa-comment-dots:before{content:"\F4AD"}.fa-comment-medical:before{content:"\F7F5"}.fa-comment-slash:before{content:"\F4B3"}.fa-comments:before{content:"\F086"}.fa-comments-dollar:before{content:"\F653"}.fa-compact-disc:before{content:"\F51F"}.fa-compass:before{content:"\F14E"}.fa-compress:before{content:"\F066"}.fa-compress-alt:before{content:"\F422"}.fa-compress-arrows-alt:before{content:"\F78C"}.fa-concierge-bell:before{content:"\F562"}.fa-confluence:before{content:"\F78D"}.fa-connectdevelop:before{content:"\F20E"}.fa-contao:before{content:"\F26D"}.fa-cookie:before{content:"\F563"}.fa-cookie-bite:before{content:"\F564"}.fa-copy:before{content:"\F0C5"}.fa-copyright:before{content:"\F1F9"}.fa-cotton-bureau:before{content:"\F89E"}.fa-couch:before{content:"\F4B8"}.fa-cpanel:before{content:"\F388"}.fa-creative-commons:before{content:"\F25E"}.fa-creative-commons-by:before{content:"\F4E7"}.fa-creative-commons-nc:before{content:"\F4E8"}.fa-creative-commons-nc-eu:before{content:"\F4E9"}.fa-creative-commons-nc-jp:before{content:"\F4EA"}.fa-creative-commons-nd:before{content:"\F4EB"}.fa-creative-commons-pd:before{content:"\F4EC"}.fa-creative-commons-pd-alt:before{content:"\F4ED"}.fa-creative-commons-remix:before{content:"\F4EE"}.fa-creative-commons-sa:before{content:"\F4EF"}.fa-creative-commons-sampling:before{content:"\F4F0"}.fa-creative-commons-sampling-plus:before{content:"\F4F1"}.fa-creative-commons-share:before{content:"\F4F2"}.fa-creative-commons-zero:before{content:"\F4F3"}.fa-credit-card:before{content:"\F09D"}.fa-critical-role:before{content:"\F6C9"}.fa-crop:before{content:"\F125"}.fa-crop-alt:before{content:"\F565"}.fa-cross:before{content:"\F654"}.fa-crosshairs:before{content:"\F05B"}.fa-crow:before{content:"\F520"}.fa-crown:before{content:"\F521"}.fa-crutch:before{content:"\F7F7"}.fa-css3:before{content:"\F13C"}.fa-css3-alt:before{content:"\F38B"}.fa-cube:before{content:"\F1B2"}.fa-cubes:before{content:"\F1B3"}.fa-cut:before{content:"\F0C4"}.fa-cuttlefish:before{content:"\F38C"}.fa-d-and-d:before{content:"\F38D"}.fa-d-and-d-beyond:before{content:"\F6CA"}.fa-dailymotion:before{content:"\F952"}.fa-dashcube:before{content:"\F210"}.fa-database:before{content:"\F1C0"}.fa-deaf:before{content:"\F2A4"}.fa-delicious:before{content:"\F1A5"}.fa-democrat:before{content:"\F747"}.fa-deploydog:before{content:"\F38E"}.fa-deskpro:before{content:"\F38F"}.fa-desktop:before{content:"\F108"}.fa-dev:before{content:"\F6CC"}.fa-deviantart:before{content:"\F1BD"}.fa-dharmachakra:before{content:"\F655"}.fa-dhl:before{content:"\F790"}.fa-diagnoses:before{content:"\F470"}.fa-diaspora:before{content:"\F791"}.fa-dice:before{content:"\F522"}.fa-dice-d20:before{content:"\F6CF"}.fa-dice-d6:before{content:"\F6D1"}.fa-dice-five:before{content:"\F523"}.fa-dice-four:before{content:"\F524"}.fa-dice-one:before{content:"\F525"}.fa-dice-six:before{content:"\F526"}.fa-dice-three:before{content:"\F527"}.fa-dice-two:before{content:"\F528"}.fa-digg:before{content:"\F1A6"}.fa-digital-ocean:before{content:"\F391"}.fa-digital-tachograph:before{content:"\F566"}.fa-directions:before{content:"\F5EB"}.fa-discord:before{content:"\F392"}.fa-discourse:before{content:"\F393"}.fa-divide:before{content:"\F529"}.fa-dizzy:before{content:"\F567"}.fa-dna:before{content:"\F471"}.fa-dochub:before{content:"\F394"}.fa-docker:before{content:"\F395"}.fa-dog:before{content:"\F6D3"}.fa-dollar-sign:before{content:"\F155"}.fa-dolly:before{content:"\F472"}.fa-dolly-flatbed:before{content:"\F474"}.fa-donate:before{content:"\F4B9"}.fa-door-closed:before{content:"\F52A"}.fa-door-open:before{content:"\F52B"}.fa-dot-circle:before{content:"\F192"}.fa-dove:before{content:"\F4BA"}.fa-download:before{content:"\F019"}.fa-draft2digital:before{content:"\F396"}.fa-drafting-compass:before{content:"\F568"}.fa-dragon:before{content:"\F6D5"}.fa-draw-polygon:before{content:"\F5EE"}.fa-dribbble:before{content:"\F17D"}.fa-dribbble-square:before{content:"\F397"}.fa-dropbox:before{content:"\F16B"}.fa-drum:before{content:"\F569"}.fa-drum-steelpan:before{content:"\F56A"}.fa-drumstick-bite:before{content:"\F6D7"}.fa-drupal:before{content:"\F1A9"}.fa-dumbbell:before{content:"\F44B"}.fa-dumpster:before{content:"\F793"}.fa-dumpster-fire:before{content:"\F794"}.fa-dungeon:before{content:"\F6D9"}.fa-dyalog:before{content:"\F399"}.fa-earlybirds:before{content:"\F39A"}.fa-ebay:before{content:"\F4F4"}.fa-edge:before{content:"\F282"}.fa-edit:before{content:"\F044"}.fa-egg:before{content:"\F7FB"}.fa-eject:before{content:"\F052"}.fa-elementor:before{content:"\F430"}.fa-ellipsis-h:before{content:"\F141"}.fa-ellipsis-v:before{content:"\F142"}.fa-ello:before{content:"\F5F1"}.fa-ember:before{content:"\F423"}.fa-empire:before{content:"\F1D1"}.fa-envelope:before{content:"\F0E0"}.fa-envelope-open:before{content:"\F2B6"}.fa-envelope-open-text:before{content:"\F658"}.fa-envelope-square:before{content:"\F199"}.fa-envira:before{content:"\F299"}.fa-equals:before{content:"\F52C"}.fa-eraser:before{content:"\F12D"}.fa-erlang:before{content:"\F39D"}.fa-ethereum:before{content:"\F42E"}.fa-ethernet:before{content:"\F796"}.fa-etsy:before{content:"\F2D7"}.fa-euro-sign:before{content:"\F153"}.fa-evernote:before{content:"\F839"}.fa-exchange-alt:before{content:"\F362"}.fa-exclamation:before{content:"\F12A"}.fa-exclamation-circle:before{content:"\F06A"}.fa-exclamation-triangle:before{content:"\F071"}.fa-expand:before{content:"\F065"}.fa-expand-alt:before{content:"\F424"}.fa-expand-arrows-alt:before{content:"\F31E"}.fa-expeditedssl:before{content:"\F23E"}.fa-external-link-alt:before{content:"\F35D"}.fa-external-link-square-alt:before{content:"\F360"}.fa-eye:before{content:"\F06E"}.fa-eye-dropper:before{content:"\F1FB"}.fa-eye-slash:before{content:"\F070"}.fa-facebook:before{content:"\F09A"}.fa-facebook-f:before{content:"\F39E"}.fa-facebook-messenger:before{content:"\F39F"}.fa-facebook-square:before{content:"\F082"}.fa-fan:before{content:"\F863"}.fa-fantasy-flight-games:before{content:"\F6DC"}.fa-fast-backward:before{content:"\F049"}.fa-fast-forward:before{content:"\F050"}.fa-fax:before{content:"\F1AC"}.fa-feather:before{content:"\F52D"}.fa-feather-alt:before{content:"\F56B"}.fa-fedex:before{content:"\F797"}.fa-fedora:before{content:"\F798"}.fa-female:before{content:"\F182"}.fa-fighter-jet:before{content:"\F0FB"}.fa-figma:before{content:"\F799"}.fa-file:before{content:"\F15B"}.fa-file-alt:before{content:"\F15C"}.fa-file-archive:before{content:"\F1C6"}.fa-file-audio:before{content:"\F1C7"}.fa-file-code:before{content:"\F1C9"}.fa-file-contract:before{content:"\F56C"}.fa-file-csv:before{content:"\F6DD"}.fa-file-download:before{content:"\F56D"}.fa-file-excel:before{content:"\F1C3"}.fa-file-export:before{content:"\F56E"}.fa-file-image:before{content:"\F1C5"}.fa-file-import:before{content:"\F56F"}.fa-file-invoice:before{content:"\F570"}.fa-file-invoice-dollar:before{content:"\F571"}.fa-file-medical:before{content:"\F477"}.fa-file-medical-alt:before{content:"\F478"}.fa-file-pdf:before{content:"\F1C1"}.fa-file-powerpoint:before{content:"\F1C4"}.fa-file-prescription:before{content:"\F572"}.fa-file-signature:before{content:"\F573"}.fa-file-upload:before{content:"\F574"}.fa-file-video:before{content:"\F1C8"}.fa-file-word:before{content:"\F1C2"}.fa-fill:before{content:"\F575"}.fa-fill-drip:before{content:"\F576"}.fa-film:before{content:"\F008"}.fa-filter:before{content:"\F0B0"}.fa-fingerprint:before{content:"\F577"}.fa-fire:before{content:"\F06D"}.fa-fire-alt:before{content:"\F7E4"}.fa-fire-extinguisher:before{content:"\F134"}.fa-firefox:before{content:"\F269"}.fa-firefox-browser:before{content:"\F907"}.fa-first-aid:before{content:"\F479"}.fa-first-order:before{content:"\F2B0"}.fa-first-order-alt:before{content:"\F50A"}.fa-firstdraft:before{content:"\F3A1"}.fa-fish:before{content:"\F578"}.fa-fist-raised:before{content:"\F6DE"}.fa-flag:before{content:"\F024"}.fa-flag-checkered:before{content:"\F11E"}.fa-flag-usa:before{content:"\F74D"}.fa-flask:before{content:"\F0C3"}.fa-flickr:before{content:"\F16E"}.fa-flipboard:before{content:"\F44D"}.fa-flushed:before{content:"\F579"}.fa-fly:before{content:"\F417"}.fa-folder:before{content:"\F07B"}.fa-folder-minus:before{content:"\F65D"}.fa-folder-open:before{content:"\F07C"}.fa-folder-plus:before{content:"\F65E"}.fa-font:before{content:"\F031"}.fa-font-awesome:before{content:"\F2B4"}.fa-font-awesome-alt:before{content:"\F35C"}.fa-font-awesome-flag:before{content:"\F425"}.fa-font-awesome-logo-full:before{content:"\F4E6"}.fa-fonticons:before{content:"\F280"}.fa-fonticons-fi:before{content:"\F3A2"}.fa-football-ball:before{content:"\F44E"}.fa-fort-awesome:before{content:"\F286"}.fa-fort-awesome-alt:before{content:"\F3A3"}.fa-forumbee:before{content:"\F211"}.fa-forward:before{content:"\F04E"}.fa-foursquare:before{content:"\F180"}.fa-free-code-camp:before{content:"\F2C5"}.fa-freebsd:before{content:"\F3A4"}.fa-frog:before{content:"\F52E"}.fa-frown:before{content:"\F119"}.fa-frown-open:before{content:"\F57A"}.fa-fulcrum:before{content:"\F50B"}.fa-funnel-dollar:before{content:"\F662"}.fa-futbol:before{content:"\F1E3"}.fa-galactic-republic:before{content:"\F50C"}.fa-galactic-senate:before{content:"\F50D"}.fa-gamepad:before{content:"\F11B"}.fa-gas-pump:before{content:"\F52F"}.fa-gavel:before{content:"\F0E3"}.fa-gem:before{content:"\F3A5"}.fa-genderless:before{content:"\F22D"}.fa-get-pocket:before{content:"\F265"}.fa-gg:before{content:"\F260"}.fa-gg-circle:before{content:"\F261"}.fa-ghost:before{content:"\F6E2"}.fa-gift:before{content:"\F06B"}.fa-gifts:before{content:"\F79C"}.fa-git:before{content:"\F1D3"}.fa-git-alt:before{content:"\F841"}.fa-git-square:before{content:"\F1D2"}.fa-github:before{content:"\F09B"}.fa-github-alt:before{content:"\F113"}.fa-github-square:before{content:"\F092"}.fa-gitkraken:before{content:"\F3A6"}.fa-gitlab:before{content:"\F296"}.fa-gitter:before{content:"\F426"}.fa-glass-cheers:before{content:"\F79F"}.fa-glass-martini:before{content:"\F000"}.fa-glass-martini-alt:before{content:"\F57B"}.fa-glass-whiskey:before{content:"\F7A0"}.fa-glasses:before{content:"\F530"}.fa-glide:before{content:"\F2A5"}.fa-glide-g:before{content:"\F2A6"}.fa-globe:before{content:"\F0AC"}.fa-globe-africa:before{content:"\F57C"}.fa-globe-americas:before{content:"\F57D"}.fa-globe-asia:before{content:"\F57E"}.fa-globe-europe:before{content:"\F7A2"}.fa-gofore:before{content:"\F3A7"}.fa-golf-ball:before{content:"\F450"}.fa-goodreads:before{content:"\F3A8"}.fa-goodreads-g:before{content:"\F3A9"}.fa-google:before{content:"\F1A0"}.fa-google-drive:before{content:"\F3AA"}.fa-google-play:before{content:"\F3AB"}.fa-google-plus:before{content:"\F2B3"}.fa-google-plus-g:before{content:"\F0D5"}.fa-google-plus-square:before{content:"\F0D4"}.fa-google-wallet:before{content:"\F1EE"}.fa-gopuram:before{content:"\F664"}.fa-graduation-cap:before{content:"\F19D"}.fa-gratipay:before{content:"\F184"}.fa-grav:before{content:"\F2D6"}.fa-greater-than:before{content:"\F531"}.fa-greater-than-equal:before{content:"\F532"}.fa-grimace:before{content:"\F57F"}.fa-grin:before{content:"\F580"}.fa-grin-alt:before{content:"\F581"}.fa-grin-beam:before{content:"\F582"}.fa-grin-beam-sweat:before{content:"\F583"}.fa-grin-hearts:before{content:"\F584"}.fa-grin-squint:before{content:"\F585"}.fa-grin-squint-tears:before{content:"\F586"}.fa-grin-stars:before{content:"\F587"}.fa-grin-tears:before{content:"\F588"}.fa-grin-tongue:before{content:"\F589"}.fa-grin-tongue-squint:before{content:"\F58A"}.fa-grin-tongue-wink:before{content:"\F58B"}.fa-grin-wink:before{content:"\F58C"}.fa-grip-horizontal:before{content:"\F58D"}.fa-grip-lines:before{content:"\F7A4"}.fa-grip-lines-vertical:before{content:"\F7A5"}.fa-grip-vertical:before{content:"\F58E"}.fa-gripfire:before{content:"\F3AC"}.fa-grunt:before{content:"\F3AD"}.fa-guitar:before{content:"\F7A6"}.fa-gulp:before{content:"\F3AE"}.fa-h-square:before{content:"\F0FD"}.fa-hacker-news:before{content:"\F1D4"}.fa-hacker-news-square:before{content:"\F3AF"}.fa-hackerrank:before{content:"\F5F7"}.fa-hamburger:before{content:"\F805"}.fa-hammer:before{content:"\F6E3"}.fa-hamsa:before{content:"\F665"}.fa-hand-holding:before{content:"\F4BD"}.fa-hand-holding-heart:before{content:"\F4BE"}.fa-hand-holding-usd:before{content:"\F4C0"}.fa-hand-lizard:before{content:"\F258"}.fa-hand-middle-finger:before{content:"\F806"}.fa-hand-paper:before{content:"\F256"}.fa-hand-peace:before{content:"\F25B"}.fa-hand-point-down:before{content:"\F0A7"}.fa-hand-point-left:before{content:"\F0A5"}.fa-hand-point-right:before{content:"\F0A4"}.fa-hand-point-up:before{content:"\F0A6"}.fa-hand-pointer:before{content:"\F25A"}.fa-hand-rock:before{content:"\F255"}.fa-hand-scissors:before{content:"\F257"}.fa-hand-spock:before{content:"\F259"}.fa-hands:before{content:"\F4C2"}.fa-hands-helping:before{content:"\F4C4"}.fa-handshake:before{content:"\F2B5"}.fa-hanukiah:before{content:"\F6E6"}.fa-hard-hat:before{content:"\F807"}.fa-hashtag:before{content:"\F292"}.fa-hat-cowboy:before{content:"\F8C0"}.fa-hat-cowboy-side:before{content:"\F8C1"}.fa-hat-wizard:before{content:"\F6E8"}.fa-hdd:before{content:"\F0A0"}.fa-heading:before{content:"\F1DC"}.fa-headphones:before{content:"\F025"}.fa-headphones-alt:before{content:"\F58F"}.fa-headset:before{content:"\F590"}.fa-heart:before{content:"\F004"}.fa-heart-broken:before{content:"\F7A9"}.fa-heartbeat:before{content:"\F21E"}.fa-helicopter:before{content:"\F533"}.fa-highlighter:before{content:"\F591"}.fa-hiking:before{content:"\F6EC"}.fa-hippo:before{content:"\F6ED"}.fa-hips:before{content:"\F452"}.fa-hire-a-helper:before{content:"\F3B0"}.fa-history:before{content:"\F1DA"}.fa-hockey-puck:before{content:"\F453"}.fa-holly-berry:before{content:"\F7AA"}.fa-home:before{content:"\F015"}.fa-hooli:before{content:"\F427"}.fa-hornbill:before{content:"\F592"}.fa-horse:before{content:"\F6F0"}.fa-horse-head:before{content:"\F7AB"}.fa-hospital:before{content:"\F0F8"}.fa-hospital-alt:before{content:"\F47D"}.fa-hospital-symbol:before{content:"\F47E"}.fa-hot-tub:before{content:"\F593"}.fa-hotdog:before{content:"\F80F"}.fa-hotel:before{content:"\F594"}.fa-hotjar:before{content:"\F3B1"}.fa-hourglass:before{content:"\F254"}.fa-hourglass-end:before{content:"\F253"}.fa-hourglass-half:before{content:"\F252"}.fa-hourglass-start:before{content:"\F251"}.fa-house-damage:before{content:"\F6F1"}.fa-houzz:before{content:"\F27C"}.fa-hryvnia:before{content:"\F6F2"}.fa-html5:before{content:"\F13B"}.fa-hubspot:before{content:"\F3B2"}.fa-i-cursor:before{content:"\F246"}.fa-ice-cream:before{content:"\F810"}.fa-icicles:before{content:"\F7AD"}.fa-icons:before{content:"\F86D"}.fa-id-badge:before{content:"\F2C1"}.fa-id-card:before{content:"\F2C2"}.fa-id-card-alt:before{content:"\F47F"}.fa-ideal:before{content:"\F913"}.fa-igloo:before{content:"\F7AE"}.fa-image:before{content:"\F03E"}.fa-images:before{content:"\F302"}.fa-imdb:before{content:"\F2D8"}.fa-inbox:before{content:"\F01C"}.fa-indent:before{content:"\F03C"}.fa-industry:before{content:"\F275"}.fa-infinity:before{content:"\F534"}.fa-info:before{content:"\F129"}.fa-info-circle:before{content:"\F05A"}.fa-instagram:before{content:"\F16D"}.fa-instagram-square:before{content:"\F955"}.fa-intercom:before{content:"\F7AF"}.fa-internet-explorer:before{content:"\F26B"}.fa-invision:before{content:"\F7B0"}.fa-ioxhost:before{content:"\F208"}.fa-italic:before{content:"\F033"}.fa-itch-io:before{content:"\F83A"}.fa-itunes:before{content:"\F3B4"}.fa-itunes-note:before{content:"\F3B5"}.fa-java:before{content:"\F4E4"}.fa-jedi:before{content:"\F669"}.fa-jedi-order:before{content:"\F50E"}.fa-jenkins:before{content:"\F3B6"}.fa-jira:before{content:"\F7B1"}.fa-joget:before{content:"\F3B7"}.fa-joint:before{content:"\F595"}.fa-joomla:before{content:"\F1AA"}.fa-journal-whills:before{content:"\F66A"}.fa-js:before{content:"\F3B8"}.fa-js-square:before{content:"\F3B9"}.fa-jsfiddle:before{content:"\F1CC"}.fa-kaaba:before{content:"\F66B"}.fa-kaggle:before{content:"\F5FA"}.fa-key:before{content:"\F084"}.fa-keybase:before{content:"\F4F5"}.fa-keyboard:before{content:"\F11C"}.fa-keycdn:before{content:"\F3BA"}.fa-khanda:before{content:"\F66D"}.fa-kickstarter:before{content:"\F3BB"}.fa-kickstarter-k:before{content:"\F3BC"}.fa-kiss:before{content:"\F596"}.fa-kiss-beam:before{content:"\F597"}.fa-kiss-wink-heart:before{content:"\F598"}.fa-kiwi-bird:before{content:"\F535"}.fa-korvue:before{content:"\F42F"}.fa-landmark:before{content:"\F66F"}.fa-language:before{content:"\F1AB"}.fa-laptop:before{content:"\F109"}.fa-laptop-code:before{content:"\F5FC"}.fa-laptop-medical:before{content:"\F812"}.fa-laravel:before{content:"\F3BD"}.fa-lastfm:before{content:"\F202"}.fa-lastfm-square:before{content:"\F203"}.fa-laugh:before{content:"\F599"}.fa-laugh-beam:before{content:"\F59A"}.fa-laugh-squint:before{content:"\F59B"}.fa-laugh-wink:before{content:"\F59C"}.fa-layer-group:before{content:"\F5FD"}.fa-leaf:before{content:"\F06C"}.fa-leanpub:before{content:"\F212"}.fa-lemon:before{content:"\F094"}.fa-less:before{content:"\F41D"}.fa-less-than:before{content:"\F536"}.fa-less-than-equal:before{content:"\F537"}.fa-level-down-alt:before{content:"\F3BE"}.fa-level-up-alt:before{content:"\F3BF"}.fa-life-ring:before{content:"\F1CD"}.fa-lightbulb:before{content:"\F0EB"}.fa-line:before{content:"\F3C0"}.fa-link:before{content:"\F0C1"}.fa-linkedin:before{content:"\F08C"}.fa-linkedin-in:before{content:"\F0E1"}.fa-linode:before{content:"\F2B8"}.fa-linux:before{content:"\F17C"}.fa-lira-sign:before{content:"\F195"}.fa-list:before{content:"\F03A"}.fa-list-alt:before{content:"\F022"}.fa-list-ol:before{content:"\F0CB"}.fa-list-ul:before{content:"\F0CA"}.fa-location-arrow:before{content:"\F124"}.fa-lock:before{content:"\F023"}.fa-lock-open:before{content:"\F3C1"}.fa-long-arrow-alt-down:before{content:"\F309"}.fa-long-arrow-alt-left:before{content:"\F30A"}.fa-long-arrow-alt-right:before{content:"\F30B"}.fa-long-arrow-alt-up:before{content:"\F30C"}.fa-low-vision:before{content:"\F2A8"}.fa-luggage-cart:before{content:"\F59D"}.fa-lyft:before{content:"\F3C3"}.fa-magento:before{content:"\F3C4"}.fa-magic:before{content:"\F0D0"}.fa-magnet:before{content:"\F076"}.fa-mail-bulk:before{content:"\F674"}.fa-mailchimp:before{content:"\F59E"}.fa-male:before{content:"\F183"}.fa-mandalorian:before{content:"\F50F"}.fa-map:before{content:"\F279"}.fa-map-marked:before{content:"\F59F"}.fa-map-marked-alt:before{content:"\F5A0"}.fa-map-marker:before{content:"\F041"}.fa-map-marker-alt:before{content:"\F3C5"}.fa-map-pin:before{content:"\F276"}.fa-map-signs:before{content:"\F277"}.fa-markdown:before{content:"\F60F"}.fa-marker:before{content:"\F5A1"}.fa-mars:before{content:"\F222"}.fa-mars-double:before{content:"\F227"}.fa-mars-stroke:before{content:"\F229"}.fa-mars-stroke-h:before{content:"\F22B"}.fa-mars-stroke-v:before{content:"\F22A"}.fa-mask:before{content:"\F6FA"}.fa-mastodon:before{content:"\F4F6"}.fa-maxcdn:before{content:"\F136"}.fa-mdb:before{content:"\F8CA"}.fa-medal:before{content:"\F5A2"}.fa-medapps:before{content:"\F3C6"}.fa-medium:before{content:"\F23A"}.fa-medium-m:before{content:"\F3C7"}.fa-medkit:before{content:"\F0FA"}.fa-medrt:before{content:"\F3C8"}.fa-meetup:before{content:"\F2E0"}.fa-megaport:before{content:"\F5A3"}.fa-meh:before{content:"\F11A"}.fa-meh-blank:before{content:"\F5A4"}.fa-meh-rolling-eyes:before{content:"\F5A5"}.fa-memory:before{content:"\F538"}.fa-mendeley:before{content:"\F7B3"}.fa-menorah:before{content:"\F676"}.fa-mercury:before{content:"\F223"}.fa-meteor:before{content:"\F753"}.fa-microblog:before{content:"\F91A"}.fa-microchip:before{content:"\F2DB"}.fa-microphone:before{content:"\F130"}.fa-microphone-alt:before{content:"\F3C9"}.fa-microphone-alt-slash:before{content:"\F539"}.fa-microphone-slash:before{content:"\F131"}.fa-microscope:before{content:"\F610"}.fa-microsoft:before{content:"\F3CA"}.fa-minus:before{content:"\F068"}.fa-minus-circle:before{content:"\F056"}.fa-minus-square:before{content:"\F146"}.fa-mitten:before{content:"\F7B5"}.fa-mix:before{content:"\F3CB"}.fa-mixcloud:before{content:"\F289"}.fa-mixer:before{content:"\F956"}.fa-mizuni:before{content:"\F3CC"}.fa-mobile:before{content:"\F10B"}.fa-mobile-alt:before{content:"\F3CD"}.fa-modx:before{content:"\F285"}.fa-monero:before{content:"\F3D0"}.fa-money-bill:before{content:"\F0D6"}.fa-money-bill-alt:before{content:"\F3D1"}.fa-money-bill-wave:before{content:"\F53A"}.fa-money-bill-wave-alt:before{content:"\F53B"}.fa-money-check:before{content:"\F53C"}.fa-money-check-alt:before{content:"\F53D"}.fa-monument:before{content:"\F5A6"}.fa-moon:before{content:"\F186"}.fa-mortar-pestle:before{content:"\F5A7"}.fa-mosque:before{content:"\F678"}.fa-motorcycle:before{content:"\F21C"}.fa-mountain:before{content:"\F6FC"}.fa-mouse:before{content:"\F8CC"}.fa-mouse-pointer:before{content:"\F245"}.fa-mug-hot:before{content:"\F7B6"}.fa-music:before{content:"\F001"}.fa-napster:before{content:"\F3D2"}.fa-neos:before{content:"\F612"}.fa-network-wired:before{content:"\F6FF"}.fa-neuter:before{content:"\F22C"}.fa-newspaper:before{content:"\F1EA"}.fa-nimblr:before{content:"\F5A8"}.fa-node:before{content:"\F419"}.fa-node-js:before{content:"\F3D3"}.fa-not-equal:before{content:"\F53E"}.fa-notes-medical:before{content:"\F481"}.fa-npm:before{content:"\F3D4"}.fa-ns8:before{content:"\F3D5"}.fa-nutritionix:before{content:"\F3D6"}.fa-object-group:before{content:"\F247"}.fa-object-ungroup:before{content:"\F248"}.fa-odnoklassniki:before{content:"\F263"}.fa-odnoklassniki-square:before{content:"\F264"}.fa-oil-can:before{content:"\F613"}.fa-old-republic:before{content:"\F510"}.fa-om:before{content:"\F679"}.fa-opencart:before{content:"\F23D"}.fa-openid:before{content:"\F19B"}.fa-opera:before{content:"\F26A"}.fa-optin-monster:before{content:"\F23C"}.fa-orcid:before{content:"\F8D2"}.fa-osi:before{content:"\F41A"}.fa-otter:before{content:"\F700"}.fa-outdent:before{content:"\F03B"}.fa-page4:before{content:"\F3D7"}.fa-pagelines:before{content:"\F18C"}.fa-pager:before{content:"\F815"}.fa-paint-brush:before{content:"\F1FC"}.fa-paint-roller:before{content:"\F5AA"}.fa-palette:before{content:"\F53F"}.fa-palfed:before{content:"\F3D8"}.fa-pallet:before{content:"\F482"}.fa-paper-plane:before{content:"\F1D8"}.fa-paperclip:before{content:"\F0C6"}.fa-parachute-box:before{content:"\F4CD"}.fa-paragraph:before{content:"\F1DD"}.fa-parking:before{content:"\F540"}.fa-passport:before{content:"\F5AB"}.fa-pastafarianism:before{content:"\F67B"}.fa-paste:before{content:"\F0EA"}.fa-patreon:before{content:"\F3D9"}.fa-pause:before{content:"\F04C"}.fa-pause-circle:before{content:"\F28B"}.fa-paw:before{content:"\F1B0"}.fa-paypal:before{content:"\F1ED"}.fa-peace:before{content:"\F67C"}.fa-pen:before{content:"\F304"}.fa-pen-alt:before{content:"\F305"}.fa-pen-fancy:before{content:"\F5AC"}.fa-pen-nib:before{content:"\F5AD"}.fa-pen-square:before{content:"\F14B"}.fa-pencil-alt:before{content:"\F303"}.fa-pencil-ruler:before{content:"\F5AE"}.fa-penny-arcade:before{content:"\F704"}.fa-people-carry:before{content:"\F4CE"}.fa-pepper-hot:before{content:"\F816"}.fa-percent:before{content:"\F295"}.fa-percentage:before{content:"\F541"}.fa-periscope:before{content:"\F3DA"}.fa-person-booth:before{content:"\F756"}.fa-phabricator:before{content:"\F3DB"}.fa-phoenix-framework:before{content:"\F3DC"}.fa-phoenix-squadron:before{content:"\F511"}.fa-phone:before{content:"\F095"}.fa-phone-alt:before{content:"\F879"}.fa-phone-slash:before{content:"\F3DD"}.fa-phone-square:before{content:"\F098"}.fa-phone-square-alt:before{content:"\F87B"}.fa-phone-volume:before{content:"\F2A0"}.fa-photo-video:before{content:"\F87C"}.fa-php:before{content:"\F457"}.fa-pied-piper:before{content:"\F2AE"}.fa-pied-piper-alt:before{content:"\F1A8"}.fa-pied-piper-hat:before{content:"\F4E5"}.fa-pied-piper-pp:before{content:"\F1A7"}.fa-pied-piper-square:before{content:"\F91E"}.fa-piggy-bank:before{content:"\F4D3"}.fa-pills:before{content:"\F484"}.fa-pinterest:before{content:"\F0D2"}.fa-pinterest-p:before{content:"\F231"}.fa-pinterest-square:before{content:"\F0D3"}.fa-pizza-slice:before{content:"\F818"}.fa-place-of-worship:before{content:"\F67F"}.fa-plane:before{content:"\F072"}.fa-plane-arrival:before{content:"\F5AF"}.fa-plane-departure:before{content:"\F5B0"}.fa-play:before{content:"\F04B"}.fa-play-circle:before{content:"\F144"}.fa-playstation:before{content:"\F3DF"}.fa-plug:before{content:"\F1E6"}.fa-plus:before{content:"\F067"}.fa-plus-circle:before{content:"\F055"}.fa-plus-square:before{content:"\F0FE"}.fa-podcast:before{content:"\F2CE"}.fa-poll:before{content:"\F681"}.fa-poll-h:before{content:"\F682"}.fa-poo:before{content:"\F2FE"}.fa-poo-storm:before{content:"\F75A"}.fa-poop:before{content:"\F619"}.fa-portrait:before{content:"\F3E0"}.fa-pound-sign:before{content:"\F154"}.fa-power-off:before{content:"\F011"}.fa-pray:before{content:"\F683"}.fa-praying-hands:before{content:"\F684"}.fa-prescription:before{content:"\F5B1"}.fa-prescription-bottle:before{content:"\F485"}.fa-prescription-bottle-alt:before{content:"\F486"}.fa-print:before{content:"\F02F"}.fa-procedures:before{content:"\F487"}.fa-product-hunt:before{content:"\F288"}.fa-project-diagram:before{content:"\F542"}.fa-pushed:before{content:"\F3E1"}.fa-puzzle-piece:before{content:"\F12E"}.fa-python:before{content:"\F3E2"}.fa-qq:before{content:"\F1D6"}.fa-qrcode:before{content:"\F029"}.fa-question:before{content:"\F128"}.fa-question-circle:before{content:"\F059"}.fa-quidditch:before{content:"\F458"}.fa-quinscape:before{content:"\F459"}.fa-quora:before{content:"\F2C4"}.fa-quote-left:before{content:"\F10D"}.fa-quote-right:before{content:"\F10E"}.fa-quran:before{content:"\F687"}.fa-r-project:before{content:"\F4F7"}.fa-radiation:before{content:"\F7B9"}.fa-radiation-alt:before{content:"\F7BA"}.fa-rainbow:before{content:"\F75B"}.fa-random:before{content:"\F074"}.fa-raspberry-pi:before{content:"\F7BB"}.fa-ravelry:before{content:"\F2D9"}.fa-react:before{content:"\F41B"}.fa-reacteurope:before{content:"\F75D"}.fa-readme:before{content:"\F4D5"}.fa-rebel:before{content:"\F1D0"}.fa-receipt:before{content:"\F543"}.fa-record-vinyl:before{content:"\F8D9"}.fa-recycle:before{content:"\F1B8"}.fa-red-river:before{content:"\F3E3"}.fa-reddit:before{content:"\F1A1"}.fa-reddit-alien:before{content:"\F281"}.fa-reddit-square:before{content:"\F1A2"}.fa-redhat:before{content:"\F7BC"}.fa-redo:before{content:"\F01E"}.fa-redo-alt:before{content:"\F2F9"}.fa-registered:before{content:"\F25D"}.fa-remove-format:before{content:"\F87D"}.fa-renren:before{content:"\F18B"}.fa-reply:before{content:"\F3E5"}.fa-reply-all:before{content:"\F122"}.fa-replyd:before{content:"\F3E6"}.fa-republican:before{content:"\F75E"}.fa-researchgate:before{content:"\F4F8"}.fa-resolving:before{content:"\F3E7"}.fa-restroom:before{content:"\F7BD"}.fa-retweet:before{content:"\F079"}.fa-rev:before{content:"\F5B2"}.fa-ribbon:before{content:"\F4D6"}.fa-ring:before{content:"\F70B"}.fa-road:before{content:"\F018"}.fa-robot:before{content:"\F544"}.fa-rocket:before{content:"\F135"}.fa-rocketchat:before{content:"\F3E8"}.fa-rockrms:before{content:"\F3E9"}.fa-route:before{content:"\F4D7"}.fa-rss:before{content:"\F09E"}.fa-rss-square:before{content:"\F143"}.fa-ruble-sign:before{content:"\F158"}.fa-ruler:before{content:"\F545"}.fa-ruler-combined:before{content:"\F546"}.fa-ruler-horizontal:before{content:"\F547"}.fa-ruler-vertical:before{content:"\F548"}.fa-running:before{content:"\F70C"}.fa-rupee-sign:before{content:"\F156"}.fa-sad-cry:before{content:"\F5B3"}.fa-sad-tear:before{content:"\F5B4"}.fa-safari:before{content:"\F267"}.fa-salesforce:before{content:"\F83B"}.fa-sass:before{content:"\F41E"}.fa-satellite:before{content:"\F7BF"}.fa-satellite-dish:before{content:"\F7C0"}.fa-save:before{content:"\F0C7"}.fa-schlix:before{content:"\F3EA"}.fa-school:before{content:"\F549"}.fa-screwdriver:before{content:"\F54A"}.fa-scribd:before{content:"\F28A"}.fa-scroll:before{content:"\F70E"}.fa-sd-card:before{content:"\F7C2"}.fa-search:before{content:"\F002"}.fa-search-dollar:before{content:"\F688"}.fa-search-location:before{content:"\F689"}.fa-search-minus:before{content:"\F010"}.fa-search-plus:before{content:"\F00E"}.fa-searchengin:before{content:"\F3EB"}.fa-seedling:before{content:"\F4D8"}.fa-sellcast:before{content:"\F2DA"}.fa-sellsy:before{content:"\F213"}.fa-server:before{content:"\F233"}.fa-servicestack:before{content:"\F3EC"}.fa-shapes:before{content:"\F61F"}.fa-share:before{content:"\F064"}.fa-share-alt:before{content:"\F1E0"}.fa-share-alt-square:before{content:"\F1E1"}.fa-share-square:before{content:"\F14D"}.fa-shekel-sign:before{content:"\F20B"}.fa-shield-alt:before{content:"\F3ED"}.fa-ship:before{content:"\F21A"}.fa-shipping-fast:before{content:"\F48B"}.fa-shirtsinbulk:before{content:"\F214"}.fa-shoe-prints:before{content:"\F54B"}.fa-shopify:before{content:"\F957"}.fa-shopping-bag:before{content:"\F290"}.fa-shopping-basket:before{content:"\F291"}.fa-shopping-cart:before{content:"\F07A"}.fa-shopware:before{content:"\F5B5"}.fa-shower:before{content:"\F2CC"}.fa-shuttle-van:before{content:"\F5B6"}.fa-sign:before{content:"\F4D9"}.fa-sign-in-alt:before{content:"\F2F6"}.fa-sign-language:before{content:"\F2A7"}.fa-sign-out-alt:before{content:"\F2F5"}.fa-signal:before{content:"\F012"}.fa-signature:before{content:"\F5B7"}.fa-sim-card:before{content:"\F7C4"}.fa-simplybuilt:before{content:"\F215"}.fa-sistrix:before{content:"\F3EE"}.fa-sitemap:before{content:"\F0E8"}.fa-sith:before{content:"\F512"}.fa-skating:before{content:"\F7C5"}.fa-sketch:before{content:"\F7C6"}.fa-skiing:before{content:"\F7C9"}.fa-skiing-nordic:before{content:"\F7CA"}.fa-skull:before{content:"\F54C"}.fa-skull-crossbones:before{content:"\F714"}.fa-skyatlas:before{content:"\F216"}.fa-skype:before{content:"\F17E"}.fa-slack:before{content:"\F198"}.fa-slack-hash:before{content:"\F3EF"}.fa-slash:before{content:"\F715"}.fa-sleigh:before{content:"\F7CC"}.fa-sliders-h:before{content:"\F1DE"}.fa-slideshare:before{content:"\F1E7"}.fa-smile:before{content:"\F118"}.fa-smile-beam:before{content:"\F5B8"}.fa-smile-wink:before{content:"\F4DA"}.fa-smog:before{content:"\F75F"}.fa-smoking:before{content:"\F48D"}.fa-smoking-ban:before{content:"\F54D"}.fa-sms:before{content:"\F7CD"}.fa-snapchat:before{content:"\F2AB"}.fa-snapchat-ghost:before{content:"\F2AC"}.fa-snapchat-square:before{content:"\F2AD"}.fa-snowboarding:before{content:"\F7CE"}.fa-snowflake:before{content:"\F2DC"}.fa-snowman:before{content:"\F7D0"}.fa-snowplow:before{content:"\F7D2"}.fa-socks:before{content:"\F696"}.fa-solar-panel:before{content:"\F5BA"}.fa-sort:before{content:"\F0DC"}.fa-sort-alpha-down:before{content:"\F15D"}.fa-sort-alpha-down-alt:before{content:"\F881"}.fa-sort-alpha-up:before{content:"\F15E"}.fa-sort-alpha-up-alt:before{content:"\F882"}.fa-sort-amount-down:before{content:"\F160"}.fa-sort-amount-down-alt:before{content:"\F884"}.fa-sort-amount-up:before{content:"\F161"}.fa-sort-amount-up-alt:before{content:"\F885"}.fa-sort-down:before{content:"\F0DD"}.fa-sort-numeric-down:before{content:"\F162"}.fa-sort-numeric-down-alt:before{content:"\F886"}.fa-sort-numeric-up:before{content:"\F163"}.fa-sort-numeric-up-alt:before{content:"\F887"}.fa-sort-up:before{content:"\F0DE"}.fa-soundcloud:before{content:"\F1BE"}.fa-sourcetree:before{content:"\F7D3"}.fa-spa:before{content:"\F5BB"}.fa-space-shuttle:before{content:"\F197"}.fa-speakap:before{content:"\F3F3"}.fa-speaker-deck:before{content:"\F83C"}.fa-spell-check:before{content:"\F891"}.fa-spider:before{content:"\F717"}.fa-spinner:before{content:"\F110"}.fa-splotch:before{content:"\F5BC"}.fa-spotify:before{content:"\F1BC"}.fa-spray-can:before{content:"\F5BD"}.fa-square:before{content:"\F0C8"}.fa-square-full:before{content:"\F45C"}.fa-square-root-alt:before{content:"\F698"}.fa-squarespace:before{content:"\F5BE"}.fa-stack-exchange:before{content:"\F18D"}.fa-stack-overflow:before{content:"\F16C"}.fa-stackpath:before{content:"\F842"}.fa-stamp:before{content:"\F5BF"}.fa-star:before{content:"\F005"}.fa-star-and-crescent:before{content:"\F699"}.fa-star-half:before{content:"\F089"}.fa-star-half-alt:before{content:"\F5C0"}.fa-star-of-david:before{content:"\F69A"}.fa-star-of-life:before{content:"\F621"}.fa-staylinked:before{content:"\F3F5"}.fa-steam:before{content:"\F1B6"}.fa-steam-square:before{content:"\F1B7"}.fa-steam-symbol:before{content:"\F3F6"}.fa-step-backward:before{content:"\F048"}.fa-step-forward:before{content:"\F051"}.fa-stethoscope:before{content:"\F0F1"}.fa-sticker-mule:before{content:"\F3F7"}.fa-sticky-note:before{content:"\F249"}.fa-stop:before{content:"\F04D"}.fa-stop-circle:before{content:"\F28D"}.fa-stopwatch:before{content:"\F2F2"}.fa-store:before{content:"\F54E"}.fa-store-alt:before{content:"\F54F"}.fa-strava:before{content:"\F428"}.fa-stream:before{content:"\F550"}.fa-street-view:before{content:"\F21D"}.fa-strikethrough:before{content:"\F0CC"}.fa-stripe:before{content:"\F429"}.fa-stripe-s:before{content:"\F42A"}.fa-stroopwafel:before{content:"\F551"}.fa-studiovinari:before{content:"\F3F8"}.fa-stumbleupon:before{content:"\F1A4"}.fa-stumbleupon-circle:before{content:"\F1A3"}.fa-subscript:before{content:"\F12C"}.fa-subway:before{content:"\F239"}.fa-suitcase:before{content:"\F0F2"}.fa-suitcase-rolling:before{content:"\F5C1"}.fa-sun:before{content:"\F185"}.fa-superpowers:before{content:"\F2DD"}.fa-superscript:before{content:"\F12B"}.fa-supple:before{content:"\F3F9"}.fa-surprise:before{content:"\F5C2"}.fa-suse:before{content:"\F7D6"}.fa-swatchbook:before{content:"\F5C3"}.fa-swift:before{content:"\F8E1"}.fa-swimmer:before{content:"\F5C4"}.fa-swimming-pool:before{content:"\F5C5"}.fa-symfony:before{content:"\F83D"}.fa-synagogue:before{content:"\F69B"}.fa-sync:before{content:"\F021"}.fa-sync-alt:before{content:"\F2F1"}.fa-syringe:before{content:"\F48E"}.fa-table:before{content:"\F0CE"}.fa-table-tennis:before{content:"\F45D"}.fa-tablet:before{content:"\F10A"}.fa-tablet-alt:before{content:"\F3FA"}.fa-tablets:before{content:"\F490"}.fa-tachometer-alt:before{content:"\F3FD"}.fa-tag:before{content:"\F02B"}.fa-tags:before{content:"\F02C"}.fa-tape:before{content:"\F4DB"}.fa-tasks:before{content:"\F0AE"}.fa-taxi:before{content:"\F1BA"}.fa-teamspeak:before{content:"\F4F9"}.fa-teeth:before{content:"\F62E"}.fa-teeth-open:before{content:"\F62F"}.fa-telegram:before{content:"\F2C6"}.fa-telegram-plane:before{content:"\F3FE"}.fa-temperature-high:before{content:"\F769"}.fa-temperature-low:before{content:"\F76B"}.fa-tencent-weibo:before{content:"\F1D5"}.fa-tenge:before{content:"\F7D7"}.fa-terminal:before{content:"\F120"}.fa-text-height:before{content:"\F034"}.fa-text-width:before{content:"\F035"}.fa-th:before{content:"\F00A"}.fa-th-large:before{content:"\F009"}.fa-th-list:before{content:"\F00B"}.fa-the-red-yeti:before{content:"\F69D"}.fa-theater-masks:before{content:"\F630"}.fa-themeco:before{content:"\F5C6"}.fa-themeisle:before{content:"\F2B2"}.fa-thermometer:before{content:"\F491"}.fa-thermometer-empty:before{content:"\F2CB"}.fa-thermometer-full:before{content:"\F2C7"}.fa-thermometer-half:before{content:"\F2C9"}.fa-thermometer-quarter:before{content:"\F2CA"}.fa-thermometer-three-quarters:before{content:"\F2C8"}.fa-think-peaks:before{content:"\F731"}.fa-thumbs-down:before{content:"\F165"}.fa-thumbs-up:before{content:"\F164"}.fa-thumbtack:before{content:"\F08D"}.fa-ticket-alt:before{content:"\F3FF"}.fa-times:before{content:"\F00D"}.fa-times-circle:before{content:"\F057"}.fa-tint:before{content:"\F043"}.fa-tint-slash:before{content:"\F5C7"}.fa-tired:before{content:"\F5C8"}.fa-toggle-off:before{content:"\F204"}.fa-toggle-on:before{content:"\F205"}.fa-toilet:before{content:"\F7D8"}.fa-toilet-paper:before{content:"\F71E"}.fa-toolbox:before{content:"\F552"}.fa-tools:before{content:"\F7D9"}.fa-tooth:before{content:"\F5C9"}.fa-torah:before{content:"\F6A0"}.fa-torii-gate:before{content:"\F6A1"}.fa-tractor:before{content:"\F722"}.fa-trade-federation:before{content:"\F513"}.fa-trademark:before{content:"\F25C"}.fa-traffic-light:before{content:"\F637"}.fa-trailer:before{content:"\F941"}.fa-train:before{content:"\F238"}.fa-tram:before{content:"\F7DA"}.fa-transgender:before{content:"\F224"}.fa-transgender-alt:before{content:"\F225"}.fa-trash:before{content:"\F1F8"}.fa-trash-alt:before{content:"\F2ED"}.fa-trash-restore:before{content:"\F829"}.fa-trash-restore-alt:before{content:"\F82A"}.fa-tree:before{content:"\F1BB"}.fa-trello:before{content:"\F181"}.fa-tripadvisor:before{content:"\F262"}.fa-trophy:before{content:"\F091"}.fa-truck:before{content:"\F0D1"}.fa-truck-loading:before{content:"\F4DE"}.fa-truck-monster:before{content:"\F63B"}.fa-truck-moving:before{content:"\F4DF"}.fa-truck-pickup:before{content:"\F63C"}.fa-tshirt:before{content:"\F553"}.fa-tty:before{content:"\F1E4"}.fa-tumblr:before{content:"\F173"}.fa-tumblr-square:before{content:"\F174"}.fa-tv:before{content:"\F26C"}.fa-twitch:before{content:"\F1E8"}.fa-twitter:before{content:"\F099"}.fa-twitter-square:before{content:"\F081"}.fa-typo3:before{content:"\F42B"}.fa-uber:before{content:"\F402"}.fa-ubuntu:before{content:"\F7DF"}.fa-uikit:before{content:"\F403"}.fa-umbraco:before{content:"\F8E8"}.fa-umbrella:before{content:"\F0E9"}.fa-umbrella-beach:before{content:"\F5CA"}.fa-underline:before{content:"\F0CD"}.fa-undo:before{content:"\F0E2"}.fa-undo-alt:before{content:"\F2EA"}.fa-uniregistry:before{content:"\F404"}.fa-unity:before{content:"\F949"}.fa-universal-access:before{content:"\F29A"}.fa-university:before{content:"\F19C"}.fa-unlink:before{content:"\F127"}.fa-unlock:before{content:"\F09C"}.fa-unlock-alt:before{content:"\F13E"}.fa-untappd:before{content:"\F405"}.fa-upload:before{content:"\F093"}.fa-ups:before{content:"\F7E0"}.fa-usb:before{content:"\F287"}.fa-user:before{content:"\F007"}.fa-user-alt:before{content:"\F406"}.fa-user-alt-slash:before{content:"\F4FA"}.fa-user-astronaut:before{content:"\F4FB"}.fa-user-check:before{content:"\F4FC"}.fa-user-circle:before{content:"\F2BD"}.fa-user-clock:before{content:"\F4FD"}.fa-user-cog:before{content:"\F4FE"}.fa-user-edit:before{content:"\F4FF"}.fa-user-friends:before{content:"\F500"}.fa-user-graduate:before{content:"\F501"}.fa-user-injured:before{content:"\F728"}.fa-user-lock:before{content:"\F502"}.fa-user-md:before{content:"\F0F0"}.fa-user-minus:before{content:"\F503"}.fa-user-ninja:before{content:"\F504"}.fa-user-nurse:before{content:"\F82F"}.fa-user-plus:before{content:"\F234"}.fa-user-secret:before{content:"\F21B"}.fa-user-shield:before{content:"\F505"}.fa-user-slash:before{content:"\F506"}.fa-user-tag:before{content:"\F507"}.fa-user-tie:before{content:"\F508"}.fa-user-times:before{content:"\F235"}.fa-users:before{content:"\F0C0"}.fa-users-cog:before{content:"\F509"}.fa-usps:before{content:"\F7E1"}.fa-ussunnah:before{content:"\F407"}.fa-utensil-spoon:before{content:"\F2E5"}.fa-utensils:before{content:"\F2E7"}.fa-vaadin:before{content:"\F408"}.fa-vector-square:before{content:"\F5CB"}.fa-venus:before{content:"\F221"}.fa-venus-double:before{content:"\F226"}.fa-venus-mars:before{content:"\F228"}.fa-viacoin:before{content:"\F237"}.fa-viadeo:before{content:"\F2A9"}.fa-viadeo-square:before{content:"\F2AA"}.fa-vial:before{content:"\F492"}.fa-vials:before{content:"\F493"}.fa-viber:before{content:"\F409"}.fa-video:before{content:"\F03D"}.fa-video-slash:before{content:"\F4E2"}.fa-vihara:before{content:"\F6A7"}.fa-vimeo:before{content:"\F40A"}.fa-vimeo-square:before{content:"\F194"}.fa-vimeo-v:before{content:"\F27D"}.fa-vine:before{content:"\F1CA"}.fa-vk:before{content:"\F189"}.fa-vnv:before{content:"\F40B"}.fa-voicemail:before{content:"\F897"}.fa-volleyball-ball:before{content:"\F45F"}.fa-volume-down:before{content:"\F027"}.fa-volume-mute:before{content:"\F6A9"}.fa-volume-off:before{content:"\F026"}.fa-volume-up:before{content:"\F028"}.fa-vote-yea:before{content:"\F772"}.fa-vr-cardboard:before{content:"\F729"}.fa-vuejs:before{content:"\F41F"}.fa-walking:before{content:"\F554"}.fa-wallet:before{content:"\F555"}.fa-warehouse:before{content:"\F494"}.fa-water:before{content:"\F773"}.fa-wave-square:before{content:"\F83E"}.fa-waze:before{content:"\F83F"}.fa-weebly:before{content:"\F5CC"}.fa-weibo:before{content:"\F18A"}.fa-weight:before{content:"\F496"}.fa-weight-hanging:before{content:"\F5CD"}.fa-weixin:before{content:"\F1D7"}.fa-whatsapp:before{content:"\F232"}.fa-whatsapp-square:before{content:"\F40C"}.fa-wheelchair:before{content:"\F193"}.fa-whmcs:before{content:"\F40D"}.fa-wifi:before{content:"\F1EB"}.fa-wikipedia-w:before{content:"\F266"}.fa-wind:before{content:"\F72E"}.fa-window-close:before{content:"\F410"}.fa-window-maximize:before{content:"\F2D0"}.fa-window-minimize:before{content:"\F2D1"}.fa-window-restore:before{content:"\F2D2"}.fa-windows:before{content:"\F17A"}.fa-wine-bottle:before{content:"\F72F"}.fa-wine-glass:before{content:"\F4E3"}.fa-wine-glass-alt:before{content:"\F5CE"}.fa-wix:before{content:"\F5CF"}.fa-wizards-of-the-coast:before{content:"\F730"}.fa-wolf-pack-battalion:before{content:"\F514"}.fa-won-sign:before{content:"\F159"}.fa-wordpress:before{content:"\F19A"}.fa-wordpress-simple:before{content:"\F411"}.fa-wpbeginner:before{content:"\F297"}.fa-wpexplorer:before{content:"\F2DE"}.fa-wpforms:before{content:"\F298"}.fa-wpressr:before{content:"\F3E4"}.fa-wrench:before{content:"\F0AD"}.fa-x-ray:before{content:"\F497"}.fa-xbox:before{content:"\F412"}.fa-xing:before{content:"\F168"}.fa-xing-square:before{content:"\F169"}.fa-y-combinator:before{content:"\F23B"}.fa-yahoo:before{content:"\F19E"}.fa-yammer:before{content:"\F840"}.fa-yandex:before{content:"\F413"}.fa-yandex-international:before{content:"\F414"}.fa-yarn:before{content:"\F7E3"}.fa-yelp:before{content:"\F1E9"}.fa-yen-sign:before{content:"\F157"}.fa-yin-yang:before{content:"\F6AD"}.fa-yoast:before{content:"\F2B1"}.fa-youtube:before{content:"\F167"}.fa-youtube-square:before{content:"\F431"}.fa-zhihu:before{content:"\F63F"}.sr-only{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sr-only-focusable:active,.sr-only-focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}@font-face{font-family:Font Awesome\ 5 Brands;font-style:normal;font-weight:400;font-display:auto;src:url(/openj9/static/fa-brands-400-57dcda6f368ea90179f75cbdae96c263.eot);src:url(/openj9/static/fa-brands-400-57dcda6f368ea90179f75cbdae96c263.eot?#iefix) format("embedded-opentype"),url(/openj9/static/fa-brands-400-067595ad77ecc0db9c81c8905a7eef32.woff2) format("woff2"),url(/openj9/static/fa-brands-400-b564da88bbf0c4aa446fa19653713cd1.woff) format("woff"),url(/openj9/static/fa-brands-400-9ec698d1a597bff5df337094b71ddaaf.ttf) format("truetype"),url(/openj9/static/fa-brands-400-9d67fa1429375bd2a899a17eb77d0342.svg#fontawesome) format("svg")}.fab{font-family:Font Awesome\ 5 Brands}@font-face{font-family:Font Awesome\ 5 Free;font-style:normal;font-weight:400;font-display:auto;src:url(/openj9/static/fa-regular-400-3351f435b3c9037fd88aeb04dc1e43bc.eot);src:url(/openj9/static/fa-regular-400-3351f435b3c9037fd88aeb04dc1e43bc.eot?#iefix) format("embedded-opentype"),url(/openj9/static/fa-regular-400-4165c2688309cbfb1b877caf8f75afb5.woff2) format("woff2"),url(/openj9/static/fa-regular-400-73cf49a2232c06c920b7a34e36bfb58c.woff) format("woff"),url(/openj9/static/fa-regular-400-a0e3ac82940c1998c5977fd4bc1f5ef6.ttf) format("truetype"),url(/openj9/static/fa-regular-400-5d0861781aeef6c82fda3a3076954a1b.svg#fontawesome) format("svg")}.fab,.far{font-weight:400}@font-face{font-family:Font Awesome\ 5 Free;font-style:normal;font-weight:900;font-display:auto;src:url(/openj9/static/fa-solid-900-89e02bae13c9131c7468b1e729339ac1.eot);src:url(/openj9/static/fa-solid-900-89e02bae13c9131c7468b1e729339ac1.eot?#iefix) format("embedded-opentype"),url(/openj9/static/fa-solid-900-55eb2a60e8181f0e68b558c991973bf0.woff2) format("woff2"),url(/openj9/static/fa-solid-900-cdfec5cf5e9840889790bcf2c4042583.woff) format("woff"),url(/openj9/static/fa-solid-900-75f38a159982b6bd1704891332d95fa7.ttf) format("truetype"),url(/openj9/static/fa-solid-900-0724bb8b89ab6b8b9b7df917b17be0b7.svg#fontawesome) format("svg")}.fa,.far,.fas{font-family:Font Awesome\ 5 Free}.fa,.fas{font-weight:900}</style><meta name="generator" content="Gatsby 2.19.7"/><link rel="icon" href="/openj9/favicon-32x32.png?v=0a19b941415d1d6d03226a8c85fc39c9"/><link rel="manifest" href="/openj9/manifest.webmanifest"/><link rel="apple-touch-icon" sizes="48x48" href="/openj9/icons/icon-48x48.png?v=0a19b941415d1d6d03226a8c85fc39c9"/><link rel="apple-touch-icon" sizes="72x72" href="/openj9/icons/icon-72x72.png?v=0a19b941415d1d6d03226a8c85fc39c9"/><link rel="apple-touch-icon" sizes="96x96" href="/openj9/icons/icon-96x96.png?v=0a19b941415d1d6d03226a8c85fc39c9"/><link rel="apple-touch-icon" sizes="144x144" href="/openj9/icons/icon-144x144.png?v=0a19b941415d1d6d03226a8c85fc39c9"/><link rel="apple-touch-icon" sizes="192x192" href="/openj9/icons/icon-192x192.png?v=0a19b941415d1d6d03226a8c85fc39c9"/><link rel="apple-touch-icon" sizes="256x256" href="/openj9/icons/icon-256x256.png?v=0a19b941415d1d6d03226a8c85fc39c9"/><link rel="apple-touch-icon" sizes="384x384" href="/openj9/icons/icon-384x384.png?v=0a19b941415d1d6d03226a8c85fc39c9"/><link rel="apple-touch-icon" sizes="512x512" href="/openj9/icons/icon-512x512.png?v=0a19b941415d1d6d03226a8c85fc39c9"/><link rel="preconnect dns-prefetch" href="https://www.google-analytics.com"/><link as="script" rel="preload" href="/openj9/component---src-pages-index-js-743bf9596a9631508e4e.js"/><link as="script" rel="preload" href="/openj9/commons-42a47b90457bdd243664.js"/><link as="script" rel="preload" href="/openj9/app-0b96427b0b370a80fa06.js"/><link as="script" rel="preload" href="/openj9/styles-cc4082ebb0cb6903d934.js"/><link as="script" rel="preload" href="/openj9/webpack-runtime-c69760aa7e58303b27f8.js"/><link as="fetch" rel="preload" href="/openj9/page-data/index/page-data.json" crossorigin="anonymous"/></head><body><div id="___gatsby"><div style="outline:none" tabindex="-1" role="group" id="gatsby-focus-wrapper"><style data-emotion-css="t923zi">body{color:text;background-color:var(--theme-ui-colors-background,#FFFFFF);}</style><style data-emotion-css="1gb9wyy">*{box-sizing:border-box;}body{margin:0;font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.5;font-weight:400;}</style><style data-emotion-css="1xgro3h">*{padding:0;margin:0;}</style><style data-emotion-css="qjq6rr">.css-qjq6rr{display:none;background-color:#00000000;position:absolute;width:100%;color:var(--theme-ui-colors-lightText,#d8d8d8);padding-left:40px;padding-right:40px;padding-top:32px;padding-bottom:32px;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}@media screen and (min-width:560px){.css-qjq6rr{display:none;}}@media screen and (min-width:1000px){.css-qjq6rr{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}}@media screen and (min-width:1366px){.css-qjq6rr{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}}</style><header class="css-qjq6rr"><style data-emotion-css="7jnxbv">.css-7jnxbv{-webkit-flex:1;-ms-flex:1;flex:1;opacity:0;pointer-events:none;}</style><div class="css-7jnxbv"><a aria-current="page" class="" href="/openj9/"><img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNzlweCIgaGVpZ2h0PSIzM3B4IiB2aWV3Qm94PSIwIDAgNzkgMzMiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5Mb2dvPC90aXRsZT4KICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPgogICAgPGcgaWQ9IlBhZ2UtMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9IkxvZ28iIGZpbGwtcnVsZT0ibm9uemVybyI+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMC4wNDUyMzE4LDE5LjQ2MTIzMzcgQzkuMjQwNjc1MjUsMjAuNjk4NDMyOCA4LjEyNjE5NTA0LDIxLjMxNjY4NzggNi43MDA3Nzc4OSwyMS4zMTY2ODc4IEM1LjMxNTQ1ODI5LDIxLjMxNjY4NzggNC4yMDg2NTAxNywyMC43MTkxMTAzIDMuMzgwMjA4NzgsMTkuNTIzODE3NCBDMi41NTIyMDE2NiwxOC4zMjgyNDg5IDIuMTM4MDUzMzUsMTYuNzc4NDA3MSAyLjEzODA1MzM1LDE0Ljg3MzMyNzMgQzIuMTM4MDUzMzUsMTIuOTIyNzU3MSAyLjU0ODE0ODQ4LDExLjM0Mzk2NyAzLjM2ODMzODc1LDEwLjEzNzIzMjYgQzQuMTg4NjczNzgsOC45MzA2MzYxMiA1LjI5NTE5MjM4LDguMzI2OTkzMjQgNi42ODg3NjMxLDguMzI2OTkzMjQgQzguMDY2NTU1MzcsOC4zMjY5OTMyNCA5LjE3MTE5MjE0LDguODg1MjgzNjUgMTAuMDAzMzk3MiwxMC4wMDA0ODYgQzEwLjgzNTYwMjMsMTEuMTE2Mzc3NSAxMS4yNTE3NzcyLDEyLjY3NjI4MjIgMTEuMjUxNzc3MiwxNC42Nzk2NDg4IEMxMS4yNTE3NzcyLDE2LjYzMDM1NjggMTAuODQ5NDk4OSwxOC4yMjQxNzI1IDEwLjA0NTIzMTgsMTkuNDYxMjMzNyBNNi43MTI3OTI2OCw2LjczNDY5Mzg4IEM0LjY5MDExMDI1LDYuNzM0NjkzODggMy4wNjU2NTI5Myw3LjUwMTQxMjcgMS44MzkyNzU5NSw5LjAzNDAyMzI0IEMwLjYxMzE4ODQ4OSwxMC41NjY3NzE2IDAsMTIuNTA5NDg0NCAwLDE0Ljg2MTg4NTggQzAsMTcuMTE1NzI0OCAwLjU4NTM5NTI0MywxOS4wMTg1OTkxIDEuNzU2MDQwOTcsMjAuNTcwMDk1IEMyLjkyNjU0MTk1LDIyLjEyMjAwNDQgNC41NTg4MTYxMiwyMi44OTc5NTkyIDYuNjUzMDA4MjUsMjIuODk3OTU5MiBDOC43NzkxOTE1NywyMi44OTc5NTkyIDEwLjQzMzQ2ODcsMjIuMDgwMDk4MiAxMS42MTYyNzQsMjAuNDQ1MDY1NSBDMTIuNzk4NTAwMiwxOC44MDk3NTcxIDEzLjM4OTgzMDUsMTYuODkxNDQzNyAxMy4zODk4MzA1LDE0LjY5MTIyODEgQzEzLjM4OTgzMDUsMTIuMzk5NjE4MyAxMi43ODA1NTA0LDEwLjUwMDQ2NiAxMS41NjIyNzk4LDguOTkzOTA5MDQgQzEwLjM0Mzg2NDUsNy40ODgwNDEzIDguNzI3MzY4NzQsNi43MzQ2OTM4OCA2LjcxMjc5MjY4LDYuNzM0NjkzODgiIGlkPSJTaGFwZSIgZmlsbD0iIzVEQTdBMyI+PC9wYXRoPgogICAgICAgICAgICA8cGF0aCBkPSJNMjIuOTc0MzgxNywyMS4zNjc1NDcyIEMyMi4zMTQxOTk5LDIyLjA3MDg5MDkgMjEuNTU1MzY4NiwyMi40MjMxMzExIDIwLjY5OTU0OTUsMjIuNDIzMTMxMSBDMTkuOTYwMDU1MywyMi40MjMxMzExIDE5LjI1MDkyNjQsMjIuMTMwOTk0OCAxOC41Njk3NDU3LDIxLjU0NjU4MDEgQzE3Ljg4ODI2MjksMjAuOTYzMDE3OSAxNy41MTMzMDM4LDIwLjIyMzAxNTEgMTcuMzYyMjMyNSwxOS4zMjc5OTI0IEwxNy4zNjIyMzI1LDE1Ljk4NjA0NCBDMTcuNjY0Mzc1MiwxNS4xNzMxNDkxIDE3Ljk2OTM4ODIsMTQuNDgxNDU2OCAxOC41ODg0Nzg2LDEzLjkxMDk2NjggQzE5LjIwNzU2ODksMTMuMzQwNDc2OSAxOS45MDY3MjcxLDEzLjA1NTE2MDkgMjAuNjg3OTE3LDEzLjA1NTE2MDkgQzIxLjY3NjgzLDEzLjA1NTE2MDkgMjIuNDcwNDA3NywxMy40NTk2OTAxIDIzLjA2ODgwMTMsMTQuMjY4NjA2NSBDMjMuNjY2ODkyNywxNS4wNzc1MjI4IDIzLjk2NjAxNCwxNi4yMjg0NDg5IDIzLjk2NjAxNCwxNy43MjE1MjY5IEMyMy45NjYwMTQsMTkuNDQ4OTEwNyAyMy42MzUxNjc3LDIwLjY2NDYyOTcgMjIuOTc0MzgxNywyMS4zNjc1NDcyIE0yMS4xNjI3MzQyLDExLjQ0ODk3OTYgQzE5LjQwMzM1NzQsMTEuNDQ4OTc5NiAxOC4xMTc1ODkyLDEyLjMyNDUzNiAxNy4yMTExNjEyLDE0LjA3NDc5NjIgTDE3LjIxMTE2MTIsMTEuNjk4MjA0OCBMMTUuMzk4MzA1MSwxMS42OTgyMDQ4IEwxNS4zOTgzMDUxLDI3LjYxMjI0NDkgTDE3LjM2MjIzMjUsMjcuNjEyMjQ0OSBMMTcuMzYyMjMyNSwyMS44MjQ5MzM3IEMxOC4yNjg2NjA1LDIzLjIzOTQzNjEgMTkuNTA4OTU2MiwyMy45NDcwNDI1IDIxLjA4NzY1MTcsMjMuOTQ3MDQyNSBDMjIuNTU4OTM1NSwyMy45NDcwNDI1IDIzLjc2MjgyMywyMy4zNzk2Nzg2IDI0LjcwMjAzMzUsMjIuMjQ1NTE5MSBDMjUuNjQwNzkwOCwyMS4xMTA3OTEyIDI2LjExMDE2OTUsMTkuNTc3NTAxOCAyNi4xMTAxNjk1LDE3LjY0NTM2NjkgQzI2LjExMDE2OTUsMTUuODUzNDc0NCAyNS42NjI5OTgzLDE0LjM3MjkwMDMgMjQuNzUwNTI3NCwxMy4yMDMzNjA0IEMyMy44Mzc2MDMzLDEyLjAzMzY3ODUgMjIuNjQ4MDY3NiwxMS40NDg5Nzk2IDIxLjE2MjczNDIsMTEuNDQ4OTc5NiIgaWQ9IlNoYXBlIiBmaWxsPSIjNURBN0EzIj48L3BhdGg+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMC4yNjM1ODc2LDE2LjM2MzMzNjcgQzMwLjM0MTcwNzYsMTUuMjU4OTg2OCAzMC43MDEzMTY2LDE0LjQwODM2MTMgMzEuMzQxNzAwNiwxMy43NzA0NjExIEMzMS45ODE2NTYxLDEzLjEzMjQyMyAzMi43NjE0Mjc5LDEyLjgwNDAxNjkgMzMuNjgwNzMwMiwxMi44MDQwMTY5IEMzNC4zNjQxMDE2LDEyLjgwNDAxNjkgMzQuOTQ5MDczMiwxMi45NzU3NDMzIDM1LjQzNjUwMiwxMy4zMjkxMzUzIEMzNS45MjM1MDIzLDEzLjY4MTk3NTEgMzYuMjY5NDAxLDE0LjEyNTc4NTcgMzYuNDczNDg0MSwxNC42MjcwMjI1IEMzNi42NzgxMzg1LDE1LjEyODEyMTMgMzYuNzg3NTM1MSwxNS42NzMxMTggMzYuODAzMzg3NiwxNi4zNjMzMzY3IEwzMC4yNjM1ODc2LDE2LjM2MzMzNjcgWiBNMzcuMzc1MjIwMiwxMy4wMzA2ODQ4IEMzNi40MjgzNTQ1LDExLjk5MDI0OTEgMzUuMTc3NDM1LDExLjQ0ODk3OTYgMzMuNjIxNzQ3NSwxMS40NDg5Nzk2IEMzMi4wNDI5MjM5LDExLjQ0ODk3OTYgMzAuNzMwNTkzOCwxMi4wMDI1MzUgMjkuNjg2MDQyNCwxMy4xMzE0NTY3IEMyOC42NDEyMDU0LDE0LjI1OTgyNjIgMjguMTE4NjQ0MSwxNS43MzQ5NjE2IDI4LjExODY0NDEsMTcuNTY2OTQwMSBDMjguMTE4NjQ0MSwxOS4zNjA4MTg0IDI4LjYyMTA2ODQsMjAuODA3Mzc4OCAyOS42MjY5MTY4LDIxLjkxMzM4NTIgQzMwLjYzMjQ3OTYsMjMuMDE5OTQzOCAzMS45NDg1MjMsMjMuNTcxNDI4NiAzMy41NzQ5MDQsMjMuNTcxNDI4NiBDMzQuODA4MjU3MywyMy41NzE0Mjg2IDM1Ljg4MDIyOTIsMjMuMjQ4OTU4NCAzNi43OTE1MzM5LDIyLjYwNDcwODMgQzM3LjcwMzEyNDIsMjEuOTYwNzM0MiAzOC4zMTU4MDIsMjEuMTQ3MzgwNSAzOC42MzAxMzg2LDIwLjE2NDA5NSBMMzYuOTA5OTI3OCwxOS44MjI3MTI4IEMzNi4yODg5NjY3LDIxLjMzMzQ2MzUgMzUuMjIwNTY1MiwyMi4wODkyNTI5IDMzLjcwNDI5NDcsMjIuMDg5MjUyOSBDMzIuODYzNjgzNywyMi4wODkyNTI5IDMyLjA2NjM0NTYsMjEuODI4MDc0MiAzMS4zMTIyODA3LDIxLjIyMDY4MTcgQzMwLjU1ODA3MjksMjAuNjEzMDEzMiAzMC4xODA3NTQ3LDE5LjQwMDI5OSAzMC4xODA3NTQ3LDE3Ljc0Mzc3NDEgTDM4LjgzMDUwODUsMTcuNzQzNzc0MSBDMzguODA2OTQzOSwxNS41MzUwNzQzIDM4LjMyMTgwMDIsMTQuMDcwODQ0MyAzNy4zNzUyMjAyLDEzLjAzMDY4NDggTDM3LjM3NTIyMDIsMTMuMDMwNjg0OCBaIiBpZD0iU2hhcGUiIGZpbGw9IiM1REE3QTMiPjwvcGF0aD4KICAgICAgICAgICAgPHBhdGggZD0iTTQ4LjQzNjA2MzksMTIuMTMxMzMxIEM0Ny43NjA0NDM5LDExLjY3NjU3MTQgNDYuOTE5MzU2NiwxMS40NDg5Nzk2IDQ1Ljk1ODg0MjIsMTEuNDQ4OTc5NiBDNDQuMjkzMDQ0MywxMS40NDg5Nzk2IDQyLjk1MDQ1NjMsMTIuMjgxMTc0IDQxLjg2ODk3LDEzLjk0NTEzODggTDQxLjg2ODk3LDExLjY5NzA2ODggTDQwLjE2OTQ5MTUsMTEuNjk3MDY4OCBMNDAuMTY5NDkxNSwyMy41NzE0Mjg2IEw0Mi4wMjM0NjgxLDIzLjU3MTQyODYgTDQyLjAyMzQ2ODEsMTcuMDk0Mzg3NSBDNDIuMDIzNDY4MSwxNS44NzQwMTQ3IDQyLjM4NTkyMDUsMTQuODg5OTk4MiA0My4wNzg1MzUyLDE0LjE0MzE4NiBDNDMuNzcwNjg2NCwxMy4zOTY3OTggNDQuNjM1NDEyLDEzLjAyMzYwNCA0NS42NTUwOTkxLDEzLjAyMzYwNCBDNDYuMzk0NjgxMiwxMy4wMjM2MDQgNDcuMDQyODAwNSwxMy4yNDUyNTg2IDQ3LjU2MTE0MTUsMTMuNjg4NTY3OSBDNDguMDc5NjM2OSwxNC4xMzE1OTQ0IDQ4LjM1Nzg4NzksMTQuODk3NjMxNyA0OC4zNTc4ODc5LDE1Ljk4NjUzODQgTDQ4LjM1Nzg4NzksMjMuNTcxNDI4NiBMNTAuMjExODY0NCwyMy41NzE0Mjg2IEw1MC4yMTE4NjQ0LDE2Ljc0NDUxODEgQzUwLjIxMTg2NDQsMTUuMjU5Mzc1NSA1MC4wODE0NjgxLDE0LjIzMzA5MTkgNDkuODMwNDA4NywxMy42NjUyNDMyIEM0OS41Nzk2NTg0LDEzLjA5NzM5NDYgNDkuMTExODM4MywxMi41ODYwOTA1IDQ4LjQzNjA2MzksMTIuMTMxMzMxIFoiIGlkPSJTaGFwZSIgZmlsbD0iIzVEQTdBMyI+PC9wYXRoPgogICAgICAgICAgICA8cGF0aCBkPSJNNTcuNzMyOTYwNywxOS4zMjIyNzI0IEM1Ny43MzI5NjA3LDIwLjIxNjkxMjkgNTcuNjY0MDE3MywyMC44NjM1NjU5IDU3LjUyOTgzNDEsMjEuMjYzMjQ2NCBDNTcuMzk1MjIzNiwyMS42NjI0OTE5IDU3LjEzMTQxNTQsMjEuOTg3NjMxMSA1Ni43Mzk0MDY4LDIyLjIzOTM4OTIgQzU2LjM0NzY4MywyMi40OTA4NTczIDU1LjY5NjI4MiwyMi42MTYxNTYzIDU0Ljg2OTM4ODcsMjIuNjE2MTU2MyBDNTQuMjg4MDcwNywyMi42MTYxNTYzIDUzLjc0NDUwMDUsMjIuNTM4NTY5NSA1Mi44ODk4MzA1LDIyLjM4MzI1MSBMNTIuODg5ODMwNSwyMy45MzQ2OTYgQzUzLjc0NDUwMDUsMjQuMTQxMjA3MyA1NC4zNzg4MDgyLDI0LjI0NDg5OCA1NS4wOTc0NDMyLDI0LjI0NDg5OCBDNTYuNDM5NTYsMjQuMjQ0ODk4IDU3LjUzNTEwNDYsMjMuODgyNDg4MSA1OC4zNDc4OTU4LDIzLjE1ODM5MzQgQzU5LjE2MDQwMjEsMjIuNDMzODYzNyA1OS41ODQ3NDU4LDIxLjE1NDkxNSA1OS41ODQ3NDU4LDE5LjMyMTExMjMgTDU5LjU4NDc0NTgsOC43NTUxMDIwNCBMNTcuNzMyOTYwNyw4Ljc1NTEwMjA0IEw1Ny43MzI5NjA3LDE5LjMyMjI3MjQgWiIgaWQ9IlNoYXBlIiBmaWxsPSIjRkZGRkZGIj48L3BhdGg+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik02OS4yNDA4MTE5LDE2LjIyNTg5MDQgQzY4LjU2Njc1NzgsMTYuOTQyNzI2NiA2Ny43MzIxNTUyLDE3LjMwMTIxNiA2Ni43Mzc0MTk4LDE3LjMwMTIxNiBDNjUuODMzODMyNiwxNy4zMDEyMTYgNjUuMDQyMDMzNywxNi45OTE5NDIyIDY0LjM2MTA1MzQsMTYuMzczNTM3MyBDNjMuNjgwMjExNiwxNS43NTQ3MDQzIDYzLjMzOTcyMTUsMTQuOTE0MTg3MiA2My4zMzk3MjE1LDEzLjg1MTI3MjQgQzYzLjMzOTcyMTUsMTIuODYxOTY3MiA2My42NDY4Mjc1LDEyLjAyMjQ0ODUgNjQuMjYwNzYyNiwxMS4zMzQ5OTkxIEM2NC44NzQxNDM1LDEwLjY0NzEyMTYgNjUuNzEwNDA4NCwxMC4zMDMzMjU2IDY2Ljc2OTAwMzEsMTAuMzAzMzI1NiBDNjcuODEzMzI5OCwxMC4zMDMzMjU2IDY4LjY1NDk5NzEsMTAuNjM3ODQ5MSA2OS4yOTM0NTA4LDExLjMwNzYwOTUgQzY5LjkzMjE4MTUsMTEuOTc3MjI3MiA3MC4yNTE0Nzc2LDEyLjc3ODA4NjYgNzAuMjUxNDc3NiwxMy43MDkzMzE3IEM3MC4yNTE0Nzc2LDE0LjY3MDEwNjIgNjkuOTE0MzEyLDE1LjUwOTA1NDIgNjkuMjQwODExOSwxNi4yMjU4OTA0IE03MC44NTQ3NDYzLDEwLjcyNDE1NDggQzY5Ljg4ODI2OTYsOS40MTIwMjM1NyA2OC40OTgwNTAzLDguNzU1MTAyMDQgNjYuNjg0MjI2OCw4Ljc1NTEwMjA0IEM2NS4yMDI1ODIxLDguNzU1MTAyMDQgNjMuOTgzNDM5LDkuMjU3MjQ0MDEgNjMuMDI3NDkwMSwxMC4yNjExIEM2Mi4wNzA5ODcsMTEuMjY1MjQxMyA2MS41OTMyMjAzLDEyLjQ3MjgwNzEgNjEuNTkzMjIwMywxMy44ODQyMjU1IEM2MS41OTMyMjAzLDE1LjI3MzgxNzggNjIuMDQ3OTkyMiwxNi40Mzk1ODYgNjIuOTU4MzY3LDE3LjM4MTY3MjkgQzYzLjg2ODg4MDMsMTguMzIzNjE3IDY0Ljk5NDI0MzIsMTguNzk0ODAzMSA2Ni4zMzQ3MzI3LDE4Ljc5NDgwMzEgQzY4LjIzMzA1NTMsMTguNzk0ODAzMSA2OS42NTUxMzUsMTcuOTAwNzkwNiA3MC42MDA4MzMyLDE2LjExMzA1MTEgQzcwLjU3OTUwMDYsMTguMTU1MTQyNyA3MC4yMjEyNzk1LDE5Ljc3MjI2ODEgNjkuNTI2NTg1NCwyMC45NjM5OTkzIEM2OC44MzEzMzcyLDIyLjE1NjAxNTkgNjcuNzk1ODc1OSwyMi43NTE0NTM2IDY2LjQxOTUwODksMjIuNzUxNDUzNiBDNjUuMDAxNTg0OSwyMi43NTE0NTM2IDYzLjk5MjMwNDUsMjIuMDY1MDAyNyA2My4zOTIzNjAzLDIwLjY5MTM4NzYgTDYxLjk0MjI5ODksMjEuMjM2NjExMSBDNjIuNzA0MTc2OCwyMy4yNDIxODMyIDY0LjE4OTU2MTYsMjQuMjQ0ODk4IDY2LjM5ODczMDQsMjQuMjQ0ODk4IEM2OC4yODk0MzQyLDI0LjI0NDg5OCA2OS43NDY5NzU5LDIzLjQ5NzgxOTEgNzAuNzcwMTA4NiwyMi4wMDM1MTg4IEM3MS43OTMyNDEzLDIwLjUwOTA3NTggNzIuMzA1MDg0NywxOC41NTQ1NzM4IDcyLjMwNTA4NDcsMTYuMTQwMDEyNyBDNzIuMzA1MDg0NywxMy44NDIxNDI2IDcxLjgyMTYzODYsMTIuMDM2ODU2NiA3MC44NTQ3NDYzLDEwLjcyNDE1NDgiIGlkPSJTaGFwZSIgZmlsbD0iI0ZGRkZGRiI+PC9wYXRoPgogICAgICAgICAgICA8cGF0aCBkPSJNNDguODQzNzkwMSwyNC42NDQ3MTU3IEM0OS41NDM5Mzk0LDI1LjkwNTU0OTIgNTAuNDE5NDA5OCwyNy4wOTIxMjI5IDUxLjQ3MDIwMTMsMjguMTY3MjQ1MyBDNTcuNzY4MDE2NSwzNC42MTA5MTgyIDY3Ljk3ODc5MjcsMzQuNjEwOTE4MiA3NC4yNzY2MDc5LDI4LjE2NzI0NTMgQzgwLjU3NDQ2NCwyMS43MjM2MDAzIDgwLjU3NDQ2NCwxMS4yNzY0MDE4IDc0LjI3NjYwNzksNC44MzI3NTY4MyBDNjcuOTc4NzkyNywtMS42MTA5MTg5NCA1Ny43NjgwMTY1LC0xLjYxMDkxODk0IDUxLjQ3MDIwMTMsNC44MzI3NTY4MyBDNDkuNjA2NzAxNiw2LjczOTM5NzA0IDQ4LjI5NDU5ODMsOC45OTY1NjQ4MyA0Ny41MzM4OTgzLDExLjM5NjgyMjkgTDQ4LjM3MDI2NzIsMTEuNzc3ODE5NiBDNDkuMDgzNDMyNSw5LjQ3ODI5OTU2IDUwLjMzMTIyMjcsNy4zMTQ3NjEyMiA1Mi4xMTM2MzM1LDUuNDkxMDg4OTIgQzU4LjA1NjA5NDgsLTAuNTg4OTk5Mjg4IDY3LjY5MDcyMTIsLTAuNTg4OTk5Mjg4IDczLjYzMzE3NTcsNS40OTEwODg5MiBDNzkuNTc1NjcxMiwxMS41NzExNDM2IDc5LjU3NTY3MTIsMjEuNDI4ODU1NyA3My42MzMxNzU3LDI3LjUwODkxNDYgQzY3LjY5MDcyMTIsMzMuNTg4OTkzIDU4LjA1NjA5NDgsMzMuNTg4OTkzIDUyLjExMzYzMzUsMjcuNTA4OTE0NiBDNTEuMTQ0MDY3NywyNi41MTY4OTg3IDUwLjMzMjY5OTgsMjUuNDI0MzI2NyA0OS42Nzk1MTYxLDI0LjI2NDAwNzMgTDQ4Ljg0Mzc5MDEsMjQuNjQ0NzE1NyBaIiBpZD0iU2hhcGUiIGZpbGw9IiM1REE3QTMiPjwvcGF0aD4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==" alt="OpenJ9 Logo"/></a></div><style data-emotion-css="kzfr2u">.css-kzfr2u{-webkit-flex:2;-ms-flex:2;flex:2;}</style><nav class="css-kzfr2u"><style data-emotion-css="d1fq55">.css-d1fq55{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;list-style:none;-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end;}.css-d1fq55 li{padding:8px;margin-left:8px;margin-right:8px;}.css-d1fq55 li a{color:white;-webkit-text-decoration:none;text-decoration:none;}.css-d1fq55 li a:hover{color:var(--theme-ui-colors-links,#5DA7A3);}.css-d1fq55 li:first-of-type{margin-left:0;}.css-d1fq55 li:last-child{margin-right:0;padding-right:0;}</style><ul class="css-d1fq55"><li><a aria-current="page" class="" href="/openj9/">Home</a></li><li><a href="/openj9/about">About</a></li><li><a href="https://www.eclipse.org/openj9/docs/" rel="noopener noreferrer" target="_blank">Docs</a></li><li><a href="/openj9/performance">Performance</a></li><li><a href="/openj9/news">News</a></li></ul></nav><style data-emotion-css="1rr4qq7">.css-1rr4qq7{-webkit-flex:1;-ms-flex:1;flex:1;}</style><nav class="css-1rr4qq7"><ul class="css-d1fq55"><li><a href="https://twitter.com/openj9/" rel="noopener noreferrer" target="_blank"> <img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIyNXB4IiB2aWV3Qm94PSIwIDAgMjUgMjUiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5Ud2l0dGVyPC90aXRsZT4KICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPgogICAgPGcgaWQ9IlBhZ2UtMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9IlR3aXR0ZXIiIGZpbGwtcnVsZT0ibm9uemVybyI+CiAgICAgICAgICAgIDxnIGlkPSJ0d2l0dGVyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjAwMDAwMCwgMC4yOTg4NzkpIj4KICAgICAgICAgICAgICAgIDxlbGxpcHNlIGlkPSJPdmFsLXBhdGgiIGZpbGw9IiM0MzQzNDMiIGN4PSIxMi41MDAyMjEyIiBjeT0iMTIuMjcyNzI3MyIgcng9IjEyLjUiIHJ5PSIxMi4yNzI3MjczIj48L2VsbGlwc2U+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTIuNTAwMjIxMiwwIEMxOS40MDM3ODA2LDAgMjUuMDAwMjIxMiw1LjQ5NDY4NzE2IDI1LjAwMDIyMTIsMTIuMjcyNzI3MyBDMjUuMDAwMjIxMiwxOS4wNTA3Njc0IDE5LjQwMzc4MDYsMjQuNTQ1NDU0NSAxMi41MDAyMjEyLDI0LjU0NTQ1NDUgQzUuNTk2NjYxODcsMjQuNTQ1NDU0NSAwLjAwMDIyMTIzODkzOCwxOS4wNTA3Njc0IDAuMDAwMjIxMjM4OTM4LDEyLjI3MjcyNzMgQzAuMDAwMjIxMjM4OTM4LDUuNDk0Njg3MTYgNS41OTY2NjE4NywwIDEyLjUwMDIyMTIsMCBaIE0xNS4xMDM0MzMzLDYuODE4MTgxODIgQzEzLjQ2NTM4MDIsNi44MTgxODE4MiAxMi4xMzY4NDA0LDguMDkyMTI0MTEgMTIuMTM2ODQwNCw5LjY2Mjg1OTk2IEMxMi4xMzY4NDA0LDkuODg1ODI2MzggMTIuMTYzMTY3OCwxMC4xMDI4NTI3IDEyLjIxNDA1MjgsMTAuMzExMTgxIEM5Ljc0ODU2NjA0LDEwLjE5MjU5MDggNy41NjI1MDQxLDkuMDYwMTUwNTQgNi4wOTkyMjk3Niw3LjMzODU3ODIzIEM1Ljg0MzkyMDAzLDcuNzU4NjI5MTUgNS42OTc0NTk4NSw4LjI0NzYyNzgxIDUuNjk3NDU5ODUsOC43Njg4NzI4MSBDNS42OTc0NTk4NSw5Ljc1NTU2ODE3IDYuMjIxNTc0ODksMTAuNjI2NjQzNCA3LjAxNzE1MDExLDExLjEzNjY0NDcgQzYuNTMxMDg4MTcsMTEuMTIyMDA2NSA2LjA3MzM0NDgsMTAuOTk0MDgxOSA1LjY3MzU2NjA0LDEwLjc4MDQ1IEw1LjY3MzM0NDgsMTAuODE2NTE0OSBMNS42NzMzNDQ4LDEwLjgxNjUxNDkgQzUuNjczMzQ0OCwxMi4xOTQ4MzM1IDYuNjk2MzUzNjUsMTMuMzQ0NDU3NyA4LjA1MzIxMjA2LDEzLjYwNTYxMDYgQzcuODA0NTM5NSwxMy42NzA5NTE5IDcuNTQxOTI4ODgsMTMuNzA1NTMxOCA3LjI3MTc5NjEzLDEzLjcwNTUzMTggQzcuMDgwMjAzMjEsMTMuNzA1NTMxOCA2Ljg5NDU4Mzc0LDEzLjY4NzkyMzYgNi43MTM2MTAyOSwxMy42NTQ4Mjg3IEM3LjA5MTA0MzkyLDE0Ljc4NDcyMzIgOC4xODYzOTc5LDE1LjYwNzIxNjkgOS40ODQ4NDkyMywxNS42MzAzNDA5IEM4LjQ2OTM2MjUsMTYuMzkzNDMzNCA3LjE5MDM4MDIsMTYuODQ4MDY0MiA1LjgwMDExNDcyLDE2Ljg0ODA2NDIgQzUuNTYxMTc2NjYsMTYuODQ4MDY0MiA1LjMyNDQ1MSwxNi44MzQ2OTkgNS4wOTI4MTM4MywxNi44MDgxODA2IEM2LjQwNDk4MTk3LDE3LjYxNTYxMTggNy45NjQ3MTY0OSwxOC4wODYzNjU4IDkuNjM5OTM3NzMsMTguMDg2MzY1OCBDMTUuMDk2NTc0OSwxOC4wODYzNjU4IDE4LjA4MDY0NTcsMTMuNzUxNzc5OCAxOC4wODA2NDU3LDkuOTkyMzI0MTQgQzE4LjA4MDY0NTcsOS44NjkwNjY3NyAxOC4wNzc3Njk2LDkuNzQ2MjMzNyAxOC4wNzIwMTc0LDkuNjI0NDYxMzcgQzE4LjY1MjEwNTksOS4yMjM1MDM2OCAxOS4xNTQ5ODIsOC43MjI2MjQ3OCAxOS41NTI1NDgzLDguMTUyMTYxNjkgQzE5LjAyMDY4OTksOC4zNzgzMTAzMiAxOC40NDg1NjYsOC41MzEyNjgyNSAxNy44NDg1NjYsOC41OTk1Nzk1NiBDMTguNDYxMTc2Nyw4LjI0NzYyNzgxIDE4LjkzMTMwOTQsNy42OTA3NDIxMyAxOS4xNTMyMTIxLDcuMDI2MDg1ODEgQzE4LjU3OTk4Miw3LjM1MjE1NTYzIDE3Ljk0NDgwNSw3LjU4ODY5OTQ2IDE3LjI2OTM2MjUsNy43MTYxOTk3NiBDMTYuNzI4MjEyMSw3LjE2MzU1NzAyIDE1Ljk1NzE5NDQsNi44MTgxODE4MiAxNS4xMDM0MzMzLDYuODE4MTgxODIgWiIgaWQ9IkNvbWJpbmVkLVNoYXBlIiBmaWxsPSIjRkZGRkZGIj48L3BhdGg+CiAgICAgICAgICAgIDwvZz4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==" alt="Twitter Logo"/></a></li><li><a href="https://github.com/eclipse/openj9" rel="noopener noreferrer" target="_blank"> <img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIyNXB4IiB2aWV3Qm94PSIwIDAgMjUgMjUiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5HaXRIdWI8L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0iR2l0SHViIiBmaWxsPSIjRkZGRkZGIiBmaWxsLXJ1bGU9Im5vbnplcm8iPgogICAgICAgICAgICA8ZyBpZD0iZ2l0aHViLWxvZ28iPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTIzLjMyMzIwOSw2LjM1NjM4NTg4IEMyMi4yMDU0MjQzLDQuNDI4ODY0OTMgMjAuNjg5MjIwNywyLjkwMjg0MzkxIDE4Ljc3NDE5OTMsMS43Nzc5Nzg1OCBDMTYuODU4ODkyOCwwLjY1MzA1NTg3MyAxNC43Njc5NDkxLDAuMDkwNzM3OTUzMyAxMi40OTk4ODYsMC4wOTA3Mzc5NTMzIEMxMC4yMzIxMDc5LDAuMDkwNzM3OTUzMyA4LjE0MDQ4MDEzLDAuNjUzMjI3OTkzIDYuMjI1NTcyNjksMS43Nzc5Nzg1OCBDNC4zMTAzODAyMSwyLjkwMjc4NjU0IDIuNzk0MjMzNjcsNC40Mjg4NjQ5MyAxLjY3NjQ0ODk5LDYuMzU2Mzg1ODggQzAuNTU4ODM1MzMzLDguMjgzODQ5NDUgMCwxMC4zODg2NTQ2IDAsMTIuNjcwNzQzOSBDMCwxNS40MTIwNTEgMC43OTQ2NzE0ODMsMTcuODc3MTA0NSAyLjM4NDQxMzQ5LDIwLjA2NjUzNTUgQzMuOTczOTg0NDksMjIuMjU2MTM4OCA2LjAyNzQ3NDg4LDIzLjc3MTI1ODggOC41NDQ3MTM2NywyNC42MTIwNjc4IEM4LjgzNzcyNzQsMjQuNjY2ODAyMiA5LjA1NDYzNzM3LDI0LjYyODMwNDUgOS4xOTU2NzE2MSwyNC40OTc1NTAzIEM5LjMzNjc2Mjg1LDI0LjM2NjYyMzkgOS40MDcyMjI5NiwyNC4yMDI2NTAzIDkuNDA3MjIyOTYsMjQuMDA2MzE4MSBDOS40MDcyMjI5NiwyMy45NzM1NTc5IDkuNDA0NDI5NjQsMjMuNjc4ODMwMSA5LjM5OTAxNDAxLDIzLjEyMTc5MDUgQzkuMzkzNDI3MzcsMjIuNTY0NzUxIDkuMzkwODA1MDcsMjIuMDc4Nzk3MiA5LjM5MDgwNTA3LDIxLjY2NDE1ODcgTDkuMDE2NDQyOTcsMjEuNzI5MzM1MSBDOC43Nzc3NTY1LDIxLjc3MzM0MDUgOC40NzY2NDc4MywyMS43OTE5ODY5IDguMTEzMTE2OTgsMjEuNzg2NzA4NiBDNy43NDk3NTcxNSwyMS43ODE2MDIzIDcuMzcyNTQ0NzMsMjEuNzQzMjc2OCA2Ljk4MTk5Mjc3LDIxLjY3MjAxODkgQzYuNTkxMjY5NzksMjEuNjAxMzkyMSA2LjIyNzg1Mjk1LDIxLjQzNzU5MDcgNS44OTE0NTcyMiwyMS4xODA5NTg5IEM1LjU1NTIzMjUyLDIwLjkyNDMyNzEgNS4zMTY1NDYwNCwyMC41ODg0MDUxIDUuMTc1NDU0OCwyMC4xNzM3MDkzIEw1LjAxMjcwMTA2LDE5Ljc5Njc2NTIgQzQuOTA0MjE3NTcsMTkuNTQ1ODEzNCA0LjczMzQyNTkxLDE5LjI2NzAzNTUgNC41MDAwOTgwNSwxOC45NjE0NjQxIEM0LjI2Njc3MDE5LDE4LjY1NTYwNTggNC4wMzA4MjAwMywxOC40NDgyNTc5IDMuNzkyMTMzNTUsMTguMzM5MDc2MSBMMy42NzgxNzc0MywxOC4yNTY5NzQ2IEMzLjYwMjI0NDY5LDE4LjIwMjQxMjMgMy41MzE3ODQ1OCwxOC4xMzY2MDQ5IDMuNDY2NjI2MDgsMTguMDYwMjQwOCBDMy40MDE1MjQ1OCwxNy45ODM4NzY2IDMuMzUyNzgzOTcsMTcuOTA3NDU1MSAzLjMyMDIzMzIzLDE3LjgzMDkxODggQzMuMjg3NjI1NDcsMTcuNzU0MzI1MSAzLjMxNDY0NjU4LDE3LjY5MTUwMTEgMy40MDE1ODE1OSwxNy42NDIyMTcyIEMzLjQ4ODUxNjYsMTcuNTkyOTMzNCAzLjY0NTYyNjY4LDE3LjU2OTAwODYgMy44NzM1OTU5MywxNy41NjkwMDg2IEw0LjE5ODk4OTM5LDE3LjYxNzk0ODIgQzQuNDE2MDEzMzcsMTcuNjYxNzI0MiA0LjY4NDQ1NzI3LDE3Ljc5MjQ3ODUgNS4wMDQ2NjMxNCwxOC4wMTEwMTQzIEM1LjMyNDY5Nzk4LDE4LjIyOTM3NzkgNS41ODc3ODMyNywxOC41MTMyNjIxIDUuNzkzOTc2LDE4Ljg2MjU1MjEgQzYuMDQzNjY0NzUsMTkuMzEwNDA5OSA2LjM0NDQ4ODM4LDE5LjY1MTY2NzYgNi42OTczMDE5OSwxOS44ODY0OTc0IEM3LjA0OTgzMDU4LDIwLjEyMTMyNzMgNy40MDUyNjY0OSwyMC4yMzg1NDE0IDcuNzYzMjY3NzEsMjAuMjM4NTQxNCBDOC4xMjEyNjg5MiwyMC4yMzg1NDE0IDguNDMwNDcyNTIsMjAuMjExMjMxNiA4LjY5MDk5MjUxLDIwLjE1Njg5ODkgQzguOTUxMjI3NDcsMjAuMTAyMjc5MyA5LjE5NTM4NjU3LDIwLjAyMDE3NzcgOS40MjMzNTU4MiwxOS45MTEwNTMzIEM5LjUyMTAwODA2LDE5LjE3OTA4MTkgOS43ODY4ODY2NywxOC42MTY3NjM5IDEwLjIyMDc2MzYsMTguMjIzNjk3OSBDOS42MDIzNTY0MiwxOC4xNTgyOTIxIDkuMDQ2MzcxNDIsMTguMDU5NzgxOCA4LjU1MjUyMzU3LDE3LjkyODc5OCBDOC4wNTg5NjA3NSwxNy43OTc2NDIxIDcuNTQ4OTIzMDMsMTcuNTg0Nzg2MyA3LjAyMjc1MjQ2LDE3LjI4OTY1NjkgQzYuNDk2Mjk2ODUsMTYuOTk0OTI5MSA2LjA1OTU2OTU4LDE2LjYyODk0MzQgNS43MTI0NTY2MiwxNi4xOTIzMzA5IEM1LjM2NTI4NjY1LDE1Ljc1NTQ4ODkgNS4wODAzNjc4NSwxNS4xODE5ODMxIDQuODU4MDk5MjYsMTQuNDcyMzMgQzQuNjM1NzE2NjYsMTMuNzYyMzkgNC41MjQ0OTY4NiwxMi45NDM0NDAzIDQuNTI0NDk2ODYsMTIuMDE1MjUxNCBDNC41MjQ0OTY4NiwxMC42OTM2NTIzIDQuOTUzMTg2MjEsOS41NjkwMTY0MiA1LjgxMDM5Mzg5LDguNjQwNzEyNzggQzUuNDA4ODM5NjcsNy42NDcxMTgwNyA1LjQ0Njc0OTAzLDYuNTMzMjY4NDYgNS45MjQyMzYsNS4yOTkyNzg2OCBDNi4yMzg5MTIyMiw1LjIwMDg4MzA4IDYuNzA1NTY3OTQsNS4yNzQ3MjI4MSA3LjMyMzk3NTE0LDUuNTIwMzM4ODcgQzcuOTQyNDk2MzQsNS43NjYwNjk2OCA4LjM5NTM1NjQ3LDUuOTc2NTczMTQgOC42ODMwMTE1OSw2LjE1MTEwMzQxIEM4Ljk3MDY2NjcsNi4zMjU1NzYzIDkuMjAxMTQ0MjQsNi40NzM0Mjc4NyA5LjM3NDc4NjIzLDYuNTkzMzM4NTQgQzEwLjM4NDA4NzQsNi4zMDk1MTE3MSAxMS40MjU2NTQzLDYuMTY3NTY5NjEgMTIuNDk5NzcyLDYuMTY3NTY5NjEgQzEzLjU3Mzg4OTYsNi4xNjc1Njk2MSAxNC42MTU2ODQ2LDYuMzA5NTExNzEgMTUuNjI1MDQyOCw2LjU5MzMzODU0IEwxNi4yNDM1MDcsNi4yMDAzODcyNiBDMTYuNjY2NDM4Niw1LjkzODE5MDI1IDE3LjE2NTg3MzEsNS42OTc5MDk5MyAxNy43NDA2MTMzLDUuNDc5NDg4OTIgQzE4LjMxNTY5NTUsNS4yNjExODI2NiAxOC43NTU0NDQxLDUuMjAxMDU1MiAxOS4wNTk0MDMxLDUuMjk5NDUwOCBDMTkuNTQ3NDkzMyw2LjUzMzQ5Nzk1IDE5LjU5MDk4OTMsNy42NDcyOTAxOSAxOS4xODkzMjExLDguNjQwODg0OSBDMjAuMDQ2NDcxNyw5LjU2OTE4ODU0IDIwLjQ3NTMzMjEsMTAuNjk0MTExMiAyMC40NzUzMzIxLDEyLjAxNTQyMzUgQzIwLjQ3NTMzMjEsMTIuOTQzNjEyNCAyMC4zNjM3MTMzLDEzLjc2NTE0MzkgMjAuMTQxNjcyNywxNC40ODA1MzQ0IEMxOS45MTkzNDcxLDE1LjE5NjAzOTYgMTkuNjMxOTc3LDE1Ljc2ODk3MTcgMTkuMjc5NDQ4NSwxNi4yMDA1MzUzIEMxOC45MjY1MjA4LDE2LjYzMjA0MTYgMTguNDg3MDAwMiwxNi45OTUxNTg2IDE3Ljk2MDgyOTcsMTcuMjg5ODI5MSBDMTcuNDM0NTQ1MSwxNy41ODQ3MjkgMTYuOTI0MzM2MywxNy43OTc1ODQ4IDE2LjQzMDc3MzUsMTcuOTI4NzQwNiBDMTUuOTM2OTgyNywxOC4wNTk4OTY1IDE1LjM4MDk5NzcsMTguMTU4NDY0MiAxNC43NjI1OTA1LDE4LjIyMzk4NDggQzE1LjMyNjYxMzQsMTguNzE1MjE2OSAxNS42MDg2ODE5LDE5LjQ5MDYyMDEgMTUuNjA4NjgxOSwyMC41NDk4NTAxIEwxNS42MDg2ODE5LDI0LjAwNTg1OTIgQzE1LjYwODY4MTksMjQuMjAyMTkxNCAxNS42NzY1MTk3LDI0LjM2NjEwNzUgMTUuODEyMzA5MywyNC40OTcwOTEzIEMxNS45NDc5Mjc5LDI0LjYyNzg0NTUgMTYuMTYyMTAxNiwyNC42NjYzNDMyIDE2LjQ1NTExNTMsMjQuNjExNTUxNSBDMTguOTcyNjk2MSwyMy43NzA4NTcyIDIxLjAyNjE4NjUsMjIuMjU1Njc5OCAyMi42MTU3MDA1LDIwLjA2NjA3NjYgQzI0LjIwNTA0MzUsMTcuODc2NjQ1NSAyNSwxNS40MTE1OTIgMjUsMTIuNjcwMjg0OSBDMjQuOTk5NDI5OSwxMC4zODg0ODI1IDI0LjQ0MDMwOTYsOC4yODM4NDk0NSAyMy4zMjMyMDksNi4zNTYzODU4OCBaIiBpZD0iU2hhcGUiPjwvcGF0aD4KICAgICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+" alt="GitHub Logo"/></a></li><li><a href="https://openj9.slack.com/" rel="noopener noreferrer" target="_blank"><img src="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIyNXB4IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgogPCEtLSBDcmVhdGVkIHdpdGggTWV0aG9kIERyYXcgLSBodHRwOi8vZ2l0aHViLmNvbS9kdW9waXhlbC9NZXRob2QtRHJhdy8gLS0+CgogPGc+CiAgPHRpdGxlPmJhY2tncm91bmQ8L3RpdGxlPgogIDxyZWN0IGZpbGw9Im5vbmUiIGlkPSJjYW52YXNfYmFja2dyb3VuZCIgaGVpZ2h0PSIyNiIgd2lkdGg9IjI2IiB5PSItMSIgeD0iLTEiLz4KICA8ZyBkaXNwbGF5PSJub25lIiBvdmVyZmxvdz0idmlzaWJsZSIgeT0iMCIgeD0iMCIgaGVpZ2h0PSIxMDAlIiB3aWR0aD0iMTAwJSIgaWQ9ImNhbnZhc0dyaWQiPgogICA8cmVjdCBmaWxsPSJ1cmwoI2dyaWRwYXR0ZXJuKSIgc3Ryb2tlLXdpZHRoPSIwIiB5PSIxIiB4PSIxIiBoZWlnaHQ9IjIyIiB3aWR0aD0iMjIiLz4KICA8L2c+CiA8L2c+CiA8Zz4KICA8dGl0bGU+TGF5ZXIgMTwvdGl0bGU+CiAgPGVsbGlwc2Ugcnk9IjExIiByeD0iMTEiIGlkPSJzdmdfMSIgY3k9IjEyIiBjeD0iMTIiIHN0cm9rZT0iI0ZGRiIgZmlsbD0iI0ZGRkZGRiIvPgogIDxzdHlsZSB0cmFuc2Zvcm09Im1hdHJpeCgwLjA2NTE4MjQ5NTU3MzI1MzYyLDAsMCwwLjA2NTE4MjQ5NTU3MzI1MzYyLDAsMCkgIiB0eXBlPSJ0ZXh0L2NzcyI+LnN0MHtmaWxsOiM0MzQzNDM7fTwvc3R5bGU+CiAgPGcgc3Ryb2tlPSJudWxsIiBpZD0ic3ZnXzE5Ij4KICAgPGcgc3Ryb2tlPSJudWxsIiB0cmFuc2Zvcm09Im1hdHJpeCgwLjEzMDE1NTgwODUxODA5NDg2LDAsMCwwLjEzMDE1NTgwODUxODA5NDg2LC02Ljg0OTAwNjQ1MDQwNTQ5OSwtNi44MzE1MDczOTEwMjE5MjQpICIgaWQ9InN2Z182Ij4KICAgIDxnIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z183Ij4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfOCIgZD0ibTExMC4yOTgyOTIsMTYxLjI5MzAxMWMwLDcuMSAtNS44LDEyLjkgLTEyLjksMTIuOXMtMTIuOSwtNS44IC0xMi45LC0xMi45YzAsLTcuMSA1LjgsLTEyLjkgMTIuOSwtMTIuOWwxMi45LDBsMCwxMi45eiIgY2xhc3M9InN0MCIvPgogICAgIDxwYXRoIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z185IiBkPSJtMTE2Ljc5ODI5MiwxNjEuMjkzMDExYzAsLTcuMSA1LjgsLTEyLjkgMTIuOSwtMTIuOXMxMi45LDUuOCAxMi45LDEyLjlsMCwzMi4zYzAsNy4xIC01LjgsMTIuOSAtMTIuOSwxMi45cy0xMi45LC01LjggLTEyLjksLTEyLjljMCwwIDAsLTMyLjMgMCwtMzIuM3oiIGNsYXNzPSJzdDAiLz4KICAgIDwvZz4KICAgIDxnIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z18xMCI+CiAgICAgPHBhdGggc3Ryb2tlPSJudWxsIiBpZD0ic3ZnXzExIiBkPSJtMTI5LjY5ODI5MiwxMDkuNDkzMDExYy03LjEsMCAtMTIuOSwtNS44IC0xMi45LC0xMi45czUuOCwtMTIuOSAxMi45LC0xMi45czEyLjksNS44IDEyLjksMTIuOWwwLDEyLjlsLTEyLjksMHoiIGNsYXNzPSJzdDAiLz4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTIiIGQ9Im0xMjkuNjk4MjkyLDExNS45OTMwMTFjNy4xLDAgMTIuOSw1LjggMTIuOSwxMi45cy01LjgsMTIuOSAtMTIuOSwxMi45bC0zMi4zLDBjLTcuMSwwIC0xMi45LC01LjggLTEyLjksLTEyLjlzNS44LC0xMi45IDEyLjksLTEyLjljMCwwIDMyLjMsMCAzMi4zLDB6IiBjbGFzcz0ic3QwIi8+CiAgICA8L2c+CiAgICA8ZyBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTMiPgogICAgIDxwYXRoIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z18xNCIgZD0ibTE4MS40OTgyOTIsMTI4Ljg5MzAxMWMwLC03LjEgNS44LC0xMi45IDEyLjksLTEyLjljNy4xLDAgMTIuOSw1LjggMTIuOSwxMi45cy01LjgsMTIuOSAtMTIuOSwxMi45bC0xMi45LDBsMCwtMTIuOXoiIGNsYXNzPSJzdDAiLz4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTUiIGQ9Im0xNzQuOTk4MjkyLDEyOC44OTMwMTFjMCw3LjEgLTUuOCwxMi45IC0xMi45LDEyLjljLTcuMSwwIC0xMi45LC01LjggLTEyLjksLTEyLjlsMCwtMzIuM2MwLC03LjEgNS44LC0xMi45IDEyLjksLTEyLjljNy4xLDAgMTIuOSw1LjggMTIuOSwxMi45bDAsMzIuM3oiIGNsYXNzPSJzdDAiLz4KICAgIDwvZz4KICAgIDxnIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z18xNiI+CiAgICAgPHBhdGggc3Ryb2tlPSJudWxsIiBpZD0ic3ZnXzE3IiBkPSJtMTYyLjA5ODI5MiwxODAuNjkzMDExYzcuMSwwIDEyLjksNS44IDEyLjksMTIuOWMwLDcuMSAtNS44LDEyLjkgLTEyLjksMTIuOWMtNy4xLDAgLTEyLjksLTUuOCAtMTIuOSwtMTIuOWwwLC0xMi45bDEyLjksMHoiIGNsYXNzPSJzdDAiLz4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTgiIGQ9Im0xNjIuMDk4MjkyLDE3NC4xOTMwMTFjLTcuMSwwIC0xMi45LC01LjggLTEyLjksLTEyLjljMCwtNy4xIDUuOCwtMTIuOSAxMi45LC0xMi45bDMyLjMsMGM3LjEsMCAxMi45LDUuOCAxMi45LDEyLjljMCw3LjEgLTUuOCwxMi45IC0xMi45LDEyLjlsLTMyLjMsMHoiIGNsYXNzPSJzdDAiLz4KICAgIDwvZz4KICAgPC9nPgogIDwvZz4KIDwvZz4KPC9zdmc+" alt="Slack logo"/></a></li><li><a href="https://stackoverflow.com/search?q=%23OpenJ9" rel="noopener noreferrer" target="_blank"><img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjRweCIgaGVpZ2h0PSIyNHB4IiB2aWV3Qm94PSIwIDAgNjUgNzAiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5zdGFja292ZXJmbG93LWxvZ288L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0iI0ZGRkZGRiIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0ic3RhY2tvdmVyZmxvdy1sb2dvIiBmaWxsLXJ1bGU9Im5vbnplcm8iPgogICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgZmlsbD0iI0ZGRkZGRiIgcG9pbnRzPSI1NC4yNDE3MjY2IDYzLjc3MDIyNjUgNTQuMjQxNzI2NiA0NSA2MSA0NSA2MSA3MCAwIDcwIDAgNDUgNi43NTgyNzMzOCA0NSA2Ljc1ODI3MzM4IDYzLjc3MDIyNjUiPjwvcG9seWdvbj4KICAgICAgICAgICAgPHBhdGggZD0iTTE0LjcwNzEwNTcsNDMuNjQyNzU2NyBMNDguMTE3ODUxLDUwLjA4NzIwMTEgTDQ5LjUzMjA2MjQsNDMuODg3NDgyNCBMMTYuMTIxMzE3MiwzNy40NDMwMzggTDE0LjcwNzEwNTcsNDMuNjQyNzU2NyBMMTQuNzA3MTA1Nyw0My42NDI3NTY3IFogTTE5LjEyNjUxNjUsMjguOTU5MjEyNCBMNTAuMDYyMzkxNyw0Mi4yNTU5Nzc1IEw1Mi44OTA4MTQ2LDM2LjU0NTcxMDMgTDIxLjk1NDkzOTMsMjMuMTY3MzY5OSBMMTkuMTI2NTE2NSwyOC45NTkyMTI0IFogTTI3LjcwMDE3MzMsMTQuOTI4MjcgTDUzLjk1MTQ3MzEsMzUuMDc3MzU1OCBMNTguMjgyNDk1NywzMC4yNjQ0MTYzIEwzMi4wMzExOTU4LDEwLjExNTMzMDUgTDI3LjcwMDE3MzMsMTQuOTI4MjcgTDI3LjcwMDE3MzMsMTQuOTI4MjcgWiBNNDQuNjcwNzEwNiwwIEwzOS4xOTA2NDEyLDMuNzUyNDYxMzIgTDU5LjUxOTkzMDcsMjkuMDQwNzg3NiBMNjUsMjUuMjg4MzI2MyBMNDQuNjcwNzEwNiwwIFogTTE0LDU4IEw0OC4xMTc4NTEsNTggTDQ4LjExNzg1MSw1MS43MTg3MDYgTDE0LDUxLjcxODcwNiBMMTQsNTggWiIgaWQ9IlNoYXBlIiBmaWxsPSIjRkZGRkZGIj48L3BhdGg+CiAgICAgICAgPC9nPgogICAgPC9nPgo8L3N2Zz4KCgo=" alt="Stack Overflow logo"/></a></li></ul></nav></header><style data-emotion-css="loin3l">.css-loin3l{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:fixed;width:100%;bottom:0;background-color:white;height:3rem;box-shadow:0 10px 30px grey;z-index:9999;}@media screen and (min-width:560px){.css-loin3l{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}}@media screen and (min-width:1000px){.css-loin3l{display:none;}}@media screen and (min-width:1366px){.css-loin3l{display:none;}}</style><nav class="css-loin3l"><style data-emotion-css="94xmc6">.css-94xmc6{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;list-style:none;-webkit-box-pack:space-evenly;-webkit-justify-content:space-evenly;-ms-flex-pack:space-evenly;justify-content:space-evenly;width:100%;}.css-94xmc6 li a{color:black;-webkit-text-decoration:none;text-decoration:none;}.css-94xmc6 li:first-of-type{margin-left:0;}.css-94xmc6 li:last-child{margin-right:0;padding-right:0;}</style><ul class="css-94xmc6"><li><a aria-current="page" class="" href="/openj9/">Home</a></li><li><a href="/openj9/about">About</a> </li><li><a href="https://www.eclipse.org/openj9/docs/" rel="noopener noreferrer" target="_blank">Docs</a> </li><li><a href="/openj9/performance">Performance</a> </li><li><a href="/openj9/news">News</a> </li></ul></nav><style data-emotion-css="ld9gpq">.css-ld9gpq{background-color:var(--theme-ui-colors-primary,#434343);color:var(--theme-ui-colors-lightText,#d8d8d8);display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;min-height:500px;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;padding-bottom:4rem;}@media screen and (min-width:560px){.css-ld9gpq{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;padding-bottom:4rem;}}@media screen and (min-width:1000px){.css-ld9gpq{-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;padding-bottom:0;}}@media screen and (min-width:1366px){.css-ld9gpq{-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;padding-bottom:0;}}</style><div class="css-ld9gpq"><style data-emotion-css="veou8q">.css-veou8q{background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSI2MjVweCIgdmlld0JveD0iMCAwIDI1IDYyNSIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KICAgIDwhLS0gR2VuZXJhdG9yOiBTa2V0Y2ggNjEuMiAoODk2NTMpIC0gaHR0cHM6Ly9za2V0Y2guY29tIC0tPgogICAgPHRpdGxlPkNpcmNsZSBPdmVybGF5PC90aXRsZT4KICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPgogICAgPGcgaWQ9IlBhZ2UtMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9Ik9wZW5KOS1Ib21lLUJsYW5rIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMTI4Ni4wMDAwMDAsIC0yNTExLjAwMDAwMCkiIGZpbGwtcnVsZT0ibm9uemVybyI+CiAgICAgICAgICAgIDxyZWN0IGlkPSJHcmF5LUJHIiBmaWxsPSIjNURBN0EzIiB4PSIwIiB5PSIxNDMxIiB3aWR0aD0iMTQ0MCIgaGVpZ2h0PSIxMjQyIj48L3JlY3Q+CiAgICAgICAgICAgIDxnIGlkPSJQYXJ0aWNpcGF0ZSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTg3LjAwMDAwMCwgMjUxMi4wMDAwMDApIj4KICAgICAgICAgICAgICAgIDxyZWN0IGlkPSJCbHVlLUJHIiBmaWxsPSIjMzQzNDM0IiB4PSI4NyIgeT0iMTU2IiB3aWR0aD0iMTQ0MCIgaGVpZ2h0PSIzNjUiPjwvcmVjdD4KICAgICAgICAgICAgICAgIDxnIGlkPSJHcm91cC0xMCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoODcuMDAwMDAwLCAwLjAwMDAwMCkiIGZpbGw9IiM1REE3QTMiPgogICAgICAgICAgICAgICAgICAgIDxyZWN0IGlkPSJSZWN0YW5nbGUtMiIgeD0iMCIgeT0iMTU1IiB3aWR0aD0iMTQ0MCIgaGVpZ2h0PSI1NjUiPjwvcmVjdD4KICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgIDxnIGlkPSJDaXJjbGUtT3ZlcmxheXMiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDc4LjAwMDAwMCwgMC4wMDAwMDApIiBvcGFjaXR5PSIwLjc1MDMzNDgyMSIgc3Ryb2tlPSIjRkZGRkZGIj4KICAgICAgICAgICAgICAgICAgICA8ZyBpZD0iQ2lyY2xlLU92ZXJsYXkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDc0My41MDAwMDAsIDMxMS41MDAwMDApIHJvdGF0ZSg5MC4wMDAwMDApIHRyYW5zbGF0ZSgtNzQzLjUwMDAwMCwgLTMxMS41MDAwMDApIHRyYW5zbGF0ZSg0MzIuMDAwMDAwLCAtNDMyLjAwMDAwMCkiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZyBpZD0iR3JvdXAtMTIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgaWQ9IkNpcmNsZS1PdmVybGF5Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBpZD0iU3RhY2tlZC1Hcm91cC04IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjAwMDAwMCwgMTY4LjAwMDAwMCkiIG9wYWNpdHk9IjAuNSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9Ik92YWwtMTYiIGN4PSI2MTEuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsLTE2IiBjeD0iNTg3LjUiIGN5PSIxMS41IiByPSIxMS41Ij48L2NpcmNsZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBpZD0iT3ZhbC0xNiIgY3g9IjU2My41IiBjeT0iMTEuNSIgcj0iMTEuNSI+PC9jaXJjbGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9Ik92YWwtMTYiIGN4PSI1MTUuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsLTE2IiBjeD0iNTM5LjUiIGN5PSIxMS41IiByPSIxMS41Ij48L2NpcmNsZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBpZD0iT3ZhbC0xNiIgY3g9IjQ2Ny41IiBjeT0iMTEuNSIgcj0iMTEuNSI+PC9jaXJjbGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9Ik92YWwtMTYiIGN4PSI0OTEuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsLTE2IiBjeD0iNDE5LjUiIGN5PSIxMS41IiByPSIxMS41Ij48L2NpcmNsZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBpZD0iT3ZhbC0xNiIgY3g9IjQ0My41IiBjeT0iMTEuNSIgcj0iMTEuNSI+PC9jaXJjbGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9Ik92YWwtMTYiIGN4PSIzNzEuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsLTE2IiBjeD0iMzk1LjUiIGN5PSIxMS41IiByPSIxMS41Ij48L2NpcmNsZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBpZD0iT3ZhbC0xNiIgY3g9IjMyMy41IiBjeT0iMTEuNSIgcj0iMTEuNSI+PC9jaXJjbGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9Ik92YWwtMTYiIGN4PSIzNDcuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsLTE2IiBjeD0iMjc1LjUiIGN5PSIxMS41IiByPSIxMS41Ij48L2NpcmNsZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBpZD0iT3ZhbC0xNiIgY3g9IjI5OS41IiBjeT0iMTEuNSIgcj0iMTEuNSI+PC9jaXJjbGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9Ik92YWwtMTYiIGN4PSIyMjcuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsLTE2IiBjeD0iMjUxLjUiIGN5PSIxMS41IiByPSIxMS41Ij48L2NpcmNsZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBpZD0iT3ZhbC0xNiIgY3g9IjE3OS41IiBjeT0iMTEuNSIgcj0iMTEuNSI+PC9jaXJjbGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9Ik92YWwtMTYiIGN4PSIyMDMuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsLTE2IiBjeD0iMTMxLjUiIGN5PSIxMS41IiByPSIxMS41Ij48L2NpcmNsZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBpZD0iT3ZhbC0xNiIgY3g9IjE1NS41IiBjeT0iMTEuNSIgcj0iMTEuNSI+PC9jaXJjbGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9Ik92YWwtMTYiIGN4PSI4My41IiBjeT0iMTEuNSIgcj0iMTEuNSI+PC9jaXJjbGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9Ik92YWwtMTYiIGN4PSIxMDcuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsLTE2IiBjeD0iMzUuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsLTE2IiBjeD0iNTkuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsLTE2IiBjeD0iMTEuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICA8cmVjdCBpZD0iUmVjdGFuZ2xlLTIyIiBmaWxsPSIjNURBN0EzIiB4PSI3MzQiIHk9IjUyMCIgd2lkdGg9Ijc5MyIgaGVpZ2h0PSIyIj48L3JlY3Q+CiAgICAgICAgICAgIDwvZz4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==);width:100%;min-height:200px;}@media screen and (min-width:560px){.css-veou8q{width:100%;}}@media screen and (min-width:1000px){.css-veou8q{width:30%;}}@media screen and (min-width:1366px){.css-veou8q{width:30%;}}</style><div class="css-veou8q"></div><style data-emotion-css="roja7n">.css-roja7n{height:250px;width:250px;border-radius:50%;background-color:#434343;position:absolute;left:calc(50% - 125px);top:70px;border:white solid 2px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;}@media screen and (min-width:560px){.css-roja7n{left:calc(50% - 125px);top:70px;}}@media screen and (min-width:1000px){.css-roja7n{left:calc(30% - 125px);top:125px;}}@media screen and (min-width:1366px){.css-roja7n{left:calc(30% - 125px);top:125px;}}</style><div class="css-roja7n"><img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjAxcHgiIGhlaWdodD0iODRweCIgdmlld0JveD0iMCAwIDIwMSA4NCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KICAgIDwhLS0gR2VuZXJhdG9yOiBTa2V0Y2ggNjEuMiAoODk2NTMpIC0gaHR0cHM6Ly9za2V0Y2guY29tIC0tPgogICAgPHRpdGxlPkdyb3VwIDEzPC90aXRsZT4KICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPgogICAgPGcgaWQ9IlBhZ2UtMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9Ikdyb3VwLTEzIj4KICAgICAgICAgICAgPGcgaWQ9IkxvZ28iPjwvZz4KICAgICAgICAgICAgPHBhdGggZD0iTTI1LjUwNzI1OTUsNDkuMjgyMzQ2NyBDMjMuNDY0Mjk2OSw1Mi40MjA2NDYgMjAuNjM0MzYzNiw1My45ODg5MjE0IDE3LjAxNDg4NjYsNTMuOTg4OTIxNCBDMTMuNDk3MjI3LDUzLjk4ODkyMTQgMTAuNjg2Nzc1LDUyLjQ3MzA5NjYgOC41ODMxNjMwNiw0OS40NDEwOTc1IEM2LjQ4MDY1Mzg0LDQ2LjQwODM5ODkgNS40MjkwMzE2Nyw0Mi40NzcwNDU0IDUuNDI5MDMxNjcsMzcuNjQ0NTg5MSBDNS40MjkwMzE2NywzMi42OTY3NDEyIDYuNDcwMzYxODQsMjguNjkxOTU2NyA4LjU1MzAyMjE5LDI1LjYzMDkzNDggQzEwLjYzNjA1MDEsMjIuNTcwMjYyNiAxMy40NDU3NjcsMjEuMDM5MDUyMyAxNi45ODQzNzgyLDIxLjAzOTA1MjMgQzIwLjQ4MjkyNDEsMjEuMDM5MDUyMyAyMy4yODc4NjI2LDIyLjQ1NTIyMDggMjUuNDAxMDMxNCwyNS4yODQwNjEgQzI3LjUxNDIwMDIsMjguMTE0NjQ5NSAyOC41NzA5NjgzLDMyLjA3MTUyOTEgMjguNTcwOTY4MywzNy4xNTMzMDEgQzI4LjU3MDk2ODMsNDIuMTAxNDk4NSAyNy41NDk0ODcsNDYuMTQ0Mzk3MiAyNS41MDcyNTk1LDQ5LjI4MjM0NjcgTTE3LjA0NTM5NTEsMTcgQzExLjkwOTMxNzksMTcgNy43ODQ0MzAxLDE4Ljk0NDg3MTMgNC42NzAzNjQsMjIuODMyNTE2IEMxLjU1NzAzMzA1LDI2LjcyMDUxMDMgMCwzMS42NDg0MjY5IDAsMzcuNjE1NTY2MyBDMCw0My4zMzI2OTA4IDEuNDg2NDU5MzEsNDguMTU5NTUyNCA0LjQ1OTAxMDM3LDUyLjA5NTEwMiBDNy40MzExOTM4NSw1Ni4wMzE3MDA3IDExLjU3NTkzMDYsNTggMTYuODkzNTg4LDU4IEMyMi4yOTI0Nzg4LDU4IDI2LjQ5MzA4NjQsNTUuOTI1NDAwNiAyOS40OTY1MTM1LDUxLjc3Nzk1MDIgQzMyLjQ5ODQ3MDMsNDcuNjI5ODAwNSAzNCw0Mi43NjM3NzU4IDM0LDM3LjE4MjY3MzQgQzM0LDMxLjM2OTczODkgMzIuNDUyODkxNCwyNi41NTIzMTg1IDI5LjM1OTQwOTMsMjIuNzMwNzYxNyBDMjYuMjY1NTU5NiwxOC45MTA5NTMyIDIyLjE2MDg4ODIsMTcgMTcuMDQ1Mzk1MSwxNyIgaWQ9IlNoYXBlIiBmaWxsPSIjNURBN0EzIiBmaWxsLXJ1bGU9Im5vbnplcm8iPjwvcGF0aD4KICAgICAgICAgICAgPHBhdGggZD0iTTU4LjA5NjAyODUsNTQuMTU5NTk4OCBDNTYuNDMxOTk0NSw1NS45NDM3MTE5IDU0LjUxOTMwNzMsNTYuODM3MjEwMSA1Mi4zNjIxNTU1LDU2LjgzNzIxMDEgQzUwLjQ5ODIwODksNTYuODM3MjEwMSA0OC43MTA4MDAyLDU2LjA5NjE3MjQgNDYuOTkzODM2OSw1NC42MTM3MzY3IEM0NS4yNzYxMTIsNTMuMTMzNDYzNCA0NC4zMzEwMDE2LDUxLjI1NjM2MDIgNDMuOTUwMjE1OCw0OC45ODYwMzEzIEw0My45NTAyMTU4LDQwLjUwODc5MDkgQzQ0LjcxMTc4NzQsMzguNDQ2Nzg4NyA0NS40ODA1OTQsMzYuNjkyMjMwNiA0Ny4wNDEwNTQ0LDM1LjI0NTExNjcgQzQ4LjYwMTUxNDcsMzMuNzk4MDAyNyA1MC4zNjM3OTE1LDMzLjA3NDI2NTUgNTIuMzMyODM1LDMzLjA3NDI2NTUgQzU0LjgyNTQ1OTEsMzMuMDc0MjY1NSA1Ni44MjU3MjcsMzQuMTAwNDAwOSA1OC4zMzQwMTk3LDM2LjE1MjMxMTEgQzU5Ljg0MTU1MDgsMzguMjA0MjIxNCA2MC41OTU1MDY3LDQxLjEyMzY3OTIgNjAuNTk1NTA2Nyw0NC45MTEwNDQ5IEM2MC41OTU1MDY3LDQ5LjI5Mjc1NDUgNTkuNzYxNTg1OCw1Mi4zNzY1NjcgNTguMDk2MDI4NSw1NC4xNTk1OTg4IE01My41Mjk2NDQ5LDI5IEM0OS4wOTUwMTMxLDI5IDQ1Ljg1NDE0NDksMzEuMjIwOTUwNSA0My41Njk0Mjk5LDM1LjY2MDY4ODkgTDQzLjU2OTQyOTksMjkuNjMyMTg4OCBMMzksMjkuNjMyMTg4OCBMMzksNzAgTDQzLjk1MDIxNTgsNzAgTDQzLjk1MDIxNTgsNTUuMzE5ODEyOSBDNDYuMjM0OTMwOCw1OC45MDc4NjI2IDQ5LjM2MTE4MjQsNjAuNzAyNzg4NSA1My4zNDAzOTQzLDYwLjcwMjc4ODUgQzU3LjA0ODg2NzUsNjAuNzAyNzg4NSA2MC4wODMzNDk4LDU5LjI2MzYwMzkgNjIuNDUwNjk1Myw1Ni4zODY2NzY1IEM2NC44MTY4OTg0LDUzLjUwODMwNzQgNjYsNDkuNjE4OTQwOSA2Niw0NC43MTc4NTYxIEM2Niw0MC4xNzI1MTI2IDY0Ljg3Mjg3MzksMzYuNDE2ODY0NSA2Mi41NzI5Mjc1LDMzLjQ1MDE5MDggQzYwLjI3MTgzODgsMzAuNDgzMTU2NiA1Ny4yNzM1MzEyLDI5IDUzLjUyOTY0NDksMjkiIGlkPSJTaGFwZSIgZmlsbD0iIzVEQTdBMyIgZmlsbC1ydWxlPSJub256ZXJvIj48L3BhdGg+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik03Ny40MDY0Nzk2LDQxLjU2NzE4NTkgQzc3LjYwMzM4NjQsMzguNzQzMDk5MiA3OC41MDk4MDYsMzYuNTY3ODQ2NCA4MC4xMjM5Mzg0LDM0LjkzNjU4MzMgQzgxLjczNjk5MDksMzMuMzA0OTY3MiA4My43MDI0NTk4LDMyLjQ2NTE1NDQgODYuMDE5NjI1NCwzMi40NjUxNTQ0IEM4Ny43NDIxMTA1LDMyLjQ2NTE1NDQgODkuMjE2NTcyMiwzMi45MDQyOTk5IDkwLjQ0NTE3MDMsMzMuODA4MDA3NyBDOTEuNjcyNjg4NSwzNC43MTAzMDM0IDkyLjU0NDU1MDQsMzUuODQ1MjMzMiA5My4wNTg5NTYxLDM3LjEyNzAxNTYgQzkzLjU3NDgwMTcsMzguNDA4NDQ0OSA5My44NTA1NDMzLDM5LjgwMjEzMTcgOTMuODkwNTAwNiw0MS41NjcxODU5IEw3Ny40MDY0Nzk2LDQxLjU2NzE4NTkgWiBNOTUuMzMxODQ0NSwzMy4wNDQ3OTgyIEM5Mi45NDUyMDM3LDMwLjM4NDE1NTUgODkuNzkyMTczOSwyOSA4NS44NzA5NTUzLDI5IEM4MS44OTE0MjA2LDI5IDc4LjU4MzYwMTEsMzAuNDE1NTczNSA3NS45NTA3MzY2LDMzLjMwMjQ5NjEgQzczLjMxNzE1MjIsMzYuMTg4MDA2NyA3MiwzOS45NjAyODA2IDcyLDQ0LjY0NTA4NzUgQzcyLDQ5LjIzMjQ2MzMgNzMuMjY2Mzk1Niw1Mi45MzE2NjM5IDc1LjgwMTcwNjYsNTUuNzU5OTg2OCBDNzguMzM2Mjk3Niw1OC41ODk3MjE3IDgxLjY1MzQ3NjQsNjAgODUuNzUyODgzMSw2MCBDODguODYxNjM1OSw2MCA5MS41NjM2MTU4LDU5LjE3NTM2NjcgOTMuODYwNjIyNiw1Ny41Mjc4NjUxIEM5Ni4xNTgzNDk0LDU1Ljg4MTA2OTUgOTcuNzAyNjQ2NSw1My44MDExMjk2IDk4LjQ5NDk1MzcsNTEuMjg2NjMzNCBMOTQuMTU5MDQyNyw1MC40MTM2Mzc2IEM5Mi41OTM4NjcxLDU0LjI3Njk4ODIgODkuOTAwODg2Niw1Ni4yMDk3MjI2IDg2LjA3OTAyMTQsNTYuMjA5NzIyNiBDODMuOTYwMjAyNyw1Ni4yMDk3MjI2IDgxLjk1MDQ1NjYsNTUuNTQxODI2MSA4MC4wNDk3ODMzLDUzLjk4ODU3ODQgQzc4LjE0ODc1MDEsNTIuNDM0NjI0NyA3Ny4xOTc2OTM1LDQ5LjMzMzQyNDQgNzcuMTk3NjkzNSw0NS4wOTcyOTQzIEw5OSw0NS4wOTcyOTQzIEM5OC45NDA2MDQsMzkuNDQ5MTIwOSA5Ny43MTc3NjU1LDM1LjcwNDczNDkgOTUuMzMxODQ0NSwzMy4wNDQ3OTgyIEw5NS4zMzE4NDQ1LDMzLjA0NDc5ODIgWiIgaWQ9IlNoYXBlIiBmaWxsPSIjNURBN0EzIiBmaWxsLXJ1bGU9Im5vbnplcm8iPjwvcGF0aD4KICAgICAgICAgICAgPHBhdGggZD0iTTEyMy40MDI0LDMwLjc0NDkzNTUgQzEyMS42NTMyLDI5LjU4MjAwNjcgMTE5LjQ3NTYsMjkgMTE2Ljk4ODgsMjkgQzExMi42NzYsMjkgMTA5LjIsMzEuMTI4MTIwMSAxMDYuNCwzNS4zODMyNzU3IEwxMDYuNCwyOS42MzQ0MjM0IEwxMDIsMjkuNjM0NDIzNCBMMTAyLDYwIEwxMDYuOCw2MCBMMTA2LjgsNDMuNDM2NjU3NSBDMTA2LjgsNDAuMzE1ODcyNyAxMDcuNzM4NCwzNy43OTk1MDcyIDEwOS41MzE2LDM1Ljg4OTczIEMxMTEuMzIzNiwzMy45ODEwMzczIDExMy41NjI0LDMzLjAyNjY5MDkgMTE2LjIwMjQsMzMuMDI2NjkwOSBDMTE4LjExNzIsMzMuMDI2NjkwOSAxMTkuNzk1MiwzMy41OTM1MTQ4IDEyMS4xMzcyLDM0LjcyNzE2MjYgQzEyMi40Nzk2LDM1Ljg2MDA4NzQgMTIzLjIsMzcuODE5MDI3OSAxMjMuMiw0MC42MDM2MjI2IEwxMjMuMiw2MCBMMTI4LDYwIEwxMjgsNDIuNTQxOTU3OCBDMTI4LDM4Ljc0NDA5MzEgMTI3LjY2MjQsMzYuMTE5NjQwNyAxMjcuMDEyNCwzNC42Njc1MTU5IEMxMjYuMzYzMiwzMy4yMTUzOTEyIDEyNS4xNTIsMzEuOTA3ODY0NCAxMjMuNDAyNCwzMC43NDQ5MzU1IFoiIGlkPSJTaGFwZSIgZmlsbD0iIzVEQTdBMyIgZmlsbC1ydWxlPSJub256ZXJvIj48L3BhdGg+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNDcuMjk3ODcyLDQ5LjYwNTg3OTYgQzE0Ny4yOTc4NzIsNTEuODU4MzkzNCAxNDcuMTIyODA5LDUzLjQ4NjUyNzUgMTQ2Ljc4MjA4NSw1NC40OTI4Mzc3IEMxNDYuNDQwMjc3LDU1LjQ5ODA1MjYgMTQ1Ljc3MDQwNCw1Ni4zMTY2ODM4IDE0NC43NzUsNTYuOTUwNTU3MSBDMTQzLjc4MDMxOSw1Ny41ODM3IDE0Mi4xMjYyNTUsNTcuODk5MTc2MSAxNDAuMDI2NTc0LDU3Ljg5OTE3NjEgQzEzOC41NTA0NjgsNTcuODk5MTc2MSAxMzcuMTcwMjEzLDU3LjcwMzgyOTIgMTM1LDU3LjMxMjc3MDMgTDEzNSw2MS4yMTg5Nzc2IEMxMzcuMTcwMjEzLDYxLjczODkyODkgMTM4Ljc4MDg3Miw2MiAxNDAuNjA1NjYsNjIgQzE0NC4wMTM2MTcsNjIgMTQ2Ljc5NTQ2OCw2MS4wODc1MjkzIDE0OC44NTkzNCw1OS4yNjQ0MTM0IEMxNTAuOTIyNDg5LDU3LjQ0MDIwMjIgMTUyLDU0LjIyMDA4MjQgMTUyLDQ5LjYwMjk1ODUgTDE1MiwyMyBMMTQ3LjI5Nzg3MiwyMyBMMTQ3LjI5Nzg3Miw0OS42MDU4Nzk2IFoiIGlkPSJTaGFwZSIgZmlsbD0iI0ZGRkZGRiIgZmlsbC1ydWxlPSJub256ZXJvIj48L3BhdGg+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNzYuMjc2Mjg3LDQxLjgwOTg1MDUgQzE3NC41NzcyODcsNDMuNjE0NjkxMSAxNzIuNDczNjEzLDQ0LjUxNzI5MDkgMTY5Ljk2NjMxMyw0NC41MTcyOTA5IEMxNjcuNjg4NzU4LDQ0LjUxNzI5MDkgMTY1LjY5Mjk3NCw0My43Mzg2MDU1IDE2My45NzY1MTYsNDIuMTgxNTkzOCBDMTYyLjI2MDQwNyw0MC42MjM1MDQ2IDE2MS40MDIxNzgsMzguNTA3MjYxNyAxNjEuNDAyMTc4LDM1LjgzMTA2OTMgQzE2MS40MDIxNzgsMzMuMzQwMjA5OCAxNjIuMTc2MjYsMzEuMjI2NDgxMSAxNjMuNzIzNzI2LDI5LjQ5NTYzMDEgQzE2NS4yNjk3OTUsMjcuNzYzNzAxNSAxNjcuMzc3NjU5LDI2Ljg5ODA5NjQgMTcwLjA0NTkyMSwyNi44OTgwOTY0IEMxNzIuNjc4MjE5LDI2Ljg5ODA5NjQgMTc0Ljc5OTcsMjcuNzQwMzU1MyAxNzYuNDA4OTY3LDI5LjQyNjY2OSBDMTc4LjAxODkzMiwzMS4xMTI2MjM1IDE3OC44MjM3NCwzMy4xMjkwMTY1IDE3OC44MjM3NCwzNS40NzM2OTI5IEMxNzguODIzNzQsMzcuODkyNzE4IDE3Ny45NzM4OTEsNDAuMDA1MDEgMTc2LjI3NjI4Nyw0MS44MDk4NTA1IE0xODAuMzQ0MzIxLDI3Ljk1NzY1NDUgQzE3Ny45MDgyNDksMjQuNjUzOTg4MiAxNzQuNDA0MTA1LDIzIDE2OS44MzIyMzYsMjMgQzE2Ni4wOTc2NDgsMjMgMTYzLjAyNDcxMywyNC4yNjQyODYzIDE2MC42MTUxNzcsMjYuNzkxNzgxNCBDMTU4LjIwNDI0NCwyOS4zMTk5OTQ4IDE1NywzMi4zNjAzODc5IDE1NywzNS45MTQwMzgxIEMxNTcsMzkuNDEyNzM1IDE1OC4xNDYyODQsNDIuMzQ3ODkwNiAxNjAuNDQwOTQ3LDQ0LjcxOTg2NDEgQzE2Mi43MzU5NTksNDcuMDkxNDc4NCAxNjUuNTcyNTE1LDQ4LjI3NzgyNDMgMTY4Ljk1MTMxMiw0OC4yNzc4MjQzIEMxNzMuNzM2MTY2LDQ4LjI3NzgyNDMgMTc3LjMyMDYxNyw0Ni4wMjY4OTE5IDE3OS43MDQzMTUsNDEuNTI1NzQ1MyBDMTc5LjY1MDU0NSw0Ni42NjcyOTYgMTc4Ljc0NzYyNCw1MC43Mzg4NzI2IDE3Ni45OTY1OTksNTMuNzM5Mzk3NSBDMTc1LjI0NDE3Nyw1Ni43NDA2NDA4IDE3Mi42MzQyMjUsNTguMjM5ODI1OCAxNjkuMTY0OTk2LDU4LjIzOTgyNTggQzE2NS41OTEwMiw1OC4yMzk4MjU4IDE2My4wNDcwNTksNTYuNTExNDg4OSAxNjEuNTM0ODU4LDUzLjA1MzAxOTMgTDE1Ny44Nzk4NzcsNTQuNDI1Nzc1NyBDMTU5LjgwMDI0Myw1OS40NzUzNzgzIDE2My41NDQyNTksNjIgMTY5LjExMjYyMyw2MiBDMTczLjg3ODI3Myw2MiAxNzcuNTUyMTA5LDYwLjExOTAxNDkgMTgwLjEzMDk4Niw1Ni4zNTY2ODU3IEMxODIuNzA5ODYzLDUyLjU5Mzk5NzIgMTg0LDQ3LjY3Mjk3ODMgMTg0LDQxLjU5MzYyODggQzE4NCwzNS44MDgwODIzIDE4Mi43ODE0NCwzMS4yNjI3NTc1IDE4MC4zNDQzMjEsMjcuOTU3NjU0NSIgaWQ9IlNoYXBlIiBmaWxsPSIjRkZGRkZGIiBmaWxsLXJ1bGU9Im5vbnplcm8iPjwvcGF0aD4KICAgICAgICAgICAgPHBhdGggZD0iTTEyNC4zMzAyOTMsNjIuNzMyMDAzNiBDMTI2LjExMDM2Niw2NS45NDEzOTgxIDEyOC4zMzYxNzgsNjguOTYxNzY3NSAxMzEuMDA3NzMsNzEuNjk4NDQyNSBDMTQ3LjAxOTQxMiw4OC4xMDA1MTkyIDE3Mi45Nzk0NzgsODguMTAwNTE5MiAxODguOTkxMTYsNzEuNjk4NDQyNSBDMjA1LjAwMjk0Nyw1NS4yOTY0MzcxIDIwNS4wMDI5NDcsMjguNzAzNTY4MyAxODguOTkxMTYsMTIuMzAxNTYyOCBDMTcyLjk3OTQ3OCwtNC4xMDA1MjA5NSAxNDcuMDE5NDEyLC00LjEwMDUyMDk1IDEzMS4wMDc3MywxMi4zMDE1NjI4IEMxMjYuMjY5OTMzLDE3LjE1NDgyODggMTIyLjkzNDAxOCwyMi45MDAzNDY4IDEyMSwyOS4wMTAwOTQ3IEwxMjMuMTI2NCwyOS45Nzk5MDQ0IEMxMjQuOTM5NTY1LDI0LjEyNjU4MDcgMTI4LjExMTk2OSwxOC42MTkzOTIyIDEzMi42NDM2MDQsMTMuOTc3MzE3MyBDMTQ3Ljc1MTgyNywtMS40OTkyNzA5MiAxNzIuMjQ3MDgsLTEuNDk5MjcwOTIgMTg3LjM1NTI4NiwxMy45NzczMTczIEMyMDIuNDYzNTk3LDI5LjQ1MzgyIDIwMi40NjM1OTcsNTQuNTQ2MTc4MyAxODcuMzU1Mjg2LDcwLjAyMjY5MTYgQzE3Mi4yNDcwOCw4NS40OTkyNTQ5IDE0Ny43NTE4MjcsODUuNDk5MjU0OSAxMzIuNjQzNjA0LDcwLjAyMjY5MTYgQzEzMC4xNzg1NjIsNjcuNDk3NTYwMyAxMjguMTE1NzI1LDY0LjcxNjQ2NzggMTI2LjQ1NTA1OCw2MS43NjI5Mjc2IEwxMjQuMzMwMjkzLDYyLjczMjAwMzYgWiIgaWQ9IlNoYXBlIiBmaWxsPSIjNURBN0EzIiBmaWxsLXJ1bGU9Im5vbnplcm8iPjwvcGF0aD4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==" alt="OpenJ9 Logo"/></div><style data-emotion-css="1azjx00">.css-1azjx00{width:90%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;text-align:center;margin-top:8rem;margin-left:5%;}@media screen and (min-width:560px){.css-1azjx00{width:90%;margin-top:8rem;margin-left:5%;}}@media screen and (min-width:1000px){.css-1azjx00{width:40%;-webkit-align-items:start;-webkit-box-align:start;-ms-flex-align:start;align-items:start;text-align:left;margin-top:3rem;margin-left:20%;}}@media screen and (min-width:1366px){.css-1azjx00{width:33%;-webkit-align-items:start;-webkit-box-align:start;-ms-flex-align:start;align-items:start;text-align:left;margin-top:3rem;margin-left:15%;}}</style><section class="css-1azjx00"><style data-emotion-css="tfdfz8">.css-tfdfz8{font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.125;font-weight:700;margin-top:16px;margin-bottom:16px;font-size:36px;}</style><h1 class="css-tfdfz8">Unleash the power of Java</h1><style data-emotion-css="fza3g9">.css-fza3g9{margin-bottom:40px;font-size:18px;}</style><p class="css-fza3g9">Optimized to run Java™ applications cost-effectively in the cloud, Eclipse OpenJ9 is a fast and efficient JVM that delivers power and performance when you need it most.</p><p class="css-fza3g9">Grab a pre-built binary of OpenJDK with OpenJ9 from the AdoptOpenJDK community.</p><style data-emotion-css="wiyika">.css-wiyika{background-color:var(--theme-ui-colors-secondary,#5DA7A3);color:white;border-radius:35px;height:35px;width:190px;border:none;font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';font-size:16px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-text-decoration:none;text-decoration:none;}.css-wiyika:hover{cursor:pointer;background-color:var(--theme-ui-colors-secondaryDark,#5d9da3);border-color:var(--theme-ui-colors-secondaryDark,#5d9da3);-webkit-text-decoration:none;text-decoration:none;color:white;}</style><a href="https://adoptopenjdk.net/releases.html?variant=openjdk8&amp;jvmVariant=openj9" rel="noopener noreferrer" target="_blank" class="css-wiyika"><style data-emotion-css="1x97c6v">.css-1x97c6v{width:80%;}</style><img src="/openj9/static/adopt-open-jdk-7072a4c16b356c87671638dba5c860e9.png" alt="adoptopenJDK Logo" class="css-1x97c6v"/></a></section></div><style data-emotion-css="1rgbpau">.css-1rgbpau{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:space-around;-webkit-justify-content:space-around;-ms-flex-pack:space-around;justify-content:space-around;padding:5% 5% 1% 5%;margin-left:-15px;}</style><div class="css-1rgbpau"><style data-emotion-css="1t4iz5a">.css-1t4iz5a{min-height:200px;border-radius:10px;background-color:white;color:var(--theme-ui-colors-darkText,#4d4f50);margin-top:40px;margin-bottom:40px;margin-left:16px;margin-right:16px;width:20rem;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}</style><article class="css-1t4iz5a"><i class="fas fa-rocket fa-5x"></i><style data-emotion-css="hvj0dp">.css-hvj0dp{text-align:center;margin-bottom:4px;}</style><style data-emotion-css="742pl">.css-742pl{font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.125;font-weight:700;margin-top:16px;margin-bottom:16px;font-size:20px;text-align:center;margin-bottom:4px;}</style><h4 class="css-742pl">Optimized for the Cloud</h4><style data-emotion-css="xi606m">.css-xi606m{text-align:center;}</style><style data-emotion-css="1kwj0e6">.css-1kwj0e6{margin-bottom:40px;font-size:18px;text-align:center;}</style><p class="css-1kwj0e6">for microservices and monoliths too!</p></article><article class="css-1t4iz5a"><i class="fas fa-tachometer-alt fa-5x"></i><h4 class="css-742pl">42% Faster Startup</h4><p class="css-1kwj0e6">over HotSpot</p></article><article class="css-1t4iz5a"><i class="fas fa-chart-line fa-5x"></i><h4 class="css-742pl">28% Faster Ramp-up</h4><p class="css-1kwj0e6">when deployed to cloud vs HotSpot</p></article><article class="css-1t4iz5a"><i class="fas fa-archive fa-5x"></i><h4 class="css-742pl">66% Smaller</h4><p class="css-1kwj0e6">when compared to HotSpot</p></article></div><style data-emotion-css="hqj7sj">.css-hqj7sj{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;padding-bottom:5%;}</style><div class="css-hqj7sj"><style data-emotion-css="13fgejr">.css-13fgejr{background-color:var(--theme-ui-colors-secondary,#5DA7A3);color:white;border-radius:35px;height:35px;width:15rem;border:none;font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';font-size:16px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-text-decoration:none;text-decoration:none;}.css-13fgejr:hover{cursor:pointer;background-color:var(--theme-ui-colors-secondaryDark,#5d9da3);border-color:var(--theme-ui-colors-secondaryDark,#5d9da3);-webkit-text-decoration:none;text-decoration:none;color:white;}</style><a class="css-13fgejr" href="/openj9/performance">Read performance details</a></div><style data-emotion-css="jj2lo">.css-jj2lo{padding:calc(5% + 40px);background-color:#F5F9FC;min-height:50vh;}</style><div class="css-jj2lo"><style data-emotion-css="4ddra2">.css-4ddra2{font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.125;font-weight:700;margin-top:16px;margin-bottom:16px;font-size:24px;}</style><h3 class="css-4ddra2">Join the conversation</h3><style data-emotion-css="qdhnue">.css-qdhnue{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;background-color:white;border-radius:10px;padding:5%;-webkit-align-items:flex-end;-webkit-box-align:flex-end;-ms-flex-align:flex-end;align-items:flex-end;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;}</style><section class="css-qdhnue"><style data-emotion-css="2mz5sm">.css-2mz5sm{-webkit-flex:30%;-ms-flex:30%;flex:30%;max-width:600px;min-width:250px;margin-bottom:6rem;margin-top:1rem;padding-right:1rem;}@media screen and (min-width:560px){.css-2mz5sm{min-width:400px;margin-bottom:6rem;margin-top:0;padding-right:0;}}@media screen and (min-width:1000px){.css-2mz5sm{min-width:400px;margin-bottom:6rem;margin-top:0;padding-right:0;}}@media screen and (min-width:1366px){.css-2mz5sm{min-width:500px;margin-bottom:0;margin-top:0;padding-right:0;}}</style><div class="css-2mz5sm"><style data-emotion-css="ss6grz">.css-ss6grz{width:80%;height:18rem;}@media screen and (min-width:560px){.css-ss6grz{width:100%;height:7rem;}}@media screen and (min-width:1000px){.css-ss6grz{width:80%;height:10rem;}}@media screen and (min-width:1366px){.css-ss6grz{width:80%;height:10rem;}}</style><style data-emotion-css="cnmthf">.css-cnmthf{margin-bottom:40px;font-size:18px;width:80%;height:18rem;}@media screen and (min-width:560px){.css-cnmthf{width:100%;height:7rem;}}@media screen and (min-width:1000px){.css-cnmthf{width:80%;height:10rem;}}@media screen and (min-width:1366px){.css-cnmthf{width:80%;height:10rem;}}</style><p class="css-cnmthf">Join us on Slack where you can ask questions and chat directly with our developers. Whether you simply have a question about using OpenJ9, an idea for improvement, or a problem you want to discuss, we&#x27;d love to hear from you.</p><style data-emotion-css="wiyika">.css-wiyika{background-color:var(--theme-ui-colors-secondary,#5DA7A3);color:white;border-radius:35px;height:35px;width:190px;border:none;font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';font-size:16px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-text-decoration:none;text-decoration:none;}.css-wiyika:hover{cursor:pointer;background-color:var(--theme-ui-colors-secondaryDark,#5d9da3);border-color:var(--theme-ui-colors-secondaryDark,#5d9da3);-webkit-text-decoration:none;text-decoration:none;color:white;}</style><a href="https://openj9.slack.com/join/shared_invite/enQtNDU4MDI4Mjk0MTk2LWVhNTMzMGY1N2JkODQ1OWE0NTNmZjM4ZDcxOTBiMjk3NGFjM2U0ZDNhMmY0MDZlNzU0ZjAyNzQ1ODlmYjg3MjA" rel="noopener noreferrer" target="_blank" class="css-wiyika">Join OpenJ9 slack<style data-emotion-css="npnnwu">.css-npnnwu{width:10%;margin-left:0.8rem;}</style><img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjRweCIgaGVpZ2h0PSIyNHB4IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5zbGFjay1pY29uPC90aXRsZT4KICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPgogICAgPGcgaWQ9IlBhZ2UtMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9InNsYWNrLWljb24iIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0xLjAwMDAwMCwgLTEuMDAwMDAwKSI+CiAgICAgICAgICAgIDxnIGlkPSJiYWNrZ3JvdW5kIj4KICAgICAgICAgICAgICAgIDxyZWN0IGlkPSJjYW52YXNfYmFja2dyb3VuZCIgeD0iMCIgeT0iMCIgd2lkdGg9IjI2IiBoZWlnaHQ9IjI2Ij48L3JlY3Q+CiAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgPGcgaWQ9IkxheWVyLTEiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDIuMDAwMDAwLCAyLjAwMDAwMCkiIGZpbGwtcnVsZT0ibm9uemVybyI+CiAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJzdmdfMSIgc3Ryb2tlPSIjRkZGRkZGIiAgY3g9IjExIiBjeT0iMTEiIHI9IjExIj48L2NpcmNsZT4KICAgICAgICAgICAgICAgIDxnIGlkPSJzdmdfMTkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDMuMDAwMDAwLCAyLjAwMDAwMCkiIGZpbGw9IiNGRkZGRkYiICBzdHJva2Utd2lkdGg9IjAuNSI+CiAgICAgICAgICAgICAgICAgICAgPGcgaWQ9InN2Z182IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjA4NDA4MSwgMC45NzE0MjUpIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGcgaWQ9InN2Z183IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjAwMDAwMCwgOC40NjAxMjgpIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0zLjQyMjg3NTQ2LDEuNzMwMTYyNTkgQzMuNDIyODc1NDYsMi42NTQyNjg4MyAyLjY2Nzk3MTc3LDMuNDA5MTcyNTIgMS43NDM4NjU1MywzLjQwOTE3MjUyIEMwLjgxOTc1OTI4OCwzLjQwOTE3MjUyIDAuMDY0ODU1NTk4MSwyLjY1NDI2ODgzIDAuMDY0ODU1NTk4MSwxLjczMDE2MjU5IEMwLjA2NDg1NTU5ODEsMC44MDYwNTYzNTQgMC44MTk3NTkyODgsMC4wNTExNTI2NjQ1IDEuNzQzODY1NTMsMC4wNTExNTI2NjQ1IEwzLjQyMjg3NTQ2LDAuMDUxMTUyNjY0NSBMMy40MjI4NzU0NiwxLjczMDE2MjU5IFoiIGlkPSJzdmdfOCI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTQuMjY4ODg4MjEsMS43MzAxNjI1OSBDNC4yNjg4ODgyMSwwLjgwNjA1NjM1NCA1LjAyMzc5MTksMC4wNTExNTI2NjQ1IDUuOTQ3ODk4MTQsMC4wNTExNTI2NjQ1IEM2Ljg3MjAwNDM4LDAuMDUxMTUyNjY0NSA3LjYyNjkwODA3LDAuODA2MDU2MzU0IDcuNjI2OTA4MDcsMS43MzAxNjI1OSBMNy42MjY5MDgwNyw1LjkzNDE5NTIxIEM3LjYyNjkwODA3LDYuODU4MzAxNDUgNi44NzIwMDQzOCw3LjYxMzIwNTE0IDUuOTQ3ODk4MTQsNy42MTMyMDUxNCBDNS4wMjM3OTE5LDcuNjEzMjA1MTQgNC4yNjg4ODgyMSw2Ljg1ODMwMTQ1IDQuMjY4ODg4MjEsNS45MzQxOTUyMSBDNC4yNjg4ODgyMSw1LjkzNDE5NTIxIDQuMjY4ODg4MjEsMS43MzAxNjI1OSA0LjI2ODg4ODIxLDEuNzMwMTYyNTkgTDQuMjY4ODg4MjEsMS43MzAxNjI1OSBaIiBpZD0ic3ZnXzkiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgICAgICAgICA8ZyBpZD0ic3ZnXzEwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik01Ljk0Nzg5ODE0LDMuNDQ4MjE5MjcgQzUuMDIzNzkxOSwzLjQ0ODIxOTI3IDQuMjY4ODg4MjEsMi42OTMzMTU1OCA0LjI2ODg4ODIxLDEuNzY5MjA5MzQgQzQuMjY4ODg4MjEsMC44NDUxMDMwOTYgNS4wMjM3OTE5LDAuMDkwMTk5NDA3IDUuOTQ3ODk4MTQsMC4wOTAxOTk0MDcgQzYuODcyMDA0MzgsMC4wOTAxOTk0MDcgNy42MjY5MDgwNywwLjg0NTEwMzA5NiA3LjYyNjkwODA3LDEuNzY5MjA5MzQgTDcuNjI2OTA4MDcsMy40NDgyMTkyNyBMNS45NDc4OTgxNCwzLjQ0ODIxOTI3IFoiIGlkPSJzdmdfMTEiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik01Ljk0Nzg5ODE0LDQuMjk0MjMyMDIgQzYuODcyMDA0MzgsNC4yOTQyMzIwMiA3LjYyNjkwODA3LDUuMDQ5MTM1NzEgNy42MjY5MDgwNyw1Ljk3MzI0MTk1IEM3LjYyNjkwODA3LDYuODk3MzQ4MTkgNi44NzIwMDQzOCw3LjY1MjI1MTg4IDUuOTQ3ODk4MTQsNy42NTIyNTE4OCBMMS43NDM4NjU1Myw3LjY1MjI1MTg4IEMwLjgxOTc1OTI4OCw3LjY1MjI1MTg4IDAuMDY0ODU1NTk4MSw2Ljg5NzM0ODE5IDAuMDY0ODU1NTk4MSw1Ljk3MzI0MTk1IEMwLjA2NDg1NTU5ODEsNS4wNDkxMzU3MSAwLjgxOTc1OTI4OCw0LjI5NDIzMjAyIDEuNzQzODY1NTMsNC4yOTQyMzIwMiBDMS43NDM4NjU1Myw0LjI5NDIzMjAyIDUuOTQ3ODk4MTQsNC4yOTQyMzIwMiA1Ljk0Nzg5ODE0LDQuMjk0MjMyMDIgWiIgaWQ9InN2Z18xMiI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICAgICAgICAgIDxnIGlkPSJzdmdfMTMiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDguNDYwMTI4LCAwLjAwMDAwMCkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTQuMjI5ODQxNDcsNS45NzMyNDE5NSBDNC4yMjk4NDE0Nyw1LjA0OTEzNTcxIDQuOTg0NzQ1MTYsNC4yOTQyMzIwMiA1LjkwODg1MTQsNC4yOTQyMzIwMiBDNi44MzI5NTc2NCw0LjI5NDIzMjAyIDcuNTg3ODYxMzMsNS4wNDkxMzU3MSA3LjU4Nzg2MTMzLDUuOTczMjQxOTUgQzcuNTg3ODYxMzMsNi44OTczNDgxOSA2LjgzMjk1NzY0LDcuNjUyMjUxODggNS45MDg4NTE0LDcuNjUyMjUxODggTDQuMjI5ODQxNDcsNy42NTIyNTE4OCBMNC4yMjk4NDE0Nyw1Ljk3MzI0MTk1IFoiIGlkPSJzdmdfMTQiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0zLjM4MzgyODcyLDUuOTczMjQxOTUgQzMuMzgzODI4NzIsNi44OTczNDgxOSAyLjYyODkyNTAzLDcuNjUyMjUxODggMS43MDQ4MTg3OSw3LjY1MjI1MTg4IEMwLjc4MDcxMjU0NSw3LjY1MjI1MTg4IDAuMDI1ODA4ODU1Niw2Ljg5NzM0ODE5IDAuMDI1ODA4ODU1Niw1Ljk3MzI0MTk1IEwwLjAyNTgwODg1NTYsMS43NjkyMDkzNCBDMC4wMjU4MDg4NTU2LDAuODQ1MTAzMDk2IDAuNzgwNzEyNTQ1LDAuMDkwMTk5NDA3IDEuNzA0ODE4NzksMC4wOTAxOTk0MDcgQzIuNjI4OTI1MDMsMC4wOTAxOTk0MDcgMy4zODM4Mjg3MiwwLjg0NTEwMzA5NiAzLjM4MzgyODcyLDEuNzY5MjA5MzQgTDMuMzgzODI4NzIsNS45NzMyNDE5NSBaIiBpZD0ic3ZnXzE1Ij48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgICAgICAgICAgPGcgaWQ9InN2Z18xNiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoOC40NjAxMjgsIDguNDYwMTI4KSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMS43MDQ4MTg3OSw0LjI1NTE4NTI4IEMyLjYyODkyNTAzLDQuMjU1MTg1MjggMy4zODM4Mjg3Miw1LjAxMDA4ODk3IDMuMzgzODI4NzIsNS45MzQxOTUyMSBDMy4zODM4Mjg3Miw2Ljg1ODMwMTQ1IDIuNjI4OTI1MDMsNy42MTMyMDUxNCAxLjcwNDgxODc5LDcuNjEzMjA1MTQgQzAuNzgwNzEyNTQ1LDcuNjEzMjA1MTQgMC4wMjU4MDg4NTU2LDYuODU4MzAxNDUgMC4wMjU4MDg4NTU2LDUuOTM0MTk1MjEgTDAuMDI1ODA4ODU1Niw0LjI1NTE4NTI4IEwxLjcwNDgxODc5LDQuMjU1MTg1MjggWiIgaWQ9InN2Z18xNyI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTEuNzA0ODE4NzksMy40MDkxNzI1MiBDMC43ODA3MTI1NDUsMy40MDkxNzI1MiAwLjAyNTgwODg1NTYsMi42NTQyNjg4MyAwLjAyNTgwODg1NTYsMS43MzAxNjI1OSBDMC4wMjU4MDg4NTU2LDAuODA2MDU2MzU0IDAuNzgwNzEyNTQ1LDAuMDUxMTUyNjY0NSAxLjcwNDgxODc5LDAuMDUxMTUyNjY0NSBMNS45MDg4NTE0LDAuMDUxMTUyNjY0NSBDNi44MzI5NTc2NCwwLjA1MTE1MjY2NDUgNy41ODc4NjEzMywwLjgwNjA1NjM1NCA3LjU4Nzg2MTMzLDEuNzMwMTYyNTkgQzcuNTg3ODYxMzMsMi42NTQyNjg4MyA2LjgzMjk1NzY0LDMuNDA5MTcyNTIgNS45MDg4NTE0LDMuNDA5MTcyNTIgTDEuNzA0ODE4NzksMy40MDkxNzI1MiBMMS43MDQ4MTg3OSwzLjQwOTE3MjUyIFoiIGlkPSJzdmdfMTgiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+" alt="slack Logo" class="css-npnnwu"/></a></div><style data-emotion-css="zkzfzn">.css-zkzfzn{-webkit-flex:30%;-ms-flex:30%;flex:30%;max-width:600px;min-width:250px;margin-bottom:1rem;}@media screen and (min-width:560px){.css-zkzfzn{min-width:400px;margin-bottom:1rem;}}@media screen and (min-width:1000px){.css-zkzfzn{min-width:400px;margin-bottom:6rem;}}@media screen and (min-width:1366px){.css-zkzfzn{min-width:500px;margin-bottom:0rem;}}</style><div class="css-zkzfzn"><style data-emotion-css="zoaqxi">.css-zoaqxi{width:80%;height:15rem;}@media screen and (min-width:560px){.css-zoaqxi{width:100%;height:6rem;}}@media screen and (min-width:1000px){.css-zoaqxi{width:80%;height:10rem;}}@media screen and (min-width:1366px){.css-zoaqxi{width:80%;height:10rem;}}</style><style data-emotion-css="2or2qm">.css-2or2qm{margin-bottom:40px;font-size:18px;width:80%;height:15rem;}@media screen and (min-width:560px){.css-2or2qm{width:100%;height:6rem;}}@media screen and (min-width:1000px){.css-2or2qm{width:80%;height:10rem;}}@media screen and (min-width:1366px){.css-2or2qm{width:80%;height:10rem;}}</style><p class="css-2or2qm">Like all great open source projects, we have a vibrant and busy GitHub repository where you can create issues to explore ideas, request new features, or report any difficulties you are having.</p><a href="https://github.com/eclipse/openj9/issues" rel="noopener noreferrer" target="_blank" class="css-wiyika">See OpenJ9 issues<img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIyNXB4IiB2aWV3Qm94PSIwIDAgMjUgMjUiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5HaXRIdWI8L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0iR2l0SHViIiBmaWxsPSIjRkZGRkZGIiBmaWxsLXJ1bGU9Im5vbnplcm8iPgogICAgICAgICAgICA8ZyBpZD0iZ2l0aHViLWxvZ28iPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTIzLjMyMzIwOSw2LjM1NjM4NTg4IEMyMi4yMDU0MjQzLDQuNDI4ODY0OTMgMjAuNjg5MjIwNywyLjkwMjg0MzkxIDE4Ljc3NDE5OTMsMS43Nzc5Nzg1OCBDMTYuODU4ODkyOCwwLjY1MzA1NTg3MyAxNC43Njc5NDkxLDAuMDkwNzM3OTUzMyAxMi40OTk4ODYsMC4wOTA3Mzc5NTMzIEMxMC4yMzIxMDc5LDAuMDkwNzM3OTUzMyA4LjE0MDQ4MDEzLDAuNjUzMjI3OTkzIDYuMjI1NTcyNjksMS43Nzc5Nzg1OCBDNC4zMTAzODAyMSwyLjkwMjc4NjU0IDIuNzk0MjMzNjcsNC40Mjg4NjQ5MyAxLjY3NjQ0ODk5LDYuMzU2Mzg1ODggQzAuNTU4ODM1MzMzLDguMjgzODQ5NDUgMCwxMC4zODg2NTQ2IDAsMTIuNjcwNzQzOSBDMCwxNS40MTIwNTEgMC43OTQ2NzE0ODMsMTcuODc3MTA0NSAyLjM4NDQxMzQ5LDIwLjA2NjUzNTUgQzMuOTczOTg0NDksMjIuMjU2MTM4OCA2LjAyNzQ3NDg4LDIzLjc3MTI1ODggOC41NDQ3MTM2NywyNC42MTIwNjc4IEM4LjgzNzcyNzQsMjQuNjY2ODAyMiA5LjA1NDYzNzM3LDI0LjYyODMwNDUgOS4xOTU2NzE2MSwyNC40OTc1NTAzIEM5LjMzNjc2Mjg1LDI0LjM2NjYyMzkgOS40MDcyMjI5NiwyNC4yMDI2NTAzIDkuNDA3MjIyOTYsMjQuMDA2MzE4MSBDOS40MDcyMjI5NiwyMy45NzM1NTc5IDkuNDA0NDI5NjQsMjMuNjc4ODMwMSA5LjM5OTAxNDAxLDIzLjEyMTc5MDUgQzkuMzkzNDI3MzcsMjIuNTY0NzUxIDkuMzkwODA1MDcsMjIuMDc4Nzk3MiA5LjM5MDgwNTA3LDIxLjY2NDE1ODcgTDkuMDE2NDQyOTcsMjEuNzI5MzM1MSBDOC43Nzc3NTY1LDIxLjc3MzM0MDUgOC40NzY2NDc4MywyMS43OTE5ODY5IDguMTEzMTE2OTgsMjEuNzg2NzA4NiBDNy43NDk3NTcxNSwyMS43ODE2MDIzIDcuMzcyNTQ0NzMsMjEuNzQzMjc2OCA2Ljk4MTk5Mjc3LDIxLjY3MjAxODkgQzYuNTkxMjY5NzksMjEuNjAxMzkyMSA2LjIyNzg1Mjk1LDIxLjQzNzU5MDcgNS44OTE0NTcyMiwyMS4xODA5NTg5IEM1LjU1NTIzMjUyLDIwLjkyNDMyNzEgNS4zMTY1NDYwNCwyMC41ODg0MDUxIDUuMTc1NDU0OCwyMC4xNzM3MDkzIEw1LjAxMjcwMTA2LDE5Ljc5Njc2NTIgQzQuOTA0MjE3NTcsMTkuNTQ1ODEzNCA0LjczMzQyNTkxLDE5LjI2NzAzNTUgNC41MDAwOTgwNSwxOC45NjE0NjQxIEM0LjI2Njc3MDE5LDE4LjY1NTYwNTggNC4wMzA4MjAwMywxOC40NDgyNTc5IDMuNzkyMTMzNTUsMTguMzM5MDc2MSBMMy42NzgxNzc0MywxOC4yNTY5NzQ2IEMzLjYwMjI0NDY5LDE4LjIwMjQxMjMgMy41MzE3ODQ1OCwxOC4xMzY2MDQ5IDMuNDY2NjI2MDgsMTguMDYwMjQwOCBDMy40MDE1MjQ1OCwxNy45ODM4NzY2IDMuMzUyNzgzOTcsMTcuOTA3NDU1MSAzLjMyMDIzMzIzLDE3LjgzMDkxODggQzMuMjg3NjI1NDcsMTcuNzU0MzI1MSAzLjMxNDY0NjU4LDE3LjY5MTUwMTEgMy40MDE1ODE1OSwxNy42NDIyMTcyIEMzLjQ4ODUxNjYsMTcuNTkyOTMzNCAzLjY0NTYyNjY4LDE3LjU2OTAwODYgMy44NzM1OTU5MywxNy41NjkwMDg2IEw0LjE5ODk4OTM5LDE3LjYxNzk0ODIgQzQuNDE2MDEzMzcsMTcuNjYxNzI0MiA0LjY4NDQ1NzI3LDE3Ljc5MjQ3ODUgNS4wMDQ2NjMxNCwxOC4wMTEwMTQzIEM1LjMyNDY5Nzk4LDE4LjIyOTM3NzkgNS41ODc3ODMyNywxOC41MTMyNjIxIDUuNzkzOTc2LDE4Ljg2MjU1MjEgQzYuMDQzNjY0NzUsMTkuMzEwNDA5OSA2LjM0NDQ4ODM4LDE5LjY1MTY2NzYgNi42OTczMDE5OSwxOS44ODY0OTc0IEM3LjA0OTgzMDU4LDIwLjEyMTMyNzMgNy40MDUyNjY0OSwyMC4yMzg1NDE0IDcuNzYzMjY3NzEsMjAuMjM4NTQxNCBDOC4xMjEyNjg5MiwyMC4yMzg1NDE0IDguNDMwNDcyNTIsMjAuMjExMjMxNiA4LjY5MDk5MjUxLDIwLjE1Njg5ODkgQzguOTUxMjI3NDcsMjAuMTAyMjc5MyA5LjE5NTM4NjU3LDIwLjAyMDE3NzcgOS40MjMzNTU4MiwxOS45MTEwNTMzIEM5LjUyMTAwODA2LDE5LjE3OTA4MTkgOS43ODY4ODY2NywxOC42MTY3NjM5IDEwLjIyMDc2MzYsMTguMjIzNjk3OSBDOS42MDIzNTY0MiwxOC4xNTgyOTIxIDkuMDQ2MzcxNDIsMTguMDU5NzgxOCA4LjU1MjUyMzU3LDE3LjkyODc5OCBDOC4wNTg5NjA3NSwxNy43OTc2NDIxIDcuNTQ4OTIzMDMsMTcuNTg0Nzg2MyA3LjAyMjc1MjQ2LDE3LjI4OTY1NjkgQzYuNDk2Mjk2ODUsMTYuOTk0OTI5MSA2LjA1OTU2OTU4LDE2LjYyODk0MzQgNS43MTI0NTY2MiwxNi4xOTIzMzA5IEM1LjM2NTI4NjY1LDE1Ljc1NTQ4ODkgNS4wODAzNjc4NSwxNS4xODE5ODMxIDQuODU4MDk5MjYsMTQuNDcyMzMgQzQuNjM1NzE2NjYsMTMuNzYyMzkgNC41MjQ0OTY4NiwxMi45NDM0NDAzIDQuNTI0NDk2ODYsMTIuMDE1MjUxNCBDNC41MjQ0OTY4NiwxMC42OTM2NTIzIDQuOTUzMTg2MjEsOS41NjkwMTY0MiA1LjgxMDM5Mzg5LDguNjQwNzEyNzggQzUuNDA4ODM5NjcsNy42NDcxMTgwNyA1LjQ0Njc0OTAzLDYuNTMzMjY4NDYgNS45MjQyMzYsNS4yOTkyNzg2OCBDNi4yMzg5MTIyMiw1LjIwMDg4MzA4IDYuNzA1NTY3OTQsNS4yNzQ3MjI4MSA3LjMyMzk3NTE0LDUuNTIwMzM4ODcgQzcuOTQyNDk2MzQsNS43NjYwNjk2OCA4LjM5NTM1NjQ3LDUuOTc2NTczMTQgOC42ODMwMTE1OSw2LjE1MTEwMzQxIEM4Ljk3MDY2NjcsNi4zMjU1NzYzIDkuMjAxMTQ0MjQsNi40NzM0Mjc4NyA5LjM3NDc4NjIzLDYuNTkzMzM4NTQgQzEwLjM4NDA4NzQsNi4zMDk1MTE3MSAxMS40MjU2NTQzLDYuMTY3NTY5NjEgMTIuNDk5NzcyLDYuMTY3NTY5NjEgQzEzLjU3Mzg4OTYsNi4xNjc1Njk2MSAxNC42MTU2ODQ2LDYuMzA5NTExNzEgMTUuNjI1MDQyOCw2LjU5MzMzODU0IEwxNi4yNDM1MDcsNi4yMDAzODcyNiBDMTYuNjY2NDM4Niw1LjkzODE5MDI1IDE3LjE2NTg3MzEsNS42OTc5MDk5MyAxNy43NDA2MTMzLDUuNDc5NDg4OTIgQzE4LjMxNTY5NTUsNS4yNjExODI2NiAxOC43NTU0NDQxLDUuMjAxMDU1MiAxOS4wNTk0MDMxLDUuMjk5NDUwOCBDMTkuNTQ3NDkzMyw2LjUzMzQ5Nzk1IDE5LjU5MDk4OTMsNy42NDcyOTAxOSAxOS4xODkzMjExLDguNjQwODg0OSBDMjAuMDQ2NDcxNyw5LjU2OTE4ODU0IDIwLjQ3NTMzMjEsMTAuNjk0MTExMiAyMC40NzUzMzIxLDEyLjAxNTQyMzUgQzIwLjQ3NTMzMjEsMTIuOTQzNjEyNCAyMC4zNjM3MTMzLDEzLjc2NTE0MzkgMjAuMTQxNjcyNywxNC40ODA1MzQ0IEMxOS45MTkzNDcxLDE1LjE5NjAzOTYgMTkuNjMxOTc3LDE1Ljc2ODk3MTcgMTkuMjc5NDQ4NSwxNi4yMDA1MzUzIEMxOC45MjY1MjA4LDE2LjYzMjA0MTYgMTguNDg3MDAwMiwxNi45OTUxNTg2IDE3Ljk2MDgyOTcsMTcuMjg5ODI5MSBDMTcuNDM0NTQ1MSwxNy41ODQ3MjkgMTYuOTI0MzM2MywxNy43OTc1ODQ4IDE2LjQzMDc3MzUsMTcuOTI4NzQwNiBDMTUuOTM2OTgyNywxOC4wNTk4OTY1IDE1LjM4MDk5NzcsMTguMTU4NDY0MiAxNC43NjI1OTA1LDE4LjIyMzk4NDggQzE1LjMyNjYxMzQsMTguNzE1MjE2OSAxNS42MDg2ODE5LDE5LjQ5MDYyMDEgMTUuNjA4NjgxOSwyMC41NDk4NTAxIEwxNS42MDg2ODE5LDI0LjAwNTg1OTIgQzE1LjYwODY4MTksMjQuMjAyMTkxNCAxNS42NzY1MTk3LDI0LjM2NjEwNzUgMTUuODEyMzA5MywyNC40OTcwOTEzIEMxNS45NDc5Mjc5LDI0LjYyNzg0NTUgMTYuMTYyMTAxNiwyNC42NjYzNDMyIDE2LjQ1NTExNTMsMjQuNjExNTUxNSBDMTguOTcyNjk2MSwyMy43NzA4NTcyIDIxLjAyNjE4NjUsMjIuMjU1Njc5OCAyMi42MTU3MDA1LDIwLjA2NjA3NjYgQzI0LjIwNTA0MzUsMTcuODc2NjQ1NSAyNSwxNS40MTE1OTIgMjUsMTIuNjcwMjg0OSBDMjQuOTk5NDI5OSwxMC4zODg0ODI1IDI0LjQ0MDMwOTYsOC4yODM4NDk0NSAyMy4zMjMyMDksNi4zNTYzODU4OCBaIiBpZD0iU2hhcGUiPjwvcGF0aD4KICAgICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+" alt="GitHub Logo" class="css-npnnwu"/></a></div></section></div><style data-emotion-css="17e95nl">.css-17e95nl{background-image:url(/openj9/static/circle-pattern-big-96604574cf60a59e399e87bb5043431c.svg);height:50vh;background-repeat:no-repeat;background-size:cover;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:white;padding-left:15%;}</style><div class="css-17e95nl"><style data-emotion-css="1v4dyq7">.css-1v4dyq7{font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.125;font-weight:700;margin-top:16px;margin-bottom:16px;font-size:28px;}</style><h2 class="css-1v4dyq7">Participate in the <br/> Eclipse OpenJ9 project</h2></div><style data-emotion-css="tzns8w">.css-tzns8w{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;padding:calc(5% + 40px);}</style><div class="css-tzns8w"><style data-emotion-css="1yeqh92">.css-1yeqh92{-webkit-flex:30%;-ms-flex:30%;flex:30%;max-width:600px;min-width:250px;margin-bottom:4rem;}@media screen and (min-width:560px){.css-1yeqh92{min-width:350px;margin-bottom:4rem;}}@media screen and (min-width:1000px){.css-1yeqh92{min-width:400px;margin-bottom:4rem;}}@media screen and (min-width:1366px){.css-1yeqh92{min-width:500px;margin-bottom:2rem;}}</style><div class="css-1yeqh92"><style data-emotion-css="4ddra2">.css-4ddra2{font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.125;font-weight:700;margin-top:16px;margin-bottom:16px;font-size:24px;}</style><h3 class="css-4ddra2">Become a contributor</h3><style data-emotion-css="1gv5d24">.css-1gv5d24{width:90%;height:24rem;}@media screen and (min-width:560px){.css-1gv5d24{height:14.5rem;}}@media screen and (min-width:1000px){.css-1gv5d24{height:13rem;}}@media screen and (min-width:1366px){.css-1gv5d24{height:12rem;}}</style><style data-emotion-css="lyrwsd">.css-lyrwsd{margin-bottom:40px;font-size:18px;width:90%;height:24rem;}@media screen and (min-width:560px){.css-lyrwsd{height:14.5rem;}}@media screen and (min-width:1000px){.css-lyrwsd{height:13rem;}}@media screen and (min-width:1366px){.css-lyrwsd{height:12rem;}}</style><p class="css-lyrwsd">We welcome contributions to the project in all shapes and forms. If you are interested in JVM development, we&#x27;d love to hear your ideas and help you collaborate with us on the code base. There are other ways you can contribute too, such as working on our website and docs. Be a part of the project and share in our success!</p><style data-emotion-css="wiyika">.css-wiyika{background-color:var(--theme-ui-colors-secondary,#5DA7A3);color:white;border-radius:35px;height:35px;width:190px;border:none;font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';font-size:16px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-text-decoration:none;text-decoration:none;}.css-wiyika:hover{cursor:pointer;background-color:var(--theme-ui-colors-secondaryDark,#5d9da3);border-color:var(--theme-ui-colors-secondaryDark,#5d9da3);-webkit-text-decoration:none;text-decoration:none;color:white;}</style><a href="https://github.com/eclipse/openj9/blob/master/CONTRIBUTING.md" rel="noopener noreferrer" target="_blank" class="css-wiyika">Contributor Guide</a></div><style data-emotion-css="9nt9rn">.css-9nt9rn{-webkit-flex:30%;-ms-flex:30%;flex:30%;max-width:600px;min-width:250px;}@media screen and (min-width:560px){.css-9nt9rn{min-width:350px;}}@media screen and (min-width:1000px){.css-9nt9rn{min-width:400px;}}@media screen and (min-width:1366px){.css-9nt9rn{min-width:500px;}}</style><div class="css-9nt9rn"><h3 class="css-4ddra2">Join community calls</h3><style data-emotion-css="1nxyqjn">.css-1nxyqjn{width:90%;height:25rem;}@media screen and (min-width:560px){.css-1nxyqjn{height:14.5rem;}}@media screen and (min-width:1000px){.css-1nxyqjn{height:13rem;}}@media screen and (min-width:1366px){.css-1nxyqjn{height:12rem;}}</style><style data-emotion-css="r9vv5q">.css-r9vv5q{margin-bottom:40px;font-size:18px;width:90%;height:25rem;}@media screen and (min-width:560px){.css-r9vv5q{height:14.5rem;}}@media screen and (min-width:1000px){.css-r9vv5q{height:13rem;}}@media screen and (min-width:1366px){.css-r9vv5q{height:12rem;}}</style><p class="css-r9vv5q">Our regular calls are a great place to find out what is going on in the project. As well as discussing our release plans and development status, we often feature lightning talks by members of the community. For example, technical deep dives or overviews about new features. To see agendas and recordings, look in the Slack #planning channel.</p><a href="https://calendar.google.com/calendar?cid=YjBnYjB0ZzNxaTZhb3NhZGZnbG0wa3BjY29AZ3JvdXAuY2FsZW5kYXIuZ29vZ2xlLmNvbQ" rel="noopener noreferrer" target="_blank" class="css-wiyika">Add to Calendar</a></div></div><style data-emotion-css="15xf14k">.css-15xf14k{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;background-color:var(--theme-ui-colors-primary,#434343);color:white;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:1rem;padding-bottom:3rem;-webkit-flex-direction:reverse-column;-ms-flex-direction:reverse-column;flex-direction:reverse-column;}@media screen and (min-width:560px){.css-15xf14k{padding-bottom:3rem;}}@media screen and (min-width:1000px){.css-15xf14k{padding-bottom:0;}}@media screen and (min-width:1366px){.css-15xf14k{padding-bottom:0;}}</style><footer class="css-15xf14k"><style data-emotion-css="o3kt9a">.css-o3kt9a{-webkit-flex:50%;-ms-flex:50%;flex:50%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}@media screen and (min-width:560px){.css-o3kt9a{display:none;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}}@media screen and (min-width:1000px){.css-o3kt9a{display:none;-webkit-align-items:flex-end;-webkit-box-align:flex-end;-ms-flex-align:flex-end;align-items:flex-end;}}@media screen and (min-width:1366px){.css-o3kt9a{display:none;-webkit-align-items:flex-end;-webkit-box-align:flex-end;-ms-flex-align:flex-end;align-items:flex-end;}}</style><section class="css-o3kt9a"><a href="https://wiki.eclipse.org/Development_Resources/Process_Guidelines/What_is_Incubation" rel="noopener noreferrer" target="_blank"><img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNTBweCIgaGVpZ2h0PSI3NXB4IiB2aWV3Qm94PSIwIDAgMTU3IDIzMSIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KICAgIDwhLS0gR2VuZXJhdG9yOiBTa2V0Y2ggNjEuMiAoODk2NTMpIC0gaHR0cHM6Ly9za2V0Y2guY29tIC0tPgogICAgPHRpdGxlPmVjbGlwc2VfaW5jdWJhdGlvbl92ZXJ0aWNhbF9zdmc8L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0iZWNsaXBzZV9pbmN1YmF0aW9uX3ZlcnRpY2FsX3N2ZyIgZmlsbC1ydWxlPSJub256ZXJvIj4KICAgICAgICAgICAgPGcgaWQ9Ikdyb3VwIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNy4wMDAwMDAsIDIxNC4wMDAwMDApIiBmaWxsPSIjRkZGRkZGIj4KICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJQYXRoIiBwb2ludHM9IjAuNzUgMC4zNCAxLjkyIDAuMzQgMS45MiAxNi4wMyAwLjc1IDE2LjAzIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSI1LjYyIDAuMzQgNi43MiAwLjM0IDE3LjU1IDEzLjk5IDE3LjU1IDAuMzQgMTguNjcgMC4zNCAxOC42NyAxNi4wMyAxNy44IDE2LjAzIDYuNzUgMi4wOSA2Ljc1IDE2LjAzIDUuNjMgMTYuMDMgNS42MyAwLjM0Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMjEuODYsOC4yMyBMMjEuODYsOC4xOSBDMjEuODYsMy43NSAyNS4xOCwwLjA4IDI5LjcxLDAuMDggQzMyLjUxLDAuMDggMzQuMTksMS4xMSAzNS44MSwyLjU5IEwzNC45OCwzLjQ0IEMzMy42MSwyLjEyIDMyLjA0LDEuMTMgMjkuNjksMS4xMyBDMjUuOTIsMS4xMyAyMy4wOCw0LjIgMjMuMDgsOC4xNSBMMjMuMDgsOC4xOSBDMjMuMDgsMTIuMTYgMjUuOTcsMTUuMjUgMjkuNzEsMTUuMjUgQzMxLjk3LDE1LjI1IDMzLjUyLDE0LjM3IDM1LjExLDEyLjgxIEwzNS44OSwxMy41NyBDMzQuMjMsMTUuMjEgMzIuNDQsMTYuMyAyOS42NiwxNi4zIEMyNS4xOCwxNi4zIDIxLjg2LDEyLjc0IDIxLjg2LDguMjMgWiIgaWQ9IlBhdGgiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0zOC40LDkuNTEgTDM4LjQsMC4zNCBMMzkuNTcsMC4zNCBMMzkuNTcsOS40IEMzOS41NywxMy4xIDQxLjU3LDE1LjIzIDQ0Ljg4LDE1LjIzIEM0OC4wNiwxNS4yMyA1MC4xLDEzLjMgNTAuMSw5LjUxIEw1MC4xLDAuMzQgTDUxLjI3LDAuMzQgTDUxLjI3LDkuMzcgQzUxLjI3LDEzLjg4IDQ4LjY1LDE2LjI3MDAzMTQgNDQuODQsMTYuMjcwMDMxNCBDNDEuMDcsMTYuMjggMzguNCwxMy45IDM4LjQsOS41MSBaIiBpZD0iUGF0aCI+PC9wYXRoPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTU0LjAyLDAuMzQgTDYwLjUsMC4zNCBDNjIuMjcsMC4zNCA2My43MSwwLjg2IDY0LjU4LDEuNzMgQzY1LjIzLDIuMzggNjUuNTksMy4yMSA2NS41OSw0LjIgTDY1LjU5LDQuMjQgQzY1LjU5LDYuMzcgNjQuMiw3LjQ1IDYyLjkyLDcuOTYgQzY0LjgsOC40NSA2Ni40Niw5LjUzIDY2LjQ2LDExLjcgTDY2LjQ2LDExLjc0IEM2Ni40NiwxNC4zNiA2NC4yMiwxNi4wMiA2MC44MywxNi4wMiBMNTQuMDIsMTYuMDIgTDU0LjAyLDAuMzQgTDU0LjAyLDAuMzQgWiBNNjQuNCw0LjMxIEM2NC40LDIuNTggNjIuOTksMS40MiA2MC40OCwxLjQyIEw1NS4xOSwxLjQyIEw1NS4xOSw3LjU4IEw2MC4zNyw3LjU4IEM2Mi43Miw3LjU4IDY0LjQsNi40NCA2NC40LDQuMzUgTDY0LjQsNC4zMSBaIE02MC41LDguNjYgTDU1LjE5LDguNjYgTDU1LjE5LDE0Ljk2IEw2MC44OCwxNC45NiBDNjMuNTcsMTQuOTYgNjUuMjcwMDQ0NCwxMy43MyA2NS4yNzAwNDQ0LDExLjc1IEw2NS4yNzAwNDQ0LDExLjcxIEM2NS4yOCw5Ljc4IDYzLjYsOC42NiA2MC41LDguNjYgWiIgaWQ9IlNoYXBlIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNzYuMjgsMC4yMyBMNzcuNCwwLjIzIEw4NC43MSwxNi4wMyBMODMuNDMsMTYuMDMgTDgxLjQ0LDExLjY0IEw3Mi4xOCwxMS42NCBMNzAuMTksMTYuMDMgTDY4Ljk4LDE2LjAzIEw3Ni4yOCwwLjIzIFogTTgwLjk0LDEwLjU5IEw3Ni44MiwxLjUxIEw3Mi42NywxMC41OSBMODAuOTQsMTAuNTkgWiIgaWQ9IlNoYXBlIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSI5MS4wNSAxLjQyIDg1LjU4IDEuNDIgODUuNTggMC4zNCA5Ny42OCAwLjM0IDk3LjY4IDEuNDIgOTIuMjEgMS40MiA5Mi4yMSAxNi4wMyA5MS4wNCAxNi4wMyA5MS4wNCAxLjQyIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSIxMDEuMjkgMC4zNCAxMDIuNDYgMC4zNCAxMDIuNDYgMTYuMDMgMTAxLjI5IDE2LjAzIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTA1LjkxLDguMjMgTDEwNS45MSw4LjE5IEMxMDUuOTEsMy45MSAxMDkuMDcsMC4wOCAxMTMuODIsMC4wOCBDMTE4LjU3LDAuMDggMTIxLjY5LDMuODcgMTIxLjY5LDguMTUgTDEyMS42OSw4LjE5IEMxMjEuNjksMTIuNDcgMTE4LjUzLDE2LjMgMTEzLjc4LDE2LjMgQzEwOS4wMywxNi4zIDEwNS45MSwxMi41MSAxMDUuOTEsOC4yMyBaIE0xMjAuNDgsOC4yMyBMMTIwLjQ4LDguMTkgQzEyMC40OCw0LjMxIDExNy42NiwxLjEzIDExMy43OCwxLjEzIEMxMDkuOSwxLjEzIDEwNy4xMiw0LjI3IDEwNy4xMiw4LjE1IEwxMDcuMTIsOC4xOSBDMTA3LjEyLDEyLjA3IDEwOS45NCwxNS4yNSAxMTMuODIsMTUuMjUgQzExNy43LDE1LjI1IDEyMC40OCwxMi4xMSAxMjAuNDgsOC4yMyBaIiBpZD0iU2hhcGUiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJQYXRoIiBwb2ludHM9IjEyNC44OSAwLjM0IDEyNS45OSAwLjM0IDEzNi44MiAxMy45OSAxMzYuODIgMC4zNCAxMzcuOTQgMC4zNCAxMzcuOTQgMTYuMDMgMTM3LjA3IDE2LjAzIDEyNi4wMiAyLjA5IDEyNi4wMiAxNi4wMyAxMjQuOSAxNi4wMyAxMjQuOSAwLjM0Ij48L3BvbHlnb24+CiAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgPHBhdGggZD0iTTU2LjY2LDE2Ni4yMyBDNTcuNTEsMTYzLjQ4IDYwLjQzLDE2MS40MyA2My45NCwxNjEuNDMgQzY1LjE0LDE2MS40MyA2Ni4yNSwxNjEuNjkgNjcuMjUsMTYyLjExIEM2OS40NiwxNjAuNjQgNzIuMTksMTU5Ljc2IDc1LjE3LDE1OS43NiBMNzUuMTksMTU5Ljc2IEM3Ni4xMSwxNTcuOSA3OC40OCwxNTYuNTcgODEuMywxNTYuNTcgQzgyLjA0LDE1Ni41NyA4Mi43NSwxNTYuNjcgODMuNDIsMTU2Ljg0IEM4My4zMywxNTQuNTYgODMuNjksMTUyLjE4IDg0LjU1LDE0OS42OCBDODUuNTUsMTQ2Ljc5IDg3LDE0NC4wMyA4OC41MiwxNDEuMjggQzg4LjE3LDEzNy4xNiA4Ny45LDEzMy41IDgyLjc0LDEzMiBDODAuODIsMTMxLjQ0IDc4LjgyLDEzMS4yNyA3Ni44NiwxMzEuMDQgTDc2Ljg1LDEzMS4wNCBMNzYuODUsMTMxLjAzIEM3Ni4wMSwxMzAuOTMgNzUuMTcsMTMwLjgxIDc0LjM1LDEzMC42NSBDNjAuMTgsMTQ1LjQxIDQwLjIsMTA5Ljk3IDQwLjIsMTA5Ljk3IEM4NC4zLDEwMy4xMyA3Ni4wMSwxMjUuNjEgNzYuMDEsMTI1LjYxIEM3Mi44MSwxMjQuMDUgNzEuOTMsMTIyLjA4IDY5LjQ5LDExOS43MyBDNjMuOTIsMTE0LjM4IDUwLjYyLDExMy40NCA1MC42MiwxMTMuNDQgQzY2LjU0LDExNy41MSA2OC43MSwxMjUuMjIgNzQuOTcsMTI3LjY5IEM3Ni4zOSwxMjguMDEgNzcuOSwxMjguMTMgNzkuMzUsMTI4LjI5IEM4Mi4xNSwxMjguNTkgODQuODksMTI5LjExIDg3LjIyLDEzMC42MSBDODkuNjMsMTMyLjE2IDkwLjcxLDEzNC4wOSA5MS4yNiwxMzYuMjYgQzkzLDEzMi45NCA5NC41LDEyOS41NiA5NS4wNywxMjUuOTIgQzk1LjgsMTIxLjI3IDk1LjEzLDExNS44OCA5MS44MywxMTIuMDcgQzg4Ljc4LDEwOC41NSA4NC42NiwxMDUuODkgODEuNCwxMDIuNTIgQzc3LjkyLDk4LjkxIDc1LjYxLDk0LjQ2IDc1LjUyLDg5LjcxIEM3My43Niw4NS44NiA3MC45LDgxLjM5IDY4LjI4LDc5LjY1IEM1Ni45LDkwLjM0IDQxLjksNjIuNTggNDEuOSw2Mi41OCBDNzYuODgsNTcuNyA3MS4xLDc1LjY3IDcxLjEsNzUuNjcgQzYyLjcsNjYuMjggNTIuMzEsNjcuMTIgNTIuMzEsNjcuMTIgQzYwLjcxLDY5Ljc5IDY3LjM0LDc1LjE1IDcxLjIsNzguODMgTDcxLjczLDc5LjM2IEM3My4zLDgxIDc0LjksODIuNzUgNzYuMjQsODQuNjMgQzc3LjYsNzkuNDggODAuNzcsNzIuMjcgODMuMjYsNjcuOTcgQzgzLjI2LDY3Ljk3IDkxLjY2LDUzLjE1IDEwNS44LDQzLjkgQzEwNS44LDQzLjkgOTUuMDIsNDUuMTQgODMuNDEsNjIuODkgQzgzLjQxLDYyLjg5IDY3Ljk5LDM4LjcgMTE3LjgzLDM0LjIzIEMxMTcuODMsMzQuMjMgMTE0LjQsNzguMTcgODcuNDUsNjkuNjMgQzgyLjc3LDc2LjY3IDc5LjcsODQuNzQgODAuMzMsOTAuNDIgQzgwLjk1LDk1Ljk2IDg0LjgzLDk5Ljg2IDg5LjExLDEwMy41IEM5MC4yNSw5Ny42NiA5NC40Niw5Mi42MyAxMDAuNjUsODkuODkgQzEwNS42LDg3LjkyIDExMi45LDg2LjAzIDExOS43Miw4NS42MiBDMTE5LjcyLDg1LjYyIDEwNi4zOSw4Mi41OCA5Ni4yNSw4OS41MSBDOTYuMjUsODkuNTEgOTYuNDIsNjkuMjIgMTMyLjM0LDgzLjk1IEMxMzIuMzQsODMuOTUgMTA2LjM0LDExMC4yOSA5Ny45OSw5NC41OSBDOTQuMDMsOTcuMiA5MS41MywxMDEuNTggOTIuMTgsMTA2LjExIEM5NC41LDEwOC4xNCA5Ni42NiwxMTAuMzMgOTcuOTcsMTEzLjAzIEM5OS44LDExNi44MiAxMDAuNDUsMTIxLjI0IDk5Ljk1LDEyNS4zNSBDOTguOTksMTMzLjI1IDk0LjA1LDEzOS45NyA5MC42NywxNDcuMTQgQzg5LjI5LDE1MC4wNiA4Ny45NywxNTMuMjcgODcuOTUsMTU2LjUxIEM4OS42NCwxNTYuMDQgOTEuNDcsMTU1Ljc4IDkzLjM5LDE1NS43OCBDMTAwLjYyLDE1NS43OCAxMDYuNzEsMTU5LjM3IDEwOC42OCwxNjQuMyBDMTExLjYxLDE2NC42MSAxMTMuOTIsMTY2LjMzIDExNC4zNCwxNjguNTEgQzExNi40NSwxNjkuODEgMTE4LjEyLDE3MS42MyAxMTkuMTMsMTczLjc1IEw1MC41NSwxNzMuNzUgQzUyLjAyLDE3MC42MiA1NC4xNCwxNjcuMTYgNTYuNjYsMTY2LjIzIiBpZD0iUGF0aCIgZmlsbD0iI0Y3OEQyQyI+PC9wYXRoPgogICAgICAgICAgICA8ZyBpZD0iR3JvdXAiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE3LjAwMDAwMCwgMTgyLjAwMDAwMCkiIGZpbGw9IiNGRkZGRkYiPgogICAgICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlBhdGgiIHBvaW50cz0iMC41NCAxLjM5IDE4LjU0IDEuMzkgMTguNTQgNS4yMSA0LjggNS4yMSA0LjggMTEuNTIgMTYuOTcgMTEuNTIgMTYuOTcgMTUuMzMgNC44IDE1LjMzIDQuOCAyMS44NSAxOC43MSAyMS44NSAxOC43MSAyNS42NyAwLjU0IDI1LjY3Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMjEuNTUsMTMuNiBMMjEuNTUsMTMuNTMgQzIxLjU1LDYuNjMgMjYuNzIsMC45NyAzNC4wNywwLjk3IEMzOC41NCwwLjk3IDQxLjI1LDIuNTMgNDMuNTcsNC43NSBMNDAuODMsNy45MSBDMzguODksNi4xMSAzNi44MSw0Ljg5IDM0LjAzLDQuODkgQzI5LjQyLDQuODkgMjYuMDIsOC43MSAyNi4wMiwxMy40NiBMMjYuMDIsMTMuNTMgQzI2LjAyLDE4LjI4IDI5LjM4LDIyLjEzIDM0LjAzLDIyLjEzIEMzNy4wMSwyMi4xMyAzOC45MiwyMC45NSA0MSwxOS4wMSBMNDMuNzQsMjEuNzggQzQxLjIxLDI0LjQyIDM4LjQzLDI2LjA4MDAxMzYgMzMuODksMjYuMDgwMDEzNiBDMjYuODMsMjYuMDkgMjEuNTUsMjAuNTcgMjEuNTUsMTMuNiBaIiBpZD0iUGF0aCI+PC9wYXRoPgogICAgICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlBhdGgiIHBvaW50cz0iNDcuMjIgMS4zOSA1MS40OSAxLjM5IDUxLjQ5IDIxLjc4IDY0LjI1IDIxLjc4IDY0LjI1IDI1LjY2IDQ3LjIyIDI1LjY2Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSI2Ny45MyAxLjM5IDcyLjIgMS4zOSA3Mi4yIDI1LjY3IDY3LjkzIDI1LjY3Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNzcuNjcsMS4zOSBMODcuMjQsMS4zOSBDOTIuOTMsMS4zOSA5Ni40Nyw0LjYyIDk2LjQ3LDkuNTEgTDk2LjQ3LDkuNTggQzk2LjQ3LDE1LjAzIDkyLjEsMTcuODcgODYuNzYsMTcuODcgTDgxLjk0LDE3Ljg3IEw4MS45NCwyNS42NyBMNzcuNjcsMjUuNjcgTDc3LjY3LDEuMzkgWiBNODYuOSwxNC4wMiBDOTAuMTMsMTQuMDIgOTIuMTQsMTIuMjIgOTIuMTQsOS42OCBMOTIuMTQsOS42MSBDOTIuMTQsNi43NyA5MC4wOSw1LjI4IDg2LjksNS4yOCBMODEuOTQsNS4yOCBMODEuOTQsMTQuMDIgTDg2LjksMTQuMDIgWiIgaWQ9IlNoYXBlIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNOTguMjEsMjIuMTMgTDEwMC43OCwxOS4wOCBDMTAzLjEsMjEuMDkgMTA1LjQ2LDIyLjI0IDEwOC40NSwyMi4yNCBDMTExLjA5LDIyLjI0IDExMi43NSwyMC45OSAxMTIuNzUsMTkuMTkgTDExMi43NSwxOS4xMiBDMTEyLjc1LDE3LjM5IDExMS43OCwxNi40NSAxMDcuMjcsMTUuNDEgQzEwMi4xLDE0LjE2IDk5LjE5LDEyLjY0IDk5LjE5LDguMTYgTDk5LjE5LDguMDkgQzk5LjE5LDMuOTMgMTAyLjY2LDEuMDUgMTA3LjQ4LDEuMDUgQzExMS4wMiwxLjA1IDExMy44MywyLjEzIDExNi4yOSw0LjEgTDExNCw3LjMzIEMxMTEuODEsNS43IDEwOS42Myw0LjgzIDEwNy40MSw0LjgzIEMxMDQuOTEsNC44MyAxMDMuNDYsNi4xMSAxMDMuNDYsNy43MSBMMTAzLjQ2LDcuNzggQzEwMy40Niw5LjY1IDEwNC41NywxMC40OSAxMDkuMjUsMTEuNiBDMTE0LjM4LDEyLjg1IDExNy4wMiwxNC42OSAxMTcuMDIsMTguNzEgTDExNy4wMiwxOC43OCBDMTE3LjAyLDIzLjMyIDExMy40NSwyNi4wMyAxMDguMzUsMjYuMDMgQzEwNC42MiwyNi4wMiAxMDEuMTIsMjQuNzMgOTguMjEsMjIuMTMgWiIgaWQ9IlBhdGgiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJQYXRoIiBwb2ludHM9IjEyMC45OSAxLjM5IDEzOC45OSAxLjM5IDEzOC45OSA1LjIxIDEyNS4yNiA1LjIxIDEyNS4yNiAxMS41MiAxMzcuNDMgMTEuNTIgMTM3LjQzIDE1LjMzIDEyNS4yNiAxNS4zMyAxMjUuMjYgMjEuODUgMTM5LjE3IDIxLjg1IDEzOS4xNyAyNS42NyAxMjEgMjUuNjcgMTIxIDEuMzkiPjwvcG9seWdvbj4KICAgICAgICAgICAgPC9nPgogICAgICAgICAgICA8cGF0aCBkPSJNMjEuNjYsMzkuOTkgQzQxLjI2LDkuNDIgODAuNSwtMS4yNSAxMTMuMjMsMTMuNDQgQzExMi41MSwxMi45NCAxMTEuNzgsMTIuNDMgMTExLjAzLDExLjk1IEM3Ny41MiwtOS41NCAzMi45OCwwLjExIDExLjU2LDMzLjUyIEMtOS44Nyw2Ni45MiAtMC4wNiwxMTEuNDMgMzMuNDUsMTMyLjkyIEMzNC4yLDEzMy40IDM0Ljk2LDEzMy44NSAzNS43MiwxMzQuMyBDOC43MywxMTAuNjggMi4wNiw3MC41NiAyMS42NiwzOS45OSIgaWQ9IlBhdGgiIGZpbGw9IiNGNzhEMkMiPjwvcGF0aD4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==" alt="Eclipse Incubator Logo"/></a><style data-emotion-css="1uno72p">.css-1uno72p{font-size:0.9rem;}</style><style data-emotion-css="2r9mng">.css-2r9mng{font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.125;font-weight:700;margin-top:16px;margin-bottom:16px;font-size:16px;font-size:0.9rem;}</style><h6 class="css-2r9mng">OpenJ9 is an Eclipse Incubator Project</h6></section><style data-emotion-css="90v6js">.css-90v6js{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex:100%;-ms-flex:100%;flex:100%;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;}@media screen and (min-width:560px){.css-90v6js{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex:50%;-ms-flex:50%;flex:50%;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;}}@media screen and (min-width:1000px){.css-90v6js{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex:50%;-ms-flex:50%;flex:50%;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;}}@media screen and (min-width:1366px){.css-90v6js{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex:50%;-ms-flex:50%;flex:50%;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;}}.css-90v6js a{color:white;-webkit-text-decoration:none;text-decoration:none;}.css-90v6js a:hover{color:var(--theme-ui-colors-links,#5DA7A3);}</style><nav class="css-90v6js"><style data-emotion-css="hkdp8o">.css-hkdp8o{-webkit-flex:1;-ms-flex:1;flex:1;padding-left:2rem;margin-right:1.1rem;padding:1rem;font-size:1rem;}@media screen and (min-width:560px){.css-hkdp8o{padding-left:0.8rem;padding:0;font-size:0.9rem;}}@media screen and (min-width:1000px){.css-hkdp8o{padding-left:0.8rem;font-size:1rem;}}@media screen and (min-width:1366px){.css-hkdp8o{padding-left:0.8rem;font-size:1rem;}}</style><section class="css-hkdp8o"><style data-emotion-css="1p7eyhh">.css-1p7eyhh{margin-bottom:0.2rem;}</style><style data-emotion-css="shyl6e">.css-shyl6e{font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.125;font-weight:700;margin-top:16px;margin-bottom:16px;font-size:20px;margin-bottom:0.2rem;}</style><h4 class="css-shyl6e">Docs</h4><style data-emotion-css="1l04qsy">.css-1l04qsy{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;list-style:none;-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}.css-1l04qsy li{padding:0;}.css-1l04qsy li:first-of-type{margin-left:0;}.css-1l04qsy li:last-child{margin-right:0;padding-right:0;}</style><ul class="css-1l04qsy"><li><style data-emotion-css="14i0930">.css-14i0930{-webkit-text-decoration:none;text-decoration:none;color:white;}</style><a href="https://www.eclipse.org/openj9/docs/openj9_newuser/" rel="noopener noreferrer" target="_blank" class="css-14i0930">New to OpenJ9?</a></li><li><a href="https://www.eclipse.org/openj9/docs/introduction/" rel="noopener noreferrer" target="_blank" class="css-14i0930">Getting started</a></li><li><a href="https://www.eclipse.org/openj9/docs/cmdline_specifying/" rel="noopener noreferrer" target="_blank" class="css-14i0930">Command-line options</a></li></ul></section><style data-emotion-css="7usxs3">.css-7usxs3{-webkit-flex:1;-ms-flex:1;flex:1;padding-left:2rem;padding:1rem;font-size:1rem;}@media screen and (min-width:560px){.css-7usxs3{padding-left:0.8rem;padding:0;font-size:0.9rem;}}@media screen and (min-width:1000px){.css-7usxs3{padding-left:0;font-size:1rem;}}@media screen and (min-width:1366px){.css-7usxs3{padding-left:0;font-size:1rem;}}</style><section class="css-7usxs3"><h4 class="css-shyl6e">Resources</h4><ul class="css-1l04qsy"><li><a class="css-14i0930" href="/openj9/about">About</a></li><li><a class="css-14i0930" href="/openj9/performance">Performance</a></li></ul></section><style data-emotion-css="rlig4a">.css-rlig4a{-webkit-flex:1;-ms-flex:1;flex:1;padding-left:2rem;padding:1rem;font-size:1rem;margin-left:0;}@media screen and (min-width:560px){.css-rlig4a{padding-left:0;padding:0;font-size:0.9rem;margin-left:1rem;}}@media screen and (min-width:1000px){.css-rlig4a{padding-left:0;font-size:1rem;}}@media screen and (min-width:1366px){.css-rlig4a{padding-left:0;font-size:1rem;}}</style><section class="css-rlig4a"><h4 class="css-shyl6e">Community</h4><ul class="css-1l04qsy"><li><a class="css-14i0930" href="/openj9/news">News</a></li><li><a href="https://blog.openj9.org/" rel="noopener noreferrer" target="_blank" class="css-14i0930">Blogs</a></li></ul></section></nav><style data-emotion-css="13pxy6t">.css-13pxy6t{-webkit-flex:25%;-ms-flex:25%;flex:25%;display:none;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}@media screen and (min-width:560px){.css-13pxy6t{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:flex-end;-webkit-box-align:flex-end;-ms-flex-align:flex-end;align-items:flex-end;}}@media screen and (min-width:1000px){.css-13pxy6t{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:flex-end;-webkit-box-align:flex-end;-ms-flex-align:flex-end;align-items:flex-end;}}@media screen and (min-width:1366px){.css-13pxy6t{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:flex-end;-webkit-box-align:flex-end;-ms-flex-align:flex-end;align-items:flex-end;}}</style><section class="css-13pxy6t"><style data-emotion-css="10op7gg">.css-10op7gg{font-size:0.9rem;margin-top:1.3rem;margin-left:0.6rem;}</style><style data-emotion-css="z87sw5">.css-z87sw5{font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.125;font-weight:700;margin-top:16px;margin-bottom:16px;font-size:16px;font-size:0.9rem;margin-top:1.3rem;margin-left:0.6rem;}</style><h6 class="css-z87sw5">OpenJ9 is an Eclipse Incubator Project</h6><a href="https://wiki.eclipse.org/Development_Resources/Process_Guidelines/What_is_Incubation" rel="noopener noreferrer" target="_blank"><img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNTBweCIgaGVpZ2h0PSI3NXB4IiB2aWV3Qm94PSIwIDAgMTU3IDIzMSIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KICAgIDwhLS0gR2VuZXJhdG9yOiBTa2V0Y2ggNjEuMiAoODk2NTMpIC0gaHR0cHM6Ly9za2V0Y2guY29tIC0tPgogICAgPHRpdGxlPmVjbGlwc2VfaW5jdWJhdGlvbl92ZXJ0aWNhbF9zdmc8L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0iZWNsaXBzZV9pbmN1YmF0aW9uX3ZlcnRpY2FsX3N2ZyIgZmlsbC1ydWxlPSJub256ZXJvIj4KICAgICAgICAgICAgPGcgaWQ9Ikdyb3VwIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNy4wMDAwMDAsIDIxNC4wMDAwMDApIiBmaWxsPSIjRkZGRkZGIj4KICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJQYXRoIiBwb2ludHM9IjAuNzUgMC4zNCAxLjkyIDAuMzQgMS45MiAxNi4wMyAwLjc1IDE2LjAzIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSI1LjYyIDAuMzQgNi43MiAwLjM0IDE3LjU1IDEzLjk5IDE3LjU1IDAuMzQgMTguNjcgMC4zNCAxOC42NyAxNi4wMyAxNy44IDE2LjAzIDYuNzUgMi4wOSA2Ljc1IDE2LjAzIDUuNjMgMTYuMDMgNS42MyAwLjM0Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMjEuODYsOC4yMyBMMjEuODYsOC4xOSBDMjEuODYsMy43NSAyNS4xOCwwLjA4IDI5LjcxLDAuMDggQzMyLjUxLDAuMDggMzQuMTksMS4xMSAzNS44MSwyLjU5IEwzNC45OCwzLjQ0IEMzMy42MSwyLjEyIDMyLjA0LDEuMTMgMjkuNjksMS4xMyBDMjUuOTIsMS4xMyAyMy4wOCw0LjIgMjMuMDgsOC4xNSBMMjMuMDgsOC4xOSBDMjMuMDgsMTIuMTYgMjUuOTcsMTUuMjUgMjkuNzEsMTUuMjUgQzMxLjk3LDE1LjI1IDMzLjUyLDE0LjM3IDM1LjExLDEyLjgxIEwzNS44OSwxMy41NyBDMzQuMjMsMTUuMjEgMzIuNDQsMTYuMyAyOS42NiwxNi4zIEMyNS4xOCwxNi4zIDIxLjg2LDEyLjc0IDIxLjg2LDguMjMgWiIgaWQ9IlBhdGgiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0zOC40LDkuNTEgTDM4LjQsMC4zNCBMMzkuNTcsMC4zNCBMMzkuNTcsOS40IEMzOS41NywxMy4xIDQxLjU3LDE1LjIzIDQ0Ljg4LDE1LjIzIEM0OC4wNiwxNS4yMyA1MC4xLDEzLjMgNTAuMSw5LjUxIEw1MC4xLDAuMzQgTDUxLjI3LDAuMzQgTDUxLjI3LDkuMzcgQzUxLjI3LDEzLjg4IDQ4LjY1LDE2LjI3MDAzMTQgNDQuODQsMTYuMjcwMDMxNCBDNDEuMDcsMTYuMjggMzguNCwxMy45IDM4LjQsOS41MSBaIiBpZD0iUGF0aCI+PC9wYXRoPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTU0LjAyLDAuMzQgTDYwLjUsMC4zNCBDNjIuMjcsMC4zNCA2My43MSwwLjg2IDY0LjU4LDEuNzMgQzY1LjIzLDIuMzggNjUuNTksMy4yMSA2NS41OSw0LjIgTDY1LjU5LDQuMjQgQzY1LjU5LDYuMzcgNjQuMiw3LjQ1IDYyLjkyLDcuOTYgQzY0LjgsOC40NSA2Ni40Niw5LjUzIDY2LjQ2LDExLjcgTDY2LjQ2LDExLjc0IEM2Ni40NiwxNC4zNiA2NC4yMiwxNi4wMiA2MC44MywxNi4wMiBMNTQuMDIsMTYuMDIgTDU0LjAyLDAuMzQgTDU0LjAyLDAuMzQgWiBNNjQuNCw0LjMxIEM2NC40LDIuNTggNjIuOTksMS40MiA2MC40OCwxLjQyIEw1NS4xOSwxLjQyIEw1NS4xOSw3LjU4IEw2MC4zNyw3LjU4IEM2Mi43Miw3LjU4IDY0LjQsNi40NCA2NC40LDQuMzUgTDY0LjQsNC4zMSBaIE02MC41LDguNjYgTDU1LjE5LDguNjYgTDU1LjE5LDE0Ljk2IEw2MC44OCwxNC45NiBDNjMuNTcsMTQuOTYgNjUuMjcwMDQ0NCwxMy43MyA2NS4yNzAwNDQ0LDExLjc1IEw2NS4yNzAwNDQ0LDExLjcxIEM2NS4yOCw5Ljc4IDYzLjYsOC42NiA2MC41LDguNjYgWiIgaWQ9IlNoYXBlIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNzYuMjgsMC4yMyBMNzcuNCwwLjIzIEw4NC43MSwxNi4wMyBMODMuNDMsMTYuMDMgTDgxLjQ0LDExLjY0IEw3Mi4xOCwxMS42NCBMNzAuMTksMTYuMDMgTDY4Ljk4LDE2LjAzIEw3Ni4yOCwwLjIzIFogTTgwLjk0LDEwLjU5IEw3Ni44MiwxLjUxIEw3Mi42NywxMC41OSBMODAuOTQsMTAuNTkgWiIgaWQ9IlNoYXBlIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSI5MS4wNSAxLjQyIDg1LjU4IDEuNDIgODUuNTggMC4zNCA5Ny42OCAwLjM0IDk3LjY4IDEuNDIgOTIuMjEgMS40MiA5Mi4yMSAxNi4wMyA5MS4wNCAxNi4wMyA5MS4wNCAxLjQyIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSIxMDEuMjkgMC4zNCAxMDIuNDYgMC4zNCAxMDIuNDYgMTYuMDMgMTAxLjI5IDE2LjAzIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTA1LjkxLDguMjMgTDEwNS45MSw4LjE5IEMxMDUuOTEsMy45MSAxMDkuMDcsMC4wOCAxMTMuODIsMC4wOCBDMTE4LjU3LDAuMDggMTIxLjY5LDMuODcgMTIxLjY5LDguMTUgTDEyMS42OSw4LjE5IEMxMjEuNjksMTIuNDcgMTE4LjUzLDE2LjMgMTEzLjc4LDE2LjMgQzEwOS4wMywxNi4zIDEwNS45MSwxMi41MSAxMDUuOTEsOC4yMyBaIE0xMjAuNDgsOC4yMyBMMTIwLjQ4LDguMTkgQzEyMC40OCw0LjMxIDExNy42NiwxLjEzIDExMy43OCwxLjEzIEMxMDkuOSwxLjEzIDEwNy4xMiw0LjI3IDEwNy4xMiw4LjE1IEwxMDcuMTIsOC4xOSBDMTA3LjEyLDEyLjA3IDEwOS45NCwxNS4yNSAxMTMuODIsMTUuMjUgQzExNy43LDE1LjI1IDEyMC40OCwxMi4xMSAxMjAuNDgsOC4yMyBaIiBpZD0iU2hhcGUiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJQYXRoIiBwb2ludHM9IjEyNC44OSAwLjM0IDEyNS45OSAwLjM0IDEzNi44MiAxMy45OSAxMzYuODIgMC4zNCAxMzcuOTQgMC4zNCAxMzcuOTQgMTYuMDMgMTM3LjA3IDE2LjAzIDEyNi4wMiAyLjA5IDEyNi4wMiAxNi4wMyAxMjQuOSAxNi4wMyAxMjQuOSAwLjM0Ij48L3BvbHlnb24+CiAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgPHBhdGggZD0iTTU2LjY2LDE2Ni4yMyBDNTcuNTEsMTYzLjQ4IDYwLjQzLDE2MS40MyA2My45NCwxNjEuNDMgQzY1LjE0LDE2MS40MyA2Ni4yNSwxNjEuNjkgNjcuMjUsMTYyLjExIEM2OS40NiwxNjAuNjQgNzIuMTksMTU5Ljc2IDc1LjE3LDE1OS43NiBMNzUuMTksMTU5Ljc2IEM3Ni4xMSwxNTcuOSA3OC40OCwxNTYuNTcgODEuMywxNTYuNTcgQzgyLjA0LDE1Ni41NyA4Mi43NSwxNTYuNjcgODMuNDIsMTU2Ljg0IEM4My4zMywxNTQuNTYgODMuNjksMTUyLjE4IDg0LjU1LDE0OS42OCBDODUuNTUsMTQ2Ljc5IDg3LDE0NC4wMyA4OC41MiwxNDEuMjggQzg4LjE3LDEzNy4xNiA4Ny45LDEzMy41IDgyLjc0LDEzMiBDODAuODIsMTMxLjQ0IDc4LjgyLDEzMS4yNyA3Ni44NiwxMzEuMDQgTDc2Ljg1LDEzMS4wNCBMNzYuODUsMTMxLjAzIEM3Ni4wMSwxMzAuOTMgNzUuMTcsMTMwLjgxIDc0LjM1LDEzMC42NSBDNjAuMTgsMTQ1LjQxIDQwLjIsMTA5Ljk3IDQwLjIsMTA5Ljk3IEM4NC4zLDEwMy4xMyA3Ni4wMSwxMjUuNjEgNzYuMDEsMTI1LjYxIEM3Mi44MSwxMjQuMDUgNzEuOTMsMTIyLjA4IDY5LjQ5LDExOS43MyBDNjMuOTIsMTE0LjM4IDUwLjYyLDExMy40NCA1MC42MiwxMTMuNDQgQzY2LjU0LDExNy41MSA2OC43MSwxMjUuMjIgNzQuOTcsMTI3LjY5IEM3Ni4zOSwxMjguMDEgNzcuOSwxMjguMTMgNzkuMzUsMTI4LjI5IEM4Mi4xNSwxMjguNTkgODQuODksMTI5LjExIDg3LjIyLDEzMC42MSBDODkuNjMsMTMyLjE2IDkwLjcxLDEzNC4wOSA5MS4yNiwxMzYuMjYgQzkzLDEzMi45NCA5NC41LDEyOS41NiA5NS4wNywxMjUuOTIgQzk1LjgsMTIxLjI3IDk1LjEzLDExNS44OCA5MS44MywxMTIuMDcgQzg4Ljc4LDEwOC41NSA4NC42NiwxMDUuODkgODEuNCwxMDIuNTIgQzc3LjkyLDk4LjkxIDc1LjYxLDk0LjQ2IDc1LjUyLDg5LjcxIEM3My43Niw4NS44NiA3MC45LDgxLjM5IDY4LjI4LDc5LjY1IEM1Ni45LDkwLjM0IDQxLjksNjIuNTggNDEuOSw2Mi41OCBDNzYuODgsNTcuNyA3MS4xLDc1LjY3IDcxLjEsNzUuNjcgQzYyLjcsNjYuMjggNTIuMzEsNjcuMTIgNTIuMzEsNjcuMTIgQzYwLjcxLDY5Ljc5IDY3LjM0LDc1LjE1IDcxLjIsNzguODMgTDcxLjczLDc5LjM2IEM3My4zLDgxIDc0LjksODIuNzUgNzYuMjQsODQuNjMgQzc3LjYsNzkuNDggODAuNzcsNzIuMjcgODMuMjYsNjcuOTcgQzgzLjI2LDY3Ljk3IDkxLjY2LDUzLjE1IDEwNS44LDQzLjkgQzEwNS44LDQzLjkgOTUuMDIsNDUuMTQgODMuNDEsNjIuODkgQzgzLjQxLDYyLjg5IDY3Ljk5LDM4LjcgMTE3LjgzLDM0LjIzIEMxMTcuODMsMzQuMjMgMTE0LjQsNzguMTcgODcuNDUsNjkuNjMgQzgyLjc3LDc2LjY3IDc5LjcsODQuNzQgODAuMzMsOTAuNDIgQzgwLjk1LDk1Ljk2IDg0LjgzLDk5Ljg2IDg5LjExLDEwMy41IEM5MC4yNSw5Ny42NiA5NC40Niw5Mi42MyAxMDAuNjUsODkuODkgQzEwNS42LDg3LjkyIDExMi45LDg2LjAzIDExOS43Miw4NS42MiBDMTE5LjcyLDg1LjYyIDEwNi4zOSw4Mi41OCA5Ni4yNSw4OS41MSBDOTYuMjUsODkuNTEgOTYuNDIsNjkuMjIgMTMyLjM0LDgzLjk1IEMxMzIuMzQsODMuOTUgMTA2LjM0LDExMC4yOSA5Ny45OSw5NC41OSBDOTQuMDMsOTcuMiA5MS41MywxMDEuNTggOTIuMTgsMTA2LjExIEM5NC41LDEwOC4xNCA5Ni42NiwxMTAuMzMgOTcuOTcsMTEzLjAzIEM5OS44LDExNi44MiAxMDAuNDUsMTIxLjI0IDk5Ljk1LDEyNS4zNSBDOTguOTksMTMzLjI1IDk0LjA1LDEzOS45NyA5MC42NywxNDcuMTQgQzg5LjI5LDE1MC4wNiA4Ny45NywxNTMuMjcgODcuOTUsMTU2LjUxIEM4OS42NCwxNTYuMDQgOTEuNDcsMTU1Ljc4IDkzLjM5LDE1NS43OCBDMTAwLjYyLDE1NS43OCAxMDYuNzEsMTU5LjM3IDEwOC42OCwxNjQuMyBDMTExLjYxLDE2NC42MSAxMTMuOTIsMTY2LjMzIDExNC4zNCwxNjguNTEgQzExNi40NSwxNjkuODEgMTE4LjEyLDE3MS42MyAxMTkuMTMsMTczLjc1IEw1MC41NSwxNzMuNzUgQzUyLjAyLDE3MC42MiA1NC4xNCwxNjcuMTYgNTYuNjYsMTY2LjIzIiBpZD0iUGF0aCIgZmlsbD0iI0Y3OEQyQyI+PC9wYXRoPgogICAgICAgICAgICA8ZyBpZD0iR3JvdXAiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE3LjAwMDAwMCwgMTgyLjAwMDAwMCkiIGZpbGw9IiNGRkZGRkYiPgogICAgICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlBhdGgiIHBvaW50cz0iMC41NCAxLjM5IDE4LjU0IDEuMzkgMTguNTQgNS4yMSA0LjggNS4yMSA0LjggMTEuNTIgMTYuOTcgMTEuNTIgMTYuOTcgMTUuMzMgNC44IDE1LjMzIDQuOCAyMS44NSAxOC43MSAyMS44NSAxOC43MSAyNS42NyAwLjU0IDI1LjY3Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMjEuNTUsMTMuNiBMMjEuNTUsMTMuNTMgQzIxLjU1LDYuNjMgMjYuNzIsMC45NyAzNC4wNywwLjk3IEMzOC41NCwwLjk3IDQxLjI1LDIuNTMgNDMuNTcsNC43NSBMNDAuODMsNy45MSBDMzguODksNi4xMSAzNi44MSw0Ljg5IDM0LjAzLDQuODkgQzI5LjQyLDQuODkgMjYuMDIsOC43MSAyNi4wMiwxMy40NiBMMjYuMDIsMTMuNTMgQzI2LjAyLDE4LjI4IDI5LjM4LDIyLjEzIDM0LjAzLDIyLjEzIEMzNy4wMSwyMi4xMyAzOC45MiwyMC45NSA0MSwxOS4wMSBMNDMuNzQsMjEuNzggQzQxLjIxLDI0LjQyIDM4LjQzLDI2LjA4MDAxMzYgMzMuODksMjYuMDgwMDEzNiBDMjYuODMsMjYuMDkgMjEuNTUsMjAuNTcgMjEuNTUsMTMuNiBaIiBpZD0iUGF0aCI+PC9wYXRoPgogICAgICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlBhdGgiIHBvaW50cz0iNDcuMjIgMS4zOSA1MS40OSAxLjM5IDUxLjQ5IDIxLjc4IDY0LjI1IDIxLjc4IDY0LjI1IDI1LjY2IDQ3LjIyIDI1LjY2Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSI2Ny45MyAxLjM5IDcyLjIgMS4zOSA3Mi4yIDI1LjY3IDY3LjkzIDI1LjY3Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNzcuNjcsMS4zOSBMODcuMjQsMS4zOSBDOTIuOTMsMS4zOSA5Ni40Nyw0LjYyIDk2LjQ3LDkuNTEgTDk2LjQ3LDkuNTggQzk2LjQ3LDE1LjAzIDkyLjEsMTcuODcgODYuNzYsMTcuODcgTDgxLjk0LDE3Ljg3IEw4MS45NCwyNS42NyBMNzcuNjcsMjUuNjcgTDc3LjY3LDEuMzkgWiBNODYuOSwxNC4wMiBDOTAuMTMsMTQuMDIgOTIuMTQsMTIuMjIgOTIuMTQsOS42OCBMOTIuMTQsOS42MSBDOTIuMTQsNi43NyA5MC4wOSw1LjI4IDg2LjksNS4yOCBMODEuOTQsNS4yOCBMODEuOTQsMTQuMDIgTDg2LjksMTQuMDIgWiIgaWQ9IlNoYXBlIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNOTguMjEsMjIuMTMgTDEwMC43OCwxOS4wOCBDMTAzLjEsMjEuMDkgMTA1LjQ2LDIyLjI0IDEwOC40NSwyMi4yNCBDMTExLjA5LDIyLjI0IDExMi43NSwyMC45OSAxMTIuNzUsMTkuMTkgTDExMi43NSwxOS4xMiBDMTEyLjc1LDE3LjM5IDExMS43OCwxNi40NSAxMDcuMjcsMTUuNDEgQzEwMi4xLDE0LjE2IDk5LjE5LDEyLjY0IDk5LjE5LDguMTYgTDk5LjE5LDguMDkgQzk5LjE5LDMuOTMgMTAyLjY2LDEuMDUgMTA3LjQ4LDEuMDUgQzExMS4wMiwxLjA1IDExMy44MywyLjEzIDExNi4yOSw0LjEgTDExNCw3LjMzIEMxMTEuODEsNS43IDEwOS42Myw0LjgzIDEwNy40MSw0LjgzIEMxMDQuOTEsNC44MyAxMDMuNDYsNi4xMSAxMDMuNDYsNy43MSBMMTAzLjQ2LDcuNzggQzEwMy40Niw5LjY1IDEwNC41NywxMC40OSAxMDkuMjUsMTEuNiBDMTE0LjM4LDEyLjg1IDExNy4wMiwxNC42OSAxMTcuMDIsMTguNzEgTDExNy4wMiwxOC43OCBDMTE3LjAyLDIzLjMyIDExMy40NSwyNi4wMyAxMDguMzUsMjYuMDMgQzEwNC42MiwyNi4wMiAxMDEuMTIsMjQuNzMgOTguMjEsMjIuMTMgWiIgaWQ9IlBhdGgiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJQYXRoIiBwb2ludHM9IjEyMC45OSAxLjM5IDEzOC45OSAxLjM5IDEzOC45OSA1LjIxIDEyNS4yNiA1LjIxIDEyNS4yNiAxMS41MiAxMzcuNDMgMTEuNTIgMTM3LjQzIDE1LjMzIDEyNS4yNiAxNS4zMyAxMjUuMjYgMjEuODUgMTM5LjE3IDIxLjg1IDEzOS4xNyAyNS42NyAxMjEgMjUuNjcgMTIxIDEuMzkiPjwvcG9seWdvbj4KICAgICAgICAgICAgPC9nPgogICAgICAgICAgICA8cGF0aCBkPSJNMjEuNjYsMzkuOTkgQzQxLjI2LDkuNDIgODAuNSwtMS4yNSAxMTMuMjMsMTMuNDQgQzExMi41MSwxMi45NCAxMTEuNzgsMTIuNDMgMTExLjAzLDExLjk1IEM3Ny41MiwtOS41NCAzMi45OCwwLjExIDExLjU2LDMzLjUyIEMtOS44Nyw2Ni45MiAtMC4wNiwxMTEuNDMgMzMuNDUsMTMyLjkyIEMzNC4yLDEzMy40IDM0Ljk2LDEzMy44NSAzNS43MiwxMzQuMyBDOC43MywxMTAuNjggMi4wNiw3MC41NiAyMS42NiwzOS45OSIgaWQ9IlBhdGgiIGZpbGw9IiNGNzhEMkMiPjwvcGF0aD4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==" alt="Eclipse Incubator Logo"/></a></section><style data-emotion-css="1mjb60s">.css-1mjb60s{height:2px;background-color:var(--theme-ui-colors-secondary,#5DA7A3);width:100%;margin-top:16px;margin-bottom:16px;}</style><div class="css-1mjb60s"></div><style data-emotion-css="6gs9hh">.css-6gs9hh{width:70%;}</style><nav class="css-6gs9hh"><style data-emotion-css="1rx6mfb">.css-1rx6mfb{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}@media screen and (min-width:560px){.css-1rx6mfb{-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;}}@media screen and (min-width:1000px){.css-1rx6mfb{-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;}}@media screen and (min-width:1366px){.css-1rx6mfb{-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;}}.css-1rx6mfb li{padding:0.4rem;font-size:0.9rem;list-style-type:none;padding-left:1rem;color:white;}@media screen and (min-width:560px){.css-1rx6mfb li{font-size:0.7rem;}}@media screen and (min-width:1000px){.css-1rx6mfb li{font-size:1rem;}}@media screen and (min-width:1366px){.css-1rx6mfb li{font-size:1rem;}}.css-1rx6mfb a{color:white;-webkit-text-decoration:none;text-decoration:none;}.css-1rx6mfb a:hover{color:var(--theme-ui-colors-links,#5DA7A3);}</style><ul class="css-1rx6mfb"><style data-emotion-css="1lir2xx">.css-1lir2xx{padding-left:1rem;}@media screen and (min-width:560px){.css-1lir2xx{padding-left:0rem !important;}}@media screen and (min-width:1000px){.css-1lir2xx{padding-left:0.5rem !important;}}@media screen and (min-width:1366px){.css-1lir2xx{padding-left:0.5 !important;}}</style><li class="css-1lir2xx"><a href="https://www.eclipse.org/" rel="noopener noreferrer" target="_blank" class="css-14i0930">Eclipse Foundation Website </a></li><li><a href="https://www.eclipse.org/legal/privacy.php" rel="noopener noreferrer" target="_blank" class="css-14i0930">Privacy Policy</a></li><li><a href="https://www.eclipse.org/legal/termsofuse.php" rel="noopener noreferrer" target="_blank" class="css-14i0930">Terms of Use</a></li><li><a href="https://www.eclipse.org/legal/copyright.php" rel="noopener noreferrer" target="_blank" class="css-14i0930">Copyright Agent</a></li><li><a href="https://www.eclipse.org/legal/" rel="noopener noreferrer" target="_blank" class="css-14i0930">Legal</a></li></ul></nav><style data-emotion-css="15pdxr9">.css-15pdxr9{display:inline;-webkit-flex:30%;-ms-flex:30%;flex:30%;}@media screen and (min-width:560px){.css-15pdxr9{display:inline;}}@media screen and (min-width:1000px){.css-15pdxr9{display:block;}}@media screen and (min-width:1366px){.css-15pdxr9{display:block;}}</style><nav class="css-15pdxr9"><style data-emotion-css="1q18ssc">.css-1q18ssc{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;list-style:none;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;}.css-1q18ssc li{padding:8px;margin-left:8px;margin-right:8px;}.css-1q18ssc li a{color:white;-webkit-text-decoration:none;text-decoration:none;}.css-1q18ssc li a:hover{color:var(--theme-ui-colors-links,#5DA7A3);}.css-1q18ssc li:first-of-type{margin-left:0;}.css-1q18ssc li:last-child{margin-right:0;padding-right:0;}@media screen and (min-width:560px){.css-1q18ssc{-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end;}}@media screen and (min-width:1000px){.css-1q18ssc{-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end;}}@media screen and (min-width:1366px){.css-1q18ssc{-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end;}}</style><ul class="css-1q18ssc"><li><a href="https://twitter.com/openj9/" rel="noopener noreferrer" target="_blank"> <img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIyNXB4IiB2aWV3Qm94PSIwIDAgMjUgMjUiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5Ud2l0dGVyPC90aXRsZT4KICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPgogICAgPGcgaWQ9IlBhZ2UtMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9IlR3aXR0ZXIiIGZpbGwtcnVsZT0ibm9uemVybyI+CiAgICAgICAgICAgIDxnIGlkPSJ0d2l0dGVyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjAwMDAwMCwgMC4yOTg4NzkpIj4KICAgICAgICAgICAgICAgIDxlbGxpcHNlIGlkPSJPdmFsLXBhdGgiIGZpbGw9IiM0MzQzNDMiIGN4PSIxMi41MDAyMjEyIiBjeT0iMTIuMjcyNzI3MyIgcng9IjEyLjUiIHJ5PSIxMi4yNzI3MjczIj48L2VsbGlwc2U+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTIuNTAwMjIxMiwwIEMxOS40MDM3ODA2LDAgMjUuMDAwMjIxMiw1LjQ5NDY4NzE2IDI1LjAwMDIyMTIsMTIuMjcyNzI3MyBDMjUuMDAwMjIxMiwxOS4wNTA3Njc0IDE5LjQwMzc4MDYsMjQuNTQ1NDU0NSAxMi41MDAyMjEyLDI0LjU0NTQ1NDUgQzUuNTk2NjYxODcsMjQuNTQ1NDU0NSAwLjAwMDIyMTIzODkzOCwxOS4wNTA3Njc0IDAuMDAwMjIxMjM4OTM4LDEyLjI3MjcyNzMgQzAuMDAwMjIxMjM4OTM4LDUuNDk0Njg3MTYgNS41OTY2NjE4NywwIDEyLjUwMDIyMTIsMCBaIE0xNS4xMDM0MzMzLDYuODE4MTgxODIgQzEzLjQ2NTM4MDIsNi44MTgxODE4MiAxMi4xMzY4NDA0LDguMDkyMTI0MTEgMTIuMTM2ODQwNCw5LjY2Mjg1OTk2IEMxMi4xMzY4NDA0LDkuODg1ODI2MzggMTIuMTYzMTY3OCwxMC4xMDI4NTI3IDEyLjIxNDA1MjgsMTAuMzExMTgxIEM5Ljc0ODU2NjA0LDEwLjE5MjU5MDggNy41NjI1MDQxLDkuMDYwMTUwNTQgNi4wOTkyMjk3Niw3LjMzODU3ODIzIEM1Ljg0MzkyMDAzLDcuNzU4NjI5MTUgNS42OTc0NTk4NSw4LjI0NzYyNzgxIDUuNjk3NDU5ODUsOC43Njg4NzI4MSBDNS42OTc0NTk4NSw5Ljc1NTU2ODE3IDYuMjIxNTc0ODksMTAuNjI2NjQzNCA3LjAxNzE1MDExLDExLjEzNjY0NDcgQzYuNTMxMDg4MTcsMTEuMTIyMDA2NSA2LjA3MzM0NDgsMTAuOTk0MDgxOSA1LjY3MzU2NjA0LDEwLjc4MDQ1IEw1LjY3MzM0NDgsMTAuODE2NTE0OSBMNS42NzMzNDQ4LDEwLjgxNjUxNDkgQzUuNjczMzQ0OCwxMi4xOTQ4MzM1IDYuNjk2MzUzNjUsMTMuMzQ0NDU3NyA4LjA1MzIxMjA2LDEzLjYwNTYxMDYgQzcuODA0NTM5NSwxMy42NzA5NTE5IDcuNTQxOTI4ODgsMTMuNzA1NTMxOCA3LjI3MTc5NjEzLDEzLjcwNTUzMTggQzcuMDgwMjAzMjEsMTMuNzA1NTMxOCA2Ljg5NDU4Mzc0LDEzLjY4NzkyMzYgNi43MTM2MTAyOSwxMy42NTQ4Mjg3IEM3LjA5MTA0MzkyLDE0Ljc4NDcyMzIgOC4xODYzOTc5LDE1LjYwNzIxNjkgOS40ODQ4NDkyMywxNS42MzAzNDA5IEM4LjQ2OTM2MjUsMTYuMzkzNDMzNCA3LjE5MDM4MDIsMTYuODQ4MDY0MiA1LjgwMDExNDcyLDE2Ljg0ODA2NDIgQzUuNTYxMTc2NjYsMTYuODQ4MDY0MiA1LjMyNDQ1MSwxNi44MzQ2OTkgNS4wOTI4MTM4MywxNi44MDgxODA2IEM2LjQwNDk4MTk3LDE3LjYxNTYxMTggNy45NjQ3MTY0OSwxOC4wODYzNjU4IDkuNjM5OTM3NzMsMTguMDg2MzY1OCBDMTUuMDk2NTc0OSwxOC4wODYzNjU4IDE4LjA4MDY0NTcsMTMuNzUxNzc5OCAxOC4wODA2NDU3LDkuOTkyMzI0MTQgQzE4LjA4MDY0NTcsOS44NjkwNjY3NyAxOC4wNzc3Njk2LDkuNzQ2MjMzNyAxOC4wNzIwMTc0LDkuNjI0NDYxMzcgQzE4LjY1MjEwNTksOS4yMjM1MDM2OCAxOS4xNTQ5ODIsOC43MjI2MjQ3OCAxOS41NTI1NDgzLDguMTUyMTYxNjkgQzE5LjAyMDY4OTksOC4zNzgzMTAzMiAxOC40NDg1NjYsOC41MzEyNjgyNSAxNy44NDg1NjYsOC41OTk1Nzk1NiBDMTguNDYxMTc2Nyw4LjI0NzYyNzgxIDE4LjkzMTMwOTQsNy42OTA3NDIxMyAxOS4xNTMyMTIxLDcuMDI2MDg1ODEgQzE4LjU3OTk4Miw3LjM1MjE1NTYzIDE3Ljk0NDgwNSw3LjU4ODY5OTQ2IDE3LjI2OTM2MjUsNy43MTYxOTk3NiBDMTYuNzI4MjEyMSw3LjE2MzU1NzAyIDE1Ljk1NzE5NDQsNi44MTgxODE4MiAxNS4xMDM0MzMzLDYuODE4MTgxODIgWiIgaWQ9IkNvbWJpbmVkLVNoYXBlIiBmaWxsPSIjRkZGRkZGIj48L3BhdGg+CiAgICAgICAgICAgIDwvZz4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==" alt="Twitter Logo"/></a></li><li><a href="https://github.com/eclipse/openj9" rel="noopener noreferrer" target="_blank"> <img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIyNXB4IiB2aWV3Qm94PSIwIDAgMjUgMjUiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5HaXRIdWI8L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0iR2l0SHViIiBmaWxsPSIjRkZGRkZGIiBmaWxsLXJ1bGU9Im5vbnplcm8iPgogICAgICAgICAgICA8ZyBpZD0iZ2l0aHViLWxvZ28iPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTIzLjMyMzIwOSw2LjM1NjM4NTg4IEMyMi4yMDU0MjQzLDQuNDI4ODY0OTMgMjAuNjg5MjIwNywyLjkwMjg0MzkxIDE4Ljc3NDE5OTMsMS43Nzc5Nzg1OCBDMTYuODU4ODkyOCwwLjY1MzA1NTg3MyAxNC43Njc5NDkxLDAuMDkwNzM3OTUzMyAxMi40OTk4ODYsMC4wOTA3Mzc5NTMzIEMxMC4yMzIxMDc5LDAuMDkwNzM3OTUzMyA4LjE0MDQ4MDEzLDAuNjUzMjI3OTkzIDYuMjI1NTcyNjksMS43Nzc5Nzg1OCBDNC4zMTAzODAyMSwyLjkwMjc4NjU0IDIuNzk0MjMzNjcsNC40Mjg4NjQ5MyAxLjY3NjQ0ODk5LDYuMzU2Mzg1ODggQzAuNTU4ODM1MzMzLDguMjgzODQ5NDUgMCwxMC4zODg2NTQ2IDAsMTIuNjcwNzQzOSBDMCwxNS40MTIwNTEgMC43OTQ2NzE0ODMsMTcuODc3MTA0NSAyLjM4NDQxMzQ5LDIwLjA2NjUzNTUgQzMuOTczOTg0NDksMjIuMjU2MTM4OCA2LjAyNzQ3NDg4LDIzLjc3MTI1ODggOC41NDQ3MTM2NywyNC42MTIwNjc4IEM4LjgzNzcyNzQsMjQuNjY2ODAyMiA5LjA1NDYzNzM3LDI0LjYyODMwNDUgOS4xOTU2NzE2MSwyNC40OTc1NTAzIEM5LjMzNjc2Mjg1LDI0LjM2NjYyMzkgOS40MDcyMjI5NiwyNC4yMDI2NTAzIDkuNDA3MjIyOTYsMjQuMDA2MzE4MSBDOS40MDcyMjI5NiwyMy45NzM1NTc5IDkuNDA0NDI5NjQsMjMuNjc4ODMwMSA5LjM5OTAxNDAxLDIzLjEyMTc5MDUgQzkuMzkzNDI3MzcsMjIuNTY0NzUxIDkuMzkwODA1MDcsMjIuMDc4Nzk3MiA5LjM5MDgwNTA3LDIxLjY2NDE1ODcgTDkuMDE2NDQyOTcsMjEuNzI5MzM1MSBDOC43Nzc3NTY1LDIxLjc3MzM0MDUgOC40NzY2NDc4MywyMS43OTE5ODY5IDguMTEzMTE2OTgsMjEuNzg2NzA4NiBDNy43NDk3NTcxNSwyMS43ODE2MDIzIDcuMzcyNTQ0NzMsMjEuNzQzMjc2OCA2Ljk4MTk5Mjc3LDIxLjY3MjAxODkgQzYuNTkxMjY5NzksMjEuNjAxMzkyMSA2LjIyNzg1Mjk1LDIxLjQzNzU5MDcgNS44OTE0NTcyMiwyMS4xODA5NTg5IEM1LjU1NTIzMjUyLDIwLjkyNDMyNzEgNS4zMTY1NDYwNCwyMC41ODg0MDUxIDUuMTc1NDU0OCwyMC4xNzM3MDkzIEw1LjAxMjcwMTA2LDE5Ljc5Njc2NTIgQzQuOTA0MjE3NTcsMTkuNTQ1ODEzNCA0LjczMzQyNTkxLDE5LjI2NzAzNTUgNC41MDAwOTgwNSwxOC45NjE0NjQxIEM0LjI2Njc3MDE5LDE4LjY1NTYwNTggNC4wMzA4MjAwMywxOC40NDgyNTc5IDMuNzkyMTMzNTUsMTguMzM5MDc2MSBMMy42NzgxNzc0MywxOC4yNTY5NzQ2IEMzLjYwMjI0NDY5LDE4LjIwMjQxMjMgMy41MzE3ODQ1OCwxOC4xMzY2MDQ5IDMuNDY2NjI2MDgsMTguMDYwMjQwOCBDMy40MDE1MjQ1OCwxNy45ODM4NzY2IDMuMzUyNzgzOTcsMTcuOTA3NDU1MSAzLjMyMDIzMzIzLDE3LjgzMDkxODggQzMuMjg3NjI1NDcsMTcuNzU0MzI1MSAzLjMxNDY0NjU4LDE3LjY5MTUwMTEgMy40MDE1ODE1OSwxNy42NDIyMTcyIEMzLjQ4ODUxNjYsMTcuNTkyOTMzNCAzLjY0NTYyNjY4LDE3LjU2OTAwODYgMy44NzM1OTU5MywxNy41NjkwMDg2IEw0LjE5ODk4OTM5LDE3LjYxNzk0ODIgQzQuNDE2MDEzMzcsMTcuNjYxNzI0MiA0LjY4NDQ1NzI3LDE3Ljc5MjQ3ODUgNS4wMDQ2NjMxNCwxOC4wMTEwMTQzIEM1LjMyNDY5Nzk4LDE4LjIyOTM3NzkgNS41ODc3ODMyNywxOC41MTMyNjIxIDUuNzkzOTc2LDE4Ljg2MjU1MjEgQzYuMDQzNjY0NzUsMTkuMzEwNDA5OSA2LjM0NDQ4ODM4LDE5LjY1MTY2NzYgNi42OTczMDE5OSwxOS44ODY0OTc0IEM3LjA0OTgzMDU4LDIwLjEyMTMyNzMgNy40MDUyNjY0OSwyMC4yMzg1NDE0IDcuNzYzMjY3NzEsMjAuMjM4NTQxNCBDOC4xMjEyNjg5MiwyMC4yMzg1NDE0IDguNDMwNDcyNTIsMjAuMjExMjMxNiA4LjY5MDk5MjUxLDIwLjE1Njg5ODkgQzguOTUxMjI3NDcsMjAuMTAyMjc5MyA5LjE5NTM4NjU3LDIwLjAyMDE3NzcgOS40MjMzNTU4MiwxOS45MTEwNTMzIEM5LjUyMTAwODA2LDE5LjE3OTA4MTkgOS43ODY4ODY2NywxOC42MTY3NjM5IDEwLjIyMDc2MzYsMTguMjIzNjk3OSBDOS42MDIzNTY0MiwxOC4xNTgyOTIxIDkuMDQ2MzcxNDIsMTguMDU5NzgxOCA4LjU1MjUyMzU3LDE3LjkyODc5OCBDOC4wNTg5NjA3NSwxNy43OTc2NDIxIDcuNTQ4OTIzMDMsMTcuNTg0Nzg2MyA3LjAyMjc1MjQ2LDE3LjI4OTY1NjkgQzYuNDk2Mjk2ODUsMTYuOTk0OTI5MSA2LjA1OTU2OTU4LDE2LjYyODk0MzQgNS43MTI0NTY2MiwxNi4xOTIzMzA5IEM1LjM2NTI4NjY1LDE1Ljc1NTQ4ODkgNS4wODAzNjc4NSwxNS4xODE5ODMxIDQuODU4MDk5MjYsMTQuNDcyMzMgQzQuNjM1NzE2NjYsMTMuNzYyMzkgNC41MjQ0OTY4NiwxMi45NDM0NDAzIDQuNTI0NDk2ODYsMTIuMDE1MjUxNCBDNC41MjQ0OTY4NiwxMC42OTM2NTIzIDQuOTUzMTg2MjEsOS41NjkwMTY0MiA1LjgxMDM5Mzg5LDguNjQwNzEyNzggQzUuNDA4ODM5NjcsNy42NDcxMTgwNyA1LjQ0Njc0OTAzLDYuNTMzMjY4NDYgNS45MjQyMzYsNS4yOTkyNzg2OCBDNi4yMzg5MTIyMiw1LjIwMDg4MzA4IDYuNzA1NTY3OTQsNS4yNzQ3MjI4MSA3LjMyMzk3NTE0LDUuNTIwMzM4ODcgQzcuOTQyNDk2MzQsNS43NjYwNjk2OCA4LjM5NTM1NjQ3LDUuOTc2NTczMTQgOC42ODMwMTE1OSw2LjE1MTEwMzQxIEM4Ljk3MDY2NjcsNi4zMjU1NzYzIDkuMjAxMTQ0MjQsNi40NzM0Mjc4NyA5LjM3NDc4NjIzLDYuNTkzMzM4NTQgQzEwLjM4NDA4NzQsNi4zMDk1MTE3MSAxMS40MjU2NTQzLDYuMTY3NTY5NjEgMTIuNDk5NzcyLDYuMTY3NTY5NjEgQzEzLjU3Mzg4OTYsNi4xNjc1Njk2MSAxNC42MTU2ODQ2LDYuMzA5NTExNzEgMTUuNjI1MDQyOCw2LjU5MzMzODU0IEwxNi4yNDM1MDcsNi4yMDAzODcyNiBDMTYuNjY2NDM4Niw1LjkzODE5MDI1IDE3LjE2NTg3MzEsNS42OTc5MDk5MyAxNy43NDA2MTMzLDUuNDc5NDg4OTIgQzE4LjMxNTY5NTUsNS4yNjExODI2NiAxOC43NTU0NDQxLDUuMjAxMDU1MiAxOS4wNTk0MDMxLDUuMjk5NDUwOCBDMTkuNTQ3NDkzMyw2LjUzMzQ5Nzk1IDE5LjU5MDk4OTMsNy42NDcyOTAxOSAxOS4xODkzMjExLDguNjQwODg0OSBDMjAuMDQ2NDcxNyw5LjU2OTE4ODU0IDIwLjQ3NTMzMjEsMTAuNjk0MTExMiAyMC40NzUzMzIxLDEyLjAxNTQyMzUgQzIwLjQ3NTMzMjEsMTIuOTQzNjEyNCAyMC4zNjM3MTMzLDEzLjc2NTE0MzkgMjAuMTQxNjcyNywxNC40ODA1MzQ0IEMxOS45MTkzNDcxLDE1LjE5NjAzOTYgMTkuNjMxOTc3LDE1Ljc2ODk3MTcgMTkuMjc5NDQ4NSwxNi4yMDA1MzUzIEMxOC45MjY1MjA4LDE2LjYzMjA0MTYgMTguNDg3MDAwMiwxNi45OTUxNTg2IDE3Ljk2MDgyOTcsMTcuMjg5ODI5MSBDMTcuNDM0NTQ1MSwxNy41ODQ3MjkgMTYuOTI0MzM2MywxNy43OTc1ODQ4IDE2LjQzMDc3MzUsMTcuOTI4NzQwNiBDMTUuOTM2OTgyNywxOC4wNTk4OTY1IDE1LjM4MDk5NzcsMTguMTU4NDY0MiAxNC43NjI1OTA1LDE4LjIyMzk4NDggQzE1LjMyNjYxMzQsMTguNzE1MjE2OSAxNS42MDg2ODE5LDE5LjQ5MDYyMDEgMTUuNjA4NjgxOSwyMC41NDk4NTAxIEwxNS42MDg2ODE5LDI0LjAwNTg1OTIgQzE1LjYwODY4MTksMjQuMjAyMTkxNCAxNS42NzY1MTk3LDI0LjM2NjEwNzUgMTUuODEyMzA5MywyNC40OTcwOTEzIEMxNS45NDc5Mjc5LDI0LjYyNzg0NTUgMTYuMTYyMTAxNiwyNC42NjYzNDMyIDE2LjQ1NTExNTMsMjQuNjExNTUxNSBDMTguOTcyNjk2MSwyMy43NzA4NTcyIDIxLjAyNjE4NjUsMjIuMjU1Njc5OCAyMi42MTU3MDA1LDIwLjA2NjA3NjYgQzI0LjIwNTA0MzUsMTcuODc2NjQ1NSAyNSwxNS40MTE1OTIgMjUsMTIuNjcwMjg0OSBDMjQuOTk5NDI5OSwxMC4zODg0ODI1IDI0LjQ0MDMwOTYsOC4yODM4NDk0NSAyMy4zMjMyMDksNi4zNTYzODU4OCBaIiBpZD0iU2hhcGUiPjwvcGF0aD4KICAgICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+" alt="GitHub Logo"/></a></li><li><a href="https://openj9.slack.com/" rel="noopener noreferrer" target="_blank"><img src="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIyNXB4IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgogPCEtLSBDcmVhdGVkIHdpdGggTWV0aG9kIERyYXcgLSBodHRwOi8vZ2l0aHViLmNvbS9kdW9waXhlbC9NZXRob2QtRHJhdy8gLS0+CgogPGc+CiAgPHRpdGxlPmJhY2tncm91bmQ8L3RpdGxlPgogIDxyZWN0IGZpbGw9Im5vbmUiIGlkPSJjYW52YXNfYmFja2dyb3VuZCIgaGVpZ2h0PSIyNiIgd2lkdGg9IjI2IiB5PSItMSIgeD0iLTEiLz4KICA8ZyBkaXNwbGF5PSJub25lIiBvdmVyZmxvdz0idmlzaWJsZSIgeT0iMCIgeD0iMCIgaGVpZ2h0PSIxMDAlIiB3aWR0aD0iMTAwJSIgaWQ9ImNhbnZhc0dyaWQiPgogICA8cmVjdCBmaWxsPSJ1cmwoI2dyaWRwYXR0ZXJuKSIgc3Ryb2tlLXdpZHRoPSIwIiB5PSIxIiB4PSIxIiBoZWlnaHQ9IjIyIiB3aWR0aD0iMjIiLz4KICA8L2c+CiA8L2c+CiA8Zz4KICA8dGl0bGU+TGF5ZXIgMTwvdGl0bGU+CiAgPGVsbGlwc2Ugcnk9IjExIiByeD0iMTEiIGlkPSJzdmdfMSIgY3k9IjEyIiBjeD0iMTIiIHN0cm9rZT0iI0ZGRiIgZmlsbD0iI0ZGRkZGRiIvPgogIDxzdHlsZSB0cmFuc2Zvcm09Im1hdHJpeCgwLjA2NTE4MjQ5NTU3MzI1MzYyLDAsMCwwLjA2NTE4MjQ5NTU3MzI1MzYyLDAsMCkgIiB0eXBlPSJ0ZXh0L2NzcyI+LnN0MHtmaWxsOiM0MzQzNDM7fTwvc3R5bGU+CiAgPGcgc3Ryb2tlPSJudWxsIiBpZD0ic3ZnXzE5Ij4KICAgPGcgc3Ryb2tlPSJudWxsIiB0cmFuc2Zvcm09Im1hdHJpeCgwLjEzMDE1NTgwODUxODA5NDg2LDAsMCwwLjEzMDE1NTgwODUxODA5NDg2LC02Ljg0OTAwNjQ1MDQwNTQ5OSwtNi44MzE1MDczOTEwMjE5MjQpICIgaWQ9InN2Z182Ij4KICAgIDxnIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z183Ij4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfOCIgZD0ibTExMC4yOTgyOTIsMTYxLjI5MzAxMWMwLDcuMSAtNS44LDEyLjkgLTEyLjksMTIuOXMtMTIuOSwtNS44IC0xMi45LC0xMi45YzAsLTcuMSA1LjgsLTEyLjkgMTIuOSwtMTIuOWwxMi45LDBsMCwxMi45eiIgY2xhc3M9InN0MCIvPgogICAgIDxwYXRoIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z185IiBkPSJtMTE2Ljc5ODI5MiwxNjEuMjkzMDExYzAsLTcuMSA1LjgsLTEyLjkgMTIuOSwtMTIuOXMxMi45LDUuOCAxMi45LDEyLjlsMCwzMi4zYzAsNy4xIC01LjgsMTIuOSAtMTIuOSwxMi45cy0xMi45LC01LjggLTEyLjksLTEyLjljMCwwIDAsLTMyLjMgMCwtMzIuM3oiIGNsYXNzPSJzdDAiLz4KICAgIDwvZz4KICAgIDxnIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z18xMCI+CiAgICAgPHBhdGggc3Ryb2tlPSJudWxsIiBpZD0ic3ZnXzExIiBkPSJtMTI5LjY5ODI5MiwxMDkuNDkzMDExYy03LjEsMCAtMTIuOSwtNS44IC0xMi45LC0xMi45czUuOCwtMTIuOSAxMi45LC0xMi45czEyLjksNS44IDEyLjksMTIuOWwwLDEyLjlsLTEyLjksMHoiIGNsYXNzPSJzdDAiLz4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTIiIGQ9Im0xMjkuNjk4MjkyLDExNS45OTMwMTFjNy4xLDAgMTIuOSw1LjggMTIuOSwxMi45cy01LjgsMTIuOSAtMTIuOSwxMi45bC0zMi4zLDBjLTcuMSwwIC0xMi45LC01LjggLTEyLjksLTEyLjlzNS44LC0xMi45IDEyLjksLTEyLjljMCwwIDMyLjMsMCAzMi4zLDB6IiBjbGFzcz0ic3QwIi8+CiAgICA8L2c+CiAgICA8ZyBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTMiPgogICAgIDxwYXRoIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z18xNCIgZD0ibTE4MS40OTgyOTIsMTI4Ljg5MzAxMWMwLC03LjEgNS44LC0xMi45IDEyLjksLTEyLjljNy4xLDAgMTIuOSw1LjggMTIuOSwxMi45cy01LjgsMTIuOSAtMTIuOSwxMi45bC0xMi45LDBsMCwtMTIuOXoiIGNsYXNzPSJzdDAiLz4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTUiIGQ9Im0xNzQuOTk4MjkyLDEyOC44OTMwMTFjMCw3LjEgLTUuOCwxMi45IC0xMi45LDEyLjljLTcuMSwwIC0xMi45LC01LjggLTEyLjksLTEyLjlsMCwtMzIuM2MwLC03LjEgNS44LC0xMi45IDEyLjksLTEyLjljNy4xLDAgMTIuOSw1LjggMTIuOSwxMi45bDAsMzIuM3oiIGNsYXNzPSJzdDAiLz4KICAgIDwvZz4KICAgIDxnIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z18xNiI+CiAgICAgPHBhdGggc3Ryb2tlPSJudWxsIiBpZD0ic3ZnXzE3IiBkPSJtMTYyLjA5ODI5MiwxODAuNjkzMDExYzcuMSwwIDEyLjksNS44IDEyLjksMTIuOWMwLDcuMSAtNS44LDEyLjkgLTEyLjksMTIuOWMtNy4xLDAgLTEyLjksLTUuOCAtMTIuOSwtMTIuOWwwLC0xMi45bDEyLjksMHoiIGNsYXNzPSJzdDAiLz4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTgiIGQ9Im0xNjIuMDk4MjkyLDE3NC4xOTMwMTFjLTcuMSwwIC0xMi45LC01LjggLTEyLjksLTEyLjljMCwtNy4xIDUuOCwtMTIuOSAxMi45LC0xMi45bDMyLjMsMGM3LjEsMCAxMi45LDUuOCAxMi45LDEyLjljMCw3LjEgLTUuOCwxMi45IC0xMi45LDEyLjlsLTMyLjMsMHoiIGNsYXNzPSJzdDAiLz4KICAgIDwvZz4KICAgPC9nPgogIDwvZz4KIDwvZz4KPC9zdmc+" alt="Slack logo"/></a></li><li><a href="https://stackoverflow.com/search?q=%23OpenJ9" rel="noopener noreferrer" target="_blank"><img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjRweCIgaGVpZ2h0PSIyNHB4IiB2aWV3Qm94PSIwIDAgNjUgNzAiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5zdGFja292ZXJmbG93LWxvZ288L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0iI0ZGRkZGRiIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0ic3RhY2tvdmVyZmxvdy1sb2dvIiBmaWxsLXJ1bGU9Im5vbnplcm8iPgogICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgZmlsbD0iI0ZGRkZGRiIgcG9pbnRzPSI1NC4yNDE3MjY2IDYzLjc3MDIyNjUgNTQuMjQxNzI2NiA0NSA2MSA0NSA2MSA3MCAwIDcwIDAgNDUgNi43NTgyNzMzOCA0NSA2Ljc1ODI3MzM4IDYzLjc3MDIyNjUiPjwvcG9seWdvbj4KICAgICAgICAgICAgPHBhdGggZD0iTTE0LjcwNzEwNTcsNDMuNjQyNzU2NyBMNDguMTE3ODUxLDUwLjA4NzIwMTEgTDQ5LjUzMjA2MjQsNDMuODg3NDgyNCBMMTYuMTIxMzE3MiwzNy40NDMwMzggTDE0LjcwNzEwNTcsNDMuNjQyNzU2NyBMMTQuNzA3MTA1Nyw0My42NDI3NTY3IFogTTE5LjEyNjUxNjUsMjguOTU5MjEyNCBMNTAuMDYyMzkxNyw0Mi4yNTU5Nzc1IEw1Mi44OTA4MTQ2LDM2LjU0NTcxMDMgTDIxLjk1NDkzOTMsMjMuMTY3MzY5OSBMMTkuMTI2NTE2NSwyOC45NTkyMTI0IFogTTI3LjcwMDE3MzMsMTQuOTI4MjcgTDUzLjk1MTQ3MzEsMzUuMDc3MzU1OCBMNTguMjgyNDk1NywzMC4yNjQ0MTYzIEwzMi4wMzExOTU4LDEwLjExNTMzMDUgTDI3LjcwMDE3MzMsMTQuOTI4MjcgTDI3LjcwMDE3MzMsMTQuOTI4MjcgWiBNNDQuNjcwNzEwNiwwIEwzOS4xOTA2NDEyLDMuNzUyNDYxMzIgTDU5LjUxOTkzMDcsMjkuMDQwNzg3NiBMNjUsMjUuMjg4MzI2MyBMNDQuNjcwNzEwNiwwIFogTTE0LDU4IEw0OC4xMTc4NTEsNTggTDQ4LjExNzg1MSw1MS43MTg3MDYgTDE0LDUxLjcxODcwNiBMMTQsNTggWiIgaWQ9IlNoYXBlIiBmaWxsPSIjRkZGRkZGIj48L3BhdGg+CiAgICAgICAgPC9nPgogICAgPC9nPgo8L3N2Zz4KCgo=" alt="Stack Overflow logo"/></a></li></ul></nav></footer></div></div><script>
+ */.fa,.fab,.fad,.fal,.far,.fas{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-.0667em}.fa-xs{font-size:.75em}.fa-sm{font-size:.875em}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:2.5em;padding-left:0}.fa-ul>li{position:relative}.fa-li{left:-2em;position:absolute;text-align:center;width:2em;line-height:inherit}.fa-border{border:.08em solid #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.fab.fa-pull-left,.fal.fa-pull-left,.far.fa-pull-left,.fas.fa-pull-left{margin-right:.3em}.fa.fa-pull-right,.fab.fa-pull-right,.fal.fa-pull-right,.far.fa-pull-right,.fas.fa-pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s linear infinite;animation:fa-spin 2s linear infinite}.fa-pulse{-webkit-animation:fa-spin 1s steps(8) infinite;animation:fa-spin 1s steps(8) infinite}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scaleX(-1);transform:scaleX(-1)}.fa-flip-vertical{-webkit-transform:scaleY(-1);transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical,.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{-webkit-transform:scale(-1);transform:scale(-1)}:root .fa-flip-both,:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270{-webkit-filter:none;filter:none}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-500px:before{content:"\F26E"}.fa-accessible-icon:before{content:"\F368"}.fa-accusoft:before{content:"\F369"}.fa-acquisitions-incorporated:before{content:"\F6AF"}.fa-ad:before{content:"\F641"}.fa-address-book:before{content:"\F2B9"}.fa-address-card:before{content:"\F2BB"}.fa-adjust:before{content:"\F042"}.fa-adn:before{content:"\F170"}.fa-adobe:before{content:"\F778"}.fa-adversal:before{content:"\F36A"}.fa-affiliatetheme:before{content:"\F36B"}.fa-air-freshener:before{content:"\F5D0"}.fa-airbnb:before{content:"\F834"}.fa-algolia:before{content:"\F36C"}.fa-align-center:before{content:"\F037"}.fa-align-justify:before{content:"\F039"}.fa-align-left:before{content:"\F036"}.fa-align-right:before{content:"\F038"}.fa-alipay:before{content:"\F642"}.fa-allergies:before{content:"\F461"}.fa-amazon:before{content:"\F270"}.fa-amazon-pay:before{content:"\F42C"}.fa-ambulance:before{content:"\F0F9"}.fa-american-sign-language-interpreting:before{content:"\F2A3"}.fa-amilia:before{content:"\F36D"}.fa-anchor:before{content:"\F13D"}.fa-android:before{content:"\F17B"}.fa-angellist:before{content:"\F209"}.fa-angle-double-down:before{content:"\F103"}.fa-angle-double-left:before{content:"\F100"}.fa-angle-double-right:before{content:"\F101"}.fa-angle-double-up:before{content:"\F102"}.fa-angle-down:before{content:"\F107"}.fa-angle-left:before{content:"\F104"}.fa-angle-right:before{content:"\F105"}.fa-angle-up:before{content:"\F106"}.fa-angry:before{content:"\F556"}.fa-angrycreative:before{content:"\F36E"}.fa-angular:before{content:"\F420"}.fa-ankh:before{content:"\F644"}.fa-app-store:before{content:"\F36F"}.fa-app-store-ios:before{content:"\F370"}.fa-apper:before{content:"\F371"}.fa-apple:before{content:"\F179"}.fa-apple-alt:before{content:"\F5D1"}.fa-apple-pay:before{content:"\F415"}.fa-archive:before{content:"\F187"}.fa-archway:before{content:"\F557"}.fa-arrow-alt-circle-down:before{content:"\F358"}.fa-arrow-alt-circle-left:before{content:"\F359"}.fa-arrow-alt-circle-right:before{content:"\F35A"}.fa-arrow-alt-circle-up:before{content:"\F35B"}.fa-arrow-circle-down:before{content:"\F0AB"}.fa-arrow-circle-left:before{content:"\F0A8"}.fa-arrow-circle-right:before{content:"\F0A9"}.fa-arrow-circle-up:before{content:"\F0AA"}.fa-arrow-down:before{content:"\F063"}.fa-arrow-left:before{content:"\F060"}.fa-arrow-right:before{content:"\F061"}.fa-arrow-up:before{content:"\F062"}.fa-arrows-alt:before{content:"\F0B2"}.fa-arrows-alt-h:before{content:"\F337"}.fa-arrows-alt-v:before{content:"\F338"}.fa-artstation:before{content:"\F77A"}.fa-assistive-listening-systems:before{content:"\F2A2"}.fa-asterisk:before{content:"\F069"}.fa-asymmetrik:before{content:"\F372"}.fa-at:before{content:"\F1FA"}.fa-atlas:before{content:"\F558"}.fa-atlassian:before{content:"\F77B"}.fa-atom:before{content:"\F5D2"}.fa-audible:before{content:"\F373"}.fa-audio-description:before{content:"\F29E"}.fa-autoprefixer:before{content:"\F41C"}.fa-avianex:before{content:"\F374"}.fa-aviato:before{content:"\F421"}.fa-award:before{content:"\F559"}.fa-aws:before{content:"\F375"}.fa-baby:before{content:"\F77C"}.fa-baby-carriage:before{content:"\F77D"}.fa-backspace:before{content:"\F55A"}.fa-backward:before{content:"\F04A"}.fa-bacon:before{content:"\F7E5"}.fa-bahai:before{content:"\F666"}.fa-balance-scale:before{content:"\F24E"}.fa-balance-scale-left:before{content:"\F515"}.fa-balance-scale-right:before{content:"\F516"}.fa-ban:before{content:"\F05E"}.fa-band-aid:before{content:"\F462"}.fa-bandcamp:before{content:"\F2D5"}.fa-barcode:before{content:"\F02A"}.fa-bars:before{content:"\F0C9"}.fa-baseball-ball:before{content:"\F433"}.fa-basketball-ball:before{content:"\F434"}.fa-bath:before{content:"\F2CD"}.fa-battery-empty:before{content:"\F244"}.fa-battery-full:before{content:"\F240"}.fa-battery-half:before{content:"\F242"}.fa-battery-quarter:before{content:"\F243"}.fa-battery-three-quarters:before{content:"\F241"}.fa-battle-net:before{content:"\F835"}.fa-bed:before{content:"\F236"}.fa-beer:before{content:"\F0FC"}.fa-behance:before{content:"\F1B4"}.fa-behance-square:before{content:"\F1B5"}.fa-bell:before{content:"\F0F3"}.fa-bell-slash:before{content:"\F1F6"}.fa-bezier-curve:before{content:"\F55B"}.fa-bible:before{content:"\F647"}.fa-bicycle:before{content:"\F206"}.fa-biking:before{content:"\F84A"}.fa-bimobject:before{content:"\F378"}.fa-binoculars:before{content:"\F1E5"}.fa-biohazard:before{content:"\F780"}.fa-birthday-cake:before{content:"\F1FD"}.fa-bitbucket:before{content:"\F171"}.fa-bitcoin:before{content:"\F379"}.fa-bity:before{content:"\F37A"}.fa-black-tie:before{content:"\F27E"}.fa-blackberry:before{content:"\F37B"}.fa-blender:before{content:"\F517"}.fa-blender-phone:before{content:"\F6B6"}.fa-blind:before{content:"\F29D"}.fa-blog:before{content:"\F781"}.fa-blogger:before{content:"\F37C"}.fa-blogger-b:before{content:"\F37D"}.fa-bluetooth:before{content:"\F293"}.fa-bluetooth-b:before{content:"\F294"}.fa-bold:before{content:"\F032"}.fa-bolt:before{content:"\F0E7"}.fa-bomb:before{content:"\F1E2"}.fa-bone:before{content:"\F5D7"}.fa-bong:before{content:"\F55C"}.fa-book:before{content:"\F02D"}.fa-book-dead:before{content:"\F6B7"}.fa-book-medical:before{content:"\F7E6"}.fa-book-open:before{content:"\F518"}.fa-book-reader:before{content:"\F5DA"}.fa-bookmark:before{content:"\F02E"}.fa-bootstrap:before{content:"\F836"}.fa-border-all:before{content:"\F84C"}.fa-border-none:before{content:"\F850"}.fa-border-style:before{content:"\F853"}.fa-bowling-ball:before{content:"\F436"}.fa-box:before{content:"\F466"}.fa-box-open:before{content:"\F49E"}.fa-boxes:before{content:"\F468"}.fa-braille:before{content:"\F2A1"}.fa-brain:before{content:"\F5DC"}.fa-bread-slice:before{content:"\F7EC"}.fa-briefcase:before{content:"\F0B1"}.fa-briefcase-medical:before{content:"\F469"}.fa-broadcast-tower:before{content:"\F519"}.fa-broom:before{content:"\F51A"}.fa-brush:before{content:"\F55D"}.fa-btc:before{content:"\F15A"}.fa-buffer:before{content:"\F837"}.fa-bug:before{content:"\F188"}.fa-building:before{content:"\F1AD"}.fa-bullhorn:before{content:"\F0A1"}.fa-bullseye:before{content:"\F140"}.fa-burn:before{content:"\F46A"}.fa-buromobelexperte:before{content:"\F37F"}.fa-bus:before{content:"\F207"}.fa-bus-alt:before{content:"\F55E"}.fa-business-time:before{content:"\F64A"}.fa-buy-n-large:before{content:"\F8A6"}.fa-buysellads:before{content:"\F20D"}.fa-calculator:before{content:"\F1EC"}.fa-calendar:before{content:"\F133"}.fa-calendar-alt:before{content:"\F073"}.fa-calendar-check:before{content:"\F274"}.fa-calendar-day:before{content:"\F783"}.fa-calendar-minus:before{content:"\F272"}.fa-calendar-plus:before{content:"\F271"}.fa-calendar-times:before{content:"\F273"}.fa-calendar-week:before{content:"\F784"}.fa-camera:before{content:"\F030"}.fa-camera-retro:before{content:"\F083"}.fa-campground:before{content:"\F6BB"}.fa-canadian-maple-leaf:before{content:"\F785"}.fa-candy-cane:before{content:"\F786"}.fa-cannabis:before{content:"\F55F"}.fa-capsules:before{content:"\F46B"}.fa-car:before{content:"\F1B9"}.fa-car-alt:before{content:"\F5DE"}.fa-car-battery:before{content:"\F5DF"}.fa-car-crash:before{content:"\F5E1"}.fa-car-side:before{content:"\F5E4"}.fa-caravan:before{content:"\F8FF"}.fa-caret-down:before{content:"\F0D7"}.fa-caret-left:before{content:"\F0D9"}.fa-caret-right:before{content:"\F0DA"}.fa-caret-square-down:before{content:"\F150"}.fa-caret-square-left:before{content:"\F191"}.fa-caret-square-right:before{content:"\F152"}.fa-caret-square-up:before{content:"\F151"}.fa-caret-up:before{content:"\F0D8"}.fa-carrot:before{content:"\F787"}.fa-cart-arrow-down:before{content:"\F218"}.fa-cart-plus:before{content:"\F217"}.fa-cash-register:before{content:"\F788"}.fa-cat:before{content:"\F6BE"}.fa-cc-amazon-pay:before{content:"\F42D"}.fa-cc-amex:before{content:"\F1F3"}.fa-cc-apple-pay:before{content:"\F416"}.fa-cc-diners-club:before{content:"\F24C"}.fa-cc-discover:before{content:"\F1F2"}.fa-cc-jcb:before{content:"\F24B"}.fa-cc-mastercard:before{content:"\F1F1"}.fa-cc-paypal:before{content:"\F1F4"}.fa-cc-stripe:before{content:"\F1F5"}.fa-cc-visa:before{content:"\F1F0"}.fa-centercode:before{content:"\F380"}.fa-centos:before{content:"\F789"}.fa-certificate:before{content:"\F0A3"}.fa-chair:before{content:"\F6C0"}.fa-chalkboard:before{content:"\F51B"}.fa-chalkboard-teacher:before{content:"\F51C"}.fa-charging-station:before{content:"\F5E7"}.fa-chart-area:before{content:"\F1FE"}.fa-chart-bar:before{content:"\F080"}.fa-chart-line:before{content:"\F201"}.fa-chart-pie:before{content:"\F200"}.fa-check:before{content:"\F00C"}.fa-check-circle:before{content:"\F058"}.fa-check-double:before{content:"\F560"}.fa-check-square:before{content:"\F14A"}.fa-cheese:before{content:"\F7EF"}.fa-chess:before{content:"\F439"}.fa-chess-bishop:before{content:"\F43A"}.fa-chess-board:before{content:"\F43C"}.fa-chess-king:before{content:"\F43F"}.fa-chess-knight:before{content:"\F441"}.fa-chess-pawn:before{content:"\F443"}.fa-chess-queen:before{content:"\F445"}.fa-chess-rook:before{content:"\F447"}.fa-chevron-circle-down:before{content:"\F13A"}.fa-chevron-circle-left:before{content:"\F137"}.fa-chevron-circle-right:before{content:"\F138"}.fa-chevron-circle-up:before{content:"\F139"}.fa-chevron-down:before{content:"\F078"}.fa-chevron-left:before{content:"\F053"}.fa-chevron-right:before{content:"\F054"}.fa-chevron-up:before{content:"\F077"}.fa-child:before{content:"\F1AE"}.fa-chrome:before{content:"\F268"}.fa-chromecast:before{content:"\F838"}.fa-church:before{content:"\F51D"}.fa-circle:before{content:"\F111"}.fa-circle-notch:before{content:"\F1CE"}.fa-city:before{content:"\F64F"}.fa-clinic-medical:before{content:"\F7F2"}.fa-clipboard:before{content:"\F328"}.fa-clipboard-check:before{content:"\F46C"}.fa-clipboard-list:before{content:"\F46D"}.fa-clock:before{content:"\F017"}.fa-clone:before{content:"\F24D"}.fa-closed-captioning:before{content:"\F20A"}.fa-cloud:before{content:"\F0C2"}.fa-cloud-download-alt:before{content:"\F381"}.fa-cloud-meatball:before{content:"\F73B"}.fa-cloud-moon:before{content:"\F6C3"}.fa-cloud-moon-rain:before{content:"\F73C"}.fa-cloud-rain:before{content:"\F73D"}.fa-cloud-showers-heavy:before{content:"\F740"}.fa-cloud-sun:before{content:"\F6C4"}.fa-cloud-sun-rain:before{content:"\F743"}.fa-cloud-upload-alt:before{content:"\F382"}.fa-cloudscale:before{content:"\F383"}.fa-cloudsmith:before{content:"\F384"}.fa-cloudversify:before{content:"\F385"}.fa-cocktail:before{content:"\F561"}.fa-code:before{content:"\F121"}.fa-code-branch:before{content:"\F126"}.fa-codepen:before{content:"\F1CB"}.fa-codiepie:before{content:"\F284"}.fa-coffee:before{content:"\F0F4"}.fa-cog:before{content:"\F013"}.fa-cogs:before{content:"\F085"}.fa-coins:before{content:"\F51E"}.fa-columns:before{content:"\F0DB"}.fa-comment:before{content:"\F075"}.fa-comment-alt:before{content:"\F27A"}.fa-comment-dollar:before{content:"\F651"}.fa-comment-dots:before{content:"\F4AD"}.fa-comment-medical:before{content:"\F7F5"}.fa-comment-slash:before{content:"\F4B3"}.fa-comments:before{content:"\F086"}.fa-comments-dollar:before{content:"\F653"}.fa-compact-disc:before{content:"\F51F"}.fa-compass:before{content:"\F14E"}.fa-compress:before{content:"\F066"}.fa-compress-alt:before{content:"\F422"}.fa-compress-arrows-alt:before{content:"\F78C"}.fa-concierge-bell:before{content:"\F562"}.fa-confluence:before{content:"\F78D"}.fa-connectdevelop:before{content:"\F20E"}.fa-contao:before{content:"\F26D"}.fa-cookie:before{content:"\F563"}.fa-cookie-bite:before{content:"\F564"}.fa-copy:before{content:"\F0C5"}.fa-copyright:before{content:"\F1F9"}.fa-cotton-bureau:before{content:"\F89E"}.fa-couch:before{content:"\F4B8"}.fa-cpanel:before{content:"\F388"}.fa-creative-commons:before{content:"\F25E"}.fa-creative-commons-by:before{content:"\F4E7"}.fa-creative-commons-nc:before{content:"\F4E8"}.fa-creative-commons-nc-eu:before{content:"\F4E9"}.fa-creative-commons-nc-jp:before{content:"\F4EA"}.fa-creative-commons-nd:before{content:"\F4EB"}.fa-creative-commons-pd:before{content:"\F4EC"}.fa-creative-commons-pd-alt:before{content:"\F4ED"}.fa-creative-commons-remix:before{content:"\F4EE"}.fa-creative-commons-sa:before{content:"\F4EF"}.fa-creative-commons-sampling:before{content:"\F4F0"}.fa-creative-commons-sampling-plus:before{content:"\F4F1"}.fa-creative-commons-share:before{content:"\F4F2"}.fa-creative-commons-zero:before{content:"\F4F3"}.fa-credit-card:before{content:"\F09D"}.fa-critical-role:before{content:"\F6C9"}.fa-crop:before{content:"\F125"}.fa-crop-alt:before{content:"\F565"}.fa-cross:before{content:"\F654"}.fa-crosshairs:before{content:"\F05B"}.fa-crow:before{content:"\F520"}.fa-crown:before{content:"\F521"}.fa-crutch:before{content:"\F7F7"}.fa-css3:before{content:"\F13C"}.fa-css3-alt:before{content:"\F38B"}.fa-cube:before{content:"\F1B2"}.fa-cubes:before{content:"\F1B3"}.fa-cut:before{content:"\F0C4"}.fa-cuttlefish:before{content:"\F38C"}.fa-d-and-d:before{content:"\F38D"}.fa-d-and-d-beyond:before{content:"\F6CA"}.fa-dailymotion:before{content:"\F952"}.fa-dashcube:before{content:"\F210"}.fa-database:before{content:"\F1C0"}.fa-deaf:before{content:"\F2A4"}.fa-delicious:before{content:"\F1A5"}.fa-democrat:before{content:"\F747"}.fa-deploydog:before{content:"\F38E"}.fa-deskpro:before{content:"\F38F"}.fa-desktop:before{content:"\F108"}.fa-dev:before{content:"\F6CC"}.fa-deviantart:before{content:"\F1BD"}.fa-dharmachakra:before{content:"\F655"}.fa-dhl:before{content:"\F790"}.fa-diagnoses:before{content:"\F470"}.fa-diaspora:before{content:"\F791"}.fa-dice:before{content:"\F522"}.fa-dice-d20:before{content:"\F6CF"}.fa-dice-d6:before{content:"\F6D1"}.fa-dice-five:before{content:"\F523"}.fa-dice-four:before{content:"\F524"}.fa-dice-one:before{content:"\F525"}.fa-dice-six:before{content:"\F526"}.fa-dice-three:before{content:"\F527"}.fa-dice-two:before{content:"\F528"}.fa-digg:before{content:"\F1A6"}.fa-digital-ocean:before{content:"\F391"}.fa-digital-tachograph:before{content:"\F566"}.fa-directions:before{content:"\F5EB"}.fa-discord:before{content:"\F392"}.fa-discourse:before{content:"\F393"}.fa-divide:before{content:"\F529"}.fa-dizzy:before{content:"\F567"}.fa-dna:before{content:"\F471"}.fa-dochub:before{content:"\F394"}.fa-docker:before{content:"\F395"}.fa-dog:before{content:"\F6D3"}.fa-dollar-sign:before{content:"\F155"}.fa-dolly:before{content:"\F472"}.fa-dolly-flatbed:before{content:"\F474"}.fa-donate:before{content:"\F4B9"}.fa-door-closed:before{content:"\F52A"}.fa-door-open:before{content:"\F52B"}.fa-dot-circle:before{content:"\F192"}.fa-dove:before{content:"\F4BA"}.fa-download:before{content:"\F019"}.fa-draft2digital:before{content:"\F396"}.fa-drafting-compass:before{content:"\F568"}.fa-dragon:before{content:"\F6D5"}.fa-draw-polygon:before{content:"\F5EE"}.fa-dribbble:before{content:"\F17D"}.fa-dribbble-square:before{content:"\F397"}.fa-dropbox:before{content:"\F16B"}.fa-drum:before{content:"\F569"}.fa-drum-steelpan:before{content:"\F56A"}.fa-drumstick-bite:before{content:"\F6D7"}.fa-drupal:before{content:"\F1A9"}.fa-dumbbell:before{content:"\F44B"}.fa-dumpster:before{content:"\F793"}.fa-dumpster-fire:before{content:"\F794"}.fa-dungeon:before{content:"\F6D9"}.fa-dyalog:before{content:"\F399"}.fa-earlybirds:before{content:"\F39A"}.fa-ebay:before{content:"\F4F4"}.fa-edge:before{content:"\F282"}.fa-edit:before{content:"\F044"}.fa-egg:before{content:"\F7FB"}.fa-eject:before{content:"\F052"}.fa-elementor:before{content:"\F430"}.fa-ellipsis-h:before{content:"\F141"}.fa-ellipsis-v:before{content:"\F142"}.fa-ello:before{content:"\F5F1"}.fa-ember:before{content:"\F423"}.fa-empire:before{content:"\F1D1"}.fa-envelope:before{content:"\F0E0"}.fa-envelope-open:before{content:"\F2B6"}.fa-envelope-open-text:before{content:"\F658"}.fa-envelope-square:before{content:"\F199"}.fa-envira:before{content:"\F299"}.fa-equals:before{content:"\F52C"}.fa-eraser:before{content:"\F12D"}.fa-erlang:before{content:"\F39D"}.fa-ethereum:before{content:"\F42E"}.fa-ethernet:before{content:"\F796"}.fa-etsy:before{content:"\F2D7"}.fa-euro-sign:before{content:"\F153"}.fa-evernote:before{content:"\F839"}.fa-exchange-alt:before{content:"\F362"}.fa-exclamation:before{content:"\F12A"}.fa-exclamation-circle:before{content:"\F06A"}.fa-exclamation-triangle:before{content:"\F071"}.fa-expand:before{content:"\F065"}.fa-expand-alt:before{content:"\F424"}.fa-expand-arrows-alt:before{content:"\F31E"}.fa-expeditedssl:before{content:"\F23E"}.fa-external-link-alt:before{content:"\F35D"}.fa-external-link-square-alt:before{content:"\F360"}.fa-eye:before{content:"\F06E"}.fa-eye-dropper:before{content:"\F1FB"}.fa-eye-slash:before{content:"\F070"}.fa-facebook:before{content:"\F09A"}.fa-facebook-f:before{content:"\F39E"}.fa-facebook-messenger:before{content:"\F39F"}.fa-facebook-square:before{content:"\F082"}.fa-fan:before{content:"\F863"}.fa-fantasy-flight-games:before{content:"\F6DC"}.fa-fast-backward:before{content:"\F049"}.fa-fast-forward:before{content:"\F050"}.fa-fax:before{content:"\F1AC"}.fa-feather:before{content:"\F52D"}.fa-feather-alt:before{content:"\F56B"}.fa-fedex:before{content:"\F797"}.fa-fedora:before{content:"\F798"}.fa-female:before{content:"\F182"}.fa-fighter-jet:before{content:"\F0FB"}.fa-figma:before{content:"\F799"}.fa-file:before{content:"\F15B"}.fa-file-alt:before{content:"\F15C"}.fa-file-archive:before{content:"\F1C6"}.fa-file-audio:before{content:"\F1C7"}.fa-file-code:before{content:"\F1C9"}.fa-file-contract:before{content:"\F56C"}.fa-file-csv:before{content:"\F6DD"}.fa-file-download:before{content:"\F56D"}.fa-file-excel:before{content:"\F1C3"}.fa-file-export:before{content:"\F56E"}.fa-file-image:before{content:"\F1C5"}.fa-file-import:before{content:"\F56F"}.fa-file-invoice:before{content:"\F570"}.fa-file-invoice-dollar:before{content:"\F571"}.fa-file-medical:before{content:"\F477"}.fa-file-medical-alt:before{content:"\F478"}.fa-file-pdf:before{content:"\F1C1"}.fa-file-powerpoint:before{content:"\F1C4"}.fa-file-prescription:before{content:"\F572"}.fa-file-signature:before{content:"\F573"}.fa-file-upload:before{content:"\F574"}.fa-file-video:before{content:"\F1C8"}.fa-file-word:before{content:"\F1C2"}.fa-fill:before{content:"\F575"}.fa-fill-drip:before{content:"\F576"}.fa-film:before{content:"\F008"}.fa-filter:before{content:"\F0B0"}.fa-fingerprint:before{content:"\F577"}.fa-fire:before{content:"\F06D"}.fa-fire-alt:before{content:"\F7E4"}.fa-fire-extinguisher:before{content:"\F134"}.fa-firefox:before{content:"\F269"}.fa-firefox-browser:before{content:"\F907"}.fa-first-aid:before{content:"\F479"}.fa-first-order:before{content:"\F2B0"}.fa-first-order-alt:before{content:"\F50A"}.fa-firstdraft:before{content:"\F3A1"}.fa-fish:before{content:"\F578"}.fa-fist-raised:before{content:"\F6DE"}.fa-flag:before{content:"\F024"}.fa-flag-checkered:before{content:"\F11E"}.fa-flag-usa:before{content:"\F74D"}.fa-flask:before{content:"\F0C3"}.fa-flickr:before{content:"\F16E"}.fa-flipboard:before{content:"\F44D"}.fa-flushed:before{content:"\F579"}.fa-fly:before{content:"\F417"}.fa-folder:before{content:"\F07B"}.fa-folder-minus:before{content:"\F65D"}.fa-folder-open:before{content:"\F07C"}.fa-folder-plus:before{content:"\F65E"}.fa-font:before{content:"\F031"}.fa-font-awesome:before{content:"\F2B4"}.fa-font-awesome-alt:before{content:"\F35C"}.fa-font-awesome-flag:before{content:"\F425"}.fa-font-awesome-logo-full:before{content:"\F4E6"}.fa-fonticons:before{content:"\F280"}.fa-fonticons-fi:before{content:"\F3A2"}.fa-football-ball:before{content:"\F44E"}.fa-fort-awesome:before{content:"\F286"}.fa-fort-awesome-alt:before{content:"\F3A3"}.fa-forumbee:before{content:"\F211"}.fa-forward:before{content:"\F04E"}.fa-foursquare:before{content:"\F180"}.fa-free-code-camp:before{content:"\F2C5"}.fa-freebsd:before{content:"\F3A4"}.fa-frog:before{content:"\F52E"}.fa-frown:before{content:"\F119"}.fa-frown-open:before{content:"\F57A"}.fa-fulcrum:before{content:"\F50B"}.fa-funnel-dollar:before{content:"\F662"}.fa-futbol:before{content:"\F1E3"}.fa-galactic-republic:before{content:"\F50C"}.fa-galactic-senate:before{content:"\F50D"}.fa-gamepad:before{content:"\F11B"}.fa-gas-pump:before{content:"\F52F"}.fa-gavel:before{content:"\F0E3"}.fa-gem:before{content:"\F3A5"}.fa-genderless:before{content:"\F22D"}.fa-get-pocket:before{content:"\F265"}.fa-gg:before{content:"\F260"}.fa-gg-circle:before{content:"\F261"}.fa-ghost:before{content:"\F6E2"}.fa-gift:before{content:"\F06B"}.fa-gifts:before{content:"\F79C"}.fa-git:before{content:"\F1D3"}.fa-git-alt:before{content:"\F841"}.fa-git-square:before{content:"\F1D2"}.fa-github:before{content:"\F09B"}.fa-github-alt:before{content:"\F113"}.fa-github-square:before{content:"\F092"}.fa-gitkraken:before{content:"\F3A6"}.fa-gitlab:before{content:"\F296"}.fa-gitter:before{content:"\F426"}.fa-glass-cheers:before{content:"\F79F"}.fa-glass-martini:before{content:"\F000"}.fa-glass-martini-alt:before{content:"\F57B"}.fa-glass-whiskey:before{content:"\F7A0"}.fa-glasses:before{content:"\F530"}.fa-glide:before{content:"\F2A5"}.fa-glide-g:before{content:"\F2A6"}.fa-globe:before{content:"\F0AC"}.fa-globe-africa:before{content:"\F57C"}.fa-globe-americas:before{content:"\F57D"}.fa-globe-asia:before{content:"\F57E"}.fa-globe-europe:before{content:"\F7A2"}.fa-gofore:before{content:"\F3A7"}.fa-golf-ball:before{content:"\F450"}.fa-goodreads:before{content:"\F3A8"}.fa-goodreads-g:before{content:"\F3A9"}.fa-google:before{content:"\F1A0"}.fa-google-drive:before{content:"\F3AA"}.fa-google-play:before{content:"\F3AB"}.fa-google-plus:before{content:"\F2B3"}.fa-google-plus-g:before{content:"\F0D5"}.fa-google-plus-square:before{content:"\F0D4"}.fa-google-wallet:before{content:"\F1EE"}.fa-gopuram:before{content:"\F664"}.fa-graduation-cap:before{content:"\F19D"}.fa-gratipay:before{content:"\F184"}.fa-grav:before{content:"\F2D6"}.fa-greater-than:before{content:"\F531"}.fa-greater-than-equal:before{content:"\F532"}.fa-grimace:before{content:"\F57F"}.fa-grin:before{content:"\F580"}.fa-grin-alt:before{content:"\F581"}.fa-grin-beam:before{content:"\F582"}.fa-grin-beam-sweat:before{content:"\F583"}.fa-grin-hearts:before{content:"\F584"}.fa-grin-squint:before{content:"\F585"}.fa-grin-squint-tears:before{content:"\F586"}.fa-grin-stars:before{content:"\F587"}.fa-grin-tears:before{content:"\F588"}.fa-grin-tongue:before{content:"\F589"}.fa-grin-tongue-squint:before{content:"\F58A"}.fa-grin-tongue-wink:before{content:"\F58B"}.fa-grin-wink:before{content:"\F58C"}.fa-grip-horizontal:before{content:"\F58D"}.fa-grip-lines:before{content:"\F7A4"}.fa-grip-lines-vertical:before{content:"\F7A5"}.fa-grip-vertical:before{content:"\F58E"}.fa-gripfire:before{content:"\F3AC"}.fa-grunt:before{content:"\F3AD"}.fa-guitar:before{content:"\F7A6"}.fa-gulp:before{content:"\F3AE"}.fa-h-square:before{content:"\F0FD"}.fa-hacker-news:before{content:"\F1D4"}.fa-hacker-news-square:before{content:"\F3AF"}.fa-hackerrank:before{content:"\F5F7"}.fa-hamburger:before{content:"\F805"}.fa-hammer:before{content:"\F6E3"}.fa-hamsa:before{content:"\F665"}.fa-hand-holding:before{content:"\F4BD"}.fa-hand-holding-heart:before{content:"\F4BE"}.fa-hand-holding-usd:before{content:"\F4C0"}.fa-hand-lizard:before{content:"\F258"}.fa-hand-middle-finger:before{content:"\F806"}.fa-hand-paper:before{content:"\F256"}.fa-hand-peace:before{content:"\F25B"}.fa-hand-point-down:before{content:"\F0A7"}.fa-hand-point-left:before{content:"\F0A5"}.fa-hand-point-right:before{content:"\F0A4"}.fa-hand-point-up:before{content:"\F0A6"}.fa-hand-pointer:before{content:"\F25A"}.fa-hand-rock:before{content:"\F255"}.fa-hand-scissors:before{content:"\F257"}.fa-hand-spock:before{content:"\F259"}.fa-hands:before{content:"\F4C2"}.fa-hands-helping:before{content:"\F4C4"}.fa-handshake:before{content:"\F2B5"}.fa-hanukiah:before{content:"\F6E6"}.fa-hard-hat:before{content:"\F807"}.fa-hashtag:before{content:"\F292"}.fa-hat-cowboy:before{content:"\F8C0"}.fa-hat-cowboy-side:before{content:"\F8C1"}.fa-hat-wizard:before{content:"\F6E8"}.fa-hdd:before{content:"\F0A0"}.fa-heading:before{content:"\F1DC"}.fa-headphones:before{content:"\F025"}.fa-headphones-alt:before{content:"\F58F"}.fa-headset:before{content:"\F590"}.fa-heart:before{content:"\F004"}.fa-heart-broken:before{content:"\F7A9"}.fa-heartbeat:before{content:"\F21E"}.fa-helicopter:before{content:"\F533"}.fa-highlighter:before{content:"\F591"}.fa-hiking:before{content:"\F6EC"}.fa-hippo:before{content:"\F6ED"}.fa-hips:before{content:"\F452"}.fa-hire-a-helper:before{content:"\F3B0"}.fa-history:before{content:"\F1DA"}.fa-hockey-puck:before{content:"\F453"}.fa-holly-berry:before{content:"\F7AA"}.fa-home:before{content:"\F015"}.fa-hooli:before{content:"\F427"}.fa-hornbill:before{content:"\F592"}.fa-horse:before{content:"\F6F0"}.fa-horse-head:before{content:"\F7AB"}.fa-hospital:before{content:"\F0F8"}.fa-hospital-alt:before{content:"\F47D"}.fa-hospital-symbol:before{content:"\F47E"}.fa-hot-tub:before{content:"\F593"}.fa-hotdog:before{content:"\F80F"}.fa-hotel:before{content:"\F594"}.fa-hotjar:before{content:"\F3B1"}.fa-hourglass:before{content:"\F254"}.fa-hourglass-end:before{content:"\F253"}.fa-hourglass-half:before{content:"\F252"}.fa-hourglass-start:before{content:"\F251"}.fa-house-damage:before{content:"\F6F1"}.fa-houzz:before{content:"\F27C"}.fa-hryvnia:before{content:"\F6F2"}.fa-html5:before{content:"\F13B"}.fa-hubspot:before{content:"\F3B2"}.fa-i-cursor:before{content:"\F246"}.fa-ice-cream:before{content:"\F810"}.fa-icicles:before{content:"\F7AD"}.fa-icons:before{content:"\F86D"}.fa-id-badge:before{content:"\F2C1"}.fa-id-card:before{content:"\F2C2"}.fa-id-card-alt:before{content:"\F47F"}.fa-ideal:before{content:"\F913"}.fa-igloo:before{content:"\F7AE"}.fa-image:before{content:"\F03E"}.fa-images:before{content:"\F302"}.fa-imdb:before{content:"\F2D8"}.fa-inbox:before{content:"\F01C"}.fa-indent:before{content:"\F03C"}.fa-industry:before{content:"\F275"}.fa-infinity:before{content:"\F534"}.fa-info:before{content:"\F129"}.fa-info-circle:before{content:"\F05A"}.fa-instagram:before{content:"\F16D"}.fa-instagram-square:before{content:"\F955"}.fa-intercom:before{content:"\F7AF"}.fa-internet-explorer:before{content:"\F26B"}.fa-invision:before{content:"\F7B0"}.fa-ioxhost:before{content:"\F208"}.fa-italic:before{content:"\F033"}.fa-itch-io:before{content:"\F83A"}.fa-itunes:before{content:"\F3B4"}.fa-itunes-note:before{content:"\F3B5"}.fa-java:before{content:"\F4E4"}.fa-jedi:before{content:"\F669"}.fa-jedi-order:before{content:"\F50E"}.fa-jenkins:before{content:"\F3B6"}.fa-jira:before{content:"\F7B1"}.fa-joget:before{content:"\F3B7"}.fa-joint:before{content:"\F595"}.fa-joomla:before{content:"\F1AA"}.fa-journal-whills:before{content:"\F66A"}.fa-js:before{content:"\F3B8"}.fa-js-square:before{content:"\F3B9"}.fa-jsfiddle:before{content:"\F1CC"}.fa-kaaba:before{content:"\F66B"}.fa-kaggle:before{content:"\F5FA"}.fa-key:before{content:"\F084"}.fa-keybase:before{content:"\F4F5"}.fa-keyboard:before{content:"\F11C"}.fa-keycdn:before{content:"\F3BA"}.fa-khanda:before{content:"\F66D"}.fa-kickstarter:before{content:"\F3BB"}.fa-kickstarter-k:before{content:"\F3BC"}.fa-kiss:before{content:"\F596"}.fa-kiss-beam:before{content:"\F597"}.fa-kiss-wink-heart:before{content:"\F598"}.fa-kiwi-bird:before{content:"\F535"}.fa-korvue:before{content:"\F42F"}.fa-landmark:before{content:"\F66F"}.fa-language:before{content:"\F1AB"}.fa-laptop:before{content:"\F109"}.fa-laptop-code:before{content:"\F5FC"}.fa-laptop-medical:before{content:"\F812"}.fa-laravel:before{content:"\F3BD"}.fa-lastfm:before{content:"\F202"}.fa-lastfm-square:before{content:"\F203"}.fa-laugh:before{content:"\F599"}.fa-laugh-beam:before{content:"\F59A"}.fa-laugh-squint:before{content:"\F59B"}.fa-laugh-wink:before{content:"\F59C"}.fa-layer-group:before{content:"\F5FD"}.fa-leaf:before{content:"\F06C"}.fa-leanpub:before{content:"\F212"}.fa-lemon:before{content:"\F094"}.fa-less:before{content:"\F41D"}.fa-less-than:before{content:"\F536"}.fa-less-than-equal:before{content:"\F537"}.fa-level-down-alt:before{content:"\F3BE"}.fa-level-up-alt:before{content:"\F3BF"}.fa-life-ring:before{content:"\F1CD"}.fa-lightbulb:before{content:"\F0EB"}.fa-line:before{content:"\F3C0"}.fa-link:before{content:"\F0C1"}.fa-linkedin:before{content:"\F08C"}.fa-linkedin-in:before{content:"\F0E1"}.fa-linode:before{content:"\F2B8"}.fa-linux:before{content:"\F17C"}.fa-lira-sign:before{content:"\F195"}.fa-list:before{content:"\F03A"}.fa-list-alt:before{content:"\F022"}.fa-list-ol:before{content:"\F0CB"}.fa-list-ul:before{content:"\F0CA"}.fa-location-arrow:before{content:"\F124"}.fa-lock:before{content:"\F023"}.fa-lock-open:before{content:"\F3C1"}.fa-long-arrow-alt-down:before{content:"\F309"}.fa-long-arrow-alt-left:before{content:"\F30A"}.fa-long-arrow-alt-right:before{content:"\F30B"}.fa-long-arrow-alt-up:before{content:"\F30C"}.fa-low-vision:before{content:"\F2A8"}.fa-luggage-cart:before{content:"\F59D"}.fa-lyft:before{content:"\F3C3"}.fa-magento:before{content:"\F3C4"}.fa-magic:before{content:"\F0D0"}.fa-magnet:before{content:"\F076"}.fa-mail-bulk:before{content:"\F674"}.fa-mailchimp:before{content:"\F59E"}.fa-male:before{content:"\F183"}.fa-mandalorian:before{content:"\F50F"}.fa-map:before{content:"\F279"}.fa-map-marked:before{content:"\F59F"}.fa-map-marked-alt:before{content:"\F5A0"}.fa-map-marker:before{content:"\F041"}.fa-map-marker-alt:before{content:"\F3C5"}.fa-map-pin:before{content:"\F276"}.fa-map-signs:before{content:"\F277"}.fa-markdown:before{content:"\F60F"}.fa-marker:before{content:"\F5A1"}.fa-mars:before{content:"\F222"}.fa-mars-double:before{content:"\F227"}.fa-mars-stroke:before{content:"\F229"}.fa-mars-stroke-h:before{content:"\F22B"}.fa-mars-stroke-v:before{content:"\F22A"}.fa-mask:before{content:"\F6FA"}.fa-mastodon:before{content:"\F4F6"}.fa-maxcdn:before{content:"\F136"}.fa-mdb:before{content:"\F8CA"}.fa-medal:before{content:"\F5A2"}.fa-medapps:before{content:"\F3C6"}.fa-medium:before{content:"\F23A"}.fa-medium-m:before{content:"\F3C7"}.fa-medkit:before{content:"\F0FA"}.fa-medrt:before{content:"\F3C8"}.fa-meetup:before{content:"\F2E0"}.fa-megaport:before{content:"\F5A3"}.fa-meh:before{content:"\F11A"}.fa-meh-blank:before{content:"\F5A4"}.fa-meh-rolling-eyes:before{content:"\F5A5"}.fa-memory:before{content:"\F538"}.fa-mendeley:before{content:"\F7B3"}.fa-menorah:before{content:"\F676"}.fa-mercury:before{content:"\F223"}.fa-meteor:before{content:"\F753"}.fa-microblog:before{content:"\F91A"}.fa-microchip:before{content:"\F2DB"}.fa-microphone:before{content:"\F130"}.fa-microphone-alt:before{content:"\F3C9"}.fa-microphone-alt-slash:before{content:"\F539"}.fa-microphone-slash:before{content:"\F131"}.fa-microscope:before{content:"\F610"}.fa-microsoft:before{content:"\F3CA"}.fa-minus:before{content:"\F068"}.fa-minus-circle:before{content:"\F056"}.fa-minus-square:before{content:"\F146"}.fa-mitten:before{content:"\F7B5"}.fa-mix:before{content:"\F3CB"}.fa-mixcloud:before{content:"\F289"}.fa-mixer:before{content:"\F956"}.fa-mizuni:before{content:"\F3CC"}.fa-mobile:before{content:"\F10B"}.fa-mobile-alt:before{content:"\F3CD"}.fa-modx:before{content:"\F285"}.fa-monero:before{content:"\F3D0"}.fa-money-bill:before{content:"\F0D6"}.fa-money-bill-alt:before{content:"\F3D1"}.fa-money-bill-wave:before{content:"\F53A"}.fa-money-bill-wave-alt:before{content:"\F53B"}.fa-money-check:before{content:"\F53C"}.fa-money-check-alt:before{content:"\F53D"}.fa-monument:before{content:"\F5A6"}.fa-moon:before{content:"\F186"}.fa-mortar-pestle:before{content:"\F5A7"}.fa-mosque:before{content:"\F678"}.fa-motorcycle:before{content:"\F21C"}.fa-mountain:before{content:"\F6FC"}.fa-mouse:before{content:"\F8CC"}.fa-mouse-pointer:before{content:"\F245"}.fa-mug-hot:before{content:"\F7B6"}.fa-music:before{content:"\F001"}.fa-napster:before{content:"\F3D2"}.fa-neos:before{content:"\F612"}.fa-network-wired:before{content:"\F6FF"}.fa-neuter:before{content:"\F22C"}.fa-newspaper:before{content:"\F1EA"}.fa-nimblr:before{content:"\F5A8"}.fa-node:before{content:"\F419"}.fa-node-js:before{content:"\F3D3"}.fa-not-equal:before{content:"\F53E"}.fa-notes-medical:before{content:"\F481"}.fa-npm:before{content:"\F3D4"}.fa-ns8:before{content:"\F3D5"}.fa-nutritionix:before{content:"\F3D6"}.fa-object-group:before{content:"\F247"}.fa-object-ungroup:before{content:"\F248"}.fa-odnoklassniki:before{content:"\F263"}.fa-odnoklassniki-square:before{content:"\F264"}.fa-oil-can:before{content:"\F613"}.fa-old-republic:before{content:"\F510"}.fa-om:before{content:"\F679"}.fa-opencart:before{content:"\F23D"}.fa-openid:before{content:"\F19B"}.fa-opera:before{content:"\F26A"}.fa-optin-monster:before{content:"\F23C"}.fa-orcid:before{content:"\F8D2"}.fa-osi:before{content:"\F41A"}.fa-otter:before{content:"\F700"}.fa-outdent:before{content:"\F03B"}.fa-page4:before{content:"\F3D7"}.fa-pagelines:before{content:"\F18C"}.fa-pager:before{content:"\F815"}.fa-paint-brush:before{content:"\F1FC"}.fa-paint-roller:before{content:"\F5AA"}.fa-palette:before{content:"\F53F"}.fa-palfed:before{content:"\F3D8"}.fa-pallet:before{content:"\F482"}.fa-paper-plane:before{content:"\F1D8"}.fa-paperclip:before{content:"\F0C6"}.fa-parachute-box:before{content:"\F4CD"}.fa-paragraph:before{content:"\F1DD"}.fa-parking:before{content:"\F540"}.fa-passport:before{content:"\F5AB"}.fa-pastafarianism:before{content:"\F67B"}.fa-paste:before{content:"\F0EA"}.fa-patreon:before{content:"\F3D9"}.fa-pause:before{content:"\F04C"}.fa-pause-circle:before{content:"\F28B"}.fa-paw:before{content:"\F1B0"}.fa-paypal:before{content:"\F1ED"}.fa-peace:before{content:"\F67C"}.fa-pen:before{content:"\F304"}.fa-pen-alt:before{content:"\F305"}.fa-pen-fancy:before{content:"\F5AC"}.fa-pen-nib:before{content:"\F5AD"}.fa-pen-square:before{content:"\F14B"}.fa-pencil-alt:before{content:"\F303"}.fa-pencil-ruler:before{content:"\F5AE"}.fa-penny-arcade:before{content:"\F704"}.fa-people-carry:before{content:"\F4CE"}.fa-pepper-hot:before{content:"\F816"}.fa-percent:before{content:"\F295"}.fa-percentage:before{content:"\F541"}.fa-periscope:before{content:"\F3DA"}.fa-person-booth:before{content:"\F756"}.fa-phabricator:before{content:"\F3DB"}.fa-phoenix-framework:before{content:"\F3DC"}.fa-phoenix-squadron:before{content:"\F511"}.fa-phone:before{content:"\F095"}.fa-phone-alt:before{content:"\F879"}.fa-phone-slash:before{content:"\F3DD"}.fa-phone-square:before{content:"\F098"}.fa-phone-square-alt:before{content:"\F87B"}.fa-phone-volume:before{content:"\F2A0"}.fa-photo-video:before{content:"\F87C"}.fa-php:before{content:"\F457"}.fa-pied-piper:before{content:"\F2AE"}.fa-pied-piper-alt:before{content:"\F1A8"}.fa-pied-piper-hat:before{content:"\F4E5"}.fa-pied-piper-pp:before{content:"\F1A7"}.fa-pied-piper-square:before{content:"\F91E"}.fa-piggy-bank:before{content:"\F4D3"}.fa-pills:before{content:"\F484"}.fa-pinterest:before{content:"\F0D2"}.fa-pinterest-p:before{content:"\F231"}.fa-pinterest-square:before{content:"\F0D3"}.fa-pizza-slice:before{content:"\F818"}.fa-place-of-worship:before{content:"\F67F"}.fa-plane:before{content:"\F072"}.fa-plane-arrival:before{content:"\F5AF"}.fa-plane-departure:before{content:"\F5B0"}.fa-play:before{content:"\F04B"}.fa-play-circle:before{content:"\F144"}.fa-playstation:before{content:"\F3DF"}.fa-plug:before{content:"\F1E6"}.fa-plus:before{content:"\F067"}.fa-plus-circle:before{content:"\F055"}.fa-plus-square:before{content:"\F0FE"}.fa-podcast:before{content:"\F2CE"}.fa-poll:before{content:"\F681"}.fa-poll-h:before{content:"\F682"}.fa-poo:before{content:"\F2FE"}.fa-poo-storm:before{content:"\F75A"}.fa-poop:before{content:"\F619"}.fa-portrait:before{content:"\F3E0"}.fa-pound-sign:before{content:"\F154"}.fa-power-off:before{content:"\F011"}.fa-pray:before{content:"\F683"}.fa-praying-hands:before{content:"\F684"}.fa-prescription:before{content:"\F5B1"}.fa-prescription-bottle:before{content:"\F485"}.fa-prescription-bottle-alt:before{content:"\F486"}.fa-print:before{content:"\F02F"}.fa-procedures:before{content:"\F487"}.fa-product-hunt:before{content:"\F288"}.fa-project-diagram:before{content:"\F542"}.fa-pushed:before{content:"\F3E1"}.fa-puzzle-piece:before{content:"\F12E"}.fa-python:before{content:"\F3E2"}.fa-qq:before{content:"\F1D6"}.fa-qrcode:before{content:"\F029"}.fa-question:before{content:"\F128"}.fa-question-circle:before{content:"\F059"}.fa-quidditch:before{content:"\F458"}.fa-quinscape:before{content:"\F459"}.fa-quora:before{content:"\F2C4"}.fa-quote-left:before{content:"\F10D"}.fa-quote-right:before{content:"\F10E"}.fa-quran:before{content:"\F687"}.fa-r-project:before{content:"\F4F7"}.fa-radiation:before{content:"\F7B9"}.fa-radiation-alt:before{content:"\F7BA"}.fa-rainbow:before{content:"\F75B"}.fa-random:before{content:"\F074"}.fa-raspberry-pi:before{content:"\F7BB"}.fa-ravelry:before{content:"\F2D9"}.fa-react:before{content:"\F41B"}.fa-reacteurope:before{content:"\F75D"}.fa-readme:before{content:"\F4D5"}.fa-rebel:before{content:"\F1D0"}.fa-receipt:before{content:"\F543"}.fa-record-vinyl:before{content:"\F8D9"}.fa-recycle:before{content:"\F1B8"}.fa-red-river:before{content:"\F3E3"}.fa-reddit:before{content:"\F1A1"}.fa-reddit-alien:before{content:"\F281"}.fa-reddit-square:before{content:"\F1A2"}.fa-redhat:before{content:"\F7BC"}.fa-redo:before{content:"\F01E"}.fa-redo-alt:before{content:"\F2F9"}.fa-registered:before{content:"\F25D"}.fa-remove-format:before{content:"\F87D"}.fa-renren:before{content:"\F18B"}.fa-reply:before{content:"\F3E5"}.fa-reply-all:before{content:"\F122"}.fa-replyd:before{content:"\F3E6"}.fa-republican:before{content:"\F75E"}.fa-researchgate:before{content:"\F4F8"}.fa-resolving:before{content:"\F3E7"}.fa-restroom:before{content:"\F7BD"}.fa-retweet:before{content:"\F079"}.fa-rev:before{content:"\F5B2"}.fa-ribbon:before{content:"\F4D6"}.fa-ring:before{content:"\F70B"}.fa-road:before{content:"\F018"}.fa-robot:before{content:"\F544"}.fa-rocket:before{content:"\F135"}.fa-rocketchat:before{content:"\F3E8"}.fa-rockrms:before{content:"\F3E9"}.fa-route:before{content:"\F4D7"}.fa-rss:before{content:"\F09E"}.fa-rss-square:before{content:"\F143"}.fa-ruble-sign:before{content:"\F158"}.fa-ruler:before{content:"\F545"}.fa-ruler-combined:before{content:"\F546"}.fa-ruler-horizontal:before{content:"\F547"}.fa-ruler-vertical:before{content:"\F548"}.fa-running:before{content:"\F70C"}.fa-rupee-sign:before{content:"\F156"}.fa-sad-cry:before{content:"\F5B3"}.fa-sad-tear:before{content:"\F5B4"}.fa-safari:before{content:"\F267"}.fa-salesforce:before{content:"\F83B"}.fa-sass:before{content:"\F41E"}.fa-satellite:before{content:"\F7BF"}.fa-satellite-dish:before{content:"\F7C0"}.fa-save:before{content:"\F0C7"}.fa-schlix:before{content:"\F3EA"}.fa-school:before{content:"\F549"}.fa-screwdriver:before{content:"\F54A"}.fa-scribd:before{content:"\F28A"}.fa-scroll:before{content:"\F70E"}.fa-sd-card:before{content:"\F7C2"}.fa-search:before{content:"\F002"}.fa-search-dollar:before{content:"\F688"}.fa-search-location:before{content:"\F689"}.fa-search-minus:before{content:"\F010"}.fa-search-plus:before{content:"\F00E"}.fa-searchengin:before{content:"\F3EB"}.fa-seedling:before{content:"\F4D8"}.fa-sellcast:before{content:"\F2DA"}.fa-sellsy:before{content:"\F213"}.fa-server:before{content:"\F233"}.fa-servicestack:before{content:"\F3EC"}.fa-shapes:before{content:"\F61F"}.fa-share:before{content:"\F064"}.fa-share-alt:before{content:"\F1E0"}.fa-share-alt-square:before{content:"\F1E1"}.fa-share-square:before{content:"\F14D"}.fa-shekel-sign:before{content:"\F20B"}.fa-shield-alt:before{content:"\F3ED"}.fa-ship:before{content:"\F21A"}.fa-shipping-fast:before{content:"\F48B"}.fa-shirtsinbulk:before{content:"\F214"}.fa-shoe-prints:before{content:"\F54B"}.fa-shopify:before{content:"\F957"}.fa-shopping-bag:before{content:"\F290"}.fa-shopping-basket:before{content:"\F291"}.fa-shopping-cart:before{content:"\F07A"}.fa-shopware:before{content:"\F5B5"}.fa-shower:before{content:"\F2CC"}.fa-shuttle-van:before{content:"\F5B6"}.fa-sign:before{content:"\F4D9"}.fa-sign-in-alt:before{content:"\F2F6"}.fa-sign-language:before{content:"\F2A7"}.fa-sign-out-alt:before{content:"\F2F5"}.fa-signal:before{content:"\F012"}.fa-signature:before{content:"\F5B7"}.fa-sim-card:before{content:"\F7C4"}.fa-simplybuilt:before{content:"\F215"}.fa-sistrix:before{content:"\F3EE"}.fa-sitemap:before{content:"\F0E8"}.fa-sith:before{content:"\F512"}.fa-skating:before{content:"\F7C5"}.fa-sketch:before{content:"\F7C6"}.fa-skiing:before{content:"\F7C9"}.fa-skiing-nordic:before{content:"\F7CA"}.fa-skull:before{content:"\F54C"}.fa-skull-crossbones:before{content:"\F714"}.fa-skyatlas:before{content:"\F216"}.fa-skype:before{content:"\F17E"}.fa-slack:before{content:"\F198"}.fa-slack-hash:before{content:"\F3EF"}.fa-slash:before{content:"\F715"}.fa-sleigh:before{content:"\F7CC"}.fa-sliders-h:before{content:"\F1DE"}.fa-slideshare:before{content:"\F1E7"}.fa-smile:before{content:"\F118"}.fa-smile-beam:before{content:"\F5B8"}.fa-smile-wink:before{content:"\F4DA"}.fa-smog:before{content:"\F75F"}.fa-smoking:before{content:"\F48D"}.fa-smoking-ban:before{content:"\F54D"}.fa-sms:before{content:"\F7CD"}.fa-snapchat:before{content:"\F2AB"}.fa-snapchat-ghost:before{content:"\F2AC"}.fa-snapchat-square:before{content:"\F2AD"}.fa-snowboarding:before{content:"\F7CE"}.fa-snowflake:before{content:"\F2DC"}.fa-snowman:before{content:"\F7D0"}.fa-snowplow:before{content:"\F7D2"}.fa-socks:before{content:"\F696"}.fa-solar-panel:before{content:"\F5BA"}.fa-sort:before{content:"\F0DC"}.fa-sort-alpha-down:before{content:"\F15D"}.fa-sort-alpha-down-alt:before{content:"\F881"}.fa-sort-alpha-up:before{content:"\F15E"}.fa-sort-alpha-up-alt:before{content:"\F882"}.fa-sort-amount-down:before{content:"\F160"}.fa-sort-amount-down-alt:before{content:"\F884"}.fa-sort-amount-up:before{content:"\F161"}.fa-sort-amount-up-alt:before{content:"\F885"}.fa-sort-down:before{content:"\F0DD"}.fa-sort-numeric-down:before{content:"\F162"}.fa-sort-numeric-down-alt:before{content:"\F886"}.fa-sort-numeric-up:before{content:"\F163"}.fa-sort-numeric-up-alt:before{content:"\F887"}.fa-sort-up:before{content:"\F0DE"}.fa-soundcloud:before{content:"\F1BE"}.fa-sourcetree:before{content:"\F7D3"}.fa-spa:before{content:"\F5BB"}.fa-space-shuttle:before{content:"\F197"}.fa-speakap:before{content:"\F3F3"}.fa-speaker-deck:before{content:"\F83C"}.fa-spell-check:before{content:"\F891"}.fa-spider:before{content:"\F717"}.fa-spinner:before{content:"\F110"}.fa-splotch:before{content:"\F5BC"}.fa-spotify:before{content:"\F1BC"}.fa-spray-can:before{content:"\F5BD"}.fa-square:before{content:"\F0C8"}.fa-square-full:before{content:"\F45C"}.fa-square-root-alt:before{content:"\F698"}.fa-squarespace:before{content:"\F5BE"}.fa-stack-exchange:before{content:"\F18D"}.fa-stack-overflow:before{content:"\F16C"}.fa-stackpath:before{content:"\F842"}.fa-stamp:before{content:"\F5BF"}.fa-star:before{content:"\F005"}.fa-star-and-crescent:before{content:"\F699"}.fa-star-half:before{content:"\F089"}.fa-star-half-alt:before{content:"\F5C0"}.fa-star-of-david:before{content:"\F69A"}.fa-star-of-life:before{content:"\F621"}.fa-staylinked:before{content:"\F3F5"}.fa-steam:before{content:"\F1B6"}.fa-steam-square:before{content:"\F1B7"}.fa-steam-symbol:before{content:"\F3F6"}.fa-step-backward:before{content:"\F048"}.fa-step-forward:before{content:"\F051"}.fa-stethoscope:before{content:"\F0F1"}.fa-sticker-mule:before{content:"\F3F7"}.fa-sticky-note:before{content:"\F249"}.fa-stop:before{content:"\F04D"}.fa-stop-circle:before{content:"\F28D"}.fa-stopwatch:before{content:"\F2F2"}.fa-store:before{content:"\F54E"}.fa-store-alt:before{content:"\F54F"}.fa-strava:before{content:"\F428"}.fa-stream:before{content:"\F550"}.fa-street-view:before{content:"\F21D"}.fa-strikethrough:before{content:"\F0CC"}.fa-stripe:before{content:"\F429"}.fa-stripe-s:before{content:"\F42A"}.fa-stroopwafel:before{content:"\F551"}.fa-studiovinari:before{content:"\F3F8"}.fa-stumbleupon:before{content:"\F1A4"}.fa-stumbleupon-circle:before{content:"\F1A3"}.fa-subscript:before{content:"\F12C"}.fa-subway:before{content:"\F239"}.fa-suitcase:before{content:"\F0F2"}.fa-suitcase-rolling:before{content:"\F5C1"}.fa-sun:before{content:"\F185"}.fa-superpowers:before{content:"\F2DD"}.fa-superscript:before{content:"\F12B"}.fa-supple:before{content:"\F3F9"}.fa-surprise:before{content:"\F5C2"}.fa-suse:before{content:"\F7D6"}.fa-swatchbook:before{content:"\F5C3"}.fa-swift:before{content:"\F8E1"}.fa-swimmer:before{content:"\F5C4"}.fa-swimming-pool:before{content:"\F5C5"}.fa-symfony:before{content:"\F83D"}.fa-synagogue:before{content:"\F69B"}.fa-sync:before{content:"\F021"}.fa-sync-alt:before{content:"\F2F1"}.fa-syringe:before{content:"\F48E"}.fa-table:before{content:"\F0CE"}.fa-table-tennis:before{content:"\F45D"}.fa-tablet:before{content:"\F10A"}.fa-tablet-alt:before{content:"\F3FA"}.fa-tablets:before{content:"\F490"}.fa-tachometer-alt:before{content:"\F3FD"}.fa-tag:before{content:"\F02B"}.fa-tags:before{content:"\F02C"}.fa-tape:before{content:"\F4DB"}.fa-tasks:before{content:"\F0AE"}.fa-taxi:before{content:"\F1BA"}.fa-teamspeak:before{content:"\F4F9"}.fa-teeth:before{content:"\F62E"}.fa-teeth-open:before{content:"\F62F"}.fa-telegram:before{content:"\F2C6"}.fa-telegram-plane:before{content:"\F3FE"}.fa-temperature-high:before{content:"\F769"}.fa-temperature-low:before{content:"\F76B"}.fa-tencent-weibo:before{content:"\F1D5"}.fa-tenge:before{content:"\F7D7"}.fa-terminal:before{content:"\F120"}.fa-text-height:before{content:"\F034"}.fa-text-width:before{content:"\F035"}.fa-th:before{content:"\F00A"}.fa-th-large:before{content:"\F009"}.fa-th-list:before{content:"\F00B"}.fa-the-red-yeti:before{content:"\F69D"}.fa-theater-masks:before{content:"\F630"}.fa-themeco:before{content:"\F5C6"}.fa-themeisle:before{content:"\F2B2"}.fa-thermometer:before{content:"\F491"}.fa-thermometer-empty:before{content:"\F2CB"}.fa-thermometer-full:before{content:"\F2C7"}.fa-thermometer-half:before{content:"\F2C9"}.fa-thermometer-quarter:before{content:"\F2CA"}.fa-thermometer-three-quarters:before{content:"\F2C8"}.fa-think-peaks:before{content:"\F731"}.fa-thumbs-down:before{content:"\F165"}.fa-thumbs-up:before{content:"\F164"}.fa-thumbtack:before{content:"\F08D"}.fa-ticket-alt:before{content:"\F3FF"}.fa-times:before{content:"\F00D"}.fa-times-circle:before{content:"\F057"}.fa-tint:before{content:"\F043"}.fa-tint-slash:before{content:"\F5C7"}.fa-tired:before{content:"\F5C8"}.fa-toggle-off:before{content:"\F204"}.fa-toggle-on:before{content:"\F205"}.fa-toilet:before{content:"\F7D8"}.fa-toilet-paper:before{content:"\F71E"}.fa-toolbox:before{content:"\F552"}.fa-tools:before{content:"\F7D9"}.fa-tooth:before{content:"\F5C9"}.fa-torah:before{content:"\F6A0"}.fa-torii-gate:before{content:"\F6A1"}.fa-tractor:before{content:"\F722"}.fa-trade-federation:before{content:"\F513"}.fa-trademark:before{content:"\F25C"}.fa-traffic-light:before{content:"\F637"}.fa-trailer:before{content:"\F941"}.fa-train:before{content:"\F238"}.fa-tram:before{content:"\F7DA"}.fa-transgender:before{content:"\F224"}.fa-transgender-alt:before{content:"\F225"}.fa-trash:before{content:"\F1F8"}.fa-trash-alt:before{content:"\F2ED"}.fa-trash-restore:before{content:"\F829"}.fa-trash-restore-alt:before{content:"\F82A"}.fa-tree:before{content:"\F1BB"}.fa-trello:before{content:"\F181"}.fa-tripadvisor:before{content:"\F262"}.fa-trophy:before{content:"\F091"}.fa-truck:before{content:"\F0D1"}.fa-truck-loading:before{content:"\F4DE"}.fa-truck-monster:before{content:"\F63B"}.fa-truck-moving:before{content:"\F4DF"}.fa-truck-pickup:before{content:"\F63C"}.fa-tshirt:before{content:"\F553"}.fa-tty:before{content:"\F1E4"}.fa-tumblr:before{content:"\F173"}.fa-tumblr-square:before{content:"\F174"}.fa-tv:before{content:"\F26C"}.fa-twitch:before{content:"\F1E8"}.fa-twitter:before{content:"\F099"}.fa-twitter-square:before{content:"\F081"}.fa-typo3:before{content:"\F42B"}.fa-uber:before{content:"\F402"}.fa-ubuntu:before{content:"\F7DF"}.fa-uikit:before{content:"\F403"}.fa-umbraco:before{content:"\F8E8"}.fa-umbrella:before{content:"\F0E9"}.fa-umbrella-beach:before{content:"\F5CA"}.fa-underline:before{content:"\F0CD"}.fa-undo:before{content:"\F0E2"}.fa-undo-alt:before{content:"\F2EA"}.fa-uniregistry:before{content:"\F404"}.fa-unity:before{content:"\F949"}.fa-universal-access:before{content:"\F29A"}.fa-university:before{content:"\F19C"}.fa-unlink:before{content:"\F127"}.fa-unlock:before{content:"\F09C"}.fa-unlock-alt:before{content:"\F13E"}.fa-untappd:before{content:"\F405"}.fa-upload:before{content:"\F093"}.fa-ups:before{content:"\F7E0"}.fa-usb:before{content:"\F287"}.fa-user:before{content:"\F007"}.fa-user-alt:before{content:"\F406"}.fa-user-alt-slash:before{content:"\F4FA"}.fa-user-astronaut:before{content:"\F4FB"}.fa-user-check:before{content:"\F4FC"}.fa-user-circle:before{content:"\F2BD"}.fa-user-clock:before{content:"\F4FD"}.fa-user-cog:before{content:"\F4FE"}.fa-user-edit:before{content:"\F4FF"}.fa-user-friends:before{content:"\F500"}.fa-user-graduate:before{content:"\F501"}.fa-user-injured:before{content:"\F728"}.fa-user-lock:before{content:"\F502"}.fa-user-md:before{content:"\F0F0"}.fa-user-minus:before{content:"\F503"}.fa-user-ninja:before{content:"\F504"}.fa-user-nurse:before{content:"\F82F"}.fa-user-plus:before{content:"\F234"}.fa-user-secret:before{content:"\F21B"}.fa-user-shield:before{content:"\F505"}.fa-user-slash:before{content:"\F506"}.fa-user-tag:before{content:"\F507"}.fa-user-tie:before{content:"\F508"}.fa-user-times:before{content:"\F235"}.fa-users:before{content:"\F0C0"}.fa-users-cog:before{content:"\F509"}.fa-usps:before{content:"\F7E1"}.fa-ussunnah:before{content:"\F407"}.fa-utensil-spoon:before{content:"\F2E5"}.fa-utensils:before{content:"\F2E7"}.fa-vaadin:before{content:"\F408"}.fa-vector-square:before{content:"\F5CB"}.fa-venus:before{content:"\F221"}.fa-venus-double:before{content:"\F226"}.fa-venus-mars:before{content:"\F228"}.fa-viacoin:before{content:"\F237"}.fa-viadeo:before{content:"\F2A9"}.fa-viadeo-square:before{content:"\F2AA"}.fa-vial:before{content:"\F492"}.fa-vials:before{content:"\F493"}.fa-viber:before{content:"\F409"}.fa-video:before{content:"\F03D"}.fa-video-slash:before{content:"\F4E2"}.fa-vihara:before{content:"\F6A7"}.fa-vimeo:before{content:"\F40A"}.fa-vimeo-square:before{content:"\F194"}.fa-vimeo-v:before{content:"\F27D"}.fa-vine:before{content:"\F1CA"}.fa-vk:before{content:"\F189"}.fa-vnv:before{content:"\F40B"}.fa-voicemail:before{content:"\F897"}.fa-volleyball-ball:before{content:"\F45F"}.fa-volume-down:before{content:"\F027"}.fa-volume-mute:before{content:"\F6A9"}.fa-volume-off:before{content:"\F026"}.fa-volume-up:before{content:"\F028"}.fa-vote-yea:before{content:"\F772"}.fa-vr-cardboard:before{content:"\F729"}.fa-vuejs:before{content:"\F41F"}.fa-walking:before{content:"\F554"}.fa-wallet:before{content:"\F555"}.fa-warehouse:before{content:"\F494"}.fa-water:before{content:"\F773"}.fa-wave-square:before{content:"\F83E"}.fa-waze:before{content:"\F83F"}.fa-weebly:before{content:"\F5CC"}.fa-weibo:before{content:"\F18A"}.fa-weight:before{content:"\F496"}.fa-weight-hanging:before{content:"\F5CD"}.fa-weixin:before{content:"\F1D7"}.fa-whatsapp:before{content:"\F232"}.fa-whatsapp-square:before{content:"\F40C"}.fa-wheelchair:before{content:"\F193"}.fa-whmcs:before{content:"\F40D"}.fa-wifi:before{content:"\F1EB"}.fa-wikipedia-w:before{content:"\F266"}.fa-wind:before{content:"\F72E"}.fa-window-close:before{content:"\F410"}.fa-window-maximize:before{content:"\F2D0"}.fa-window-minimize:before{content:"\F2D1"}.fa-window-restore:before{content:"\F2D2"}.fa-windows:before{content:"\F17A"}.fa-wine-bottle:before{content:"\F72F"}.fa-wine-glass:before{content:"\F4E3"}.fa-wine-glass-alt:before{content:"\F5CE"}.fa-wix:before{content:"\F5CF"}.fa-wizards-of-the-coast:before{content:"\F730"}.fa-wolf-pack-battalion:before{content:"\F514"}.fa-won-sign:before{content:"\F159"}.fa-wordpress:before{content:"\F19A"}.fa-wordpress-simple:before{content:"\F411"}.fa-wpbeginner:before{content:"\F297"}.fa-wpexplorer:before{content:"\F2DE"}.fa-wpforms:before{content:"\F298"}.fa-wpressr:before{content:"\F3E4"}.fa-wrench:before{content:"\F0AD"}.fa-x-ray:before{content:"\F497"}.fa-xbox:before{content:"\F412"}.fa-xing:before{content:"\F168"}.fa-xing-square:before{content:"\F169"}.fa-y-combinator:before{content:"\F23B"}.fa-yahoo:before{content:"\F19E"}.fa-yammer:before{content:"\F840"}.fa-yandex:before{content:"\F413"}.fa-yandex-international:before{content:"\F414"}.fa-yarn:before{content:"\F7E3"}.fa-yelp:before{content:"\F1E9"}.fa-yen-sign:before{content:"\F157"}.fa-yin-yang:before{content:"\F6AD"}.fa-yoast:before{content:"\F2B1"}.fa-youtube:before{content:"\F167"}.fa-youtube-square:before{content:"\F431"}.fa-zhihu:before{content:"\F63F"}.sr-only{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sr-only-focusable:active,.sr-only-focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}@font-face{font-family:Font Awesome\ 5 Brands;font-style:normal;font-weight:400;font-display:auto;src:url(/openj9/static/fa-brands-400-57dcda6f368ea90179f75cbdae96c263.eot);src:url(/openj9/static/fa-brands-400-57dcda6f368ea90179f75cbdae96c263.eot?#iefix) format("embedded-opentype"),url(/openj9/static/fa-brands-400-067595ad77ecc0db9c81c8905a7eef32.woff2) format("woff2"),url(/openj9/static/fa-brands-400-b564da88bbf0c4aa446fa19653713cd1.woff) format("woff"),url(/openj9/static/fa-brands-400-9ec698d1a597bff5df337094b71ddaaf.ttf) format("truetype"),url(/openj9/static/fa-brands-400-9d67fa1429375bd2a899a17eb77d0342.svg#fontawesome) format("svg")}.fab{font-family:Font Awesome\ 5 Brands}@font-face{font-family:Font Awesome\ 5 Free;font-style:normal;font-weight:400;font-display:auto;src:url(/openj9/static/fa-regular-400-3351f435b3c9037fd88aeb04dc1e43bc.eot);src:url(/openj9/static/fa-regular-400-3351f435b3c9037fd88aeb04dc1e43bc.eot?#iefix) format("embedded-opentype"),url(/openj9/static/fa-regular-400-4165c2688309cbfb1b877caf8f75afb5.woff2) format("woff2"),url(/openj9/static/fa-regular-400-73cf49a2232c06c920b7a34e36bfb58c.woff) format("woff"),url(/openj9/static/fa-regular-400-a0e3ac82940c1998c5977fd4bc1f5ef6.ttf) format("truetype"),url(/openj9/static/fa-regular-400-5d0861781aeef6c82fda3a3076954a1b.svg#fontawesome) format("svg")}.fab,.far{font-weight:400}@font-face{font-family:Font Awesome\ 5 Free;font-style:normal;font-weight:900;font-display:auto;src:url(/openj9/static/fa-solid-900-89e02bae13c9131c7468b1e729339ac1.eot);src:url(/openj9/static/fa-solid-900-89e02bae13c9131c7468b1e729339ac1.eot?#iefix) format("embedded-opentype"),url(/openj9/static/fa-solid-900-55eb2a60e8181f0e68b558c991973bf0.woff2) format("woff2"),url(/openj9/static/fa-solid-900-cdfec5cf5e9840889790bcf2c4042583.woff) format("woff"),url(/openj9/static/fa-solid-900-75f38a159982b6bd1704891332d95fa7.ttf) format("truetype"),url(/openj9/static/fa-solid-900-0724bb8b89ab6b8b9b7df917b17be0b7.svg#fontawesome) format("svg")}.fa,.far,.fas{font-family:Font Awesome\ 5 Free}.fa,.fas{font-weight:900}</style><meta name="generator" content="Gatsby 2.19.7"/><link rel="icon" href="/openj9/favicon-32x32.png?v=521b6ab03638f6a52fffc5f7bf4c617e"/><link rel="manifest" href="/openj9/manifest.webmanifest"/><link rel="apple-touch-icon" sizes="48x48" href="/openj9/icons/icon-48x48.png?v=521b6ab03638f6a52fffc5f7bf4c617e"/><link rel="apple-touch-icon" sizes="72x72" href="/openj9/icons/icon-72x72.png?v=521b6ab03638f6a52fffc5f7bf4c617e"/><link rel="apple-touch-icon" sizes="96x96" href="/openj9/icons/icon-96x96.png?v=521b6ab03638f6a52fffc5f7bf4c617e"/><link rel="apple-touch-icon" sizes="144x144" href="/openj9/icons/icon-144x144.png?v=521b6ab03638f6a52fffc5f7bf4c617e"/><link rel="apple-touch-icon" sizes="192x192" href="/openj9/icons/icon-192x192.png?v=521b6ab03638f6a52fffc5f7bf4c617e"/><link rel="apple-touch-icon" sizes="256x256" href="/openj9/icons/icon-256x256.png?v=521b6ab03638f6a52fffc5f7bf4c617e"/><link rel="apple-touch-icon" sizes="384x384" href="/openj9/icons/icon-384x384.png?v=521b6ab03638f6a52fffc5f7bf4c617e"/><link rel="apple-touch-icon" sizes="512x512" href="/openj9/icons/icon-512x512.png?v=521b6ab03638f6a52fffc5f7bf4c617e"/><link rel="preconnect dns-prefetch" href="https://www.google-analytics.com"/><link as="script" rel="preload" href="/openj9/component---src-pages-index-js-4f88f89ee8348cf9654f.js"/><link as="script" rel="preload" href="/openj9/commons-b35008cb74c6abd7ace8.js"/><link as="script" rel="preload" href="/openj9/app-2da2270a07d62743bcd4.js"/><link as="script" rel="preload" href="/openj9/styles-cc4082ebb0cb6903d934.js"/><link as="script" rel="preload" href="/openj9/webpack-runtime-4324011276ab16472ff8.js"/><link as="fetch" rel="preload" href="/openj9/page-data/index/page-data.json" crossorigin="anonymous"/></head><body><div id="___gatsby"><div style="outline:none" tabindex="-1" role="group" id="gatsby-focus-wrapper"><style data-emotion-css="t923zi">body{color:text;background-color:var(--theme-ui-colors-background,#FFFFFF);}</style><style data-emotion-css="1gb9wyy">*{box-sizing:border-box;}body{margin:0;font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.5;font-weight:400;}</style><style data-emotion-css="1xgro3h">*{padding:0;margin:0;}</style><style data-emotion-css="wcfgnq">.css-wcfgnq{display:none;background-color:#00000000;position:absolute;width:100%;color:var(--theme-ui-colors-lightText,#d8d8d8);padding-left:40px;padding-right:40px;padding-top:32px;padding-bottom:32px;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}@media screen and (min-width:35rem){.css-wcfgnq{display:none;}}@media screen and (min-width:62.5rem){.css-wcfgnq{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}}@media screen and (min-width:85rem){.css-wcfgnq{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}}</style><header class="css-wcfgnq"><style data-emotion-css="7jnxbv">.css-7jnxbv{-webkit-flex:1;-ms-flex:1;flex:1;opacity:0;pointer-events:none;}</style><div class="css-7jnxbv"><a aria-current="page" class="" href="/openj9/"><img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNzlweCIgaGVpZ2h0PSIzM3B4IiB2aWV3Qm94PSIwIDAgNzkgMzMiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5Mb2dvPC90aXRsZT4KICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPgogICAgPGcgaWQ9IlBhZ2UtMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9IkxvZ28iIGZpbGwtcnVsZT0ibm9uemVybyI+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMC4wNDUyMzE4LDE5LjQ2MTIzMzcgQzkuMjQwNjc1MjUsMjAuNjk4NDMyOCA4LjEyNjE5NTA0LDIxLjMxNjY4NzggNi43MDA3Nzc4OSwyMS4zMTY2ODc4IEM1LjMxNTQ1ODI5LDIxLjMxNjY4NzggNC4yMDg2NTAxNywyMC43MTkxMTAzIDMuMzgwMjA4NzgsMTkuNTIzODE3NCBDMi41NTIyMDE2NiwxOC4zMjgyNDg5IDIuMTM4MDUzMzUsMTYuNzc4NDA3MSAyLjEzODA1MzM1LDE0Ljg3MzMyNzMgQzIuMTM4MDUzMzUsMTIuOTIyNzU3MSAyLjU0ODE0ODQ4LDExLjM0Mzk2NyAzLjM2ODMzODc1LDEwLjEzNzIzMjYgQzQuMTg4NjczNzgsOC45MzA2MzYxMiA1LjI5NTE5MjM4LDguMzI2OTkzMjQgNi42ODg3NjMxLDguMzI2OTkzMjQgQzguMDY2NTU1MzcsOC4zMjY5OTMyNCA5LjE3MTE5MjE0LDguODg1MjgzNjUgMTAuMDAzMzk3MiwxMC4wMDA0ODYgQzEwLjgzNTYwMjMsMTEuMTE2Mzc3NSAxMS4yNTE3NzcyLDEyLjY3NjI4MjIgMTEuMjUxNzc3MiwxNC42Nzk2NDg4IEMxMS4yNTE3NzcyLDE2LjYzMDM1NjggMTAuODQ5NDk4OSwxOC4yMjQxNzI1IDEwLjA0NTIzMTgsMTkuNDYxMjMzNyBNNi43MTI3OTI2OCw2LjczNDY5Mzg4IEM0LjY5MDExMDI1LDYuNzM0NjkzODggMy4wNjU2NTI5Myw3LjUwMTQxMjcgMS44MzkyNzU5NSw5LjAzNDAyMzI0IEMwLjYxMzE4ODQ4OSwxMC41NjY3NzE2IDAsMTIuNTA5NDg0NCAwLDE0Ljg2MTg4NTggQzAsMTcuMTE1NzI0OCAwLjU4NTM5NTI0MywxOS4wMTg1OTkxIDEuNzU2MDQwOTcsMjAuNTcwMDk1IEMyLjkyNjU0MTk1LDIyLjEyMjAwNDQgNC41NTg4MTYxMiwyMi44OTc5NTkyIDYuNjUzMDA4MjUsMjIuODk3OTU5MiBDOC43NzkxOTE1NywyMi44OTc5NTkyIDEwLjQzMzQ2ODcsMjIuMDgwMDk4MiAxMS42MTYyNzQsMjAuNDQ1MDY1NSBDMTIuNzk4NTAwMiwxOC44MDk3NTcxIDEzLjM4OTgzMDUsMTYuODkxNDQzNyAxMy4zODk4MzA1LDE0LjY5MTIyODEgQzEzLjM4OTgzMDUsMTIuMzk5NjE4MyAxMi43ODA1NTA0LDEwLjUwMDQ2NiAxMS41NjIyNzk4LDguOTkzOTA5MDQgQzEwLjM0Mzg2NDUsNy40ODgwNDEzIDguNzI3MzY4NzQsNi43MzQ2OTM4OCA2LjcxMjc5MjY4LDYuNzM0NjkzODgiIGlkPSJTaGFwZSIgZmlsbD0iIzVEQTdBMyI+PC9wYXRoPgogICAgICAgICAgICA8cGF0aCBkPSJNMjIuOTc0MzgxNywyMS4zNjc1NDcyIEMyMi4zMTQxOTk5LDIyLjA3MDg5MDkgMjEuNTU1MzY4NiwyMi40MjMxMzExIDIwLjY5OTU0OTUsMjIuNDIzMTMxMSBDMTkuOTYwMDU1MywyMi40MjMxMzExIDE5LjI1MDkyNjQsMjIuMTMwOTk0OCAxOC41Njk3NDU3LDIxLjU0NjU4MDEgQzE3Ljg4ODI2MjksMjAuOTYzMDE3OSAxNy41MTMzMDM4LDIwLjIyMzAxNTEgMTcuMzYyMjMyNSwxOS4zMjc5OTI0IEwxNy4zNjIyMzI1LDE1Ljk4NjA0NCBDMTcuNjY0Mzc1MiwxNS4xNzMxNDkxIDE3Ljk2OTM4ODIsMTQuNDgxNDU2OCAxOC41ODg0Nzg2LDEzLjkxMDk2NjggQzE5LjIwNzU2ODksMTMuMzQwNDc2OSAxOS45MDY3MjcxLDEzLjA1NTE2MDkgMjAuNjg3OTE3LDEzLjA1NTE2MDkgQzIxLjY3NjgzLDEzLjA1NTE2MDkgMjIuNDcwNDA3NywxMy40NTk2OTAxIDIzLjA2ODgwMTMsMTQuMjY4NjA2NSBDMjMuNjY2ODkyNywxNS4wNzc1MjI4IDIzLjk2NjAxNCwxNi4yMjg0NDg5IDIzLjk2NjAxNCwxNy43MjE1MjY5IEMyMy45NjYwMTQsMTkuNDQ4OTEwNyAyMy42MzUxNjc3LDIwLjY2NDYyOTcgMjIuOTc0MzgxNywyMS4zNjc1NDcyIE0yMS4xNjI3MzQyLDExLjQ0ODk3OTYgQzE5LjQwMzM1NzQsMTEuNDQ4OTc5NiAxOC4xMTc1ODkyLDEyLjMyNDUzNiAxNy4yMTExNjEyLDE0LjA3NDc5NjIgTDE3LjIxMTE2MTIsMTEuNjk4MjA0OCBMMTUuMzk4MzA1MSwxMS42OTgyMDQ4IEwxNS4zOTgzMDUxLDI3LjYxMjI0NDkgTDE3LjM2MjIzMjUsMjcuNjEyMjQ0OSBMMTcuMzYyMjMyNSwyMS44MjQ5MzM3IEMxOC4yNjg2NjA1LDIzLjIzOTQzNjEgMTkuNTA4OTU2MiwyMy45NDcwNDI1IDIxLjA4NzY1MTcsMjMuOTQ3MDQyNSBDMjIuNTU4OTM1NSwyMy45NDcwNDI1IDIzLjc2MjgyMywyMy4zNzk2Nzg2IDI0LjcwMjAzMzUsMjIuMjQ1NTE5MSBDMjUuNjQwNzkwOCwyMS4xMTA3OTEyIDI2LjExMDE2OTUsMTkuNTc3NTAxOCAyNi4xMTAxNjk1LDE3LjY0NTM2NjkgQzI2LjExMDE2OTUsMTUuODUzNDc0NCAyNS42NjI5OTgzLDE0LjM3MjkwMDMgMjQuNzUwNTI3NCwxMy4yMDMzNjA0IEMyMy44Mzc2MDMzLDEyLjAzMzY3ODUgMjIuNjQ4MDY3NiwxMS40NDg5Nzk2IDIxLjE2MjczNDIsMTEuNDQ4OTc5NiIgaWQ9IlNoYXBlIiBmaWxsPSIjNURBN0EzIj48L3BhdGg+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMC4yNjM1ODc2LDE2LjM2MzMzNjcgQzMwLjM0MTcwNzYsMTUuMjU4OTg2OCAzMC43MDEzMTY2LDE0LjQwODM2MTMgMzEuMzQxNzAwNiwxMy43NzA0NjExIEMzMS45ODE2NTYxLDEzLjEzMjQyMyAzMi43NjE0Mjc5LDEyLjgwNDAxNjkgMzMuNjgwNzMwMiwxMi44MDQwMTY5IEMzNC4zNjQxMDE2LDEyLjgwNDAxNjkgMzQuOTQ5MDczMiwxMi45NzU3NDMzIDM1LjQzNjUwMiwxMy4zMjkxMzUzIEMzNS45MjM1MDIzLDEzLjY4MTk3NTEgMzYuMjY5NDAxLDE0LjEyNTc4NTcgMzYuNDczNDg0MSwxNC42MjcwMjI1IEMzNi42NzgxMzg1LDE1LjEyODEyMTMgMzYuNzg3NTM1MSwxNS42NzMxMTggMzYuODAzMzg3NiwxNi4zNjMzMzY3IEwzMC4yNjM1ODc2LDE2LjM2MzMzNjcgWiBNMzcuMzc1MjIwMiwxMy4wMzA2ODQ4IEMzNi40MjgzNTQ1LDExLjk5MDI0OTEgMzUuMTc3NDM1LDExLjQ0ODk3OTYgMzMuNjIxNzQ3NSwxMS40NDg5Nzk2IEMzMi4wNDI5MjM5LDExLjQ0ODk3OTYgMzAuNzMwNTkzOCwxMi4wMDI1MzUgMjkuNjg2MDQyNCwxMy4xMzE0NTY3IEMyOC42NDEyMDU0LDE0LjI1OTgyNjIgMjguMTE4NjQ0MSwxNS43MzQ5NjE2IDI4LjExODY0NDEsMTcuNTY2OTQwMSBDMjguMTE4NjQ0MSwxOS4zNjA4MTg0IDI4LjYyMTA2ODQsMjAuODA3Mzc4OCAyOS42MjY5MTY4LDIxLjkxMzM4NTIgQzMwLjYzMjQ3OTYsMjMuMDE5OTQzOCAzMS45NDg1MjMsMjMuNTcxNDI4NiAzMy41NzQ5MDQsMjMuNTcxNDI4NiBDMzQuODA4MjU3MywyMy41NzE0Mjg2IDM1Ljg4MDIyOTIsMjMuMjQ4OTU4NCAzNi43OTE1MzM5LDIyLjYwNDcwODMgQzM3LjcwMzEyNDIsMjEuOTYwNzM0MiAzOC4zMTU4MDIsMjEuMTQ3MzgwNSAzOC42MzAxMzg2LDIwLjE2NDA5NSBMMzYuOTA5OTI3OCwxOS44MjI3MTI4IEMzNi4yODg5NjY3LDIxLjMzMzQ2MzUgMzUuMjIwNTY1MiwyMi4wODkyNTI5IDMzLjcwNDI5NDcsMjIuMDg5MjUyOSBDMzIuODYzNjgzNywyMi4wODkyNTI5IDMyLjA2NjM0NTYsMjEuODI4MDc0MiAzMS4zMTIyODA3LDIxLjIyMDY4MTcgQzMwLjU1ODA3MjksMjAuNjEzMDEzMiAzMC4xODA3NTQ3LDE5LjQwMDI5OSAzMC4xODA3NTQ3LDE3Ljc0Mzc3NDEgTDM4LjgzMDUwODUsMTcuNzQzNzc0MSBDMzguODA2OTQzOSwxNS41MzUwNzQzIDM4LjMyMTgwMDIsMTQuMDcwODQ0MyAzNy4zNzUyMjAyLDEzLjAzMDY4NDggTDM3LjM3NTIyMDIsMTMuMDMwNjg0OCBaIiBpZD0iU2hhcGUiIGZpbGw9IiM1REE3QTMiPjwvcGF0aD4KICAgICAgICAgICAgPHBhdGggZD0iTTQ4LjQzNjA2MzksMTIuMTMxMzMxIEM0Ny43NjA0NDM5LDExLjY3NjU3MTQgNDYuOTE5MzU2NiwxMS40NDg5Nzk2IDQ1Ljk1ODg0MjIsMTEuNDQ4OTc5NiBDNDQuMjkzMDQ0MywxMS40NDg5Nzk2IDQyLjk1MDQ1NjMsMTIuMjgxMTc0IDQxLjg2ODk3LDEzLjk0NTEzODggTDQxLjg2ODk3LDExLjY5NzA2ODggTDQwLjE2OTQ5MTUsMTEuNjk3MDY4OCBMNDAuMTY5NDkxNSwyMy41NzE0Mjg2IEw0Mi4wMjM0NjgxLDIzLjU3MTQyODYgTDQyLjAyMzQ2ODEsMTcuMDk0Mzg3NSBDNDIuMDIzNDY4MSwxNS44NzQwMTQ3IDQyLjM4NTkyMDUsMTQuODg5OTk4MiA0My4wNzg1MzUyLDE0LjE0MzE4NiBDNDMuNzcwNjg2NCwxMy4zOTY3OTggNDQuNjM1NDEyLDEzLjAyMzYwNCA0NS42NTUwOTkxLDEzLjAyMzYwNCBDNDYuMzk0NjgxMiwxMy4wMjM2MDQgNDcuMDQyODAwNSwxMy4yNDUyNTg2IDQ3LjU2MTE0MTUsMTMuNjg4NTY3OSBDNDguMDc5NjM2OSwxNC4xMzE1OTQ0IDQ4LjM1Nzg4NzksMTQuODk3NjMxNyA0OC4zNTc4ODc5LDE1Ljk4NjUzODQgTDQ4LjM1Nzg4NzksMjMuNTcxNDI4NiBMNTAuMjExODY0NCwyMy41NzE0Mjg2IEw1MC4yMTE4NjQ0LDE2Ljc0NDUxODEgQzUwLjIxMTg2NDQsMTUuMjU5Mzc1NSA1MC4wODE0NjgxLDE0LjIzMzA5MTkgNDkuODMwNDA4NywxMy42NjUyNDMyIEM0OS41Nzk2NTg0LDEzLjA5NzM5NDYgNDkuMTExODM4MywxMi41ODYwOTA1IDQ4LjQzNjA2MzksMTIuMTMxMzMxIFoiIGlkPSJTaGFwZSIgZmlsbD0iIzVEQTdBMyI+PC9wYXRoPgogICAgICAgICAgICA8cGF0aCBkPSJNNTcuNzMyOTYwNywxOS4zMjIyNzI0IEM1Ny43MzI5NjA3LDIwLjIxNjkxMjkgNTcuNjY0MDE3MywyMC44NjM1NjU5IDU3LjUyOTgzNDEsMjEuMjYzMjQ2NCBDNTcuMzk1MjIzNiwyMS42NjI0OTE5IDU3LjEzMTQxNTQsMjEuOTg3NjMxMSA1Ni43Mzk0MDY4LDIyLjIzOTM4OTIgQzU2LjM0NzY4MywyMi40OTA4NTczIDU1LjY5NjI4MiwyMi42MTYxNTYzIDU0Ljg2OTM4ODcsMjIuNjE2MTU2MyBDNTQuMjg4MDcwNywyMi42MTYxNTYzIDUzLjc0NDUwMDUsMjIuNTM4NTY5NSA1Mi44ODk4MzA1LDIyLjM4MzI1MSBMNTIuODg5ODMwNSwyMy45MzQ2OTYgQzUzLjc0NDUwMDUsMjQuMTQxMjA3MyA1NC4zNzg4MDgyLDI0LjI0NDg5OCA1NS4wOTc0NDMyLDI0LjI0NDg5OCBDNTYuNDM5NTYsMjQuMjQ0ODk4IDU3LjUzNTEwNDYsMjMuODgyNDg4MSA1OC4zNDc4OTU4LDIzLjE1ODM5MzQgQzU5LjE2MDQwMjEsMjIuNDMzODYzNyA1OS41ODQ3NDU4LDIxLjE1NDkxNSA1OS41ODQ3NDU4LDE5LjMyMTExMjMgTDU5LjU4NDc0NTgsOC43NTUxMDIwNCBMNTcuNzMyOTYwNyw4Ljc1NTEwMjA0IEw1Ny43MzI5NjA3LDE5LjMyMjI3MjQgWiIgaWQ9IlNoYXBlIiBmaWxsPSIjRkZGRkZGIj48L3BhdGg+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik02OS4yNDA4MTE5LDE2LjIyNTg5MDQgQzY4LjU2Njc1NzgsMTYuOTQyNzI2NiA2Ny43MzIxNTUyLDE3LjMwMTIxNiA2Ni43Mzc0MTk4LDE3LjMwMTIxNiBDNjUuODMzODMyNiwxNy4zMDEyMTYgNjUuMDQyMDMzNywxNi45OTE5NDIyIDY0LjM2MTA1MzQsMTYuMzczNTM3MyBDNjMuNjgwMjExNiwxNS43NTQ3MDQzIDYzLjMzOTcyMTUsMTQuOTE0MTg3MiA2My4zMzk3MjE1LDEzLjg1MTI3MjQgQzYzLjMzOTcyMTUsMTIuODYxOTY3MiA2My42NDY4Mjc1LDEyLjAyMjQ0ODUgNjQuMjYwNzYyNiwxMS4zMzQ5OTkxIEM2NC44NzQxNDM1LDEwLjY0NzEyMTYgNjUuNzEwNDA4NCwxMC4zMDMzMjU2IDY2Ljc2OTAwMzEsMTAuMzAzMzI1NiBDNjcuODEzMzI5OCwxMC4zMDMzMjU2IDY4LjY1NDk5NzEsMTAuNjM3ODQ5MSA2OS4yOTM0NTA4LDExLjMwNzYwOTUgQzY5LjkzMjE4MTUsMTEuOTc3MjI3MiA3MC4yNTE0Nzc2LDEyLjc3ODA4NjYgNzAuMjUxNDc3NiwxMy43MDkzMzE3IEM3MC4yNTE0Nzc2LDE0LjY3MDEwNjIgNjkuOTE0MzEyLDE1LjUwOTA1NDIgNjkuMjQwODExOSwxNi4yMjU4OTA0IE03MC44NTQ3NDYzLDEwLjcyNDE1NDggQzY5Ljg4ODI2OTYsOS40MTIwMjM1NyA2OC40OTgwNTAzLDguNzU1MTAyMDQgNjYuNjg0MjI2OCw4Ljc1NTEwMjA0IEM2NS4yMDI1ODIxLDguNzU1MTAyMDQgNjMuOTgzNDM5LDkuMjU3MjQ0MDEgNjMuMDI3NDkwMSwxMC4yNjExIEM2Mi4wNzA5ODcsMTEuMjY1MjQxMyA2MS41OTMyMjAzLDEyLjQ3MjgwNzEgNjEuNTkzMjIwMywxMy44ODQyMjU1IEM2MS41OTMyMjAzLDE1LjI3MzgxNzggNjIuMDQ3OTkyMiwxNi40Mzk1ODYgNjIuOTU4MzY3LDE3LjM4MTY3MjkgQzYzLjg2ODg4MDMsMTguMzIzNjE3IDY0Ljk5NDI0MzIsMTguNzk0ODAzMSA2Ni4zMzQ3MzI3LDE4Ljc5NDgwMzEgQzY4LjIzMzA1NTMsMTguNzk0ODAzMSA2OS42NTUxMzUsMTcuOTAwNzkwNiA3MC42MDA4MzMyLDE2LjExMzA1MTEgQzcwLjU3OTUwMDYsMTguMTU1MTQyNyA3MC4yMjEyNzk1LDE5Ljc3MjI2ODEgNjkuNTI2NTg1NCwyMC45NjM5OTkzIEM2OC44MzEzMzcyLDIyLjE1NjAxNTkgNjcuNzk1ODc1OSwyMi43NTE0NTM2IDY2LjQxOTUwODksMjIuNzUxNDUzNiBDNjUuMDAxNTg0OSwyMi43NTE0NTM2IDYzLjk5MjMwNDUsMjIuMDY1MDAyNyA2My4zOTIzNjAzLDIwLjY5MTM4NzYgTDYxLjk0MjI5ODksMjEuMjM2NjExMSBDNjIuNzA0MTc2OCwyMy4yNDIxODMyIDY0LjE4OTU2MTYsMjQuMjQ0ODk4IDY2LjM5ODczMDQsMjQuMjQ0ODk4IEM2OC4yODk0MzQyLDI0LjI0NDg5OCA2OS43NDY5NzU5LDIzLjQ5NzgxOTEgNzAuNzcwMTA4NiwyMi4wMDM1MTg4IEM3MS43OTMyNDEzLDIwLjUwOTA3NTggNzIuMzA1MDg0NywxOC41NTQ1NzM4IDcyLjMwNTA4NDcsMTYuMTQwMDEyNyBDNzIuMzA1MDg0NywxMy44NDIxNDI2IDcxLjgyMTYzODYsMTIuMDM2ODU2NiA3MC44NTQ3NDYzLDEwLjcyNDE1NDgiIGlkPSJTaGFwZSIgZmlsbD0iI0ZGRkZGRiI+PC9wYXRoPgogICAgICAgICAgICA8cGF0aCBkPSJNNDguODQzNzkwMSwyNC42NDQ3MTU3IEM0OS41NDM5Mzk0LDI1LjkwNTU0OTIgNTAuNDE5NDA5OCwyNy4wOTIxMjI5IDUxLjQ3MDIwMTMsMjguMTY3MjQ1MyBDNTcuNzY4MDE2NSwzNC42MTA5MTgyIDY3Ljk3ODc5MjcsMzQuNjEwOTE4MiA3NC4yNzY2MDc5LDI4LjE2NzI0NTMgQzgwLjU3NDQ2NCwyMS43MjM2MDAzIDgwLjU3NDQ2NCwxMS4yNzY0MDE4IDc0LjI3NjYwNzksNC44MzI3NTY4MyBDNjcuOTc4NzkyNywtMS42MTA5MTg5NCA1Ny43NjgwMTY1LC0xLjYxMDkxODk0IDUxLjQ3MDIwMTMsNC44MzI3NTY4MyBDNDkuNjA2NzAxNiw2LjczOTM5NzA0IDQ4LjI5NDU5ODMsOC45OTY1NjQ4MyA0Ny41MzM4OTgzLDExLjM5NjgyMjkgTDQ4LjM3MDI2NzIsMTEuNzc3ODE5NiBDNDkuMDgzNDMyNSw5LjQ3ODI5OTU2IDUwLjMzMTIyMjcsNy4zMTQ3NjEyMiA1Mi4xMTM2MzM1LDUuNDkxMDg4OTIgQzU4LjA1NjA5NDgsLTAuNTg4OTk5Mjg4IDY3LjY5MDcyMTIsLTAuNTg4OTk5Mjg4IDczLjYzMzE3NTcsNS40OTEwODg5MiBDNzkuNTc1NjcxMiwxMS41NzExNDM2IDc5LjU3NTY3MTIsMjEuNDI4ODU1NyA3My42MzMxNzU3LDI3LjUwODkxNDYgQzY3LjY5MDcyMTIsMzMuNTg4OTkzIDU4LjA1NjA5NDgsMzMuNTg4OTkzIDUyLjExMzYzMzUsMjcuNTA4OTE0NiBDNTEuMTQ0MDY3NywyNi41MTY4OTg3IDUwLjMzMjY5OTgsMjUuNDI0MzI2NyA0OS42Nzk1MTYxLDI0LjI2NDAwNzMgTDQ4Ljg0Mzc5MDEsMjQuNjQ0NzE1NyBaIiBpZD0iU2hhcGUiIGZpbGw9IiM1REE3QTMiPjwvcGF0aD4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==" alt="OpenJ9 Logo"/></a></div><style data-emotion-css="kzfr2u">.css-kzfr2u{-webkit-flex:2;-ms-flex:2;flex:2;}</style><nav class="css-kzfr2u"><style data-emotion-css="d1fq55">.css-d1fq55{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;list-style:none;-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end;}.css-d1fq55 li{padding:8px;margin-left:8px;margin-right:8px;}.css-d1fq55 li a{color:white;-webkit-text-decoration:none;text-decoration:none;}.css-d1fq55 li a:hover{color:var(--theme-ui-colors-links,#5DA7A3);}.css-d1fq55 li:first-of-type{margin-left:0;}.css-d1fq55 li:last-child{margin-right:0;padding-right:0;}</style><ul class="css-d1fq55"><li><a aria-current="page" class="" href="/openj9/">Home</a></li><li><a href="/openj9/about">About</a></li><li><a href="https://www.eclipse.org/openj9/docs/" rel="noopener noreferrer" target="_blank">Docs</a></li><li><a href="/openj9/performance">Performance</a></li><li><a href="/openj9/news">News</a></li></ul></nav><style data-emotion-css="1rr4qq7">.css-1rr4qq7{-webkit-flex:1;-ms-flex:1;flex:1;}</style><nav class="css-1rr4qq7"><ul class="css-d1fq55"><li><a href="https://twitter.com/openj9/" rel="noopener noreferrer" target="_blank"> <img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIyNXB4IiB2aWV3Qm94PSIwIDAgMjUgMjUiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5Ud2l0dGVyPC90aXRsZT4KICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPgogICAgPGcgaWQ9IlBhZ2UtMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9IlR3aXR0ZXIiIGZpbGwtcnVsZT0ibm9uemVybyI+CiAgICAgICAgICAgIDxnIGlkPSJ0d2l0dGVyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjAwMDAwMCwgMC4yOTg4NzkpIj4KICAgICAgICAgICAgICAgIDxlbGxpcHNlIGlkPSJPdmFsLXBhdGgiIGZpbGw9IiM0MzQzNDMiIGN4PSIxMi41MDAyMjEyIiBjeT0iMTIuMjcyNzI3MyIgcng9IjEyLjUiIHJ5PSIxMi4yNzI3MjczIj48L2VsbGlwc2U+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTIuNTAwMjIxMiwwIEMxOS40MDM3ODA2LDAgMjUuMDAwMjIxMiw1LjQ5NDY4NzE2IDI1LjAwMDIyMTIsMTIuMjcyNzI3MyBDMjUuMDAwMjIxMiwxOS4wNTA3Njc0IDE5LjQwMzc4MDYsMjQuNTQ1NDU0NSAxMi41MDAyMjEyLDI0LjU0NTQ1NDUgQzUuNTk2NjYxODcsMjQuNTQ1NDU0NSAwLjAwMDIyMTIzODkzOCwxOS4wNTA3Njc0IDAuMDAwMjIxMjM4OTM4LDEyLjI3MjcyNzMgQzAuMDAwMjIxMjM4OTM4LDUuNDk0Njg3MTYgNS41OTY2NjE4NywwIDEyLjUwMDIyMTIsMCBaIE0xNS4xMDM0MzMzLDYuODE4MTgxODIgQzEzLjQ2NTM4MDIsNi44MTgxODE4MiAxMi4xMzY4NDA0LDguMDkyMTI0MTEgMTIuMTM2ODQwNCw5LjY2Mjg1OTk2IEMxMi4xMzY4NDA0LDkuODg1ODI2MzggMTIuMTYzMTY3OCwxMC4xMDI4NTI3IDEyLjIxNDA1MjgsMTAuMzExMTgxIEM5Ljc0ODU2NjA0LDEwLjE5MjU5MDggNy41NjI1MDQxLDkuMDYwMTUwNTQgNi4wOTkyMjk3Niw3LjMzODU3ODIzIEM1Ljg0MzkyMDAzLDcuNzU4NjI5MTUgNS42OTc0NTk4NSw4LjI0NzYyNzgxIDUuNjk3NDU5ODUsOC43Njg4NzI4MSBDNS42OTc0NTk4NSw5Ljc1NTU2ODE3IDYuMjIxNTc0ODksMTAuNjI2NjQzNCA3LjAxNzE1MDExLDExLjEzNjY0NDcgQzYuNTMxMDg4MTcsMTEuMTIyMDA2NSA2LjA3MzM0NDgsMTAuOTk0MDgxOSA1LjY3MzU2NjA0LDEwLjc4MDQ1IEw1LjY3MzM0NDgsMTAuODE2NTE0OSBMNS42NzMzNDQ4LDEwLjgxNjUxNDkgQzUuNjczMzQ0OCwxMi4xOTQ4MzM1IDYuNjk2MzUzNjUsMTMuMzQ0NDU3NyA4LjA1MzIxMjA2LDEzLjYwNTYxMDYgQzcuODA0NTM5NSwxMy42NzA5NTE5IDcuNTQxOTI4ODgsMTMuNzA1NTMxOCA3LjI3MTc5NjEzLDEzLjcwNTUzMTggQzcuMDgwMjAzMjEsMTMuNzA1NTMxOCA2Ljg5NDU4Mzc0LDEzLjY4NzkyMzYgNi43MTM2MTAyOSwxMy42NTQ4Mjg3IEM3LjA5MTA0MzkyLDE0Ljc4NDcyMzIgOC4xODYzOTc5LDE1LjYwNzIxNjkgOS40ODQ4NDkyMywxNS42MzAzNDA5IEM4LjQ2OTM2MjUsMTYuMzkzNDMzNCA3LjE5MDM4MDIsMTYuODQ4MDY0MiA1LjgwMDExNDcyLDE2Ljg0ODA2NDIgQzUuNTYxMTc2NjYsMTYuODQ4MDY0MiA1LjMyNDQ1MSwxNi44MzQ2OTkgNS4wOTI4MTM4MywxNi44MDgxODA2IEM2LjQwNDk4MTk3LDE3LjYxNTYxMTggNy45NjQ3MTY0OSwxOC4wODYzNjU4IDkuNjM5OTM3NzMsMTguMDg2MzY1OCBDMTUuMDk2NTc0OSwxOC4wODYzNjU4IDE4LjA4MDY0NTcsMTMuNzUxNzc5OCAxOC4wODA2NDU3LDkuOTkyMzI0MTQgQzE4LjA4MDY0NTcsOS44NjkwNjY3NyAxOC4wNzc3Njk2LDkuNzQ2MjMzNyAxOC4wNzIwMTc0LDkuNjI0NDYxMzcgQzE4LjY1MjEwNTksOS4yMjM1MDM2OCAxOS4xNTQ5ODIsOC43MjI2MjQ3OCAxOS41NTI1NDgzLDguMTUyMTYxNjkgQzE5LjAyMDY4OTksOC4zNzgzMTAzMiAxOC40NDg1NjYsOC41MzEyNjgyNSAxNy44NDg1NjYsOC41OTk1Nzk1NiBDMTguNDYxMTc2Nyw4LjI0NzYyNzgxIDE4LjkzMTMwOTQsNy42OTA3NDIxMyAxOS4xNTMyMTIxLDcuMDI2MDg1ODEgQzE4LjU3OTk4Miw3LjM1MjE1NTYzIDE3Ljk0NDgwNSw3LjU4ODY5OTQ2IDE3LjI2OTM2MjUsNy43MTYxOTk3NiBDMTYuNzI4MjEyMSw3LjE2MzU1NzAyIDE1Ljk1NzE5NDQsNi44MTgxODE4MiAxNS4xMDM0MzMzLDYuODE4MTgxODIgWiIgaWQ9IkNvbWJpbmVkLVNoYXBlIiBmaWxsPSIjRkZGRkZGIj48L3BhdGg+CiAgICAgICAgICAgIDwvZz4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==" alt="Twitter Logo"/></a></li><li><a href="https://github.com/eclipse/openj9" rel="noopener noreferrer" target="_blank"> <img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIyNXB4IiB2aWV3Qm94PSIwIDAgMjUgMjUiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5HaXRIdWI8L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0iR2l0SHViIiBmaWxsPSIjRkZGRkZGIiBmaWxsLXJ1bGU9Im5vbnplcm8iPgogICAgICAgICAgICA8ZyBpZD0iZ2l0aHViLWxvZ28iPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTIzLjMyMzIwOSw2LjM1NjM4NTg4IEMyMi4yMDU0MjQzLDQuNDI4ODY0OTMgMjAuNjg5MjIwNywyLjkwMjg0MzkxIDE4Ljc3NDE5OTMsMS43Nzc5Nzg1OCBDMTYuODU4ODkyOCwwLjY1MzA1NTg3MyAxNC43Njc5NDkxLDAuMDkwNzM3OTUzMyAxMi40OTk4ODYsMC4wOTA3Mzc5NTMzIEMxMC4yMzIxMDc5LDAuMDkwNzM3OTUzMyA4LjE0MDQ4MDEzLDAuNjUzMjI3OTkzIDYuMjI1NTcyNjksMS43Nzc5Nzg1OCBDNC4zMTAzODAyMSwyLjkwMjc4NjU0IDIuNzk0MjMzNjcsNC40Mjg4NjQ5MyAxLjY3NjQ0ODk5LDYuMzU2Mzg1ODggQzAuNTU4ODM1MzMzLDguMjgzODQ5NDUgMCwxMC4zODg2NTQ2IDAsMTIuNjcwNzQzOSBDMCwxNS40MTIwNTEgMC43OTQ2NzE0ODMsMTcuODc3MTA0NSAyLjM4NDQxMzQ5LDIwLjA2NjUzNTUgQzMuOTczOTg0NDksMjIuMjU2MTM4OCA2LjAyNzQ3NDg4LDIzLjc3MTI1ODggOC41NDQ3MTM2NywyNC42MTIwNjc4IEM4LjgzNzcyNzQsMjQuNjY2ODAyMiA5LjA1NDYzNzM3LDI0LjYyODMwNDUgOS4xOTU2NzE2MSwyNC40OTc1NTAzIEM5LjMzNjc2Mjg1LDI0LjM2NjYyMzkgOS40MDcyMjI5NiwyNC4yMDI2NTAzIDkuNDA3MjIyOTYsMjQuMDA2MzE4MSBDOS40MDcyMjI5NiwyMy45NzM1NTc5IDkuNDA0NDI5NjQsMjMuNjc4ODMwMSA5LjM5OTAxNDAxLDIzLjEyMTc5MDUgQzkuMzkzNDI3MzcsMjIuNTY0NzUxIDkuMzkwODA1MDcsMjIuMDc4Nzk3MiA5LjM5MDgwNTA3LDIxLjY2NDE1ODcgTDkuMDE2NDQyOTcsMjEuNzI5MzM1MSBDOC43Nzc3NTY1LDIxLjc3MzM0MDUgOC40NzY2NDc4MywyMS43OTE5ODY5IDguMTEzMTE2OTgsMjEuNzg2NzA4NiBDNy43NDk3NTcxNSwyMS43ODE2MDIzIDcuMzcyNTQ0NzMsMjEuNzQzMjc2OCA2Ljk4MTk5Mjc3LDIxLjY3MjAxODkgQzYuNTkxMjY5NzksMjEuNjAxMzkyMSA2LjIyNzg1Mjk1LDIxLjQzNzU5MDcgNS44OTE0NTcyMiwyMS4xODA5NTg5IEM1LjU1NTIzMjUyLDIwLjkyNDMyNzEgNS4zMTY1NDYwNCwyMC41ODg0MDUxIDUuMTc1NDU0OCwyMC4xNzM3MDkzIEw1LjAxMjcwMTA2LDE5Ljc5Njc2NTIgQzQuOTA0MjE3NTcsMTkuNTQ1ODEzNCA0LjczMzQyNTkxLDE5LjI2NzAzNTUgNC41MDAwOTgwNSwxOC45NjE0NjQxIEM0LjI2Njc3MDE5LDE4LjY1NTYwNTggNC4wMzA4MjAwMywxOC40NDgyNTc5IDMuNzkyMTMzNTUsMTguMzM5MDc2MSBMMy42NzgxNzc0MywxOC4yNTY5NzQ2IEMzLjYwMjI0NDY5LDE4LjIwMjQxMjMgMy41MzE3ODQ1OCwxOC4xMzY2MDQ5IDMuNDY2NjI2MDgsMTguMDYwMjQwOCBDMy40MDE1MjQ1OCwxNy45ODM4NzY2IDMuMzUyNzgzOTcsMTcuOTA3NDU1MSAzLjMyMDIzMzIzLDE3LjgzMDkxODggQzMuMjg3NjI1NDcsMTcuNzU0MzI1MSAzLjMxNDY0NjU4LDE3LjY5MTUwMTEgMy40MDE1ODE1OSwxNy42NDIyMTcyIEMzLjQ4ODUxNjYsMTcuNTkyOTMzNCAzLjY0NTYyNjY4LDE3LjU2OTAwODYgMy44NzM1OTU5MywxNy41NjkwMDg2IEw0LjE5ODk4OTM5LDE3LjYxNzk0ODIgQzQuNDE2MDEzMzcsMTcuNjYxNzI0MiA0LjY4NDQ1NzI3LDE3Ljc5MjQ3ODUgNS4wMDQ2NjMxNCwxOC4wMTEwMTQzIEM1LjMyNDY5Nzk4LDE4LjIyOTM3NzkgNS41ODc3ODMyNywxOC41MTMyNjIxIDUuNzkzOTc2LDE4Ljg2MjU1MjEgQzYuMDQzNjY0NzUsMTkuMzEwNDA5OSA2LjM0NDQ4ODM4LDE5LjY1MTY2NzYgNi42OTczMDE5OSwxOS44ODY0OTc0IEM3LjA0OTgzMDU4LDIwLjEyMTMyNzMgNy40MDUyNjY0OSwyMC4yMzg1NDE0IDcuNzYzMjY3NzEsMjAuMjM4NTQxNCBDOC4xMjEyNjg5MiwyMC4yMzg1NDE0IDguNDMwNDcyNTIsMjAuMjExMjMxNiA4LjY5MDk5MjUxLDIwLjE1Njg5ODkgQzguOTUxMjI3NDcsMjAuMTAyMjc5MyA5LjE5NTM4NjU3LDIwLjAyMDE3NzcgOS40MjMzNTU4MiwxOS45MTEwNTMzIEM5LjUyMTAwODA2LDE5LjE3OTA4MTkgOS43ODY4ODY2NywxOC42MTY3NjM5IDEwLjIyMDc2MzYsMTguMjIzNjk3OSBDOS42MDIzNTY0MiwxOC4xNTgyOTIxIDkuMDQ2MzcxNDIsMTguMDU5NzgxOCA4LjU1MjUyMzU3LDE3LjkyODc5OCBDOC4wNTg5NjA3NSwxNy43OTc2NDIxIDcuNTQ4OTIzMDMsMTcuNTg0Nzg2MyA3LjAyMjc1MjQ2LDE3LjI4OTY1NjkgQzYuNDk2Mjk2ODUsMTYuOTk0OTI5MSA2LjA1OTU2OTU4LDE2LjYyODk0MzQgNS43MTI0NTY2MiwxNi4xOTIzMzA5IEM1LjM2NTI4NjY1LDE1Ljc1NTQ4ODkgNS4wODAzNjc4NSwxNS4xODE5ODMxIDQuODU4MDk5MjYsMTQuNDcyMzMgQzQuNjM1NzE2NjYsMTMuNzYyMzkgNC41MjQ0OTY4NiwxMi45NDM0NDAzIDQuNTI0NDk2ODYsMTIuMDE1MjUxNCBDNC41MjQ0OTY4NiwxMC42OTM2NTIzIDQuOTUzMTg2MjEsOS41NjkwMTY0MiA1LjgxMDM5Mzg5LDguNjQwNzEyNzggQzUuNDA4ODM5NjcsNy42NDcxMTgwNyA1LjQ0Njc0OTAzLDYuNTMzMjY4NDYgNS45MjQyMzYsNS4yOTkyNzg2OCBDNi4yMzg5MTIyMiw1LjIwMDg4MzA4IDYuNzA1NTY3OTQsNS4yNzQ3MjI4MSA3LjMyMzk3NTE0LDUuNTIwMzM4ODcgQzcuOTQyNDk2MzQsNS43NjYwNjk2OCA4LjM5NTM1NjQ3LDUuOTc2NTczMTQgOC42ODMwMTE1OSw2LjE1MTEwMzQxIEM4Ljk3MDY2NjcsNi4zMjU1NzYzIDkuMjAxMTQ0MjQsNi40NzM0Mjc4NyA5LjM3NDc4NjIzLDYuNTkzMzM4NTQgQzEwLjM4NDA4NzQsNi4zMDk1MTE3MSAxMS40MjU2NTQzLDYuMTY3NTY5NjEgMTIuNDk5NzcyLDYuMTY3NTY5NjEgQzEzLjU3Mzg4OTYsNi4xNjc1Njk2MSAxNC42MTU2ODQ2LDYuMzA5NTExNzEgMTUuNjI1MDQyOCw2LjU5MzMzODU0IEwxNi4yNDM1MDcsNi4yMDAzODcyNiBDMTYuNjY2NDM4Niw1LjkzODE5MDI1IDE3LjE2NTg3MzEsNS42OTc5MDk5MyAxNy43NDA2MTMzLDUuNDc5NDg4OTIgQzE4LjMxNTY5NTUsNS4yNjExODI2NiAxOC43NTU0NDQxLDUuMjAxMDU1MiAxOS4wNTk0MDMxLDUuMjk5NDUwOCBDMTkuNTQ3NDkzMyw2LjUzMzQ5Nzk1IDE5LjU5MDk4OTMsNy42NDcyOTAxOSAxOS4xODkzMjExLDguNjQwODg0OSBDMjAuMDQ2NDcxNyw5LjU2OTE4ODU0IDIwLjQ3NTMzMjEsMTAuNjk0MTExMiAyMC40NzUzMzIxLDEyLjAxNTQyMzUgQzIwLjQ3NTMzMjEsMTIuOTQzNjEyNCAyMC4zNjM3MTMzLDEzLjc2NTE0MzkgMjAuMTQxNjcyNywxNC40ODA1MzQ0IEMxOS45MTkzNDcxLDE1LjE5NjAzOTYgMTkuNjMxOTc3LDE1Ljc2ODk3MTcgMTkuMjc5NDQ4NSwxNi4yMDA1MzUzIEMxOC45MjY1MjA4LDE2LjYzMjA0MTYgMTguNDg3MDAwMiwxNi45OTUxNTg2IDE3Ljk2MDgyOTcsMTcuMjg5ODI5MSBDMTcuNDM0NTQ1MSwxNy41ODQ3MjkgMTYuOTI0MzM2MywxNy43OTc1ODQ4IDE2LjQzMDc3MzUsMTcuOTI4NzQwNiBDMTUuOTM2OTgyNywxOC4wNTk4OTY1IDE1LjM4MDk5NzcsMTguMTU4NDY0MiAxNC43NjI1OTA1LDE4LjIyMzk4NDggQzE1LjMyNjYxMzQsMTguNzE1MjE2OSAxNS42MDg2ODE5LDE5LjQ5MDYyMDEgMTUuNjA4NjgxOSwyMC41NDk4NTAxIEwxNS42MDg2ODE5LDI0LjAwNTg1OTIgQzE1LjYwODY4MTksMjQuMjAyMTkxNCAxNS42NzY1MTk3LDI0LjM2NjEwNzUgMTUuODEyMzA5MywyNC40OTcwOTEzIEMxNS45NDc5Mjc5LDI0LjYyNzg0NTUgMTYuMTYyMTAxNiwyNC42NjYzNDMyIDE2LjQ1NTExNTMsMjQuNjExNTUxNSBDMTguOTcyNjk2MSwyMy43NzA4NTcyIDIxLjAyNjE4NjUsMjIuMjU1Njc5OCAyMi42MTU3MDA1LDIwLjA2NjA3NjYgQzI0LjIwNTA0MzUsMTcuODc2NjQ1NSAyNSwxNS40MTE1OTIgMjUsMTIuNjcwMjg0OSBDMjQuOTk5NDI5OSwxMC4zODg0ODI1IDI0LjQ0MDMwOTYsOC4yODM4NDk0NSAyMy4zMjMyMDksNi4zNTYzODU4OCBaIiBpZD0iU2hhcGUiPjwvcGF0aD4KICAgICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+" alt="GitHub Logo"/></a></li><li><a href="https://openj9.slack.com/" rel="noopener noreferrer" target="_blank"><img src="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIyNXB4IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgogPCEtLSBDcmVhdGVkIHdpdGggTWV0aG9kIERyYXcgLSBodHRwOi8vZ2l0aHViLmNvbS9kdW9waXhlbC9NZXRob2QtRHJhdy8gLS0+CgogPGc+CiAgPHRpdGxlPmJhY2tncm91bmQ8L3RpdGxlPgogIDxyZWN0IGZpbGw9Im5vbmUiIGlkPSJjYW52YXNfYmFja2dyb3VuZCIgaGVpZ2h0PSIyNiIgd2lkdGg9IjI2IiB5PSItMSIgeD0iLTEiLz4KICA8ZyBkaXNwbGF5PSJub25lIiBvdmVyZmxvdz0idmlzaWJsZSIgeT0iMCIgeD0iMCIgaGVpZ2h0PSIxMDAlIiB3aWR0aD0iMTAwJSIgaWQ9ImNhbnZhc0dyaWQiPgogICA8cmVjdCBmaWxsPSJ1cmwoI2dyaWRwYXR0ZXJuKSIgc3Ryb2tlLXdpZHRoPSIwIiB5PSIxIiB4PSIxIiBoZWlnaHQ9IjIyIiB3aWR0aD0iMjIiLz4KICA8L2c+CiA8L2c+CiA8Zz4KICA8dGl0bGU+TGF5ZXIgMTwvdGl0bGU+CiAgPGVsbGlwc2Ugcnk9IjExIiByeD0iMTEiIGlkPSJzdmdfMSIgY3k9IjEyIiBjeD0iMTIiIHN0cm9rZT0iI0ZGRiIgZmlsbD0iI0ZGRkZGRiIvPgogIDxzdHlsZSB0cmFuc2Zvcm09Im1hdHJpeCgwLjA2NTE4MjQ5NTU3MzI1MzYyLDAsMCwwLjA2NTE4MjQ5NTU3MzI1MzYyLDAsMCkgIiB0eXBlPSJ0ZXh0L2NzcyI+LnN0MHtmaWxsOiM0MzQzNDM7fTwvc3R5bGU+CiAgPGcgc3Ryb2tlPSJudWxsIiBpZD0ic3ZnXzE5Ij4KICAgPGcgc3Ryb2tlPSJudWxsIiB0cmFuc2Zvcm09Im1hdHJpeCgwLjEzMDE1NTgwODUxODA5NDg2LDAsMCwwLjEzMDE1NTgwODUxODA5NDg2LC02Ljg0OTAwNjQ1MDQwNTQ5OSwtNi44MzE1MDczOTEwMjE5MjQpICIgaWQ9InN2Z182Ij4KICAgIDxnIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z183Ij4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfOCIgZD0ibTExMC4yOTgyOTIsMTYxLjI5MzAxMWMwLDcuMSAtNS44LDEyLjkgLTEyLjksMTIuOXMtMTIuOSwtNS44IC0xMi45LC0xMi45YzAsLTcuMSA1LjgsLTEyLjkgMTIuOSwtMTIuOWwxMi45LDBsMCwxMi45eiIgY2xhc3M9InN0MCIvPgogICAgIDxwYXRoIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z185IiBkPSJtMTE2Ljc5ODI5MiwxNjEuMjkzMDExYzAsLTcuMSA1LjgsLTEyLjkgMTIuOSwtMTIuOXMxMi45LDUuOCAxMi45LDEyLjlsMCwzMi4zYzAsNy4xIC01LjgsMTIuOSAtMTIuOSwxMi45cy0xMi45LC01LjggLTEyLjksLTEyLjljMCwwIDAsLTMyLjMgMCwtMzIuM3oiIGNsYXNzPSJzdDAiLz4KICAgIDwvZz4KICAgIDxnIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z18xMCI+CiAgICAgPHBhdGggc3Ryb2tlPSJudWxsIiBpZD0ic3ZnXzExIiBkPSJtMTI5LjY5ODI5MiwxMDkuNDkzMDExYy03LjEsMCAtMTIuOSwtNS44IC0xMi45LC0xMi45czUuOCwtMTIuOSAxMi45LC0xMi45czEyLjksNS44IDEyLjksMTIuOWwwLDEyLjlsLTEyLjksMHoiIGNsYXNzPSJzdDAiLz4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTIiIGQ9Im0xMjkuNjk4MjkyLDExNS45OTMwMTFjNy4xLDAgMTIuOSw1LjggMTIuOSwxMi45cy01LjgsMTIuOSAtMTIuOSwxMi45bC0zMi4zLDBjLTcuMSwwIC0xMi45LC01LjggLTEyLjksLTEyLjlzNS44LC0xMi45IDEyLjksLTEyLjljMCwwIDMyLjMsMCAzMi4zLDB6IiBjbGFzcz0ic3QwIi8+CiAgICA8L2c+CiAgICA8ZyBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTMiPgogICAgIDxwYXRoIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z18xNCIgZD0ibTE4MS40OTgyOTIsMTI4Ljg5MzAxMWMwLC03LjEgNS44LC0xMi45IDEyLjksLTEyLjljNy4xLDAgMTIuOSw1LjggMTIuOSwxMi45cy01LjgsMTIuOSAtMTIuOSwxMi45bC0xMi45LDBsMCwtMTIuOXoiIGNsYXNzPSJzdDAiLz4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTUiIGQ9Im0xNzQuOTk4MjkyLDEyOC44OTMwMTFjMCw3LjEgLTUuOCwxMi45IC0xMi45LDEyLjljLTcuMSwwIC0xMi45LC01LjggLTEyLjksLTEyLjlsMCwtMzIuM2MwLC03LjEgNS44LC0xMi45IDEyLjksLTEyLjljNy4xLDAgMTIuOSw1LjggMTIuOSwxMi45bDAsMzIuM3oiIGNsYXNzPSJzdDAiLz4KICAgIDwvZz4KICAgIDxnIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z18xNiI+CiAgICAgPHBhdGggc3Ryb2tlPSJudWxsIiBpZD0ic3ZnXzE3IiBkPSJtMTYyLjA5ODI5MiwxODAuNjkzMDExYzcuMSwwIDEyLjksNS44IDEyLjksMTIuOWMwLDcuMSAtNS44LDEyLjkgLTEyLjksMTIuOWMtNy4xLDAgLTEyLjksLTUuOCAtMTIuOSwtMTIuOWwwLC0xMi45bDEyLjksMHoiIGNsYXNzPSJzdDAiLz4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTgiIGQ9Im0xNjIuMDk4MjkyLDE3NC4xOTMwMTFjLTcuMSwwIC0xMi45LC01LjggLTEyLjksLTEyLjljMCwtNy4xIDUuOCwtMTIuOSAxMi45LC0xMi45bDMyLjMsMGM3LjEsMCAxMi45LDUuOCAxMi45LDEyLjljMCw3LjEgLTUuOCwxMi45IC0xMi45LDEyLjlsLTMyLjMsMHoiIGNsYXNzPSJzdDAiLz4KICAgIDwvZz4KICAgPC9nPgogIDwvZz4KIDwvZz4KPC9zdmc+" alt="Slack logo"/></a></li><li><a href="https://stackoverflow.com/search?q=%23OpenJ9" rel="noopener noreferrer" target="_blank"><img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjRweCIgaGVpZ2h0PSIyNHB4IiB2aWV3Qm94PSIwIDAgNjUgNzAiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5zdGFja292ZXJmbG93LWxvZ288L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0iI0ZGRkZGRiIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0ic3RhY2tvdmVyZmxvdy1sb2dvIiBmaWxsLXJ1bGU9Im5vbnplcm8iPgogICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgZmlsbD0iI0ZGRkZGRiIgcG9pbnRzPSI1NC4yNDE3MjY2IDYzLjc3MDIyNjUgNTQuMjQxNzI2NiA0NSA2MSA0NSA2MSA3MCAwIDcwIDAgNDUgNi43NTgyNzMzOCA0NSA2Ljc1ODI3MzM4IDYzLjc3MDIyNjUiPjwvcG9seWdvbj4KICAgICAgICAgICAgPHBhdGggZD0iTTE0LjcwNzEwNTcsNDMuNjQyNzU2NyBMNDguMTE3ODUxLDUwLjA4NzIwMTEgTDQ5LjUzMjA2MjQsNDMuODg3NDgyNCBMMTYuMTIxMzE3MiwzNy40NDMwMzggTDE0LjcwNzEwNTcsNDMuNjQyNzU2NyBMMTQuNzA3MTA1Nyw0My42NDI3NTY3IFogTTE5LjEyNjUxNjUsMjguOTU5MjEyNCBMNTAuMDYyMzkxNyw0Mi4yNTU5Nzc1IEw1Mi44OTA4MTQ2LDM2LjU0NTcxMDMgTDIxLjk1NDkzOTMsMjMuMTY3MzY5OSBMMTkuMTI2NTE2NSwyOC45NTkyMTI0IFogTTI3LjcwMDE3MzMsMTQuOTI4MjcgTDUzLjk1MTQ3MzEsMzUuMDc3MzU1OCBMNTguMjgyNDk1NywzMC4yNjQ0MTYzIEwzMi4wMzExOTU4LDEwLjExNTMzMDUgTDI3LjcwMDE3MzMsMTQuOTI4MjcgTDI3LjcwMDE3MzMsMTQuOTI4MjcgWiBNNDQuNjcwNzEwNiwwIEwzOS4xOTA2NDEyLDMuNzUyNDYxMzIgTDU5LjUxOTkzMDcsMjkuMDQwNzg3NiBMNjUsMjUuMjg4MzI2MyBMNDQuNjcwNzEwNiwwIFogTTE0LDU4IEw0OC4xMTc4NTEsNTggTDQ4LjExNzg1MSw1MS43MTg3MDYgTDE0LDUxLjcxODcwNiBMMTQsNTggWiIgaWQ9IlNoYXBlIiBmaWxsPSIjRkZGRkZGIj48L3BhdGg+CiAgICAgICAgPC9nPgogICAgPC9nPgo8L3N2Zz4KCgo=" alt="Stack Overflow logo"/></a></li></ul></nav></header><style data-emotion-css="1824c0p">.css-1824c0p{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:fixed;width:100%;bottom:0;background-color:white;height:3rem;box-shadow:0 0.5rem 2rem grey;z-index:9999;}@media screen and (min-width:35rem){.css-1824c0p{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}}@media screen and (min-width:62.5rem){.css-1824c0p{display:none;}}@media screen and (min-width:85rem){.css-1824c0p{display:none;}}</style><nav class="css-1824c0p"><style data-emotion-css="94xmc6">.css-94xmc6{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;list-style:none;-webkit-box-pack:space-evenly;-webkit-justify-content:space-evenly;-ms-flex-pack:space-evenly;justify-content:space-evenly;width:100%;}.css-94xmc6 li a{color:black;-webkit-text-decoration:none;text-decoration:none;}.css-94xmc6 li:first-of-type{margin-left:0;}.css-94xmc6 li:last-child{margin-right:0;padding-right:0;}</style><ul class="css-94xmc6"><li><a aria-current="page" class="" href="/openj9/">Home</a></li><li><a href="/openj9/about">About</a> </li><li><a href="https://www.eclipse.org/openj9/docs/" rel="noopener noreferrer" target="_blank">Docs</a> </li><li><a href="/openj9/performance">Performance</a> </li><li><a href="/openj9/news">News</a> </li></ul></nav><style data-emotion-css="vfnkif">.css-vfnkif{background-color:var(--theme-ui-colors-primary,#434343);color:var(--theme-ui-colors-lightText,#d8d8d8);display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;min-height:32rem;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;padding-bottom:4rem;}@media screen and (min-width:35rem){.css-vfnkif{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;padding-bottom:4rem;}}@media screen and (min-width:62.5rem){.css-vfnkif{-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;padding-bottom:0;}}@media screen and (min-width:85rem){.css-vfnkif{-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;padding-bottom:0;}}</style><section class="css-vfnkif"><style data-emotion-css="1njushj">.css-1njushj{background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSI2MjVweCIgdmlld0JveD0iMCAwIDI1IDYyNSIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KICAgIDwhLS0gR2VuZXJhdG9yOiBTa2V0Y2ggNjEuMiAoODk2NTMpIC0gaHR0cHM6Ly9za2V0Y2guY29tIC0tPgogICAgPHRpdGxlPkNpcmNsZSBPdmVybGF5PC90aXRsZT4KICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPgogICAgPGcgaWQ9IlBhZ2UtMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9Ik9wZW5KOS1Ib21lLUJsYW5rIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMTI4Ni4wMDAwMDAsIC0yNTExLjAwMDAwMCkiIGZpbGwtcnVsZT0ibm9uemVybyI+CiAgICAgICAgICAgIDxyZWN0IGlkPSJHcmF5LUJHIiBmaWxsPSIjNURBN0EzIiB4PSIwIiB5PSIxNDMxIiB3aWR0aD0iMTQ0MCIgaGVpZ2h0PSIxMjQyIj48L3JlY3Q+CiAgICAgICAgICAgIDxnIGlkPSJQYXJ0aWNpcGF0ZSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTg3LjAwMDAwMCwgMjUxMi4wMDAwMDApIj4KICAgICAgICAgICAgICAgIDxyZWN0IGlkPSJCbHVlLUJHIiBmaWxsPSIjMzQzNDM0IiB4PSI4NyIgeT0iMTU2IiB3aWR0aD0iMTQ0MCIgaGVpZ2h0PSIzNjUiPjwvcmVjdD4KICAgICAgICAgICAgICAgIDxnIGlkPSJHcm91cC0xMCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoODcuMDAwMDAwLCAwLjAwMDAwMCkiIGZpbGw9IiM1REE3QTMiPgogICAgICAgICAgICAgICAgICAgIDxyZWN0IGlkPSJSZWN0YW5nbGUtMiIgeD0iMCIgeT0iMTU1IiB3aWR0aD0iMTQ0MCIgaGVpZ2h0PSI1NjUiPjwvcmVjdD4KICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgIDxnIGlkPSJDaXJjbGUtT3ZlcmxheXMiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDc4LjAwMDAwMCwgMC4wMDAwMDApIiBvcGFjaXR5PSIwLjc1MDMzNDgyMSIgc3Ryb2tlPSIjRkZGRkZGIj4KICAgICAgICAgICAgICAgICAgICA8ZyBpZD0iQ2lyY2xlLU92ZXJsYXkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDc0My41MDAwMDAsIDMxMS41MDAwMDApIHJvdGF0ZSg5MC4wMDAwMDApIHRyYW5zbGF0ZSgtNzQzLjUwMDAwMCwgLTMxMS41MDAwMDApIHRyYW5zbGF0ZSg0MzIuMDAwMDAwLCAtNDMyLjAwMDAwMCkiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZyBpZD0iR3JvdXAtMTIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgaWQ9IkNpcmNsZS1PdmVybGF5Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBpZD0iU3RhY2tlZC1Hcm91cC04IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjAwMDAwMCwgMTY4LjAwMDAwMCkiIG9wYWNpdHk9IjAuNSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9Ik92YWwtMTYiIGN4PSI2MTEuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsLTE2IiBjeD0iNTg3LjUiIGN5PSIxMS41IiByPSIxMS41Ij48L2NpcmNsZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBpZD0iT3ZhbC0xNiIgY3g9IjU2My41IiBjeT0iMTEuNSIgcj0iMTEuNSI+PC9jaXJjbGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9Ik92YWwtMTYiIGN4PSI1MTUuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsLTE2IiBjeD0iNTM5LjUiIGN5PSIxMS41IiByPSIxMS41Ij48L2NpcmNsZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBpZD0iT3ZhbC0xNiIgY3g9IjQ2Ny41IiBjeT0iMTEuNSIgcj0iMTEuNSI+PC9jaXJjbGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9Ik92YWwtMTYiIGN4PSI0OTEuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsLTE2IiBjeD0iNDE5LjUiIGN5PSIxMS41IiByPSIxMS41Ij48L2NpcmNsZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBpZD0iT3ZhbC0xNiIgY3g9IjQ0My41IiBjeT0iMTEuNSIgcj0iMTEuNSI+PC9jaXJjbGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9Ik92YWwtMTYiIGN4PSIzNzEuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsLTE2IiBjeD0iMzk1LjUiIGN5PSIxMS41IiByPSIxMS41Ij48L2NpcmNsZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBpZD0iT3ZhbC0xNiIgY3g9IjMyMy41IiBjeT0iMTEuNSIgcj0iMTEuNSI+PC9jaXJjbGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9Ik92YWwtMTYiIGN4PSIzNDcuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsLTE2IiBjeD0iMjc1LjUiIGN5PSIxMS41IiByPSIxMS41Ij48L2NpcmNsZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBpZD0iT3ZhbC0xNiIgY3g9IjI5OS41IiBjeT0iMTEuNSIgcj0iMTEuNSI+PC9jaXJjbGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9Ik92YWwtMTYiIGN4PSIyMjcuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsLTE2IiBjeD0iMjUxLjUiIGN5PSIxMS41IiByPSIxMS41Ij48L2NpcmNsZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBpZD0iT3ZhbC0xNiIgY3g9IjE3OS41IiBjeT0iMTEuNSIgcj0iMTEuNSI+PC9jaXJjbGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9Ik92YWwtMTYiIGN4PSIyMDMuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsLTE2IiBjeD0iMTMxLjUiIGN5PSIxMS41IiByPSIxMS41Ij48L2NpcmNsZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBpZD0iT3ZhbC0xNiIgY3g9IjE1NS41IiBjeT0iMTEuNSIgcj0iMTEuNSI+PC9jaXJjbGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9Ik92YWwtMTYiIGN4PSI4My41IiBjeT0iMTEuNSIgcj0iMTEuNSI+PC9jaXJjbGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9Ik92YWwtMTYiIGN4PSIxMDcuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsLTE2IiBjeD0iMzUuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsLTE2IiBjeD0iNTkuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsLTE2IiBjeD0iMTEuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICA8cmVjdCBpZD0iUmVjdGFuZ2xlLTIyIiBmaWxsPSIjNURBN0EzIiB4PSI3MzQiIHk9IjUyMCIgd2lkdGg9Ijc5MyIgaGVpZ2h0PSIyIj48L3JlY3Q+CiAgICAgICAgICAgIDwvZz4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==);width:100%;min-height:12.5rem;}@media screen and (min-width:35rem){.css-1njushj{width:100%;}}@media screen and (min-width:62.5rem){.css-1njushj{width:30%;}}@media screen and (min-width:85rem){.css-1njushj{width:30%;}}</style><div class="css-1njushj"></div><style data-emotion-css="190h46h">.css-190h46h{height:15rem;width:15rem;border-radius:50%;background-color:#434343;position:absolute;left:calc(50% - 8rem);top:4.5rem;border:white solid 0.15rem;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;}@media screen and (min-width:35rem){.css-190h46h{left:calc(50% - 8rem);top:4.5rem;}}@media screen and (min-width:62.5rem){.css-190h46h{left:calc(30% - 8rem);top:8rem;}}@media screen and (min-width:85rem){.css-190h46h{left:calc(30% - 8rem);top:8rem;}}</style><div class="css-190h46h"><img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjAxcHgiIGhlaWdodD0iODRweCIgdmlld0JveD0iMCAwIDIwMSA4NCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KICAgIDwhLS0gR2VuZXJhdG9yOiBTa2V0Y2ggNjEuMiAoODk2NTMpIC0gaHR0cHM6Ly9za2V0Y2guY29tIC0tPgogICAgPHRpdGxlPkdyb3VwIDEzPC90aXRsZT4KICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPgogICAgPGcgaWQ9IlBhZ2UtMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9Ikdyb3VwLTEzIj4KICAgICAgICAgICAgPGcgaWQ9IkxvZ28iPjwvZz4KICAgICAgICAgICAgPHBhdGggZD0iTTI1LjUwNzI1OTUsNDkuMjgyMzQ2NyBDMjMuNDY0Mjk2OSw1Mi40MjA2NDYgMjAuNjM0MzYzNiw1My45ODg5MjE0IDE3LjAxNDg4NjYsNTMuOTg4OTIxNCBDMTMuNDk3MjI3LDUzLjk4ODkyMTQgMTAuNjg2Nzc1LDUyLjQ3MzA5NjYgOC41ODMxNjMwNiw0OS40NDEwOTc1IEM2LjQ4MDY1Mzg0LDQ2LjQwODM5ODkgNS40MjkwMzE2Nyw0Mi40NzcwNDU0IDUuNDI5MDMxNjcsMzcuNjQ0NTg5MSBDNS40MjkwMzE2NywzMi42OTY3NDEyIDYuNDcwMzYxODQsMjguNjkxOTU2NyA4LjU1MzAyMjE5LDI1LjYzMDkzNDggQzEwLjYzNjA1MDEsMjIuNTcwMjYyNiAxMy40NDU3NjcsMjEuMDM5MDUyMyAxNi45ODQzNzgyLDIxLjAzOTA1MjMgQzIwLjQ4MjkyNDEsMjEuMDM5MDUyMyAyMy4yODc4NjI2LDIyLjQ1NTIyMDggMjUuNDAxMDMxNCwyNS4yODQwNjEgQzI3LjUxNDIwMDIsMjguMTE0NjQ5NSAyOC41NzA5NjgzLDMyLjA3MTUyOTEgMjguNTcwOTY4MywzNy4xNTMzMDEgQzI4LjU3MDk2ODMsNDIuMTAxNDk4NSAyNy41NDk0ODcsNDYuMTQ0Mzk3MiAyNS41MDcyNTk1LDQ5LjI4MjM0NjcgTTE3LjA0NTM5NTEsMTcgQzExLjkwOTMxNzksMTcgNy43ODQ0MzAxLDE4Ljk0NDg3MTMgNC42NzAzNjQsMjIuODMyNTE2IEMxLjU1NzAzMzA1LDI2LjcyMDUxMDMgMCwzMS42NDg0MjY5IDAsMzcuNjE1NTY2MyBDMCw0My4zMzI2OTA4IDEuNDg2NDU5MzEsNDguMTU5NTUyNCA0LjQ1OTAxMDM3LDUyLjA5NTEwMiBDNy40MzExOTM4NSw1Ni4wMzE3MDA3IDExLjU3NTkzMDYsNTggMTYuODkzNTg4LDU4IEMyMi4yOTI0Nzg4LDU4IDI2LjQ5MzA4NjQsNTUuOTI1NDAwNiAyOS40OTY1MTM1LDUxLjc3Nzk1MDIgQzMyLjQ5ODQ3MDMsNDcuNjI5ODAwNSAzNCw0Mi43NjM3NzU4IDM0LDM3LjE4MjY3MzQgQzM0LDMxLjM2OTczODkgMzIuNDUyODkxNCwyNi41NTIzMTg1IDI5LjM1OTQwOTMsMjIuNzMwNzYxNyBDMjYuMjY1NTU5NiwxOC45MTA5NTMyIDIyLjE2MDg4ODIsMTcgMTcuMDQ1Mzk1MSwxNyIgaWQ9IlNoYXBlIiBmaWxsPSIjNURBN0EzIiBmaWxsLXJ1bGU9Im5vbnplcm8iPjwvcGF0aD4KICAgICAgICAgICAgPHBhdGggZD0iTTU4LjA5NjAyODUsNTQuMTU5NTk4OCBDNTYuNDMxOTk0NSw1NS45NDM3MTE5IDU0LjUxOTMwNzMsNTYuODM3MjEwMSA1Mi4zNjIxNTU1LDU2LjgzNzIxMDEgQzUwLjQ5ODIwODksNTYuODM3MjEwMSA0OC43MTA4MDAyLDU2LjA5NjE3MjQgNDYuOTkzODM2OSw1NC42MTM3MzY3IEM0NS4yNzYxMTIsNTMuMTMzNDYzNCA0NC4zMzEwMDE2LDUxLjI1NjM2MDIgNDMuOTUwMjE1OCw0OC45ODYwMzEzIEw0My45NTAyMTU4LDQwLjUwODc5MDkgQzQ0LjcxMTc4NzQsMzguNDQ2Nzg4NyA0NS40ODA1OTQsMzYuNjkyMjMwNiA0Ny4wNDEwNTQ0LDM1LjI0NTExNjcgQzQ4LjYwMTUxNDcsMzMuNzk4MDAyNyA1MC4zNjM3OTE1LDMzLjA3NDI2NTUgNTIuMzMyODM1LDMzLjA3NDI2NTUgQzU0LjgyNTQ1OTEsMzMuMDc0MjY1NSA1Ni44MjU3MjcsMzQuMTAwNDAwOSA1OC4zMzQwMTk3LDM2LjE1MjMxMTEgQzU5Ljg0MTU1MDgsMzguMjA0MjIxNCA2MC41OTU1MDY3LDQxLjEyMzY3OTIgNjAuNTk1NTA2Nyw0NC45MTEwNDQ5IEM2MC41OTU1MDY3LDQ5LjI5Mjc1NDUgNTkuNzYxNTg1OCw1Mi4zNzY1NjcgNTguMDk2MDI4NSw1NC4xNTk1OTg4IE01My41Mjk2NDQ5LDI5IEM0OS4wOTUwMTMxLDI5IDQ1Ljg1NDE0NDksMzEuMjIwOTUwNSA0My41Njk0Mjk5LDM1LjY2MDY4ODkgTDQzLjU2OTQyOTksMjkuNjMyMTg4OCBMMzksMjkuNjMyMTg4OCBMMzksNzAgTDQzLjk1MDIxNTgsNzAgTDQzLjk1MDIxNTgsNTUuMzE5ODEyOSBDNDYuMjM0OTMwOCw1OC45MDc4NjI2IDQ5LjM2MTE4MjQsNjAuNzAyNzg4NSA1My4zNDAzOTQzLDYwLjcwMjc4ODUgQzU3LjA0ODg2NzUsNjAuNzAyNzg4NSA2MC4wODMzNDk4LDU5LjI2MzYwMzkgNjIuNDUwNjk1Myw1Ni4zODY2NzY1IEM2NC44MTY4OTg0LDUzLjUwODMwNzQgNjYsNDkuNjE4OTQwOSA2Niw0NC43MTc4NTYxIEM2Niw0MC4xNzI1MTI2IDY0Ljg3Mjg3MzksMzYuNDE2ODY0NSA2Mi41NzI5Mjc1LDMzLjQ1MDE5MDggQzYwLjI3MTgzODgsMzAuNDgzMTU2NiA1Ny4yNzM1MzEyLDI5IDUzLjUyOTY0NDksMjkiIGlkPSJTaGFwZSIgZmlsbD0iIzVEQTdBMyIgZmlsbC1ydWxlPSJub256ZXJvIj48L3BhdGg+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik03Ny40MDY0Nzk2LDQxLjU2NzE4NTkgQzc3LjYwMzM4NjQsMzguNzQzMDk5MiA3OC41MDk4MDYsMzYuNTY3ODQ2NCA4MC4xMjM5Mzg0LDM0LjkzNjU4MzMgQzgxLjczNjk5MDksMzMuMzA0OTY3MiA4My43MDI0NTk4LDMyLjQ2NTE1NDQgODYuMDE5NjI1NCwzMi40NjUxNTQ0IEM4Ny43NDIxMTA1LDMyLjQ2NTE1NDQgODkuMjE2NTcyMiwzMi45MDQyOTk5IDkwLjQ0NTE3MDMsMzMuODA4MDA3NyBDOTEuNjcyNjg4NSwzNC43MTAzMDM0IDkyLjU0NDU1MDQsMzUuODQ1MjMzMiA5My4wNTg5NTYxLDM3LjEyNzAxNTYgQzkzLjU3NDgwMTcsMzguNDA4NDQ0OSA5My44NTA1NDMzLDM5LjgwMjEzMTcgOTMuODkwNTAwNiw0MS41NjcxODU5IEw3Ny40MDY0Nzk2LDQxLjU2NzE4NTkgWiBNOTUuMzMxODQ0NSwzMy4wNDQ3OTgyIEM5Mi45NDUyMDM3LDMwLjM4NDE1NTUgODkuNzkyMTczOSwyOSA4NS44NzA5NTUzLDI5IEM4MS44OTE0MjA2LDI5IDc4LjU4MzYwMTEsMzAuNDE1NTczNSA3NS45NTA3MzY2LDMzLjMwMjQ5NjEgQzczLjMxNzE1MjIsMzYuMTg4MDA2NyA3MiwzOS45NjAyODA2IDcyLDQ0LjY0NTA4NzUgQzcyLDQ5LjIzMjQ2MzMgNzMuMjY2Mzk1Niw1Mi45MzE2NjM5IDc1LjgwMTcwNjYsNTUuNzU5OTg2OCBDNzguMzM2Mjk3Niw1OC41ODk3MjE3IDgxLjY1MzQ3NjQsNjAgODUuNzUyODgzMSw2MCBDODguODYxNjM1OSw2MCA5MS41NjM2MTU4LDU5LjE3NTM2NjcgOTMuODYwNjIyNiw1Ny41Mjc4NjUxIEM5Ni4xNTgzNDk0LDU1Ljg4MTA2OTUgOTcuNzAyNjQ2NSw1My44MDExMjk2IDk4LjQ5NDk1MzcsNTEuMjg2NjMzNCBMOTQuMTU5MDQyNyw1MC40MTM2Mzc2IEM5Mi41OTM4NjcxLDU0LjI3Njk4ODIgODkuOTAwODg2Niw1Ni4yMDk3MjI2IDg2LjA3OTAyMTQsNTYuMjA5NzIyNiBDODMuOTYwMjAyNyw1Ni4yMDk3MjI2IDgxLjk1MDQ1NjYsNTUuNTQxODI2MSA4MC4wNDk3ODMzLDUzLjk4ODU3ODQgQzc4LjE0ODc1MDEsNTIuNDM0NjI0NyA3Ny4xOTc2OTM1LDQ5LjMzMzQyNDQgNzcuMTk3NjkzNSw0NS4wOTcyOTQzIEw5OSw0NS4wOTcyOTQzIEM5OC45NDA2MDQsMzkuNDQ5MTIwOSA5Ny43MTc3NjU1LDM1LjcwNDczNDkgOTUuMzMxODQ0NSwzMy4wNDQ3OTgyIEw5NS4zMzE4NDQ1LDMzLjA0NDc5ODIgWiIgaWQ9IlNoYXBlIiBmaWxsPSIjNURBN0EzIiBmaWxsLXJ1bGU9Im5vbnplcm8iPjwvcGF0aD4KICAgICAgICAgICAgPHBhdGggZD0iTTEyMy40MDI0LDMwLjc0NDkzNTUgQzEyMS42NTMyLDI5LjU4MjAwNjcgMTE5LjQ3NTYsMjkgMTE2Ljk4ODgsMjkgQzExMi42NzYsMjkgMTA5LjIsMzEuMTI4MTIwMSAxMDYuNCwzNS4zODMyNzU3IEwxMDYuNCwyOS42MzQ0MjM0IEwxMDIsMjkuNjM0NDIzNCBMMTAyLDYwIEwxMDYuOCw2MCBMMTA2LjgsNDMuNDM2NjU3NSBDMTA2LjgsNDAuMzE1ODcyNyAxMDcuNzM4NCwzNy43OTk1MDcyIDEwOS41MzE2LDM1Ljg4OTczIEMxMTEuMzIzNiwzMy45ODEwMzczIDExMy41NjI0LDMzLjAyNjY5MDkgMTE2LjIwMjQsMzMuMDI2NjkwOSBDMTE4LjExNzIsMzMuMDI2NjkwOSAxMTkuNzk1MiwzMy41OTM1MTQ4IDEyMS4xMzcyLDM0LjcyNzE2MjYgQzEyMi40Nzk2LDM1Ljg2MDA4NzQgMTIzLjIsMzcuODE5MDI3OSAxMjMuMiw0MC42MDM2MjI2IEwxMjMuMiw2MCBMMTI4LDYwIEwxMjgsNDIuNTQxOTU3OCBDMTI4LDM4Ljc0NDA5MzEgMTI3LjY2MjQsMzYuMTE5NjQwNyAxMjcuMDEyNCwzNC42Njc1MTU5IEMxMjYuMzYzMiwzMy4yMTUzOTEyIDEyNS4xNTIsMzEuOTA3ODY0NCAxMjMuNDAyNCwzMC43NDQ5MzU1IFoiIGlkPSJTaGFwZSIgZmlsbD0iIzVEQTdBMyIgZmlsbC1ydWxlPSJub256ZXJvIj48L3BhdGg+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNDcuMjk3ODcyLDQ5LjYwNTg3OTYgQzE0Ny4yOTc4NzIsNTEuODU4MzkzNCAxNDcuMTIyODA5LDUzLjQ4NjUyNzUgMTQ2Ljc4MjA4NSw1NC40OTI4Mzc3IEMxNDYuNDQwMjc3LDU1LjQ5ODA1MjYgMTQ1Ljc3MDQwNCw1Ni4zMTY2ODM4IDE0NC43NzUsNTYuOTUwNTU3MSBDMTQzLjc4MDMxOSw1Ny41ODM3IDE0Mi4xMjYyNTUsNTcuODk5MTc2MSAxNDAuMDI2NTc0LDU3Ljg5OTE3NjEgQzEzOC41NTA0NjgsNTcuODk5MTc2MSAxMzcuMTcwMjEzLDU3LjcwMzgyOTIgMTM1LDU3LjMxMjc3MDMgTDEzNSw2MS4yMTg5Nzc2IEMxMzcuMTcwMjEzLDYxLjczODkyODkgMTM4Ljc4MDg3Miw2MiAxNDAuNjA1NjYsNjIgQzE0NC4wMTM2MTcsNjIgMTQ2Ljc5NTQ2OCw2MS4wODc1MjkzIDE0OC44NTkzNCw1OS4yNjQ0MTM0IEMxNTAuOTIyNDg5LDU3LjQ0MDIwMjIgMTUyLDU0LjIyMDA4MjQgMTUyLDQ5LjYwMjk1ODUgTDE1MiwyMyBMMTQ3LjI5Nzg3MiwyMyBMMTQ3LjI5Nzg3Miw0OS42MDU4Nzk2IFoiIGlkPSJTaGFwZSIgZmlsbD0iI0ZGRkZGRiIgZmlsbC1ydWxlPSJub256ZXJvIj48L3BhdGg+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNzYuMjc2Mjg3LDQxLjgwOTg1MDUgQzE3NC41NzcyODcsNDMuNjE0NjkxMSAxNzIuNDczNjEzLDQ0LjUxNzI5MDkgMTY5Ljk2NjMxMyw0NC41MTcyOTA5IEMxNjcuNjg4NzU4LDQ0LjUxNzI5MDkgMTY1LjY5Mjk3NCw0My43Mzg2MDU1IDE2My45NzY1MTYsNDIuMTgxNTkzOCBDMTYyLjI2MDQwNyw0MC42MjM1MDQ2IDE2MS40MDIxNzgsMzguNTA3MjYxNyAxNjEuNDAyMTc4LDM1LjgzMTA2OTMgQzE2MS40MDIxNzgsMzMuMzQwMjA5OCAxNjIuMTc2MjYsMzEuMjI2NDgxMSAxNjMuNzIzNzI2LDI5LjQ5NTYzMDEgQzE2NS4yNjk3OTUsMjcuNzYzNzAxNSAxNjcuMzc3NjU5LDI2Ljg5ODA5NjQgMTcwLjA0NTkyMSwyNi44OTgwOTY0IEMxNzIuNjc4MjE5LDI2Ljg5ODA5NjQgMTc0Ljc5OTcsMjcuNzQwMzU1MyAxNzYuNDA4OTY3LDI5LjQyNjY2OSBDMTc4LjAxODkzMiwzMS4xMTI2MjM1IDE3OC44MjM3NCwzMy4xMjkwMTY1IDE3OC44MjM3NCwzNS40NzM2OTI5IEMxNzguODIzNzQsMzcuODkyNzE4IDE3Ny45NzM4OTEsNDAuMDA1MDEgMTc2LjI3NjI4Nyw0MS44MDk4NTA1IE0xODAuMzQ0MzIxLDI3Ljk1NzY1NDUgQzE3Ny45MDgyNDksMjQuNjUzOTg4MiAxNzQuNDA0MTA1LDIzIDE2OS44MzIyMzYsMjMgQzE2Ni4wOTc2NDgsMjMgMTYzLjAyNDcxMywyNC4yNjQyODYzIDE2MC42MTUxNzcsMjYuNzkxNzgxNCBDMTU4LjIwNDI0NCwyOS4zMTk5OTQ4IDE1NywzMi4zNjAzODc5IDE1NywzNS45MTQwMzgxIEMxNTcsMzkuNDEyNzM1IDE1OC4xNDYyODQsNDIuMzQ3ODkwNiAxNjAuNDQwOTQ3LDQ0LjcxOTg2NDEgQzE2Mi43MzU5NTksNDcuMDkxNDc4NCAxNjUuNTcyNTE1LDQ4LjI3NzgyNDMgMTY4Ljk1MTMxMiw0OC4yNzc4MjQzIEMxNzMuNzM2MTY2LDQ4LjI3NzgyNDMgMTc3LjMyMDYxNyw0Ni4wMjY4OTE5IDE3OS43MDQzMTUsNDEuNTI1NzQ1MyBDMTc5LjY1MDU0NSw0Ni42NjcyOTYgMTc4Ljc0NzYyNCw1MC43Mzg4NzI2IDE3Ni45OTY1OTksNTMuNzM5Mzk3NSBDMTc1LjI0NDE3Nyw1Ni43NDA2NDA4IDE3Mi42MzQyMjUsNTguMjM5ODI1OCAxNjkuMTY0OTk2LDU4LjIzOTgyNTggQzE2NS41OTEwMiw1OC4yMzk4MjU4IDE2My4wNDcwNTksNTYuNTExNDg4OSAxNjEuNTM0ODU4LDUzLjA1MzAxOTMgTDE1Ny44Nzk4NzcsNTQuNDI1Nzc1NyBDMTU5LjgwMDI0Myw1OS40NzUzNzgzIDE2My41NDQyNTksNjIgMTY5LjExMjYyMyw2MiBDMTczLjg3ODI3Myw2MiAxNzcuNTUyMTA5LDYwLjExOTAxNDkgMTgwLjEzMDk4Niw1Ni4zNTY2ODU3IEMxODIuNzA5ODYzLDUyLjU5Mzk5NzIgMTg0LDQ3LjY3Mjk3ODMgMTg0LDQxLjU5MzYyODggQzE4NCwzNS44MDgwODIzIDE4Mi43ODE0NCwzMS4yNjI3NTc1IDE4MC4zNDQzMjEsMjcuOTU3NjU0NSIgaWQ9IlNoYXBlIiBmaWxsPSIjRkZGRkZGIiBmaWxsLXJ1bGU9Im5vbnplcm8iPjwvcGF0aD4KICAgICAgICAgICAgPHBhdGggZD0iTTEyNC4zMzAyOTMsNjIuNzMyMDAzNiBDMTI2LjExMDM2Niw2NS45NDEzOTgxIDEyOC4zMzYxNzgsNjguOTYxNzY3NSAxMzEuMDA3NzMsNzEuNjk4NDQyNSBDMTQ3LjAxOTQxMiw4OC4xMDA1MTkyIDE3Mi45Nzk0NzgsODguMTAwNTE5MiAxODguOTkxMTYsNzEuNjk4NDQyNSBDMjA1LjAwMjk0Nyw1NS4yOTY0MzcxIDIwNS4wMDI5NDcsMjguNzAzNTY4MyAxODguOTkxMTYsMTIuMzAxNTYyOCBDMTcyLjk3OTQ3OCwtNC4xMDA1MjA5NSAxNDcuMDE5NDEyLC00LjEwMDUyMDk1IDEzMS4wMDc3MywxMi4zMDE1NjI4IEMxMjYuMjY5OTMzLDE3LjE1NDgyODggMTIyLjkzNDAxOCwyMi45MDAzNDY4IDEyMSwyOS4wMTAwOTQ3IEwxMjMuMTI2NCwyOS45Nzk5MDQ0IEMxMjQuOTM5NTY1LDI0LjEyNjU4MDcgMTI4LjExMTk2OSwxOC42MTkzOTIyIDEzMi42NDM2MDQsMTMuOTc3MzE3MyBDMTQ3Ljc1MTgyNywtMS40OTkyNzA5MiAxNzIuMjQ3MDgsLTEuNDk5MjcwOTIgMTg3LjM1NTI4NiwxMy45NzczMTczIEMyMDIuNDYzNTk3LDI5LjQ1MzgyIDIwMi40NjM1OTcsNTQuNTQ2MTc4MyAxODcuMzU1Mjg2LDcwLjAyMjY5MTYgQzE3Mi4yNDcwOCw4NS40OTkyNTQ5IDE0Ny43NTE4MjcsODUuNDk5MjU0OSAxMzIuNjQzNjA0LDcwLjAyMjY5MTYgQzEzMC4xNzg1NjIsNjcuNDk3NTYwMyAxMjguMTE1NzI1LDY0LjcxNjQ2NzggMTI2LjQ1NTA1OCw2MS43NjI5Mjc2IEwxMjQuMzMwMjkzLDYyLjczMjAwMzYgWiIgaWQ9IlNoYXBlIiBmaWxsPSIjNURBN0EzIiBmaWxsLXJ1bGU9Im5vbnplcm8iPjwvcGF0aD4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==" alt="OpenJ9 Logo"/></div><style data-emotion-css="1o8fo9j">.css-1o8fo9j{width:90%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;text-align:center;margin-top:8rem;margin-left:5%;}@media screen and (min-width:35rem){.css-1o8fo9j{width:90%;margin-top:8rem;margin-left:5%;}}@media screen and (min-width:62.5rem){.css-1o8fo9j{width:40%;-webkit-align-items:start;-webkit-box-align:start;-ms-flex-align:start;align-items:start;text-align:left;margin-top:3rem;margin-left:20%;}}@media screen and (min-width:85rem){.css-1o8fo9j{width:33%;-webkit-align-items:start;-webkit-box-align:start;-ms-flex-align:start;align-items:start;text-align:left;margin-top:3rem;margin-left:15%;}}</style><div class="css-1o8fo9j"><style data-emotion-css="tfdfz8">.css-tfdfz8{font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.125;font-weight:700;margin-top:16px;margin-bottom:16px;font-size:36px;}</style><h1 class="css-tfdfz8">Unleash the power of Java</h1><style data-emotion-css="fza3g9">.css-fza3g9{margin-bottom:40px;font-size:18px;}</style><p class="css-fza3g9">Optimized to run Java™ applications cost-effectively in the cloud, Eclipse OpenJ9 is a fast and efficient JVM that delivers power and performance when you need it most.</p><p class="css-fza3g9">Grab a pre-built binary of OpenJDK with OpenJ9 from the AdoptOpenJDK community.</p><style data-emotion-css="1575med">.css-1575med{background-color:var(--theme-ui-colors-secondary,#5DA7A3);color:white;border-radius:2.5rem;height:2rem;width:12rem;border:none;font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';font-size:16px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-text-decoration:none;text-decoration:none;}.css-1575med:hover{cursor:pointer;background-color:var(--theme-ui-colors-secondaryDark,#5d9da3);border-color:var(--theme-ui-colors-secondaryDark,#5d9da3);-webkit-text-decoration:none;text-decoration:none;color:white;}</style><a href="https://adoptopenjdk.net/releases.html?variant=openjdk8&amp;jvmVariant=openj9" rel="noopener noreferrer" target="_blank" class="css-1575med"><style data-emotion-css="1x97c6v">.css-1x97c6v{width:80%;}</style><img src="/openj9/static/adopt-open-jdk-7072a4c16b356c87671638dba5c860e9.png" alt="adoptopenJDK Logo" class="css-1x97c6v"/></a></div></section><style data-emotion-css="16fon6c">.css-16fon6c{display:grid;grid-gap:3rem;grid-template-columns:repeat(1,1fr);}</style><section class="css-16fon6c"><style data-emotion-css="tk5ob7">.css-tk5ob7{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:space-around;-webkit-justify-content:space-around;-ms-flex-pack:space-around;justify-content:space-around;padding:5% 5% 0 5%;}</style><div class="css-tk5ob7"><style data-emotion-css="gu2vom">.css-gu2vom{min-height:12.5rem;border-radius:0.5rem;background-color:white;color:var(--theme-ui-colors-darkText,#4d4f50);margin-top:40px;margin-bottom:40px;margin-left:16px;margin-right:16px;width:18rem;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}</style><article class="css-gu2vom"><i class="fas fa-rocket fa-5x"></i><style data-emotion-css="1m3g4j3">.css-1m3g4j3{text-align:center;margin-bottom:0.25rem;}</style><style data-emotion-css="2ezcdc">.css-2ezcdc{font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.125;font-weight:700;margin-top:16px;margin-bottom:16px;font-size:20px;text-align:center;margin-bottom:0.25rem;}</style><h4 class="css-2ezcdc">Optimized for the Cloud</h4><style data-emotion-css="xi606m">.css-xi606m{text-align:center;}</style><style data-emotion-css="1kwj0e6">.css-1kwj0e6{margin-bottom:40px;font-size:18px;text-align:center;}</style><p class="css-1kwj0e6">for microservices and monoliths too!</p></article><article class="css-gu2vom"><i class="fas fa-tachometer-alt fa-5x"></i><h4 class="css-2ezcdc">42% Faster Startup</h4><p class="css-1kwj0e6">over HotSpot</p></article><article class="css-gu2vom"><i class="fas fa-chart-line fa-5x"></i><h4 class="css-2ezcdc">28% Faster Ramp-up</h4><p class="css-1kwj0e6">when deployed to cloud vs HotSpot</p></article><article class="css-gu2vom"><i class="fas fa-archive fa-5x"></i><h4 class="css-2ezcdc">66% Smaller</h4><p class="css-1kwj0e6">when compared to HotSpot</p></article></div><style data-emotion-css="hqj7sj">.css-hqj7sj{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;padding-bottom:5%;}</style><div class="css-hqj7sj"><style data-emotion-css="e7yd4b">.css-e7yd4b{background-color:var(--theme-ui-colors-secondary,#5DA7A3);color:white;border-radius:2.5rem;height:2rem;width:15rem;border:none;font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';font-size:16px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-text-decoration:none;text-decoration:none;}.css-e7yd4b:hover{cursor:pointer;background-color:var(--theme-ui-colors-secondaryDark,#5d9da3);border-color:var(--theme-ui-colors-secondaryDark,#5d9da3);-webkit-text-decoration:none;text-decoration:none;color:white;}</style><a class="css-e7yd4b" href="/openj9/performance">Read performance details</a></div></section><style data-emotion-css="4yursh">.css-4yursh{padding:calc(5% + 2.5rem);background-color:#F5F9FC;min-height:50vh;}</style><section class="css-4yursh"><style data-emotion-css="4ddra2">.css-4ddra2{font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.125;font-weight:700;margin-top:16px;margin-bottom:16px;font-size:24px;}</style><h3 class="css-4ddra2">Join the conversation</h3><style data-emotion-css="1i0vn8e">.css-1i0vn8e{display:grid;grid-gap:6rem;grid-template-columns:repeat(1,1fr);background-color:white;border-radius:0.5rem;padding:5%;}@media screen and (min-width:35rem){.css-1i0vn8e{grid-template-columns:repeat(1,1fr);}}@media screen and (min-width:62.5rem){.css-1i0vn8e{grid-template-columns:repeat(1,1fr);}}@media screen and (min-width:85rem){.css-1i0vn8e{grid-template-columns:repeat(2,1fr);}}</style><div class="css-1i0vn8e"><style data-emotion-css="1b6n4o1">.css-1b6n4o1{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;}</style><div class="css-1b6n4o1"><style data-emotion-css="fza3g9">.css-fza3g9{margin-bottom:40px;font-size:18px;}</style><p class="css-fza3g9">Join us on Slack where you can ask questions and chat directly with our developers. Whether you simply have a question about using OpenJ9, an idea for improvement, or a problem you want to discuss, we&#x27;d love to hear from you.</p><style data-emotion-css="1575med">.css-1575med{background-color:var(--theme-ui-colors-secondary,#5DA7A3);color:white;border-radius:2.5rem;height:2rem;width:12rem;border:none;font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';font-size:16px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-text-decoration:none;text-decoration:none;}.css-1575med:hover{cursor:pointer;background-color:var(--theme-ui-colors-secondaryDark,#5d9da3);border-color:var(--theme-ui-colors-secondaryDark,#5d9da3);-webkit-text-decoration:none;text-decoration:none;color:white;}</style><a href="https://openj9.slack.com/join/shared_invite/enQtNDU4MDI4Mjk0MTk2LWVhNTMzMGY1N2JkODQ1OWE0NTNmZjM4ZDcxOTBiMjk3NGFjM2U0ZDNhMmY0MDZlNzU0ZjAyNzQ1ODlmYjg3MjA" rel="noopener noreferrer" target="_blank" class="css-1575med">Join OpenJ9 slack<style data-emotion-css="npnnwu">.css-npnnwu{width:10%;margin-left:0.8rem;}</style><img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjRweCIgaGVpZ2h0PSIyNHB4IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5zbGFjay1pY29uPC90aXRsZT4KICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPgogICAgPGcgaWQ9IlBhZ2UtMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9InNsYWNrLWljb24iIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0xLjAwMDAwMCwgLTEuMDAwMDAwKSI+CiAgICAgICAgICAgIDxnIGlkPSJiYWNrZ3JvdW5kIj4KICAgICAgICAgICAgICAgIDxyZWN0IGlkPSJjYW52YXNfYmFja2dyb3VuZCIgeD0iMCIgeT0iMCIgd2lkdGg9IjI2IiBoZWlnaHQ9IjI2Ij48L3JlY3Q+CiAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgPGcgaWQ9IkxheWVyLTEiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDIuMDAwMDAwLCAyLjAwMDAwMCkiIGZpbGwtcnVsZT0ibm9uemVybyI+CiAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJzdmdfMSIgc3Ryb2tlPSIjRkZGRkZGIiAgY3g9IjExIiBjeT0iMTEiIHI9IjExIj48L2NpcmNsZT4KICAgICAgICAgICAgICAgIDxnIGlkPSJzdmdfMTkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDMuMDAwMDAwLCAyLjAwMDAwMCkiIGZpbGw9IiNGRkZGRkYiICBzdHJva2Utd2lkdGg9IjAuNSI+CiAgICAgICAgICAgICAgICAgICAgPGcgaWQ9InN2Z182IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjA4NDA4MSwgMC45NzE0MjUpIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGcgaWQ9InN2Z183IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjAwMDAwMCwgOC40NjAxMjgpIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0zLjQyMjg3NTQ2LDEuNzMwMTYyNTkgQzMuNDIyODc1NDYsMi42NTQyNjg4MyAyLjY2Nzk3MTc3LDMuNDA5MTcyNTIgMS43NDM4NjU1MywzLjQwOTE3MjUyIEMwLjgxOTc1OTI4OCwzLjQwOTE3MjUyIDAuMDY0ODU1NTk4MSwyLjY1NDI2ODgzIDAuMDY0ODU1NTk4MSwxLjczMDE2MjU5IEMwLjA2NDg1NTU5ODEsMC44MDYwNTYzNTQgMC44MTk3NTkyODgsMC4wNTExNTI2NjQ1IDEuNzQzODY1NTMsMC4wNTExNTI2NjQ1IEwzLjQyMjg3NTQ2LDAuMDUxMTUyNjY0NSBMMy40MjI4NzU0NiwxLjczMDE2MjU5IFoiIGlkPSJzdmdfOCI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTQuMjY4ODg4MjEsMS43MzAxNjI1OSBDNC4yNjg4ODgyMSwwLjgwNjA1NjM1NCA1LjAyMzc5MTksMC4wNTExNTI2NjQ1IDUuOTQ3ODk4MTQsMC4wNTExNTI2NjQ1IEM2Ljg3MjAwNDM4LDAuMDUxMTUyNjY0NSA3LjYyNjkwODA3LDAuODA2MDU2MzU0IDcuNjI2OTA4MDcsMS43MzAxNjI1OSBMNy42MjY5MDgwNyw1LjkzNDE5NTIxIEM3LjYyNjkwODA3LDYuODU4MzAxNDUgNi44NzIwMDQzOCw3LjYxMzIwNTE0IDUuOTQ3ODk4MTQsNy42MTMyMDUxNCBDNS4wMjM3OTE5LDcuNjEzMjA1MTQgNC4yNjg4ODgyMSw2Ljg1ODMwMTQ1IDQuMjY4ODg4MjEsNS45MzQxOTUyMSBDNC4yNjg4ODgyMSw1LjkzNDE5NTIxIDQuMjY4ODg4MjEsMS43MzAxNjI1OSA0LjI2ODg4ODIxLDEuNzMwMTYyNTkgTDQuMjY4ODg4MjEsMS43MzAxNjI1OSBaIiBpZD0ic3ZnXzkiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgICAgICAgICA8ZyBpZD0ic3ZnXzEwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik01Ljk0Nzg5ODE0LDMuNDQ4MjE5MjcgQzUuMDIzNzkxOSwzLjQ0ODIxOTI3IDQuMjY4ODg4MjEsMi42OTMzMTU1OCA0LjI2ODg4ODIxLDEuNzY5MjA5MzQgQzQuMjY4ODg4MjEsMC44NDUxMDMwOTYgNS4wMjM3OTE5LDAuMDkwMTk5NDA3IDUuOTQ3ODk4MTQsMC4wOTAxOTk0MDcgQzYuODcyMDA0MzgsMC4wOTAxOTk0MDcgNy42MjY5MDgwNywwLjg0NTEwMzA5NiA3LjYyNjkwODA3LDEuNzY5MjA5MzQgTDcuNjI2OTA4MDcsMy40NDgyMTkyNyBMNS45NDc4OTgxNCwzLjQ0ODIxOTI3IFoiIGlkPSJzdmdfMTEiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik01Ljk0Nzg5ODE0LDQuMjk0MjMyMDIgQzYuODcyMDA0MzgsNC4yOTQyMzIwMiA3LjYyNjkwODA3LDUuMDQ5MTM1NzEgNy42MjY5MDgwNyw1Ljk3MzI0MTk1IEM3LjYyNjkwODA3LDYuODk3MzQ4MTkgNi44NzIwMDQzOCw3LjY1MjI1MTg4IDUuOTQ3ODk4MTQsNy42NTIyNTE4OCBMMS43NDM4NjU1Myw3LjY1MjI1MTg4IEMwLjgxOTc1OTI4OCw3LjY1MjI1MTg4IDAuMDY0ODU1NTk4MSw2Ljg5NzM0ODE5IDAuMDY0ODU1NTk4MSw1Ljk3MzI0MTk1IEMwLjA2NDg1NTU5ODEsNS4wNDkxMzU3MSAwLjgxOTc1OTI4OCw0LjI5NDIzMjAyIDEuNzQzODY1NTMsNC4yOTQyMzIwMiBDMS43NDM4NjU1Myw0LjI5NDIzMjAyIDUuOTQ3ODk4MTQsNC4yOTQyMzIwMiA1Ljk0Nzg5ODE0LDQuMjk0MjMyMDIgWiIgaWQ9InN2Z18xMiI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICAgICAgICAgIDxnIGlkPSJzdmdfMTMiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDguNDYwMTI4LCAwLjAwMDAwMCkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTQuMjI5ODQxNDcsNS45NzMyNDE5NSBDNC4yMjk4NDE0Nyw1LjA0OTEzNTcxIDQuOTg0NzQ1MTYsNC4yOTQyMzIwMiA1LjkwODg1MTQsNC4yOTQyMzIwMiBDNi44MzI5NTc2NCw0LjI5NDIzMjAyIDcuNTg3ODYxMzMsNS4wNDkxMzU3MSA3LjU4Nzg2MTMzLDUuOTczMjQxOTUgQzcuNTg3ODYxMzMsNi44OTczNDgxOSA2LjgzMjk1NzY0LDcuNjUyMjUxODggNS45MDg4NTE0LDcuNjUyMjUxODggTDQuMjI5ODQxNDcsNy42NTIyNTE4OCBMNC4yMjk4NDE0Nyw1Ljk3MzI0MTk1IFoiIGlkPSJzdmdfMTQiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0zLjM4MzgyODcyLDUuOTczMjQxOTUgQzMuMzgzODI4NzIsNi44OTczNDgxOSAyLjYyODkyNTAzLDcuNjUyMjUxODggMS43MDQ4MTg3OSw3LjY1MjI1MTg4IEMwLjc4MDcxMjU0NSw3LjY1MjI1MTg4IDAuMDI1ODA4ODU1Niw2Ljg5NzM0ODE5IDAuMDI1ODA4ODU1Niw1Ljk3MzI0MTk1IEwwLjAyNTgwODg1NTYsMS43NjkyMDkzNCBDMC4wMjU4MDg4NTU2LDAuODQ1MTAzMDk2IDAuNzgwNzEyNTQ1LDAuMDkwMTk5NDA3IDEuNzA0ODE4NzksMC4wOTAxOTk0MDcgQzIuNjI4OTI1MDMsMC4wOTAxOTk0MDcgMy4zODM4Mjg3MiwwLjg0NTEwMzA5NiAzLjM4MzgyODcyLDEuNzY5MjA5MzQgTDMuMzgzODI4NzIsNS45NzMyNDE5NSBaIiBpZD0ic3ZnXzE1Ij48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgICAgICAgICAgPGcgaWQ9InN2Z18xNiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoOC40NjAxMjgsIDguNDYwMTI4KSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMS43MDQ4MTg3OSw0LjI1NTE4NTI4IEMyLjYyODkyNTAzLDQuMjU1MTg1MjggMy4zODM4Mjg3Miw1LjAxMDA4ODk3IDMuMzgzODI4NzIsNS45MzQxOTUyMSBDMy4zODM4Mjg3Miw2Ljg1ODMwMTQ1IDIuNjI4OTI1MDMsNy42MTMyMDUxNCAxLjcwNDgxODc5LDcuNjEzMjA1MTQgQzAuNzgwNzEyNTQ1LDcuNjEzMjA1MTQgMC4wMjU4MDg4NTU2LDYuODU4MzAxNDUgMC4wMjU4MDg4NTU2LDUuOTM0MTk1MjEgTDAuMDI1ODA4ODU1Niw0LjI1NTE4NTI4IEwxLjcwNDgxODc5LDQuMjU1MTg1MjggWiIgaWQ9InN2Z18xNyI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTEuNzA0ODE4NzksMy40MDkxNzI1MiBDMC43ODA3MTI1NDUsMy40MDkxNzI1MiAwLjAyNTgwODg1NTYsMi42NTQyNjg4MyAwLjAyNTgwODg1NTYsMS43MzAxNjI1OSBDMC4wMjU4MDg4NTU2LDAuODA2MDU2MzU0IDAuNzgwNzEyNTQ1LDAuMDUxMTUyNjY0NSAxLjcwNDgxODc5LDAuMDUxMTUyNjY0NSBMNS45MDg4NTE0LDAuMDUxMTUyNjY0NSBDNi44MzI5NTc2NCwwLjA1MTE1MjY2NDUgNy41ODc4NjEzMywwLjgwNjA1NjM1NCA3LjU4Nzg2MTMzLDEuNzMwMTYyNTkgQzcuNTg3ODYxMzMsMi42NTQyNjg4MyA2LjgzMjk1NzY0LDMuNDA5MTcyNTIgNS45MDg4NTE0LDMuNDA5MTcyNTIgTDEuNzA0ODE4NzksMy40MDkxNzI1MiBMMS43MDQ4MTg3OSwzLjQwOTE3MjUyIFoiIGlkPSJzdmdfMTgiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+" alt="slack Logo" class="css-npnnwu"/></a></div><div class="css-1b6n4o1"><p class="css-fza3g9">Like all great open source projects, we have a vibrant and busy GitHub repository where you can create issues to explore ideas, request new features, or report any difficulties you are having.</p><a href="https://github.com/eclipse/openj9/issues" rel="noopener noreferrer" target="_blank" class="css-1575med">See OpenJ9 issues<img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIyNXB4IiB2aWV3Qm94PSIwIDAgMjUgMjUiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5HaXRIdWI8L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0iR2l0SHViIiBmaWxsPSIjRkZGRkZGIiBmaWxsLXJ1bGU9Im5vbnplcm8iPgogICAgICAgICAgICA8ZyBpZD0iZ2l0aHViLWxvZ28iPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTIzLjMyMzIwOSw2LjM1NjM4NTg4IEMyMi4yMDU0MjQzLDQuNDI4ODY0OTMgMjAuNjg5MjIwNywyLjkwMjg0MzkxIDE4Ljc3NDE5OTMsMS43Nzc5Nzg1OCBDMTYuODU4ODkyOCwwLjY1MzA1NTg3MyAxNC43Njc5NDkxLDAuMDkwNzM3OTUzMyAxMi40OTk4ODYsMC4wOTA3Mzc5NTMzIEMxMC4yMzIxMDc5LDAuMDkwNzM3OTUzMyA4LjE0MDQ4MDEzLDAuNjUzMjI3OTkzIDYuMjI1NTcyNjksMS43Nzc5Nzg1OCBDNC4zMTAzODAyMSwyLjkwMjc4NjU0IDIuNzk0MjMzNjcsNC40Mjg4NjQ5MyAxLjY3NjQ0ODk5LDYuMzU2Mzg1ODggQzAuNTU4ODM1MzMzLDguMjgzODQ5NDUgMCwxMC4zODg2NTQ2IDAsMTIuNjcwNzQzOSBDMCwxNS40MTIwNTEgMC43OTQ2NzE0ODMsMTcuODc3MTA0NSAyLjM4NDQxMzQ5LDIwLjA2NjUzNTUgQzMuOTczOTg0NDksMjIuMjU2MTM4OCA2LjAyNzQ3NDg4LDIzLjc3MTI1ODggOC41NDQ3MTM2NywyNC42MTIwNjc4IEM4LjgzNzcyNzQsMjQuNjY2ODAyMiA5LjA1NDYzNzM3LDI0LjYyODMwNDUgOS4xOTU2NzE2MSwyNC40OTc1NTAzIEM5LjMzNjc2Mjg1LDI0LjM2NjYyMzkgOS40MDcyMjI5NiwyNC4yMDI2NTAzIDkuNDA3MjIyOTYsMjQuMDA2MzE4MSBDOS40MDcyMjI5NiwyMy45NzM1NTc5IDkuNDA0NDI5NjQsMjMuNjc4ODMwMSA5LjM5OTAxNDAxLDIzLjEyMTc5MDUgQzkuMzkzNDI3MzcsMjIuNTY0NzUxIDkuMzkwODA1MDcsMjIuMDc4Nzk3MiA5LjM5MDgwNTA3LDIxLjY2NDE1ODcgTDkuMDE2NDQyOTcsMjEuNzI5MzM1MSBDOC43Nzc3NTY1LDIxLjc3MzM0MDUgOC40NzY2NDc4MywyMS43OTE5ODY5IDguMTEzMTE2OTgsMjEuNzg2NzA4NiBDNy43NDk3NTcxNSwyMS43ODE2MDIzIDcuMzcyNTQ0NzMsMjEuNzQzMjc2OCA2Ljk4MTk5Mjc3LDIxLjY3MjAxODkgQzYuNTkxMjY5NzksMjEuNjAxMzkyMSA2LjIyNzg1Mjk1LDIxLjQzNzU5MDcgNS44OTE0NTcyMiwyMS4xODA5NTg5IEM1LjU1NTIzMjUyLDIwLjkyNDMyNzEgNS4zMTY1NDYwNCwyMC41ODg0MDUxIDUuMTc1NDU0OCwyMC4xNzM3MDkzIEw1LjAxMjcwMTA2LDE5Ljc5Njc2NTIgQzQuOTA0MjE3NTcsMTkuNTQ1ODEzNCA0LjczMzQyNTkxLDE5LjI2NzAzNTUgNC41MDAwOTgwNSwxOC45NjE0NjQxIEM0LjI2Njc3MDE5LDE4LjY1NTYwNTggNC4wMzA4MjAwMywxOC40NDgyNTc5IDMuNzkyMTMzNTUsMTguMzM5MDc2MSBMMy42NzgxNzc0MywxOC4yNTY5NzQ2IEMzLjYwMjI0NDY5LDE4LjIwMjQxMjMgMy41MzE3ODQ1OCwxOC4xMzY2MDQ5IDMuNDY2NjI2MDgsMTguMDYwMjQwOCBDMy40MDE1MjQ1OCwxNy45ODM4NzY2IDMuMzUyNzgzOTcsMTcuOTA3NDU1MSAzLjMyMDIzMzIzLDE3LjgzMDkxODggQzMuMjg3NjI1NDcsMTcuNzU0MzI1MSAzLjMxNDY0NjU4LDE3LjY5MTUwMTEgMy40MDE1ODE1OSwxNy42NDIyMTcyIEMzLjQ4ODUxNjYsMTcuNTkyOTMzNCAzLjY0NTYyNjY4LDE3LjU2OTAwODYgMy44NzM1OTU5MywxNy41NjkwMDg2IEw0LjE5ODk4OTM5LDE3LjYxNzk0ODIgQzQuNDE2MDEzMzcsMTcuNjYxNzI0MiA0LjY4NDQ1NzI3LDE3Ljc5MjQ3ODUgNS4wMDQ2NjMxNCwxOC4wMTEwMTQzIEM1LjMyNDY5Nzk4LDE4LjIyOTM3NzkgNS41ODc3ODMyNywxOC41MTMyNjIxIDUuNzkzOTc2LDE4Ljg2MjU1MjEgQzYuMDQzNjY0NzUsMTkuMzEwNDA5OSA2LjM0NDQ4ODM4LDE5LjY1MTY2NzYgNi42OTczMDE5OSwxOS44ODY0OTc0IEM3LjA0OTgzMDU4LDIwLjEyMTMyNzMgNy40MDUyNjY0OSwyMC4yMzg1NDE0IDcuNzYzMjY3NzEsMjAuMjM4NTQxNCBDOC4xMjEyNjg5MiwyMC4yMzg1NDE0IDguNDMwNDcyNTIsMjAuMjExMjMxNiA4LjY5MDk5MjUxLDIwLjE1Njg5ODkgQzguOTUxMjI3NDcsMjAuMTAyMjc5MyA5LjE5NTM4NjU3LDIwLjAyMDE3NzcgOS40MjMzNTU4MiwxOS45MTEwNTMzIEM5LjUyMTAwODA2LDE5LjE3OTA4MTkgOS43ODY4ODY2NywxOC42MTY3NjM5IDEwLjIyMDc2MzYsMTguMjIzNjk3OSBDOS42MDIzNTY0MiwxOC4xNTgyOTIxIDkuMDQ2MzcxNDIsMTguMDU5NzgxOCA4LjU1MjUyMzU3LDE3LjkyODc5OCBDOC4wNTg5NjA3NSwxNy43OTc2NDIxIDcuNTQ4OTIzMDMsMTcuNTg0Nzg2MyA3LjAyMjc1MjQ2LDE3LjI4OTY1NjkgQzYuNDk2Mjk2ODUsMTYuOTk0OTI5MSA2LjA1OTU2OTU4LDE2LjYyODk0MzQgNS43MTI0NTY2MiwxNi4xOTIzMzA5IEM1LjM2NTI4NjY1LDE1Ljc1NTQ4ODkgNS4wODAzNjc4NSwxNS4xODE5ODMxIDQuODU4MDk5MjYsMTQuNDcyMzMgQzQuNjM1NzE2NjYsMTMuNzYyMzkgNC41MjQ0OTY4NiwxMi45NDM0NDAzIDQuNTI0NDk2ODYsMTIuMDE1MjUxNCBDNC41MjQ0OTY4NiwxMC42OTM2NTIzIDQuOTUzMTg2MjEsOS41NjkwMTY0MiA1LjgxMDM5Mzg5LDguNjQwNzEyNzggQzUuNDA4ODM5NjcsNy42NDcxMTgwNyA1LjQ0Njc0OTAzLDYuNTMzMjY4NDYgNS45MjQyMzYsNS4yOTkyNzg2OCBDNi4yMzg5MTIyMiw1LjIwMDg4MzA4IDYuNzA1NTY3OTQsNS4yNzQ3MjI4MSA3LjMyMzk3NTE0LDUuNTIwMzM4ODcgQzcuOTQyNDk2MzQsNS43NjYwNjk2OCA4LjM5NTM1NjQ3LDUuOTc2NTczMTQgOC42ODMwMTE1OSw2LjE1MTEwMzQxIEM4Ljk3MDY2NjcsNi4zMjU1NzYzIDkuMjAxMTQ0MjQsNi40NzM0Mjc4NyA5LjM3NDc4NjIzLDYuNTkzMzM4NTQgQzEwLjM4NDA4NzQsNi4zMDk1MTE3MSAxMS40MjU2NTQzLDYuMTY3NTY5NjEgMTIuNDk5NzcyLDYuMTY3NTY5NjEgQzEzLjU3Mzg4OTYsNi4xNjc1Njk2MSAxNC42MTU2ODQ2LDYuMzA5NTExNzEgMTUuNjI1MDQyOCw2LjU5MzMzODU0IEwxNi4yNDM1MDcsNi4yMDAzODcyNiBDMTYuNjY2NDM4Niw1LjkzODE5MDI1IDE3LjE2NTg3MzEsNS42OTc5MDk5MyAxNy43NDA2MTMzLDUuNDc5NDg4OTIgQzE4LjMxNTY5NTUsNS4yNjExODI2NiAxOC43NTU0NDQxLDUuMjAxMDU1MiAxOS4wNTk0MDMxLDUuMjk5NDUwOCBDMTkuNTQ3NDkzMyw2LjUzMzQ5Nzk1IDE5LjU5MDk4OTMsNy42NDcyOTAxOSAxOS4xODkzMjExLDguNjQwODg0OSBDMjAuMDQ2NDcxNyw5LjU2OTE4ODU0IDIwLjQ3NTMzMjEsMTAuNjk0MTExMiAyMC40NzUzMzIxLDEyLjAxNTQyMzUgQzIwLjQ3NTMzMjEsMTIuOTQzNjEyNCAyMC4zNjM3MTMzLDEzLjc2NTE0MzkgMjAuMTQxNjcyNywxNC40ODA1MzQ0IEMxOS45MTkzNDcxLDE1LjE5NjAzOTYgMTkuNjMxOTc3LDE1Ljc2ODk3MTcgMTkuMjc5NDQ4NSwxNi4yMDA1MzUzIEMxOC45MjY1MjA4LDE2LjYzMjA0MTYgMTguNDg3MDAwMiwxNi45OTUxNTg2IDE3Ljk2MDgyOTcsMTcuMjg5ODI5MSBDMTcuNDM0NTQ1MSwxNy41ODQ3MjkgMTYuOTI0MzM2MywxNy43OTc1ODQ4IDE2LjQzMDc3MzUsMTcuOTI4NzQwNiBDMTUuOTM2OTgyNywxOC4wNTk4OTY1IDE1LjM4MDk5NzcsMTguMTU4NDY0MiAxNC43NjI1OTA1LDE4LjIyMzk4NDggQzE1LjMyNjYxMzQsMTguNzE1MjE2OSAxNS42MDg2ODE5LDE5LjQ5MDYyMDEgMTUuNjA4NjgxOSwyMC41NDk4NTAxIEwxNS42MDg2ODE5LDI0LjAwNTg1OTIgQzE1LjYwODY4MTksMjQuMjAyMTkxNCAxNS42NzY1MTk3LDI0LjM2NjEwNzUgMTUuODEyMzA5MywyNC40OTcwOTEzIEMxNS45NDc5Mjc5LDI0LjYyNzg0NTUgMTYuMTYyMTAxNiwyNC42NjYzNDMyIDE2LjQ1NTExNTMsMjQuNjExNTUxNSBDMTguOTcyNjk2MSwyMy43NzA4NTcyIDIxLjAyNjE4NjUsMjIuMjU1Njc5OCAyMi42MTU3MDA1LDIwLjA2NjA3NjYgQzI0LjIwNTA0MzUsMTcuODc2NjQ1NSAyNSwxNS40MTE1OTIgMjUsMTIuNjcwMjg0OSBDMjQuOTk5NDI5OSwxMC4zODg0ODI1IDI0LjQ0MDMwOTYsOC4yODM4NDk0NSAyMy4zMjMyMDksNi4zNTYzODU4OCBaIiBpZD0iU2hhcGUiPjwvcGF0aD4KICAgICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+" alt="GitHub Logo" class="css-npnnwu"/></a></div></div></section><style data-emotion-css="17e95nl">.css-17e95nl{background-image:url(/openj9/static/circle-pattern-big-96604574cf60a59e399e87bb5043431c.svg);height:50vh;background-repeat:no-repeat;background-size:cover;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:white;padding-left:15%;}</style><section class="css-17e95nl"><style data-emotion-css="1v4dyq7">.css-1v4dyq7{font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.125;font-weight:700;margin-top:16px;margin-bottom:16px;font-size:28px;}</style><h2 class="css-1v4dyq7">Participate in the <br/> Eclipse OpenJ9 project</h2></section><style data-emotion-css="1cxuqhh">.css-1cxuqhh{display:grid;grid-gap:6rem;grid-template-columns:repeat(1,1fr);padding:calc(5% + 2.5rem);}@media screen and (min-width:35rem){.css-1cxuqhh{grid-template-columns:repeat(1,1fr);}}@media screen and (min-width:62.5rem){.css-1cxuqhh{grid-template-columns:repeat(1,1fr);}}@media screen and (min-width:85rem){.css-1cxuqhh{grid-template-columns:repeat(2,1fr);}}</style><section class="css-1cxuqhh"><style data-emotion-css="1b6n4o1">.css-1b6n4o1{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;}</style><div class="css-1b6n4o1"><style data-emotion-css="4ddra2">.css-4ddra2{font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.125;font-weight:700;margin-top:16px;margin-bottom:16px;font-size:24px;}</style><h3 class="css-4ddra2">Become a contributor</h3><style data-emotion-css="fza3g9">.css-fza3g9{margin-bottom:40px;font-size:18px;}</style><p class="css-fza3g9">We welcome contributions to the project in all shapes and forms. If you are interested in JVM development, we&#x27;d love to hear your ideas and help you collaborate with us on the code base. There are other ways you can contribute too, such as working on our website and docs. Be a part of the project and share in our success!</p><style data-emotion-css="1575med">.css-1575med{background-color:var(--theme-ui-colors-secondary,#5DA7A3);color:white;border-radius:2.5rem;height:2rem;width:12rem;border:none;font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';font-size:16px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-text-decoration:none;text-decoration:none;}.css-1575med:hover{cursor:pointer;background-color:var(--theme-ui-colors-secondaryDark,#5d9da3);border-color:var(--theme-ui-colors-secondaryDark,#5d9da3);-webkit-text-decoration:none;text-decoration:none;color:white;}</style><a href="https://github.com/eclipse/openj9/blob/master/CONTRIBUTING.md" rel="noopener noreferrer" target="_blank" class="css-1575med">Contributor Guide</a></div><div class="css-1b6n4o1"><h3 class="css-4ddra2">Join community calls</h3><p class="css-fza3g9">Our regular calls are a great place to find out what is going on in the project. As well as discussing our release plans and development status, we often feature lightning talks by members of the community. For example, technical deep dives or overviews about new features. To see agendas and recordings, look in the Slack #planning channel.</p><a href="https://calendar.google.com/calendar?cid=YjBnYjB0ZzNxaTZhb3NhZGZnbG0wa3BjY29AZ3JvdXAuY2FsZW5kYXIuZ29vZ2xlLmNvbQ" rel="noopener noreferrer" target="_blank" class="css-1575med">Add to Calendar</a></div></section><style data-emotion-css="17cbhv0">.css-17cbhv0{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;background-color:var(--theme-ui-colors-primary,#434343);color:white;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:1rem;padding-bottom:3rem;-webkit-flex-direction:reverse-column;-ms-flex-direction:reverse-column;flex-direction:reverse-column;}@media screen and (min-width:35rem){.css-17cbhv0{padding-bottom:3rem;}}@media screen and (min-width:62.5rem){.css-17cbhv0{padding-bottom:0;}}@media screen and (min-width:85rem){.css-17cbhv0{padding-bottom:0;}}</style><footer class="css-17cbhv0"><style data-emotion-css="vkolmb">.css-vkolmb{-webkit-flex:50%;-ms-flex:50%;flex:50%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}@media screen and (min-width:35rem){.css-vkolmb{display:none;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}}@media screen and (min-width:62.5rem){.css-vkolmb{display:none;-webkit-align-items:flex-end;-webkit-box-align:flex-end;-ms-flex-align:flex-end;align-items:flex-end;}}@media screen and (min-width:85rem){.css-vkolmb{display:none;-webkit-align-items:flex-end;-webkit-box-align:flex-end;-ms-flex-align:flex-end;align-items:flex-end;}}</style><section class="css-vkolmb"><a href="https://wiki.eclipse.org/Development_Resources/Process_Guidelines/What_is_Incubation" rel="noopener noreferrer" target="_blank"><img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNTBweCIgaGVpZ2h0PSI3NXB4IiB2aWV3Qm94PSIwIDAgMTU3IDIzMSIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KICAgIDwhLS0gR2VuZXJhdG9yOiBTa2V0Y2ggNjEuMiAoODk2NTMpIC0gaHR0cHM6Ly9za2V0Y2guY29tIC0tPgogICAgPHRpdGxlPmVjbGlwc2VfaW5jdWJhdGlvbl92ZXJ0aWNhbF9zdmc8L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0iZWNsaXBzZV9pbmN1YmF0aW9uX3ZlcnRpY2FsX3N2ZyIgZmlsbC1ydWxlPSJub256ZXJvIj4KICAgICAgICAgICAgPGcgaWQ9Ikdyb3VwIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNy4wMDAwMDAsIDIxNC4wMDAwMDApIiBmaWxsPSIjRkZGRkZGIj4KICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJQYXRoIiBwb2ludHM9IjAuNzUgMC4zNCAxLjkyIDAuMzQgMS45MiAxNi4wMyAwLjc1IDE2LjAzIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSI1LjYyIDAuMzQgNi43MiAwLjM0IDE3LjU1IDEzLjk5IDE3LjU1IDAuMzQgMTguNjcgMC4zNCAxOC42NyAxNi4wMyAxNy44IDE2LjAzIDYuNzUgMi4wOSA2Ljc1IDE2LjAzIDUuNjMgMTYuMDMgNS42MyAwLjM0Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMjEuODYsOC4yMyBMMjEuODYsOC4xOSBDMjEuODYsMy43NSAyNS4xOCwwLjA4IDI5LjcxLDAuMDggQzMyLjUxLDAuMDggMzQuMTksMS4xMSAzNS44MSwyLjU5IEwzNC45OCwzLjQ0IEMzMy42MSwyLjEyIDMyLjA0LDEuMTMgMjkuNjksMS4xMyBDMjUuOTIsMS4xMyAyMy4wOCw0LjIgMjMuMDgsOC4xNSBMMjMuMDgsOC4xOSBDMjMuMDgsMTIuMTYgMjUuOTcsMTUuMjUgMjkuNzEsMTUuMjUgQzMxLjk3LDE1LjI1IDMzLjUyLDE0LjM3IDM1LjExLDEyLjgxIEwzNS44OSwxMy41NyBDMzQuMjMsMTUuMjEgMzIuNDQsMTYuMyAyOS42NiwxNi4zIEMyNS4xOCwxNi4zIDIxLjg2LDEyLjc0IDIxLjg2LDguMjMgWiIgaWQ9IlBhdGgiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0zOC40LDkuNTEgTDM4LjQsMC4zNCBMMzkuNTcsMC4zNCBMMzkuNTcsOS40IEMzOS41NywxMy4xIDQxLjU3LDE1LjIzIDQ0Ljg4LDE1LjIzIEM0OC4wNiwxNS4yMyA1MC4xLDEzLjMgNTAuMSw5LjUxIEw1MC4xLDAuMzQgTDUxLjI3LDAuMzQgTDUxLjI3LDkuMzcgQzUxLjI3LDEzLjg4IDQ4LjY1LDE2LjI3MDAzMTQgNDQuODQsMTYuMjcwMDMxNCBDNDEuMDcsMTYuMjggMzguNCwxMy45IDM4LjQsOS41MSBaIiBpZD0iUGF0aCI+PC9wYXRoPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTU0LjAyLDAuMzQgTDYwLjUsMC4zNCBDNjIuMjcsMC4zNCA2My43MSwwLjg2IDY0LjU4LDEuNzMgQzY1LjIzLDIuMzggNjUuNTksMy4yMSA2NS41OSw0LjIgTDY1LjU5LDQuMjQgQzY1LjU5LDYuMzcgNjQuMiw3LjQ1IDYyLjkyLDcuOTYgQzY0LjgsOC40NSA2Ni40Niw5LjUzIDY2LjQ2LDExLjcgTDY2LjQ2LDExLjc0IEM2Ni40NiwxNC4zNiA2NC4yMiwxNi4wMiA2MC44MywxNi4wMiBMNTQuMDIsMTYuMDIgTDU0LjAyLDAuMzQgTDU0LjAyLDAuMzQgWiBNNjQuNCw0LjMxIEM2NC40LDIuNTggNjIuOTksMS40MiA2MC40OCwxLjQyIEw1NS4xOSwxLjQyIEw1NS4xOSw3LjU4IEw2MC4zNyw3LjU4IEM2Mi43Miw3LjU4IDY0LjQsNi40NCA2NC40LDQuMzUgTDY0LjQsNC4zMSBaIE02MC41LDguNjYgTDU1LjE5LDguNjYgTDU1LjE5LDE0Ljk2IEw2MC44OCwxNC45NiBDNjMuNTcsMTQuOTYgNjUuMjcwMDQ0NCwxMy43MyA2NS4yNzAwNDQ0LDExLjc1IEw2NS4yNzAwNDQ0LDExLjcxIEM2NS4yOCw5Ljc4IDYzLjYsOC42NiA2MC41LDguNjYgWiIgaWQ9IlNoYXBlIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNzYuMjgsMC4yMyBMNzcuNCwwLjIzIEw4NC43MSwxNi4wMyBMODMuNDMsMTYuMDMgTDgxLjQ0LDExLjY0IEw3Mi4xOCwxMS42NCBMNzAuMTksMTYuMDMgTDY4Ljk4LDE2LjAzIEw3Ni4yOCwwLjIzIFogTTgwLjk0LDEwLjU5IEw3Ni44MiwxLjUxIEw3Mi42NywxMC41OSBMODAuOTQsMTAuNTkgWiIgaWQ9IlNoYXBlIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSI5MS4wNSAxLjQyIDg1LjU4IDEuNDIgODUuNTggMC4zNCA5Ny42OCAwLjM0IDk3LjY4IDEuNDIgOTIuMjEgMS40MiA5Mi4yMSAxNi4wMyA5MS4wNCAxNi4wMyA5MS4wNCAxLjQyIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSIxMDEuMjkgMC4zNCAxMDIuNDYgMC4zNCAxMDIuNDYgMTYuMDMgMTAxLjI5IDE2LjAzIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTA1LjkxLDguMjMgTDEwNS45MSw4LjE5IEMxMDUuOTEsMy45MSAxMDkuMDcsMC4wOCAxMTMuODIsMC4wOCBDMTE4LjU3LDAuMDggMTIxLjY5LDMuODcgMTIxLjY5LDguMTUgTDEyMS42OSw4LjE5IEMxMjEuNjksMTIuNDcgMTE4LjUzLDE2LjMgMTEzLjc4LDE2LjMgQzEwOS4wMywxNi4zIDEwNS45MSwxMi41MSAxMDUuOTEsOC4yMyBaIE0xMjAuNDgsOC4yMyBMMTIwLjQ4LDguMTkgQzEyMC40OCw0LjMxIDExNy42NiwxLjEzIDExMy43OCwxLjEzIEMxMDkuOSwxLjEzIDEwNy4xMiw0LjI3IDEwNy4xMiw4LjE1IEwxMDcuMTIsOC4xOSBDMTA3LjEyLDEyLjA3IDEwOS45NCwxNS4yNSAxMTMuODIsMTUuMjUgQzExNy43LDE1LjI1IDEyMC40OCwxMi4xMSAxMjAuNDgsOC4yMyBaIiBpZD0iU2hhcGUiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJQYXRoIiBwb2ludHM9IjEyNC44OSAwLjM0IDEyNS45OSAwLjM0IDEzNi44MiAxMy45OSAxMzYuODIgMC4zNCAxMzcuOTQgMC4zNCAxMzcuOTQgMTYuMDMgMTM3LjA3IDE2LjAzIDEyNi4wMiAyLjA5IDEyNi4wMiAxNi4wMyAxMjQuOSAxNi4wMyAxMjQuOSAwLjM0Ij48L3BvbHlnb24+CiAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgPHBhdGggZD0iTTU2LjY2LDE2Ni4yMyBDNTcuNTEsMTYzLjQ4IDYwLjQzLDE2MS40MyA2My45NCwxNjEuNDMgQzY1LjE0LDE2MS40MyA2Ni4yNSwxNjEuNjkgNjcuMjUsMTYyLjExIEM2OS40NiwxNjAuNjQgNzIuMTksMTU5Ljc2IDc1LjE3LDE1OS43NiBMNzUuMTksMTU5Ljc2IEM3Ni4xMSwxNTcuOSA3OC40OCwxNTYuNTcgODEuMywxNTYuNTcgQzgyLjA0LDE1Ni41NyA4Mi43NSwxNTYuNjcgODMuNDIsMTU2Ljg0IEM4My4zMywxNTQuNTYgODMuNjksMTUyLjE4IDg0LjU1LDE0OS42OCBDODUuNTUsMTQ2Ljc5IDg3LDE0NC4wMyA4OC41MiwxNDEuMjggQzg4LjE3LDEzNy4xNiA4Ny45LDEzMy41IDgyLjc0LDEzMiBDODAuODIsMTMxLjQ0IDc4LjgyLDEzMS4yNyA3Ni44NiwxMzEuMDQgTDc2Ljg1LDEzMS4wNCBMNzYuODUsMTMxLjAzIEM3Ni4wMSwxMzAuOTMgNzUuMTcsMTMwLjgxIDc0LjM1LDEzMC42NSBDNjAuMTgsMTQ1LjQxIDQwLjIsMTA5Ljk3IDQwLjIsMTA5Ljk3IEM4NC4zLDEwMy4xMyA3Ni4wMSwxMjUuNjEgNzYuMDEsMTI1LjYxIEM3Mi44MSwxMjQuMDUgNzEuOTMsMTIyLjA4IDY5LjQ5LDExOS43MyBDNjMuOTIsMTE0LjM4IDUwLjYyLDExMy40NCA1MC42MiwxMTMuNDQgQzY2LjU0LDExNy41MSA2OC43MSwxMjUuMjIgNzQuOTcsMTI3LjY5IEM3Ni4zOSwxMjguMDEgNzcuOSwxMjguMTMgNzkuMzUsMTI4LjI5IEM4Mi4xNSwxMjguNTkgODQuODksMTI5LjExIDg3LjIyLDEzMC42MSBDODkuNjMsMTMyLjE2IDkwLjcxLDEzNC4wOSA5MS4yNiwxMzYuMjYgQzkzLDEzMi45NCA5NC41LDEyOS41NiA5NS4wNywxMjUuOTIgQzk1LjgsMTIxLjI3IDk1LjEzLDExNS44OCA5MS44MywxMTIuMDcgQzg4Ljc4LDEwOC41NSA4NC42NiwxMDUuODkgODEuNCwxMDIuNTIgQzc3LjkyLDk4LjkxIDc1LjYxLDk0LjQ2IDc1LjUyLDg5LjcxIEM3My43Niw4NS44NiA3MC45LDgxLjM5IDY4LjI4LDc5LjY1IEM1Ni45LDkwLjM0IDQxLjksNjIuNTggNDEuOSw2Mi41OCBDNzYuODgsNTcuNyA3MS4xLDc1LjY3IDcxLjEsNzUuNjcgQzYyLjcsNjYuMjggNTIuMzEsNjcuMTIgNTIuMzEsNjcuMTIgQzYwLjcxLDY5Ljc5IDY3LjM0LDc1LjE1IDcxLjIsNzguODMgTDcxLjczLDc5LjM2IEM3My4zLDgxIDc0LjksODIuNzUgNzYuMjQsODQuNjMgQzc3LjYsNzkuNDggODAuNzcsNzIuMjcgODMuMjYsNjcuOTcgQzgzLjI2LDY3Ljk3IDkxLjY2LDUzLjE1IDEwNS44LDQzLjkgQzEwNS44LDQzLjkgOTUuMDIsNDUuMTQgODMuNDEsNjIuODkgQzgzLjQxLDYyLjg5IDY3Ljk5LDM4LjcgMTE3LjgzLDM0LjIzIEMxMTcuODMsMzQuMjMgMTE0LjQsNzguMTcgODcuNDUsNjkuNjMgQzgyLjc3LDc2LjY3IDc5LjcsODQuNzQgODAuMzMsOTAuNDIgQzgwLjk1LDk1Ljk2IDg0LjgzLDk5Ljg2IDg5LjExLDEwMy41IEM5MC4yNSw5Ny42NiA5NC40Niw5Mi42MyAxMDAuNjUsODkuODkgQzEwNS42LDg3LjkyIDExMi45LDg2LjAzIDExOS43Miw4NS42MiBDMTE5LjcyLDg1LjYyIDEwNi4zOSw4Mi41OCA5Ni4yNSw4OS41MSBDOTYuMjUsODkuNTEgOTYuNDIsNjkuMjIgMTMyLjM0LDgzLjk1IEMxMzIuMzQsODMuOTUgMTA2LjM0LDExMC4yOSA5Ny45OSw5NC41OSBDOTQuMDMsOTcuMiA5MS41MywxMDEuNTggOTIuMTgsMTA2LjExIEM5NC41LDEwOC4xNCA5Ni42NiwxMTAuMzMgOTcuOTcsMTEzLjAzIEM5OS44LDExNi44MiAxMDAuNDUsMTIxLjI0IDk5Ljk1LDEyNS4zNSBDOTguOTksMTMzLjI1IDk0LjA1LDEzOS45NyA5MC42NywxNDcuMTQgQzg5LjI5LDE1MC4wNiA4Ny45NywxNTMuMjcgODcuOTUsMTU2LjUxIEM4OS42NCwxNTYuMDQgOTEuNDcsMTU1Ljc4IDkzLjM5LDE1NS43OCBDMTAwLjYyLDE1NS43OCAxMDYuNzEsMTU5LjM3IDEwOC42OCwxNjQuMyBDMTExLjYxLDE2NC42MSAxMTMuOTIsMTY2LjMzIDExNC4zNCwxNjguNTEgQzExNi40NSwxNjkuODEgMTE4LjEyLDE3MS42MyAxMTkuMTMsMTczLjc1IEw1MC41NSwxNzMuNzUgQzUyLjAyLDE3MC42MiA1NC4xNCwxNjcuMTYgNTYuNjYsMTY2LjIzIiBpZD0iUGF0aCIgZmlsbD0iI0Y3OEQyQyI+PC9wYXRoPgogICAgICAgICAgICA8ZyBpZD0iR3JvdXAiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE3LjAwMDAwMCwgMTgyLjAwMDAwMCkiIGZpbGw9IiNGRkZGRkYiPgogICAgICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlBhdGgiIHBvaW50cz0iMC41NCAxLjM5IDE4LjU0IDEuMzkgMTguNTQgNS4yMSA0LjggNS4yMSA0LjggMTEuNTIgMTYuOTcgMTEuNTIgMTYuOTcgMTUuMzMgNC44IDE1LjMzIDQuOCAyMS44NSAxOC43MSAyMS44NSAxOC43MSAyNS42NyAwLjU0IDI1LjY3Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMjEuNTUsMTMuNiBMMjEuNTUsMTMuNTMgQzIxLjU1LDYuNjMgMjYuNzIsMC45NyAzNC4wNywwLjk3IEMzOC41NCwwLjk3IDQxLjI1LDIuNTMgNDMuNTcsNC43NSBMNDAuODMsNy45MSBDMzguODksNi4xMSAzNi44MSw0Ljg5IDM0LjAzLDQuODkgQzI5LjQyLDQuODkgMjYuMDIsOC43MSAyNi4wMiwxMy40NiBMMjYuMDIsMTMuNTMgQzI2LjAyLDE4LjI4IDI5LjM4LDIyLjEzIDM0LjAzLDIyLjEzIEMzNy4wMSwyMi4xMyAzOC45MiwyMC45NSA0MSwxOS4wMSBMNDMuNzQsMjEuNzggQzQxLjIxLDI0LjQyIDM4LjQzLDI2LjA4MDAxMzYgMzMuODksMjYuMDgwMDEzNiBDMjYuODMsMjYuMDkgMjEuNTUsMjAuNTcgMjEuNTUsMTMuNiBaIiBpZD0iUGF0aCI+PC9wYXRoPgogICAgICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlBhdGgiIHBvaW50cz0iNDcuMjIgMS4zOSA1MS40OSAxLjM5IDUxLjQ5IDIxLjc4IDY0LjI1IDIxLjc4IDY0LjI1IDI1LjY2IDQ3LjIyIDI1LjY2Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSI2Ny45MyAxLjM5IDcyLjIgMS4zOSA3Mi4yIDI1LjY3IDY3LjkzIDI1LjY3Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNzcuNjcsMS4zOSBMODcuMjQsMS4zOSBDOTIuOTMsMS4zOSA5Ni40Nyw0LjYyIDk2LjQ3LDkuNTEgTDk2LjQ3LDkuNTggQzk2LjQ3LDE1LjAzIDkyLjEsMTcuODcgODYuNzYsMTcuODcgTDgxLjk0LDE3Ljg3IEw4MS45NCwyNS42NyBMNzcuNjcsMjUuNjcgTDc3LjY3LDEuMzkgWiBNODYuOSwxNC4wMiBDOTAuMTMsMTQuMDIgOTIuMTQsMTIuMjIgOTIuMTQsOS42OCBMOTIuMTQsOS42MSBDOTIuMTQsNi43NyA5MC4wOSw1LjI4IDg2LjksNS4yOCBMODEuOTQsNS4yOCBMODEuOTQsMTQuMDIgTDg2LjksMTQuMDIgWiIgaWQ9IlNoYXBlIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNOTguMjEsMjIuMTMgTDEwMC43OCwxOS4wOCBDMTAzLjEsMjEuMDkgMTA1LjQ2LDIyLjI0IDEwOC40NSwyMi4yNCBDMTExLjA5LDIyLjI0IDExMi43NSwyMC45OSAxMTIuNzUsMTkuMTkgTDExMi43NSwxOS4xMiBDMTEyLjc1LDE3LjM5IDExMS43OCwxNi40NSAxMDcuMjcsMTUuNDEgQzEwMi4xLDE0LjE2IDk5LjE5LDEyLjY0IDk5LjE5LDguMTYgTDk5LjE5LDguMDkgQzk5LjE5LDMuOTMgMTAyLjY2LDEuMDUgMTA3LjQ4LDEuMDUgQzExMS4wMiwxLjA1IDExMy44MywyLjEzIDExNi4yOSw0LjEgTDExNCw3LjMzIEMxMTEuODEsNS43IDEwOS42Myw0LjgzIDEwNy40MSw0LjgzIEMxMDQuOTEsNC44MyAxMDMuNDYsNi4xMSAxMDMuNDYsNy43MSBMMTAzLjQ2LDcuNzggQzEwMy40Niw5LjY1IDEwNC41NywxMC40OSAxMDkuMjUsMTEuNiBDMTE0LjM4LDEyLjg1IDExNy4wMiwxNC42OSAxMTcuMDIsMTguNzEgTDExNy4wMiwxOC43OCBDMTE3LjAyLDIzLjMyIDExMy40NSwyNi4wMyAxMDguMzUsMjYuMDMgQzEwNC42MiwyNi4wMiAxMDEuMTIsMjQuNzMgOTguMjEsMjIuMTMgWiIgaWQ9IlBhdGgiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJQYXRoIiBwb2ludHM9IjEyMC45OSAxLjM5IDEzOC45OSAxLjM5IDEzOC45OSA1LjIxIDEyNS4yNiA1LjIxIDEyNS4yNiAxMS41MiAxMzcuNDMgMTEuNTIgMTM3LjQzIDE1LjMzIDEyNS4yNiAxNS4zMyAxMjUuMjYgMjEuODUgMTM5LjE3IDIxLjg1IDEzOS4xNyAyNS42NyAxMjEgMjUuNjcgMTIxIDEuMzkiPjwvcG9seWdvbj4KICAgICAgICAgICAgPC9nPgogICAgICAgICAgICA8cGF0aCBkPSJNMjEuNjYsMzkuOTkgQzQxLjI2LDkuNDIgODAuNSwtMS4yNSAxMTMuMjMsMTMuNDQgQzExMi41MSwxMi45NCAxMTEuNzgsMTIuNDMgMTExLjAzLDExLjk1IEM3Ny41MiwtOS41NCAzMi45OCwwLjExIDExLjU2LDMzLjUyIEMtOS44Nyw2Ni45MiAtMC4wNiwxMTEuNDMgMzMuNDUsMTMyLjkyIEMzNC4yLDEzMy40IDM0Ljk2LDEzMy44NSAzNS43MiwxMzQuMyBDOC43MywxMTAuNjggMi4wNiw3MC41NiAyMS42NiwzOS45OSIgaWQ9IlBhdGgiIGZpbGw9IiNGNzhEMkMiPjwvcGF0aD4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==" alt="Eclipse Incubator Logo"/></a><style data-emotion-css="1uno72p">.css-1uno72p{font-size:0.9rem;}</style><style data-emotion-css="2r9mng">.css-2r9mng{font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.125;font-weight:700;margin-top:16px;margin-bottom:16px;font-size:16px;font-size:0.9rem;}</style><h6 class="css-2r9mng">OpenJ9 is an Eclipse Incubator Project</h6></section><style data-emotion-css="1hrevlp">.css-1hrevlp{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex:100%;-ms-flex:100%;flex:100%;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;}@media screen and (min-width:35rem){.css-1hrevlp{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex:50%;-ms-flex:50%;flex:50%;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;}}@media screen and (min-width:62.5rem){.css-1hrevlp{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex:50%;-ms-flex:50%;flex:50%;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;}}@media screen and (min-width:85rem){.css-1hrevlp{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex:50%;-ms-flex:50%;flex:50%;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;}}.css-1hrevlp a{color:white;-webkit-text-decoration:none;text-decoration:none;}.css-1hrevlp a:hover{color:var(--theme-ui-colors-links,#5DA7A3);}</style><nav class="css-1hrevlp"><style data-emotion-css="1vm4d63">.css-1vm4d63{-webkit-flex:1;-ms-flex:1;flex:1;padding-left:2rem;margin-right:1.1rem;padding:1rem;font-size:1rem;}@media screen and (min-width:35rem){.css-1vm4d63{padding-left:0.8rem;padding:0;font-size:0.9rem;}}@media screen and (min-width:62.5rem){.css-1vm4d63{padding-left:0.8rem;font-size:1rem;}}@media screen and (min-width:85rem){.css-1vm4d63{padding-left:0.8rem;font-size:1rem;}}</style><section class="css-1vm4d63"><style data-emotion-css="1p7eyhh">.css-1p7eyhh{margin-bottom:0.2rem;}</style><style data-emotion-css="shyl6e">.css-shyl6e{font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.125;font-weight:700;margin-top:16px;margin-bottom:16px;font-size:20px;margin-bottom:0.2rem;}</style><h4 class="css-shyl6e">Docs</h4><style data-emotion-css="1l04qsy">.css-1l04qsy{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;list-style:none;-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}.css-1l04qsy li{padding:0;}.css-1l04qsy li:first-of-type{margin-left:0;}.css-1l04qsy li:last-child{margin-right:0;padding-right:0;}</style><ul class="css-1l04qsy"><li><style data-emotion-css="14i0930">.css-14i0930{-webkit-text-decoration:none;text-decoration:none;color:white;}</style><a href="https://www.eclipse.org/openj9/docs/openj9_newuser/" rel="noopener noreferrer" target="_blank" class="css-14i0930">New to OpenJ9?</a></li><li><a href="https://www.eclipse.org/openj9/docs/introduction/" rel="noopener noreferrer" target="_blank" class="css-14i0930">Getting started</a></li><li><a href="https://www.eclipse.org/openj9/docs/cmdline_specifying/" rel="noopener noreferrer" target="_blank" class="css-14i0930">Command-line options</a></li></ul></section><style data-emotion-css="4nlx3l">.css-4nlx3l{-webkit-flex:1;-ms-flex:1;flex:1;padding-left:2rem;padding:1rem;font-size:1rem;}@media screen and (min-width:35rem){.css-4nlx3l{padding-left:0.8rem;padding:0;font-size:0.9rem;}}@media screen and (min-width:62.5rem){.css-4nlx3l{padding-left:0;font-size:1rem;}}@media screen and (min-width:85rem){.css-4nlx3l{padding-left:0;font-size:1rem;}}</style><section class="css-4nlx3l"><h4 class="css-shyl6e">Resources</h4><ul class="css-1l04qsy"><li><a class="css-14i0930" href="/openj9/about">About</a></li><li><a class="css-14i0930" href="/openj9/performance">Performance</a></li></ul></section><style data-emotion-css="1v1ksah">.css-1v1ksah{-webkit-flex:1;-ms-flex:1;flex:1;padding-left:2rem;padding:1rem;font-size:1rem;margin-left:0;}@media screen and (min-width:35rem){.css-1v1ksah{padding-left:0;padding:0;font-size:0.9rem;margin-left:1rem;}}@media screen and (min-width:62.5rem){.css-1v1ksah{padding-left:0;font-size:1rem;}}@media screen and (min-width:85rem){.css-1v1ksah{padding-left:0;font-size:1rem;}}</style><section class="css-1v1ksah"><h4 class="css-shyl6e">Community</h4><ul class="css-1l04qsy"><li><a class="css-14i0930" href="/openj9/news">News</a></li><li><a href="https://blog.openj9.org/" rel="noopener noreferrer" target="_blank" class="css-14i0930">Blogs</a></li></ul></section></nav><style data-emotion-css="1qgmx7a">.css-1qgmx7a{-webkit-flex:25%;-ms-flex:25%;flex:25%;display:none;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}@media screen and (min-width:35rem){.css-1qgmx7a{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:flex-end;-webkit-box-align:flex-end;-ms-flex-align:flex-end;align-items:flex-end;}}@media screen and (min-width:62.5rem){.css-1qgmx7a{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:flex-end;-webkit-box-align:flex-end;-ms-flex-align:flex-end;align-items:flex-end;}}@media screen and (min-width:85rem){.css-1qgmx7a{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:flex-end;-webkit-box-align:flex-end;-ms-flex-align:flex-end;align-items:flex-end;}}</style><section class="css-1qgmx7a"><style data-emotion-css="10op7gg">.css-10op7gg{font-size:0.9rem;margin-top:1.3rem;margin-left:0.6rem;}</style><style data-emotion-css="z87sw5">.css-z87sw5{font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.125;font-weight:700;margin-top:16px;margin-bottom:16px;font-size:16px;font-size:0.9rem;margin-top:1.3rem;margin-left:0.6rem;}</style><h6 class="css-z87sw5">OpenJ9 is an Eclipse Incubator Project</h6><a href="https://wiki.eclipse.org/Development_Resources/Process_Guidelines/What_is_Incubation" rel="noopener noreferrer" target="_blank"><img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNTBweCIgaGVpZ2h0PSI3NXB4IiB2aWV3Qm94PSIwIDAgMTU3IDIzMSIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KICAgIDwhLS0gR2VuZXJhdG9yOiBTa2V0Y2ggNjEuMiAoODk2NTMpIC0gaHR0cHM6Ly9za2V0Y2guY29tIC0tPgogICAgPHRpdGxlPmVjbGlwc2VfaW5jdWJhdGlvbl92ZXJ0aWNhbF9zdmc8L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0iZWNsaXBzZV9pbmN1YmF0aW9uX3ZlcnRpY2FsX3N2ZyIgZmlsbC1ydWxlPSJub256ZXJvIj4KICAgICAgICAgICAgPGcgaWQ9Ikdyb3VwIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNy4wMDAwMDAsIDIxNC4wMDAwMDApIiBmaWxsPSIjRkZGRkZGIj4KICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJQYXRoIiBwb2ludHM9IjAuNzUgMC4zNCAxLjkyIDAuMzQgMS45MiAxNi4wMyAwLjc1IDE2LjAzIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSI1LjYyIDAuMzQgNi43MiAwLjM0IDE3LjU1IDEzLjk5IDE3LjU1IDAuMzQgMTguNjcgMC4zNCAxOC42NyAxNi4wMyAxNy44IDE2LjAzIDYuNzUgMi4wOSA2Ljc1IDE2LjAzIDUuNjMgMTYuMDMgNS42MyAwLjM0Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMjEuODYsOC4yMyBMMjEuODYsOC4xOSBDMjEuODYsMy43NSAyNS4xOCwwLjA4IDI5LjcxLDAuMDggQzMyLjUxLDAuMDggMzQuMTksMS4xMSAzNS44MSwyLjU5IEwzNC45OCwzLjQ0IEMzMy42MSwyLjEyIDMyLjA0LDEuMTMgMjkuNjksMS4xMyBDMjUuOTIsMS4xMyAyMy4wOCw0LjIgMjMuMDgsOC4xNSBMMjMuMDgsOC4xOSBDMjMuMDgsMTIuMTYgMjUuOTcsMTUuMjUgMjkuNzEsMTUuMjUgQzMxLjk3LDE1LjI1IDMzLjUyLDE0LjM3IDM1LjExLDEyLjgxIEwzNS44OSwxMy41NyBDMzQuMjMsMTUuMjEgMzIuNDQsMTYuMyAyOS42NiwxNi4zIEMyNS4xOCwxNi4zIDIxLjg2LDEyLjc0IDIxLjg2LDguMjMgWiIgaWQ9IlBhdGgiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0zOC40LDkuNTEgTDM4LjQsMC4zNCBMMzkuNTcsMC4zNCBMMzkuNTcsOS40IEMzOS41NywxMy4xIDQxLjU3LDE1LjIzIDQ0Ljg4LDE1LjIzIEM0OC4wNiwxNS4yMyA1MC4xLDEzLjMgNTAuMSw5LjUxIEw1MC4xLDAuMzQgTDUxLjI3LDAuMzQgTDUxLjI3LDkuMzcgQzUxLjI3LDEzLjg4IDQ4LjY1LDE2LjI3MDAzMTQgNDQuODQsMTYuMjcwMDMxNCBDNDEuMDcsMTYuMjggMzguNCwxMy45IDM4LjQsOS41MSBaIiBpZD0iUGF0aCI+PC9wYXRoPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTU0LjAyLDAuMzQgTDYwLjUsMC4zNCBDNjIuMjcsMC4zNCA2My43MSwwLjg2IDY0LjU4LDEuNzMgQzY1LjIzLDIuMzggNjUuNTksMy4yMSA2NS41OSw0LjIgTDY1LjU5LDQuMjQgQzY1LjU5LDYuMzcgNjQuMiw3LjQ1IDYyLjkyLDcuOTYgQzY0LjgsOC40NSA2Ni40Niw5LjUzIDY2LjQ2LDExLjcgTDY2LjQ2LDExLjc0IEM2Ni40NiwxNC4zNiA2NC4yMiwxNi4wMiA2MC44MywxNi4wMiBMNTQuMDIsMTYuMDIgTDU0LjAyLDAuMzQgTDU0LjAyLDAuMzQgWiBNNjQuNCw0LjMxIEM2NC40LDIuNTggNjIuOTksMS40MiA2MC40OCwxLjQyIEw1NS4xOSwxLjQyIEw1NS4xOSw3LjU4IEw2MC4zNyw3LjU4IEM2Mi43Miw3LjU4IDY0LjQsNi40NCA2NC40LDQuMzUgTDY0LjQsNC4zMSBaIE02MC41LDguNjYgTDU1LjE5LDguNjYgTDU1LjE5LDE0Ljk2IEw2MC44OCwxNC45NiBDNjMuNTcsMTQuOTYgNjUuMjcwMDQ0NCwxMy43MyA2NS4yNzAwNDQ0LDExLjc1IEw2NS4yNzAwNDQ0LDExLjcxIEM2NS4yOCw5Ljc4IDYzLjYsOC42NiA2MC41LDguNjYgWiIgaWQ9IlNoYXBlIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNzYuMjgsMC4yMyBMNzcuNCwwLjIzIEw4NC43MSwxNi4wMyBMODMuNDMsMTYuMDMgTDgxLjQ0LDExLjY0IEw3Mi4xOCwxMS42NCBMNzAuMTksMTYuMDMgTDY4Ljk4LDE2LjAzIEw3Ni4yOCwwLjIzIFogTTgwLjk0LDEwLjU5IEw3Ni44MiwxLjUxIEw3Mi42NywxMC41OSBMODAuOTQsMTAuNTkgWiIgaWQ9IlNoYXBlIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSI5MS4wNSAxLjQyIDg1LjU4IDEuNDIgODUuNTggMC4zNCA5Ny42OCAwLjM0IDk3LjY4IDEuNDIgOTIuMjEgMS40MiA5Mi4yMSAxNi4wMyA5MS4wNCAxNi4wMyA5MS4wNCAxLjQyIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSIxMDEuMjkgMC4zNCAxMDIuNDYgMC4zNCAxMDIuNDYgMTYuMDMgMTAxLjI5IDE2LjAzIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTA1LjkxLDguMjMgTDEwNS45MSw4LjE5IEMxMDUuOTEsMy45MSAxMDkuMDcsMC4wOCAxMTMuODIsMC4wOCBDMTE4LjU3LDAuMDggMTIxLjY5LDMuODcgMTIxLjY5LDguMTUgTDEyMS42OSw4LjE5IEMxMjEuNjksMTIuNDcgMTE4LjUzLDE2LjMgMTEzLjc4LDE2LjMgQzEwOS4wMywxNi4zIDEwNS45MSwxMi41MSAxMDUuOTEsOC4yMyBaIE0xMjAuNDgsOC4yMyBMMTIwLjQ4LDguMTkgQzEyMC40OCw0LjMxIDExNy42NiwxLjEzIDExMy43OCwxLjEzIEMxMDkuOSwxLjEzIDEwNy4xMiw0LjI3IDEwNy4xMiw4LjE1IEwxMDcuMTIsOC4xOSBDMTA3LjEyLDEyLjA3IDEwOS45NCwxNS4yNSAxMTMuODIsMTUuMjUgQzExNy43LDE1LjI1IDEyMC40OCwxMi4xMSAxMjAuNDgsOC4yMyBaIiBpZD0iU2hhcGUiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJQYXRoIiBwb2ludHM9IjEyNC44OSAwLjM0IDEyNS45OSAwLjM0IDEzNi44MiAxMy45OSAxMzYuODIgMC4zNCAxMzcuOTQgMC4zNCAxMzcuOTQgMTYuMDMgMTM3LjA3IDE2LjAzIDEyNi4wMiAyLjA5IDEyNi4wMiAxNi4wMyAxMjQuOSAxNi4wMyAxMjQuOSAwLjM0Ij48L3BvbHlnb24+CiAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgPHBhdGggZD0iTTU2LjY2LDE2Ni4yMyBDNTcuNTEsMTYzLjQ4IDYwLjQzLDE2MS40MyA2My45NCwxNjEuNDMgQzY1LjE0LDE2MS40MyA2Ni4yNSwxNjEuNjkgNjcuMjUsMTYyLjExIEM2OS40NiwxNjAuNjQgNzIuMTksMTU5Ljc2IDc1LjE3LDE1OS43NiBMNzUuMTksMTU5Ljc2IEM3Ni4xMSwxNTcuOSA3OC40OCwxNTYuNTcgODEuMywxNTYuNTcgQzgyLjA0LDE1Ni41NyA4Mi43NSwxNTYuNjcgODMuNDIsMTU2Ljg0IEM4My4zMywxNTQuNTYgODMuNjksMTUyLjE4IDg0LjU1LDE0OS42OCBDODUuNTUsMTQ2Ljc5IDg3LDE0NC4wMyA4OC41MiwxNDEuMjggQzg4LjE3LDEzNy4xNiA4Ny45LDEzMy41IDgyLjc0LDEzMiBDODAuODIsMTMxLjQ0IDc4LjgyLDEzMS4yNyA3Ni44NiwxMzEuMDQgTDc2Ljg1LDEzMS4wNCBMNzYuODUsMTMxLjAzIEM3Ni4wMSwxMzAuOTMgNzUuMTcsMTMwLjgxIDc0LjM1LDEzMC42NSBDNjAuMTgsMTQ1LjQxIDQwLjIsMTA5Ljk3IDQwLjIsMTA5Ljk3IEM4NC4zLDEwMy4xMyA3Ni4wMSwxMjUuNjEgNzYuMDEsMTI1LjYxIEM3Mi44MSwxMjQuMDUgNzEuOTMsMTIyLjA4IDY5LjQ5LDExOS43MyBDNjMuOTIsMTE0LjM4IDUwLjYyLDExMy40NCA1MC42MiwxMTMuNDQgQzY2LjU0LDExNy41MSA2OC43MSwxMjUuMjIgNzQuOTcsMTI3LjY5IEM3Ni4zOSwxMjguMDEgNzcuOSwxMjguMTMgNzkuMzUsMTI4LjI5IEM4Mi4xNSwxMjguNTkgODQuODksMTI5LjExIDg3LjIyLDEzMC42MSBDODkuNjMsMTMyLjE2IDkwLjcxLDEzNC4wOSA5MS4yNiwxMzYuMjYgQzkzLDEzMi45NCA5NC41LDEyOS41NiA5NS4wNywxMjUuOTIgQzk1LjgsMTIxLjI3IDk1LjEzLDExNS44OCA5MS44MywxMTIuMDcgQzg4Ljc4LDEwOC41NSA4NC42NiwxMDUuODkgODEuNCwxMDIuNTIgQzc3LjkyLDk4LjkxIDc1LjYxLDk0LjQ2IDc1LjUyLDg5LjcxIEM3My43Niw4NS44NiA3MC45LDgxLjM5IDY4LjI4LDc5LjY1IEM1Ni45LDkwLjM0IDQxLjksNjIuNTggNDEuOSw2Mi41OCBDNzYuODgsNTcuNyA3MS4xLDc1LjY3IDcxLjEsNzUuNjcgQzYyLjcsNjYuMjggNTIuMzEsNjcuMTIgNTIuMzEsNjcuMTIgQzYwLjcxLDY5Ljc5IDY3LjM0LDc1LjE1IDcxLjIsNzguODMgTDcxLjczLDc5LjM2IEM3My4zLDgxIDc0LjksODIuNzUgNzYuMjQsODQuNjMgQzc3LjYsNzkuNDggODAuNzcsNzIuMjcgODMuMjYsNjcuOTcgQzgzLjI2LDY3Ljk3IDkxLjY2LDUzLjE1IDEwNS44LDQzLjkgQzEwNS44LDQzLjkgOTUuMDIsNDUuMTQgODMuNDEsNjIuODkgQzgzLjQxLDYyLjg5IDY3Ljk5LDM4LjcgMTE3LjgzLDM0LjIzIEMxMTcuODMsMzQuMjMgMTE0LjQsNzguMTcgODcuNDUsNjkuNjMgQzgyLjc3LDc2LjY3IDc5LjcsODQuNzQgODAuMzMsOTAuNDIgQzgwLjk1LDk1Ljk2IDg0LjgzLDk5Ljg2IDg5LjExLDEwMy41IEM5MC4yNSw5Ny42NiA5NC40Niw5Mi42MyAxMDAuNjUsODkuODkgQzEwNS42LDg3LjkyIDExMi45LDg2LjAzIDExOS43Miw4NS42MiBDMTE5LjcyLDg1LjYyIDEwNi4zOSw4Mi41OCA5Ni4yNSw4OS41MSBDOTYuMjUsODkuNTEgOTYuNDIsNjkuMjIgMTMyLjM0LDgzLjk1IEMxMzIuMzQsODMuOTUgMTA2LjM0LDExMC4yOSA5Ny45OSw5NC41OSBDOTQuMDMsOTcuMiA5MS41MywxMDEuNTggOTIuMTgsMTA2LjExIEM5NC41LDEwOC4xNCA5Ni42NiwxMTAuMzMgOTcuOTcsMTEzLjAzIEM5OS44LDExNi44MiAxMDAuNDUsMTIxLjI0IDk5Ljk1LDEyNS4zNSBDOTguOTksMTMzLjI1IDk0LjA1LDEzOS45NyA5MC42NywxNDcuMTQgQzg5LjI5LDE1MC4wNiA4Ny45NywxNTMuMjcgODcuOTUsMTU2LjUxIEM4OS42NCwxNTYuMDQgOTEuNDcsMTU1Ljc4IDkzLjM5LDE1NS43OCBDMTAwLjYyLDE1NS43OCAxMDYuNzEsMTU5LjM3IDEwOC42OCwxNjQuMyBDMTExLjYxLDE2NC42MSAxMTMuOTIsMTY2LjMzIDExNC4zNCwxNjguNTEgQzExNi40NSwxNjkuODEgMTE4LjEyLDE3MS42MyAxMTkuMTMsMTczLjc1IEw1MC41NSwxNzMuNzUgQzUyLjAyLDE3MC42MiA1NC4xNCwxNjcuMTYgNTYuNjYsMTY2LjIzIiBpZD0iUGF0aCIgZmlsbD0iI0Y3OEQyQyI+PC9wYXRoPgogICAgICAgICAgICA8ZyBpZD0iR3JvdXAiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE3LjAwMDAwMCwgMTgyLjAwMDAwMCkiIGZpbGw9IiNGRkZGRkYiPgogICAgICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlBhdGgiIHBvaW50cz0iMC41NCAxLjM5IDE4LjU0IDEuMzkgMTguNTQgNS4yMSA0LjggNS4yMSA0LjggMTEuNTIgMTYuOTcgMTEuNTIgMTYuOTcgMTUuMzMgNC44IDE1LjMzIDQuOCAyMS44NSAxOC43MSAyMS44NSAxOC43MSAyNS42NyAwLjU0IDI1LjY3Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMjEuNTUsMTMuNiBMMjEuNTUsMTMuNTMgQzIxLjU1LDYuNjMgMjYuNzIsMC45NyAzNC4wNywwLjk3IEMzOC41NCwwLjk3IDQxLjI1LDIuNTMgNDMuNTcsNC43NSBMNDAuODMsNy45MSBDMzguODksNi4xMSAzNi44MSw0Ljg5IDM0LjAzLDQuODkgQzI5LjQyLDQuODkgMjYuMDIsOC43MSAyNi4wMiwxMy40NiBMMjYuMDIsMTMuNTMgQzI2LjAyLDE4LjI4IDI5LjM4LDIyLjEzIDM0LjAzLDIyLjEzIEMzNy4wMSwyMi4xMyAzOC45MiwyMC45NSA0MSwxOS4wMSBMNDMuNzQsMjEuNzggQzQxLjIxLDI0LjQyIDM4LjQzLDI2LjA4MDAxMzYgMzMuODksMjYuMDgwMDEzNiBDMjYuODMsMjYuMDkgMjEuNTUsMjAuNTcgMjEuNTUsMTMuNiBaIiBpZD0iUGF0aCI+PC9wYXRoPgogICAgICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlBhdGgiIHBvaW50cz0iNDcuMjIgMS4zOSA1MS40OSAxLjM5IDUxLjQ5IDIxLjc4IDY0LjI1IDIxLjc4IDY0LjI1IDI1LjY2IDQ3LjIyIDI1LjY2Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSI2Ny45MyAxLjM5IDcyLjIgMS4zOSA3Mi4yIDI1LjY3IDY3LjkzIDI1LjY3Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNzcuNjcsMS4zOSBMODcuMjQsMS4zOSBDOTIuOTMsMS4zOSA5Ni40Nyw0LjYyIDk2LjQ3LDkuNTEgTDk2LjQ3LDkuNTggQzk2LjQ3LDE1LjAzIDkyLjEsMTcuODcgODYuNzYsMTcuODcgTDgxLjk0LDE3Ljg3IEw4MS45NCwyNS42NyBMNzcuNjcsMjUuNjcgTDc3LjY3LDEuMzkgWiBNODYuOSwxNC4wMiBDOTAuMTMsMTQuMDIgOTIuMTQsMTIuMjIgOTIuMTQsOS42OCBMOTIuMTQsOS42MSBDOTIuMTQsNi43NyA5MC4wOSw1LjI4IDg2LjksNS4yOCBMODEuOTQsNS4yOCBMODEuOTQsMTQuMDIgTDg2LjksMTQuMDIgWiIgaWQ9IlNoYXBlIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNOTguMjEsMjIuMTMgTDEwMC43OCwxOS4wOCBDMTAzLjEsMjEuMDkgMTA1LjQ2LDIyLjI0IDEwOC40NSwyMi4yNCBDMTExLjA5LDIyLjI0IDExMi43NSwyMC45OSAxMTIuNzUsMTkuMTkgTDExMi43NSwxOS4xMiBDMTEyLjc1LDE3LjM5IDExMS43OCwxNi40NSAxMDcuMjcsMTUuNDEgQzEwMi4xLDE0LjE2IDk5LjE5LDEyLjY0IDk5LjE5LDguMTYgTDk5LjE5LDguMDkgQzk5LjE5LDMuOTMgMTAyLjY2LDEuMDUgMTA3LjQ4LDEuMDUgQzExMS4wMiwxLjA1IDExMy44MywyLjEzIDExNi4yOSw0LjEgTDExNCw3LjMzIEMxMTEuODEsNS43IDEwOS42Myw0LjgzIDEwNy40MSw0LjgzIEMxMDQuOTEsNC44MyAxMDMuNDYsNi4xMSAxMDMuNDYsNy43MSBMMTAzLjQ2LDcuNzggQzEwMy40Niw5LjY1IDEwNC41NywxMC40OSAxMDkuMjUsMTEuNiBDMTE0LjM4LDEyLjg1IDExNy4wMiwxNC42OSAxMTcuMDIsMTguNzEgTDExNy4wMiwxOC43OCBDMTE3LjAyLDIzLjMyIDExMy40NSwyNi4wMyAxMDguMzUsMjYuMDMgQzEwNC42MiwyNi4wMiAxMDEuMTIsMjQuNzMgOTguMjEsMjIuMTMgWiIgaWQ9IlBhdGgiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJQYXRoIiBwb2ludHM9IjEyMC45OSAxLjM5IDEzOC45OSAxLjM5IDEzOC45OSA1LjIxIDEyNS4yNiA1LjIxIDEyNS4yNiAxMS41MiAxMzcuNDMgMTEuNTIgMTM3LjQzIDE1LjMzIDEyNS4yNiAxNS4zMyAxMjUuMjYgMjEuODUgMTM5LjE3IDIxLjg1IDEzOS4xNyAyNS42NyAxMjEgMjUuNjcgMTIxIDEuMzkiPjwvcG9seWdvbj4KICAgICAgICAgICAgPC9nPgogICAgICAgICAgICA8cGF0aCBkPSJNMjEuNjYsMzkuOTkgQzQxLjI2LDkuNDIgODAuNSwtMS4yNSAxMTMuMjMsMTMuNDQgQzExMi41MSwxMi45NCAxMTEuNzgsMTIuNDMgMTExLjAzLDExLjk1IEM3Ny41MiwtOS41NCAzMi45OCwwLjExIDExLjU2LDMzLjUyIEMtOS44Nyw2Ni45MiAtMC4wNiwxMTEuNDMgMzMuNDUsMTMyLjkyIEMzNC4yLDEzMy40IDM0Ljk2LDEzMy44NSAzNS43MiwxMzQuMyBDOC43MywxMTAuNjggMi4wNiw3MC41NiAyMS42NiwzOS45OSIgaWQ9IlBhdGgiIGZpbGw9IiNGNzhEMkMiPjwvcGF0aD4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==" alt="Eclipse Incubator Logo"/></a></section><style data-emotion-css="7f8z6s">.css-7f8z6s{height:0.15rem;background-color:var(--theme-ui-colors-secondary,#5DA7A3);width:100%;margin-top:16px;margin-bottom:16px;}</style><div class="css-7f8z6s"></div><style data-emotion-css="6gs9hh">.css-6gs9hh{width:70%;}</style><nav class="css-6gs9hh"><style data-emotion-css="1dz3xom">.css-1dz3xom{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}@media screen and (min-width:35rem){.css-1dz3xom{-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;}}@media screen and (min-width:62.5rem){.css-1dz3xom{-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;}}@media screen and (min-width:85rem){.css-1dz3xom{-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;}}.css-1dz3xom li{padding:0.4rem;font-size:0.9rem;list-style-type:none;padding-left:1rem;color:white;}@media screen and (min-width:35rem){.css-1dz3xom li{font-size:0.7rem;}}@media screen and (min-width:62.5rem){.css-1dz3xom li{font-size:1rem;}}@media screen and (min-width:85rem){.css-1dz3xom li{font-size:1rem;}}.css-1dz3xom a{color:white;-webkit-text-decoration:none;text-decoration:none;}.css-1dz3xom a:hover{color:var(--theme-ui-colors-links,#5DA7A3);}</style><ul class="css-1dz3xom"><style data-emotion-css="1ga24ma">.css-1ga24ma{padding-left:1rem;}@media screen and (min-width:35rem){.css-1ga24ma{padding-left:0rem !important;}}@media screen and (min-width:62.5rem){.css-1ga24ma{padding-left:0.5rem !important;}}@media screen and (min-width:85rem){.css-1ga24ma{padding-left:0.5 !important;}}</style><li class="css-1ga24ma"><a href="https://www.eclipse.org/" rel="noopener noreferrer" target="_blank" class="css-14i0930">Eclipse Foundation Website </a></li><li><a href="https://www.eclipse.org/legal/privacy.php" rel="noopener noreferrer" target="_blank" class="css-14i0930">Privacy Policy</a></li><li><a href="https://www.eclipse.org/legal/termsofuse.php" rel="noopener noreferrer" target="_blank" class="css-14i0930">Terms of Use</a></li><li><a href="https://www.eclipse.org/legal/copyright.php" rel="noopener noreferrer" target="_blank" class="css-14i0930">Copyright Agent</a></li><li><a href="https://www.eclipse.org/legal/" rel="noopener noreferrer" target="_blank" class="css-14i0930">Legal</a></li></ul></nav><style data-emotion-css="1g96o9k">.css-1g96o9k{display:inline;-webkit-flex:30%;-ms-flex:30%;flex:30%;}@media screen and (min-width:35rem){.css-1g96o9k{display:inline;}}@media screen and (min-width:62.5rem){.css-1g96o9k{display:block;}}@media screen and (min-width:85rem){.css-1g96o9k{display:block;}}</style><nav class="css-1g96o9k"><style data-emotion-css="gwenrj">.css-gwenrj{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;list-style:none;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;}.css-gwenrj li{padding:8px;margin-left:8px;margin-right:8px;}.css-gwenrj li a{color:white;-webkit-text-decoration:none;text-decoration:none;}.css-gwenrj li a:hover{color:var(--theme-ui-colors-links,#5DA7A3);}.css-gwenrj li:first-of-type{margin-left:0;}.css-gwenrj li:last-child{margin-right:0;padding-right:0;}@media screen and (min-width:35rem){.css-gwenrj{-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end;}}@media screen and (min-width:62.5rem){.css-gwenrj{-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end;}}@media screen and (min-width:85rem){.css-gwenrj{-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end;}}</style><ul class="css-gwenrj"><li><a href="https://twitter.com/openj9/" rel="noopener noreferrer" target="_blank"> <img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIyNXB4IiB2aWV3Qm94PSIwIDAgMjUgMjUiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5Ud2l0dGVyPC90aXRsZT4KICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPgogICAgPGcgaWQ9IlBhZ2UtMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9IlR3aXR0ZXIiIGZpbGwtcnVsZT0ibm9uemVybyI+CiAgICAgICAgICAgIDxnIGlkPSJ0d2l0dGVyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjAwMDAwMCwgMC4yOTg4NzkpIj4KICAgICAgICAgICAgICAgIDxlbGxpcHNlIGlkPSJPdmFsLXBhdGgiIGZpbGw9IiM0MzQzNDMiIGN4PSIxMi41MDAyMjEyIiBjeT0iMTIuMjcyNzI3MyIgcng9IjEyLjUiIHJ5PSIxMi4yNzI3MjczIj48L2VsbGlwc2U+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTIuNTAwMjIxMiwwIEMxOS40MDM3ODA2LDAgMjUuMDAwMjIxMiw1LjQ5NDY4NzE2IDI1LjAwMDIyMTIsMTIuMjcyNzI3MyBDMjUuMDAwMjIxMiwxOS4wNTA3Njc0IDE5LjQwMzc4MDYsMjQuNTQ1NDU0NSAxMi41MDAyMjEyLDI0LjU0NTQ1NDUgQzUuNTk2NjYxODcsMjQuNTQ1NDU0NSAwLjAwMDIyMTIzODkzOCwxOS4wNTA3Njc0IDAuMDAwMjIxMjM4OTM4LDEyLjI3MjcyNzMgQzAuMDAwMjIxMjM4OTM4LDUuNDk0Njg3MTYgNS41OTY2NjE4NywwIDEyLjUwMDIyMTIsMCBaIE0xNS4xMDM0MzMzLDYuODE4MTgxODIgQzEzLjQ2NTM4MDIsNi44MTgxODE4MiAxMi4xMzY4NDA0LDguMDkyMTI0MTEgMTIuMTM2ODQwNCw5LjY2Mjg1OTk2IEMxMi4xMzY4NDA0LDkuODg1ODI2MzggMTIuMTYzMTY3OCwxMC4xMDI4NTI3IDEyLjIxNDA1MjgsMTAuMzExMTgxIEM5Ljc0ODU2NjA0LDEwLjE5MjU5MDggNy41NjI1MDQxLDkuMDYwMTUwNTQgNi4wOTkyMjk3Niw3LjMzODU3ODIzIEM1Ljg0MzkyMDAzLDcuNzU4NjI5MTUgNS42OTc0NTk4NSw4LjI0NzYyNzgxIDUuNjk3NDU5ODUsOC43Njg4NzI4MSBDNS42OTc0NTk4NSw5Ljc1NTU2ODE3IDYuMjIxNTc0ODksMTAuNjI2NjQzNCA3LjAxNzE1MDExLDExLjEzNjY0NDcgQzYuNTMxMDg4MTcsMTEuMTIyMDA2NSA2LjA3MzM0NDgsMTAuOTk0MDgxOSA1LjY3MzU2NjA0LDEwLjc4MDQ1IEw1LjY3MzM0NDgsMTAuODE2NTE0OSBMNS42NzMzNDQ4LDEwLjgxNjUxNDkgQzUuNjczMzQ0OCwxMi4xOTQ4MzM1IDYuNjk2MzUzNjUsMTMuMzQ0NDU3NyA4LjA1MzIxMjA2LDEzLjYwNTYxMDYgQzcuODA0NTM5NSwxMy42NzA5NTE5IDcuNTQxOTI4ODgsMTMuNzA1NTMxOCA3LjI3MTc5NjEzLDEzLjcwNTUzMTggQzcuMDgwMjAzMjEsMTMuNzA1NTMxOCA2Ljg5NDU4Mzc0LDEzLjY4NzkyMzYgNi43MTM2MTAyOSwxMy42NTQ4Mjg3IEM3LjA5MTA0MzkyLDE0Ljc4NDcyMzIgOC4xODYzOTc5LDE1LjYwNzIxNjkgOS40ODQ4NDkyMywxNS42MzAzNDA5IEM4LjQ2OTM2MjUsMTYuMzkzNDMzNCA3LjE5MDM4MDIsMTYuODQ4MDY0MiA1LjgwMDExNDcyLDE2Ljg0ODA2NDIgQzUuNTYxMTc2NjYsMTYuODQ4MDY0MiA1LjMyNDQ1MSwxNi44MzQ2OTkgNS4wOTI4MTM4MywxNi44MDgxODA2IEM2LjQwNDk4MTk3LDE3LjYxNTYxMTggNy45NjQ3MTY0OSwxOC4wODYzNjU4IDkuNjM5OTM3NzMsMTguMDg2MzY1OCBDMTUuMDk2NTc0OSwxOC4wODYzNjU4IDE4LjA4MDY0NTcsMTMuNzUxNzc5OCAxOC4wODA2NDU3LDkuOTkyMzI0MTQgQzE4LjA4MDY0NTcsOS44NjkwNjY3NyAxOC4wNzc3Njk2LDkuNzQ2MjMzNyAxOC4wNzIwMTc0LDkuNjI0NDYxMzcgQzE4LjY1MjEwNTksOS4yMjM1MDM2OCAxOS4xNTQ5ODIsOC43MjI2MjQ3OCAxOS41NTI1NDgzLDguMTUyMTYxNjkgQzE5LjAyMDY4OTksOC4zNzgzMTAzMiAxOC40NDg1NjYsOC41MzEyNjgyNSAxNy44NDg1NjYsOC41OTk1Nzk1NiBDMTguNDYxMTc2Nyw4LjI0NzYyNzgxIDE4LjkzMTMwOTQsNy42OTA3NDIxMyAxOS4xNTMyMTIxLDcuMDI2MDg1ODEgQzE4LjU3OTk4Miw3LjM1MjE1NTYzIDE3Ljk0NDgwNSw3LjU4ODY5OTQ2IDE3LjI2OTM2MjUsNy43MTYxOTk3NiBDMTYuNzI4MjEyMSw3LjE2MzU1NzAyIDE1Ljk1NzE5NDQsNi44MTgxODE4MiAxNS4xMDM0MzMzLDYuODE4MTgxODIgWiIgaWQ9IkNvbWJpbmVkLVNoYXBlIiBmaWxsPSIjRkZGRkZGIj48L3BhdGg+CiAgICAgICAgICAgIDwvZz4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==" alt="Twitter Logo"/></a></li><li><a href="https://github.com/eclipse/openj9" rel="noopener noreferrer" target="_blank"> <img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIyNXB4IiB2aWV3Qm94PSIwIDAgMjUgMjUiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5HaXRIdWI8L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0iR2l0SHViIiBmaWxsPSIjRkZGRkZGIiBmaWxsLXJ1bGU9Im5vbnplcm8iPgogICAgICAgICAgICA8ZyBpZD0iZ2l0aHViLWxvZ28iPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTIzLjMyMzIwOSw2LjM1NjM4NTg4IEMyMi4yMDU0MjQzLDQuNDI4ODY0OTMgMjAuNjg5MjIwNywyLjkwMjg0MzkxIDE4Ljc3NDE5OTMsMS43Nzc5Nzg1OCBDMTYuODU4ODkyOCwwLjY1MzA1NTg3MyAxNC43Njc5NDkxLDAuMDkwNzM3OTUzMyAxMi40OTk4ODYsMC4wOTA3Mzc5NTMzIEMxMC4yMzIxMDc5LDAuMDkwNzM3OTUzMyA4LjE0MDQ4MDEzLDAuNjUzMjI3OTkzIDYuMjI1NTcyNjksMS43Nzc5Nzg1OCBDNC4zMTAzODAyMSwyLjkwMjc4NjU0IDIuNzk0MjMzNjcsNC40Mjg4NjQ5MyAxLjY3NjQ0ODk5LDYuMzU2Mzg1ODggQzAuNTU4ODM1MzMzLDguMjgzODQ5NDUgMCwxMC4zODg2NTQ2IDAsMTIuNjcwNzQzOSBDMCwxNS40MTIwNTEgMC43OTQ2NzE0ODMsMTcuODc3MTA0NSAyLjM4NDQxMzQ5LDIwLjA2NjUzNTUgQzMuOTczOTg0NDksMjIuMjU2MTM4OCA2LjAyNzQ3NDg4LDIzLjc3MTI1ODggOC41NDQ3MTM2NywyNC42MTIwNjc4IEM4LjgzNzcyNzQsMjQuNjY2ODAyMiA5LjA1NDYzNzM3LDI0LjYyODMwNDUgOS4xOTU2NzE2MSwyNC40OTc1NTAzIEM5LjMzNjc2Mjg1LDI0LjM2NjYyMzkgOS40MDcyMjI5NiwyNC4yMDI2NTAzIDkuNDA3MjIyOTYsMjQuMDA2MzE4MSBDOS40MDcyMjI5NiwyMy45NzM1NTc5IDkuNDA0NDI5NjQsMjMuNjc4ODMwMSA5LjM5OTAxNDAxLDIzLjEyMTc5MDUgQzkuMzkzNDI3MzcsMjIuNTY0NzUxIDkuMzkwODA1MDcsMjIuMDc4Nzk3MiA5LjM5MDgwNTA3LDIxLjY2NDE1ODcgTDkuMDE2NDQyOTcsMjEuNzI5MzM1MSBDOC43Nzc3NTY1LDIxLjc3MzM0MDUgOC40NzY2NDc4MywyMS43OTE5ODY5IDguMTEzMTE2OTgsMjEuNzg2NzA4NiBDNy43NDk3NTcxNSwyMS43ODE2MDIzIDcuMzcyNTQ0NzMsMjEuNzQzMjc2OCA2Ljk4MTk5Mjc3LDIxLjY3MjAxODkgQzYuNTkxMjY5NzksMjEuNjAxMzkyMSA2LjIyNzg1Mjk1LDIxLjQzNzU5MDcgNS44OTE0NTcyMiwyMS4xODA5NTg5IEM1LjU1NTIzMjUyLDIwLjkyNDMyNzEgNS4zMTY1NDYwNCwyMC41ODg0MDUxIDUuMTc1NDU0OCwyMC4xNzM3MDkzIEw1LjAxMjcwMTA2LDE5Ljc5Njc2NTIgQzQuOTA0MjE3NTcsMTkuNTQ1ODEzNCA0LjczMzQyNTkxLDE5LjI2NzAzNTUgNC41MDAwOTgwNSwxOC45NjE0NjQxIEM0LjI2Njc3MDE5LDE4LjY1NTYwNTggNC4wMzA4MjAwMywxOC40NDgyNTc5IDMuNzkyMTMzNTUsMTguMzM5MDc2MSBMMy42NzgxNzc0MywxOC4yNTY5NzQ2IEMzLjYwMjI0NDY5LDE4LjIwMjQxMjMgMy41MzE3ODQ1OCwxOC4xMzY2MDQ5IDMuNDY2NjI2MDgsMTguMDYwMjQwOCBDMy40MDE1MjQ1OCwxNy45ODM4NzY2IDMuMzUyNzgzOTcsMTcuOTA3NDU1MSAzLjMyMDIzMzIzLDE3LjgzMDkxODggQzMuMjg3NjI1NDcsMTcuNzU0MzI1MSAzLjMxNDY0NjU4LDE3LjY5MTUwMTEgMy40MDE1ODE1OSwxNy42NDIyMTcyIEMzLjQ4ODUxNjYsMTcuNTkyOTMzNCAzLjY0NTYyNjY4LDE3LjU2OTAwODYgMy44NzM1OTU5MywxNy41NjkwMDg2IEw0LjE5ODk4OTM5LDE3LjYxNzk0ODIgQzQuNDE2MDEzMzcsMTcuNjYxNzI0MiA0LjY4NDQ1NzI3LDE3Ljc5MjQ3ODUgNS4wMDQ2NjMxNCwxOC4wMTEwMTQzIEM1LjMyNDY5Nzk4LDE4LjIyOTM3NzkgNS41ODc3ODMyNywxOC41MTMyNjIxIDUuNzkzOTc2LDE4Ljg2MjU1MjEgQzYuMDQzNjY0NzUsMTkuMzEwNDA5OSA2LjM0NDQ4ODM4LDE5LjY1MTY2NzYgNi42OTczMDE5OSwxOS44ODY0OTc0IEM3LjA0OTgzMDU4LDIwLjEyMTMyNzMgNy40MDUyNjY0OSwyMC4yMzg1NDE0IDcuNzYzMjY3NzEsMjAuMjM4NTQxNCBDOC4xMjEyNjg5MiwyMC4yMzg1NDE0IDguNDMwNDcyNTIsMjAuMjExMjMxNiA4LjY5MDk5MjUxLDIwLjE1Njg5ODkgQzguOTUxMjI3NDcsMjAuMTAyMjc5MyA5LjE5NTM4NjU3LDIwLjAyMDE3NzcgOS40MjMzNTU4MiwxOS45MTEwNTMzIEM5LjUyMTAwODA2LDE5LjE3OTA4MTkgOS43ODY4ODY2NywxOC42MTY3NjM5IDEwLjIyMDc2MzYsMTguMjIzNjk3OSBDOS42MDIzNTY0MiwxOC4xNTgyOTIxIDkuMDQ2MzcxNDIsMTguMDU5NzgxOCA4LjU1MjUyMzU3LDE3LjkyODc5OCBDOC4wNTg5NjA3NSwxNy43OTc2NDIxIDcuNTQ4OTIzMDMsMTcuNTg0Nzg2MyA3LjAyMjc1MjQ2LDE3LjI4OTY1NjkgQzYuNDk2Mjk2ODUsMTYuOTk0OTI5MSA2LjA1OTU2OTU4LDE2LjYyODk0MzQgNS43MTI0NTY2MiwxNi4xOTIzMzA5IEM1LjM2NTI4NjY1LDE1Ljc1NTQ4ODkgNS4wODAzNjc4NSwxNS4xODE5ODMxIDQuODU4MDk5MjYsMTQuNDcyMzMgQzQuNjM1NzE2NjYsMTMuNzYyMzkgNC41MjQ0OTY4NiwxMi45NDM0NDAzIDQuNTI0NDk2ODYsMTIuMDE1MjUxNCBDNC41MjQ0OTY4NiwxMC42OTM2NTIzIDQuOTUzMTg2MjEsOS41NjkwMTY0MiA1LjgxMDM5Mzg5LDguNjQwNzEyNzggQzUuNDA4ODM5NjcsNy42NDcxMTgwNyA1LjQ0Njc0OTAzLDYuNTMzMjY4NDYgNS45MjQyMzYsNS4yOTkyNzg2OCBDNi4yMzg5MTIyMiw1LjIwMDg4MzA4IDYuNzA1NTY3OTQsNS4yNzQ3MjI4MSA3LjMyMzk3NTE0LDUuNTIwMzM4ODcgQzcuOTQyNDk2MzQsNS43NjYwNjk2OCA4LjM5NTM1NjQ3LDUuOTc2NTczMTQgOC42ODMwMTE1OSw2LjE1MTEwMzQxIEM4Ljk3MDY2NjcsNi4zMjU1NzYzIDkuMjAxMTQ0MjQsNi40NzM0Mjc4NyA5LjM3NDc4NjIzLDYuNTkzMzM4NTQgQzEwLjM4NDA4NzQsNi4zMDk1MTE3MSAxMS40MjU2NTQzLDYuMTY3NTY5NjEgMTIuNDk5NzcyLDYuMTY3NTY5NjEgQzEzLjU3Mzg4OTYsNi4xNjc1Njk2MSAxNC42MTU2ODQ2LDYuMzA5NTExNzEgMTUuNjI1MDQyOCw2LjU5MzMzODU0IEwxNi4yNDM1MDcsNi4yMDAzODcyNiBDMTYuNjY2NDM4Niw1LjkzODE5MDI1IDE3LjE2NTg3MzEsNS42OTc5MDk5MyAxNy43NDA2MTMzLDUuNDc5NDg4OTIgQzE4LjMxNTY5NTUsNS4yNjExODI2NiAxOC43NTU0NDQxLDUuMjAxMDU1MiAxOS4wNTk0MDMxLDUuMjk5NDUwOCBDMTkuNTQ3NDkzMyw2LjUzMzQ5Nzk1IDE5LjU5MDk4OTMsNy42NDcyOTAxOSAxOS4xODkzMjExLDguNjQwODg0OSBDMjAuMDQ2NDcxNyw5LjU2OTE4ODU0IDIwLjQ3NTMzMjEsMTAuNjk0MTExMiAyMC40NzUzMzIxLDEyLjAxNTQyMzUgQzIwLjQ3NTMzMjEsMTIuOTQzNjEyNCAyMC4zNjM3MTMzLDEzLjc2NTE0MzkgMjAuMTQxNjcyNywxNC40ODA1MzQ0IEMxOS45MTkzNDcxLDE1LjE5NjAzOTYgMTkuNjMxOTc3LDE1Ljc2ODk3MTcgMTkuMjc5NDQ4NSwxNi4yMDA1MzUzIEMxOC45MjY1MjA4LDE2LjYzMjA0MTYgMTguNDg3MDAwMiwxNi45OTUxNTg2IDE3Ljk2MDgyOTcsMTcuMjg5ODI5MSBDMTcuNDM0NTQ1MSwxNy41ODQ3MjkgMTYuOTI0MzM2MywxNy43OTc1ODQ4IDE2LjQzMDc3MzUsMTcuOTI4NzQwNiBDMTUuOTM2OTgyNywxOC4wNTk4OTY1IDE1LjM4MDk5NzcsMTguMTU4NDY0MiAxNC43NjI1OTA1LDE4LjIyMzk4NDggQzE1LjMyNjYxMzQsMTguNzE1MjE2OSAxNS42MDg2ODE5LDE5LjQ5MDYyMDEgMTUuNjA4NjgxOSwyMC41NDk4NTAxIEwxNS42MDg2ODE5LDI0LjAwNTg1OTIgQzE1LjYwODY4MTksMjQuMjAyMTkxNCAxNS42NzY1MTk3LDI0LjM2NjEwNzUgMTUuODEyMzA5MywyNC40OTcwOTEzIEMxNS45NDc5Mjc5LDI0LjYyNzg0NTUgMTYuMTYyMTAxNiwyNC42NjYzNDMyIDE2LjQ1NTExNTMsMjQuNjExNTUxNSBDMTguOTcyNjk2MSwyMy43NzA4NTcyIDIxLjAyNjE4NjUsMjIuMjU1Njc5OCAyMi42MTU3MDA1LDIwLjA2NjA3NjYgQzI0LjIwNTA0MzUsMTcuODc2NjQ1NSAyNSwxNS40MTE1OTIgMjUsMTIuNjcwMjg0OSBDMjQuOTk5NDI5OSwxMC4zODg0ODI1IDI0LjQ0MDMwOTYsOC4yODM4NDk0NSAyMy4zMjMyMDksNi4zNTYzODU4OCBaIiBpZD0iU2hhcGUiPjwvcGF0aD4KICAgICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+" alt="GitHub Logo"/></a></li><li><a href="https://openj9.slack.com/" rel="noopener noreferrer" target="_blank"><img src="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIyNXB4IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgogPCEtLSBDcmVhdGVkIHdpdGggTWV0aG9kIERyYXcgLSBodHRwOi8vZ2l0aHViLmNvbS9kdW9waXhlbC9NZXRob2QtRHJhdy8gLS0+CgogPGc+CiAgPHRpdGxlPmJhY2tncm91bmQ8L3RpdGxlPgogIDxyZWN0IGZpbGw9Im5vbmUiIGlkPSJjYW52YXNfYmFja2dyb3VuZCIgaGVpZ2h0PSIyNiIgd2lkdGg9IjI2IiB5PSItMSIgeD0iLTEiLz4KICA8ZyBkaXNwbGF5PSJub25lIiBvdmVyZmxvdz0idmlzaWJsZSIgeT0iMCIgeD0iMCIgaGVpZ2h0PSIxMDAlIiB3aWR0aD0iMTAwJSIgaWQ9ImNhbnZhc0dyaWQiPgogICA8cmVjdCBmaWxsPSJ1cmwoI2dyaWRwYXR0ZXJuKSIgc3Ryb2tlLXdpZHRoPSIwIiB5PSIxIiB4PSIxIiBoZWlnaHQ9IjIyIiB3aWR0aD0iMjIiLz4KICA8L2c+CiA8L2c+CiA8Zz4KICA8dGl0bGU+TGF5ZXIgMTwvdGl0bGU+CiAgPGVsbGlwc2Ugcnk9IjExIiByeD0iMTEiIGlkPSJzdmdfMSIgY3k9IjEyIiBjeD0iMTIiIHN0cm9rZT0iI0ZGRiIgZmlsbD0iI0ZGRkZGRiIvPgogIDxzdHlsZSB0cmFuc2Zvcm09Im1hdHJpeCgwLjA2NTE4MjQ5NTU3MzI1MzYyLDAsMCwwLjA2NTE4MjQ5NTU3MzI1MzYyLDAsMCkgIiB0eXBlPSJ0ZXh0L2NzcyI+LnN0MHtmaWxsOiM0MzQzNDM7fTwvc3R5bGU+CiAgPGcgc3Ryb2tlPSJudWxsIiBpZD0ic3ZnXzE5Ij4KICAgPGcgc3Ryb2tlPSJudWxsIiB0cmFuc2Zvcm09Im1hdHJpeCgwLjEzMDE1NTgwODUxODA5NDg2LDAsMCwwLjEzMDE1NTgwODUxODA5NDg2LC02Ljg0OTAwNjQ1MDQwNTQ5OSwtNi44MzE1MDczOTEwMjE5MjQpICIgaWQ9InN2Z182Ij4KICAgIDxnIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z183Ij4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfOCIgZD0ibTExMC4yOTgyOTIsMTYxLjI5MzAxMWMwLDcuMSAtNS44LDEyLjkgLTEyLjksMTIuOXMtMTIuOSwtNS44IC0xMi45LC0xMi45YzAsLTcuMSA1LjgsLTEyLjkgMTIuOSwtMTIuOWwxMi45LDBsMCwxMi45eiIgY2xhc3M9InN0MCIvPgogICAgIDxwYXRoIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z185IiBkPSJtMTE2Ljc5ODI5MiwxNjEuMjkzMDExYzAsLTcuMSA1LjgsLTEyLjkgMTIuOSwtMTIuOXMxMi45LDUuOCAxMi45LDEyLjlsMCwzMi4zYzAsNy4xIC01LjgsMTIuOSAtMTIuOSwxMi45cy0xMi45LC01LjggLTEyLjksLTEyLjljMCwwIDAsLTMyLjMgMCwtMzIuM3oiIGNsYXNzPSJzdDAiLz4KICAgIDwvZz4KICAgIDxnIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z18xMCI+CiAgICAgPHBhdGggc3Ryb2tlPSJudWxsIiBpZD0ic3ZnXzExIiBkPSJtMTI5LjY5ODI5MiwxMDkuNDkzMDExYy03LjEsMCAtMTIuOSwtNS44IC0xMi45LC0xMi45czUuOCwtMTIuOSAxMi45LC0xMi45czEyLjksNS44IDEyLjksMTIuOWwwLDEyLjlsLTEyLjksMHoiIGNsYXNzPSJzdDAiLz4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTIiIGQ9Im0xMjkuNjk4MjkyLDExNS45OTMwMTFjNy4xLDAgMTIuOSw1LjggMTIuOSwxMi45cy01LjgsMTIuOSAtMTIuOSwxMi45bC0zMi4zLDBjLTcuMSwwIC0xMi45LC01LjggLTEyLjksLTEyLjlzNS44LC0xMi45IDEyLjksLTEyLjljMCwwIDMyLjMsMCAzMi4zLDB6IiBjbGFzcz0ic3QwIi8+CiAgICA8L2c+CiAgICA8ZyBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTMiPgogICAgIDxwYXRoIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z18xNCIgZD0ibTE4MS40OTgyOTIsMTI4Ljg5MzAxMWMwLC03LjEgNS44LC0xMi45IDEyLjksLTEyLjljNy4xLDAgMTIuOSw1LjggMTIuOSwxMi45cy01LjgsMTIuOSAtMTIuOSwxMi45bC0xMi45LDBsMCwtMTIuOXoiIGNsYXNzPSJzdDAiLz4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTUiIGQ9Im0xNzQuOTk4MjkyLDEyOC44OTMwMTFjMCw3LjEgLTUuOCwxMi45IC0xMi45LDEyLjljLTcuMSwwIC0xMi45LC01LjggLTEyLjksLTEyLjlsMCwtMzIuM2MwLC03LjEgNS44LC0xMi45IDEyLjksLTEyLjljNy4xLDAgMTIuOSw1LjggMTIuOSwxMi45bDAsMzIuM3oiIGNsYXNzPSJzdDAiLz4KICAgIDwvZz4KICAgIDxnIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z18xNiI+CiAgICAgPHBhdGggc3Ryb2tlPSJudWxsIiBpZD0ic3ZnXzE3IiBkPSJtMTYyLjA5ODI5MiwxODAuNjkzMDExYzcuMSwwIDEyLjksNS44IDEyLjksMTIuOWMwLDcuMSAtNS44LDEyLjkgLTEyLjksMTIuOWMtNy4xLDAgLTEyLjksLTUuOCAtMTIuOSwtMTIuOWwwLC0xMi45bDEyLjksMHoiIGNsYXNzPSJzdDAiLz4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTgiIGQ9Im0xNjIuMDk4MjkyLDE3NC4xOTMwMTFjLTcuMSwwIC0xMi45LC01LjggLTEyLjksLTEyLjljMCwtNy4xIDUuOCwtMTIuOSAxMi45LC0xMi45bDMyLjMsMGM3LjEsMCAxMi45LDUuOCAxMi45LDEyLjljMCw3LjEgLTUuOCwxMi45IC0xMi45LDEyLjlsLTMyLjMsMHoiIGNsYXNzPSJzdDAiLz4KICAgIDwvZz4KICAgPC9nPgogIDwvZz4KIDwvZz4KPC9zdmc+" alt="Slack logo"/></a></li><li><a href="https://stackoverflow.com/search?q=%23OpenJ9" rel="noopener noreferrer" target="_blank"><img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjRweCIgaGVpZ2h0PSIyNHB4IiB2aWV3Qm94PSIwIDAgNjUgNzAiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5zdGFja292ZXJmbG93LWxvZ288L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0iI0ZGRkZGRiIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0ic3RhY2tvdmVyZmxvdy1sb2dvIiBmaWxsLXJ1bGU9Im5vbnplcm8iPgogICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgZmlsbD0iI0ZGRkZGRiIgcG9pbnRzPSI1NC4yNDE3MjY2IDYzLjc3MDIyNjUgNTQuMjQxNzI2NiA0NSA2MSA0NSA2MSA3MCAwIDcwIDAgNDUgNi43NTgyNzMzOCA0NSA2Ljc1ODI3MzM4IDYzLjc3MDIyNjUiPjwvcG9seWdvbj4KICAgICAgICAgICAgPHBhdGggZD0iTTE0LjcwNzEwNTcsNDMuNjQyNzU2NyBMNDguMTE3ODUxLDUwLjA4NzIwMTEgTDQ5LjUzMjA2MjQsNDMuODg3NDgyNCBMMTYuMTIxMzE3MiwzNy40NDMwMzggTDE0LjcwNzEwNTcsNDMuNjQyNzU2NyBMMTQuNzA3MTA1Nyw0My42NDI3NTY3IFogTTE5LjEyNjUxNjUsMjguOTU5MjEyNCBMNTAuMDYyMzkxNyw0Mi4yNTU5Nzc1IEw1Mi44OTA4MTQ2LDM2LjU0NTcxMDMgTDIxLjk1NDkzOTMsMjMuMTY3MzY5OSBMMTkuMTI2NTE2NSwyOC45NTkyMTI0IFogTTI3LjcwMDE3MzMsMTQuOTI4MjcgTDUzLjk1MTQ3MzEsMzUuMDc3MzU1OCBMNTguMjgyNDk1NywzMC4yNjQ0MTYzIEwzMi4wMzExOTU4LDEwLjExNTMzMDUgTDI3LjcwMDE3MzMsMTQuOTI4MjcgTDI3LjcwMDE3MzMsMTQuOTI4MjcgWiBNNDQuNjcwNzEwNiwwIEwzOS4xOTA2NDEyLDMuNzUyNDYxMzIgTDU5LjUxOTkzMDcsMjkuMDQwNzg3NiBMNjUsMjUuMjg4MzI2MyBMNDQuNjcwNzEwNiwwIFogTTE0LDU4IEw0OC4xMTc4NTEsNTggTDQ4LjExNzg1MSw1MS43MTg3MDYgTDE0LDUxLjcxODcwNiBMMTQsNTggWiIgaWQ9IlNoYXBlIiBmaWxsPSIjRkZGRkZGIj48L3BhdGg+CiAgICAgICAgPC9nPgogICAgPC9nPgo8L3N2Zz4KCgo=" alt="Stack Overflow logo"/></a></li></ul></nav></footer></div></div><script>
   
   function gaOptout(){document.cookie=disableStr+'=true; expires=Thu, 31 Dec 2099 23:59:59 UTC;path=/',window[disableStr]=!0}var gaProperty='UA-105616558-3',disableStr='ga-disable-'+gaProperty;document.cookie.indexOf(disableStr+'=true')>-1&&(window[disableStr]=!0);
   if(true) {
@@ -17,4 +17,4 @@
       
       
       
-      }</script><script id="gatsby-script-loader">/*<![CDATA[*/window.pagePath="/";/*]]>*/</script><script id="gatsby-chunk-mapping">/*<![CDATA[*/window.___chunkMapping={"app":["/app-0b96427b0b370a80fa06.js"],"component---src-pages-about-js":["/component---src-pages-about-js-0c1171ebe659e1cec428.js"],"component---src-pages-index-js":["/component---src-pages-index-js-743bf9596a9631508e4e.js"],"component---src-pages-news-js":["/component---src-pages-news-js-771033deb1dca3596266.js"],"component---src-pages-performance-js":["/component---src-pages-performance-js-31be57d58d932a4860aa.js"]};/*]]>*/</script><script src="/openj9/webpack-runtime-c69760aa7e58303b27f8.js" async=""></script><script src="/openj9/styles-cc4082ebb0cb6903d934.js" async=""></script><script src="/openj9/app-0b96427b0b370a80fa06.js" async=""></script><script src="/openj9/commons-42a47b90457bdd243664.js" async=""></script><script src="/openj9/component---src-pages-index-js-743bf9596a9631508e4e.js" async=""></script></body></html>
\ No newline at end of file
+      }</script><script id="gatsby-script-loader">/*<![CDATA[*/window.pagePath="/";/*]]>*/</script><script id="gatsby-chunk-mapping">/*<![CDATA[*/window.___chunkMapping={"app":["/app-2da2270a07d62743bcd4.js"],"component---src-pages-about-js":["/component---src-pages-about-js-f3472e79e3f9cd8dc280.js"],"component---src-pages-index-js":["/component---src-pages-index-js-4f88f89ee8348cf9654f.js"],"component---src-pages-news-js":["/component---src-pages-news-js-63e528f45eabc859ccac.js"],"component---src-pages-performance-js":["/component---src-pages-performance-js-985e1e9d446123113ec2.js"]};/*]]>*/</script><script src="/openj9/webpack-runtime-4324011276ab16472ff8.js" async=""></script><script src="/openj9/styles-cc4082ebb0cb6903d934.js" async=""></script><script src="/openj9/app-2da2270a07d62743bcd4.js" async=""></script><script src="/openj9/commons-b35008cb74c6abd7ace8.js" async=""></script><script src="/openj9/component---src-pages-index-js-4f88f89ee8348cf9654f.js" async=""></script></body></html>
\ No newline at end of file
diff --git a/manifest.webmanifest b/manifest.webmanifest
index 120350f..250fefa 100644
--- a/manifest.webmanifest
+++ b/manifest.webmanifest
@@ -1 +1 @@
-{"cacheDigest":"0a19b941415d1d6d03226a8c85fc39c9","icons":[{"src":"/openj9/icons/icon-48x48.png?v=0a19b941415d1d6d03226a8c85fc39c9","sizes":"48x48","type":"image/png"},{"src":"/openj9/icons/icon-72x72.png?v=0a19b941415d1d6d03226a8c85fc39c9","sizes":"72x72","type":"image/png"},{"src":"/openj9/icons/icon-96x96.png?v=0a19b941415d1d6d03226a8c85fc39c9","sizes":"96x96","type":"image/png"},{"src":"/openj9/icons/icon-144x144.png?v=0a19b941415d1d6d03226a8c85fc39c9","sizes":"144x144","type":"image/png"},{"src":"/openj9/icons/icon-192x192.png?v=0a19b941415d1d6d03226a8c85fc39c9","sizes":"192x192","type":"image/png"},{"src":"/openj9/icons/icon-256x256.png?v=0a19b941415d1d6d03226a8c85fc39c9","sizes":"256x256","type":"image/png"},{"src":"/openj9/icons/icon-384x384.png?v=0a19b941415d1d6d03226a8c85fc39c9","sizes":"384x384","type":"image/png"},{"src":"/openj9/icons/icon-512x512.png?v=0a19b941415d1d6d03226a8c85fc39c9","sizes":"512x512","type":"image/png"}]}
\ No newline at end of file
+{"cacheDigest":"521b6ab03638f6a52fffc5f7bf4c617e","icons":[{"src":"/openj9/icons/icon-48x48.png?v=521b6ab03638f6a52fffc5f7bf4c617e","sizes":"48x48","type":"image/png"},{"src":"/openj9/icons/icon-72x72.png?v=521b6ab03638f6a52fffc5f7bf4c617e","sizes":"72x72","type":"image/png"},{"src":"/openj9/icons/icon-96x96.png?v=521b6ab03638f6a52fffc5f7bf4c617e","sizes":"96x96","type":"image/png"},{"src":"/openj9/icons/icon-144x144.png?v=521b6ab03638f6a52fffc5f7bf4c617e","sizes":"144x144","type":"image/png"},{"src":"/openj9/icons/icon-192x192.png?v=521b6ab03638f6a52fffc5f7bf4c617e","sizes":"192x192","type":"image/png"},{"src":"/openj9/icons/icon-256x256.png?v=521b6ab03638f6a52fffc5f7bf4c617e","sizes":"256x256","type":"image/png"},{"src":"/openj9/icons/icon-384x384.png?v=521b6ab03638f6a52fffc5f7bf4c617e","sizes":"384x384","type":"image/png"},{"src":"/openj9/icons/icon-512x512.png?v=521b6ab03638f6a52fffc5f7bf4c617e","sizes":"512x512","type":"image/png"}]}
\ No newline at end of file
diff --git a/news/index.html b/news/index.html
index f300c02..a89d301 100644
--- a/news/index.html
+++ b/news/index.html
@@ -1,7 +1,7 @@
 <!DOCTYPE html><html><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="ie=edge"/><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"/><style data-href="/openj9/styles.49a8f6a822c9d7d4566b.css">/*!
  * Font Awesome Free 5.12.1 by @fontawesome - https://fontawesome.com
  * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
- */.fa,.fab,.fad,.fal,.far,.fas{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-.0667em}.fa-xs{font-size:.75em}.fa-sm{font-size:.875em}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:2.5em;padding-left:0}.fa-ul>li{position:relative}.fa-li{left:-2em;position:absolute;text-align:center;width:2em;line-height:inherit}.fa-border{border:.08em solid #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.fab.fa-pull-left,.fal.fa-pull-left,.far.fa-pull-left,.fas.fa-pull-left{margin-right:.3em}.fa.fa-pull-right,.fab.fa-pull-right,.fal.fa-pull-right,.far.fa-pull-right,.fas.fa-pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s linear infinite;animation:fa-spin 2s linear infinite}.fa-pulse{-webkit-animation:fa-spin 1s steps(8) infinite;animation:fa-spin 1s steps(8) infinite}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scaleX(-1);transform:scaleX(-1)}.fa-flip-vertical{-webkit-transform:scaleY(-1);transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical,.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{-webkit-transform:scale(-1);transform:scale(-1)}:root .fa-flip-both,:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270{-webkit-filter:none;filter:none}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-500px:before{content:"\F26E"}.fa-accessible-icon:before{content:"\F368"}.fa-accusoft:before{content:"\F369"}.fa-acquisitions-incorporated:before{content:"\F6AF"}.fa-ad:before{content:"\F641"}.fa-address-book:before{content:"\F2B9"}.fa-address-card:before{content:"\F2BB"}.fa-adjust:before{content:"\F042"}.fa-adn:before{content:"\F170"}.fa-adobe:before{content:"\F778"}.fa-adversal:before{content:"\F36A"}.fa-affiliatetheme:before{content:"\F36B"}.fa-air-freshener:before{content:"\F5D0"}.fa-airbnb:before{content:"\F834"}.fa-algolia:before{content:"\F36C"}.fa-align-center:before{content:"\F037"}.fa-align-justify:before{content:"\F039"}.fa-align-left:before{content:"\F036"}.fa-align-right:before{content:"\F038"}.fa-alipay:before{content:"\F642"}.fa-allergies:before{content:"\F461"}.fa-amazon:before{content:"\F270"}.fa-amazon-pay:before{content:"\F42C"}.fa-ambulance:before{content:"\F0F9"}.fa-american-sign-language-interpreting:before{content:"\F2A3"}.fa-amilia:before{content:"\F36D"}.fa-anchor:before{content:"\F13D"}.fa-android:before{content:"\F17B"}.fa-angellist:before{content:"\F209"}.fa-angle-double-down:before{content:"\F103"}.fa-angle-double-left:before{content:"\F100"}.fa-angle-double-right:before{content:"\F101"}.fa-angle-double-up:before{content:"\F102"}.fa-angle-down:before{content:"\F107"}.fa-angle-left:before{content:"\F104"}.fa-angle-right:before{content:"\F105"}.fa-angle-up:before{content:"\F106"}.fa-angry:before{content:"\F556"}.fa-angrycreative:before{content:"\F36E"}.fa-angular:before{content:"\F420"}.fa-ankh:before{content:"\F644"}.fa-app-store:before{content:"\F36F"}.fa-app-store-ios:before{content:"\F370"}.fa-apper:before{content:"\F371"}.fa-apple:before{content:"\F179"}.fa-apple-alt:before{content:"\F5D1"}.fa-apple-pay:before{content:"\F415"}.fa-archive:before{content:"\F187"}.fa-archway:before{content:"\F557"}.fa-arrow-alt-circle-down:before{content:"\F358"}.fa-arrow-alt-circle-left:before{content:"\F359"}.fa-arrow-alt-circle-right:before{content:"\F35A"}.fa-arrow-alt-circle-up:before{content:"\F35B"}.fa-arrow-circle-down:before{content:"\F0AB"}.fa-arrow-circle-left:before{content:"\F0A8"}.fa-arrow-circle-right:before{content:"\F0A9"}.fa-arrow-circle-up:before{content:"\F0AA"}.fa-arrow-down:before{content:"\F063"}.fa-arrow-left:before{content:"\F060"}.fa-arrow-right:before{content:"\F061"}.fa-arrow-up:before{content:"\F062"}.fa-arrows-alt:before{content:"\F0B2"}.fa-arrows-alt-h:before{content:"\F337"}.fa-arrows-alt-v:before{content:"\F338"}.fa-artstation:before{content:"\F77A"}.fa-assistive-listening-systems:before{content:"\F2A2"}.fa-asterisk:before{content:"\F069"}.fa-asymmetrik:before{content:"\F372"}.fa-at:before{content:"\F1FA"}.fa-atlas:before{content:"\F558"}.fa-atlassian:before{content:"\F77B"}.fa-atom:before{content:"\F5D2"}.fa-audible:before{content:"\F373"}.fa-audio-description:before{content:"\F29E"}.fa-autoprefixer:before{content:"\F41C"}.fa-avianex:before{content:"\F374"}.fa-aviato:before{content:"\F421"}.fa-award:before{content:"\F559"}.fa-aws:before{content:"\F375"}.fa-baby:before{content:"\F77C"}.fa-baby-carriage:before{content:"\F77D"}.fa-backspace:before{content:"\F55A"}.fa-backward:before{content:"\F04A"}.fa-bacon:before{content:"\F7E5"}.fa-bahai:before{content:"\F666"}.fa-balance-scale:before{content:"\F24E"}.fa-balance-scale-left:before{content:"\F515"}.fa-balance-scale-right:before{content:"\F516"}.fa-ban:before{content:"\F05E"}.fa-band-aid:before{content:"\F462"}.fa-bandcamp:before{content:"\F2D5"}.fa-barcode:before{content:"\F02A"}.fa-bars:before{content:"\F0C9"}.fa-baseball-ball:before{content:"\F433"}.fa-basketball-ball:before{content:"\F434"}.fa-bath:before{content:"\F2CD"}.fa-battery-empty:before{content:"\F244"}.fa-battery-full:before{content:"\F240"}.fa-battery-half:before{content:"\F242"}.fa-battery-quarter:before{content:"\F243"}.fa-battery-three-quarters:before{content:"\F241"}.fa-battle-net:before{content:"\F835"}.fa-bed:before{content:"\F236"}.fa-beer:before{content:"\F0FC"}.fa-behance:before{content:"\F1B4"}.fa-behance-square:before{content:"\F1B5"}.fa-bell:before{content:"\F0F3"}.fa-bell-slash:before{content:"\F1F6"}.fa-bezier-curve:before{content:"\F55B"}.fa-bible:before{content:"\F647"}.fa-bicycle:before{content:"\F206"}.fa-biking:before{content:"\F84A"}.fa-bimobject:before{content:"\F378"}.fa-binoculars:before{content:"\F1E5"}.fa-biohazard:before{content:"\F780"}.fa-birthday-cake:before{content:"\F1FD"}.fa-bitbucket:before{content:"\F171"}.fa-bitcoin:before{content:"\F379"}.fa-bity:before{content:"\F37A"}.fa-black-tie:before{content:"\F27E"}.fa-blackberry:before{content:"\F37B"}.fa-blender:before{content:"\F517"}.fa-blender-phone:before{content:"\F6B6"}.fa-blind:before{content:"\F29D"}.fa-blog:before{content:"\F781"}.fa-blogger:before{content:"\F37C"}.fa-blogger-b:before{content:"\F37D"}.fa-bluetooth:before{content:"\F293"}.fa-bluetooth-b:before{content:"\F294"}.fa-bold:before{content:"\F032"}.fa-bolt:before{content:"\F0E7"}.fa-bomb:before{content:"\F1E2"}.fa-bone:before{content:"\F5D7"}.fa-bong:before{content:"\F55C"}.fa-book:before{content:"\F02D"}.fa-book-dead:before{content:"\F6B7"}.fa-book-medical:before{content:"\F7E6"}.fa-book-open:before{content:"\F518"}.fa-book-reader:before{content:"\F5DA"}.fa-bookmark:before{content:"\F02E"}.fa-bootstrap:before{content:"\F836"}.fa-border-all:before{content:"\F84C"}.fa-border-none:before{content:"\F850"}.fa-border-style:before{content:"\F853"}.fa-bowling-ball:before{content:"\F436"}.fa-box:before{content:"\F466"}.fa-box-open:before{content:"\F49E"}.fa-boxes:before{content:"\F468"}.fa-braille:before{content:"\F2A1"}.fa-brain:before{content:"\F5DC"}.fa-bread-slice:before{content:"\F7EC"}.fa-briefcase:before{content:"\F0B1"}.fa-briefcase-medical:before{content:"\F469"}.fa-broadcast-tower:before{content:"\F519"}.fa-broom:before{content:"\F51A"}.fa-brush:before{content:"\F55D"}.fa-btc:before{content:"\F15A"}.fa-buffer:before{content:"\F837"}.fa-bug:before{content:"\F188"}.fa-building:before{content:"\F1AD"}.fa-bullhorn:before{content:"\F0A1"}.fa-bullseye:before{content:"\F140"}.fa-burn:before{content:"\F46A"}.fa-buromobelexperte:before{content:"\F37F"}.fa-bus:before{content:"\F207"}.fa-bus-alt:before{content:"\F55E"}.fa-business-time:before{content:"\F64A"}.fa-buy-n-large:before{content:"\F8A6"}.fa-buysellads:before{content:"\F20D"}.fa-calculator:before{content:"\F1EC"}.fa-calendar:before{content:"\F133"}.fa-calendar-alt:before{content:"\F073"}.fa-calendar-check:before{content:"\F274"}.fa-calendar-day:before{content:"\F783"}.fa-calendar-minus:before{content:"\F272"}.fa-calendar-plus:before{content:"\F271"}.fa-calendar-times:before{content:"\F273"}.fa-calendar-week:before{content:"\F784"}.fa-camera:before{content:"\F030"}.fa-camera-retro:before{content:"\F083"}.fa-campground:before{content:"\F6BB"}.fa-canadian-maple-leaf:before{content:"\F785"}.fa-candy-cane:before{content:"\F786"}.fa-cannabis:before{content:"\F55F"}.fa-capsules:before{content:"\F46B"}.fa-car:before{content:"\F1B9"}.fa-car-alt:before{content:"\F5DE"}.fa-car-battery:before{content:"\F5DF"}.fa-car-crash:before{content:"\F5E1"}.fa-car-side:before{content:"\F5E4"}.fa-caravan:before{content:"\F8FF"}.fa-caret-down:before{content:"\F0D7"}.fa-caret-left:before{content:"\F0D9"}.fa-caret-right:before{content:"\F0DA"}.fa-caret-square-down:before{content:"\F150"}.fa-caret-square-left:before{content:"\F191"}.fa-caret-square-right:before{content:"\F152"}.fa-caret-square-up:before{content:"\F151"}.fa-caret-up:before{content:"\F0D8"}.fa-carrot:before{content:"\F787"}.fa-cart-arrow-down:before{content:"\F218"}.fa-cart-plus:before{content:"\F217"}.fa-cash-register:before{content:"\F788"}.fa-cat:before{content:"\F6BE"}.fa-cc-amazon-pay:before{content:"\F42D"}.fa-cc-amex:before{content:"\F1F3"}.fa-cc-apple-pay:before{content:"\F416"}.fa-cc-diners-club:before{content:"\F24C"}.fa-cc-discover:before{content:"\F1F2"}.fa-cc-jcb:before{content:"\F24B"}.fa-cc-mastercard:before{content:"\F1F1"}.fa-cc-paypal:before{content:"\F1F4"}.fa-cc-stripe:before{content:"\F1F5"}.fa-cc-visa:before{content:"\F1F0"}.fa-centercode:before{content:"\F380"}.fa-centos:before{content:"\F789"}.fa-certificate:before{content:"\F0A3"}.fa-chair:before{content:"\F6C0"}.fa-chalkboard:before{content:"\F51B"}.fa-chalkboard-teacher:before{content:"\F51C"}.fa-charging-station:before{content:"\F5E7"}.fa-chart-area:before{content:"\F1FE"}.fa-chart-bar:before{content:"\F080"}.fa-chart-line:before{content:"\F201"}.fa-chart-pie:before{content:"\F200"}.fa-check:before{content:"\F00C"}.fa-check-circle:before{content:"\F058"}.fa-check-double:before{content:"\F560"}.fa-check-square:before{content:"\F14A"}.fa-cheese:before{content:"\F7EF"}.fa-chess:before{content:"\F439"}.fa-chess-bishop:before{content:"\F43A"}.fa-chess-board:before{content:"\F43C"}.fa-chess-king:before{content:"\F43F"}.fa-chess-knight:before{content:"\F441"}.fa-chess-pawn:before{content:"\F443"}.fa-chess-queen:before{content:"\F445"}.fa-chess-rook:before{content:"\F447"}.fa-chevron-circle-down:before{content:"\F13A"}.fa-chevron-circle-left:before{content:"\F137"}.fa-chevron-circle-right:before{content:"\F138"}.fa-chevron-circle-up:before{content:"\F139"}.fa-chevron-down:before{content:"\F078"}.fa-chevron-left:before{content:"\F053"}.fa-chevron-right:before{content:"\F054"}.fa-chevron-up:before{content:"\F077"}.fa-child:before{content:"\F1AE"}.fa-chrome:before{content:"\F268"}.fa-chromecast:before{content:"\F838"}.fa-church:before{content:"\F51D"}.fa-circle:before{content:"\F111"}.fa-circle-notch:before{content:"\F1CE"}.fa-city:before{content:"\F64F"}.fa-clinic-medical:before{content:"\F7F2"}.fa-clipboard:before{content:"\F328"}.fa-clipboard-check:before{content:"\F46C"}.fa-clipboard-list:before{content:"\F46D"}.fa-clock:before{content:"\F017"}.fa-clone:before{content:"\F24D"}.fa-closed-captioning:before{content:"\F20A"}.fa-cloud:before{content:"\F0C2"}.fa-cloud-download-alt:before{content:"\F381"}.fa-cloud-meatball:before{content:"\F73B"}.fa-cloud-moon:before{content:"\F6C3"}.fa-cloud-moon-rain:before{content:"\F73C"}.fa-cloud-rain:before{content:"\F73D"}.fa-cloud-showers-heavy:before{content:"\F740"}.fa-cloud-sun:before{content:"\F6C4"}.fa-cloud-sun-rain:before{content:"\F743"}.fa-cloud-upload-alt:before{content:"\F382"}.fa-cloudscale:before{content:"\F383"}.fa-cloudsmith:before{content:"\F384"}.fa-cloudversify:before{content:"\F385"}.fa-cocktail:before{content:"\F561"}.fa-code:before{content:"\F121"}.fa-code-branch:before{content:"\F126"}.fa-codepen:before{content:"\F1CB"}.fa-codiepie:before{content:"\F284"}.fa-coffee:before{content:"\F0F4"}.fa-cog:before{content:"\F013"}.fa-cogs:before{content:"\F085"}.fa-coins:before{content:"\F51E"}.fa-columns:before{content:"\F0DB"}.fa-comment:before{content:"\F075"}.fa-comment-alt:before{content:"\F27A"}.fa-comment-dollar:before{content:"\F651"}.fa-comment-dots:before{content:"\F4AD"}.fa-comment-medical:before{content:"\F7F5"}.fa-comment-slash:before{content:"\F4B3"}.fa-comments:before{content:"\F086"}.fa-comments-dollar:before{content:"\F653"}.fa-compact-disc:before{content:"\F51F"}.fa-compass:before{content:"\F14E"}.fa-compress:before{content:"\F066"}.fa-compress-alt:before{content:"\F422"}.fa-compress-arrows-alt:before{content:"\F78C"}.fa-concierge-bell:before{content:"\F562"}.fa-confluence:before{content:"\F78D"}.fa-connectdevelop:before{content:"\F20E"}.fa-contao:before{content:"\F26D"}.fa-cookie:before{content:"\F563"}.fa-cookie-bite:before{content:"\F564"}.fa-copy:before{content:"\F0C5"}.fa-copyright:before{content:"\F1F9"}.fa-cotton-bureau:before{content:"\F89E"}.fa-couch:before{content:"\F4B8"}.fa-cpanel:before{content:"\F388"}.fa-creative-commons:before{content:"\F25E"}.fa-creative-commons-by:before{content:"\F4E7"}.fa-creative-commons-nc:before{content:"\F4E8"}.fa-creative-commons-nc-eu:before{content:"\F4E9"}.fa-creative-commons-nc-jp:before{content:"\F4EA"}.fa-creative-commons-nd:before{content:"\F4EB"}.fa-creative-commons-pd:before{content:"\F4EC"}.fa-creative-commons-pd-alt:before{content:"\F4ED"}.fa-creative-commons-remix:before{content:"\F4EE"}.fa-creative-commons-sa:before{content:"\F4EF"}.fa-creative-commons-sampling:before{content:"\F4F0"}.fa-creative-commons-sampling-plus:before{content:"\F4F1"}.fa-creative-commons-share:before{content:"\F4F2"}.fa-creative-commons-zero:before{content:"\F4F3"}.fa-credit-card:before{content:"\F09D"}.fa-critical-role:before{content:"\F6C9"}.fa-crop:before{content:"\F125"}.fa-crop-alt:before{content:"\F565"}.fa-cross:before{content:"\F654"}.fa-crosshairs:before{content:"\F05B"}.fa-crow:before{content:"\F520"}.fa-crown:before{content:"\F521"}.fa-crutch:before{content:"\F7F7"}.fa-css3:before{content:"\F13C"}.fa-css3-alt:before{content:"\F38B"}.fa-cube:before{content:"\F1B2"}.fa-cubes:before{content:"\F1B3"}.fa-cut:before{content:"\F0C4"}.fa-cuttlefish:before{content:"\F38C"}.fa-d-and-d:before{content:"\F38D"}.fa-d-and-d-beyond:before{content:"\F6CA"}.fa-dailymotion:before{content:"\F952"}.fa-dashcube:before{content:"\F210"}.fa-database:before{content:"\F1C0"}.fa-deaf:before{content:"\F2A4"}.fa-delicious:before{content:"\F1A5"}.fa-democrat:before{content:"\F747"}.fa-deploydog:before{content:"\F38E"}.fa-deskpro:before{content:"\F38F"}.fa-desktop:before{content:"\F108"}.fa-dev:before{content:"\F6CC"}.fa-deviantart:before{content:"\F1BD"}.fa-dharmachakra:before{content:"\F655"}.fa-dhl:before{content:"\F790"}.fa-diagnoses:before{content:"\F470"}.fa-diaspora:before{content:"\F791"}.fa-dice:before{content:"\F522"}.fa-dice-d20:before{content:"\F6CF"}.fa-dice-d6:before{content:"\F6D1"}.fa-dice-five:before{content:"\F523"}.fa-dice-four:before{content:"\F524"}.fa-dice-one:before{content:"\F525"}.fa-dice-six:before{content:"\F526"}.fa-dice-three:before{content:"\F527"}.fa-dice-two:before{content:"\F528"}.fa-digg:before{content:"\F1A6"}.fa-digital-ocean:before{content:"\F391"}.fa-digital-tachograph:before{content:"\F566"}.fa-directions:before{content:"\F5EB"}.fa-discord:before{content:"\F392"}.fa-discourse:before{content:"\F393"}.fa-divide:before{content:"\F529"}.fa-dizzy:before{content:"\F567"}.fa-dna:before{content:"\F471"}.fa-dochub:before{content:"\F394"}.fa-docker:before{content:"\F395"}.fa-dog:before{content:"\F6D3"}.fa-dollar-sign:before{content:"\F155"}.fa-dolly:before{content:"\F472"}.fa-dolly-flatbed:before{content:"\F474"}.fa-donate:before{content:"\F4B9"}.fa-door-closed:before{content:"\F52A"}.fa-door-open:before{content:"\F52B"}.fa-dot-circle:before{content:"\F192"}.fa-dove:before{content:"\F4BA"}.fa-download:before{content:"\F019"}.fa-draft2digital:before{content:"\F396"}.fa-drafting-compass:before{content:"\F568"}.fa-dragon:before{content:"\F6D5"}.fa-draw-polygon:before{content:"\F5EE"}.fa-dribbble:before{content:"\F17D"}.fa-dribbble-square:before{content:"\F397"}.fa-dropbox:before{content:"\F16B"}.fa-drum:before{content:"\F569"}.fa-drum-steelpan:before{content:"\F56A"}.fa-drumstick-bite:before{content:"\F6D7"}.fa-drupal:before{content:"\F1A9"}.fa-dumbbell:before{content:"\F44B"}.fa-dumpster:before{content:"\F793"}.fa-dumpster-fire:before{content:"\F794"}.fa-dungeon:before{content:"\F6D9"}.fa-dyalog:before{content:"\F399"}.fa-earlybirds:before{content:"\F39A"}.fa-ebay:before{content:"\F4F4"}.fa-edge:before{content:"\F282"}.fa-edit:before{content:"\F044"}.fa-egg:before{content:"\F7FB"}.fa-eject:before{content:"\F052"}.fa-elementor:before{content:"\F430"}.fa-ellipsis-h:before{content:"\F141"}.fa-ellipsis-v:before{content:"\F142"}.fa-ello:before{content:"\F5F1"}.fa-ember:before{content:"\F423"}.fa-empire:before{content:"\F1D1"}.fa-envelope:before{content:"\F0E0"}.fa-envelope-open:before{content:"\F2B6"}.fa-envelope-open-text:before{content:"\F658"}.fa-envelope-square:before{content:"\F199"}.fa-envira:before{content:"\F299"}.fa-equals:before{content:"\F52C"}.fa-eraser:before{content:"\F12D"}.fa-erlang:before{content:"\F39D"}.fa-ethereum:before{content:"\F42E"}.fa-ethernet:before{content:"\F796"}.fa-etsy:before{content:"\F2D7"}.fa-euro-sign:before{content:"\F153"}.fa-evernote:before{content:"\F839"}.fa-exchange-alt:before{content:"\F362"}.fa-exclamation:before{content:"\F12A"}.fa-exclamation-circle:before{content:"\F06A"}.fa-exclamation-triangle:before{content:"\F071"}.fa-expand:before{content:"\F065"}.fa-expand-alt:before{content:"\F424"}.fa-expand-arrows-alt:before{content:"\F31E"}.fa-expeditedssl:before{content:"\F23E"}.fa-external-link-alt:before{content:"\F35D"}.fa-external-link-square-alt:before{content:"\F360"}.fa-eye:before{content:"\F06E"}.fa-eye-dropper:before{content:"\F1FB"}.fa-eye-slash:before{content:"\F070"}.fa-facebook:before{content:"\F09A"}.fa-facebook-f:before{content:"\F39E"}.fa-facebook-messenger:before{content:"\F39F"}.fa-facebook-square:before{content:"\F082"}.fa-fan:before{content:"\F863"}.fa-fantasy-flight-games:before{content:"\F6DC"}.fa-fast-backward:before{content:"\F049"}.fa-fast-forward:before{content:"\F050"}.fa-fax:before{content:"\F1AC"}.fa-feather:before{content:"\F52D"}.fa-feather-alt:before{content:"\F56B"}.fa-fedex:before{content:"\F797"}.fa-fedora:before{content:"\F798"}.fa-female:before{content:"\F182"}.fa-fighter-jet:before{content:"\F0FB"}.fa-figma:before{content:"\F799"}.fa-file:before{content:"\F15B"}.fa-file-alt:before{content:"\F15C"}.fa-file-archive:before{content:"\F1C6"}.fa-file-audio:before{content:"\F1C7"}.fa-file-code:before{content:"\F1C9"}.fa-file-contract:before{content:"\F56C"}.fa-file-csv:before{content:"\F6DD"}.fa-file-download:before{content:"\F56D"}.fa-file-excel:before{content:"\F1C3"}.fa-file-export:before{content:"\F56E"}.fa-file-image:before{content:"\F1C5"}.fa-file-import:before{content:"\F56F"}.fa-file-invoice:before{content:"\F570"}.fa-file-invoice-dollar:before{content:"\F571"}.fa-file-medical:before{content:"\F477"}.fa-file-medical-alt:before{content:"\F478"}.fa-file-pdf:before{content:"\F1C1"}.fa-file-powerpoint:before{content:"\F1C4"}.fa-file-prescription:before{content:"\F572"}.fa-file-signature:before{content:"\F573"}.fa-file-upload:before{content:"\F574"}.fa-file-video:before{content:"\F1C8"}.fa-file-word:before{content:"\F1C2"}.fa-fill:before{content:"\F575"}.fa-fill-drip:before{content:"\F576"}.fa-film:before{content:"\F008"}.fa-filter:before{content:"\F0B0"}.fa-fingerprint:before{content:"\F577"}.fa-fire:before{content:"\F06D"}.fa-fire-alt:before{content:"\F7E4"}.fa-fire-extinguisher:before{content:"\F134"}.fa-firefox:before{content:"\F269"}.fa-firefox-browser:before{content:"\F907"}.fa-first-aid:before{content:"\F479"}.fa-first-order:before{content:"\F2B0"}.fa-first-order-alt:before{content:"\F50A"}.fa-firstdraft:before{content:"\F3A1"}.fa-fish:before{content:"\F578"}.fa-fist-raised:before{content:"\F6DE"}.fa-flag:before{content:"\F024"}.fa-flag-checkered:before{content:"\F11E"}.fa-flag-usa:before{content:"\F74D"}.fa-flask:before{content:"\F0C3"}.fa-flickr:before{content:"\F16E"}.fa-flipboard:before{content:"\F44D"}.fa-flushed:before{content:"\F579"}.fa-fly:before{content:"\F417"}.fa-folder:before{content:"\F07B"}.fa-folder-minus:before{content:"\F65D"}.fa-folder-open:before{content:"\F07C"}.fa-folder-plus:before{content:"\F65E"}.fa-font:before{content:"\F031"}.fa-font-awesome:before{content:"\F2B4"}.fa-font-awesome-alt:before{content:"\F35C"}.fa-font-awesome-flag:before{content:"\F425"}.fa-font-awesome-logo-full:before{content:"\F4E6"}.fa-fonticons:before{content:"\F280"}.fa-fonticons-fi:before{content:"\F3A2"}.fa-football-ball:before{content:"\F44E"}.fa-fort-awesome:before{content:"\F286"}.fa-fort-awesome-alt:before{content:"\F3A3"}.fa-forumbee:before{content:"\F211"}.fa-forward:before{content:"\F04E"}.fa-foursquare:before{content:"\F180"}.fa-free-code-camp:before{content:"\F2C5"}.fa-freebsd:before{content:"\F3A4"}.fa-frog:before{content:"\F52E"}.fa-frown:before{content:"\F119"}.fa-frown-open:before{content:"\F57A"}.fa-fulcrum:before{content:"\F50B"}.fa-funnel-dollar:before{content:"\F662"}.fa-futbol:before{content:"\F1E3"}.fa-galactic-republic:before{content:"\F50C"}.fa-galactic-senate:before{content:"\F50D"}.fa-gamepad:before{content:"\F11B"}.fa-gas-pump:before{content:"\F52F"}.fa-gavel:before{content:"\F0E3"}.fa-gem:before{content:"\F3A5"}.fa-genderless:before{content:"\F22D"}.fa-get-pocket:before{content:"\F265"}.fa-gg:before{content:"\F260"}.fa-gg-circle:before{content:"\F261"}.fa-ghost:before{content:"\F6E2"}.fa-gift:before{content:"\F06B"}.fa-gifts:before{content:"\F79C"}.fa-git:before{content:"\F1D3"}.fa-git-alt:before{content:"\F841"}.fa-git-square:before{content:"\F1D2"}.fa-github:before{content:"\F09B"}.fa-github-alt:before{content:"\F113"}.fa-github-square:before{content:"\F092"}.fa-gitkraken:before{content:"\F3A6"}.fa-gitlab:before{content:"\F296"}.fa-gitter:before{content:"\F426"}.fa-glass-cheers:before{content:"\F79F"}.fa-glass-martini:before{content:"\F000"}.fa-glass-martini-alt:before{content:"\F57B"}.fa-glass-whiskey:before{content:"\F7A0"}.fa-glasses:before{content:"\F530"}.fa-glide:before{content:"\F2A5"}.fa-glide-g:before{content:"\F2A6"}.fa-globe:before{content:"\F0AC"}.fa-globe-africa:before{content:"\F57C"}.fa-globe-americas:before{content:"\F57D"}.fa-globe-asia:before{content:"\F57E"}.fa-globe-europe:before{content:"\F7A2"}.fa-gofore:before{content:"\F3A7"}.fa-golf-ball:before{content:"\F450"}.fa-goodreads:before{content:"\F3A8"}.fa-goodreads-g:before{content:"\F3A9"}.fa-google:before{content:"\F1A0"}.fa-google-drive:before{content:"\F3AA"}.fa-google-play:before{content:"\F3AB"}.fa-google-plus:before{content:"\F2B3"}.fa-google-plus-g:before{content:"\F0D5"}.fa-google-plus-square:before{content:"\F0D4"}.fa-google-wallet:before{content:"\F1EE"}.fa-gopuram:before{content:"\F664"}.fa-graduation-cap:before{content:"\F19D"}.fa-gratipay:before{content:"\F184"}.fa-grav:before{content:"\F2D6"}.fa-greater-than:before{content:"\F531"}.fa-greater-than-equal:before{content:"\F532"}.fa-grimace:before{content:"\F57F"}.fa-grin:before{content:"\F580"}.fa-grin-alt:before{content:"\F581"}.fa-grin-beam:before{content:"\F582"}.fa-grin-beam-sweat:before{content:"\F583"}.fa-grin-hearts:before{content:"\F584"}.fa-grin-squint:before{content:"\F585"}.fa-grin-squint-tears:before{content:"\F586"}.fa-grin-stars:before{content:"\F587"}.fa-grin-tears:before{content:"\F588"}.fa-grin-tongue:before{content:"\F589"}.fa-grin-tongue-squint:before{content:"\F58A"}.fa-grin-tongue-wink:before{content:"\F58B"}.fa-grin-wink:before{content:"\F58C"}.fa-grip-horizontal:before{content:"\F58D"}.fa-grip-lines:before{content:"\F7A4"}.fa-grip-lines-vertical:before{content:"\F7A5"}.fa-grip-vertical:before{content:"\F58E"}.fa-gripfire:before{content:"\F3AC"}.fa-grunt:before{content:"\F3AD"}.fa-guitar:before{content:"\F7A6"}.fa-gulp:before{content:"\F3AE"}.fa-h-square:before{content:"\F0FD"}.fa-hacker-news:before{content:"\F1D4"}.fa-hacker-news-square:before{content:"\F3AF"}.fa-hackerrank:before{content:"\F5F7"}.fa-hamburger:before{content:"\F805"}.fa-hammer:before{content:"\F6E3"}.fa-hamsa:before{content:"\F665"}.fa-hand-holding:before{content:"\F4BD"}.fa-hand-holding-heart:before{content:"\F4BE"}.fa-hand-holding-usd:before{content:"\F4C0"}.fa-hand-lizard:before{content:"\F258"}.fa-hand-middle-finger:before{content:"\F806"}.fa-hand-paper:before{content:"\F256"}.fa-hand-peace:before{content:"\F25B"}.fa-hand-point-down:before{content:"\F0A7"}.fa-hand-point-left:before{content:"\F0A5"}.fa-hand-point-right:before{content:"\F0A4"}.fa-hand-point-up:before{content:"\F0A6"}.fa-hand-pointer:before{content:"\F25A"}.fa-hand-rock:before{content:"\F255"}.fa-hand-scissors:before{content:"\F257"}.fa-hand-spock:before{content:"\F259"}.fa-hands:before{content:"\F4C2"}.fa-hands-helping:before{content:"\F4C4"}.fa-handshake:before{content:"\F2B5"}.fa-hanukiah:before{content:"\F6E6"}.fa-hard-hat:before{content:"\F807"}.fa-hashtag:before{content:"\F292"}.fa-hat-cowboy:before{content:"\F8C0"}.fa-hat-cowboy-side:before{content:"\F8C1"}.fa-hat-wizard:before{content:"\F6E8"}.fa-hdd:before{content:"\F0A0"}.fa-heading:before{content:"\F1DC"}.fa-headphones:before{content:"\F025"}.fa-headphones-alt:before{content:"\F58F"}.fa-headset:before{content:"\F590"}.fa-heart:before{content:"\F004"}.fa-heart-broken:before{content:"\F7A9"}.fa-heartbeat:before{content:"\F21E"}.fa-helicopter:before{content:"\F533"}.fa-highlighter:before{content:"\F591"}.fa-hiking:before{content:"\F6EC"}.fa-hippo:before{content:"\F6ED"}.fa-hips:before{content:"\F452"}.fa-hire-a-helper:before{content:"\F3B0"}.fa-history:before{content:"\F1DA"}.fa-hockey-puck:before{content:"\F453"}.fa-holly-berry:before{content:"\F7AA"}.fa-home:before{content:"\F015"}.fa-hooli:before{content:"\F427"}.fa-hornbill:before{content:"\F592"}.fa-horse:before{content:"\F6F0"}.fa-horse-head:before{content:"\F7AB"}.fa-hospital:before{content:"\F0F8"}.fa-hospital-alt:before{content:"\F47D"}.fa-hospital-symbol:before{content:"\F47E"}.fa-hot-tub:before{content:"\F593"}.fa-hotdog:before{content:"\F80F"}.fa-hotel:before{content:"\F594"}.fa-hotjar:before{content:"\F3B1"}.fa-hourglass:before{content:"\F254"}.fa-hourglass-end:before{content:"\F253"}.fa-hourglass-half:before{content:"\F252"}.fa-hourglass-start:before{content:"\F251"}.fa-house-damage:before{content:"\F6F1"}.fa-houzz:before{content:"\F27C"}.fa-hryvnia:before{content:"\F6F2"}.fa-html5:before{content:"\F13B"}.fa-hubspot:before{content:"\F3B2"}.fa-i-cursor:before{content:"\F246"}.fa-ice-cream:before{content:"\F810"}.fa-icicles:before{content:"\F7AD"}.fa-icons:before{content:"\F86D"}.fa-id-badge:before{content:"\F2C1"}.fa-id-card:before{content:"\F2C2"}.fa-id-card-alt:before{content:"\F47F"}.fa-ideal:before{content:"\F913"}.fa-igloo:before{content:"\F7AE"}.fa-image:before{content:"\F03E"}.fa-images:before{content:"\F302"}.fa-imdb:before{content:"\F2D8"}.fa-inbox:before{content:"\F01C"}.fa-indent:before{content:"\F03C"}.fa-industry:before{content:"\F275"}.fa-infinity:before{content:"\F534"}.fa-info:before{content:"\F129"}.fa-info-circle:before{content:"\F05A"}.fa-instagram:before{content:"\F16D"}.fa-instagram-square:before{content:"\F955"}.fa-intercom:before{content:"\F7AF"}.fa-internet-explorer:before{content:"\F26B"}.fa-invision:before{content:"\F7B0"}.fa-ioxhost:before{content:"\F208"}.fa-italic:before{content:"\F033"}.fa-itch-io:before{content:"\F83A"}.fa-itunes:before{content:"\F3B4"}.fa-itunes-note:before{content:"\F3B5"}.fa-java:before{content:"\F4E4"}.fa-jedi:before{content:"\F669"}.fa-jedi-order:before{content:"\F50E"}.fa-jenkins:before{content:"\F3B6"}.fa-jira:before{content:"\F7B1"}.fa-joget:before{content:"\F3B7"}.fa-joint:before{content:"\F595"}.fa-joomla:before{content:"\F1AA"}.fa-journal-whills:before{content:"\F66A"}.fa-js:before{content:"\F3B8"}.fa-js-square:before{content:"\F3B9"}.fa-jsfiddle:before{content:"\F1CC"}.fa-kaaba:before{content:"\F66B"}.fa-kaggle:before{content:"\F5FA"}.fa-key:before{content:"\F084"}.fa-keybase:before{content:"\F4F5"}.fa-keyboard:before{content:"\F11C"}.fa-keycdn:before{content:"\F3BA"}.fa-khanda:before{content:"\F66D"}.fa-kickstarter:before{content:"\F3BB"}.fa-kickstarter-k:before{content:"\F3BC"}.fa-kiss:before{content:"\F596"}.fa-kiss-beam:before{content:"\F597"}.fa-kiss-wink-heart:before{content:"\F598"}.fa-kiwi-bird:before{content:"\F535"}.fa-korvue:before{content:"\F42F"}.fa-landmark:before{content:"\F66F"}.fa-language:before{content:"\F1AB"}.fa-laptop:before{content:"\F109"}.fa-laptop-code:before{content:"\F5FC"}.fa-laptop-medical:before{content:"\F812"}.fa-laravel:before{content:"\F3BD"}.fa-lastfm:before{content:"\F202"}.fa-lastfm-square:before{content:"\F203"}.fa-laugh:before{content:"\F599"}.fa-laugh-beam:before{content:"\F59A"}.fa-laugh-squint:before{content:"\F59B"}.fa-laugh-wink:before{content:"\F59C"}.fa-layer-group:before{content:"\F5FD"}.fa-leaf:before{content:"\F06C"}.fa-leanpub:before{content:"\F212"}.fa-lemon:before{content:"\F094"}.fa-less:before{content:"\F41D"}.fa-less-than:before{content:"\F536"}.fa-less-than-equal:before{content:"\F537"}.fa-level-down-alt:before{content:"\F3BE"}.fa-level-up-alt:before{content:"\F3BF"}.fa-life-ring:before{content:"\F1CD"}.fa-lightbulb:before{content:"\F0EB"}.fa-line:before{content:"\F3C0"}.fa-link:before{content:"\F0C1"}.fa-linkedin:before{content:"\F08C"}.fa-linkedin-in:before{content:"\F0E1"}.fa-linode:before{content:"\F2B8"}.fa-linux:before{content:"\F17C"}.fa-lira-sign:before{content:"\F195"}.fa-list:before{content:"\F03A"}.fa-list-alt:before{content:"\F022"}.fa-list-ol:before{content:"\F0CB"}.fa-list-ul:before{content:"\F0CA"}.fa-location-arrow:before{content:"\F124"}.fa-lock:before{content:"\F023"}.fa-lock-open:before{content:"\F3C1"}.fa-long-arrow-alt-down:before{content:"\F309"}.fa-long-arrow-alt-left:before{content:"\F30A"}.fa-long-arrow-alt-right:before{content:"\F30B"}.fa-long-arrow-alt-up:before{content:"\F30C"}.fa-low-vision:before{content:"\F2A8"}.fa-luggage-cart:before{content:"\F59D"}.fa-lyft:before{content:"\F3C3"}.fa-magento:before{content:"\F3C4"}.fa-magic:before{content:"\F0D0"}.fa-magnet:before{content:"\F076"}.fa-mail-bulk:before{content:"\F674"}.fa-mailchimp:before{content:"\F59E"}.fa-male:before{content:"\F183"}.fa-mandalorian:before{content:"\F50F"}.fa-map:before{content:"\F279"}.fa-map-marked:before{content:"\F59F"}.fa-map-marked-alt:before{content:"\F5A0"}.fa-map-marker:before{content:"\F041"}.fa-map-marker-alt:before{content:"\F3C5"}.fa-map-pin:before{content:"\F276"}.fa-map-signs:before{content:"\F277"}.fa-markdown:before{content:"\F60F"}.fa-marker:before{content:"\F5A1"}.fa-mars:before{content:"\F222"}.fa-mars-double:before{content:"\F227"}.fa-mars-stroke:before{content:"\F229"}.fa-mars-stroke-h:before{content:"\F22B"}.fa-mars-stroke-v:before{content:"\F22A"}.fa-mask:before{content:"\F6FA"}.fa-mastodon:before{content:"\F4F6"}.fa-maxcdn:before{content:"\F136"}.fa-mdb:before{content:"\F8CA"}.fa-medal:before{content:"\F5A2"}.fa-medapps:before{content:"\F3C6"}.fa-medium:before{content:"\F23A"}.fa-medium-m:before{content:"\F3C7"}.fa-medkit:before{content:"\F0FA"}.fa-medrt:before{content:"\F3C8"}.fa-meetup:before{content:"\F2E0"}.fa-megaport:before{content:"\F5A3"}.fa-meh:before{content:"\F11A"}.fa-meh-blank:before{content:"\F5A4"}.fa-meh-rolling-eyes:before{content:"\F5A5"}.fa-memory:before{content:"\F538"}.fa-mendeley:before{content:"\F7B3"}.fa-menorah:before{content:"\F676"}.fa-mercury:before{content:"\F223"}.fa-meteor:before{content:"\F753"}.fa-microblog:before{content:"\F91A"}.fa-microchip:before{content:"\F2DB"}.fa-microphone:before{content:"\F130"}.fa-microphone-alt:before{content:"\F3C9"}.fa-microphone-alt-slash:before{content:"\F539"}.fa-microphone-slash:before{content:"\F131"}.fa-microscope:before{content:"\F610"}.fa-microsoft:before{content:"\F3CA"}.fa-minus:before{content:"\F068"}.fa-minus-circle:before{content:"\F056"}.fa-minus-square:before{content:"\F146"}.fa-mitten:before{content:"\F7B5"}.fa-mix:before{content:"\F3CB"}.fa-mixcloud:before{content:"\F289"}.fa-mixer:before{content:"\F956"}.fa-mizuni:before{content:"\F3CC"}.fa-mobile:before{content:"\F10B"}.fa-mobile-alt:before{content:"\F3CD"}.fa-modx:before{content:"\F285"}.fa-monero:before{content:"\F3D0"}.fa-money-bill:before{content:"\F0D6"}.fa-money-bill-alt:before{content:"\F3D1"}.fa-money-bill-wave:before{content:"\F53A"}.fa-money-bill-wave-alt:before{content:"\F53B"}.fa-money-check:before{content:"\F53C"}.fa-money-check-alt:before{content:"\F53D"}.fa-monument:before{content:"\F5A6"}.fa-moon:before{content:"\F186"}.fa-mortar-pestle:before{content:"\F5A7"}.fa-mosque:before{content:"\F678"}.fa-motorcycle:before{content:"\F21C"}.fa-mountain:before{content:"\F6FC"}.fa-mouse:before{content:"\F8CC"}.fa-mouse-pointer:before{content:"\F245"}.fa-mug-hot:before{content:"\F7B6"}.fa-music:before{content:"\F001"}.fa-napster:before{content:"\F3D2"}.fa-neos:before{content:"\F612"}.fa-network-wired:before{content:"\F6FF"}.fa-neuter:before{content:"\F22C"}.fa-newspaper:before{content:"\F1EA"}.fa-nimblr:before{content:"\F5A8"}.fa-node:before{content:"\F419"}.fa-node-js:before{content:"\F3D3"}.fa-not-equal:before{content:"\F53E"}.fa-notes-medical:before{content:"\F481"}.fa-npm:before{content:"\F3D4"}.fa-ns8:before{content:"\F3D5"}.fa-nutritionix:before{content:"\F3D6"}.fa-object-group:before{content:"\F247"}.fa-object-ungroup:before{content:"\F248"}.fa-odnoklassniki:before{content:"\F263"}.fa-odnoklassniki-square:before{content:"\F264"}.fa-oil-can:before{content:"\F613"}.fa-old-republic:before{content:"\F510"}.fa-om:before{content:"\F679"}.fa-opencart:before{content:"\F23D"}.fa-openid:before{content:"\F19B"}.fa-opera:before{content:"\F26A"}.fa-optin-monster:before{content:"\F23C"}.fa-orcid:before{content:"\F8D2"}.fa-osi:before{content:"\F41A"}.fa-otter:before{content:"\F700"}.fa-outdent:before{content:"\F03B"}.fa-page4:before{content:"\F3D7"}.fa-pagelines:before{content:"\F18C"}.fa-pager:before{content:"\F815"}.fa-paint-brush:before{content:"\F1FC"}.fa-paint-roller:before{content:"\F5AA"}.fa-palette:before{content:"\F53F"}.fa-palfed:before{content:"\F3D8"}.fa-pallet:before{content:"\F482"}.fa-paper-plane:before{content:"\F1D8"}.fa-paperclip:before{content:"\F0C6"}.fa-parachute-box:before{content:"\F4CD"}.fa-paragraph:before{content:"\F1DD"}.fa-parking:before{content:"\F540"}.fa-passport:before{content:"\F5AB"}.fa-pastafarianism:before{content:"\F67B"}.fa-paste:before{content:"\F0EA"}.fa-patreon:before{content:"\F3D9"}.fa-pause:before{content:"\F04C"}.fa-pause-circle:before{content:"\F28B"}.fa-paw:before{content:"\F1B0"}.fa-paypal:before{content:"\F1ED"}.fa-peace:before{content:"\F67C"}.fa-pen:before{content:"\F304"}.fa-pen-alt:before{content:"\F305"}.fa-pen-fancy:before{content:"\F5AC"}.fa-pen-nib:before{content:"\F5AD"}.fa-pen-square:before{content:"\F14B"}.fa-pencil-alt:before{content:"\F303"}.fa-pencil-ruler:before{content:"\F5AE"}.fa-penny-arcade:before{content:"\F704"}.fa-people-carry:before{content:"\F4CE"}.fa-pepper-hot:before{content:"\F816"}.fa-percent:before{content:"\F295"}.fa-percentage:before{content:"\F541"}.fa-periscope:before{content:"\F3DA"}.fa-person-booth:before{content:"\F756"}.fa-phabricator:before{content:"\F3DB"}.fa-phoenix-framework:before{content:"\F3DC"}.fa-phoenix-squadron:before{content:"\F511"}.fa-phone:before{content:"\F095"}.fa-phone-alt:before{content:"\F879"}.fa-phone-slash:before{content:"\F3DD"}.fa-phone-square:before{content:"\F098"}.fa-phone-square-alt:before{content:"\F87B"}.fa-phone-volume:before{content:"\F2A0"}.fa-photo-video:before{content:"\F87C"}.fa-php:before{content:"\F457"}.fa-pied-piper:before{content:"\F2AE"}.fa-pied-piper-alt:before{content:"\F1A8"}.fa-pied-piper-hat:before{content:"\F4E5"}.fa-pied-piper-pp:before{content:"\F1A7"}.fa-pied-piper-square:before{content:"\F91E"}.fa-piggy-bank:before{content:"\F4D3"}.fa-pills:before{content:"\F484"}.fa-pinterest:before{content:"\F0D2"}.fa-pinterest-p:before{content:"\F231"}.fa-pinterest-square:before{content:"\F0D3"}.fa-pizza-slice:before{content:"\F818"}.fa-place-of-worship:before{content:"\F67F"}.fa-plane:before{content:"\F072"}.fa-plane-arrival:before{content:"\F5AF"}.fa-plane-departure:before{content:"\F5B0"}.fa-play:before{content:"\F04B"}.fa-play-circle:before{content:"\F144"}.fa-playstation:before{content:"\F3DF"}.fa-plug:before{content:"\F1E6"}.fa-plus:before{content:"\F067"}.fa-plus-circle:before{content:"\F055"}.fa-plus-square:before{content:"\F0FE"}.fa-podcast:before{content:"\F2CE"}.fa-poll:before{content:"\F681"}.fa-poll-h:before{content:"\F682"}.fa-poo:before{content:"\F2FE"}.fa-poo-storm:before{content:"\F75A"}.fa-poop:before{content:"\F619"}.fa-portrait:before{content:"\F3E0"}.fa-pound-sign:before{content:"\F154"}.fa-power-off:before{content:"\F011"}.fa-pray:before{content:"\F683"}.fa-praying-hands:before{content:"\F684"}.fa-prescription:before{content:"\F5B1"}.fa-prescription-bottle:before{content:"\F485"}.fa-prescription-bottle-alt:before{content:"\F486"}.fa-print:before{content:"\F02F"}.fa-procedures:before{content:"\F487"}.fa-product-hunt:before{content:"\F288"}.fa-project-diagram:before{content:"\F542"}.fa-pushed:before{content:"\F3E1"}.fa-puzzle-piece:before{content:"\F12E"}.fa-python:before{content:"\F3E2"}.fa-qq:before{content:"\F1D6"}.fa-qrcode:before{content:"\F029"}.fa-question:before{content:"\F128"}.fa-question-circle:before{content:"\F059"}.fa-quidditch:before{content:"\F458"}.fa-quinscape:before{content:"\F459"}.fa-quora:before{content:"\F2C4"}.fa-quote-left:before{content:"\F10D"}.fa-quote-right:before{content:"\F10E"}.fa-quran:before{content:"\F687"}.fa-r-project:before{content:"\F4F7"}.fa-radiation:before{content:"\F7B9"}.fa-radiation-alt:before{content:"\F7BA"}.fa-rainbow:before{content:"\F75B"}.fa-random:before{content:"\F074"}.fa-raspberry-pi:before{content:"\F7BB"}.fa-ravelry:before{content:"\F2D9"}.fa-react:before{content:"\F41B"}.fa-reacteurope:before{content:"\F75D"}.fa-readme:before{content:"\F4D5"}.fa-rebel:before{content:"\F1D0"}.fa-receipt:before{content:"\F543"}.fa-record-vinyl:before{content:"\F8D9"}.fa-recycle:before{content:"\F1B8"}.fa-red-river:before{content:"\F3E3"}.fa-reddit:before{content:"\F1A1"}.fa-reddit-alien:before{content:"\F281"}.fa-reddit-square:before{content:"\F1A2"}.fa-redhat:before{content:"\F7BC"}.fa-redo:before{content:"\F01E"}.fa-redo-alt:before{content:"\F2F9"}.fa-registered:before{content:"\F25D"}.fa-remove-format:before{content:"\F87D"}.fa-renren:before{content:"\F18B"}.fa-reply:before{content:"\F3E5"}.fa-reply-all:before{content:"\F122"}.fa-replyd:before{content:"\F3E6"}.fa-republican:before{content:"\F75E"}.fa-researchgate:before{content:"\F4F8"}.fa-resolving:before{content:"\F3E7"}.fa-restroom:before{content:"\F7BD"}.fa-retweet:before{content:"\F079"}.fa-rev:before{content:"\F5B2"}.fa-ribbon:before{content:"\F4D6"}.fa-ring:before{content:"\F70B"}.fa-road:before{content:"\F018"}.fa-robot:before{content:"\F544"}.fa-rocket:before{content:"\F135"}.fa-rocketchat:before{content:"\F3E8"}.fa-rockrms:before{content:"\F3E9"}.fa-route:before{content:"\F4D7"}.fa-rss:before{content:"\F09E"}.fa-rss-square:before{content:"\F143"}.fa-ruble-sign:before{content:"\F158"}.fa-ruler:before{content:"\F545"}.fa-ruler-combined:before{content:"\F546"}.fa-ruler-horizontal:before{content:"\F547"}.fa-ruler-vertical:before{content:"\F548"}.fa-running:before{content:"\F70C"}.fa-rupee-sign:before{content:"\F156"}.fa-sad-cry:before{content:"\F5B3"}.fa-sad-tear:before{content:"\F5B4"}.fa-safari:before{content:"\F267"}.fa-salesforce:before{content:"\F83B"}.fa-sass:before{content:"\F41E"}.fa-satellite:before{content:"\F7BF"}.fa-satellite-dish:before{content:"\F7C0"}.fa-save:before{content:"\F0C7"}.fa-schlix:before{content:"\F3EA"}.fa-school:before{content:"\F549"}.fa-screwdriver:before{content:"\F54A"}.fa-scribd:before{content:"\F28A"}.fa-scroll:before{content:"\F70E"}.fa-sd-card:before{content:"\F7C2"}.fa-search:before{content:"\F002"}.fa-search-dollar:before{content:"\F688"}.fa-search-location:before{content:"\F689"}.fa-search-minus:before{content:"\F010"}.fa-search-plus:before{content:"\F00E"}.fa-searchengin:before{content:"\F3EB"}.fa-seedling:before{content:"\F4D8"}.fa-sellcast:before{content:"\F2DA"}.fa-sellsy:before{content:"\F213"}.fa-server:before{content:"\F233"}.fa-servicestack:before{content:"\F3EC"}.fa-shapes:before{content:"\F61F"}.fa-share:before{content:"\F064"}.fa-share-alt:before{content:"\F1E0"}.fa-share-alt-square:before{content:"\F1E1"}.fa-share-square:before{content:"\F14D"}.fa-shekel-sign:before{content:"\F20B"}.fa-shield-alt:before{content:"\F3ED"}.fa-ship:before{content:"\F21A"}.fa-shipping-fast:before{content:"\F48B"}.fa-shirtsinbulk:before{content:"\F214"}.fa-shoe-prints:before{content:"\F54B"}.fa-shopify:before{content:"\F957"}.fa-shopping-bag:before{content:"\F290"}.fa-shopping-basket:before{content:"\F291"}.fa-shopping-cart:before{content:"\F07A"}.fa-shopware:before{content:"\F5B5"}.fa-shower:before{content:"\F2CC"}.fa-shuttle-van:before{content:"\F5B6"}.fa-sign:before{content:"\F4D9"}.fa-sign-in-alt:before{content:"\F2F6"}.fa-sign-language:before{content:"\F2A7"}.fa-sign-out-alt:before{content:"\F2F5"}.fa-signal:before{content:"\F012"}.fa-signature:before{content:"\F5B7"}.fa-sim-card:before{content:"\F7C4"}.fa-simplybuilt:before{content:"\F215"}.fa-sistrix:before{content:"\F3EE"}.fa-sitemap:before{content:"\F0E8"}.fa-sith:before{content:"\F512"}.fa-skating:before{content:"\F7C5"}.fa-sketch:before{content:"\F7C6"}.fa-skiing:before{content:"\F7C9"}.fa-skiing-nordic:before{content:"\F7CA"}.fa-skull:before{content:"\F54C"}.fa-skull-crossbones:before{content:"\F714"}.fa-skyatlas:before{content:"\F216"}.fa-skype:before{content:"\F17E"}.fa-slack:before{content:"\F198"}.fa-slack-hash:before{content:"\F3EF"}.fa-slash:before{content:"\F715"}.fa-sleigh:before{content:"\F7CC"}.fa-sliders-h:before{content:"\F1DE"}.fa-slideshare:before{content:"\F1E7"}.fa-smile:before{content:"\F118"}.fa-smile-beam:before{content:"\F5B8"}.fa-smile-wink:before{content:"\F4DA"}.fa-smog:before{content:"\F75F"}.fa-smoking:before{content:"\F48D"}.fa-smoking-ban:before{content:"\F54D"}.fa-sms:before{content:"\F7CD"}.fa-snapchat:before{content:"\F2AB"}.fa-snapchat-ghost:before{content:"\F2AC"}.fa-snapchat-square:before{content:"\F2AD"}.fa-snowboarding:before{content:"\F7CE"}.fa-snowflake:before{content:"\F2DC"}.fa-snowman:before{content:"\F7D0"}.fa-snowplow:before{content:"\F7D2"}.fa-socks:before{content:"\F696"}.fa-solar-panel:before{content:"\F5BA"}.fa-sort:before{content:"\F0DC"}.fa-sort-alpha-down:before{content:"\F15D"}.fa-sort-alpha-down-alt:before{content:"\F881"}.fa-sort-alpha-up:before{content:"\F15E"}.fa-sort-alpha-up-alt:before{content:"\F882"}.fa-sort-amount-down:before{content:"\F160"}.fa-sort-amount-down-alt:before{content:"\F884"}.fa-sort-amount-up:before{content:"\F161"}.fa-sort-amount-up-alt:before{content:"\F885"}.fa-sort-down:before{content:"\F0DD"}.fa-sort-numeric-down:before{content:"\F162"}.fa-sort-numeric-down-alt:before{content:"\F886"}.fa-sort-numeric-up:before{content:"\F163"}.fa-sort-numeric-up-alt:before{content:"\F887"}.fa-sort-up:before{content:"\F0DE"}.fa-soundcloud:before{content:"\F1BE"}.fa-sourcetree:before{content:"\F7D3"}.fa-spa:before{content:"\F5BB"}.fa-space-shuttle:before{content:"\F197"}.fa-speakap:before{content:"\F3F3"}.fa-speaker-deck:before{content:"\F83C"}.fa-spell-check:before{content:"\F891"}.fa-spider:before{content:"\F717"}.fa-spinner:before{content:"\F110"}.fa-splotch:before{content:"\F5BC"}.fa-spotify:before{content:"\F1BC"}.fa-spray-can:before{content:"\F5BD"}.fa-square:before{content:"\F0C8"}.fa-square-full:before{content:"\F45C"}.fa-square-root-alt:before{content:"\F698"}.fa-squarespace:before{content:"\F5BE"}.fa-stack-exchange:before{content:"\F18D"}.fa-stack-overflow:before{content:"\F16C"}.fa-stackpath:before{content:"\F842"}.fa-stamp:before{content:"\F5BF"}.fa-star:before{content:"\F005"}.fa-star-and-crescent:before{content:"\F699"}.fa-star-half:before{content:"\F089"}.fa-star-half-alt:before{content:"\F5C0"}.fa-star-of-david:before{content:"\F69A"}.fa-star-of-life:before{content:"\F621"}.fa-staylinked:before{content:"\F3F5"}.fa-steam:before{content:"\F1B6"}.fa-steam-square:before{content:"\F1B7"}.fa-steam-symbol:before{content:"\F3F6"}.fa-step-backward:before{content:"\F048"}.fa-step-forward:before{content:"\F051"}.fa-stethoscope:before{content:"\F0F1"}.fa-sticker-mule:before{content:"\F3F7"}.fa-sticky-note:before{content:"\F249"}.fa-stop:before{content:"\F04D"}.fa-stop-circle:before{content:"\F28D"}.fa-stopwatch:before{content:"\F2F2"}.fa-store:before{content:"\F54E"}.fa-store-alt:before{content:"\F54F"}.fa-strava:before{content:"\F428"}.fa-stream:before{content:"\F550"}.fa-street-view:before{content:"\F21D"}.fa-strikethrough:before{content:"\F0CC"}.fa-stripe:before{content:"\F429"}.fa-stripe-s:before{content:"\F42A"}.fa-stroopwafel:before{content:"\F551"}.fa-studiovinari:before{content:"\F3F8"}.fa-stumbleupon:before{content:"\F1A4"}.fa-stumbleupon-circle:before{content:"\F1A3"}.fa-subscript:before{content:"\F12C"}.fa-subway:before{content:"\F239"}.fa-suitcase:before{content:"\F0F2"}.fa-suitcase-rolling:before{content:"\F5C1"}.fa-sun:before{content:"\F185"}.fa-superpowers:before{content:"\F2DD"}.fa-superscript:before{content:"\F12B"}.fa-supple:before{content:"\F3F9"}.fa-surprise:before{content:"\F5C2"}.fa-suse:before{content:"\F7D6"}.fa-swatchbook:before{content:"\F5C3"}.fa-swift:before{content:"\F8E1"}.fa-swimmer:before{content:"\F5C4"}.fa-swimming-pool:before{content:"\F5C5"}.fa-symfony:before{content:"\F83D"}.fa-synagogue:before{content:"\F69B"}.fa-sync:before{content:"\F021"}.fa-sync-alt:before{content:"\F2F1"}.fa-syringe:before{content:"\F48E"}.fa-table:before{content:"\F0CE"}.fa-table-tennis:before{content:"\F45D"}.fa-tablet:before{content:"\F10A"}.fa-tablet-alt:before{content:"\F3FA"}.fa-tablets:before{content:"\F490"}.fa-tachometer-alt:before{content:"\F3FD"}.fa-tag:before{content:"\F02B"}.fa-tags:before{content:"\F02C"}.fa-tape:before{content:"\F4DB"}.fa-tasks:before{content:"\F0AE"}.fa-taxi:before{content:"\F1BA"}.fa-teamspeak:before{content:"\F4F9"}.fa-teeth:before{content:"\F62E"}.fa-teeth-open:before{content:"\F62F"}.fa-telegram:before{content:"\F2C6"}.fa-telegram-plane:before{content:"\F3FE"}.fa-temperature-high:before{content:"\F769"}.fa-temperature-low:before{content:"\F76B"}.fa-tencent-weibo:before{content:"\F1D5"}.fa-tenge:before{content:"\F7D7"}.fa-terminal:before{content:"\F120"}.fa-text-height:before{content:"\F034"}.fa-text-width:before{content:"\F035"}.fa-th:before{content:"\F00A"}.fa-th-large:before{content:"\F009"}.fa-th-list:before{content:"\F00B"}.fa-the-red-yeti:before{content:"\F69D"}.fa-theater-masks:before{content:"\F630"}.fa-themeco:before{content:"\F5C6"}.fa-themeisle:before{content:"\F2B2"}.fa-thermometer:before{content:"\F491"}.fa-thermometer-empty:before{content:"\F2CB"}.fa-thermometer-full:before{content:"\F2C7"}.fa-thermometer-half:before{content:"\F2C9"}.fa-thermometer-quarter:before{content:"\F2CA"}.fa-thermometer-three-quarters:before{content:"\F2C8"}.fa-think-peaks:before{content:"\F731"}.fa-thumbs-down:before{content:"\F165"}.fa-thumbs-up:before{content:"\F164"}.fa-thumbtack:before{content:"\F08D"}.fa-ticket-alt:before{content:"\F3FF"}.fa-times:before{content:"\F00D"}.fa-times-circle:before{content:"\F057"}.fa-tint:before{content:"\F043"}.fa-tint-slash:before{content:"\F5C7"}.fa-tired:before{content:"\F5C8"}.fa-toggle-off:before{content:"\F204"}.fa-toggle-on:before{content:"\F205"}.fa-toilet:before{content:"\F7D8"}.fa-toilet-paper:before{content:"\F71E"}.fa-toolbox:before{content:"\F552"}.fa-tools:before{content:"\F7D9"}.fa-tooth:before{content:"\F5C9"}.fa-torah:before{content:"\F6A0"}.fa-torii-gate:before{content:"\F6A1"}.fa-tractor:before{content:"\F722"}.fa-trade-federation:before{content:"\F513"}.fa-trademark:before{content:"\F25C"}.fa-traffic-light:before{content:"\F637"}.fa-trailer:before{content:"\F941"}.fa-train:before{content:"\F238"}.fa-tram:before{content:"\F7DA"}.fa-transgender:before{content:"\F224"}.fa-transgender-alt:before{content:"\F225"}.fa-trash:before{content:"\F1F8"}.fa-trash-alt:before{content:"\F2ED"}.fa-trash-restore:before{content:"\F829"}.fa-trash-restore-alt:before{content:"\F82A"}.fa-tree:before{content:"\F1BB"}.fa-trello:before{content:"\F181"}.fa-tripadvisor:before{content:"\F262"}.fa-trophy:before{content:"\F091"}.fa-truck:before{content:"\F0D1"}.fa-truck-loading:before{content:"\F4DE"}.fa-truck-monster:before{content:"\F63B"}.fa-truck-moving:before{content:"\F4DF"}.fa-truck-pickup:before{content:"\F63C"}.fa-tshirt:before{content:"\F553"}.fa-tty:before{content:"\F1E4"}.fa-tumblr:before{content:"\F173"}.fa-tumblr-square:before{content:"\F174"}.fa-tv:before{content:"\F26C"}.fa-twitch:before{content:"\F1E8"}.fa-twitter:before{content:"\F099"}.fa-twitter-square:before{content:"\F081"}.fa-typo3:before{content:"\F42B"}.fa-uber:before{content:"\F402"}.fa-ubuntu:before{content:"\F7DF"}.fa-uikit:before{content:"\F403"}.fa-umbraco:before{content:"\F8E8"}.fa-umbrella:before{content:"\F0E9"}.fa-umbrella-beach:before{content:"\F5CA"}.fa-underline:before{content:"\F0CD"}.fa-undo:before{content:"\F0E2"}.fa-undo-alt:before{content:"\F2EA"}.fa-uniregistry:before{content:"\F404"}.fa-unity:before{content:"\F949"}.fa-universal-access:before{content:"\F29A"}.fa-university:before{content:"\F19C"}.fa-unlink:before{content:"\F127"}.fa-unlock:before{content:"\F09C"}.fa-unlock-alt:before{content:"\F13E"}.fa-untappd:before{content:"\F405"}.fa-upload:before{content:"\F093"}.fa-ups:before{content:"\F7E0"}.fa-usb:before{content:"\F287"}.fa-user:before{content:"\F007"}.fa-user-alt:before{content:"\F406"}.fa-user-alt-slash:before{content:"\F4FA"}.fa-user-astronaut:before{content:"\F4FB"}.fa-user-check:before{content:"\F4FC"}.fa-user-circle:before{content:"\F2BD"}.fa-user-clock:before{content:"\F4FD"}.fa-user-cog:before{content:"\F4FE"}.fa-user-edit:before{content:"\F4FF"}.fa-user-friends:before{content:"\F500"}.fa-user-graduate:before{content:"\F501"}.fa-user-injured:before{content:"\F728"}.fa-user-lock:before{content:"\F502"}.fa-user-md:before{content:"\F0F0"}.fa-user-minus:before{content:"\F503"}.fa-user-ninja:before{content:"\F504"}.fa-user-nurse:before{content:"\F82F"}.fa-user-plus:before{content:"\F234"}.fa-user-secret:before{content:"\F21B"}.fa-user-shield:before{content:"\F505"}.fa-user-slash:before{content:"\F506"}.fa-user-tag:before{content:"\F507"}.fa-user-tie:before{content:"\F508"}.fa-user-times:before{content:"\F235"}.fa-users:before{content:"\F0C0"}.fa-users-cog:before{content:"\F509"}.fa-usps:before{content:"\F7E1"}.fa-ussunnah:before{content:"\F407"}.fa-utensil-spoon:before{content:"\F2E5"}.fa-utensils:before{content:"\F2E7"}.fa-vaadin:before{content:"\F408"}.fa-vector-square:before{content:"\F5CB"}.fa-venus:before{content:"\F221"}.fa-venus-double:before{content:"\F226"}.fa-venus-mars:before{content:"\F228"}.fa-viacoin:before{content:"\F237"}.fa-viadeo:before{content:"\F2A9"}.fa-viadeo-square:before{content:"\F2AA"}.fa-vial:before{content:"\F492"}.fa-vials:before{content:"\F493"}.fa-viber:before{content:"\F409"}.fa-video:before{content:"\F03D"}.fa-video-slash:before{content:"\F4E2"}.fa-vihara:before{content:"\F6A7"}.fa-vimeo:before{content:"\F40A"}.fa-vimeo-square:before{content:"\F194"}.fa-vimeo-v:before{content:"\F27D"}.fa-vine:before{content:"\F1CA"}.fa-vk:before{content:"\F189"}.fa-vnv:before{content:"\F40B"}.fa-voicemail:before{content:"\F897"}.fa-volleyball-ball:before{content:"\F45F"}.fa-volume-down:before{content:"\F027"}.fa-volume-mute:before{content:"\F6A9"}.fa-volume-off:before{content:"\F026"}.fa-volume-up:before{content:"\F028"}.fa-vote-yea:before{content:"\F772"}.fa-vr-cardboard:before{content:"\F729"}.fa-vuejs:before{content:"\F41F"}.fa-walking:before{content:"\F554"}.fa-wallet:before{content:"\F555"}.fa-warehouse:before{content:"\F494"}.fa-water:before{content:"\F773"}.fa-wave-square:before{content:"\F83E"}.fa-waze:before{content:"\F83F"}.fa-weebly:before{content:"\F5CC"}.fa-weibo:before{content:"\F18A"}.fa-weight:before{content:"\F496"}.fa-weight-hanging:before{content:"\F5CD"}.fa-weixin:before{content:"\F1D7"}.fa-whatsapp:before{content:"\F232"}.fa-whatsapp-square:before{content:"\F40C"}.fa-wheelchair:before{content:"\F193"}.fa-whmcs:before{content:"\F40D"}.fa-wifi:before{content:"\F1EB"}.fa-wikipedia-w:before{content:"\F266"}.fa-wind:before{content:"\F72E"}.fa-window-close:before{content:"\F410"}.fa-window-maximize:before{content:"\F2D0"}.fa-window-minimize:before{content:"\F2D1"}.fa-window-restore:before{content:"\F2D2"}.fa-windows:before{content:"\F17A"}.fa-wine-bottle:before{content:"\F72F"}.fa-wine-glass:before{content:"\F4E3"}.fa-wine-glass-alt:before{content:"\F5CE"}.fa-wix:before{content:"\F5CF"}.fa-wizards-of-the-coast:before{content:"\F730"}.fa-wolf-pack-battalion:before{content:"\F514"}.fa-won-sign:before{content:"\F159"}.fa-wordpress:before{content:"\F19A"}.fa-wordpress-simple:before{content:"\F411"}.fa-wpbeginner:before{content:"\F297"}.fa-wpexplorer:before{content:"\F2DE"}.fa-wpforms:before{content:"\F298"}.fa-wpressr:before{content:"\F3E4"}.fa-wrench:before{content:"\F0AD"}.fa-x-ray:before{content:"\F497"}.fa-xbox:before{content:"\F412"}.fa-xing:before{content:"\F168"}.fa-xing-square:before{content:"\F169"}.fa-y-combinator:before{content:"\F23B"}.fa-yahoo:before{content:"\F19E"}.fa-yammer:before{content:"\F840"}.fa-yandex:before{content:"\F413"}.fa-yandex-international:before{content:"\F414"}.fa-yarn:before{content:"\F7E3"}.fa-yelp:before{content:"\F1E9"}.fa-yen-sign:before{content:"\F157"}.fa-yin-yang:before{content:"\F6AD"}.fa-yoast:before{content:"\F2B1"}.fa-youtube:before{content:"\F167"}.fa-youtube-square:before{content:"\F431"}.fa-zhihu:before{content:"\F63F"}.sr-only{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sr-only-focusable:active,.sr-only-focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}@font-face{font-family:Font Awesome\ 5 Brands;font-style:normal;font-weight:400;font-display:auto;src:url(/openj9/static/fa-brands-400-57dcda6f368ea90179f75cbdae96c263.eot);src:url(/openj9/static/fa-brands-400-57dcda6f368ea90179f75cbdae96c263.eot?#iefix) format("embedded-opentype"),url(/openj9/static/fa-brands-400-067595ad77ecc0db9c81c8905a7eef32.woff2) format("woff2"),url(/openj9/static/fa-brands-400-b564da88bbf0c4aa446fa19653713cd1.woff) format("woff"),url(/openj9/static/fa-brands-400-9ec698d1a597bff5df337094b71ddaaf.ttf) format("truetype"),url(/openj9/static/fa-brands-400-9d67fa1429375bd2a899a17eb77d0342.svg#fontawesome) format("svg")}.fab{font-family:Font Awesome\ 5 Brands}@font-face{font-family:Font Awesome\ 5 Free;font-style:normal;font-weight:400;font-display:auto;src:url(/openj9/static/fa-regular-400-3351f435b3c9037fd88aeb04dc1e43bc.eot);src:url(/openj9/static/fa-regular-400-3351f435b3c9037fd88aeb04dc1e43bc.eot?#iefix) format("embedded-opentype"),url(/openj9/static/fa-regular-400-4165c2688309cbfb1b877caf8f75afb5.woff2) format("woff2"),url(/openj9/static/fa-regular-400-73cf49a2232c06c920b7a34e36bfb58c.woff) format("woff"),url(/openj9/static/fa-regular-400-a0e3ac82940c1998c5977fd4bc1f5ef6.ttf) format("truetype"),url(/openj9/static/fa-regular-400-5d0861781aeef6c82fda3a3076954a1b.svg#fontawesome) format("svg")}.fab,.far{font-weight:400}@font-face{font-family:Font Awesome\ 5 Free;font-style:normal;font-weight:900;font-display:auto;src:url(/openj9/static/fa-solid-900-89e02bae13c9131c7468b1e729339ac1.eot);src:url(/openj9/static/fa-solid-900-89e02bae13c9131c7468b1e729339ac1.eot?#iefix) format("embedded-opentype"),url(/openj9/static/fa-solid-900-55eb2a60e8181f0e68b558c991973bf0.woff2) format("woff2"),url(/openj9/static/fa-solid-900-cdfec5cf5e9840889790bcf2c4042583.woff) format("woff"),url(/openj9/static/fa-solid-900-75f38a159982b6bd1704891332d95fa7.ttf) format("truetype"),url(/openj9/static/fa-solid-900-0724bb8b89ab6b8b9b7df917b17be0b7.svg#fontawesome) format("svg")}.fa,.far,.fas{font-family:Font Awesome\ 5 Free}.fa,.fas{font-weight:900}</style><meta name="generator" content="Gatsby 2.19.7"/><link rel="icon" href="/openj9/favicon-32x32.png?v=0a19b941415d1d6d03226a8c85fc39c9"/><link rel="manifest" href="/openj9/manifest.webmanifest"/><link rel="apple-touch-icon" sizes="48x48" href="/openj9/icons/icon-48x48.png?v=0a19b941415d1d6d03226a8c85fc39c9"/><link rel="apple-touch-icon" sizes="72x72" href="/openj9/icons/icon-72x72.png?v=0a19b941415d1d6d03226a8c85fc39c9"/><link rel="apple-touch-icon" sizes="96x96" href="/openj9/icons/icon-96x96.png?v=0a19b941415d1d6d03226a8c85fc39c9"/><link rel="apple-touch-icon" sizes="144x144" href="/openj9/icons/icon-144x144.png?v=0a19b941415d1d6d03226a8c85fc39c9"/><link rel="apple-touch-icon" sizes="192x192" href="/openj9/icons/icon-192x192.png?v=0a19b941415d1d6d03226a8c85fc39c9"/><link rel="apple-touch-icon" sizes="256x256" href="/openj9/icons/icon-256x256.png?v=0a19b941415d1d6d03226a8c85fc39c9"/><link rel="apple-touch-icon" sizes="384x384" href="/openj9/icons/icon-384x384.png?v=0a19b941415d1d6d03226a8c85fc39c9"/><link rel="apple-touch-icon" sizes="512x512" href="/openj9/icons/icon-512x512.png?v=0a19b941415d1d6d03226a8c85fc39c9"/><link rel="preconnect dns-prefetch" href="https://www.google-analytics.com"/><link as="script" rel="preload" href="/openj9/component---src-pages-news-js-771033deb1dca3596266.js"/><link as="script" rel="preload" href="/openj9/commons-42a47b90457bdd243664.js"/><link as="script" rel="preload" href="/openj9/app-0b96427b0b370a80fa06.js"/><link as="script" rel="preload" href="/openj9/styles-cc4082ebb0cb6903d934.js"/><link as="script" rel="preload" href="/openj9/webpack-runtime-c69760aa7e58303b27f8.js"/><link as="fetch" rel="preload" href="/openj9/page-data/news/page-data.json" crossorigin="anonymous"/></head><body><div id="___gatsby"><div style="outline:none" tabindex="-1" role="group" id="gatsby-focus-wrapper"><style data-emotion-css="t923zi">body{color:text;background-color:var(--theme-ui-colors-background,#FFFFFF);}</style><style data-emotion-css="1gb9wyy">*{box-sizing:border-box;}body{margin:0;font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.5;font-weight:400;}</style><style data-emotion-css="1xgro3h">*{padding:0;margin:0;}</style><style data-emotion-css="1mh4t0h">.css-1mh4t0h{display:none;background-color:var(--theme-ui-colors-primary,#434343);width:100%;color:var(--theme-ui-colors-lightText,#d8d8d8);padding-left:40px;padding-right:40px;padding-top:32px;padding-bottom:32px;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}@media screen and (min-width:560px){.css-1mh4t0h{display:none;}}@media screen and (min-width:1000px){.css-1mh4t0h{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}}@media screen and (min-width:1366px){.css-1mh4t0h{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}}</style><header class="css-1mh4t0h"><style data-emotion-css="4golyb">.css-4golyb{-webkit-flex:1;-ms-flex:1;flex:1;opacity:1;pointer-events:all;}</style><div class="css-4golyb"><a href="/openj9/"><img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNzlweCIgaGVpZ2h0PSIzM3B4IiB2aWV3Qm94PSIwIDAgNzkgMzMiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5Mb2dvPC90aXRsZT4KICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPgogICAgPGcgaWQ9IlBhZ2UtMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9IkxvZ28iIGZpbGwtcnVsZT0ibm9uemVybyI+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMC4wNDUyMzE4LDE5LjQ2MTIzMzcgQzkuMjQwNjc1MjUsMjAuNjk4NDMyOCA4LjEyNjE5NTA0LDIxLjMxNjY4NzggNi43MDA3Nzc4OSwyMS4zMTY2ODc4IEM1LjMxNTQ1ODI5LDIxLjMxNjY4NzggNC4yMDg2NTAxNywyMC43MTkxMTAzIDMuMzgwMjA4NzgsMTkuNTIzODE3NCBDMi41NTIyMDE2NiwxOC4zMjgyNDg5IDIuMTM4MDUzMzUsMTYuNzc4NDA3MSAyLjEzODA1MzM1LDE0Ljg3MzMyNzMgQzIuMTM4MDUzMzUsMTIuOTIyNzU3MSAyLjU0ODE0ODQ4LDExLjM0Mzk2NyAzLjM2ODMzODc1LDEwLjEzNzIzMjYgQzQuMTg4NjczNzgsOC45MzA2MzYxMiA1LjI5NTE5MjM4LDguMzI2OTkzMjQgNi42ODg3NjMxLDguMzI2OTkzMjQgQzguMDY2NTU1MzcsOC4zMjY5OTMyNCA5LjE3MTE5MjE0LDguODg1MjgzNjUgMTAuMDAzMzk3MiwxMC4wMDA0ODYgQzEwLjgzNTYwMjMsMTEuMTE2Mzc3NSAxMS4yNTE3NzcyLDEyLjY3NjI4MjIgMTEuMjUxNzc3MiwxNC42Nzk2NDg4IEMxMS4yNTE3NzcyLDE2LjYzMDM1NjggMTAuODQ5NDk4OSwxOC4yMjQxNzI1IDEwLjA0NTIzMTgsMTkuNDYxMjMzNyBNNi43MTI3OTI2OCw2LjczNDY5Mzg4IEM0LjY5MDExMDI1LDYuNzM0NjkzODggMy4wNjU2NTI5Myw3LjUwMTQxMjcgMS44MzkyNzU5NSw5LjAzNDAyMzI0IEMwLjYxMzE4ODQ4OSwxMC41NjY3NzE2IDAsMTIuNTA5NDg0NCAwLDE0Ljg2MTg4NTggQzAsMTcuMTE1NzI0OCAwLjU4NTM5NTI0MywxOS4wMTg1OTkxIDEuNzU2MDQwOTcsMjAuNTcwMDk1IEMyLjkyNjU0MTk1LDIyLjEyMjAwNDQgNC41NTg4MTYxMiwyMi44OTc5NTkyIDYuNjUzMDA4MjUsMjIuODk3OTU5MiBDOC43NzkxOTE1NywyMi44OTc5NTkyIDEwLjQzMzQ2ODcsMjIuMDgwMDk4MiAxMS42MTYyNzQsMjAuNDQ1MDY1NSBDMTIuNzk4NTAwMiwxOC44MDk3NTcxIDEzLjM4OTgzMDUsMTYuODkxNDQzNyAxMy4zODk4MzA1LDE0LjY5MTIyODEgQzEzLjM4OTgzMDUsMTIuMzk5NjE4MyAxMi43ODA1NTA0LDEwLjUwMDQ2NiAxMS41NjIyNzk4LDguOTkzOTA5MDQgQzEwLjM0Mzg2NDUsNy40ODgwNDEzIDguNzI3MzY4NzQsNi43MzQ2OTM4OCA2LjcxMjc5MjY4LDYuNzM0NjkzODgiIGlkPSJTaGFwZSIgZmlsbD0iIzVEQTdBMyI+PC9wYXRoPgogICAgICAgICAgICA8cGF0aCBkPSJNMjIuOTc0MzgxNywyMS4zNjc1NDcyIEMyMi4zMTQxOTk5LDIyLjA3MDg5MDkgMjEuNTU1MzY4NiwyMi40MjMxMzExIDIwLjY5OTU0OTUsMjIuNDIzMTMxMSBDMTkuOTYwMDU1MywyMi40MjMxMzExIDE5LjI1MDkyNjQsMjIuMTMwOTk0OCAxOC41Njk3NDU3LDIxLjU0NjU4MDEgQzE3Ljg4ODI2MjksMjAuOTYzMDE3OSAxNy41MTMzMDM4LDIwLjIyMzAxNTEgMTcuMzYyMjMyNSwxOS4zMjc5OTI0IEwxNy4zNjIyMzI1LDE1Ljk4NjA0NCBDMTcuNjY0Mzc1MiwxNS4xNzMxNDkxIDE3Ljk2OTM4ODIsMTQuNDgxNDU2OCAxOC41ODg0Nzg2LDEzLjkxMDk2NjggQzE5LjIwNzU2ODksMTMuMzQwNDc2OSAxOS45MDY3MjcxLDEzLjA1NTE2MDkgMjAuNjg3OTE3LDEzLjA1NTE2MDkgQzIxLjY3NjgzLDEzLjA1NTE2MDkgMjIuNDcwNDA3NywxMy40NTk2OTAxIDIzLjA2ODgwMTMsMTQuMjY4NjA2NSBDMjMuNjY2ODkyNywxNS4wNzc1MjI4IDIzLjk2NjAxNCwxNi4yMjg0NDg5IDIzLjk2NjAxNCwxNy43MjE1MjY5IEMyMy45NjYwMTQsMTkuNDQ4OTEwNyAyMy42MzUxNjc3LDIwLjY2NDYyOTcgMjIuOTc0MzgxNywyMS4zNjc1NDcyIE0yMS4xNjI3MzQyLDExLjQ0ODk3OTYgQzE5LjQwMzM1NzQsMTEuNDQ4OTc5NiAxOC4xMTc1ODkyLDEyLjMyNDUzNiAxNy4yMTExNjEyLDE0LjA3NDc5NjIgTDE3LjIxMTE2MTIsMTEuNjk4MjA0OCBMMTUuMzk4MzA1MSwxMS42OTgyMDQ4IEwxNS4zOTgzMDUxLDI3LjYxMjI0NDkgTDE3LjM2MjIzMjUsMjcuNjEyMjQ0OSBMMTcuMzYyMjMyNSwyMS44MjQ5MzM3IEMxOC4yNjg2NjA1LDIzLjIzOTQzNjEgMTkuNTA4OTU2MiwyMy45NDcwNDI1IDIxLjA4NzY1MTcsMjMuOTQ3MDQyNSBDMjIuNTU4OTM1NSwyMy45NDcwNDI1IDIzLjc2MjgyMywyMy4zNzk2Nzg2IDI0LjcwMjAzMzUsMjIuMjQ1NTE5MSBDMjUuNjQwNzkwOCwyMS4xMTA3OTEyIDI2LjExMDE2OTUsMTkuNTc3NTAxOCAyNi4xMTAxNjk1LDE3LjY0NTM2NjkgQzI2LjExMDE2OTUsMTUuODUzNDc0NCAyNS42NjI5OTgzLDE0LjM3MjkwMDMgMjQuNzUwNTI3NCwxMy4yMDMzNjA0IEMyMy44Mzc2MDMzLDEyLjAzMzY3ODUgMjIuNjQ4MDY3NiwxMS40NDg5Nzk2IDIxLjE2MjczNDIsMTEuNDQ4OTc5NiIgaWQ9IlNoYXBlIiBmaWxsPSIjNURBN0EzIj48L3BhdGg+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMC4yNjM1ODc2LDE2LjM2MzMzNjcgQzMwLjM0MTcwNzYsMTUuMjU4OTg2OCAzMC43MDEzMTY2LDE0LjQwODM2MTMgMzEuMzQxNzAwNiwxMy43NzA0NjExIEMzMS45ODE2NTYxLDEzLjEzMjQyMyAzMi43NjE0Mjc5LDEyLjgwNDAxNjkgMzMuNjgwNzMwMiwxMi44MDQwMTY5IEMzNC4zNjQxMDE2LDEyLjgwNDAxNjkgMzQuOTQ5MDczMiwxMi45NzU3NDMzIDM1LjQzNjUwMiwxMy4zMjkxMzUzIEMzNS45MjM1MDIzLDEzLjY4MTk3NTEgMzYuMjY5NDAxLDE0LjEyNTc4NTcgMzYuNDczNDg0MSwxNC42MjcwMjI1IEMzNi42NzgxMzg1LDE1LjEyODEyMTMgMzYuNzg3NTM1MSwxNS42NzMxMTggMzYuODAzMzg3NiwxNi4zNjMzMzY3IEwzMC4yNjM1ODc2LDE2LjM2MzMzNjcgWiBNMzcuMzc1MjIwMiwxMy4wMzA2ODQ4IEMzNi40MjgzNTQ1LDExLjk5MDI0OTEgMzUuMTc3NDM1LDExLjQ0ODk3OTYgMzMuNjIxNzQ3NSwxMS40NDg5Nzk2IEMzMi4wNDI5MjM5LDExLjQ0ODk3OTYgMzAuNzMwNTkzOCwxMi4wMDI1MzUgMjkuNjg2MDQyNCwxMy4xMzE0NTY3IEMyOC42NDEyMDU0LDE0LjI1OTgyNjIgMjguMTE4NjQ0MSwxNS43MzQ5NjE2IDI4LjExODY0NDEsMTcuNTY2OTQwMSBDMjguMTE4NjQ0MSwxOS4zNjA4MTg0IDI4LjYyMTA2ODQsMjAuODA3Mzc4OCAyOS42MjY5MTY4LDIxLjkxMzM4NTIgQzMwLjYzMjQ3OTYsMjMuMDE5OTQzOCAzMS45NDg1MjMsMjMuNTcxNDI4NiAzMy41NzQ5MDQsMjMuNTcxNDI4NiBDMzQuODA4MjU3MywyMy41NzE0Mjg2IDM1Ljg4MDIyOTIsMjMuMjQ4OTU4NCAzNi43OTE1MzM5LDIyLjYwNDcwODMgQzM3LjcwMzEyNDIsMjEuOTYwNzM0MiAzOC4zMTU4MDIsMjEuMTQ3MzgwNSAzOC42MzAxMzg2LDIwLjE2NDA5NSBMMzYuOTA5OTI3OCwxOS44MjI3MTI4IEMzNi4yODg5NjY3LDIxLjMzMzQ2MzUgMzUuMjIwNTY1MiwyMi4wODkyNTI5IDMzLjcwNDI5NDcsMjIuMDg5MjUyOSBDMzIuODYzNjgzNywyMi4wODkyNTI5IDMyLjA2NjM0NTYsMjEuODI4MDc0MiAzMS4zMTIyODA3LDIxLjIyMDY4MTcgQzMwLjU1ODA3MjksMjAuNjEzMDEzMiAzMC4xODA3NTQ3LDE5LjQwMDI5OSAzMC4xODA3NTQ3LDE3Ljc0Mzc3NDEgTDM4LjgzMDUwODUsMTcuNzQzNzc0MSBDMzguODA2OTQzOSwxNS41MzUwNzQzIDM4LjMyMTgwMDIsMTQuMDcwODQ0MyAzNy4zNzUyMjAyLDEzLjAzMDY4NDggTDM3LjM3NTIyMDIsMTMuMDMwNjg0OCBaIiBpZD0iU2hhcGUiIGZpbGw9IiM1REE3QTMiPjwvcGF0aD4KICAgICAgICAgICAgPHBhdGggZD0iTTQ4LjQzNjA2MzksMTIuMTMxMzMxIEM0Ny43NjA0NDM5LDExLjY3NjU3MTQgNDYuOTE5MzU2NiwxMS40NDg5Nzk2IDQ1Ljk1ODg0MjIsMTEuNDQ4OTc5NiBDNDQuMjkzMDQ0MywxMS40NDg5Nzk2IDQyLjk1MDQ1NjMsMTIuMjgxMTc0IDQxLjg2ODk3LDEzLjk0NTEzODggTDQxLjg2ODk3LDExLjY5NzA2ODggTDQwLjE2OTQ5MTUsMTEuNjk3MDY4OCBMNDAuMTY5NDkxNSwyMy41NzE0Mjg2IEw0Mi4wMjM0NjgxLDIzLjU3MTQyODYgTDQyLjAyMzQ2ODEsMTcuMDk0Mzg3NSBDNDIuMDIzNDY4MSwxNS44NzQwMTQ3IDQyLjM4NTkyMDUsMTQuODg5OTk4MiA0My4wNzg1MzUyLDE0LjE0MzE4NiBDNDMuNzcwNjg2NCwxMy4zOTY3OTggNDQuNjM1NDEyLDEzLjAyMzYwNCA0NS42NTUwOTkxLDEzLjAyMzYwNCBDNDYuMzk0NjgxMiwxMy4wMjM2MDQgNDcuMDQyODAwNSwxMy4yNDUyNTg2IDQ3LjU2MTE0MTUsMTMuNjg4NTY3OSBDNDguMDc5NjM2OSwxNC4xMzE1OTQ0IDQ4LjM1Nzg4NzksMTQuODk3NjMxNyA0OC4zNTc4ODc5LDE1Ljk4NjUzODQgTDQ4LjM1Nzg4NzksMjMuNTcxNDI4NiBMNTAuMjExODY0NCwyMy41NzE0Mjg2IEw1MC4yMTE4NjQ0LDE2Ljc0NDUxODEgQzUwLjIxMTg2NDQsMTUuMjU5Mzc1NSA1MC4wODE0NjgxLDE0LjIzMzA5MTkgNDkuODMwNDA4NywxMy42NjUyNDMyIEM0OS41Nzk2NTg0LDEzLjA5NzM5NDYgNDkuMTExODM4MywxMi41ODYwOTA1IDQ4LjQzNjA2MzksMTIuMTMxMzMxIFoiIGlkPSJTaGFwZSIgZmlsbD0iIzVEQTdBMyI+PC9wYXRoPgogICAgICAgICAgICA8cGF0aCBkPSJNNTcuNzMyOTYwNywxOS4zMjIyNzI0IEM1Ny43MzI5NjA3LDIwLjIxNjkxMjkgNTcuNjY0MDE3MywyMC44NjM1NjU5IDU3LjUyOTgzNDEsMjEuMjYzMjQ2NCBDNTcuMzk1MjIzNiwyMS42NjI0OTE5IDU3LjEzMTQxNTQsMjEuOTg3NjMxMSA1Ni43Mzk0MDY4LDIyLjIzOTM4OTIgQzU2LjM0NzY4MywyMi40OTA4NTczIDU1LjY5NjI4MiwyMi42MTYxNTYzIDU0Ljg2OTM4ODcsMjIuNjE2MTU2MyBDNTQuMjg4MDcwNywyMi42MTYxNTYzIDUzLjc0NDUwMDUsMjIuNTM4NTY5NSA1Mi44ODk4MzA1LDIyLjM4MzI1MSBMNTIuODg5ODMwNSwyMy45MzQ2OTYgQzUzLjc0NDUwMDUsMjQuMTQxMjA3MyA1NC4zNzg4MDgyLDI0LjI0NDg5OCA1NS4wOTc0NDMyLDI0LjI0NDg5OCBDNTYuNDM5NTYsMjQuMjQ0ODk4IDU3LjUzNTEwNDYsMjMuODgyNDg4MSA1OC4zNDc4OTU4LDIzLjE1ODM5MzQgQzU5LjE2MDQwMjEsMjIuNDMzODYzNyA1OS41ODQ3NDU4LDIxLjE1NDkxNSA1OS41ODQ3NDU4LDE5LjMyMTExMjMgTDU5LjU4NDc0NTgsOC43NTUxMDIwNCBMNTcuNzMyOTYwNyw4Ljc1NTEwMjA0IEw1Ny43MzI5NjA3LDE5LjMyMjI3MjQgWiIgaWQ9IlNoYXBlIiBmaWxsPSIjRkZGRkZGIj48L3BhdGg+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik02OS4yNDA4MTE5LDE2LjIyNTg5MDQgQzY4LjU2Njc1NzgsMTYuOTQyNzI2NiA2Ny43MzIxNTUyLDE3LjMwMTIxNiA2Ni43Mzc0MTk4LDE3LjMwMTIxNiBDNjUuODMzODMyNiwxNy4zMDEyMTYgNjUuMDQyMDMzNywxNi45OTE5NDIyIDY0LjM2MTA1MzQsMTYuMzczNTM3MyBDNjMuNjgwMjExNiwxNS43NTQ3MDQzIDYzLjMzOTcyMTUsMTQuOTE0MTg3MiA2My4zMzk3MjE1LDEzLjg1MTI3MjQgQzYzLjMzOTcyMTUsMTIuODYxOTY3MiA2My42NDY4Mjc1LDEyLjAyMjQ0ODUgNjQuMjYwNzYyNiwxMS4zMzQ5OTkxIEM2NC44NzQxNDM1LDEwLjY0NzEyMTYgNjUuNzEwNDA4NCwxMC4zMDMzMjU2IDY2Ljc2OTAwMzEsMTAuMzAzMzI1NiBDNjcuODEzMzI5OCwxMC4zMDMzMjU2IDY4LjY1NDk5NzEsMTAuNjM3ODQ5MSA2OS4yOTM0NTA4LDExLjMwNzYwOTUgQzY5LjkzMjE4MTUsMTEuOTc3MjI3MiA3MC4yNTE0Nzc2LDEyLjc3ODA4NjYgNzAuMjUxNDc3NiwxMy43MDkzMzE3IEM3MC4yNTE0Nzc2LDE0LjY3MDEwNjIgNjkuOTE0MzEyLDE1LjUwOTA1NDIgNjkuMjQwODExOSwxNi4yMjU4OTA0IE03MC44NTQ3NDYzLDEwLjcyNDE1NDggQzY5Ljg4ODI2OTYsOS40MTIwMjM1NyA2OC40OTgwNTAzLDguNzU1MTAyMDQgNjYuNjg0MjI2OCw4Ljc1NTEwMjA0IEM2NS4yMDI1ODIxLDguNzU1MTAyMDQgNjMuOTgzNDM5LDkuMjU3MjQ0MDEgNjMuMDI3NDkwMSwxMC4yNjExIEM2Mi4wNzA5ODcsMTEuMjY1MjQxMyA2MS41OTMyMjAzLDEyLjQ3MjgwNzEgNjEuNTkzMjIwMywxMy44ODQyMjU1IEM2MS41OTMyMjAzLDE1LjI3MzgxNzggNjIuMDQ3OTkyMiwxNi40Mzk1ODYgNjIuOTU4MzY3LDE3LjM4MTY3MjkgQzYzLjg2ODg4MDMsMTguMzIzNjE3IDY0Ljk5NDI0MzIsMTguNzk0ODAzMSA2Ni4zMzQ3MzI3LDE4Ljc5NDgwMzEgQzY4LjIzMzA1NTMsMTguNzk0ODAzMSA2OS42NTUxMzUsMTcuOTAwNzkwNiA3MC42MDA4MzMyLDE2LjExMzA1MTEgQzcwLjU3OTUwMDYsMTguMTU1MTQyNyA3MC4yMjEyNzk1LDE5Ljc3MjI2ODEgNjkuNTI2NTg1NCwyMC45NjM5OTkzIEM2OC44MzEzMzcyLDIyLjE1NjAxNTkgNjcuNzk1ODc1OSwyMi43NTE0NTM2IDY2LjQxOTUwODksMjIuNzUxNDUzNiBDNjUuMDAxNTg0OSwyMi43NTE0NTM2IDYzLjk5MjMwNDUsMjIuMDY1MDAyNyA2My4zOTIzNjAzLDIwLjY5MTM4NzYgTDYxLjk0MjI5ODksMjEuMjM2NjExMSBDNjIuNzA0MTc2OCwyMy4yNDIxODMyIDY0LjE4OTU2MTYsMjQuMjQ0ODk4IDY2LjM5ODczMDQsMjQuMjQ0ODk4IEM2OC4yODk0MzQyLDI0LjI0NDg5OCA2OS43NDY5NzU5LDIzLjQ5NzgxOTEgNzAuNzcwMTA4NiwyMi4wMDM1MTg4IEM3MS43OTMyNDEzLDIwLjUwOTA3NTggNzIuMzA1MDg0NywxOC41NTQ1NzM4IDcyLjMwNTA4NDcsMTYuMTQwMDEyNyBDNzIuMzA1MDg0NywxMy44NDIxNDI2IDcxLjgyMTYzODYsMTIuMDM2ODU2NiA3MC44NTQ3NDYzLDEwLjcyNDE1NDgiIGlkPSJTaGFwZSIgZmlsbD0iI0ZGRkZGRiI+PC9wYXRoPgogICAgICAgICAgICA8cGF0aCBkPSJNNDguODQzNzkwMSwyNC42NDQ3MTU3IEM0OS41NDM5Mzk0LDI1LjkwNTU0OTIgNTAuNDE5NDA5OCwyNy4wOTIxMjI5IDUxLjQ3MDIwMTMsMjguMTY3MjQ1MyBDNTcuNzY4MDE2NSwzNC42MTA5MTgyIDY3Ljk3ODc5MjcsMzQuNjEwOTE4MiA3NC4yNzY2MDc5LDI4LjE2NzI0NTMgQzgwLjU3NDQ2NCwyMS43MjM2MDAzIDgwLjU3NDQ2NCwxMS4yNzY0MDE4IDc0LjI3NjYwNzksNC44MzI3NTY4MyBDNjcuOTc4NzkyNywtMS42MTA5MTg5NCA1Ny43NjgwMTY1LC0xLjYxMDkxODk0IDUxLjQ3MDIwMTMsNC44MzI3NTY4MyBDNDkuNjA2NzAxNiw2LjczOTM5NzA0IDQ4LjI5NDU5ODMsOC45OTY1NjQ4MyA0Ny41MzM4OTgzLDExLjM5NjgyMjkgTDQ4LjM3MDI2NzIsMTEuNzc3ODE5NiBDNDkuMDgzNDMyNSw5LjQ3ODI5OTU2IDUwLjMzMTIyMjcsNy4zMTQ3NjEyMiA1Mi4xMTM2MzM1LDUuNDkxMDg4OTIgQzU4LjA1NjA5NDgsLTAuNTg4OTk5Mjg4IDY3LjY5MDcyMTIsLTAuNTg4OTk5Mjg4IDczLjYzMzE3NTcsNS40OTEwODg5MiBDNzkuNTc1NjcxMiwxMS41NzExNDM2IDc5LjU3NTY3MTIsMjEuNDI4ODU1NyA3My42MzMxNzU3LDI3LjUwODkxNDYgQzY3LjY5MDcyMTIsMzMuNTg4OTkzIDU4LjA1NjA5NDgsMzMuNTg4OTkzIDUyLjExMzYzMzUsMjcuNTA4OTE0NiBDNTEuMTQ0MDY3NywyNi41MTY4OTg3IDUwLjMzMjY5OTgsMjUuNDI0MzI2NyA0OS42Nzk1MTYxLDI0LjI2NDAwNzMgTDQ4Ljg0Mzc5MDEsMjQuNjQ0NzE1NyBaIiBpZD0iU2hhcGUiIGZpbGw9IiM1REE3QTMiPjwvcGF0aD4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==" alt="OpenJ9 Logo"/></a></div><style data-emotion-css="kzfr2u">.css-kzfr2u{-webkit-flex:2;-ms-flex:2;flex:2;}</style><nav class="css-kzfr2u"><style data-emotion-css="d1fq55">.css-d1fq55{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;list-style:none;-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end;}.css-d1fq55 li{padding:8px;margin-left:8px;margin-right:8px;}.css-d1fq55 li a{color:white;-webkit-text-decoration:none;text-decoration:none;}.css-d1fq55 li a:hover{color:var(--theme-ui-colors-links,#5DA7A3);}.css-d1fq55 li:first-of-type{margin-left:0;}.css-d1fq55 li:last-child{margin-right:0;padding-right:0;}</style><ul class="css-d1fq55"><li><a href="/openj9/">Home</a></li><li><a href="/openj9/about">About</a></li><li><a href="https://www.eclipse.org/openj9/docs/" rel="noopener noreferrer" target="_blank">Docs</a></li><li><a href="/openj9/performance">Performance</a></li><li><a href="/openj9/news">News</a></li></ul></nav><style data-emotion-css="1rr4qq7">.css-1rr4qq7{-webkit-flex:1;-ms-flex:1;flex:1;}</style><nav class="css-1rr4qq7"><ul class="css-d1fq55"><li><a href="https://twitter.com/openj9/" rel="noopener noreferrer" target="_blank"> <img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIyNXB4IiB2aWV3Qm94PSIwIDAgMjUgMjUiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5Ud2l0dGVyPC90aXRsZT4KICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPgogICAgPGcgaWQ9IlBhZ2UtMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9IlR3aXR0ZXIiIGZpbGwtcnVsZT0ibm9uemVybyI+CiAgICAgICAgICAgIDxnIGlkPSJ0d2l0dGVyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjAwMDAwMCwgMC4yOTg4NzkpIj4KICAgICAgICAgICAgICAgIDxlbGxpcHNlIGlkPSJPdmFsLXBhdGgiIGZpbGw9IiM0MzQzNDMiIGN4PSIxMi41MDAyMjEyIiBjeT0iMTIuMjcyNzI3MyIgcng9IjEyLjUiIHJ5PSIxMi4yNzI3MjczIj48L2VsbGlwc2U+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTIuNTAwMjIxMiwwIEMxOS40MDM3ODA2LDAgMjUuMDAwMjIxMiw1LjQ5NDY4NzE2IDI1LjAwMDIyMTIsMTIuMjcyNzI3MyBDMjUuMDAwMjIxMiwxOS4wNTA3Njc0IDE5LjQwMzc4MDYsMjQuNTQ1NDU0NSAxMi41MDAyMjEyLDI0LjU0NTQ1NDUgQzUuNTk2NjYxODcsMjQuNTQ1NDU0NSAwLjAwMDIyMTIzODkzOCwxOS4wNTA3Njc0IDAuMDAwMjIxMjM4OTM4LDEyLjI3MjcyNzMgQzAuMDAwMjIxMjM4OTM4LDUuNDk0Njg3MTYgNS41OTY2NjE4NywwIDEyLjUwMDIyMTIsMCBaIE0xNS4xMDM0MzMzLDYuODE4MTgxODIgQzEzLjQ2NTM4MDIsNi44MTgxODE4MiAxMi4xMzY4NDA0LDguMDkyMTI0MTEgMTIuMTM2ODQwNCw5LjY2Mjg1OTk2IEMxMi4xMzY4NDA0LDkuODg1ODI2MzggMTIuMTYzMTY3OCwxMC4xMDI4NTI3IDEyLjIxNDA1MjgsMTAuMzExMTgxIEM5Ljc0ODU2NjA0LDEwLjE5MjU5MDggNy41NjI1MDQxLDkuMDYwMTUwNTQgNi4wOTkyMjk3Niw3LjMzODU3ODIzIEM1Ljg0MzkyMDAzLDcuNzU4NjI5MTUgNS42OTc0NTk4NSw4LjI0NzYyNzgxIDUuNjk3NDU5ODUsOC43Njg4NzI4MSBDNS42OTc0NTk4NSw5Ljc1NTU2ODE3IDYuMjIxNTc0ODksMTAuNjI2NjQzNCA3LjAxNzE1MDExLDExLjEzNjY0NDcgQzYuNTMxMDg4MTcsMTEuMTIyMDA2NSA2LjA3MzM0NDgsMTAuOTk0MDgxOSA1LjY3MzU2NjA0LDEwLjc4MDQ1IEw1LjY3MzM0NDgsMTAuODE2NTE0OSBMNS42NzMzNDQ4LDEwLjgxNjUxNDkgQzUuNjczMzQ0OCwxMi4xOTQ4MzM1IDYuNjk2MzUzNjUsMTMuMzQ0NDU3NyA4LjA1MzIxMjA2LDEzLjYwNTYxMDYgQzcuODA0NTM5NSwxMy42NzA5NTE5IDcuNTQxOTI4ODgsMTMuNzA1NTMxOCA3LjI3MTc5NjEzLDEzLjcwNTUzMTggQzcuMDgwMjAzMjEsMTMuNzA1NTMxOCA2Ljg5NDU4Mzc0LDEzLjY4NzkyMzYgNi43MTM2MTAyOSwxMy42NTQ4Mjg3IEM3LjA5MTA0MzkyLDE0Ljc4NDcyMzIgOC4xODYzOTc5LDE1LjYwNzIxNjkgOS40ODQ4NDkyMywxNS42MzAzNDA5IEM4LjQ2OTM2MjUsMTYuMzkzNDMzNCA3LjE5MDM4MDIsMTYuODQ4MDY0MiA1LjgwMDExNDcyLDE2Ljg0ODA2NDIgQzUuNTYxMTc2NjYsMTYuODQ4MDY0MiA1LjMyNDQ1MSwxNi44MzQ2OTkgNS4wOTI4MTM4MywxNi44MDgxODA2IEM2LjQwNDk4MTk3LDE3LjYxNTYxMTggNy45NjQ3MTY0OSwxOC4wODYzNjU4IDkuNjM5OTM3NzMsMTguMDg2MzY1OCBDMTUuMDk2NTc0OSwxOC4wODYzNjU4IDE4LjA4MDY0NTcsMTMuNzUxNzc5OCAxOC4wODA2NDU3LDkuOTkyMzI0MTQgQzE4LjA4MDY0NTcsOS44NjkwNjY3NyAxOC4wNzc3Njk2LDkuNzQ2MjMzNyAxOC4wNzIwMTc0LDkuNjI0NDYxMzcgQzE4LjY1MjEwNTksOS4yMjM1MDM2OCAxOS4xNTQ5ODIsOC43MjI2MjQ3OCAxOS41NTI1NDgzLDguMTUyMTYxNjkgQzE5LjAyMDY4OTksOC4zNzgzMTAzMiAxOC40NDg1NjYsOC41MzEyNjgyNSAxNy44NDg1NjYsOC41OTk1Nzk1NiBDMTguNDYxMTc2Nyw4LjI0NzYyNzgxIDE4LjkzMTMwOTQsNy42OTA3NDIxMyAxOS4xNTMyMTIxLDcuMDI2MDg1ODEgQzE4LjU3OTk4Miw3LjM1MjE1NTYzIDE3Ljk0NDgwNSw3LjU4ODY5OTQ2IDE3LjI2OTM2MjUsNy43MTYxOTk3NiBDMTYuNzI4MjEyMSw3LjE2MzU1NzAyIDE1Ljk1NzE5NDQsNi44MTgxODE4MiAxNS4xMDM0MzMzLDYuODE4MTgxODIgWiIgaWQ9IkNvbWJpbmVkLVNoYXBlIiBmaWxsPSIjRkZGRkZGIj48L3BhdGg+CiAgICAgICAgICAgIDwvZz4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==" alt="Twitter Logo"/></a></li><li><a href="https://github.com/eclipse/openj9" rel="noopener noreferrer" target="_blank"> <img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIyNXB4IiB2aWV3Qm94PSIwIDAgMjUgMjUiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5HaXRIdWI8L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0iR2l0SHViIiBmaWxsPSIjRkZGRkZGIiBmaWxsLXJ1bGU9Im5vbnplcm8iPgogICAgICAgICAgICA8ZyBpZD0iZ2l0aHViLWxvZ28iPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTIzLjMyMzIwOSw2LjM1NjM4NTg4IEMyMi4yMDU0MjQzLDQuNDI4ODY0OTMgMjAuNjg5MjIwNywyLjkwMjg0MzkxIDE4Ljc3NDE5OTMsMS43Nzc5Nzg1OCBDMTYuODU4ODkyOCwwLjY1MzA1NTg3MyAxNC43Njc5NDkxLDAuMDkwNzM3OTUzMyAxMi40OTk4ODYsMC4wOTA3Mzc5NTMzIEMxMC4yMzIxMDc5LDAuMDkwNzM3OTUzMyA4LjE0MDQ4MDEzLDAuNjUzMjI3OTkzIDYuMjI1NTcyNjksMS43Nzc5Nzg1OCBDNC4zMTAzODAyMSwyLjkwMjc4NjU0IDIuNzk0MjMzNjcsNC40Mjg4NjQ5MyAxLjY3NjQ0ODk5LDYuMzU2Mzg1ODggQzAuNTU4ODM1MzMzLDguMjgzODQ5NDUgMCwxMC4zODg2NTQ2IDAsMTIuNjcwNzQzOSBDMCwxNS40MTIwNTEgMC43OTQ2NzE0ODMsMTcuODc3MTA0NSAyLjM4NDQxMzQ5LDIwLjA2NjUzNTUgQzMuOTczOTg0NDksMjIuMjU2MTM4OCA2LjAyNzQ3NDg4LDIzLjc3MTI1ODggOC41NDQ3MTM2NywyNC42MTIwNjc4IEM4LjgzNzcyNzQsMjQuNjY2ODAyMiA5LjA1NDYzNzM3LDI0LjYyODMwNDUgOS4xOTU2NzE2MSwyNC40OTc1NTAzIEM5LjMzNjc2Mjg1LDI0LjM2NjYyMzkgOS40MDcyMjI5NiwyNC4yMDI2NTAzIDkuNDA3MjIyOTYsMjQuMDA2MzE4MSBDOS40MDcyMjI5NiwyMy45NzM1NTc5IDkuNDA0NDI5NjQsMjMuNjc4ODMwMSA5LjM5OTAxNDAxLDIzLjEyMTc5MDUgQzkuMzkzNDI3MzcsMjIuNTY0NzUxIDkuMzkwODA1MDcsMjIuMDc4Nzk3MiA5LjM5MDgwNTA3LDIxLjY2NDE1ODcgTDkuMDE2NDQyOTcsMjEuNzI5MzM1MSBDOC43Nzc3NTY1LDIxLjc3MzM0MDUgOC40NzY2NDc4MywyMS43OTE5ODY5IDguMTEzMTE2OTgsMjEuNzg2NzA4NiBDNy43NDk3NTcxNSwyMS43ODE2MDIzIDcuMzcyNTQ0NzMsMjEuNzQzMjc2OCA2Ljk4MTk5Mjc3LDIxLjY3MjAxODkgQzYuNTkxMjY5NzksMjEuNjAxMzkyMSA2LjIyNzg1Mjk1LDIxLjQzNzU5MDcgNS44OTE0NTcyMiwyMS4xODA5NTg5IEM1LjU1NTIzMjUyLDIwLjkyNDMyNzEgNS4zMTY1NDYwNCwyMC41ODg0MDUxIDUuMTc1NDU0OCwyMC4xNzM3MDkzIEw1LjAxMjcwMTA2LDE5Ljc5Njc2NTIgQzQuOTA0MjE3NTcsMTkuNTQ1ODEzNCA0LjczMzQyNTkxLDE5LjI2NzAzNTUgNC41MDAwOTgwNSwxOC45NjE0NjQxIEM0LjI2Njc3MDE5LDE4LjY1NTYwNTggNC4wMzA4MjAwMywxOC40NDgyNTc5IDMuNzkyMTMzNTUsMTguMzM5MDc2MSBMMy42NzgxNzc0MywxOC4yNTY5NzQ2IEMzLjYwMjI0NDY5LDE4LjIwMjQxMjMgMy41MzE3ODQ1OCwxOC4xMzY2MDQ5IDMuNDY2NjI2MDgsMTguMDYwMjQwOCBDMy40MDE1MjQ1OCwxNy45ODM4NzY2IDMuMzUyNzgzOTcsMTcuOTA3NDU1MSAzLjMyMDIzMzIzLDE3LjgzMDkxODggQzMuMjg3NjI1NDcsMTcuNzU0MzI1MSAzLjMxNDY0NjU4LDE3LjY5MTUwMTEgMy40MDE1ODE1OSwxNy42NDIyMTcyIEMzLjQ4ODUxNjYsMTcuNTkyOTMzNCAzLjY0NTYyNjY4LDE3LjU2OTAwODYgMy44NzM1OTU5MywxNy41NjkwMDg2IEw0LjE5ODk4OTM5LDE3LjYxNzk0ODIgQzQuNDE2MDEzMzcsMTcuNjYxNzI0MiA0LjY4NDQ1NzI3LDE3Ljc5MjQ3ODUgNS4wMDQ2NjMxNCwxOC4wMTEwMTQzIEM1LjMyNDY5Nzk4LDE4LjIyOTM3NzkgNS41ODc3ODMyNywxOC41MTMyNjIxIDUuNzkzOTc2LDE4Ljg2MjU1MjEgQzYuMDQzNjY0NzUsMTkuMzEwNDA5OSA2LjM0NDQ4ODM4LDE5LjY1MTY2NzYgNi42OTczMDE5OSwxOS44ODY0OTc0IEM3LjA0OTgzMDU4LDIwLjEyMTMyNzMgNy40MDUyNjY0OSwyMC4yMzg1NDE0IDcuNzYzMjY3NzEsMjAuMjM4NTQxNCBDOC4xMjEyNjg5MiwyMC4yMzg1NDE0IDguNDMwNDcyNTIsMjAuMjExMjMxNiA4LjY5MDk5MjUxLDIwLjE1Njg5ODkgQzguOTUxMjI3NDcsMjAuMTAyMjc5MyA5LjE5NTM4NjU3LDIwLjAyMDE3NzcgOS40MjMzNTU4MiwxOS45MTEwNTMzIEM5LjUyMTAwODA2LDE5LjE3OTA4MTkgOS43ODY4ODY2NywxOC42MTY3NjM5IDEwLjIyMDc2MzYsMTguMjIzNjk3OSBDOS42MDIzNTY0MiwxOC4xNTgyOTIxIDkuMDQ2MzcxNDIsMTguMDU5NzgxOCA4LjU1MjUyMzU3LDE3LjkyODc5OCBDOC4wNTg5NjA3NSwxNy43OTc2NDIxIDcuNTQ4OTIzMDMsMTcuNTg0Nzg2MyA3LjAyMjc1MjQ2LDE3LjI4OTY1NjkgQzYuNDk2Mjk2ODUsMTYuOTk0OTI5MSA2LjA1OTU2OTU4LDE2LjYyODk0MzQgNS43MTI0NTY2MiwxNi4xOTIzMzA5IEM1LjM2NTI4NjY1LDE1Ljc1NTQ4ODkgNS4wODAzNjc4NSwxNS4xODE5ODMxIDQuODU4MDk5MjYsMTQuNDcyMzMgQzQuNjM1NzE2NjYsMTMuNzYyMzkgNC41MjQ0OTY4NiwxMi45NDM0NDAzIDQuNTI0NDk2ODYsMTIuMDE1MjUxNCBDNC41MjQ0OTY4NiwxMC42OTM2NTIzIDQuOTUzMTg2MjEsOS41NjkwMTY0MiA1LjgxMDM5Mzg5LDguNjQwNzEyNzggQzUuNDA4ODM5NjcsNy42NDcxMTgwNyA1LjQ0Njc0OTAzLDYuNTMzMjY4NDYgNS45MjQyMzYsNS4yOTkyNzg2OCBDNi4yMzg5MTIyMiw1LjIwMDg4MzA4IDYuNzA1NTY3OTQsNS4yNzQ3MjI4MSA3LjMyMzk3NTE0LDUuNTIwMzM4ODcgQzcuOTQyNDk2MzQsNS43NjYwNjk2OCA4LjM5NTM1NjQ3LDUuOTc2NTczMTQgOC42ODMwMTE1OSw2LjE1MTEwMzQxIEM4Ljk3MDY2NjcsNi4zMjU1NzYzIDkuMjAxMTQ0MjQsNi40NzM0Mjc4NyA5LjM3NDc4NjIzLDYuNTkzMzM4NTQgQzEwLjM4NDA4NzQsNi4zMDk1MTE3MSAxMS40MjU2NTQzLDYuMTY3NTY5NjEgMTIuNDk5NzcyLDYuMTY3NTY5NjEgQzEzLjU3Mzg4OTYsNi4xNjc1Njk2MSAxNC42MTU2ODQ2LDYuMzA5NTExNzEgMTUuNjI1MDQyOCw2LjU5MzMzODU0IEwxNi4yNDM1MDcsNi4yMDAzODcyNiBDMTYuNjY2NDM4Niw1LjkzODE5MDI1IDE3LjE2NTg3MzEsNS42OTc5MDk5MyAxNy43NDA2MTMzLDUuNDc5NDg4OTIgQzE4LjMxNTY5NTUsNS4yNjExODI2NiAxOC43NTU0NDQxLDUuMjAxMDU1MiAxOS4wNTk0MDMxLDUuMjk5NDUwOCBDMTkuNTQ3NDkzMyw2LjUzMzQ5Nzk1IDE5LjU5MDk4OTMsNy42NDcyOTAxOSAxOS4xODkzMjExLDguNjQwODg0OSBDMjAuMDQ2NDcxNyw5LjU2OTE4ODU0IDIwLjQ3NTMzMjEsMTAuNjk0MTExMiAyMC40NzUzMzIxLDEyLjAxNTQyMzUgQzIwLjQ3NTMzMjEsMTIuOTQzNjEyNCAyMC4zNjM3MTMzLDEzLjc2NTE0MzkgMjAuMTQxNjcyNywxNC40ODA1MzQ0IEMxOS45MTkzNDcxLDE1LjE5NjAzOTYgMTkuNjMxOTc3LDE1Ljc2ODk3MTcgMTkuMjc5NDQ4NSwxNi4yMDA1MzUzIEMxOC45MjY1MjA4LDE2LjYzMjA0MTYgMTguNDg3MDAwMiwxNi45OTUxNTg2IDE3Ljk2MDgyOTcsMTcuMjg5ODI5MSBDMTcuNDM0NTQ1MSwxNy41ODQ3MjkgMTYuOTI0MzM2MywxNy43OTc1ODQ4IDE2LjQzMDc3MzUsMTcuOTI4NzQwNiBDMTUuOTM2OTgyNywxOC4wNTk4OTY1IDE1LjM4MDk5NzcsMTguMTU4NDY0MiAxNC43NjI1OTA1LDE4LjIyMzk4NDggQzE1LjMyNjYxMzQsMTguNzE1MjE2OSAxNS42MDg2ODE5LDE5LjQ5MDYyMDEgMTUuNjA4NjgxOSwyMC41NDk4NTAxIEwxNS42MDg2ODE5LDI0LjAwNTg1OTIgQzE1LjYwODY4MTksMjQuMjAyMTkxNCAxNS42NzY1MTk3LDI0LjM2NjEwNzUgMTUuODEyMzA5MywyNC40OTcwOTEzIEMxNS45NDc5Mjc5LDI0LjYyNzg0NTUgMTYuMTYyMTAxNiwyNC42NjYzNDMyIDE2LjQ1NTExNTMsMjQuNjExNTUxNSBDMTguOTcyNjk2MSwyMy43NzA4NTcyIDIxLjAyNjE4NjUsMjIuMjU1Njc5OCAyMi42MTU3MDA1LDIwLjA2NjA3NjYgQzI0LjIwNTA0MzUsMTcuODc2NjQ1NSAyNSwxNS40MTE1OTIgMjUsMTIuNjcwMjg0OSBDMjQuOTk5NDI5OSwxMC4zODg0ODI1IDI0LjQ0MDMwOTYsOC4yODM4NDk0NSAyMy4zMjMyMDksNi4zNTYzODU4OCBaIiBpZD0iU2hhcGUiPjwvcGF0aD4KICAgICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+" alt="GitHub Logo"/></a></li><li><a href="https://openj9.slack.com/" rel="noopener noreferrer" target="_blank"><img src="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIyNXB4IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgogPCEtLSBDcmVhdGVkIHdpdGggTWV0aG9kIERyYXcgLSBodHRwOi8vZ2l0aHViLmNvbS9kdW9waXhlbC9NZXRob2QtRHJhdy8gLS0+CgogPGc+CiAgPHRpdGxlPmJhY2tncm91bmQ8L3RpdGxlPgogIDxyZWN0IGZpbGw9Im5vbmUiIGlkPSJjYW52YXNfYmFja2dyb3VuZCIgaGVpZ2h0PSIyNiIgd2lkdGg9IjI2IiB5PSItMSIgeD0iLTEiLz4KICA8ZyBkaXNwbGF5PSJub25lIiBvdmVyZmxvdz0idmlzaWJsZSIgeT0iMCIgeD0iMCIgaGVpZ2h0PSIxMDAlIiB3aWR0aD0iMTAwJSIgaWQ9ImNhbnZhc0dyaWQiPgogICA8cmVjdCBmaWxsPSJ1cmwoI2dyaWRwYXR0ZXJuKSIgc3Ryb2tlLXdpZHRoPSIwIiB5PSIxIiB4PSIxIiBoZWlnaHQ9IjIyIiB3aWR0aD0iMjIiLz4KICA8L2c+CiA8L2c+CiA8Zz4KICA8dGl0bGU+TGF5ZXIgMTwvdGl0bGU+CiAgPGVsbGlwc2Ugcnk9IjExIiByeD0iMTEiIGlkPSJzdmdfMSIgY3k9IjEyIiBjeD0iMTIiIHN0cm9rZT0iI0ZGRiIgZmlsbD0iI0ZGRkZGRiIvPgogIDxzdHlsZSB0cmFuc2Zvcm09Im1hdHJpeCgwLjA2NTE4MjQ5NTU3MzI1MzYyLDAsMCwwLjA2NTE4MjQ5NTU3MzI1MzYyLDAsMCkgIiB0eXBlPSJ0ZXh0L2NzcyI+LnN0MHtmaWxsOiM0MzQzNDM7fTwvc3R5bGU+CiAgPGcgc3Ryb2tlPSJudWxsIiBpZD0ic3ZnXzE5Ij4KICAgPGcgc3Ryb2tlPSJudWxsIiB0cmFuc2Zvcm09Im1hdHJpeCgwLjEzMDE1NTgwODUxODA5NDg2LDAsMCwwLjEzMDE1NTgwODUxODA5NDg2LC02Ljg0OTAwNjQ1MDQwNTQ5OSwtNi44MzE1MDczOTEwMjE5MjQpICIgaWQ9InN2Z182Ij4KICAgIDxnIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z183Ij4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfOCIgZD0ibTExMC4yOTgyOTIsMTYxLjI5MzAxMWMwLDcuMSAtNS44LDEyLjkgLTEyLjksMTIuOXMtMTIuOSwtNS44IC0xMi45LC0xMi45YzAsLTcuMSA1LjgsLTEyLjkgMTIuOSwtMTIuOWwxMi45LDBsMCwxMi45eiIgY2xhc3M9InN0MCIvPgogICAgIDxwYXRoIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z185IiBkPSJtMTE2Ljc5ODI5MiwxNjEuMjkzMDExYzAsLTcuMSA1LjgsLTEyLjkgMTIuOSwtMTIuOXMxMi45LDUuOCAxMi45LDEyLjlsMCwzMi4zYzAsNy4xIC01LjgsMTIuOSAtMTIuOSwxMi45cy0xMi45LC01LjggLTEyLjksLTEyLjljMCwwIDAsLTMyLjMgMCwtMzIuM3oiIGNsYXNzPSJzdDAiLz4KICAgIDwvZz4KICAgIDxnIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z18xMCI+CiAgICAgPHBhdGggc3Ryb2tlPSJudWxsIiBpZD0ic3ZnXzExIiBkPSJtMTI5LjY5ODI5MiwxMDkuNDkzMDExYy03LjEsMCAtMTIuOSwtNS44IC0xMi45LC0xMi45czUuOCwtMTIuOSAxMi45LC0xMi45czEyLjksNS44IDEyLjksMTIuOWwwLDEyLjlsLTEyLjksMHoiIGNsYXNzPSJzdDAiLz4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTIiIGQ9Im0xMjkuNjk4MjkyLDExNS45OTMwMTFjNy4xLDAgMTIuOSw1LjggMTIuOSwxMi45cy01LjgsMTIuOSAtMTIuOSwxMi45bC0zMi4zLDBjLTcuMSwwIC0xMi45LC01LjggLTEyLjksLTEyLjlzNS44LC0xMi45IDEyLjksLTEyLjljMCwwIDMyLjMsMCAzMi4zLDB6IiBjbGFzcz0ic3QwIi8+CiAgICA8L2c+CiAgICA8ZyBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTMiPgogICAgIDxwYXRoIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z18xNCIgZD0ibTE4MS40OTgyOTIsMTI4Ljg5MzAxMWMwLC03LjEgNS44LC0xMi45IDEyLjksLTEyLjljNy4xLDAgMTIuOSw1LjggMTIuOSwxMi45cy01LjgsMTIuOSAtMTIuOSwxMi45bC0xMi45LDBsMCwtMTIuOXoiIGNsYXNzPSJzdDAiLz4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTUiIGQ9Im0xNzQuOTk4MjkyLDEyOC44OTMwMTFjMCw3LjEgLTUuOCwxMi45IC0xMi45LDEyLjljLTcuMSwwIC0xMi45LC01LjggLTEyLjksLTEyLjlsMCwtMzIuM2MwLC03LjEgNS44LC0xMi45IDEyLjksLTEyLjljNy4xLDAgMTIuOSw1LjggMTIuOSwxMi45bDAsMzIuM3oiIGNsYXNzPSJzdDAiLz4KICAgIDwvZz4KICAgIDxnIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z18xNiI+CiAgICAgPHBhdGggc3Ryb2tlPSJudWxsIiBpZD0ic3ZnXzE3IiBkPSJtMTYyLjA5ODI5MiwxODAuNjkzMDExYzcuMSwwIDEyLjksNS44IDEyLjksMTIuOWMwLDcuMSAtNS44LDEyLjkgLTEyLjksMTIuOWMtNy4xLDAgLTEyLjksLTUuOCAtMTIuOSwtMTIuOWwwLC0xMi45bDEyLjksMHoiIGNsYXNzPSJzdDAiLz4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTgiIGQ9Im0xNjIuMDk4MjkyLDE3NC4xOTMwMTFjLTcuMSwwIC0xMi45LC01LjggLTEyLjksLTEyLjljMCwtNy4xIDUuOCwtMTIuOSAxMi45LC0xMi45bDMyLjMsMGM3LjEsMCAxMi45LDUuOCAxMi45LDEyLjljMCw3LjEgLTUuOCwxMi45IC0xMi45LDEyLjlsLTMyLjMsMHoiIGNsYXNzPSJzdDAiLz4KICAgIDwvZz4KICAgPC9nPgogIDwvZz4KIDwvZz4KPC9zdmc+" alt="Slack logo"/></a></li><li><a href="https://stackoverflow.com/search?q=%23OpenJ9" rel="noopener noreferrer" target="_blank"><img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjRweCIgaGVpZ2h0PSIyNHB4IiB2aWV3Qm94PSIwIDAgNjUgNzAiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5zdGFja292ZXJmbG93LWxvZ288L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0iI0ZGRkZGRiIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0ic3RhY2tvdmVyZmxvdy1sb2dvIiBmaWxsLXJ1bGU9Im5vbnplcm8iPgogICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgZmlsbD0iI0ZGRkZGRiIgcG9pbnRzPSI1NC4yNDE3MjY2IDYzLjc3MDIyNjUgNTQuMjQxNzI2NiA0NSA2MSA0NSA2MSA3MCAwIDcwIDAgNDUgNi43NTgyNzMzOCA0NSA2Ljc1ODI3MzM4IDYzLjc3MDIyNjUiPjwvcG9seWdvbj4KICAgICAgICAgICAgPHBhdGggZD0iTTE0LjcwNzEwNTcsNDMuNjQyNzU2NyBMNDguMTE3ODUxLDUwLjA4NzIwMTEgTDQ5LjUzMjA2MjQsNDMuODg3NDgyNCBMMTYuMTIxMzE3MiwzNy40NDMwMzggTDE0LjcwNzEwNTcsNDMuNjQyNzU2NyBMMTQuNzA3MTA1Nyw0My42NDI3NTY3IFogTTE5LjEyNjUxNjUsMjguOTU5MjEyNCBMNTAuMDYyMzkxNyw0Mi4yNTU5Nzc1IEw1Mi44OTA4MTQ2LDM2LjU0NTcxMDMgTDIxLjk1NDkzOTMsMjMuMTY3MzY5OSBMMTkuMTI2NTE2NSwyOC45NTkyMTI0IFogTTI3LjcwMDE3MzMsMTQuOTI4MjcgTDUzLjk1MTQ3MzEsMzUuMDc3MzU1OCBMNTguMjgyNDk1NywzMC4yNjQ0MTYzIEwzMi4wMzExOTU4LDEwLjExNTMzMDUgTDI3LjcwMDE3MzMsMTQuOTI4MjcgTDI3LjcwMDE3MzMsMTQuOTI4MjcgWiBNNDQuNjcwNzEwNiwwIEwzOS4xOTA2NDEyLDMuNzUyNDYxMzIgTDU5LjUxOTkzMDcsMjkuMDQwNzg3NiBMNjUsMjUuMjg4MzI2MyBMNDQuNjcwNzEwNiwwIFogTTE0LDU4IEw0OC4xMTc4NTEsNTggTDQ4LjExNzg1MSw1MS43MTg3MDYgTDE0LDUxLjcxODcwNiBMMTQsNTggWiIgaWQ9IlNoYXBlIiBmaWxsPSIjRkZGRkZGIj48L3BhdGg+CiAgICAgICAgPC9nPgogICAgPC9nPgo8L3N2Zz4KCgo=" alt="Stack Overflow logo"/></a></li></ul></nav></header><style data-emotion-css="loin3l">.css-loin3l{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:fixed;width:100%;bottom:0;background-color:white;height:3rem;box-shadow:0 10px 30px grey;z-index:9999;}@media screen and (min-width:560px){.css-loin3l{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}}@media screen and (min-width:1000px){.css-loin3l{display:none;}}@media screen and (min-width:1366px){.css-loin3l{display:none;}}</style><nav class="css-loin3l"><style data-emotion-css="94xmc6">.css-94xmc6{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;list-style:none;-webkit-box-pack:space-evenly;-webkit-justify-content:space-evenly;-ms-flex-pack:space-evenly;justify-content:space-evenly;width:100%;}.css-94xmc6 li a{color:black;-webkit-text-decoration:none;text-decoration:none;}.css-94xmc6 li:first-of-type{margin-left:0;}.css-94xmc6 li:last-child{margin-right:0;padding-right:0;}</style><ul class="css-94xmc6"><li><a href="/openj9/">Home</a></li><li><a href="/openj9/about">About</a> </li><li><a href="https://www.eclipse.org/openj9/docs/" rel="noopener noreferrer" target="_blank">Docs</a> </li><li><a href="/openj9/performance">Performance</a> </li><li><a href="/openj9/news">News</a> </li></ul></nav><style data-emotion-css="4rgsb1">.css-4rgsb1{background-color:#F5F9FC;padding-left:10%;padding-right:10%;padding-top:5%;}</style><div class="css-4rgsb1"><style data-emotion-css="tfdfz8">.css-tfdfz8{font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.125;font-weight:700;margin-top:16px;margin-bottom:16px;font-size:36px;}</style><h1 class="css-tfdfz8">What&#x27;s new in the OpenJ9 project</h1><style data-emotion-css="18iwr88">.css-18iwr88{padding-top:40px;padding-bottom:40px;padding-left:5%;padding-right:5%;}</style><div class="css-18iwr88"><style data-emotion-css="fza3g9">.css-fza3g9{margin-bottom:40px;font-size:18px;}</style><p class="css-fza3g9">Find out what&#x27;s happening at the project. Read about the highlights of our latest release. Catch the latest blog posts from our blog site; get top tips or deep dives about key features of OpenJ9 or simply read about experiences of working in the community.</p></div></div><style data-emotion-css="1eeitbf">.css-1eeitbf{padding-left:10%;padding-right:10%;padding-bottom:3%;background-color:#F5F9FC;}</style><div class="css-1eeitbf"><style data-emotion-css="a6qjw7">.css-a6qjw7{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;background-color:white;padding-left:5%;padding-right:5%;padding-top:5%;padding-bottom:5%;border-radius:10px;}</style><div class="css-a6qjw7"><style data-emotion-css="8atqhb">.css-8atqhb{width:100%;}</style><article class="css-8atqhb"><style data-emotion-css="1v4dyq7">.css-1v4dyq7{font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.125;font-weight:700;margin-top:16px;margin-bottom:16px;font-size:28px;}</style><h2 class="css-1v4dyq7">Latest release</h2><style data-emotion-css="1sn3zc4">.css-1sn3zc4{word-wrap:break-word;min-height:10rem;margin-bottom:3rem;}@media screen and (min-width:560px){.css-1sn3zc4{min-height:13rem;}}@media screen and (min-width:1000px){.css-1sn3zc4{min-height:10rem;}}@media screen and (min-width:1366px){.css-1sn3zc4{min-height:8rem;}}.css-1sn3zc4 p{margin:1rem 0;}.css-1sn3zc4 ul{margin-left:5%;}.css-1sn3zc4 ul p{margin:0;}.css-1sn3zc4 a{color:#5DA7A3;-webkit-text-decoration:none;text-decoration:none;}.css-1sn3zc4 a:hover{font-weight:bold;-webkit-text-decoration:none;text-decoration:none;}</style><div class="css-1sn3zc4"><!--
+ */.fa,.fab,.fad,.fal,.far,.fas{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-.0667em}.fa-xs{font-size:.75em}.fa-sm{font-size:.875em}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:2.5em;padding-left:0}.fa-ul>li{position:relative}.fa-li{left:-2em;position:absolute;text-align:center;width:2em;line-height:inherit}.fa-border{border:.08em solid #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.fab.fa-pull-left,.fal.fa-pull-left,.far.fa-pull-left,.fas.fa-pull-left{margin-right:.3em}.fa.fa-pull-right,.fab.fa-pull-right,.fal.fa-pull-right,.far.fa-pull-right,.fas.fa-pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s linear infinite;animation:fa-spin 2s linear infinite}.fa-pulse{-webkit-animation:fa-spin 1s steps(8) infinite;animation:fa-spin 1s steps(8) infinite}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scaleX(-1);transform:scaleX(-1)}.fa-flip-vertical{-webkit-transform:scaleY(-1);transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical,.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{-webkit-transform:scale(-1);transform:scale(-1)}:root .fa-flip-both,:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270{-webkit-filter:none;filter:none}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-500px:before{content:"\F26E"}.fa-accessible-icon:before{content:"\F368"}.fa-accusoft:before{content:"\F369"}.fa-acquisitions-incorporated:before{content:"\F6AF"}.fa-ad:before{content:"\F641"}.fa-address-book:before{content:"\F2B9"}.fa-address-card:before{content:"\F2BB"}.fa-adjust:before{content:"\F042"}.fa-adn:before{content:"\F170"}.fa-adobe:before{content:"\F778"}.fa-adversal:before{content:"\F36A"}.fa-affiliatetheme:before{content:"\F36B"}.fa-air-freshener:before{content:"\F5D0"}.fa-airbnb:before{content:"\F834"}.fa-algolia:before{content:"\F36C"}.fa-align-center:before{content:"\F037"}.fa-align-justify:before{content:"\F039"}.fa-align-left:before{content:"\F036"}.fa-align-right:before{content:"\F038"}.fa-alipay:before{content:"\F642"}.fa-allergies:before{content:"\F461"}.fa-amazon:before{content:"\F270"}.fa-amazon-pay:before{content:"\F42C"}.fa-ambulance:before{content:"\F0F9"}.fa-american-sign-language-interpreting:before{content:"\F2A3"}.fa-amilia:before{content:"\F36D"}.fa-anchor:before{content:"\F13D"}.fa-android:before{content:"\F17B"}.fa-angellist:before{content:"\F209"}.fa-angle-double-down:before{content:"\F103"}.fa-angle-double-left:before{content:"\F100"}.fa-angle-double-right:before{content:"\F101"}.fa-angle-double-up:before{content:"\F102"}.fa-angle-down:before{content:"\F107"}.fa-angle-left:before{content:"\F104"}.fa-angle-right:before{content:"\F105"}.fa-angle-up:before{content:"\F106"}.fa-angry:before{content:"\F556"}.fa-angrycreative:before{content:"\F36E"}.fa-angular:before{content:"\F420"}.fa-ankh:before{content:"\F644"}.fa-app-store:before{content:"\F36F"}.fa-app-store-ios:before{content:"\F370"}.fa-apper:before{content:"\F371"}.fa-apple:before{content:"\F179"}.fa-apple-alt:before{content:"\F5D1"}.fa-apple-pay:before{content:"\F415"}.fa-archive:before{content:"\F187"}.fa-archway:before{content:"\F557"}.fa-arrow-alt-circle-down:before{content:"\F358"}.fa-arrow-alt-circle-left:before{content:"\F359"}.fa-arrow-alt-circle-right:before{content:"\F35A"}.fa-arrow-alt-circle-up:before{content:"\F35B"}.fa-arrow-circle-down:before{content:"\F0AB"}.fa-arrow-circle-left:before{content:"\F0A8"}.fa-arrow-circle-right:before{content:"\F0A9"}.fa-arrow-circle-up:before{content:"\F0AA"}.fa-arrow-down:before{content:"\F063"}.fa-arrow-left:before{content:"\F060"}.fa-arrow-right:before{content:"\F061"}.fa-arrow-up:before{content:"\F062"}.fa-arrows-alt:before{content:"\F0B2"}.fa-arrows-alt-h:before{content:"\F337"}.fa-arrows-alt-v:before{content:"\F338"}.fa-artstation:before{content:"\F77A"}.fa-assistive-listening-systems:before{content:"\F2A2"}.fa-asterisk:before{content:"\F069"}.fa-asymmetrik:before{content:"\F372"}.fa-at:before{content:"\F1FA"}.fa-atlas:before{content:"\F558"}.fa-atlassian:before{content:"\F77B"}.fa-atom:before{content:"\F5D2"}.fa-audible:before{content:"\F373"}.fa-audio-description:before{content:"\F29E"}.fa-autoprefixer:before{content:"\F41C"}.fa-avianex:before{content:"\F374"}.fa-aviato:before{content:"\F421"}.fa-award:before{content:"\F559"}.fa-aws:before{content:"\F375"}.fa-baby:before{content:"\F77C"}.fa-baby-carriage:before{content:"\F77D"}.fa-backspace:before{content:"\F55A"}.fa-backward:before{content:"\F04A"}.fa-bacon:before{content:"\F7E5"}.fa-bahai:before{content:"\F666"}.fa-balance-scale:before{content:"\F24E"}.fa-balance-scale-left:before{content:"\F515"}.fa-balance-scale-right:before{content:"\F516"}.fa-ban:before{content:"\F05E"}.fa-band-aid:before{content:"\F462"}.fa-bandcamp:before{content:"\F2D5"}.fa-barcode:before{content:"\F02A"}.fa-bars:before{content:"\F0C9"}.fa-baseball-ball:before{content:"\F433"}.fa-basketball-ball:before{content:"\F434"}.fa-bath:before{content:"\F2CD"}.fa-battery-empty:before{content:"\F244"}.fa-battery-full:before{content:"\F240"}.fa-battery-half:before{content:"\F242"}.fa-battery-quarter:before{content:"\F243"}.fa-battery-three-quarters:before{content:"\F241"}.fa-battle-net:before{content:"\F835"}.fa-bed:before{content:"\F236"}.fa-beer:before{content:"\F0FC"}.fa-behance:before{content:"\F1B4"}.fa-behance-square:before{content:"\F1B5"}.fa-bell:before{content:"\F0F3"}.fa-bell-slash:before{content:"\F1F6"}.fa-bezier-curve:before{content:"\F55B"}.fa-bible:before{content:"\F647"}.fa-bicycle:before{content:"\F206"}.fa-biking:before{content:"\F84A"}.fa-bimobject:before{content:"\F378"}.fa-binoculars:before{content:"\F1E5"}.fa-biohazard:before{content:"\F780"}.fa-birthday-cake:before{content:"\F1FD"}.fa-bitbucket:before{content:"\F171"}.fa-bitcoin:before{content:"\F379"}.fa-bity:before{content:"\F37A"}.fa-black-tie:before{content:"\F27E"}.fa-blackberry:before{content:"\F37B"}.fa-blender:before{content:"\F517"}.fa-blender-phone:before{content:"\F6B6"}.fa-blind:before{content:"\F29D"}.fa-blog:before{content:"\F781"}.fa-blogger:before{content:"\F37C"}.fa-blogger-b:before{content:"\F37D"}.fa-bluetooth:before{content:"\F293"}.fa-bluetooth-b:before{content:"\F294"}.fa-bold:before{content:"\F032"}.fa-bolt:before{content:"\F0E7"}.fa-bomb:before{content:"\F1E2"}.fa-bone:before{content:"\F5D7"}.fa-bong:before{content:"\F55C"}.fa-book:before{content:"\F02D"}.fa-book-dead:before{content:"\F6B7"}.fa-book-medical:before{content:"\F7E6"}.fa-book-open:before{content:"\F518"}.fa-book-reader:before{content:"\F5DA"}.fa-bookmark:before{content:"\F02E"}.fa-bootstrap:before{content:"\F836"}.fa-border-all:before{content:"\F84C"}.fa-border-none:before{content:"\F850"}.fa-border-style:before{content:"\F853"}.fa-bowling-ball:before{content:"\F436"}.fa-box:before{content:"\F466"}.fa-box-open:before{content:"\F49E"}.fa-boxes:before{content:"\F468"}.fa-braille:before{content:"\F2A1"}.fa-brain:before{content:"\F5DC"}.fa-bread-slice:before{content:"\F7EC"}.fa-briefcase:before{content:"\F0B1"}.fa-briefcase-medical:before{content:"\F469"}.fa-broadcast-tower:before{content:"\F519"}.fa-broom:before{content:"\F51A"}.fa-brush:before{content:"\F55D"}.fa-btc:before{content:"\F15A"}.fa-buffer:before{content:"\F837"}.fa-bug:before{content:"\F188"}.fa-building:before{content:"\F1AD"}.fa-bullhorn:before{content:"\F0A1"}.fa-bullseye:before{content:"\F140"}.fa-burn:before{content:"\F46A"}.fa-buromobelexperte:before{content:"\F37F"}.fa-bus:before{content:"\F207"}.fa-bus-alt:before{content:"\F55E"}.fa-business-time:before{content:"\F64A"}.fa-buy-n-large:before{content:"\F8A6"}.fa-buysellads:before{content:"\F20D"}.fa-calculator:before{content:"\F1EC"}.fa-calendar:before{content:"\F133"}.fa-calendar-alt:before{content:"\F073"}.fa-calendar-check:before{content:"\F274"}.fa-calendar-day:before{content:"\F783"}.fa-calendar-minus:before{content:"\F272"}.fa-calendar-plus:before{content:"\F271"}.fa-calendar-times:before{content:"\F273"}.fa-calendar-week:before{content:"\F784"}.fa-camera:before{content:"\F030"}.fa-camera-retro:before{content:"\F083"}.fa-campground:before{content:"\F6BB"}.fa-canadian-maple-leaf:before{content:"\F785"}.fa-candy-cane:before{content:"\F786"}.fa-cannabis:before{content:"\F55F"}.fa-capsules:before{content:"\F46B"}.fa-car:before{content:"\F1B9"}.fa-car-alt:before{content:"\F5DE"}.fa-car-battery:before{content:"\F5DF"}.fa-car-crash:before{content:"\F5E1"}.fa-car-side:before{content:"\F5E4"}.fa-caravan:before{content:"\F8FF"}.fa-caret-down:before{content:"\F0D7"}.fa-caret-left:before{content:"\F0D9"}.fa-caret-right:before{content:"\F0DA"}.fa-caret-square-down:before{content:"\F150"}.fa-caret-square-left:before{content:"\F191"}.fa-caret-square-right:before{content:"\F152"}.fa-caret-square-up:before{content:"\F151"}.fa-caret-up:before{content:"\F0D8"}.fa-carrot:before{content:"\F787"}.fa-cart-arrow-down:before{content:"\F218"}.fa-cart-plus:before{content:"\F217"}.fa-cash-register:before{content:"\F788"}.fa-cat:before{content:"\F6BE"}.fa-cc-amazon-pay:before{content:"\F42D"}.fa-cc-amex:before{content:"\F1F3"}.fa-cc-apple-pay:before{content:"\F416"}.fa-cc-diners-club:before{content:"\F24C"}.fa-cc-discover:before{content:"\F1F2"}.fa-cc-jcb:before{content:"\F24B"}.fa-cc-mastercard:before{content:"\F1F1"}.fa-cc-paypal:before{content:"\F1F4"}.fa-cc-stripe:before{content:"\F1F5"}.fa-cc-visa:before{content:"\F1F0"}.fa-centercode:before{content:"\F380"}.fa-centos:before{content:"\F789"}.fa-certificate:before{content:"\F0A3"}.fa-chair:before{content:"\F6C0"}.fa-chalkboard:before{content:"\F51B"}.fa-chalkboard-teacher:before{content:"\F51C"}.fa-charging-station:before{content:"\F5E7"}.fa-chart-area:before{content:"\F1FE"}.fa-chart-bar:before{content:"\F080"}.fa-chart-line:before{content:"\F201"}.fa-chart-pie:before{content:"\F200"}.fa-check:before{content:"\F00C"}.fa-check-circle:before{content:"\F058"}.fa-check-double:before{content:"\F560"}.fa-check-square:before{content:"\F14A"}.fa-cheese:before{content:"\F7EF"}.fa-chess:before{content:"\F439"}.fa-chess-bishop:before{content:"\F43A"}.fa-chess-board:before{content:"\F43C"}.fa-chess-king:before{content:"\F43F"}.fa-chess-knight:before{content:"\F441"}.fa-chess-pawn:before{content:"\F443"}.fa-chess-queen:before{content:"\F445"}.fa-chess-rook:before{content:"\F447"}.fa-chevron-circle-down:before{content:"\F13A"}.fa-chevron-circle-left:before{content:"\F137"}.fa-chevron-circle-right:before{content:"\F138"}.fa-chevron-circle-up:before{content:"\F139"}.fa-chevron-down:before{content:"\F078"}.fa-chevron-left:before{content:"\F053"}.fa-chevron-right:before{content:"\F054"}.fa-chevron-up:before{content:"\F077"}.fa-child:before{content:"\F1AE"}.fa-chrome:before{content:"\F268"}.fa-chromecast:before{content:"\F838"}.fa-church:before{content:"\F51D"}.fa-circle:before{content:"\F111"}.fa-circle-notch:before{content:"\F1CE"}.fa-city:before{content:"\F64F"}.fa-clinic-medical:before{content:"\F7F2"}.fa-clipboard:before{content:"\F328"}.fa-clipboard-check:before{content:"\F46C"}.fa-clipboard-list:before{content:"\F46D"}.fa-clock:before{content:"\F017"}.fa-clone:before{content:"\F24D"}.fa-closed-captioning:before{content:"\F20A"}.fa-cloud:before{content:"\F0C2"}.fa-cloud-download-alt:before{content:"\F381"}.fa-cloud-meatball:before{content:"\F73B"}.fa-cloud-moon:before{content:"\F6C3"}.fa-cloud-moon-rain:before{content:"\F73C"}.fa-cloud-rain:before{content:"\F73D"}.fa-cloud-showers-heavy:before{content:"\F740"}.fa-cloud-sun:before{content:"\F6C4"}.fa-cloud-sun-rain:before{content:"\F743"}.fa-cloud-upload-alt:before{content:"\F382"}.fa-cloudscale:before{content:"\F383"}.fa-cloudsmith:before{content:"\F384"}.fa-cloudversify:before{content:"\F385"}.fa-cocktail:before{content:"\F561"}.fa-code:before{content:"\F121"}.fa-code-branch:before{content:"\F126"}.fa-codepen:before{content:"\F1CB"}.fa-codiepie:before{content:"\F284"}.fa-coffee:before{content:"\F0F4"}.fa-cog:before{content:"\F013"}.fa-cogs:before{content:"\F085"}.fa-coins:before{content:"\F51E"}.fa-columns:before{content:"\F0DB"}.fa-comment:before{content:"\F075"}.fa-comment-alt:before{content:"\F27A"}.fa-comment-dollar:before{content:"\F651"}.fa-comment-dots:before{content:"\F4AD"}.fa-comment-medical:before{content:"\F7F5"}.fa-comment-slash:before{content:"\F4B3"}.fa-comments:before{content:"\F086"}.fa-comments-dollar:before{content:"\F653"}.fa-compact-disc:before{content:"\F51F"}.fa-compass:before{content:"\F14E"}.fa-compress:before{content:"\F066"}.fa-compress-alt:before{content:"\F422"}.fa-compress-arrows-alt:before{content:"\F78C"}.fa-concierge-bell:before{content:"\F562"}.fa-confluence:before{content:"\F78D"}.fa-connectdevelop:before{content:"\F20E"}.fa-contao:before{content:"\F26D"}.fa-cookie:before{content:"\F563"}.fa-cookie-bite:before{content:"\F564"}.fa-copy:before{content:"\F0C5"}.fa-copyright:before{content:"\F1F9"}.fa-cotton-bureau:before{content:"\F89E"}.fa-couch:before{content:"\F4B8"}.fa-cpanel:before{content:"\F388"}.fa-creative-commons:before{content:"\F25E"}.fa-creative-commons-by:before{content:"\F4E7"}.fa-creative-commons-nc:before{content:"\F4E8"}.fa-creative-commons-nc-eu:before{content:"\F4E9"}.fa-creative-commons-nc-jp:before{content:"\F4EA"}.fa-creative-commons-nd:before{content:"\F4EB"}.fa-creative-commons-pd:before{content:"\F4EC"}.fa-creative-commons-pd-alt:before{content:"\F4ED"}.fa-creative-commons-remix:before{content:"\F4EE"}.fa-creative-commons-sa:before{content:"\F4EF"}.fa-creative-commons-sampling:before{content:"\F4F0"}.fa-creative-commons-sampling-plus:before{content:"\F4F1"}.fa-creative-commons-share:before{content:"\F4F2"}.fa-creative-commons-zero:before{content:"\F4F3"}.fa-credit-card:before{content:"\F09D"}.fa-critical-role:before{content:"\F6C9"}.fa-crop:before{content:"\F125"}.fa-crop-alt:before{content:"\F565"}.fa-cross:before{content:"\F654"}.fa-crosshairs:before{content:"\F05B"}.fa-crow:before{content:"\F520"}.fa-crown:before{content:"\F521"}.fa-crutch:before{content:"\F7F7"}.fa-css3:before{content:"\F13C"}.fa-css3-alt:before{content:"\F38B"}.fa-cube:before{content:"\F1B2"}.fa-cubes:before{content:"\F1B3"}.fa-cut:before{content:"\F0C4"}.fa-cuttlefish:before{content:"\F38C"}.fa-d-and-d:before{content:"\F38D"}.fa-d-and-d-beyond:before{content:"\F6CA"}.fa-dailymotion:before{content:"\F952"}.fa-dashcube:before{content:"\F210"}.fa-database:before{content:"\F1C0"}.fa-deaf:before{content:"\F2A4"}.fa-delicious:before{content:"\F1A5"}.fa-democrat:before{content:"\F747"}.fa-deploydog:before{content:"\F38E"}.fa-deskpro:before{content:"\F38F"}.fa-desktop:before{content:"\F108"}.fa-dev:before{content:"\F6CC"}.fa-deviantart:before{content:"\F1BD"}.fa-dharmachakra:before{content:"\F655"}.fa-dhl:before{content:"\F790"}.fa-diagnoses:before{content:"\F470"}.fa-diaspora:before{content:"\F791"}.fa-dice:before{content:"\F522"}.fa-dice-d20:before{content:"\F6CF"}.fa-dice-d6:before{content:"\F6D1"}.fa-dice-five:before{content:"\F523"}.fa-dice-four:before{content:"\F524"}.fa-dice-one:before{content:"\F525"}.fa-dice-six:before{content:"\F526"}.fa-dice-three:before{content:"\F527"}.fa-dice-two:before{content:"\F528"}.fa-digg:before{content:"\F1A6"}.fa-digital-ocean:before{content:"\F391"}.fa-digital-tachograph:before{content:"\F566"}.fa-directions:before{content:"\F5EB"}.fa-discord:before{content:"\F392"}.fa-discourse:before{content:"\F393"}.fa-divide:before{content:"\F529"}.fa-dizzy:before{content:"\F567"}.fa-dna:before{content:"\F471"}.fa-dochub:before{content:"\F394"}.fa-docker:before{content:"\F395"}.fa-dog:before{content:"\F6D3"}.fa-dollar-sign:before{content:"\F155"}.fa-dolly:before{content:"\F472"}.fa-dolly-flatbed:before{content:"\F474"}.fa-donate:before{content:"\F4B9"}.fa-door-closed:before{content:"\F52A"}.fa-door-open:before{content:"\F52B"}.fa-dot-circle:before{content:"\F192"}.fa-dove:before{content:"\F4BA"}.fa-download:before{content:"\F019"}.fa-draft2digital:before{content:"\F396"}.fa-drafting-compass:before{content:"\F568"}.fa-dragon:before{content:"\F6D5"}.fa-draw-polygon:before{content:"\F5EE"}.fa-dribbble:before{content:"\F17D"}.fa-dribbble-square:before{content:"\F397"}.fa-dropbox:before{content:"\F16B"}.fa-drum:before{content:"\F569"}.fa-drum-steelpan:before{content:"\F56A"}.fa-drumstick-bite:before{content:"\F6D7"}.fa-drupal:before{content:"\F1A9"}.fa-dumbbell:before{content:"\F44B"}.fa-dumpster:before{content:"\F793"}.fa-dumpster-fire:before{content:"\F794"}.fa-dungeon:before{content:"\F6D9"}.fa-dyalog:before{content:"\F399"}.fa-earlybirds:before{content:"\F39A"}.fa-ebay:before{content:"\F4F4"}.fa-edge:before{content:"\F282"}.fa-edit:before{content:"\F044"}.fa-egg:before{content:"\F7FB"}.fa-eject:before{content:"\F052"}.fa-elementor:before{content:"\F430"}.fa-ellipsis-h:before{content:"\F141"}.fa-ellipsis-v:before{content:"\F142"}.fa-ello:before{content:"\F5F1"}.fa-ember:before{content:"\F423"}.fa-empire:before{content:"\F1D1"}.fa-envelope:before{content:"\F0E0"}.fa-envelope-open:before{content:"\F2B6"}.fa-envelope-open-text:before{content:"\F658"}.fa-envelope-square:before{content:"\F199"}.fa-envira:before{content:"\F299"}.fa-equals:before{content:"\F52C"}.fa-eraser:before{content:"\F12D"}.fa-erlang:before{content:"\F39D"}.fa-ethereum:before{content:"\F42E"}.fa-ethernet:before{content:"\F796"}.fa-etsy:before{content:"\F2D7"}.fa-euro-sign:before{content:"\F153"}.fa-evernote:before{content:"\F839"}.fa-exchange-alt:before{content:"\F362"}.fa-exclamation:before{content:"\F12A"}.fa-exclamation-circle:before{content:"\F06A"}.fa-exclamation-triangle:before{content:"\F071"}.fa-expand:before{content:"\F065"}.fa-expand-alt:before{content:"\F424"}.fa-expand-arrows-alt:before{content:"\F31E"}.fa-expeditedssl:before{content:"\F23E"}.fa-external-link-alt:before{content:"\F35D"}.fa-external-link-square-alt:before{content:"\F360"}.fa-eye:before{content:"\F06E"}.fa-eye-dropper:before{content:"\F1FB"}.fa-eye-slash:before{content:"\F070"}.fa-facebook:before{content:"\F09A"}.fa-facebook-f:before{content:"\F39E"}.fa-facebook-messenger:before{content:"\F39F"}.fa-facebook-square:before{content:"\F082"}.fa-fan:before{content:"\F863"}.fa-fantasy-flight-games:before{content:"\F6DC"}.fa-fast-backward:before{content:"\F049"}.fa-fast-forward:before{content:"\F050"}.fa-fax:before{content:"\F1AC"}.fa-feather:before{content:"\F52D"}.fa-feather-alt:before{content:"\F56B"}.fa-fedex:before{content:"\F797"}.fa-fedora:before{content:"\F798"}.fa-female:before{content:"\F182"}.fa-fighter-jet:before{content:"\F0FB"}.fa-figma:before{content:"\F799"}.fa-file:before{content:"\F15B"}.fa-file-alt:before{content:"\F15C"}.fa-file-archive:before{content:"\F1C6"}.fa-file-audio:before{content:"\F1C7"}.fa-file-code:before{content:"\F1C9"}.fa-file-contract:before{content:"\F56C"}.fa-file-csv:before{content:"\F6DD"}.fa-file-download:before{content:"\F56D"}.fa-file-excel:before{content:"\F1C3"}.fa-file-export:before{content:"\F56E"}.fa-file-image:before{content:"\F1C5"}.fa-file-import:before{content:"\F56F"}.fa-file-invoice:before{content:"\F570"}.fa-file-invoice-dollar:before{content:"\F571"}.fa-file-medical:before{content:"\F477"}.fa-file-medical-alt:before{content:"\F478"}.fa-file-pdf:before{content:"\F1C1"}.fa-file-powerpoint:before{content:"\F1C4"}.fa-file-prescription:before{content:"\F572"}.fa-file-signature:before{content:"\F573"}.fa-file-upload:before{content:"\F574"}.fa-file-video:before{content:"\F1C8"}.fa-file-word:before{content:"\F1C2"}.fa-fill:before{content:"\F575"}.fa-fill-drip:before{content:"\F576"}.fa-film:before{content:"\F008"}.fa-filter:before{content:"\F0B0"}.fa-fingerprint:before{content:"\F577"}.fa-fire:before{content:"\F06D"}.fa-fire-alt:before{content:"\F7E4"}.fa-fire-extinguisher:before{content:"\F134"}.fa-firefox:before{content:"\F269"}.fa-firefox-browser:before{content:"\F907"}.fa-first-aid:before{content:"\F479"}.fa-first-order:before{content:"\F2B0"}.fa-first-order-alt:before{content:"\F50A"}.fa-firstdraft:before{content:"\F3A1"}.fa-fish:before{content:"\F578"}.fa-fist-raised:before{content:"\F6DE"}.fa-flag:before{content:"\F024"}.fa-flag-checkered:before{content:"\F11E"}.fa-flag-usa:before{content:"\F74D"}.fa-flask:before{content:"\F0C3"}.fa-flickr:before{content:"\F16E"}.fa-flipboard:before{content:"\F44D"}.fa-flushed:before{content:"\F579"}.fa-fly:before{content:"\F417"}.fa-folder:before{content:"\F07B"}.fa-folder-minus:before{content:"\F65D"}.fa-folder-open:before{content:"\F07C"}.fa-folder-plus:before{content:"\F65E"}.fa-font:before{content:"\F031"}.fa-font-awesome:before{content:"\F2B4"}.fa-font-awesome-alt:before{content:"\F35C"}.fa-font-awesome-flag:before{content:"\F425"}.fa-font-awesome-logo-full:before{content:"\F4E6"}.fa-fonticons:before{content:"\F280"}.fa-fonticons-fi:before{content:"\F3A2"}.fa-football-ball:before{content:"\F44E"}.fa-fort-awesome:before{content:"\F286"}.fa-fort-awesome-alt:before{content:"\F3A3"}.fa-forumbee:before{content:"\F211"}.fa-forward:before{content:"\F04E"}.fa-foursquare:before{content:"\F180"}.fa-free-code-camp:before{content:"\F2C5"}.fa-freebsd:before{content:"\F3A4"}.fa-frog:before{content:"\F52E"}.fa-frown:before{content:"\F119"}.fa-frown-open:before{content:"\F57A"}.fa-fulcrum:before{content:"\F50B"}.fa-funnel-dollar:before{content:"\F662"}.fa-futbol:before{content:"\F1E3"}.fa-galactic-republic:before{content:"\F50C"}.fa-galactic-senate:before{content:"\F50D"}.fa-gamepad:before{content:"\F11B"}.fa-gas-pump:before{content:"\F52F"}.fa-gavel:before{content:"\F0E3"}.fa-gem:before{content:"\F3A5"}.fa-genderless:before{content:"\F22D"}.fa-get-pocket:before{content:"\F265"}.fa-gg:before{content:"\F260"}.fa-gg-circle:before{content:"\F261"}.fa-ghost:before{content:"\F6E2"}.fa-gift:before{content:"\F06B"}.fa-gifts:before{content:"\F79C"}.fa-git:before{content:"\F1D3"}.fa-git-alt:before{content:"\F841"}.fa-git-square:before{content:"\F1D2"}.fa-github:before{content:"\F09B"}.fa-github-alt:before{content:"\F113"}.fa-github-square:before{content:"\F092"}.fa-gitkraken:before{content:"\F3A6"}.fa-gitlab:before{content:"\F296"}.fa-gitter:before{content:"\F426"}.fa-glass-cheers:before{content:"\F79F"}.fa-glass-martini:before{content:"\F000"}.fa-glass-martini-alt:before{content:"\F57B"}.fa-glass-whiskey:before{content:"\F7A0"}.fa-glasses:before{content:"\F530"}.fa-glide:before{content:"\F2A5"}.fa-glide-g:before{content:"\F2A6"}.fa-globe:before{content:"\F0AC"}.fa-globe-africa:before{content:"\F57C"}.fa-globe-americas:before{content:"\F57D"}.fa-globe-asia:before{content:"\F57E"}.fa-globe-europe:before{content:"\F7A2"}.fa-gofore:before{content:"\F3A7"}.fa-golf-ball:before{content:"\F450"}.fa-goodreads:before{content:"\F3A8"}.fa-goodreads-g:before{content:"\F3A9"}.fa-google:before{content:"\F1A0"}.fa-google-drive:before{content:"\F3AA"}.fa-google-play:before{content:"\F3AB"}.fa-google-plus:before{content:"\F2B3"}.fa-google-plus-g:before{content:"\F0D5"}.fa-google-plus-square:before{content:"\F0D4"}.fa-google-wallet:before{content:"\F1EE"}.fa-gopuram:before{content:"\F664"}.fa-graduation-cap:before{content:"\F19D"}.fa-gratipay:before{content:"\F184"}.fa-grav:before{content:"\F2D6"}.fa-greater-than:before{content:"\F531"}.fa-greater-than-equal:before{content:"\F532"}.fa-grimace:before{content:"\F57F"}.fa-grin:before{content:"\F580"}.fa-grin-alt:before{content:"\F581"}.fa-grin-beam:before{content:"\F582"}.fa-grin-beam-sweat:before{content:"\F583"}.fa-grin-hearts:before{content:"\F584"}.fa-grin-squint:before{content:"\F585"}.fa-grin-squint-tears:before{content:"\F586"}.fa-grin-stars:before{content:"\F587"}.fa-grin-tears:before{content:"\F588"}.fa-grin-tongue:before{content:"\F589"}.fa-grin-tongue-squint:before{content:"\F58A"}.fa-grin-tongue-wink:before{content:"\F58B"}.fa-grin-wink:before{content:"\F58C"}.fa-grip-horizontal:before{content:"\F58D"}.fa-grip-lines:before{content:"\F7A4"}.fa-grip-lines-vertical:before{content:"\F7A5"}.fa-grip-vertical:before{content:"\F58E"}.fa-gripfire:before{content:"\F3AC"}.fa-grunt:before{content:"\F3AD"}.fa-guitar:before{content:"\F7A6"}.fa-gulp:before{content:"\F3AE"}.fa-h-square:before{content:"\F0FD"}.fa-hacker-news:before{content:"\F1D4"}.fa-hacker-news-square:before{content:"\F3AF"}.fa-hackerrank:before{content:"\F5F7"}.fa-hamburger:before{content:"\F805"}.fa-hammer:before{content:"\F6E3"}.fa-hamsa:before{content:"\F665"}.fa-hand-holding:before{content:"\F4BD"}.fa-hand-holding-heart:before{content:"\F4BE"}.fa-hand-holding-usd:before{content:"\F4C0"}.fa-hand-lizard:before{content:"\F258"}.fa-hand-middle-finger:before{content:"\F806"}.fa-hand-paper:before{content:"\F256"}.fa-hand-peace:before{content:"\F25B"}.fa-hand-point-down:before{content:"\F0A7"}.fa-hand-point-left:before{content:"\F0A5"}.fa-hand-point-right:before{content:"\F0A4"}.fa-hand-point-up:before{content:"\F0A6"}.fa-hand-pointer:before{content:"\F25A"}.fa-hand-rock:before{content:"\F255"}.fa-hand-scissors:before{content:"\F257"}.fa-hand-spock:before{content:"\F259"}.fa-hands:before{content:"\F4C2"}.fa-hands-helping:before{content:"\F4C4"}.fa-handshake:before{content:"\F2B5"}.fa-hanukiah:before{content:"\F6E6"}.fa-hard-hat:before{content:"\F807"}.fa-hashtag:before{content:"\F292"}.fa-hat-cowboy:before{content:"\F8C0"}.fa-hat-cowboy-side:before{content:"\F8C1"}.fa-hat-wizard:before{content:"\F6E8"}.fa-hdd:before{content:"\F0A0"}.fa-heading:before{content:"\F1DC"}.fa-headphones:before{content:"\F025"}.fa-headphones-alt:before{content:"\F58F"}.fa-headset:before{content:"\F590"}.fa-heart:before{content:"\F004"}.fa-heart-broken:before{content:"\F7A9"}.fa-heartbeat:before{content:"\F21E"}.fa-helicopter:before{content:"\F533"}.fa-highlighter:before{content:"\F591"}.fa-hiking:before{content:"\F6EC"}.fa-hippo:before{content:"\F6ED"}.fa-hips:before{content:"\F452"}.fa-hire-a-helper:before{content:"\F3B0"}.fa-history:before{content:"\F1DA"}.fa-hockey-puck:before{content:"\F453"}.fa-holly-berry:before{content:"\F7AA"}.fa-home:before{content:"\F015"}.fa-hooli:before{content:"\F427"}.fa-hornbill:before{content:"\F592"}.fa-horse:before{content:"\F6F0"}.fa-horse-head:before{content:"\F7AB"}.fa-hospital:before{content:"\F0F8"}.fa-hospital-alt:before{content:"\F47D"}.fa-hospital-symbol:before{content:"\F47E"}.fa-hot-tub:before{content:"\F593"}.fa-hotdog:before{content:"\F80F"}.fa-hotel:before{content:"\F594"}.fa-hotjar:before{content:"\F3B1"}.fa-hourglass:before{content:"\F254"}.fa-hourglass-end:before{content:"\F253"}.fa-hourglass-half:before{content:"\F252"}.fa-hourglass-start:before{content:"\F251"}.fa-house-damage:before{content:"\F6F1"}.fa-houzz:before{content:"\F27C"}.fa-hryvnia:before{content:"\F6F2"}.fa-html5:before{content:"\F13B"}.fa-hubspot:before{content:"\F3B2"}.fa-i-cursor:before{content:"\F246"}.fa-ice-cream:before{content:"\F810"}.fa-icicles:before{content:"\F7AD"}.fa-icons:before{content:"\F86D"}.fa-id-badge:before{content:"\F2C1"}.fa-id-card:before{content:"\F2C2"}.fa-id-card-alt:before{content:"\F47F"}.fa-ideal:before{content:"\F913"}.fa-igloo:before{content:"\F7AE"}.fa-image:before{content:"\F03E"}.fa-images:before{content:"\F302"}.fa-imdb:before{content:"\F2D8"}.fa-inbox:before{content:"\F01C"}.fa-indent:before{content:"\F03C"}.fa-industry:before{content:"\F275"}.fa-infinity:before{content:"\F534"}.fa-info:before{content:"\F129"}.fa-info-circle:before{content:"\F05A"}.fa-instagram:before{content:"\F16D"}.fa-instagram-square:before{content:"\F955"}.fa-intercom:before{content:"\F7AF"}.fa-internet-explorer:before{content:"\F26B"}.fa-invision:before{content:"\F7B0"}.fa-ioxhost:before{content:"\F208"}.fa-italic:before{content:"\F033"}.fa-itch-io:before{content:"\F83A"}.fa-itunes:before{content:"\F3B4"}.fa-itunes-note:before{content:"\F3B5"}.fa-java:before{content:"\F4E4"}.fa-jedi:before{content:"\F669"}.fa-jedi-order:before{content:"\F50E"}.fa-jenkins:before{content:"\F3B6"}.fa-jira:before{content:"\F7B1"}.fa-joget:before{content:"\F3B7"}.fa-joint:before{content:"\F595"}.fa-joomla:before{content:"\F1AA"}.fa-journal-whills:before{content:"\F66A"}.fa-js:before{content:"\F3B8"}.fa-js-square:before{content:"\F3B9"}.fa-jsfiddle:before{content:"\F1CC"}.fa-kaaba:before{content:"\F66B"}.fa-kaggle:before{content:"\F5FA"}.fa-key:before{content:"\F084"}.fa-keybase:before{content:"\F4F5"}.fa-keyboard:before{content:"\F11C"}.fa-keycdn:before{content:"\F3BA"}.fa-khanda:before{content:"\F66D"}.fa-kickstarter:before{content:"\F3BB"}.fa-kickstarter-k:before{content:"\F3BC"}.fa-kiss:before{content:"\F596"}.fa-kiss-beam:before{content:"\F597"}.fa-kiss-wink-heart:before{content:"\F598"}.fa-kiwi-bird:before{content:"\F535"}.fa-korvue:before{content:"\F42F"}.fa-landmark:before{content:"\F66F"}.fa-language:before{content:"\F1AB"}.fa-laptop:before{content:"\F109"}.fa-laptop-code:before{content:"\F5FC"}.fa-laptop-medical:before{content:"\F812"}.fa-laravel:before{content:"\F3BD"}.fa-lastfm:before{content:"\F202"}.fa-lastfm-square:before{content:"\F203"}.fa-laugh:before{content:"\F599"}.fa-laugh-beam:before{content:"\F59A"}.fa-laugh-squint:before{content:"\F59B"}.fa-laugh-wink:before{content:"\F59C"}.fa-layer-group:before{content:"\F5FD"}.fa-leaf:before{content:"\F06C"}.fa-leanpub:before{content:"\F212"}.fa-lemon:before{content:"\F094"}.fa-less:before{content:"\F41D"}.fa-less-than:before{content:"\F536"}.fa-less-than-equal:before{content:"\F537"}.fa-level-down-alt:before{content:"\F3BE"}.fa-level-up-alt:before{content:"\F3BF"}.fa-life-ring:before{content:"\F1CD"}.fa-lightbulb:before{content:"\F0EB"}.fa-line:before{content:"\F3C0"}.fa-link:before{content:"\F0C1"}.fa-linkedin:before{content:"\F08C"}.fa-linkedin-in:before{content:"\F0E1"}.fa-linode:before{content:"\F2B8"}.fa-linux:before{content:"\F17C"}.fa-lira-sign:before{content:"\F195"}.fa-list:before{content:"\F03A"}.fa-list-alt:before{content:"\F022"}.fa-list-ol:before{content:"\F0CB"}.fa-list-ul:before{content:"\F0CA"}.fa-location-arrow:before{content:"\F124"}.fa-lock:before{content:"\F023"}.fa-lock-open:before{content:"\F3C1"}.fa-long-arrow-alt-down:before{content:"\F309"}.fa-long-arrow-alt-left:before{content:"\F30A"}.fa-long-arrow-alt-right:before{content:"\F30B"}.fa-long-arrow-alt-up:before{content:"\F30C"}.fa-low-vision:before{content:"\F2A8"}.fa-luggage-cart:before{content:"\F59D"}.fa-lyft:before{content:"\F3C3"}.fa-magento:before{content:"\F3C4"}.fa-magic:before{content:"\F0D0"}.fa-magnet:before{content:"\F076"}.fa-mail-bulk:before{content:"\F674"}.fa-mailchimp:before{content:"\F59E"}.fa-male:before{content:"\F183"}.fa-mandalorian:before{content:"\F50F"}.fa-map:before{content:"\F279"}.fa-map-marked:before{content:"\F59F"}.fa-map-marked-alt:before{content:"\F5A0"}.fa-map-marker:before{content:"\F041"}.fa-map-marker-alt:before{content:"\F3C5"}.fa-map-pin:before{content:"\F276"}.fa-map-signs:before{content:"\F277"}.fa-markdown:before{content:"\F60F"}.fa-marker:before{content:"\F5A1"}.fa-mars:before{content:"\F222"}.fa-mars-double:before{content:"\F227"}.fa-mars-stroke:before{content:"\F229"}.fa-mars-stroke-h:before{content:"\F22B"}.fa-mars-stroke-v:before{content:"\F22A"}.fa-mask:before{content:"\F6FA"}.fa-mastodon:before{content:"\F4F6"}.fa-maxcdn:before{content:"\F136"}.fa-mdb:before{content:"\F8CA"}.fa-medal:before{content:"\F5A2"}.fa-medapps:before{content:"\F3C6"}.fa-medium:before{content:"\F23A"}.fa-medium-m:before{content:"\F3C7"}.fa-medkit:before{content:"\F0FA"}.fa-medrt:before{content:"\F3C8"}.fa-meetup:before{content:"\F2E0"}.fa-megaport:before{content:"\F5A3"}.fa-meh:before{content:"\F11A"}.fa-meh-blank:before{content:"\F5A4"}.fa-meh-rolling-eyes:before{content:"\F5A5"}.fa-memory:before{content:"\F538"}.fa-mendeley:before{content:"\F7B3"}.fa-menorah:before{content:"\F676"}.fa-mercury:before{content:"\F223"}.fa-meteor:before{content:"\F753"}.fa-microblog:before{content:"\F91A"}.fa-microchip:before{content:"\F2DB"}.fa-microphone:before{content:"\F130"}.fa-microphone-alt:before{content:"\F3C9"}.fa-microphone-alt-slash:before{content:"\F539"}.fa-microphone-slash:before{content:"\F131"}.fa-microscope:before{content:"\F610"}.fa-microsoft:before{content:"\F3CA"}.fa-minus:before{content:"\F068"}.fa-minus-circle:before{content:"\F056"}.fa-minus-square:before{content:"\F146"}.fa-mitten:before{content:"\F7B5"}.fa-mix:before{content:"\F3CB"}.fa-mixcloud:before{content:"\F289"}.fa-mixer:before{content:"\F956"}.fa-mizuni:before{content:"\F3CC"}.fa-mobile:before{content:"\F10B"}.fa-mobile-alt:before{content:"\F3CD"}.fa-modx:before{content:"\F285"}.fa-monero:before{content:"\F3D0"}.fa-money-bill:before{content:"\F0D6"}.fa-money-bill-alt:before{content:"\F3D1"}.fa-money-bill-wave:before{content:"\F53A"}.fa-money-bill-wave-alt:before{content:"\F53B"}.fa-money-check:before{content:"\F53C"}.fa-money-check-alt:before{content:"\F53D"}.fa-monument:before{content:"\F5A6"}.fa-moon:before{content:"\F186"}.fa-mortar-pestle:before{content:"\F5A7"}.fa-mosque:before{content:"\F678"}.fa-motorcycle:before{content:"\F21C"}.fa-mountain:before{content:"\F6FC"}.fa-mouse:before{content:"\F8CC"}.fa-mouse-pointer:before{content:"\F245"}.fa-mug-hot:before{content:"\F7B6"}.fa-music:before{content:"\F001"}.fa-napster:before{content:"\F3D2"}.fa-neos:before{content:"\F612"}.fa-network-wired:before{content:"\F6FF"}.fa-neuter:before{content:"\F22C"}.fa-newspaper:before{content:"\F1EA"}.fa-nimblr:before{content:"\F5A8"}.fa-node:before{content:"\F419"}.fa-node-js:before{content:"\F3D3"}.fa-not-equal:before{content:"\F53E"}.fa-notes-medical:before{content:"\F481"}.fa-npm:before{content:"\F3D4"}.fa-ns8:before{content:"\F3D5"}.fa-nutritionix:before{content:"\F3D6"}.fa-object-group:before{content:"\F247"}.fa-object-ungroup:before{content:"\F248"}.fa-odnoklassniki:before{content:"\F263"}.fa-odnoklassniki-square:before{content:"\F264"}.fa-oil-can:before{content:"\F613"}.fa-old-republic:before{content:"\F510"}.fa-om:before{content:"\F679"}.fa-opencart:before{content:"\F23D"}.fa-openid:before{content:"\F19B"}.fa-opera:before{content:"\F26A"}.fa-optin-monster:before{content:"\F23C"}.fa-orcid:before{content:"\F8D2"}.fa-osi:before{content:"\F41A"}.fa-otter:before{content:"\F700"}.fa-outdent:before{content:"\F03B"}.fa-page4:before{content:"\F3D7"}.fa-pagelines:before{content:"\F18C"}.fa-pager:before{content:"\F815"}.fa-paint-brush:before{content:"\F1FC"}.fa-paint-roller:before{content:"\F5AA"}.fa-palette:before{content:"\F53F"}.fa-palfed:before{content:"\F3D8"}.fa-pallet:before{content:"\F482"}.fa-paper-plane:before{content:"\F1D8"}.fa-paperclip:before{content:"\F0C6"}.fa-parachute-box:before{content:"\F4CD"}.fa-paragraph:before{content:"\F1DD"}.fa-parking:before{content:"\F540"}.fa-passport:before{content:"\F5AB"}.fa-pastafarianism:before{content:"\F67B"}.fa-paste:before{content:"\F0EA"}.fa-patreon:before{content:"\F3D9"}.fa-pause:before{content:"\F04C"}.fa-pause-circle:before{content:"\F28B"}.fa-paw:before{content:"\F1B0"}.fa-paypal:before{content:"\F1ED"}.fa-peace:before{content:"\F67C"}.fa-pen:before{content:"\F304"}.fa-pen-alt:before{content:"\F305"}.fa-pen-fancy:before{content:"\F5AC"}.fa-pen-nib:before{content:"\F5AD"}.fa-pen-square:before{content:"\F14B"}.fa-pencil-alt:before{content:"\F303"}.fa-pencil-ruler:before{content:"\F5AE"}.fa-penny-arcade:before{content:"\F704"}.fa-people-carry:before{content:"\F4CE"}.fa-pepper-hot:before{content:"\F816"}.fa-percent:before{content:"\F295"}.fa-percentage:before{content:"\F541"}.fa-periscope:before{content:"\F3DA"}.fa-person-booth:before{content:"\F756"}.fa-phabricator:before{content:"\F3DB"}.fa-phoenix-framework:before{content:"\F3DC"}.fa-phoenix-squadron:before{content:"\F511"}.fa-phone:before{content:"\F095"}.fa-phone-alt:before{content:"\F879"}.fa-phone-slash:before{content:"\F3DD"}.fa-phone-square:before{content:"\F098"}.fa-phone-square-alt:before{content:"\F87B"}.fa-phone-volume:before{content:"\F2A0"}.fa-photo-video:before{content:"\F87C"}.fa-php:before{content:"\F457"}.fa-pied-piper:before{content:"\F2AE"}.fa-pied-piper-alt:before{content:"\F1A8"}.fa-pied-piper-hat:before{content:"\F4E5"}.fa-pied-piper-pp:before{content:"\F1A7"}.fa-pied-piper-square:before{content:"\F91E"}.fa-piggy-bank:before{content:"\F4D3"}.fa-pills:before{content:"\F484"}.fa-pinterest:before{content:"\F0D2"}.fa-pinterest-p:before{content:"\F231"}.fa-pinterest-square:before{content:"\F0D3"}.fa-pizza-slice:before{content:"\F818"}.fa-place-of-worship:before{content:"\F67F"}.fa-plane:before{content:"\F072"}.fa-plane-arrival:before{content:"\F5AF"}.fa-plane-departure:before{content:"\F5B0"}.fa-play:before{content:"\F04B"}.fa-play-circle:before{content:"\F144"}.fa-playstation:before{content:"\F3DF"}.fa-plug:before{content:"\F1E6"}.fa-plus:before{content:"\F067"}.fa-plus-circle:before{content:"\F055"}.fa-plus-square:before{content:"\F0FE"}.fa-podcast:before{content:"\F2CE"}.fa-poll:before{content:"\F681"}.fa-poll-h:before{content:"\F682"}.fa-poo:before{content:"\F2FE"}.fa-poo-storm:before{content:"\F75A"}.fa-poop:before{content:"\F619"}.fa-portrait:before{content:"\F3E0"}.fa-pound-sign:before{content:"\F154"}.fa-power-off:before{content:"\F011"}.fa-pray:before{content:"\F683"}.fa-praying-hands:before{content:"\F684"}.fa-prescription:before{content:"\F5B1"}.fa-prescription-bottle:before{content:"\F485"}.fa-prescription-bottle-alt:before{content:"\F486"}.fa-print:before{content:"\F02F"}.fa-procedures:before{content:"\F487"}.fa-product-hunt:before{content:"\F288"}.fa-project-diagram:before{content:"\F542"}.fa-pushed:before{content:"\F3E1"}.fa-puzzle-piece:before{content:"\F12E"}.fa-python:before{content:"\F3E2"}.fa-qq:before{content:"\F1D6"}.fa-qrcode:before{content:"\F029"}.fa-question:before{content:"\F128"}.fa-question-circle:before{content:"\F059"}.fa-quidditch:before{content:"\F458"}.fa-quinscape:before{content:"\F459"}.fa-quora:before{content:"\F2C4"}.fa-quote-left:before{content:"\F10D"}.fa-quote-right:before{content:"\F10E"}.fa-quran:before{content:"\F687"}.fa-r-project:before{content:"\F4F7"}.fa-radiation:before{content:"\F7B9"}.fa-radiation-alt:before{content:"\F7BA"}.fa-rainbow:before{content:"\F75B"}.fa-random:before{content:"\F074"}.fa-raspberry-pi:before{content:"\F7BB"}.fa-ravelry:before{content:"\F2D9"}.fa-react:before{content:"\F41B"}.fa-reacteurope:before{content:"\F75D"}.fa-readme:before{content:"\F4D5"}.fa-rebel:before{content:"\F1D0"}.fa-receipt:before{content:"\F543"}.fa-record-vinyl:before{content:"\F8D9"}.fa-recycle:before{content:"\F1B8"}.fa-red-river:before{content:"\F3E3"}.fa-reddit:before{content:"\F1A1"}.fa-reddit-alien:before{content:"\F281"}.fa-reddit-square:before{content:"\F1A2"}.fa-redhat:before{content:"\F7BC"}.fa-redo:before{content:"\F01E"}.fa-redo-alt:before{content:"\F2F9"}.fa-registered:before{content:"\F25D"}.fa-remove-format:before{content:"\F87D"}.fa-renren:before{content:"\F18B"}.fa-reply:before{content:"\F3E5"}.fa-reply-all:before{content:"\F122"}.fa-replyd:before{content:"\F3E6"}.fa-republican:before{content:"\F75E"}.fa-researchgate:before{content:"\F4F8"}.fa-resolving:before{content:"\F3E7"}.fa-restroom:before{content:"\F7BD"}.fa-retweet:before{content:"\F079"}.fa-rev:before{content:"\F5B2"}.fa-ribbon:before{content:"\F4D6"}.fa-ring:before{content:"\F70B"}.fa-road:before{content:"\F018"}.fa-robot:before{content:"\F544"}.fa-rocket:before{content:"\F135"}.fa-rocketchat:before{content:"\F3E8"}.fa-rockrms:before{content:"\F3E9"}.fa-route:before{content:"\F4D7"}.fa-rss:before{content:"\F09E"}.fa-rss-square:before{content:"\F143"}.fa-ruble-sign:before{content:"\F158"}.fa-ruler:before{content:"\F545"}.fa-ruler-combined:before{content:"\F546"}.fa-ruler-horizontal:before{content:"\F547"}.fa-ruler-vertical:before{content:"\F548"}.fa-running:before{content:"\F70C"}.fa-rupee-sign:before{content:"\F156"}.fa-sad-cry:before{content:"\F5B3"}.fa-sad-tear:before{content:"\F5B4"}.fa-safari:before{content:"\F267"}.fa-salesforce:before{content:"\F83B"}.fa-sass:before{content:"\F41E"}.fa-satellite:before{content:"\F7BF"}.fa-satellite-dish:before{content:"\F7C0"}.fa-save:before{content:"\F0C7"}.fa-schlix:before{content:"\F3EA"}.fa-school:before{content:"\F549"}.fa-screwdriver:before{content:"\F54A"}.fa-scribd:before{content:"\F28A"}.fa-scroll:before{content:"\F70E"}.fa-sd-card:before{content:"\F7C2"}.fa-search:before{content:"\F002"}.fa-search-dollar:before{content:"\F688"}.fa-search-location:before{content:"\F689"}.fa-search-minus:before{content:"\F010"}.fa-search-plus:before{content:"\F00E"}.fa-searchengin:before{content:"\F3EB"}.fa-seedling:before{content:"\F4D8"}.fa-sellcast:before{content:"\F2DA"}.fa-sellsy:before{content:"\F213"}.fa-server:before{content:"\F233"}.fa-servicestack:before{content:"\F3EC"}.fa-shapes:before{content:"\F61F"}.fa-share:before{content:"\F064"}.fa-share-alt:before{content:"\F1E0"}.fa-share-alt-square:before{content:"\F1E1"}.fa-share-square:before{content:"\F14D"}.fa-shekel-sign:before{content:"\F20B"}.fa-shield-alt:before{content:"\F3ED"}.fa-ship:before{content:"\F21A"}.fa-shipping-fast:before{content:"\F48B"}.fa-shirtsinbulk:before{content:"\F214"}.fa-shoe-prints:before{content:"\F54B"}.fa-shopify:before{content:"\F957"}.fa-shopping-bag:before{content:"\F290"}.fa-shopping-basket:before{content:"\F291"}.fa-shopping-cart:before{content:"\F07A"}.fa-shopware:before{content:"\F5B5"}.fa-shower:before{content:"\F2CC"}.fa-shuttle-van:before{content:"\F5B6"}.fa-sign:before{content:"\F4D9"}.fa-sign-in-alt:before{content:"\F2F6"}.fa-sign-language:before{content:"\F2A7"}.fa-sign-out-alt:before{content:"\F2F5"}.fa-signal:before{content:"\F012"}.fa-signature:before{content:"\F5B7"}.fa-sim-card:before{content:"\F7C4"}.fa-simplybuilt:before{content:"\F215"}.fa-sistrix:before{content:"\F3EE"}.fa-sitemap:before{content:"\F0E8"}.fa-sith:before{content:"\F512"}.fa-skating:before{content:"\F7C5"}.fa-sketch:before{content:"\F7C6"}.fa-skiing:before{content:"\F7C9"}.fa-skiing-nordic:before{content:"\F7CA"}.fa-skull:before{content:"\F54C"}.fa-skull-crossbones:before{content:"\F714"}.fa-skyatlas:before{content:"\F216"}.fa-skype:before{content:"\F17E"}.fa-slack:before{content:"\F198"}.fa-slack-hash:before{content:"\F3EF"}.fa-slash:before{content:"\F715"}.fa-sleigh:before{content:"\F7CC"}.fa-sliders-h:before{content:"\F1DE"}.fa-slideshare:before{content:"\F1E7"}.fa-smile:before{content:"\F118"}.fa-smile-beam:before{content:"\F5B8"}.fa-smile-wink:before{content:"\F4DA"}.fa-smog:before{content:"\F75F"}.fa-smoking:before{content:"\F48D"}.fa-smoking-ban:before{content:"\F54D"}.fa-sms:before{content:"\F7CD"}.fa-snapchat:before{content:"\F2AB"}.fa-snapchat-ghost:before{content:"\F2AC"}.fa-snapchat-square:before{content:"\F2AD"}.fa-snowboarding:before{content:"\F7CE"}.fa-snowflake:before{content:"\F2DC"}.fa-snowman:before{content:"\F7D0"}.fa-snowplow:before{content:"\F7D2"}.fa-socks:before{content:"\F696"}.fa-solar-panel:before{content:"\F5BA"}.fa-sort:before{content:"\F0DC"}.fa-sort-alpha-down:before{content:"\F15D"}.fa-sort-alpha-down-alt:before{content:"\F881"}.fa-sort-alpha-up:before{content:"\F15E"}.fa-sort-alpha-up-alt:before{content:"\F882"}.fa-sort-amount-down:before{content:"\F160"}.fa-sort-amount-down-alt:before{content:"\F884"}.fa-sort-amount-up:before{content:"\F161"}.fa-sort-amount-up-alt:before{content:"\F885"}.fa-sort-down:before{content:"\F0DD"}.fa-sort-numeric-down:before{content:"\F162"}.fa-sort-numeric-down-alt:before{content:"\F886"}.fa-sort-numeric-up:before{content:"\F163"}.fa-sort-numeric-up-alt:before{content:"\F887"}.fa-sort-up:before{content:"\F0DE"}.fa-soundcloud:before{content:"\F1BE"}.fa-sourcetree:before{content:"\F7D3"}.fa-spa:before{content:"\F5BB"}.fa-space-shuttle:before{content:"\F197"}.fa-speakap:before{content:"\F3F3"}.fa-speaker-deck:before{content:"\F83C"}.fa-spell-check:before{content:"\F891"}.fa-spider:before{content:"\F717"}.fa-spinner:before{content:"\F110"}.fa-splotch:before{content:"\F5BC"}.fa-spotify:before{content:"\F1BC"}.fa-spray-can:before{content:"\F5BD"}.fa-square:before{content:"\F0C8"}.fa-square-full:before{content:"\F45C"}.fa-square-root-alt:before{content:"\F698"}.fa-squarespace:before{content:"\F5BE"}.fa-stack-exchange:before{content:"\F18D"}.fa-stack-overflow:before{content:"\F16C"}.fa-stackpath:before{content:"\F842"}.fa-stamp:before{content:"\F5BF"}.fa-star:before{content:"\F005"}.fa-star-and-crescent:before{content:"\F699"}.fa-star-half:before{content:"\F089"}.fa-star-half-alt:before{content:"\F5C0"}.fa-star-of-david:before{content:"\F69A"}.fa-star-of-life:before{content:"\F621"}.fa-staylinked:before{content:"\F3F5"}.fa-steam:before{content:"\F1B6"}.fa-steam-square:before{content:"\F1B7"}.fa-steam-symbol:before{content:"\F3F6"}.fa-step-backward:before{content:"\F048"}.fa-step-forward:before{content:"\F051"}.fa-stethoscope:before{content:"\F0F1"}.fa-sticker-mule:before{content:"\F3F7"}.fa-sticky-note:before{content:"\F249"}.fa-stop:before{content:"\F04D"}.fa-stop-circle:before{content:"\F28D"}.fa-stopwatch:before{content:"\F2F2"}.fa-store:before{content:"\F54E"}.fa-store-alt:before{content:"\F54F"}.fa-strava:before{content:"\F428"}.fa-stream:before{content:"\F550"}.fa-street-view:before{content:"\F21D"}.fa-strikethrough:before{content:"\F0CC"}.fa-stripe:before{content:"\F429"}.fa-stripe-s:before{content:"\F42A"}.fa-stroopwafel:before{content:"\F551"}.fa-studiovinari:before{content:"\F3F8"}.fa-stumbleupon:before{content:"\F1A4"}.fa-stumbleupon-circle:before{content:"\F1A3"}.fa-subscript:before{content:"\F12C"}.fa-subway:before{content:"\F239"}.fa-suitcase:before{content:"\F0F2"}.fa-suitcase-rolling:before{content:"\F5C1"}.fa-sun:before{content:"\F185"}.fa-superpowers:before{content:"\F2DD"}.fa-superscript:before{content:"\F12B"}.fa-supple:before{content:"\F3F9"}.fa-surprise:before{content:"\F5C2"}.fa-suse:before{content:"\F7D6"}.fa-swatchbook:before{content:"\F5C3"}.fa-swift:before{content:"\F8E1"}.fa-swimmer:before{content:"\F5C4"}.fa-swimming-pool:before{content:"\F5C5"}.fa-symfony:before{content:"\F83D"}.fa-synagogue:before{content:"\F69B"}.fa-sync:before{content:"\F021"}.fa-sync-alt:before{content:"\F2F1"}.fa-syringe:before{content:"\F48E"}.fa-table:before{content:"\F0CE"}.fa-table-tennis:before{content:"\F45D"}.fa-tablet:before{content:"\F10A"}.fa-tablet-alt:before{content:"\F3FA"}.fa-tablets:before{content:"\F490"}.fa-tachometer-alt:before{content:"\F3FD"}.fa-tag:before{content:"\F02B"}.fa-tags:before{content:"\F02C"}.fa-tape:before{content:"\F4DB"}.fa-tasks:before{content:"\F0AE"}.fa-taxi:before{content:"\F1BA"}.fa-teamspeak:before{content:"\F4F9"}.fa-teeth:before{content:"\F62E"}.fa-teeth-open:before{content:"\F62F"}.fa-telegram:before{content:"\F2C6"}.fa-telegram-plane:before{content:"\F3FE"}.fa-temperature-high:before{content:"\F769"}.fa-temperature-low:before{content:"\F76B"}.fa-tencent-weibo:before{content:"\F1D5"}.fa-tenge:before{content:"\F7D7"}.fa-terminal:before{content:"\F120"}.fa-text-height:before{content:"\F034"}.fa-text-width:before{content:"\F035"}.fa-th:before{content:"\F00A"}.fa-th-large:before{content:"\F009"}.fa-th-list:before{content:"\F00B"}.fa-the-red-yeti:before{content:"\F69D"}.fa-theater-masks:before{content:"\F630"}.fa-themeco:before{content:"\F5C6"}.fa-themeisle:before{content:"\F2B2"}.fa-thermometer:before{content:"\F491"}.fa-thermometer-empty:before{content:"\F2CB"}.fa-thermometer-full:before{content:"\F2C7"}.fa-thermometer-half:before{content:"\F2C9"}.fa-thermometer-quarter:before{content:"\F2CA"}.fa-thermometer-three-quarters:before{content:"\F2C8"}.fa-think-peaks:before{content:"\F731"}.fa-thumbs-down:before{content:"\F165"}.fa-thumbs-up:before{content:"\F164"}.fa-thumbtack:before{content:"\F08D"}.fa-ticket-alt:before{content:"\F3FF"}.fa-times:before{content:"\F00D"}.fa-times-circle:before{content:"\F057"}.fa-tint:before{content:"\F043"}.fa-tint-slash:before{content:"\F5C7"}.fa-tired:before{content:"\F5C8"}.fa-toggle-off:before{content:"\F204"}.fa-toggle-on:before{content:"\F205"}.fa-toilet:before{content:"\F7D8"}.fa-toilet-paper:before{content:"\F71E"}.fa-toolbox:before{content:"\F552"}.fa-tools:before{content:"\F7D9"}.fa-tooth:before{content:"\F5C9"}.fa-torah:before{content:"\F6A0"}.fa-torii-gate:before{content:"\F6A1"}.fa-tractor:before{content:"\F722"}.fa-trade-federation:before{content:"\F513"}.fa-trademark:before{content:"\F25C"}.fa-traffic-light:before{content:"\F637"}.fa-trailer:before{content:"\F941"}.fa-train:before{content:"\F238"}.fa-tram:before{content:"\F7DA"}.fa-transgender:before{content:"\F224"}.fa-transgender-alt:before{content:"\F225"}.fa-trash:before{content:"\F1F8"}.fa-trash-alt:before{content:"\F2ED"}.fa-trash-restore:before{content:"\F829"}.fa-trash-restore-alt:before{content:"\F82A"}.fa-tree:before{content:"\F1BB"}.fa-trello:before{content:"\F181"}.fa-tripadvisor:before{content:"\F262"}.fa-trophy:before{content:"\F091"}.fa-truck:before{content:"\F0D1"}.fa-truck-loading:before{content:"\F4DE"}.fa-truck-monster:before{content:"\F63B"}.fa-truck-moving:before{content:"\F4DF"}.fa-truck-pickup:before{content:"\F63C"}.fa-tshirt:before{content:"\F553"}.fa-tty:before{content:"\F1E4"}.fa-tumblr:before{content:"\F173"}.fa-tumblr-square:before{content:"\F174"}.fa-tv:before{content:"\F26C"}.fa-twitch:before{content:"\F1E8"}.fa-twitter:before{content:"\F099"}.fa-twitter-square:before{content:"\F081"}.fa-typo3:before{content:"\F42B"}.fa-uber:before{content:"\F402"}.fa-ubuntu:before{content:"\F7DF"}.fa-uikit:before{content:"\F403"}.fa-umbraco:before{content:"\F8E8"}.fa-umbrella:before{content:"\F0E9"}.fa-umbrella-beach:before{content:"\F5CA"}.fa-underline:before{content:"\F0CD"}.fa-undo:before{content:"\F0E2"}.fa-undo-alt:before{content:"\F2EA"}.fa-uniregistry:before{content:"\F404"}.fa-unity:before{content:"\F949"}.fa-universal-access:before{content:"\F29A"}.fa-university:before{content:"\F19C"}.fa-unlink:before{content:"\F127"}.fa-unlock:before{content:"\F09C"}.fa-unlock-alt:before{content:"\F13E"}.fa-untappd:before{content:"\F405"}.fa-upload:before{content:"\F093"}.fa-ups:before{content:"\F7E0"}.fa-usb:before{content:"\F287"}.fa-user:before{content:"\F007"}.fa-user-alt:before{content:"\F406"}.fa-user-alt-slash:before{content:"\F4FA"}.fa-user-astronaut:before{content:"\F4FB"}.fa-user-check:before{content:"\F4FC"}.fa-user-circle:before{content:"\F2BD"}.fa-user-clock:before{content:"\F4FD"}.fa-user-cog:before{content:"\F4FE"}.fa-user-edit:before{content:"\F4FF"}.fa-user-friends:before{content:"\F500"}.fa-user-graduate:before{content:"\F501"}.fa-user-injured:before{content:"\F728"}.fa-user-lock:before{content:"\F502"}.fa-user-md:before{content:"\F0F0"}.fa-user-minus:before{content:"\F503"}.fa-user-ninja:before{content:"\F504"}.fa-user-nurse:before{content:"\F82F"}.fa-user-plus:before{content:"\F234"}.fa-user-secret:before{content:"\F21B"}.fa-user-shield:before{content:"\F505"}.fa-user-slash:before{content:"\F506"}.fa-user-tag:before{content:"\F507"}.fa-user-tie:before{content:"\F508"}.fa-user-times:before{content:"\F235"}.fa-users:before{content:"\F0C0"}.fa-users-cog:before{content:"\F509"}.fa-usps:before{content:"\F7E1"}.fa-ussunnah:before{content:"\F407"}.fa-utensil-spoon:before{content:"\F2E5"}.fa-utensils:before{content:"\F2E7"}.fa-vaadin:before{content:"\F408"}.fa-vector-square:before{content:"\F5CB"}.fa-venus:before{content:"\F221"}.fa-venus-double:before{content:"\F226"}.fa-venus-mars:before{content:"\F228"}.fa-viacoin:before{content:"\F237"}.fa-viadeo:before{content:"\F2A9"}.fa-viadeo-square:before{content:"\F2AA"}.fa-vial:before{content:"\F492"}.fa-vials:before{content:"\F493"}.fa-viber:before{content:"\F409"}.fa-video:before{content:"\F03D"}.fa-video-slash:before{content:"\F4E2"}.fa-vihara:before{content:"\F6A7"}.fa-vimeo:before{content:"\F40A"}.fa-vimeo-square:before{content:"\F194"}.fa-vimeo-v:before{content:"\F27D"}.fa-vine:before{content:"\F1CA"}.fa-vk:before{content:"\F189"}.fa-vnv:before{content:"\F40B"}.fa-voicemail:before{content:"\F897"}.fa-volleyball-ball:before{content:"\F45F"}.fa-volume-down:before{content:"\F027"}.fa-volume-mute:before{content:"\F6A9"}.fa-volume-off:before{content:"\F026"}.fa-volume-up:before{content:"\F028"}.fa-vote-yea:before{content:"\F772"}.fa-vr-cardboard:before{content:"\F729"}.fa-vuejs:before{content:"\F41F"}.fa-walking:before{content:"\F554"}.fa-wallet:before{content:"\F555"}.fa-warehouse:before{content:"\F494"}.fa-water:before{content:"\F773"}.fa-wave-square:before{content:"\F83E"}.fa-waze:before{content:"\F83F"}.fa-weebly:before{content:"\F5CC"}.fa-weibo:before{content:"\F18A"}.fa-weight:before{content:"\F496"}.fa-weight-hanging:before{content:"\F5CD"}.fa-weixin:before{content:"\F1D7"}.fa-whatsapp:before{content:"\F232"}.fa-whatsapp-square:before{content:"\F40C"}.fa-wheelchair:before{content:"\F193"}.fa-whmcs:before{content:"\F40D"}.fa-wifi:before{content:"\F1EB"}.fa-wikipedia-w:before{content:"\F266"}.fa-wind:before{content:"\F72E"}.fa-window-close:before{content:"\F410"}.fa-window-maximize:before{content:"\F2D0"}.fa-window-minimize:before{content:"\F2D1"}.fa-window-restore:before{content:"\F2D2"}.fa-windows:before{content:"\F17A"}.fa-wine-bottle:before{content:"\F72F"}.fa-wine-glass:before{content:"\F4E3"}.fa-wine-glass-alt:before{content:"\F5CE"}.fa-wix:before{content:"\F5CF"}.fa-wizards-of-the-coast:before{content:"\F730"}.fa-wolf-pack-battalion:before{content:"\F514"}.fa-won-sign:before{content:"\F159"}.fa-wordpress:before{content:"\F19A"}.fa-wordpress-simple:before{content:"\F411"}.fa-wpbeginner:before{content:"\F297"}.fa-wpexplorer:before{content:"\F2DE"}.fa-wpforms:before{content:"\F298"}.fa-wpressr:before{content:"\F3E4"}.fa-wrench:before{content:"\F0AD"}.fa-x-ray:before{content:"\F497"}.fa-xbox:before{content:"\F412"}.fa-xing:before{content:"\F168"}.fa-xing-square:before{content:"\F169"}.fa-y-combinator:before{content:"\F23B"}.fa-yahoo:before{content:"\F19E"}.fa-yammer:before{content:"\F840"}.fa-yandex:before{content:"\F413"}.fa-yandex-international:before{content:"\F414"}.fa-yarn:before{content:"\F7E3"}.fa-yelp:before{content:"\F1E9"}.fa-yen-sign:before{content:"\F157"}.fa-yin-yang:before{content:"\F6AD"}.fa-yoast:before{content:"\F2B1"}.fa-youtube:before{content:"\F167"}.fa-youtube-square:before{content:"\F431"}.fa-zhihu:before{content:"\F63F"}.sr-only{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sr-only-focusable:active,.sr-only-focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}@font-face{font-family:Font Awesome\ 5 Brands;font-style:normal;font-weight:400;font-display:auto;src:url(/openj9/static/fa-brands-400-57dcda6f368ea90179f75cbdae96c263.eot);src:url(/openj9/static/fa-brands-400-57dcda6f368ea90179f75cbdae96c263.eot?#iefix) format("embedded-opentype"),url(/openj9/static/fa-brands-400-067595ad77ecc0db9c81c8905a7eef32.woff2) format("woff2"),url(/openj9/static/fa-brands-400-b564da88bbf0c4aa446fa19653713cd1.woff) format("woff"),url(/openj9/static/fa-brands-400-9ec698d1a597bff5df337094b71ddaaf.ttf) format("truetype"),url(/openj9/static/fa-brands-400-9d67fa1429375bd2a899a17eb77d0342.svg#fontawesome) format("svg")}.fab{font-family:Font Awesome\ 5 Brands}@font-face{font-family:Font Awesome\ 5 Free;font-style:normal;font-weight:400;font-display:auto;src:url(/openj9/static/fa-regular-400-3351f435b3c9037fd88aeb04dc1e43bc.eot);src:url(/openj9/static/fa-regular-400-3351f435b3c9037fd88aeb04dc1e43bc.eot?#iefix) format("embedded-opentype"),url(/openj9/static/fa-regular-400-4165c2688309cbfb1b877caf8f75afb5.woff2) format("woff2"),url(/openj9/static/fa-regular-400-73cf49a2232c06c920b7a34e36bfb58c.woff) format("woff"),url(/openj9/static/fa-regular-400-a0e3ac82940c1998c5977fd4bc1f5ef6.ttf) format("truetype"),url(/openj9/static/fa-regular-400-5d0861781aeef6c82fda3a3076954a1b.svg#fontawesome) format("svg")}.fab,.far{font-weight:400}@font-face{font-family:Font Awesome\ 5 Free;font-style:normal;font-weight:900;font-display:auto;src:url(/openj9/static/fa-solid-900-89e02bae13c9131c7468b1e729339ac1.eot);src:url(/openj9/static/fa-solid-900-89e02bae13c9131c7468b1e729339ac1.eot?#iefix) format("embedded-opentype"),url(/openj9/static/fa-solid-900-55eb2a60e8181f0e68b558c991973bf0.woff2) format("woff2"),url(/openj9/static/fa-solid-900-cdfec5cf5e9840889790bcf2c4042583.woff) format("woff"),url(/openj9/static/fa-solid-900-75f38a159982b6bd1704891332d95fa7.ttf) format("truetype"),url(/openj9/static/fa-solid-900-0724bb8b89ab6b8b9b7df917b17be0b7.svg#fontawesome) format("svg")}.fa,.far,.fas{font-family:Font Awesome\ 5 Free}.fa,.fas{font-weight:900}</style><meta name="generator" content="Gatsby 2.19.7"/><link rel="icon" href="/openj9/favicon-32x32.png?v=521b6ab03638f6a52fffc5f7bf4c617e"/><link rel="manifest" href="/openj9/manifest.webmanifest"/><link rel="apple-touch-icon" sizes="48x48" href="/openj9/icons/icon-48x48.png?v=521b6ab03638f6a52fffc5f7bf4c617e"/><link rel="apple-touch-icon" sizes="72x72" href="/openj9/icons/icon-72x72.png?v=521b6ab03638f6a52fffc5f7bf4c617e"/><link rel="apple-touch-icon" sizes="96x96" href="/openj9/icons/icon-96x96.png?v=521b6ab03638f6a52fffc5f7bf4c617e"/><link rel="apple-touch-icon" sizes="144x144" href="/openj9/icons/icon-144x144.png?v=521b6ab03638f6a52fffc5f7bf4c617e"/><link rel="apple-touch-icon" sizes="192x192" href="/openj9/icons/icon-192x192.png?v=521b6ab03638f6a52fffc5f7bf4c617e"/><link rel="apple-touch-icon" sizes="256x256" href="/openj9/icons/icon-256x256.png?v=521b6ab03638f6a52fffc5f7bf4c617e"/><link rel="apple-touch-icon" sizes="384x384" href="/openj9/icons/icon-384x384.png?v=521b6ab03638f6a52fffc5f7bf4c617e"/><link rel="apple-touch-icon" sizes="512x512" href="/openj9/icons/icon-512x512.png?v=521b6ab03638f6a52fffc5f7bf4c617e"/><link rel="preconnect dns-prefetch" href="https://www.google-analytics.com"/><link as="script" rel="preload" href="/openj9/component---src-pages-news-js-63e528f45eabc859ccac.js"/><link as="script" rel="preload" href="/openj9/commons-b35008cb74c6abd7ace8.js"/><link as="script" rel="preload" href="/openj9/app-2da2270a07d62743bcd4.js"/><link as="script" rel="preload" href="/openj9/styles-cc4082ebb0cb6903d934.js"/><link as="script" rel="preload" href="/openj9/webpack-runtime-4324011276ab16472ff8.js"/><link as="fetch" rel="preload" href="/openj9/page-data/news/page-data.json" crossorigin="anonymous"/></head><body><div id="___gatsby"><div style="outline:none" tabindex="-1" role="group" id="gatsby-focus-wrapper"><style data-emotion-css="t923zi">body{color:text;background-color:var(--theme-ui-colors-background,#FFFFFF);}</style><style data-emotion-css="1gb9wyy">*{box-sizing:border-box;}body{margin:0;font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.5;font-weight:400;}</style><style data-emotion-css="1xgro3h">*{padding:0;margin:0;}</style><style data-emotion-css="gns71q">.css-gns71q{display:none;background-color:var(--theme-ui-colors-primary,#434343);width:100%;color:var(--theme-ui-colors-lightText,#d8d8d8);padding-left:40px;padding-right:40px;padding-top:32px;padding-bottom:32px;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}@media screen and (min-width:35rem){.css-gns71q{display:none;}}@media screen and (min-width:62.5rem){.css-gns71q{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}}@media screen and (min-width:85rem){.css-gns71q{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}}</style><header class="css-gns71q"><style data-emotion-css="4golyb">.css-4golyb{-webkit-flex:1;-ms-flex:1;flex:1;opacity:1;pointer-events:all;}</style><div class="css-4golyb"><a href="/openj9/"><img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNzlweCIgaGVpZ2h0PSIzM3B4IiB2aWV3Qm94PSIwIDAgNzkgMzMiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5Mb2dvPC90aXRsZT4KICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPgogICAgPGcgaWQ9IlBhZ2UtMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9IkxvZ28iIGZpbGwtcnVsZT0ibm9uemVybyI+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMC4wNDUyMzE4LDE5LjQ2MTIzMzcgQzkuMjQwNjc1MjUsMjAuNjk4NDMyOCA4LjEyNjE5NTA0LDIxLjMxNjY4NzggNi43MDA3Nzc4OSwyMS4zMTY2ODc4IEM1LjMxNTQ1ODI5LDIxLjMxNjY4NzggNC4yMDg2NTAxNywyMC43MTkxMTAzIDMuMzgwMjA4NzgsMTkuNTIzODE3NCBDMi41NTIyMDE2NiwxOC4zMjgyNDg5IDIuMTM4MDUzMzUsMTYuNzc4NDA3MSAyLjEzODA1MzM1LDE0Ljg3MzMyNzMgQzIuMTM4MDUzMzUsMTIuOTIyNzU3MSAyLjU0ODE0ODQ4LDExLjM0Mzk2NyAzLjM2ODMzODc1LDEwLjEzNzIzMjYgQzQuMTg4NjczNzgsOC45MzA2MzYxMiA1LjI5NTE5MjM4LDguMzI2OTkzMjQgNi42ODg3NjMxLDguMzI2OTkzMjQgQzguMDY2NTU1MzcsOC4zMjY5OTMyNCA5LjE3MTE5MjE0LDguODg1MjgzNjUgMTAuMDAzMzk3MiwxMC4wMDA0ODYgQzEwLjgzNTYwMjMsMTEuMTE2Mzc3NSAxMS4yNTE3NzcyLDEyLjY3NjI4MjIgMTEuMjUxNzc3MiwxNC42Nzk2NDg4IEMxMS4yNTE3NzcyLDE2LjYzMDM1NjggMTAuODQ5NDk4OSwxOC4yMjQxNzI1IDEwLjA0NTIzMTgsMTkuNDYxMjMzNyBNNi43MTI3OTI2OCw2LjczNDY5Mzg4IEM0LjY5MDExMDI1LDYuNzM0NjkzODggMy4wNjU2NTI5Myw3LjUwMTQxMjcgMS44MzkyNzU5NSw5LjAzNDAyMzI0IEMwLjYxMzE4ODQ4OSwxMC41NjY3NzE2IDAsMTIuNTA5NDg0NCAwLDE0Ljg2MTg4NTggQzAsMTcuMTE1NzI0OCAwLjU4NTM5NTI0MywxOS4wMTg1OTkxIDEuNzU2MDQwOTcsMjAuNTcwMDk1IEMyLjkyNjU0MTk1LDIyLjEyMjAwNDQgNC41NTg4MTYxMiwyMi44OTc5NTkyIDYuNjUzMDA4MjUsMjIuODk3OTU5MiBDOC43NzkxOTE1NywyMi44OTc5NTkyIDEwLjQzMzQ2ODcsMjIuMDgwMDk4MiAxMS42MTYyNzQsMjAuNDQ1MDY1NSBDMTIuNzk4NTAwMiwxOC44MDk3NTcxIDEzLjM4OTgzMDUsMTYuODkxNDQzNyAxMy4zODk4MzA1LDE0LjY5MTIyODEgQzEzLjM4OTgzMDUsMTIuMzk5NjE4MyAxMi43ODA1NTA0LDEwLjUwMDQ2NiAxMS41NjIyNzk4LDguOTkzOTA5MDQgQzEwLjM0Mzg2NDUsNy40ODgwNDEzIDguNzI3MzY4NzQsNi43MzQ2OTM4OCA2LjcxMjc5MjY4LDYuNzM0NjkzODgiIGlkPSJTaGFwZSIgZmlsbD0iIzVEQTdBMyI+PC9wYXRoPgogICAgICAgICAgICA8cGF0aCBkPSJNMjIuOTc0MzgxNywyMS4zNjc1NDcyIEMyMi4zMTQxOTk5LDIyLjA3MDg5MDkgMjEuNTU1MzY4NiwyMi40MjMxMzExIDIwLjY5OTU0OTUsMjIuNDIzMTMxMSBDMTkuOTYwMDU1MywyMi40MjMxMzExIDE5LjI1MDkyNjQsMjIuMTMwOTk0OCAxOC41Njk3NDU3LDIxLjU0NjU4MDEgQzE3Ljg4ODI2MjksMjAuOTYzMDE3OSAxNy41MTMzMDM4LDIwLjIyMzAxNTEgMTcuMzYyMjMyNSwxOS4zMjc5OTI0IEwxNy4zNjIyMzI1LDE1Ljk4NjA0NCBDMTcuNjY0Mzc1MiwxNS4xNzMxNDkxIDE3Ljk2OTM4ODIsMTQuNDgxNDU2OCAxOC41ODg0Nzg2LDEzLjkxMDk2NjggQzE5LjIwNzU2ODksMTMuMzQwNDc2OSAxOS45MDY3MjcxLDEzLjA1NTE2MDkgMjAuNjg3OTE3LDEzLjA1NTE2MDkgQzIxLjY3NjgzLDEzLjA1NTE2MDkgMjIuNDcwNDA3NywxMy40NTk2OTAxIDIzLjA2ODgwMTMsMTQuMjY4NjA2NSBDMjMuNjY2ODkyNywxNS4wNzc1MjI4IDIzLjk2NjAxNCwxNi4yMjg0NDg5IDIzLjk2NjAxNCwxNy43MjE1MjY5IEMyMy45NjYwMTQsMTkuNDQ4OTEwNyAyMy42MzUxNjc3LDIwLjY2NDYyOTcgMjIuOTc0MzgxNywyMS4zNjc1NDcyIE0yMS4xNjI3MzQyLDExLjQ0ODk3OTYgQzE5LjQwMzM1NzQsMTEuNDQ4OTc5NiAxOC4xMTc1ODkyLDEyLjMyNDUzNiAxNy4yMTExNjEyLDE0LjA3NDc5NjIgTDE3LjIxMTE2MTIsMTEuNjk4MjA0OCBMMTUuMzk4MzA1MSwxMS42OTgyMDQ4IEwxNS4zOTgzMDUxLDI3LjYxMjI0NDkgTDE3LjM2MjIzMjUsMjcuNjEyMjQ0OSBMMTcuMzYyMjMyNSwyMS44MjQ5MzM3IEMxOC4yNjg2NjA1LDIzLjIzOTQzNjEgMTkuNTA4OTU2MiwyMy45NDcwNDI1IDIxLjA4NzY1MTcsMjMuOTQ3MDQyNSBDMjIuNTU4OTM1NSwyMy45NDcwNDI1IDIzLjc2MjgyMywyMy4zNzk2Nzg2IDI0LjcwMjAzMzUsMjIuMjQ1NTE5MSBDMjUuNjQwNzkwOCwyMS4xMTA3OTEyIDI2LjExMDE2OTUsMTkuNTc3NTAxOCAyNi4xMTAxNjk1LDE3LjY0NTM2NjkgQzI2LjExMDE2OTUsMTUuODUzNDc0NCAyNS42NjI5OTgzLDE0LjM3MjkwMDMgMjQuNzUwNTI3NCwxMy4yMDMzNjA0IEMyMy44Mzc2MDMzLDEyLjAzMzY3ODUgMjIuNjQ4MDY3NiwxMS40NDg5Nzk2IDIxLjE2MjczNDIsMTEuNDQ4OTc5NiIgaWQ9IlNoYXBlIiBmaWxsPSIjNURBN0EzIj48L3BhdGg+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMC4yNjM1ODc2LDE2LjM2MzMzNjcgQzMwLjM0MTcwNzYsMTUuMjU4OTg2OCAzMC43MDEzMTY2LDE0LjQwODM2MTMgMzEuMzQxNzAwNiwxMy43NzA0NjExIEMzMS45ODE2NTYxLDEzLjEzMjQyMyAzMi43NjE0Mjc5LDEyLjgwNDAxNjkgMzMuNjgwNzMwMiwxMi44MDQwMTY5IEMzNC4zNjQxMDE2LDEyLjgwNDAxNjkgMzQuOTQ5MDczMiwxMi45NzU3NDMzIDM1LjQzNjUwMiwxMy4zMjkxMzUzIEMzNS45MjM1MDIzLDEzLjY4MTk3NTEgMzYuMjY5NDAxLDE0LjEyNTc4NTcgMzYuNDczNDg0MSwxNC42MjcwMjI1IEMzNi42NzgxMzg1LDE1LjEyODEyMTMgMzYuNzg3NTM1MSwxNS42NzMxMTggMzYuODAzMzg3NiwxNi4zNjMzMzY3IEwzMC4yNjM1ODc2LDE2LjM2MzMzNjcgWiBNMzcuMzc1MjIwMiwxMy4wMzA2ODQ4IEMzNi40MjgzNTQ1LDExLjk5MDI0OTEgMzUuMTc3NDM1LDExLjQ0ODk3OTYgMzMuNjIxNzQ3NSwxMS40NDg5Nzk2IEMzMi4wNDI5MjM5LDExLjQ0ODk3OTYgMzAuNzMwNTkzOCwxMi4wMDI1MzUgMjkuNjg2MDQyNCwxMy4xMzE0NTY3IEMyOC42NDEyMDU0LDE0LjI1OTgyNjIgMjguMTE4NjQ0MSwxNS43MzQ5NjE2IDI4LjExODY0NDEsMTcuNTY2OTQwMSBDMjguMTE4NjQ0MSwxOS4zNjA4MTg0IDI4LjYyMTA2ODQsMjAuODA3Mzc4OCAyOS42MjY5MTY4LDIxLjkxMzM4NTIgQzMwLjYzMjQ3OTYsMjMuMDE5OTQzOCAzMS45NDg1MjMsMjMuNTcxNDI4NiAzMy41NzQ5MDQsMjMuNTcxNDI4NiBDMzQuODA4MjU3MywyMy41NzE0Mjg2IDM1Ljg4MDIyOTIsMjMuMjQ4OTU4NCAzNi43OTE1MzM5LDIyLjYwNDcwODMgQzM3LjcwMzEyNDIsMjEuOTYwNzM0MiAzOC4zMTU4MDIsMjEuMTQ3MzgwNSAzOC42MzAxMzg2LDIwLjE2NDA5NSBMMzYuOTA5OTI3OCwxOS44MjI3MTI4IEMzNi4yODg5NjY3LDIxLjMzMzQ2MzUgMzUuMjIwNTY1MiwyMi4wODkyNTI5IDMzLjcwNDI5NDcsMjIuMDg5MjUyOSBDMzIuODYzNjgzNywyMi4wODkyNTI5IDMyLjA2NjM0NTYsMjEuODI4MDc0MiAzMS4zMTIyODA3LDIxLjIyMDY4MTcgQzMwLjU1ODA3MjksMjAuNjEzMDEzMiAzMC4xODA3NTQ3LDE5LjQwMDI5OSAzMC4xODA3NTQ3LDE3Ljc0Mzc3NDEgTDM4LjgzMDUwODUsMTcuNzQzNzc0MSBDMzguODA2OTQzOSwxNS41MzUwNzQzIDM4LjMyMTgwMDIsMTQuMDcwODQ0MyAzNy4zNzUyMjAyLDEzLjAzMDY4NDggTDM3LjM3NTIyMDIsMTMuMDMwNjg0OCBaIiBpZD0iU2hhcGUiIGZpbGw9IiM1REE3QTMiPjwvcGF0aD4KICAgICAgICAgICAgPHBhdGggZD0iTTQ4LjQzNjA2MzksMTIuMTMxMzMxIEM0Ny43NjA0NDM5LDExLjY3NjU3MTQgNDYuOTE5MzU2NiwxMS40NDg5Nzk2IDQ1Ljk1ODg0MjIsMTEuNDQ4OTc5NiBDNDQuMjkzMDQ0MywxMS40NDg5Nzk2IDQyLjk1MDQ1NjMsMTIuMjgxMTc0IDQxLjg2ODk3LDEzLjk0NTEzODggTDQxLjg2ODk3LDExLjY5NzA2ODggTDQwLjE2OTQ5MTUsMTEuNjk3MDY4OCBMNDAuMTY5NDkxNSwyMy41NzE0Mjg2IEw0Mi4wMjM0NjgxLDIzLjU3MTQyODYgTDQyLjAyMzQ2ODEsMTcuMDk0Mzg3NSBDNDIuMDIzNDY4MSwxNS44NzQwMTQ3IDQyLjM4NTkyMDUsMTQuODg5OTk4MiA0My4wNzg1MzUyLDE0LjE0MzE4NiBDNDMuNzcwNjg2NCwxMy4zOTY3OTggNDQuNjM1NDEyLDEzLjAyMzYwNCA0NS42NTUwOTkxLDEzLjAyMzYwNCBDNDYuMzk0NjgxMiwxMy4wMjM2MDQgNDcuMDQyODAwNSwxMy4yNDUyNTg2IDQ3LjU2MTE0MTUsMTMuNjg4NTY3OSBDNDguMDc5NjM2OSwxNC4xMzE1OTQ0IDQ4LjM1Nzg4NzksMTQuODk3NjMxNyA0OC4zNTc4ODc5LDE1Ljk4NjUzODQgTDQ4LjM1Nzg4NzksMjMuNTcxNDI4NiBMNTAuMjExODY0NCwyMy41NzE0Mjg2IEw1MC4yMTE4NjQ0LDE2Ljc0NDUxODEgQzUwLjIxMTg2NDQsMTUuMjU5Mzc1NSA1MC4wODE0NjgxLDE0LjIzMzA5MTkgNDkuODMwNDA4NywxMy42NjUyNDMyIEM0OS41Nzk2NTg0LDEzLjA5NzM5NDYgNDkuMTExODM4MywxMi41ODYwOTA1IDQ4LjQzNjA2MzksMTIuMTMxMzMxIFoiIGlkPSJTaGFwZSIgZmlsbD0iIzVEQTdBMyI+PC9wYXRoPgogICAgICAgICAgICA8cGF0aCBkPSJNNTcuNzMyOTYwNywxOS4zMjIyNzI0IEM1Ny43MzI5NjA3LDIwLjIxNjkxMjkgNTcuNjY0MDE3MywyMC44NjM1NjU5IDU3LjUyOTgzNDEsMjEuMjYzMjQ2NCBDNTcuMzk1MjIzNiwyMS42NjI0OTE5IDU3LjEzMTQxNTQsMjEuOTg3NjMxMSA1Ni43Mzk0MDY4LDIyLjIzOTM4OTIgQzU2LjM0NzY4MywyMi40OTA4NTczIDU1LjY5NjI4MiwyMi42MTYxNTYzIDU0Ljg2OTM4ODcsMjIuNjE2MTU2MyBDNTQuMjg4MDcwNywyMi42MTYxNTYzIDUzLjc0NDUwMDUsMjIuNTM4NTY5NSA1Mi44ODk4MzA1LDIyLjM4MzI1MSBMNTIuODg5ODMwNSwyMy45MzQ2OTYgQzUzLjc0NDUwMDUsMjQuMTQxMjA3MyA1NC4zNzg4MDgyLDI0LjI0NDg5OCA1NS4wOTc0NDMyLDI0LjI0NDg5OCBDNTYuNDM5NTYsMjQuMjQ0ODk4IDU3LjUzNTEwNDYsMjMuODgyNDg4MSA1OC4zNDc4OTU4LDIzLjE1ODM5MzQgQzU5LjE2MDQwMjEsMjIuNDMzODYzNyA1OS41ODQ3NDU4LDIxLjE1NDkxNSA1OS41ODQ3NDU4LDE5LjMyMTExMjMgTDU5LjU4NDc0NTgsOC43NTUxMDIwNCBMNTcuNzMyOTYwNyw4Ljc1NTEwMjA0IEw1Ny43MzI5NjA3LDE5LjMyMjI3MjQgWiIgaWQ9IlNoYXBlIiBmaWxsPSIjRkZGRkZGIj48L3BhdGg+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik02OS4yNDA4MTE5LDE2LjIyNTg5MDQgQzY4LjU2Njc1NzgsMTYuOTQyNzI2NiA2Ny43MzIxNTUyLDE3LjMwMTIxNiA2Ni43Mzc0MTk4LDE3LjMwMTIxNiBDNjUuODMzODMyNiwxNy4zMDEyMTYgNjUuMDQyMDMzNywxNi45OTE5NDIyIDY0LjM2MTA1MzQsMTYuMzczNTM3MyBDNjMuNjgwMjExNiwxNS43NTQ3MDQzIDYzLjMzOTcyMTUsMTQuOTE0MTg3MiA2My4zMzk3MjE1LDEzLjg1MTI3MjQgQzYzLjMzOTcyMTUsMTIuODYxOTY3MiA2My42NDY4Mjc1LDEyLjAyMjQ0ODUgNjQuMjYwNzYyNiwxMS4zMzQ5OTkxIEM2NC44NzQxNDM1LDEwLjY0NzEyMTYgNjUuNzEwNDA4NCwxMC4zMDMzMjU2IDY2Ljc2OTAwMzEsMTAuMzAzMzI1NiBDNjcuODEzMzI5OCwxMC4zMDMzMjU2IDY4LjY1NDk5NzEsMTAuNjM3ODQ5MSA2OS4yOTM0NTA4LDExLjMwNzYwOTUgQzY5LjkzMjE4MTUsMTEuOTc3MjI3MiA3MC4yNTE0Nzc2LDEyLjc3ODA4NjYgNzAuMjUxNDc3NiwxMy43MDkzMzE3IEM3MC4yNTE0Nzc2LDE0LjY3MDEwNjIgNjkuOTE0MzEyLDE1LjUwOTA1NDIgNjkuMjQwODExOSwxNi4yMjU4OTA0IE03MC44NTQ3NDYzLDEwLjcyNDE1NDggQzY5Ljg4ODI2OTYsOS40MTIwMjM1NyA2OC40OTgwNTAzLDguNzU1MTAyMDQgNjYuNjg0MjI2OCw4Ljc1NTEwMjA0IEM2NS4yMDI1ODIxLDguNzU1MTAyMDQgNjMuOTgzNDM5LDkuMjU3MjQ0MDEgNjMuMDI3NDkwMSwxMC4yNjExIEM2Mi4wNzA5ODcsMTEuMjY1MjQxMyA2MS41OTMyMjAzLDEyLjQ3MjgwNzEgNjEuNTkzMjIwMywxMy44ODQyMjU1IEM2MS41OTMyMjAzLDE1LjI3MzgxNzggNjIuMDQ3OTkyMiwxNi40Mzk1ODYgNjIuOTU4MzY3LDE3LjM4MTY3MjkgQzYzLjg2ODg4MDMsMTguMzIzNjE3IDY0Ljk5NDI0MzIsMTguNzk0ODAzMSA2Ni4zMzQ3MzI3LDE4Ljc5NDgwMzEgQzY4LjIzMzA1NTMsMTguNzk0ODAzMSA2OS42NTUxMzUsMTcuOTAwNzkwNiA3MC42MDA4MzMyLDE2LjExMzA1MTEgQzcwLjU3OTUwMDYsMTguMTU1MTQyNyA3MC4yMjEyNzk1LDE5Ljc3MjI2ODEgNjkuNTI2NTg1NCwyMC45NjM5OTkzIEM2OC44MzEzMzcyLDIyLjE1NjAxNTkgNjcuNzk1ODc1OSwyMi43NTE0NTM2IDY2LjQxOTUwODksMjIuNzUxNDUzNiBDNjUuMDAxNTg0OSwyMi43NTE0NTM2IDYzLjk5MjMwNDUsMjIuMDY1MDAyNyA2My4zOTIzNjAzLDIwLjY5MTM4NzYgTDYxLjk0MjI5ODksMjEuMjM2NjExMSBDNjIuNzA0MTc2OCwyMy4yNDIxODMyIDY0LjE4OTU2MTYsMjQuMjQ0ODk4IDY2LjM5ODczMDQsMjQuMjQ0ODk4IEM2OC4yODk0MzQyLDI0LjI0NDg5OCA2OS43NDY5NzU5LDIzLjQ5NzgxOTEgNzAuNzcwMTA4NiwyMi4wMDM1MTg4IEM3MS43OTMyNDEzLDIwLjUwOTA3NTggNzIuMzA1MDg0NywxOC41NTQ1NzM4IDcyLjMwNTA4NDcsMTYuMTQwMDEyNyBDNzIuMzA1MDg0NywxMy44NDIxNDI2IDcxLjgyMTYzODYsMTIuMDM2ODU2NiA3MC44NTQ3NDYzLDEwLjcyNDE1NDgiIGlkPSJTaGFwZSIgZmlsbD0iI0ZGRkZGRiI+PC9wYXRoPgogICAgICAgICAgICA8cGF0aCBkPSJNNDguODQzNzkwMSwyNC42NDQ3MTU3IEM0OS41NDM5Mzk0LDI1LjkwNTU0OTIgNTAuNDE5NDA5OCwyNy4wOTIxMjI5IDUxLjQ3MDIwMTMsMjguMTY3MjQ1MyBDNTcuNzY4MDE2NSwzNC42MTA5MTgyIDY3Ljk3ODc5MjcsMzQuNjEwOTE4MiA3NC4yNzY2MDc5LDI4LjE2NzI0NTMgQzgwLjU3NDQ2NCwyMS43MjM2MDAzIDgwLjU3NDQ2NCwxMS4yNzY0MDE4IDc0LjI3NjYwNzksNC44MzI3NTY4MyBDNjcuOTc4NzkyNywtMS42MTA5MTg5NCA1Ny43NjgwMTY1LC0xLjYxMDkxODk0IDUxLjQ3MDIwMTMsNC44MzI3NTY4MyBDNDkuNjA2NzAxNiw2LjczOTM5NzA0IDQ4LjI5NDU5ODMsOC45OTY1NjQ4MyA0Ny41MzM4OTgzLDExLjM5NjgyMjkgTDQ4LjM3MDI2NzIsMTEuNzc3ODE5NiBDNDkuMDgzNDMyNSw5LjQ3ODI5OTU2IDUwLjMzMTIyMjcsNy4zMTQ3NjEyMiA1Mi4xMTM2MzM1LDUuNDkxMDg4OTIgQzU4LjA1NjA5NDgsLTAuNTg4OTk5Mjg4IDY3LjY5MDcyMTIsLTAuNTg4OTk5Mjg4IDczLjYzMzE3NTcsNS40OTEwODg5MiBDNzkuNTc1NjcxMiwxMS41NzExNDM2IDc5LjU3NTY3MTIsMjEuNDI4ODU1NyA3My42MzMxNzU3LDI3LjUwODkxNDYgQzY3LjY5MDcyMTIsMzMuNTg4OTkzIDU4LjA1NjA5NDgsMzMuNTg4OTkzIDUyLjExMzYzMzUsMjcuNTA4OTE0NiBDNTEuMTQ0MDY3NywyNi41MTY4OTg3IDUwLjMzMjY5OTgsMjUuNDI0MzI2NyA0OS42Nzk1MTYxLDI0LjI2NDAwNzMgTDQ4Ljg0Mzc5MDEsMjQuNjQ0NzE1NyBaIiBpZD0iU2hhcGUiIGZpbGw9IiM1REE3QTMiPjwvcGF0aD4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==" alt="OpenJ9 Logo"/></a></div><style data-emotion-css="kzfr2u">.css-kzfr2u{-webkit-flex:2;-ms-flex:2;flex:2;}</style><nav class="css-kzfr2u"><style data-emotion-css="d1fq55">.css-d1fq55{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;list-style:none;-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end;}.css-d1fq55 li{padding:8px;margin-left:8px;margin-right:8px;}.css-d1fq55 li a{color:white;-webkit-text-decoration:none;text-decoration:none;}.css-d1fq55 li a:hover{color:var(--theme-ui-colors-links,#5DA7A3);}.css-d1fq55 li:first-of-type{margin-left:0;}.css-d1fq55 li:last-child{margin-right:0;padding-right:0;}</style><ul class="css-d1fq55"><li><a href="/openj9/">Home</a></li><li><a href="/openj9/about">About</a></li><li><a href="https://www.eclipse.org/openj9/docs/" rel="noopener noreferrer" target="_blank">Docs</a></li><li><a href="/openj9/performance">Performance</a></li><li><a href="/openj9/news">News</a></li></ul></nav><style data-emotion-css="1rr4qq7">.css-1rr4qq7{-webkit-flex:1;-ms-flex:1;flex:1;}</style><nav class="css-1rr4qq7"><ul class="css-d1fq55"><li><a href="https://twitter.com/openj9/" rel="noopener noreferrer" target="_blank"> <img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIyNXB4IiB2aWV3Qm94PSIwIDAgMjUgMjUiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5Ud2l0dGVyPC90aXRsZT4KICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPgogICAgPGcgaWQ9IlBhZ2UtMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9IlR3aXR0ZXIiIGZpbGwtcnVsZT0ibm9uemVybyI+CiAgICAgICAgICAgIDxnIGlkPSJ0d2l0dGVyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjAwMDAwMCwgMC4yOTg4NzkpIj4KICAgICAgICAgICAgICAgIDxlbGxpcHNlIGlkPSJPdmFsLXBhdGgiIGZpbGw9IiM0MzQzNDMiIGN4PSIxMi41MDAyMjEyIiBjeT0iMTIuMjcyNzI3MyIgcng9IjEyLjUiIHJ5PSIxMi4yNzI3MjczIj48L2VsbGlwc2U+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTIuNTAwMjIxMiwwIEMxOS40MDM3ODA2LDAgMjUuMDAwMjIxMiw1LjQ5NDY4NzE2IDI1LjAwMDIyMTIsMTIuMjcyNzI3MyBDMjUuMDAwMjIxMiwxOS4wNTA3Njc0IDE5LjQwMzc4MDYsMjQuNTQ1NDU0NSAxMi41MDAyMjEyLDI0LjU0NTQ1NDUgQzUuNTk2NjYxODcsMjQuNTQ1NDU0NSAwLjAwMDIyMTIzODkzOCwxOS4wNTA3Njc0IDAuMDAwMjIxMjM4OTM4LDEyLjI3MjcyNzMgQzAuMDAwMjIxMjM4OTM4LDUuNDk0Njg3MTYgNS41OTY2NjE4NywwIDEyLjUwMDIyMTIsMCBaIE0xNS4xMDM0MzMzLDYuODE4MTgxODIgQzEzLjQ2NTM4MDIsNi44MTgxODE4MiAxMi4xMzY4NDA0LDguMDkyMTI0MTEgMTIuMTM2ODQwNCw5LjY2Mjg1OTk2IEMxMi4xMzY4NDA0LDkuODg1ODI2MzggMTIuMTYzMTY3OCwxMC4xMDI4NTI3IDEyLjIxNDA1MjgsMTAuMzExMTgxIEM5Ljc0ODU2NjA0LDEwLjE5MjU5MDggNy41NjI1MDQxLDkuMDYwMTUwNTQgNi4wOTkyMjk3Niw3LjMzODU3ODIzIEM1Ljg0MzkyMDAzLDcuNzU4NjI5MTUgNS42OTc0NTk4NSw4LjI0NzYyNzgxIDUuNjk3NDU5ODUsOC43Njg4NzI4MSBDNS42OTc0NTk4NSw5Ljc1NTU2ODE3IDYuMjIxNTc0ODksMTAuNjI2NjQzNCA3LjAxNzE1MDExLDExLjEzNjY0NDcgQzYuNTMxMDg4MTcsMTEuMTIyMDA2NSA2LjA3MzM0NDgsMTAuOTk0MDgxOSA1LjY3MzU2NjA0LDEwLjc4MDQ1IEw1LjY3MzM0NDgsMTAuODE2NTE0OSBMNS42NzMzNDQ4LDEwLjgxNjUxNDkgQzUuNjczMzQ0OCwxMi4xOTQ4MzM1IDYuNjk2MzUzNjUsMTMuMzQ0NDU3NyA4LjA1MzIxMjA2LDEzLjYwNTYxMDYgQzcuODA0NTM5NSwxMy42NzA5NTE5IDcuNTQxOTI4ODgsMTMuNzA1NTMxOCA3LjI3MTc5NjEzLDEzLjcwNTUzMTggQzcuMDgwMjAzMjEsMTMuNzA1NTMxOCA2Ljg5NDU4Mzc0LDEzLjY4NzkyMzYgNi43MTM2MTAyOSwxMy42NTQ4Mjg3IEM3LjA5MTA0MzkyLDE0Ljc4NDcyMzIgOC4xODYzOTc5LDE1LjYwNzIxNjkgOS40ODQ4NDkyMywxNS42MzAzNDA5IEM4LjQ2OTM2MjUsMTYuMzkzNDMzNCA3LjE5MDM4MDIsMTYuODQ4MDY0MiA1LjgwMDExNDcyLDE2Ljg0ODA2NDIgQzUuNTYxMTc2NjYsMTYuODQ4MDY0MiA1LjMyNDQ1MSwxNi44MzQ2OTkgNS4wOTI4MTM4MywxNi44MDgxODA2IEM2LjQwNDk4MTk3LDE3LjYxNTYxMTggNy45NjQ3MTY0OSwxOC4wODYzNjU4IDkuNjM5OTM3NzMsMTguMDg2MzY1OCBDMTUuMDk2NTc0OSwxOC4wODYzNjU4IDE4LjA4MDY0NTcsMTMuNzUxNzc5OCAxOC4wODA2NDU3LDkuOTkyMzI0MTQgQzE4LjA4MDY0NTcsOS44NjkwNjY3NyAxOC4wNzc3Njk2LDkuNzQ2MjMzNyAxOC4wNzIwMTc0LDkuNjI0NDYxMzcgQzE4LjY1MjEwNTksOS4yMjM1MDM2OCAxOS4xNTQ5ODIsOC43MjI2MjQ3OCAxOS41NTI1NDgzLDguMTUyMTYxNjkgQzE5LjAyMDY4OTksOC4zNzgzMTAzMiAxOC40NDg1NjYsOC41MzEyNjgyNSAxNy44NDg1NjYsOC41OTk1Nzk1NiBDMTguNDYxMTc2Nyw4LjI0NzYyNzgxIDE4LjkzMTMwOTQsNy42OTA3NDIxMyAxOS4xNTMyMTIxLDcuMDI2MDg1ODEgQzE4LjU3OTk4Miw3LjM1MjE1NTYzIDE3Ljk0NDgwNSw3LjU4ODY5OTQ2IDE3LjI2OTM2MjUsNy43MTYxOTk3NiBDMTYuNzI4MjEyMSw3LjE2MzU1NzAyIDE1Ljk1NzE5NDQsNi44MTgxODE4MiAxNS4xMDM0MzMzLDYuODE4MTgxODIgWiIgaWQ9IkNvbWJpbmVkLVNoYXBlIiBmaWxsPSIjRkZGRkZGIj48L3BhdGg+CiAgICAgICAgICAgIDwvZz4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==" alt="Twitter Logo"/></a></li><li><a href="https://github.com/eclipse/openj9" rel="noopener noreferrer" target="_blank"> <img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIyNXB4IiB2aWV3Qm94PSIwIDAgMjUgMjUiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5HaXRIdWI8L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0iR2l0SHViIiBmaWxsPSIjRkZGRkZGIiBmaWxsLXJ1bGU9Im5vbnplcm8iPgogICAgICAgICAgICA8ZyBpZD0iZ2l0aHViLWxvZ28iPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTIzLjMyMzIwOSw2LjM1NjM4NTg4IEMyMi4yMDU0MjQzLDQuNDI4ODY0OTMgMjAuNjg5MjIwNywyLjkwMjg0MzkxIDE4Ljc3NDE5OTMsMS43Nzc5Nzg1OCBDMTYuODU4ODkyOCwwLjY1MzA1NTg3MyAxNC43Njc5NDkxLDAuMDkwNzM3OTUzMyAxMi40OTk4ODYsMC4wOTA3Mzc5NTMzIEMxMC4yMzIxMDc5LDAuMDkwNzM3OTUzMyA4LjE0MDQ4MDEzLDAuNjUzMjI3OTkzIDYuMjI1NTcyNjksMS43Nzc5Nzg1OCBDNC4zMTAzODAyMSwyLjkwMjc4NjU0IDIuNzk0MjMzNjcsNC40Mjg4NjQ5MyAxLjY3NjQ0ODk5LDYuMzU2Mzg1ODggQzAuNTU4ODM1MzMzLDguMjgzODQ5NDUgMCwxMC4zODg2NTQ2IDAsMTIuNjcwNzQzOSBDMCwxNS40MTIwNTEgMC43OTQ2NzE0ODMsMTcuODc3MTA0NSAyLjM4NDQxMzQ5LDIwLjA2NjUzNTUgQzMuOTczOTg0NDksMjIuMjU2MTM4OCA2LjAyNzQ3NDg4LDIzLjc3MTI1ODggOC41NDQ3MTM2NywyNC42MTIwNjc4IEM4LjgzNzcyNzQsMjQuNjY2ODAyMiA5LjA1NDYzNzM3LDI0LjYyODMwNDUgOS4xOTU2NzE2MSwyNC40OTc1NTAzIEM5LjMzNjc2Mjg1LDI0LjM2NjYyMzkgOS40MDcyMjI5NiwyNC4yMDI2NTAzIDkuNDA3MjIyOTYsMjQuMDA2MzE4MSBDOS40MDcyMjI5NiwyMy45NzM1NTc5IDkuNDA0NDI5NjQsMjMuNjc4ODMwMSA5LjM5OTAxNDAxLDIzLjEyMTc5MDUgQzkuMzkzNDI3MzcsMjIuNTY0NzUxIDkuMzkwODA1MDcsMjIuMDc4Nzk3MiA5LjM5MDgwNTA3LDIxLjY2NDE1ODcgTDkuMDE2NDQyOTcsMjEuNzI5MzM1MSBDOC43Nzc3NTY1LDIxLjc3MzM0MDUgOC40NzY2NDc4MywyMS43OTE5ODY5IDguMTEzMTE2OTgsMjEuNzg2NzA4NiBDNy43NDk3NTcxNSwyMS43ODE2MDIzIDcuMzcyNTQ0NzMsMjEuNzQzMjc2OCA2Ljk4MTk5Mjc3LDIxLjY3MjAxODkgQzYuNTkxMjY5NzksMjEuNjAxMzkyMSA2LjIyNzg1Mjk1LDIxLjQzNzU5MDcgNS44OTE0NTcyMiwyMS4xODA5NTg5IEM1LjU1NTIzMjUyLDIwLjkyNDMyNzEgNS4zMTY1NDYwNCwyMC41ODg0MDUxIDUuMTc1NDU0OCwyMC4xNzM3MDkzIEw1LjAxMjcwMTA2LDE5Ljc5Njc2NTIgQzQuOTA0MjE3NTcsMTkuNTQ1ODEzNCA0LjczMzQyNTkxLDE5LjI2NzAzNTUgNC41MDAwOTgwNSwxOC45NjE0NjQxIEM0LjI2Njc3MDE5LDE4LjY1NTYwNTggNC4wMzA4MjAwMywxOC40NDgyNTc5IDMuNzkyMTMzNTUsMTguMzM5MDc2MSBMMy42NzgxNzc0MywxOC4yNTY5NzQ2IEMzLjYwMjI0NDY5LDE4LjIwMjQxMjMgMy41MzE3ODQ1OCwxOC4xMzY2MDQ5IDMuNDY2NjI2MDgsMTguMDYwMjQwOCBDMy40MDE1MjQ1OCwxNy45ODM4NzY2IDMuMzUyNzgzOTcsMTcuOTA3NDU1MSAzLjMyMDIzMzIzLDE3LjgzMDkxODggQzMuMjg3NjI1NDcsMTcuNzU0MzI1MSAzLjMxNDY0NjU4LDE3LjY5MTUwMTEgMy40MDE1ODE1OSwxNy42NDIyMTcyIEMzLjQ4ODUxNjYsMTcuNTkyOTMzNCAzLjY0NTYyNjY4LDE3LjU2OTAwODYgMy44NzM1OTU5MywxNy41NjkwMDg2IEw0LjE5ODk4OTM5LDE3LjYxNzk0ODIgQzQuNDE2MDEzMzcsMTcuNjYxNzI0MiA0LjY4NDQ1NzI3LDE3Ljc5MjQ3ODUgNS4wMDQ2NjMxNCwxOC4wMTEwMTQzIEM1LjMyNDY5Nzk4LDE4LjIyOTM3NzkgNS41ODc3ODMyNywxOC41MTMyNjIxIDUuNzkzOTc2LDE4Ljg2MjU1MjEgQzYuMDQzNjY0NzUsMTkuMzEwNDA5OSA2LjM0NDQ4ODM4LDE5LjY1MTY2NzYgNi42OTczMDE5OSwxOS44ODY0OTc0IEM3LjA0OTgzMDU4LDIwLjEyMTMyNzMgNy40MDUyNjY0OSwyMC4yMzg1NDE0IDcuNzYzMjY3NzEsMjAuMjM4NTQxNCBDOC4xMjEyNjg5MiwyMC4yMzg1NDE0IDguNDMwNDcyNTIsMjAuMjExMjMxNiA4LjY5MDk5MjUxLDIwLjE1Njg5ODkgQzguOTUxMjI3NDcsMjAuMTAyMjc5MyA5LjE5NTM4NjU3LDIwLjAyMDE3NzcgOS40MjMzNTU4MiwxOS45MTEwNTMzIEM5LjUyMTAwODA2LDE5LjE3OTA4MTkgOS43ODY4ODY2NywxOC42MTY3NjM5IDEwLjIyMDc2MzYsMTguMjIzNjk3OSBDOS42MDIzNTY0MiwxOC4xNTgyOTIxIDkuMDQ2MzcxNDIsMTguMDU5NzgxOCA4LjU1MjUyMzU3LDE3LjkyODc5OCBDOC4wNTg5NjA3NSwxNy43OTc2NDIxIDcuNTQ4OTIzMDMsMTcuNTg0Nzg2MyA3LjAyMjc1MjQ2LDE3LjI4OTY1NjkgQzYuNDk2Mjk2ODUsMTYuOTk0OTI5MSA2LjA1OTU2OTU4LDE2LjYyODk0MzQgNS43MTI0NTY2MiwxNi4xOTIzMzA5IEM1LjM2NTI4NjY1LDE1Ljc1NTQ4ODkgNS4wODAzNjc4NSwxNS4xODE5ODMxIDQuODU4MDk5MjYsMTQuNDcyMzMgQzQuNjM1NzE2NjYsMTMuNzYyMzkgNC41MjQ0OTY4NiwxMi45NDM0NDAzIDQuNTI0NDk2ODYsMTIuMDE1MjUxNCBDNC41MjQ0OTY4NiwxMC42OTM2NTIzIDQuOTUzMTg2MjEsOS41NjkwMTY0MiA1LjgxMDM5Mzg5LDguNjQwNzEyNzggQzUuNDA4ODM5NjcsNy42NDcxMTgwNyA1LjQ0Njc0OTAzLDYuNTMzMjY4NDYgNS45MjQyMzYsNS4yOTkyNzg2OCBDNi4yMzg5MTIyMiw1LjIwMDg4MzA4IDYuNzA1NTY3OTQsNS4yNzQ3MjI4MSA3LjMyMzk3NTE0LDUuNTIwMzM4ODcgQzcuOTQyNDk2MzQsNS43NjYwNjk2OCA4LjM5NTM1NjQ3LDUuOTc2NTczMTQgOC42ODMwMTE1OSw2LjE1MTEwMzQxIEM4Ljk3MDY2NjcsNi4zMjU1NzYzIDkuMjAxMTQ0MjQsNi40NzM0Mjc4NyA5LjM3NDc4NjIzLDYuNTkzMzM4NTQgQzEwLjM4NDA4NzQsNi4zMDk1MTE3MSAxMS40MjU2NTQzLDYuMTY3NTY5NjEgMTIuNDk5NzcyLDYuMTY3NTY5NjEgQzEzLjU3Mzg4OTYsNi4xNjc1Njk2MSAxNC42MTU2ODQ2LDYuMzA5NTExNzEgMTUuNjI1MDQyOCw2LjU5MzMzODU0IEwxNi4yNDM1MDcsNi4yMDAzODcyNiBDMTYuNjY2NDM4Niw1LjkzODE5MDI1IDE3LjE2NTg3MzEsNS42OTc5MDk5MyAxNy43NDA2MTMzLDUuNDc5NDg4OTIgQzE4LjMxNTY5NTUsNS4yNjExODI2NiAxOC43NTU0NDQxLDUuMjAxMDU1MiAxOS4wNTk0MDMxLDUuMjk5NDUwOCBDMTkuNTQ3NDkzMyw2LjUzMzQ5Nzk1IDE5LjU5MDk4OTMsNy42NDcyOTAxOSAxOS4xODkzMjExLDguNjQwODg0OSBDMjAuMDQ2NDcxNyw5LjU2OTE4ODU0IDIwLjQ3NTMzMjEsMTAuNjk0MTExMiAyMC40NzUzMzIxLDEyLjAxNTQyMzUgQzIwLjQ3NTMzMjEsMTIuOTQzNjEyNCAyMC4zNjM3MTMzLDEzLjc2NTE0MzkgMjAuMTQxNjcyNywxNC40ODA1MzQ0IEMxOS45MTkzNDcxLDE1LjE5NjAzOTYgMTkuNjMxOTc3LDE1Ljc2ODk3MTcgMTkuMjc5NDQ4NSwxNi4yMDA1MzUzIEMxOC45MjY1MjA4LDE2LjYzMjA0MTYgMTguNDg3MDAwMiwxNi45OTUxNTg2IDE3Ljk2MDgyOTcsMTcuMjg5ODI5MSBDMTcuNDM0NTQ1MSwxNy41ODQ3MjkgMTYuOTI0MzM2MywxNy43OTc1ODQ4IDE2LjQzMDc3MzUsMTcuOTI4NzQwNiBDMTUuOTM2OTgyNywxOC4wNTk4OTY1IDE1LjM4MDk5NzcsMTguMTU4NDY0MiAxNC43NjI1OTA1LDE4LjIyMzk4NDggQzE1LjMyNjYxMzQsMTguNzE1MjE2OSAxNS42MDg2ODE5LDE5LjQ5MDYyMDEgMTUuNjA4NjgxOSwyMC41NDk4NTAxIEwxNS42MDg2ODE5LDI0LjAwNTg1OTIgQzE1LjYwODY4MTksMjQuMjAyMTkxNCAxNS42NzY1MTk3LDI0LjM2NjEwNzUgMTUuODEyMzA5MywyNC40OTcwOTEzIEMxNS45NDc5Mjc5LDI0LjYyNzg0NTUgMTYuMTYyMTAxNiwyNC42NjYzNDMyIDE2LjQ1NTExNTMsMjQuNjExNTUxNSBDMTguOTcyNjk2MSwyMy43NzA4NTcyIDIxLjAyNjE4NjUsMjIuMjU1Njc5OCAyMi42MTU3MDA1LDIwLjA2NjA3NjYgQzI0LjIwNTA0MzUsMTcuODc2NjQ1NSAyNSwxNS40MTE1OTIgMjUsMTIuNjcwMjg0OSBDMjQuOTk5NDI5OSwxMC4zODg0ODI1IDI0LjQ0MDMwOTYsOC4yODM4NDk0NSAyMy4zMjMyMDksNi4zNTYzODU4OCBaIiBpZD0iU2hhcGUiPjwvcGF0aD4KICAgICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+" alt="GitHub Logo"/></a></li><li><a href="https://openj9.slack.com/" rel="noopener noreferrer" target="_blank"><img src="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIyNXB4IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgogPCEtLSBDcmVhdGVkIHdpdGggTWV0aG9kIERyYXcgLSBodHRwOi8vZ2l0aHViLmNvbS9kdW9waXhlbC9NZXRob2QtRHJhdy8gLS0+CgogPGc+CiAgPHRpdGxlPmJhY2tncm91bmQ8L3RpdGxlPgogIDxyZWN0IGZpbGw9Im5vbmUiIGlkPSJjYW52YXNfYmFja2dyb3VuZCIgaGVpZ2h0PSIyNiIgd2lkdGg9IjI2IiB5PSItMSIgeD0iLTEiLz4KICA8ZyBkaXNwbGF5PSJub25lIiBvdmVyZmxvdz0idmlzaWJsZSIgeT0iMCIgeD0iMCIgaGVpZ2h0PSIxMDAlIiB3aWR0aD0iMTAwJSIgaWQ9ImNhbnZhc0dyaWQiPgogICA8cmVjdCBmaWxsPSJ1cmwoI2dyaWRwYXR0ZXJuKSIgc3Ryb2tlLXdpZHRoPSIwIiB5PSIxIiB4PSIxIiBoZWlnaHQ9IjIyIiB3aWR0aD0iMjIiLz4KICA8L2c+CiA8L2c+CiA8Zz4KICA8dGl0bGU+TGF5ZXIgMTwvdGl0bGU+CiAgPGVsbGlwc2Ugcnk9IjExIiByeD0iMTEiIGlkPSJzdmdfMSIgY3k9IjEyIiBjeD0iMTIiIHN0cm9rZT0iI0ZGRiIgZmlsbD0iI0ZGRkZGRiIvPgogIDxzdHlsZSB0cmFuc2Zvcm09Im1hdHJpeCgwLjA2NTE4MjQ5NTU3MzI1MzYyLDAsMCwwLjA2NTE4MjQ5NTU3MzI1MzYyLDAsMCkgIiB0eXBlPSJ0ZXh0L2NzcyI+LnN0MHtmaWxsOiM0MzQzNDM7fTwvc3R5bGU+CiAgPGcgc3Ryb2tlPSJudWxsIiBpZD0ic3ZnXzE5Ij4KICAgPGcgc3Ryb2tlPSJudWxsIiB0cmFuc2Zvcm09Im1hdHJpeCgwLjEzMDE1NTgwODUxODA5NDg2LDAsMCwwLjEzMDE1NTgwODUxODA5NDg2LC02Ljg0OTAwNjQ1MDQwNTQ5OSwtNi44MzE1MDczOTEwMjE5MjQpICIgaWQ9InN2Z182Ij4KICAgIDxnIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z183Ij4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfOCIgZD0ibTExMC4yOTgyOTIsMTYxLjI5MzAxMWMwLDcuMSAtNS44LDEyLjkgLTEyLjksMTIuOXMtMTIuOSwtNS44IC0xMi45LC0xMi45YzAsLTcuMSA1LjgsLTEyLjkgMTIuOSwtMTIuOWwxMi45LDBsMCwxMi45eiIgY2xhc3M9InN0MCIvPgogICAgIDxwYXRoIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z185IiBkPSJtMTE2Ljc5ODI5MiwxNjEuMjkzMDExYzAsLTcuMSA1LjgsLTEyLjkgMTIuOSwtMTIuOXMxMi45LDUuOCAxMi45LDEyLjlsMCwzMi4zYzAsNy4xIC01LjgsMTIuOSAtMTIuOSwxMi45cy0xMi45LC01LjggLTEyLjksLTEyLjljMCwwIDAsLTMyLjMgMCwtMzIuM3oiIGNsYXNzPSJzdDAiLz4KICAgIDwvZz4KICAgIDxnIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z18xMCI+CiAgICAgPHBhdGggc3Ryb2tlPSJudWxsIiBpZD0ic3ZnXzExIiBkPSJtMTI5LjY5ODI5MiwxMDkuNDkzMDExYy03LjEsMCAtMTIuOSwtNS44IC0xMi45LC0xMi45czUuOCwtMTIuOSAxMi45LC0xMi45czEyLjksNS44IDEyLjksMTIuOWwwLDEyLjlsLTEyLjksMHoiIGNsYXNzPSJzdDAiLz4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTIiIGQ9Im0xMjkuNjk4MjkyLDExNS45OTMwMTFjNy4xLDAgMTIuOSw1LjggMTIuOSwxMi45cy01LjgsMTIuOSAtMTIuOSwxMi45bC0zMi4zLDBjLTcuMSwwIC0xMi45LC01LjggLTEyLjksLTEyLjlzNS44LC0xMi45IDEyLjksLTEyLjljMCwwIDMyLjMsMCAzMi4zLDB6IiBjbGFzcz0ic3QwIi8+CiAgICA8L2c+CiAgICA8ZyBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTMiPgogICAgIDxwYXRoIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z18xNCIgZD0ibTE4MS40OTgyOTIsMTI4Ljg5MzAxMWMwLC03LjEgNS44LC0xMi45IDEyLjksLTEyLjljNy4xLDAgMTIuOSw1LjggMTIuOSwxMi45cy01LjgsMTIuOSAtMTIuOSwxMi45bC0xMi45LDBsMCwtMTIuOXoiIGNsYXNzPSJzdDAiLz4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTUiIGQ9Im0xNzQuOTk4MjkyLDEyOC44OTMwMTFjMCw3LjEgLTUuOCwxMi45IC0xMi45LDEyLjljLTcuMSwwIC0xMi45LC01LjggLTEyLjksLTEyLjlsMCwtMzIuM2MwLC03LjEgNS44LC0xMi45IDEyLjksLTEyLjljNy4xLDAgMTIuOSw1LjggMTIuOSwxMi45bDAsMzIuM3oiIGNsYXNzPSJzdDAiLz4KICAgIDwvZz4KICAgIDxnIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z18xNiI+CiAgICAgPHBhdGggc3Ryb2tlPSJudWxsIiBpZD0ic3ZnXzE3IiBkPSJtMTYyLjA5ODI5MiwxODAuNjkzMDExYzcuMSwwIDEyLjksNS44IDEyLjksMTIuOWMwLDcuMSAtNS44LDEyLjkgLTEyLjksMTIuOWMtNy4xLDAgLTEyLjksLTUuOCAtMTIuOSwtMTIuOWwwLC0xMi45bDEyLjksMHoiIGNsYXNzPSJzdDAiLz4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTgiIGQ9Im0xNjIuMDk4MjkyLDE3NC4xOTMwMTFjLTcuMSwwIC0xMi45LC01LjggLTEyLjksLTEyLjljMCwtNy4xIDUuOCwtMTIuOSAxMi45LC0xMi45bDMyLjMsMGM3LjEsMCAxMi45LDUuOCAxMi45LDEyLjljMCw3LjEgLTUuOCwxMi45IC0xMi45LDEyLjlsLTMyLjMsMHoiIGNsYXNzPSJzdDAiLz4KICAgIDwvZz4KICAgPC9nPgogIDwvZz4KIDwvZz4KPC9zdmc+" alt="Slack logo"/></a></li><li><a href="https://stackoverflow.com/search?q=%23OpenJ9" rel="noopener noreferrer" target="_blank"><img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjRweCIgaGVpZ2h0PSIyNHB4IiB2aWV3Qm94PSIwIDAgNjUgNzAiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5zdGFja292ZXJmbG93LWxvZ288L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0iI0ZGRkZGRiIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0ic3RhY2tvdmVyZmxvdy1sb2dvIiBmaWxsLXJ1bGU9Im5vbnplcm8iPgogICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgZmlsbD0iI0ZGRkZGRiIgcG9pbnRzPSI1NC4yNDE3MjY2IDYzLjc3MDIyNjUgNTQuMjQxNzI2NiA0NSA2MSA0NSA2MSA3MCAwIDcwIDAgNDUgNi43NTgyNzMzOCA0NSA2Ljc1ODI3MzM4IDYzLjc3MDIyNjUiPjwvcG9seWdvbj4KICAgICAgICAgICAgPHBhdGggZD0iTTE0LjcwNzEwNTcsNDMuNjQyNzU2NyBMNDguMTE3ODUxLDUwLjA4NzIwMTEgTDQ5LjUzMjA2MjQsNDMuODg3NDgyNCBMMTYuMTIxMzE3MiwzNy40NDMwMzggTDE0LjcwNzEwNTcsNDMuNjQyNzU2NyBMMTQuNzA3MTA1Nyw0My42NDI3NTY3IFogTTE5LjEyNjUxNjUsMjguOTU5MjEyNCBMNTAuMDYyMzkxNyw0Mi4yNTU5Nzc1IEw1Mi44OTA4MTQ2LDM2LjU0NTcxMDMgTDIxLjk1NDkzOTMsMjMuMTY3MzY5OSBMMTkuMTI2NTE2NSwyOC45NTkyMTI0IFogTTI3LjcwMDE3MzMsMTQuOTI4MjcgTDUzLjk1MTQ3MzEsMzUuMDc3MzU1OCBMNTguMjgyNDk1NywzMC4yNjQ0MTYzIEwzMi4wMzExOTU4LDEwLjExNTMzMDUgTDI3LjcwMDE3MzMsMTQuOTI4MjcgTDI3LjcwMDE3MzMsMTQuOTI4MjcgWiBNNDQuNjcwNzEwNiwwIEwzOS4xOTA2NDEyLDMuNzUyNDYxMzIgTDU5LjUxOTkzMDcsMjkuMDQwNzg3NiBMNjUsMjUuMjg4MzI2MyBMNDQuNjcwNzEwNiwwIFogTTE0LDU4IEw0OC4xMTc4NTEsNTggTDQ4LjExNzg1MSw1MS43MTg3MDYgTDE0LDUxLjcxODcwNiBMMTQsNTggWiIgaWQ9IlNoYXBlIiBmaWxsPSIjRkZGRkZGIj48L3BhdGg+CiAgICAgICAgPC9nPgogICAgPC9nPgo8L3N2Zz4KCgo=" alt="Stack Overflow logo"/></a></li></ul></nav></header><style data-emotion-css="1824c0p">.css-1824c0p{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:fixed;width:100%;bottom:0;background-color:white;height:3rem;box-shadow:0 0.5rem 2rem grey;z-index:9999;}@media screen and (min-width:35rem){.css-1824c0p{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}}@media screen and (min-width:62.5rem){.css-1824c0p{display:none;}}@media screen and (min-width:85rem){.css-1824c0p{display:none;}}</style><nav class="css-1824c0p"><style data-emotion-css="94xmc6">.css-94xmc6{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;list-style:none;-webkit-box-pack:space-evenly;-webkit-justify-content:space-evenly;-ms-flex-pack:space-evenly;justify-content:space-evenly;width:100%;}.css-94xmc6 li a{color:black;-webkit-text-decoration:none;text-decoration:none;}.css-94xmc6 li:first-of-type{margin-left:0;}.css-94xmc6 li:last-child{margin-right:0;padding-right:0;}</style><ul class="css-94xmc6"><li><a href="/openj9/">Home</a></li><li><a href="/openj9/about">About</a> </li><li><a href="https://www.eclipse.org/openj9/docs/" rel="noopener noreferrer" target="_blank">Docs</a> </li><li><a href="/openj9/performance">Performance</a> </li><li><a href="/openj9/news">News</a> </li></ul></nav><style data-emotion-css="ng1uqc">.css-ng1uqc{background-color:#F5F9FC;padding-left:7%;padding-right:7%;padding-top:5%;}</style><section class="css-ng1uqc"><style data-emotion-css="tfdfz8">.css-tfdfz8{font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.125;font-weight:700;margin-top:16px;margin-bottom:16px;font-size:36px;}</style><h1 class="css-tfdfz8">What&#x27;s new in the OpenJ9 project</h1><style data-emotion-css="18iwr88">.css-18iwr88{padding-top:40px;padding-bottom:40px;padding-left:5%;padding-right:5%;}</style><div class="css-18iwr88"><style data-emotion-css="fza3g9">.css-fza3g9{margin-bottom:40px;font-size:18px;}</style><p class="css-fza3g9">Find out what&#x27;s happening at the project. Read about the highlights of our latest release. Catch the latest blog posts from our blog site; get top tips or deep dives about key features of OpenJ9 or simply read about experiences of working in the community.</p></div></section><style data-emotion-css="1ra88bn">.css-1ra88bn{padding-left:7%;padding-right:7%;background-color:#F5F9FC;}</style><section class="css-1ra88bn"><style data-emotion-css="1uoo2aq">.css-1uoo2aq{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;background-color:white;padding-left:5%;padding-right:5%;padding-top:5%;padding-bottom:5%;border-radius:0.5rem;}</style><div class="css-1uoo2aq"><article><style data-emotion-css="1v4dyq7">.css-1v4dyq7{font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.125;font-weight:700;margin-top:16px;margin-bottom:16px;font-size:28px;}</style><h2 class="css-1v4dyq7">Latest release</h2><style data-emotion-css="11k1070">.css-11k1070{word-wrap:break-word;min-height:10rem;margin-bottom:3rem;}@media screen and (min-width:35rem){.css-11k1070{min-height:13rem;}}@media screen and (min-width:62.5rem){.css-11k1070{min-height:10rem;}}@media screen and (min-width:85rem){.css-11k1070{min-height:8rem;}}.css-11k1070 p{margin:1rem 0;}.css-11k1070 ul{margin-left:5%;}.css-11k1070 ul p{margin:0;}.css-11k1070 a{color:#5DA7A3;-webkit-text-decoration:none;text-decoration:none;}.css-11k1070 a:hover{font-weight:bold;-webkit-text-decoration:none;text-decoration:none;}</style><div class="css-11k1070"><!--
 Copyright (c) 2017, 2020 IBM Corp. and others
 
 This program and the accompanying materials are made available under
@@ -45,9 +45,9 @@
 </ul>
 <p>And for your convenience, the Application Programming Interface (API) documentation that applies to OpenJ9 can now be found in the user documentation for both JDK 8 and JDK 11. The documentation includes links to Oracle API documentation for information that is not specific to OpenJ9.</p>
 <p>On macOS® systems: You should note that in this release, the version information for shared libraries on macOS has been updated from 0.0.0 to 1.0.0. If an application has linked against a shared library from a previous OpenJ9 release, it needs to be re-linked against the new release. Failure to re-link causes an error <code>Incompatible library version</code>, <code>requires version 0.0.0</code>.</p>
-<p>For all the details of changes and improvements in 0.21.0, read the <a href="https://www.eclipse.org/openj9/docs/version0.21/" target="_blank" rel="nofollow">Version 0.21.0 "What's New" page</a> and see also the <a href="https://github.com/eclipse/openj9/blob/master/doc/release-notes/0.21/0.21.md" target="_blank" rel="nofollow">OpenJ9 Release notes</a>.</p></div><style data-emotion-css="wiyika">.css-wiyika{background-color:var(--theme-ui-colors-secondary,#5DA7A3);color:white;border-radius:35px;height:35px;width:190px;border:none;font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';font-size:16px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-text-decoration:none;text-decoration:none;}.css-wiyika:hover{cursor:pointer;background-color:var(--theme-ui-colors-secondaryDark,#5d9da3);border-color:var(--theme-ui-colors-secondaryDark,#5d9da3);-webkit-text-decoration:none;text-decoration:none;color:white;}</style><a href="https://www.eclipse.org/openj9/docs/openj9_releases/" rel="noopener noreferrer" target="_blank" class="css-wiyika">New release info</a></article></div></div><style data-emotion-css="1sxg962">.css-1sxg962{padding-left:5%;padding-right:5%;padding-bottom:40px;background-color:#F5F9FC;}</style><div class="css-1sxg962"><style data-emotion-css="q0yds8">.css-q0yds8{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;padding-left:10%;padding-right:10%;padding-top:5%;padding-bottom:5%;}</style><div class="css-q0yds8"><style data-emotion-css="1v4dyq7">.css-1v4dyq7{font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.125;font-weight:700;margin-top:16px;margin-bottom:16px;font-size:28px;}</style><h2 class="css-1v4dyq7">Recent blogs</h2><style data-emotion-css="1b1zfbw">.css-1b1zfbw{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;}</style><div class="css-1b1zfbw"><style data-emotion-css="1d7n3a5">.css-1d7n3a5{-webkit-flex:1 1 30%;-ms-flex:1 1 30%;flex:1 1 30%;min-width:250px;}@media screen and (min-width:560px){.css-1d7n3a5{min-width:350px;}}@media screen and (min-width:1000px){.css-1d7n3a5{min-width:400px;}}@media screen and (min-width:1366px){.css-1d7n3a5{min-width:500px;}}</style><article class="css-1d7n3a5"><style data-emotion-css="1iizay1">.css-1iizay1{width:90%;margin:2rem 0;height:2rem;}@media screen and (min-width:560px){.css-1iizay1{height:1rem;}}@media screen and (min-width:1000px){.css-1iizay1{height:1rem;}}@media screen and (min-width:1366px){.css-1iizay1{height:1rem;}}</style><style data-emotion-css="1fdxfah">.css-1fdxfah{font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.125;font-weight:700;margin-top:16px;margin-bottom:16px;font-size:20px;width:90%;margin:2rem 0;height:2rem;}@media screen and (min-width:560px){.css-1fdxfah{height:1rem;}}@media screen and (min-width:1000px){.css-1fdxfah{height:1rem;}}@media screen and (min-width:1366px){.css-1fdxfah{height:1rem;}}</style><h4 class="css-1fdxfah"><style data-emotion-css="1q9l4at">.css-1q9l4at{font-size:1.24rem;cursor:pointer;color:black;-webkit-text-decoration:none;text-decoration:none;margin-right:0.3rem;}.css-1q9l4at:hover{color:#5DA7A3;-webkit-text-decoration:none;text-decoration:none;}</style><a href="https://blog.openj9.org/2020/06/02/arraylets-what-are-they/" rel="noopener noreferrer" target="_blank" class="css-1q9l4at"> <!-- -->Arraylets: What are They?</a><i class="fas fa-external-link-alt fa-xs"></i></h4><style data-emotion-css="1esrojz">.css-1esrojz{width:90%;margin-bottom:1rem;}</style><style data-emotion-css="15rfbe2">.css-15rfbe2{margin-bottom:40px;font-size:18px;width:90%;margin-bottom:1rem;}</style><p class="css-15rfbe2"><b>02 June 2020</b></p><style data-emotion-css="7822g1">.css-7822g1{width:90%;}</style><style data-emotion-css="1sgob93">.css-1sgob93{margin-bottom:40px;font-size:18px;width:90%;}</style><p class="css-1sgob93"><p>Garbage Collectors (GCs) are responsible for allocating and deallocating objects making sure the running application run as smoothly as possible. There are many types of GC configurations out there, mark sweep, generational, region based, concurrent, parallel, reference counting [1] and a combination of these. The way we represent objects in each of these configurations, also&#8230;</p>
-</p></article><article class="css-1d7n3a5"><style data-emotion-css="qminb7">.css-qminb7{width:90%;margin:2rem 0;height:2rem;color:black;-webkit-text-decoration:none;text-decoration:none;}@media screen and (min-width:560px){.css-qminb7{height:1rem;}}@media screen and (min-width:1000px){.css-qminb7{height:1rem;}}@media screen and (min-width:1366px){.css-qminb7{height:1rem;}}</style><style data-emotion-css="254pap">.css-254pap{font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.125;font-weight:700;margin-top:16px;margin-bottom:16px;font-size:20px;width:90%;margin:2rem 0;height:2rem;color:black;-webkit-text-decoration:none;text-decoration:none;}@media screen and (min-width:560px){.css-254pap{height:1rem;}}@media screen and (min-width:1000px){.css-254pap{height:1rem;}}@media screen and (min-width:1366px){.css-254pap{height:1rem;}}</style><h4 class="css-254pap"><a href="https://blog.openj9.org/2020/05/27/manipulating-the-class-file-with-asmtools/" rel="noopener noreferrer" target="_blank" class="css-1q9l4at"> <!-- -->Manipulating the Class File with AsmTools</a><i class="fas fa-external-link-alt fa-xs"></i></h4><p class="css-15rfbe2"><b>27 May 2020</b></p><p class="css-15rfbe2"><p>A Java class file is represented with a hardware &amp; OS independent binary format to be loaded &amp; interpreted at runtime. Except the magic number (the first 4 bytes such as CAFEBABE) and the version number (the 8th byte) which are visible or can be manually edited in a hexadecimal way, modifying the majority of&#8230;</p>
-</p></article></div></div><style data-emotion-css="tzcyjh">.css-tzcyjh{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;padding-left:5%;padding-right:5%;}</style><div class="css-tzcyjh"><style data-emotion-css="wiyika">.css-wiyika{background-color:var(--theme-ui-colors-secondary,#5DA7A3);color:white;border-radius:35px;height:35px;width:190px;border:none;font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';font-size:16px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-text-decoration:none;text-decoration:none;}.css-wiyika:hover{cursor:pointer;background-color:var(--theme-ui-colors-secondaryDark,#5d9da3);border-color:var(--theme-ui-colors-secondaryDark,#5d9da3);-webkit-text-decoration:none;text-decoration:none;color:white;}</style><a href="https://blog.openj9.org/" rel="noopener noreferrer" target="_blank" class="css-wiyika">See all blogs</a></div></div><style data-emotion-css="15xf14k">.css-15xf14k{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;background-color:var(--theme-ui-colors-primary,#434343);color:white;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:1rem;padding-bottom:3rem;-webkit-flex-direction:reverse-column;-ms-flex-direction:reverse-column;flex-direction:reverse-column;}@media screen and (min-width:560px){.css-15xf14k{padding-bottom:3rem;}}@media screen and (min-width:1000px){.css-15xf14k{padding-bottom:0;}}@media screen and (min-width:1366px){.css-15xf14k{padding-bottom:0;}}</style><footer class="css-15xf14k"><style data-emotion-css="o3kt9a">.css-o3kt9a{-webkit-flex:50%;-ms-flex:50%;flex:50%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}@media screen and (min-width:560px){.css-o3kt9a{display:none;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}}@media screen and (min-width:1000px){.css-o3kt9a{display:none;-webkit-align-items:flex-end;-webkit-box-align:flex-end;-ms-flex-align:flex-end;align-items:flex-end;}}@media screen and (min-width:1366px){.css-o3kt9a{display:none;-webkit-align-items:flex-end;-webkit-box-align:flex-end;-ms-flex-align:flex-end;align-items:flex-end;}}</style><section class="css-o3kt9a"><a href="https://wiki.eclipse.org/Development_Resources/Process_Guidelines/What_is_Incubation" rel="noopener noreferrer" target="_blank"><img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNTBweCIgaGVpZ2h0PSI3NXB4IiB2aWV3Qm94PSIwIDAgMTU3IDIzMSIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KICAgIDwhLS0gR2VuZXJhdG9yOiBTa2V0Y2ggNjEuMiAoODk2NTMpIC0gaHR0cHM6Ly9za2V0Y2guY29tIC0tPgogICAgPHRpdGxlPmVjbGlwc2VfaW5jdWJhdGlvbl92ZXJ0aWNhbF9zdmc8L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0iZWNsaXBzZV9pbmN1YmF0aW9uX3ZlcnRpY2FsX3N2ZyIgZmlsbC1ydWxlPSJub256ZXJvIj4KICAgICAgICAgICAgPGcgaWQ9Ikdyb3VwIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNy4wMDAwMDAsIDIxNC4wMDAwMDApIiBmaWxsPSIjRkZGRkZGIj4KICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJQYXRoIiBwb2ludHM9IjAuNzUgMC4zNCAxLjkyIDAuMzQgMS45MiAxNi4wMyAwLjc1IDE2LjAzIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSI1LjYyIDAuMzQgNi43MiAwLjM0IDE3LjU1IDEzLjk5IDE3LjU1IDAuMzQgMTguNjcgMC4zNCAxOC42NyAxNi4wMyAxNy44IDE2LjAzIDYuNzUgMi4wOSA2Ljc1IDE2LjAzIDUuNjMgMTYuMDMgNS42MyAwLjM0Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMjEuODYsOC4yMyBMMjEuODYsOC4xOSBDMjEuODYsMy43NSAyNS4xOCwwLjA4IDI5LjcxLDAuMDggQzMyLjUxLDAuMDggMzQuMTksMS4xMSAzNS44MSwyLjU5IEwzNC45OCwzLjQ0IEMzMy42MSwyLjEyIDMyLjA0LDEuMTMgMjkuNjksMS4xMyBDMjUuOTIsMS4xMyAyMy4wOCw0LjIgMjMuMDgsOC4xNSBMMjMuMDgsOC4xOSBDMjMuMDgsMTIuMTYgMjUuOTcsMTUuMjUgMjkuNzEsMTUuMjUgQzMxLjk3LDE1LjI1IDMzLjUyLDE0LjM3IDM1LjExLDEyLjgxIEwzNS44OSwxMy41NyBDMzQuMjMsMTUuMjEgMzIuNDQsMTYuMyAyOS42NiwxNi4zIEMyNS4xOCwxNi4zIDIxLjg2LDEyLjc0IDIxLjg2LDguMjMgWiIgaWQ9IlBhdGgiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0zOC40LDkuNTEgTDM4LjQsMC4zNCBMMzkuNTcsMC4zNCBMMzkuNTcsOS40IEMzOS41NywxMy4xIDQxLjU3LDE1LjIzIDQ0Ljg4LDE1LjIzIEM0OC4wNiwxNS4yMyA1MC4xLDEzLjMgNTAuMSw5LjUxIEw1MC4xLDAuMzQgTDUxLjI3LDAuMzQgTDUxLjI3LDkuMzcgQzUxLjI3LDEzLjg4IDQ4LjY1LDE2LjI3MDAzMTQgNDQuODQsMTYuMjcwMDMxNCBDNDEuMDcsMTYuMjggMzguNCwxMy45IDM4LjQsOS41MSBaIiBpZD0iUGF0aCI+PC9wYXRoPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTU0LjAyLDAuMzQgTDYwLjUsMC4zNCBDNjIuMjcsMC4zNCA2My43MSwwLjg2IDY0LjU4LDEuNzMgQzY1LjIzLDIuMzggNjUuNTksMy4yMSA2NS41OSw0LjIgTDY1LjU5LDQuMjQgQzY1LjU5LDYuMzcgNjQuMiw3LjQ1IDYyLjkyLDcuOTYgQzY0LjgsOC40NSA2Ni40Niw5LjUzIDY2LjQ2LDExLjcgTDY2LjQ2LDExLjc0IEM2Ni40NiwxNC4zNiA2NC4yMiwxNi4wMiA2MC44MywxNi4wMiBMNTQuMDIsMTYuMDIgTDU0LjAyLDAuMzQgTDU0LjAyLDAuMzQgWiBNNjQuNCw0LjMxIEM2NC40LDIuNTggNjIuOTksMS40MiA2MC40OCwxLjQyIEw1NS4xOSwxLjQyIEw1NS4xOSw3LjU4IEw2MC4zNyw3LjU4IEM2Mi43Miw3LjU4IDY0LjQsNi40NCA2NC40LDQuMzUgTDY0LjQsNC4zMSBaIE02MC41LDguNjYgTDU1LjE5LDguNjYgTDU1LjE5LDE0Ljk2IEw2MC44OCwxNC45NiBDNjMuNTcsMTQuOTYgNjUuMjcwMDQ0NCwxMy43MyA2NS4yNzAwNDQ0LDExLjc1IEw2NS4yNzAwNDQ0LDExLjcxIEM2NS4yOCw5Ljc4IDYzLjYsOC42NiA2MC41LDguNjYgWiIgaWQ9IlNoYXBlIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNzYuMjgsMC4yMyBMNzcuNCwwLjIzIEw4NC43MSwxNi4wMyBMODMuNDMsMTYuMDMgTDgxLjQ0LDExLjY0IEw3Mi4xOCwxMS42NCBMNzAuMTksMTYuMDMgTDY4Ljk4LDE2LjAzIEw3Ni4yOCwwLjIzIFogTTgwLjk0LDEwLjU5IEw3Ni44MiwxLjUxIEw3Mi42NywxMC41OSBMODAuOTQsMTAuNTkgWiIgaWQ9IlNoYXBlIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSI5MS4wNSAxLjQyIDg1LjU4IDEuNDIgODUuNTggMC4zNCA5Ny42OCAwLjM0IDk3LjY4IDEuNDIgOTIuMjEgMS40MiA5Mi4yMSAxNi4wMyA5MS4wNCAxNi4wMyA5MS4wNCAxLjQyIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSIxMDEuMjkgMC4zNCAxMDIuNDYgMC4zNCAxMDIuNDYgMTYuMDMgMTAxLjI5IDE2LjAzIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTA1LjkxLDguMjMgTDEwNS45MSw4LjE5IEMxMDUuOTEsMy45MSAxMDkuMDcsMC4wOCAxMTMuODIsMC4wOCBDMTE4LjU3LDAuMDggMTIxLjY5LDMuODcgMTIxLjY5LDguMTUgTDEyMS42OSw4LjE5IEMxMjEuNjksMTIuNDcgMTE4LjUzLDE2LjMgMTEzLjc4LDE2LjMgQzEwOS4wMywxNi4zIDEwNS45MSwxMi41MSAxMDUuOTEsOC4yMyBaIE0xMjAuNDgsOC4yMyBMMTIwLjQ4LDguMTkgQzEyMC40OCw0LjMxIDExNy42NiwxLjEzIDExMy43OCwxLjEzIEMxMDkuOSwxLjEzIDEwNy4xMiw0LjI3IDEwNy4xMiw4LjE1IEwxMDcuMTIsOC4xOSBDMTA3LjEyLDEyLjA3IDEwOS45NCwxNS4yNSAxMTMuODIsMTUuMjUgQzExNy43LDE1LjI1IDEyMC40OCwxMi4xMSAxMjAuNDgsOC4yMyBaIiBpZD0iU2hhcGUiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJQYXRoIiBwb2ludHM9IjEyNC44OSAwLjM0IDEyNS45OSAwLjM0IDEzNi44MiAxMy45OSAxMzYuODIgMC4zNCAxMzcuOTQgMC4zNCAxMzcuOTQgMTYuMDMgMTM3LjA3IDE2LjAzIDEyNi4wMiAyLjA5IDEyNi4wMiAxNi4wMyAxMjQuOSAxNi4wMyAxMjQuOSAwLjM0Ij48L3BvbHlnb24+CiAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgPHBhdGggZD0iTTU2LjY2LDE2Ni4yMyBDNTcuNTEsMTYzLjQ4IDYwLjQzLDE2MS40MyA2My45NCwxNjEuNDMgQzY1LjE0LDE2MS40MyA2Ni4yNSwxNjEuNjkgNjcuMjUsMTYyLjExIEM2OS40NiwxNjAuNjQgNzIuMTksMTU5Ljc2IDc1LjE3LDE1OS43NiBMNzUuMTksMTU5Ljc2IEM3Ni4xMSwxNTcuOSA3OC40OCwxNTYuNTcgODEuMywxNTYuNTcgQzgyLjA0LDE1Ni41NyA4Mi43NSwxNTYuNjcgODMuNDIsMTU2Ljg0IEM4My4zMywxNTQuNTYgODMuNjksMTUyLjE4IDg0LjU1LDE0OS42OCBDODUuNTUsMTQ2Ljc5IDg3LDE0NC4wMyA4OC41MiwxNDEuMjggQzg4LjE3LDEzNy4xNiA4Ny45LDEzMy41IDgyLjc0LDEzMiBDODAuODIsMTMxLjQ0IDc4LjgyLDEzMS4yNyA3Ni44NiwxMzEuMDQgTDc2Ljg1LDEzMS4wNCBMNzYuODUsMTMxLjAzIEM3Ni4wMSwxMzAuOTMgNzUuMTcsMTMwLjgxIDc0LjM1LDEzMC42NSBDNjAuMTgsMTQ1LjQxIDQwLjIsMTA5Ljk3IDQwLjIsMTA5Ljk3IEM4NC4zLDEwMy4xMyA3Ni4wMSwxMjUuNjEgNzYuMDEsMTI1LjYxIEM3Mi44MSwxMjQuMDUgNzEuOTMsMTIyLjA4IDY5LjQ5LDExOS43MyBDNjMuOTIsMTE0LjM4IDUwLjYyLDExMy40NCA1MC42MiwxMTMuNDQgQzY2LjU0LDExNy41MSA2OC43MSwxMjUuMjIgNzQuOTcsMTI3LjY5IEM3Ni4zOSwxMjguMDEgNzcuOSwxMjguMTMgNzkuMzUsMTI4LjI5IEM4Mi4xNSwxMjguNTkgODQuODksMTI5LjExIDg3LjIyLDEzMC42MSBDODkuNjMsMTMyLjE2IDkwLjcxLDEzNC4wOSA5MS4yNiwxMzYuMjYgQzkzLDEzMi45NCA5NC41LDEyOS41NiA5NS4wNywxMjUuOTIgQzk1LjgsMTIxLjI3IDk1LjEzLDExNS44OCA5MS44MywxMTIuMDcgQzg4Ljc4LDEwOC41NSA4NC42NiwxMDUuODkgODEuNCwxMDIuNTIgQzc3LjkyLDk4LjkxIDc1LjYxLDk0LjQ2IDc1LjUyLDg5LjcxIEM3My43Niw4NS44NiA3MC45LDgxLjM5IDY4LjI4LDc5LjY1IEM1Ni45LDkwLjM0IDQxLjksNjIuNTggNDEuOSw2Mi41OCBDNzYuODgsNTcuNyA3MS4xLDc1LjY3IDcxLjEsNzUuNjcgQzYyLjcsNjYuMjggNTIuMzEsNjcuMTIgNTIuMzEsNjcuMTIgQzYwLjcxLDY5Ljc5IDY3LjM0LDc1LjE1IDcxLjIsNzguODMgTDcxLjczLDc5LjM2IEM3My4zLDgxIDc0LjksODIuNzUgNzYuMjQsODQuNjMgQzc3LjYsNzkuNDggODAuNzcsNzIuMjcgODMuMjYsNjcuOTcgQzgzLjI2LDY3Ljk3IDkxLjY2LDUzLjE1IDEwNS44LDQzLjkgQzEwNS44LDQzLjkgOTUuMDIsNDUuMTQgODMuNDEsNjIuODkgQzgzLjQxLDYyLjg5IDY3Ljk5LDM4LjcgMTE3LjgzLDM0LjIzIEMxMTcuODMsMzQuMjMgMTE0LjQsNzguMTcgODcuNDUsNjkuNjMgQzgyLjc3LDc2LjY3IDc5LjcsODQuNzQgODAuMzMsOTAuNDIgQzgwLjk1LDk1Ljk2IDg0LjgzLDk5Ljg2IDg5LjExLDEwMy41IEM5MC4yNSw5Ny42NiA5NC40Niw5Mi42MyAxMDAuNjUsODkuODkgQzEwNS42LDg3LjkyIDExMi45LDg2LjAzIDExOS43Miw4NS42MiBDMTE5LjcyLDg1LjYyIDEwNi4zOSw4Mi41OCA5Ni4yNSw4OS41MSBDOTYuMjUsODkuNTEgOTYuNDIsNjkuMjIgMTMyLjM0LDgzLjk1IEMxMzIuMzQsODMuOTUgMTA2LjM0LDExMC4yOSA5Ny45OSw5NC41OSBDOTQuMDMsOTcuMiA5MS41MywxMDEuNTggOTIuMTgsMTA2LjExIEM5NC41LDEwOC4xNCA5Ni42NiwxMTAuMzMgOTcuOTcsMTEzLjAzIEM5OS44LDExNi44MiAxMDAuNDUsMTIxLjI0IDk5Ljk1LDEyNS4zNSBDOTguOTksMTMzLjI1IDk0LjA1LDEzOS45NyA5MC42NywxNDcuMTQgQzg5LjI5LDE1MC4wNiA4Ny45NywxNTMuMjcgODcuOTUsMTU2LjUxIEM4OS42NCwxNTYuMDQgOTEuNDcsMTU1Ljc4IDkzLjM5LDE1NS43OCBDMTAwLjYyLDE1NS43OCAxMDYuNzEsMTU5LjM3IDEwOC42OCwxNjQuMyBDMTExLjYxLDE2NC42MSAxMTMuOTIsMTY2LjMzIDExNC4zNCwxNjguNTEgQzExNi40NSwxNjkuODEgMTE4LjEyLDE3MS42MyAxMTkuMTMsMTczLjc1IEw1MC41NSwxNzMuNzUgQzUyLjAyLDE3MC42MiA1NC4xNCwxNjcuMTYgNTYuNjYsMTY2LjIzIiBpZD0iUGF0aCIgZmlsbD0iI0Y3OEQyQyI+PC9wYXRoPgogICAgICAgICAgICA8ZyBpZD0iR3JvdXAiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE3LjAwMDAwMCwgMTgyLjAwMDAwMCkiIGZpbGw9IiNGRkZGRkYiPgogICAgICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlBhdGgiIHBvaW50cz0iMC41NCAxLjM5IDE4LjU0IDEuMzkgMTguNTQgNS4yMSA0LjggNS4yMSA0LjggMTEuNTIgMTYuOTcgMTEuNTIgMTYuOTcgMTUuMzMgNC44IDE1LjMzIDQuOCAyMS44NSAxOC43MSAyMS44NSAxOC43MSAyNS42NyAwLjU0IDI1LjY3Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMjEuNTUsMTMuNiBMMjEuNTUsMTMuNTMgQzIxLjU1LDYuNjMgMjYuNzIsMC45NyAzNC4wNywwLjk3IEMzOC41NCwwLjk3IDQxLjI1LDIuNTMgNDMuNTcsNC43NSBMNDAuODMsNy45MSBDMzguODksNi4xMSAzNi44MSw0Ljg5IDM0LjAzLDQuODkgQzI5LjQyLDQuODkgMjYuMDIsOC43MSAyNi4wMiwxMy40NiBMMjYuMDIsMTMuNTMgQzI2LjAyLDE4LjI4IDI5LjM4LDIyLjEzIDM0LjAzLDIyLjEzIEMzNy4wMSwyMi4xMyAzOC45MiwyMC45NSA0MSwxOS4wMSBMNDMuNzQsMjEuNzggQzQxLjIxLDI0LjQyIDM4LjQzLDI2LjA4MDAxMzYgMzMuODksMjYuMDgwMDEzNiBDMjYuODMsMjYuMDkgMjEuNTUsMjAuNTcgMjEuNTUsMTMuNiBaIiBpZD0iUGF0aCI+PC9wYXRoPgogICAgICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlBhdGgiIHBvaW50cz0iNDcuMjIgMS4zOSA1MS40OSAxLjM5IDUxLjQ5IDIxLjc4IDY0LjI1IDIxLjc4IDY0LjI1IDI1LjY2IDQ3LjIyIDI1LjY2Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSI2Ny45MyAxLjM5IDcyLjIgMS4zOSA3Mi4yIDI1LjY3IDY3LjkzIDI1LjY3Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNzcuNjcsMS4zOSBMODcuMjQsMS4zOSBDOTIuOTMsMS4zOSA5Ni40Nyw0LjYyIDk2LjQ3LDkuNTEgTDk2LjQ3LDkuNTggQzk2LjQ3LDE1LjAzIDkyLjEsMTcuODcgODYuNzYsMTcuODcgTDgxLjk0LDE3Ljg3IEw4MS45NCwyNS42NyBMNzcuNjcsMjUuNjcgTDc3LjY3LDEuMzkgWiBNODYuOSwxNC4wMiBDOTAuMTMsMTQuMDIgOTIuMTQsMTIuMjIgOTIuMTQsOS42OCBMOTIuMTQsOS42MSBDOTIuMTQsNi43NyA5MC4wOSw1LjI4IDg2LjksNS4yOCBMODEuOTQsNS4yOCBMODEuOTQsMTQuMDIgTDg2LjksMTQuMDIgWiIgaWQ9IlNoYXBlIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNOTguMjEsMjIuMTMgTDEwMC43OCwxOS4wOCBDMTAzLjEsMjEuMDkgMTA1LjQ2LDIyLjI0IDEwOC40NSwyMi4yNCBDMTExLjA5LDIyLjI0IDExMi43NSwyMC45OSAxMTIuNzUsMTkuMTkgTDExMi43NSwxOS4xMiBDMTEyLjc1LDE3LjM5IDExMS43OCwxNi40NSAxMDcuMjcsMTUuNDEgQzEwMi4xLDE0LjE2IDk5LjE5LDEyLjY0IDk5LjE5LDguMTYgTDk5LjE5LDguMDkgQzk5LjE5LDMuOTMgMTAyLjY2LDEuMDUgMTA3LjQ4LDEuMDUgQzExMS4wMiwxLjA1IDExMy44MywyLjEzIDExNi4yOSw0LjEgTDExNCw3LjMzIEMxMTEuODEsNS43IDEwOS42Myw0LjgzIDEwNy40MSw0LjgzIEMxMDQuOTEsNC44MyAxMDMuNDYsNi4xMSAxMDMuNDYsNy43MSBMMTAzLjQ2LDcuNzggQzEwMy40Niw5LjY1IDEwNC41NywxMC40OSAxMDkuMjUsMTEuNiBDMTE0LjM4LDEyLjg1IDExNy4wMiwxNC42OSAxMTcuMDIsMTguNzEgTDExNy4wMiwxOC43OCBDMTE3LjAyLDIzLjMyIDExMy40NSwyNi4wMyAxMDguMzUsMjYuMDMgQzEwNC42MiwyNi4wMiAxMDEuMTIsMjQuNzMgOTguMjEsMjIuMTMgWiIgaWQ9IlBhdGgiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJQYXRoIiBwb2ludHM9IjEyMC45OSAxLjM5IDEzOC45OSAxLjM5IDEzOC45OSA1LjIxIDEyNS4yNiA1LjIxIDEyNS4yNiAxMS41MiAxMzcuNDMgMTEuNTIgMTM3LjQzIDE1LjMzIDEyNS4yNiAxNS4zMyAxMjUuMjYgMjEuODUgMTM5LjE3IDIxLjg1IDEzOS4xNyAyNS42NyAxMjEgMjUuNjcgMTIxIDEuMzkiPjwvcG9seWdvbj4KICAgICAgICAgICAgPC9nPgogICAgICAgICAgICA8cGF0aCBkPSJNMjEuNjYsMzkuOTkgQzQxLjI2LDkuNDIgODAuNSwtMS4yNSAxMTMuMjMsMTMuNDQgQzExMi41MSwxMi45NCAxMTEuNzgsMTIuNDMgMTExLjAzLDExLjk1IEM3Ny41MiwtOS41NCAzMi45OCwwLjExIDExLjU2LDMzLjUyIEMtOS44Nyw2Ni45MiAtMC4wNiwxMTEuNDMgMzMuNDUsMTMyLjkyIEMzNC4yLDEzMy40IDM0Ljk2LDEzMy44NSAzNS43MiwxMzQuMyBDOC43MywxMTAuNjggMi4wNiw3MC41NiAyMS42NiwzOS45OSIgaWQ9IlBhdGgiIGZpbGw9IiNGNzhEMkMiPjwvcGF0aD4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==" alt="Eclipse Incubator Logo"/></a><style data-emotion-css="1uno72p">.css-1uno72p{font-size:0.9rem;}</style><style data-emotion-css="2r9mng">.css-2r9mng{font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.125;font-weight:700;margin-top:16px;margin-bottom:16px;font-size:16px;font-size:0.9rem;}</style><h6 class="css-2r9mng">OpenJ9 is an Eclipse Incubator Project</h6></section><style data-emotion-css="90v6js">.css-90v6js{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex:100%;-ms-flex:100%;flex:100%;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;}@media screen and (min-width:560px){.css-90v6js{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex:50%;-ms-flex:50%;flex:50%;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;}}@media screen and (min-width:1000px){.css-90v6js{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex:50%;-ms-flex:50%;flex:50%;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;}}@media screen and (min-width:1366px){.css-90v6js{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex:50%;-ms-flex:50%;flex:50%;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;}}.css-90v6js a{color:white;-webkit-text-decoration:none;text-decoration:none;}.css-90v6js a:hover{color:var(--theme-ui-colors-links,#5DA7A3);}</style><nav class="css-90v6js"><style data-emotion-css="hkdp8o">.css-hkdp8o{-webkit-flex:1;-ms-flex:1;flex:1;padding-left:2rem;margin-right:1.1rem;padding:1rem;font-size:1rem;}@media screen and (min-width:560px){.css-hkdp8o{padding-left:0.8rem;padding:0;font-size:0.9rem;}}@media screen and (min-width:1000px){.css-hkdp8o{padding-left:0.8rem;font-size:1rem;}}@media screen and (min-width:1366px){.css-hkdp8o{padding-left:0.8rem;font-size:1rem;}}</style><section class="css-hkdp8o"><style data-emotion-css="1p7eyhh">.css-1p7eyhh{margin-bottom:0.2rem;}</style><style data-emotion-css="shyl6e">.css-shyl6e{font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.125;font-weight:700;margin-top:16px;margin-bottom:16px;font-size:20px;margin-bottom:0.2rem;}</style><h4 class="css-shyl6e">Docs</h4><style data-emotion-css="1l04qsy">.css-1l04qsy{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;list-style:none;-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}.css-1l04qsy li{padding:0;}.css-1l04qsy li:first-of-type{margin-left:0;}.css-1l04qsy li:last-child{margin-right:0;padding-right:0;}</style><ul class="css-1l04qsy"><li><style data-emotion-css="14i0930">.css-14i0930{-webkit-text-decoration:none;text-decoration:none;color:white;}</style><a href="https://www.eclipse.org/openj9/docs/openj9_newuser/" rel="noopener noreferrer" target="_blank" class="css-14i0930">New to OpenJ9?</a></li><li><a href="https://www.eclipse.org/openj9/docs/introduction/" rel="noopener noreferrer" target="_blank" class="css-14i0930">Getting started</a></li><li><a href="https://www.eclipse.org/openj9/docs/cmdline_specifying/" rel="noopener noreferrer" target="_blank" class="css-14i0930">Command-line options</a></li></ul></section><style data-emotion-css="7usxs3">.css-7usxs3{-webkit-flex:1;-ms-flex:1;flex:1;padding-left:2rem;padding:1rem;font-size:1rem;}@media screen and (min-width:560px){.css-7usxs3{padding-left:0.8rem;padding:0;font-size:0.9rem;}}@media screen and (min-width:1000px){.css-7usxs3{padding-left:0;font-size:1rem;}}@media screen and (min-width:1366px){.css-7usxs3{padding-left:0;font-size:1rem;}}</style><section class="css-7usxs3"><h4 class="css-shyl6e">Resources</h4><ul class="css-1l04qsy"><li><a class="css-14i0930" href="/openj9/about">About</a></li><li><a class="css-14i0930" href="/openj9/performance">Performance</a></li></ul></section><style data-emotion-css="rlig4a">.css-rlig4a{-webkit-flex:1;-ms-flex:1;flex:1;padding-left:2rem;padding:1rem;font-size:1rem;margin-left:0;}@media screen and (min-width:560px){.css-rlig4a{padding-left:0;padding:0;font-size:0.9rem;margin-left:1rem;}}@media screen and (min-width:1000px){.css-rlig4a{padding-left:0;font-size:1rem;}}@media screen and (min-width:1366px){.css-rlig4a{padding-left:0;font-size:1rem;}}</style><section class="css-rlig4a"><h4 class="css-shyl6e">Community</h4><ul class="css-1l04qsy"><li><a class="css-14i0930" href="/openj9/news">News</a></li><li><a href="https://blog.openj9.org/" rel="noopener noreferrer" target="_blank" class="css-14i0930">Blogs</a></li></ul></section></nav><style data-emotion-css="13pxy6t">.css-13pxy6t{-webkit-flex:25%;-ms-flex:25%;flex:25%;display:none;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}@media screen and (min-width:560px){.css-13pxy6t{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:flex-end;-webkit-box-align:flex-end;-ms-flex-align:flex-end;align-items:flex-end;}}@media screen and (min-width:1000px){.css-13pxy6t{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:flex-end;-webkit-box-align:flex-end;-ms-flex-align:flex-end;align-items:flex-end;}}@media screen and (min-width:1366px){.css-13pxy6t{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:flex-end;-webkit-box-align:flex-end;-ms-flex-align:flex-end;align-items:flex-end;}}</style><section class="css-13pxy6t"><style data-emotion-css="10op7gg">.css-10op7gg{font-size:0.9rem;margin-top:1.3rem;margin-left:0.6rem;}</style><style data-emotion-css="z87sw5">.css-z87sw5{font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.125;font-weight:700;margin-top:16px;margin-bottom:16px;font-size:16px;font-size:0.9rem;margin-top:1.3rem;margin-left:0.6rem;}</style><h6 class="css-z87sw5">OpenJ9 is an Eclipse Incubator Project</h6><a href="https://wiki.eclipse.org/Development_Resources/Process_Guidelines/What_is_Incubation" rel="noopener noreferrer" target="_blank"><img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNTBweCIgaGVpZ2h0PSI3NXB4IiB2aWV3Qm94PSIwIDAgMTU3IDIzMSIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KICAgIDwhLS0gR2VuZXJhdG9yOiBTa2V0Y2ggNjEuMiAoODk2NTMpIC0gaHR0cHM6Ly9za2V0Y2guY29tIC0tPgogICAgPHRpdGxlPmVjbGlwc2VfaW5jdWJhdGlvbl92ZXJ0aWNhbF9zdmc8L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0iZWNsaXBzZV9pbmN1YmF0aW9uX3ZlcnRpY2FsX3N2ZyIgZmlsbC1ydWxlPSJub256ZXJvIj4KICAgICAgICAgICAgPGcgaWQ9Ikdyb3VwIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNy4wMDAwMDAsIDIxNC4wMDAwMDApIiBmaWxsPSIjRkZGRkZGIj4KICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJQYXRoIiBwb2ludHM9IjAuNzUgMC4zNCAxLjkyIDAuMzQgMS45MiAxNi4wMyAwLjc1IDE2LjAzIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSI1LjYyIDAuMzQgNi43MiAwLjM0IDE3LjU1IDEzLjk5IDE3LjU1IDAuMzQgMTguNjcgMC4zNCAxOC42NyAxNi4wMyAxNy44IDE2LjAzIDYuNzUgMi4wOSA2Ljc1IDE2LjAzIDUuNjMgMTYuMDMgNS42MyAwLjM0Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMjEuODYsOC4yMyBMMjEuODYsOC4xOSBDMjEuODYsMy43NSAyNS4xOCwwLjA4IDI5LjcxLDAuMDggQzMyLjUxLDAuMDggMzQuMTksMS4xMSAzNS44MSwyLjU5IEwzNC45OCwzLjQ0IEMzMy42MSwyLjEyIDMyLjA0LDEuMTMgMjkuNjksMS4xMyBDMjUuOTIsMS4xMyAyMy4wOCw0LjIgMjMuMDgsOC4xNSBMMjMuMDgsOC4xOSBDMjMuMDgsMTIuMTYgMjUuOTcsMTUuMjUgMjkuNzEsMTUuMjUgQzMxLjk3LDE1LjI1IDMzLjUyLDE0LjM3IDM1LjExLDEyLjgxIEwzNS44OSwxMy41NyBDMzQuMjMsMTUuMjEgMzIuNDQsMTYuMyAyOS42NiwxNi4zIEMyNS4xOCwxNi4zIDIxLjg2LDEyLjc0IDIxLjg2LDguMjMgWiIgaWQ9IlBhdGgiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0zOC40LDkuNTEgTDM4LjQsMC4zNCBMMzkuNTcsMC4zNCBMMzkuNTcsOS40IEMzOS41NywxMy4xIDQxLjU3LDE1LjIzIDQ0Ljg4LDE1LjIzIEM0OC4wNiwxNS4yMyA1MC4xLDEzLjMgNTAuMSw5LjUxIEw1MC4xLDAuMzQgTDUxLjI3LDAuMzQgTDUxLjI3LDkuMzcgQzUxLjI3LDEzLjg4IDQ4LjY1LDE2LjI3MDAzMTQgNDQuODQsMTYuMjcwMDMxNCBDNDEuMDcsMTYuMjggMzguNCwxMy45IDM4LjQsOS41MSBaIiBpZD0iUGF0aCI+PC9wYXRoPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTU0LjAyLDAuMzQgTDYwLjUsMC4zNCBDNjIuMjcsMC4zNCA2My43MSwwLjg2IDY0LjU4LDEuNzMgQzY1LjIzLDIuMzggNjUuNTksMy4yMSA2NS41OSw0LjIgTDY1LjU5LDQuMjQgQzY1LjU5LDYuMzcgNjQuMiw3LjQ1IDYyLjkyLDcuOTYgQzY0LjgsOC40NSA2Ni40Niw5LjUzIDY2LjQ2LDExLjcgTDY2LjQ2LDExLjc0IEM2Ni40NiwxNC4zNiA2NC4yMiwxNi4wMiA2MC44MywxNi4wMiBMNTQuMDIsMTYuMDIgTDU0LjAyLDAuMzQgTDU0LjAyLDAuMzQgWiBNNjQuNCw0LjMxIEM2NC40LDIuNTggNjIuOTksMS40MiA2MC40OCwxLjQyIEw1NS4xOSwxLjQyIEw1NS4xOSw3LjU4IEw2MC4zNyw3LjU4IEM2Mi43Miw3LjU4IDY0LjQsNi40NCA2NC40LDQuMzUgTDY0LjQsNC4zMSBaIE02MC41LDguNjYgTDU1LjE5LDguNjYgTDU1LjE5LDE0Ljk2IEw2MC44OCwxNC45NiBDNjMuNTcsMTQuOTYgNjUuMjcwMDQ0NCwxMy43MyA2NS4yNzAwNDQ0LDExLjc1IEw2NS4yNzAwNDQ0LDExLjcxIEM2NS4yOCw5Ljc4IDYzLjYsOC42NiA2MC41LDguNjYgWiIgaWQ9IlNoYXBlIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNzYuMjgsMC4yMyBMNzcuNCwwLjIzIEw4NC43MSwxNi4wMyBMODMuNDMsMTYuMDMgTDgxLjQ0LDExLjY0IEw3Mi4xOCwxMS42NCBMNzAuMTksMTYuMDMgTDY4Ljk4LDE2LjAzIEw3Ni4yOCwwLjIzIFogTTgwLjk0LDEwLjU5IEw3Ni44MiwxLjUxIEw3Mi42NywxMC41OSBMODAuOTQsMTAuNTkgWiIgaWQ9IlNoYXBlIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSI5MS4wNSAxLjQyIDg1LjU4IDEuNDIgODUuNTggMC4zNCA5Ny42OCAwLjM0IDk3LjY4IDEuNDIgOTIuMjEgMS40MiA5Mi4yMSAxNi4wMyA5MS4wNCAxNi4wMyA5MS4wNCAxLjQyIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSIxMDEuMjkgMC4zNCAxMDIuNDYgMC4zNCAxMDIuNDYgMTYuMDMgMTAxLjI5IDE2LjAzIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTA1LjkxLDguMjMgTDEwNS45MSw4LjE5IEMxMDUuOTEsMy45MSAxMDkuMDcsMC4wOCAxMTMuODIsMC4wOCBDMTE4LjU3LDAuMDggMTIxLjY5LDMuODcgMTIxLjY5LDguMTUgTDEyMS42OSw4LjE5IEMxMjEuNjksMTIuNDcgMTE4LjUzLDE2LjMgMTEzLjc4LDE2LjMgQzEwOS4wMywxNi4zIDEwNS45MSwxMi41MSAxMDUuOTEsOC4yMyBaIE0xMjAuNDgsOC4yMyBMMTIwLjQ4LDguMTkgQzEyMC40OCw0LjMxIDExNy42NiwxLjEzIDExMy43OCwxLjEzIEMxMDkuOSwxLjEzIDEwNy4xMiw0LjI3IDEwNy4xMiw4LjE1IEwxMDcuMTIsOC4xOSBDMTA3LjEyLDEyLjA3IDEwOS45NCwxNS4yNSAxMTMuODIsMTUuMjUgQzExNy43LDE1LjI1IDEyMC40OCwxMi4xMSAxMjAuNDgsOC4yMyBaIiBpZD0iU2hhcGUiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJQYXRoIiBwb2ludHM9IjEyNC44OSAwLjM0IDEyNS45OSAwLjM0IDEzNi44MiAxMy45OSAxMzYuODIgMC4zNCAxMzcuOTQgMC4zNCAxMzcuOTQgMTYuMDMgMTM3LjA3IDE2LjAzIDEyNi4wMiAyLjA5IDEyNi4wMiAxNi4wMyAxMjQuOSAxNi4wMyAxMjQuOSAwLjM0Ij48L3BvbHlnb24+CiAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgPHBhdGggZD0iTTU2LjY2LDE2Ni4yMyBDNTcuNTEsMTYzLjQ4IDYwLjQzLDE2MS40MyA2My45NCwxNjEuNDMgQzY1LjE0LDE2MS40MyA2Ni4yNSwxNjEuNjkgNjcuMjUsMTYyLjExIEM2OS40NiwxNjAuNjQgNzIuMTksMTU5Ljc2IDc1LjE3LDE1OS43NiBMNzUuMTksMTU5Ljc2IEM3Ni4xMSwxNTcuOSA3OC40OCwxNTYuNTcgODEuMywxNTYuNTcgQzgyLjA0LDE1Ni41NyA4Mi43NSwxNTYuNjcgODMuNDIsMTU2Ljg0IEM4My4zMywxNTQuNTYgODMuNjksMTUyLjE4IDg0LjU1LDE0OS42OCBDODUuNTUsMTQ2Ljc5IDg3LDE0NC4wMyA4OC41MiwxNDEuMjggQzg4LjE3LDEzNy4xNiA4Ny45LDEzMy41IDgyLjc0LDEzMiBDODAuODIsMTMxLjQ0IDc4LjgyLDEzMS4yNyA3Ni44NiwxMzEuMDQgTDc2Ljg1LDEzMS4wNCBMNzYuODUsMTMxLjAzIEM3Ni4wMSwxMzAuOTMgNzUuMTcsMTMwLjgxIDc0LjM1LDEzMC42NSBDNjAuMTgsMTQ1LjQxIDQwLjIsMTA5Ljk3IDQwLjIsMTA5Ljk3IEM4NC4zLDEwMy4xMyA3Ni4wMSwxMjUuNjEgNzYuMDEsMTI1LjYxIEM3Mi44MSwxMjQuMDUgNzEuOTMsMTIyLjA4IDY5LjQ5LDExOS43MyBDNjMuOTIsMTE0LjM4IDUwLjYyLDExMy40NCA1MC42MiwxMTMuNDQgQzY2LjU0LDExNy41MSA2OC43MSwxMjUuMjIgNzQuOTcsMTI3LjY5IEM3Ni4zOSwxMjguMDEgNzcuOSwxMjguMTMgNzkuMzUsMTI4LjI5IEM4Mi4xNSwxMjguNTkgODQuODksMTI5LjExIDg3LjIyLDEzMC42MSBDODkuNjMsMTMyLjE2IDkwLjcxLDEzNC4wOSA5MS4yNiwxMzYuMjYgQzkzLDEzMi45NCA5NC41LDEyOS41NiA5NS4wNywxMjUuOTIgQzk1LjgsMTIxLjI3IDk1LjEzLDExNS44OCA5MS44MywxMTIuMDcgQzg4Ljc4LDEwOC41NSA4NC42NiwxMDUuODkgODEuNCwxMDIuNTIgQzc3LjkyLDk4LjkxIDc1LjYxLDk0LjQ2IDc1LjUyLDg5LjcxIEM3My43Niw4NS44NiA3MC45LDgxLjM5IDY4LjI4LDc5LjY1IEM1Ni45LDkwLjM0IDQxLjksNjIuNTggNDEuOSw2Mi41OCBDNzYuODgsNTcuNyA3MS4xLDc1LjY3IDcxLjEsNzUuNjcgQzYyLjcsNjYuMjggNTIuMzEsNjcuMTIgNTIuMzEsNjcuMTIgQzYwLjcxLDY5Ljc5IDY3LjM0LDc1LjE1IDcxLjIsNzguODMgTDcxLjczLDc5LjM2IEM3My4zLDgxIDc0LjksODIuNzUgNzYuMjQsODQuNjMgQzc3LjYsNzkuNDggODAuNzcsNzIuMjcgODMuMjYsNjcuOTcgQzgzLjI2LDY3Ljk3IDkxLjY2LDUzLjE1IDEwNS44LDQzLjkgQzEwNS44LDQzLjkgOTUuMDIsNDUuMTQgODMuNDEsNjIuODkgQzgzLjQxLDYyLjg5IDY3Ljk5LDM4LjcgMTE3LjgzLDM0LjIzIEMxMTcuODMsMzQuMjMgMTE0LjQsNzguMTcgODcuNDUsNjkuNjMgQzgyLjc3LDc2LjY3IDc5LjcsODQuNzQgODAuMzMsOTAuNDIgQzgwLjk1LDk1Ljk2IDg0LjgzLDk5Ljg2IDg5LjExLDEwMy41IEM5MC4yNSw5Ny42NiA5NC40Niw5Mi42MyAxMDAuNjUsODkuODkgQzEwNS42LDg3LjkyIDExMi45LDg2LjAzIDExOS43Miw4NS42MiBDMTE5LjcyLDg1LjYyIDEwNi4zOSw4Mi41OCA5Ni4yNSw4OS41MSBDOTYuMjUsODkuNTEgOTYuNDIsNjkuMjIgMTMyLjM0LDgzLjk1IEMxMzIuMzQsODMuOTUgMTA2LjM0LDExMC4yOSA5Ny45OSw5NC41OSBDOTQuMDMsOTcuMiA5MS41MywxMDEuNTggOTIuMTgsMTA2LjExIEM5NC41LDEwOC4xNCA5Ni42NiwxMTAuMzMgOTcuOTcsMTEzLjAzIEM5OS44LDExNi44MiAxMDAuNDUsMTIxLjI0IDk5Ljk1LDEyNS4zNSBDOTguOTksMTMzLjI1IDk0LjA1LDEzOS45NyA5MC42NywxNDcuMTQgQzg5LjI5LDE1MC4wNiA4Ny45NywxNTMuMjcgODcuOTUsMTU2LjUxIEM4OS42NCwxNTYuMDQgOTEuNDcsMTU1Ljc4IDkzLjM5LDE1NS43OCBDMTAwLjYyLDE1NS43OCAxMDYuNzEsMTU5LjM3IDEwOC42OCwxNjQuMyBDMTExLjYxLDE2NC42MSAxMTMuOTIsMTY2LjMzIDExNC4zNCwxNjguNTEgQzExNi40NSwxNjkuODEgMTE4LjEyLDE3MS42MyAxMTkuMTMsMTczLjc1IEw1MC41NSwxNzMuNzUgQzUyLjAyLDE3MC42MiA1NC4xNCwxNjcuMTYgNTYuNjYsMTY2LjIzIiBpZD0iUGF0aCIgZmlsbD0iI0Y3OEQyQyI+PC9wYXRoPgogICAgICAgICAgICA8ZyBpZD0iR3JvdXAiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE3LjAwMDAwMCwgMTgyLjAwMDAwMCkiIGZpbGw9IiNGRkZGRkYiPgogICAgICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlBhdGgiIHBvaW50cz0iMC41NCAxLjM5IDE4LjU0IDEuMzkgMTguNTQgNS4yMSA0LjggNS4yMSA0LjggMTEuNTIgMTYuOTcgMTEuNTIgMTYuOTcgMTUuMzMgNC44IDE1LjMzIDQuOCAyMS44NSAxOC43MSAyMS44NSAxOC43MSAyNS42NyAwLjU0IDI1LjY3Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMjEuNTUsMTMuNiBMMjEuNTUsMTMuNTMgQzIxLjU1LDYuNjMgMjYuNzIsMC45NyAzNC4wNywwLjk3IEMzOC41NCwwLjk3IDQxLjI1LDIuNTMgNDMuNTcsNC43NSBMNDAuODMsNy45MSBDMzguODksNi4xMSAzNi44MSw0Ljg5IDM0LjAzLDQuODkgQzI5LjQyLDQuODkgMjYuMDIsOC43MSAyNi4wMiwxMy40NiBMMjYuMDIsMTMuNTMgQzI2LjAyLDE4LjI4IDI5LjM4LDIyLjEzIDM0LjAzLDIyLjEzIEMzNy4wMSwyMi4xMyAzOC45MiwyMC45NSA0MSwxOS4wMSBMNDMuNzQsMjEuNzggQzQxLjIxLDI0LjQyIDM4LjQzLDI2LjA4MDAxMzYgMzMuODksMjYuMDgwMDEzNiBDMjYuODMsMjYuMDkgMjEuNTUsMjAuNTcgMjEuNTUsMTMuNiBaIiBpZD0iUGF0aCI+PC9wYXRoPgogICAgICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlBhdGgiIHBvaW50cz0iNDcuMjIgMS4zOSA1MS40OSAxLjM5IDUxLjQ5IDIxLjc4IDY0LjI1IDIxLjc4IDY0LjI1IDI1LjY2IDQ3LjIyIDI1LjY2Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSI2Ny45MyAxLjM5IDcyLjIgMS4zOSA3Mi4yIDI1LjY3IDY3LjkzIDI1LjY3Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNzcuNjcsMS4zOSBMODcuMjQsMS4zOSBDOTIuOTMsMS4zOSA5Ni40Nyw0LjYyIDk2LjQ3LDkuNTEgTDk2LjQ3LDkuNTggQzk2LjQ3LDE1LjAzIDkyLjEsMTcuODcgODYuNzYsMTcuODcgTDgxLjk0LDE3Ljg3IEw4MS45NCwyNS42NyBMNzcuNjcsMjUuNjcgTDc3LjY3LDEuMzkgWiBNODYuOSwxNC4wMiBDOTAuMTMsMTQuMDIgOTIuMTQsMTIuMjIgOTIuMTQsOS42OCBMOTIuMTQsOS42MSBDOTIuMTQsNi43NyA5MC4wOSw1LjI4IDg2LjksNS4yOCBMODEuOTQsNS4yOCBMODEuOTQsMTQuMDIgTDg2LjksMTQuMDIgWiIgaWQ9IlNoYXBlIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNOTguMjEsMjIuMTMgTDEwMC43OCwxOS4wOCBDMTAzLjEsMjEuMDkgMTA1LjQ2LDIyLjI0IDEwOC40NSwyMi4yNCBDMTExLjA5LDIyLjI0IDExMi43NSwyMC45OSAxMTIuNzUsMTkuMTkgTDExMi43NSwxOS4xMiBDMTEyLjc1LDE3LjM5IDExMS43OCwxNi40NSAxMDcuMjcsMTUuNDEgQzEwMi4xLDE0LjE2IDk5LjE5LDEyLjY0IDk5LjE5LDguMTYgTDk5LjE5LDguMDkgQzk5LjE5LDMuOTMgMTAyLjY2LDEuMDUgMTA3LjQ4LDEuMDUgQzExMS4wMiwxLjA1IDExMy44MywyLjEzIDExNi4yOSw0LjEgTDExNCw3LjMzIEMxMTEuODEsNS43IDEwOS42Myw0LjgzIDEwNy40MSw0LjgzIEMxMDQuOTEsNC44MyAxMDMuNDYsNi4xMSAxMDMuNDYsNy43MSBMMTAzLjQ2LDcuNzggQzEwMy40Niw5LjY1IDEwNC41NywxMC40OSAxMDkuMjUsMTEuNiBDMTE0LjM4LDEyLjg1IDExNy4wMiwxNC42OSAxMTcuMDIsMTguNzEgTDExNy4wMiwxOC43OCBDMTE3LjAyLDIzLjMyIDExMy40NSwyNi4wMyAxMDguMzUsMjYuMDMgQzEwNC42MiwyNi4wMiAxMDEuMTIsMjQuNzMgOTguMjEsMjIuMTMgWiIgaWQ9IlBhdGgiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJQYXRoIiBwb2ludHM9IjEyMC45OSAxLjM5IDEzOC45OSAxLjM5IDEzOC45OSA1LjIxIDEyNS4yNiA1LjIxIDEyNS4yNiAxMS41MiAxMzcuNDMgMTEuNTIgMTM3LjQzIDE1LjMzIDEyNS4yNiAxNS4zMyAxMjUuMjYgMjEuODUgMTM5LjE3IDIxLjg1IDEzOS4xNyAyNS42NyAxMjEgMjUuNjcgMTIxIDEuMzkiPjwvcG9seWdvbj4KICAgICAgICAgICAgPC9nPgogICAgICAgICAgICA8cGF0aCBkPSJNMjEuNjYsMzkuOTkgQzQxLjI2LDkuNDIgODAuNSwtMS4yNSAxMTMuMjMsMTMuNDQgQzExMi41MSwxMi45NCAxMTEuNzgsMTIuNDMgMTExLjAzLDExLjk1IEM3Ny41MiwtOS41NCAzMi45OCwwLjExIDExLjU2LDMzLjUyIEMtOS44Nyw2Ni45MiAtMC4wNiwxMTEuNDMgMzMuNDUsMTMyLjkyIEMzNC4yLDEzMy40IDM0Ljk2LDEzMy44NSAzNS43MiwxMzQuMyBDOC43MywxMTAuNjggMi4wNiw3MC41NiAyMS42NiwzOS45OSIgaWQ9IlBhdGgiIGZpbGw9IiNGNzhEMkMiPjwvcGF0aD4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==" alt="Eclipse Incubator Logo"/></a></section><style data-emotion-css="1mjb60s">.css-1mjb60s{height:2px;background-color:var(--theme-ui-colors-secondary,#5DA7A3);width:100%;margin-top:16px;margin-bottom:16px;}</style><div class="css-1mjb60s"></div><style data-emotion-css="6gs9hh">.css-6gs9hh{width:70%;}</style><nav class="css-6gs9hh"><style data-emotion-css="1rx6mfb">.css-1rx6mfb{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}@media screen and (min-width:560px){.css-1rx6mfb{-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;}}@media screen and (min-width:1000px){.css-1rx6mfb{-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;}}@media screen and (min-width:1366px){.css-1rx6mfb{-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;}}.css-1rx6mfb li{padding:0.4rem;font-size:0.9rem;list-style-type:none;padding-left:1rem;color:white;}@media screen and (min-width:560px){.css-1rx6mfb li{font-size:0.7rem;}}@media screen and (min-width:1000px){.css-1rx6mfb li{font-size:1rem;}}@media screen and (min-width:1366px){.css-1rx6mfb li{font-size:1rem;}}.css-1rx6mfb a{color:white;-webkit-text-decoration:none;text-decoration:none;}.css-1rx6mfb a:hover{color:var(--theme-ui-colors-links,#5DA7A3);}</style><ul class="css-1rx6mfb"><style data-emotion-css="1lir2xx">.css-1lir2xx{padding-left:1rem;}@media screen and (min-width:560px){.css-1lir2xx{padding-left:0rem !important;}}@media screen and (min-width:1000px){.css-1lir2xx{padding-left:0.5rem !important;}}@media screen and (min-width:1366px){.css-1lir2xx{padding-left:0.5 !important;}}</style><li class="css-1lir2xx"><a href="https://www.eclipse.org/" rel="noopener noreferrer" target="_blank" class="css-14i0930">Eclipse Foundation Website </a></li><li><a href="https://www.eclipse.org/legal/privacy.php" rel="noopener noreferrer" target="_blank" class="css-14i0930">Privacy Policy</a></li><li><a href="https://www.eclipse.org/legal/termsofuse.php" rel="noopener noreferrer" target="_blank" class="css-14i0930">Terms of Use</a></li><li><a href="https://www.eclipse.org/legal/copyright.php" rel="noopener noreferrer" target="_blank" class="css-14i0930">Copyright Agent</a></li><li><a href="https://www.eclipse.org/legal/" rel="noopener noreferrer" target="_blank" class="css-14i0930">Legal</a></li></ul></nav><style data-emotion-css="15pdxr9">.css-15pdxr9{display:inline;-webkit-flex:30%;-ms-flex:30%;flex:30%;}@media screen and (min-width:560px){.css-15pdxr9{display:inline;}}@media screen and (min-width:1000px){.css-15pdxr9{display:block;}}@media screen and (min-width:1366px){.css-15pdxr9{display:block;}}</style><nav class="css-15pdxr9"><style data-emotion-css="1q18ssc">.css-1q18ssc{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;list-style:none;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;}.css-1q18ssc li{padding:8px;margin-left:8px;margin-right:8px;}.css-1q18ssc li a{color:white;-webkit-text-decoration:none;text-decoration:none;}.css-1q18ssc li a:hover{color:var(--theme-ui-colors-links,#5DA7A3);}.css-1q18ssc li:first-of-type{margin-left:0;}.css-1q18ssc li:last-child{margin-right:0;padding-right:0;}@media screen and (min-width:560px){.css-1q18ssc{-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end;}}@media screen and (min-width:1000px){.css-1q18ssc{-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end;}}@media screen and (min-width:1366px){.css-1q18ssc{-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end;}}</style><ul class="css-1q18ssc"><li><a href="https://twitter.com/openj9/" rel="noopener noreferrer" target="_blank"> <img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIyNXB4IiB2aWV3Qm94PSIwIDAgMjUgMjUiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5Ud2l0dGVyPC90aXRsZT4KICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPgogICAgPGcgaWQ9IlBhZ2UtMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9IlR3aXR0ZXIiIGZpbGwtcnVsZT0ibm9uemVybyI+CiAgICAgICAgICAgIDxnIGlkPSJ0d2l0dGVyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjAwMDAwMCwgMC4yOTg4NzkpIj4KICAgICAgICAgICAgICAgIDxlbGxpcHNlIGlkPSJPdmFsLXBhdGgiIGZpbGw9IiM0MzQzNDMiIGN4PSIxMi41MDAyMjEyIiBjeT0iMTIuMjcyNzI3MyIgcng9IjEyLjUiIHJ5PSIxMi4yNzI3MjczIj48L2VsbGlwc2U+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTIuNTAwMjIxMiwwIEMxOS40MDM3ODA2LDAgMjUuMDAwMjIxMiw1LjQ5NDY4NzE2IDI1LjAwMDIyMTIsMTIuMjcyNzI3MyBDMjUuMDAwMjIxMiwxOS4wNTA3Njc0IDE5LjQwMzc4MDYsMjQuNTQ1NDU0NSAxMi41MDAyMjEyLDI0LjU0NTQ1NDUgQzUuNTk2NjYxODcsMjQuNTQ1NDU0NSAwLjAwMDIyMTIzODkzOCwxOS4wNTA3Njc0IDAuMDAwMjIxMjM4OTM4LDEyLjI3MjcyNzMgQzAuMDAwMjIxMjM4OTM4LDUuNDk0Njg3MTYgNS41OTY2NjE4NywwIDEyLjUwMDIyMTIsMCBaIE0xNS4xMDM0MzMzLDYuODE4MTgxODIgQzEzLjQ2NTM4MDIsNi44MTgxODE4MiAxMi4xMzY4NDA0LDguMDkyMTI0MTEgMTIuMTM2ODQwNCw5LjY2Mjg1OTk2IEMxMi4xMzY4NDA0LDkuODg1ODI2MzggMTIuMTYzMTY3OCwxMC4xMDI4NTI3IDEyLjIxNDA1MjgsMTAuMzExMTgxIEM5Ljc0ODU2NjA0LDEwLjE5MjU5MDggNy41NjI1MDQxLDkuMDYwMTUwNTQgNi4wOTkyMjk3Niw3LjMzODU3ODIzIEM1Ljg0MzkyMDAzLDcuNzU4NjI5MTUgNS42OTc0NTk4NSw4LjI0NzYyNzgxIDUuNjk3NDU5ODUsOC43Njg4NzI4MSBDNS42OTc0NTk4NSw5Ljc1NTU2ODE3IDYuMjIxNTc0ODksMTAuNjI2NjQzNCA3LjAxNzE1MDExLDExLjEzNjY0NDcgQzYuNTMxMDg4MTcsMTEuMTIyMDA2NSA2LjA3MzM0NDgsMTAuOTk0MDgxOSA1LjY3MzU2NjA0LDEwLjc4MDQ1IEw1LjY3MzM0NDgsMTAuODE2NTE0OSBMNS42NzMzNDQ4LDEwLjgxNjUxNDkgQzUuNjczMzQ0OCwxMi4xOTQ4MzM1IDYuNjk2MzUzNjUsMTMuMzQ0NDU3NyA4LjA1MzIxMjA2LDEzLjYwNTYxMDYgQzcuODA0NTM5NSwxMy42NzA5NTE5IDcuNTQxOTI4ODgsMTMuNzA1NTMxOCA3LjI3MTc5NjEzLDEzLjcwNTUzMTggQzcuMDgwMjAzMjEsMTMuNzA1NTMxOCA2Ljg5NDU4Mzc0LDEzLjY4NzkyMzYgNi43MTM2MTAyOSwxMy42NTQ4Mjg3IEM3LjA5MTA0MzkyLDE0Ljc4NDcyMzIgOC4xODYzOTc5LDE1LjYwNzIxNjkgOS40ODQ4NDkyMywxNS42MzAzNDA5IEM4LjQ2OTM2MjUsMTYuMzkzNDMzNCA3LjE5MDM4MDIsMTYuODQ4MDY0MiA1LjgwMDExNDcyLDE2Ljg0ODA2NDIgQzUuNTYxMTc2NjYsMTYuODQ4MDY0MiA1LjMyNDQ1MSwxNi44MzQ2OTkgNS4wOTI4MTM4MywxNi44MDgxODA2IEM2LjQwNDk4MTk3LDE3LjYxNTYxMTggNy45NjQ3MTY0OSwxOC4wODYzNjU4IDkuNjM5OTM3NzMsMTguMDg2MzY1OCBDMTUuMDk2NTc0OSwxOC4wODYzNjU4IDE4LjA4MDY0NTcsMTMuNzUxNzc5OCAxOC4wODA2NDU3LDkuOTkyMzI0MTQgQzE4LjA4MDY0NTcsOS44NjkwNjY3NyAxOC4wNzc3Njk2LDkuNzQ2MjMzNyAxOC4wNzIwMTc0LDkuNjI0NDYxMzcgQzE4LjY1MjEwNTksOS4yMjM1MDM2OCAxOS4xNTQ5ODIsOC43MjI2MjQ3OCAxOS41NTI1NDgzLDguMTUyMTYxNjkgQzE5LjAyMDY4OTksOC4zNzgzMTAzMiAxOC40NDg1NjYsOC41MzEyNjgyNSAxNy44NDg1NjYsOC41OTk1Nzk1NiBDMTguNDYxMTc2Nyw4LjI0NzYyNzgxIDE4LjkzMTMwOTQsNy42OTA3NDIxMyAxOS4xNTMyMTIxLDcuMDI2MDg1ODEgQzE4LjU3OTk4Miw3LjM1MjE1NTYzIDE3Ljk0NDgwNSw3LjU4ODY5OTQ2IDE3LjI2OTM2MjUsNy43MTYxOTk3NiBDMTYuNzI4MjEyMSw3LjE2MzU1NzAyIDE1Ljk1NzE5NDQsNi44MTgxODE4MiAxNS4xMDM0MzMzLDYuODE4MTgxODIgWiIgaWQ9IkNvbWJpbmVkLVNoYXBlIiBmaWxsPSIjRkZGRkZGIj48L3BhdGg+CiAgICAgICAgICAgIDwvZz4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==" alt="Twitter Logo"/></a></li><li><a href="https://github.com/eclipse/openj9" rel="noopener noreferrer" target="_blank"> <img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIyNXB4IiB2aWV3Qm94PSIwIDAgMjUgMjUiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5HaXRIdWI8L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0iR2l0SHViIiBmaWxsPSIjRkZGRkZGIiBmaWxsLXJ1bGU9Im5vbnplcm8iPgogICAgICAgICAgICA8ZyBpZD0iZ2l0aHViLWxvZ28iPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTIzLjMyMzIwOSw2LjM1NjM4NTg4IEMyMi4yMDU0MjQzLDQuNDI4ODY0OTMgMjAuNjg5MjIwNywyLjkwMjg0MzkxIDE4Ljc3NDE5OTMsMS43Nzc5Nzg1OCBDMTYuODU4ODkyOCwwLjY1MzA1NTg3MyAxNC43Njc5NDkxLDAuMDkwNzM3OTUzMyAxMi40OTk4ODYsMC4wOTA3Mzc5NTMzIEMxMC4yMzIxMDc5LDAuMDkwNzM3OTUzMyA4LjE0MDQ4MDEzLDAuNjUzMjI3OTkzIDYuMjI1NTcyNjksMS43Nzc5Nzg1OCBDNC4zMTAzODAyMSwyLjkwMjc4NjU0IDIuNzk0MjMzNjcsNC40Mjg4NjQ5MyAxLjY3NjQ0ODk5LDYuMzU2Mzg1ODggQzAuNTU4ODM1MzMzLDguMjgzODQ5NDUgMCwxMC4zODg2NTQ2IDAsMTIuNjcwNzQzOSBDMCwxNS40MTIwNTEgMC43OTQ2NzE0ODMsMTcuODc3MTA0NSAyLjM4NDQxMzQ5LDIwLjA2NjUzNTUgQzMuOTczOTg0NDksMjIuMjU2MTM4OCA2LjAyNzQ3NDg4LDIzLjc3MTI1ODggOC41NDQ3MTM2NywyNC42MTIwNjc4IEM4LjgzNzcyNzQsMjQuNjY2ODAyMiA5LjA1NDYzNzM3LDI0LjYyODMwNDUgOS4xOTU2NzE2MSwyNC40OTc1NTAzIEM5LjMzNjc2Mjg1LDI0LjM2NjYyMzkgOS40MDcyMjI5NiwyNC4yMDI2NTAzIDkuNDA3MjIyOTYsMjQuMDA2MzE4MSBDOS40MDcyMjI5NiwyMy45NzM1NTc5IDkuNDA0NDI5NjQsMjMuNjc4ODMwMSA5LjM5OTAxNDAxLDIzLjEyMTc5MDUgQzkuMzkzNDI3MzcsMjIuNTY0NzUxIDkuMzkwODA1MDcsMjIuMDc4Nzk3MiA5LjM5MDgwNTA3LDIxLjY2NDE1ODcgTDkuMDE2NDQyOTcsMjEuNzI5MzM1MSBDOC43Nzc3NTY1LDIxLjc3MzM0MDUgOC40NzY2NDc4MywyMS43OTE5ODY5IDguMTEzMTE2OTgsMjEuNzg2NzA4NiBDNy43NDk3NTcxNSwyMS43ODE2MDIzIDcuMzcyNTQ0NzMsMjEuNzQzMjc2OCA2Ljk4MTk5Mjc3LDIxLjY3MjAxODkgQzYuNTkxMjY5NzksMjEuNjAxMzkyMSA2LjIyNzg1Mjk1LDIxLjQzNzU5MDcgNS44OTE0NTcyMiwyMS4xODA5NTg5IEM1LjU1NTIzMjUyLDIwLjkyNDMyNzEgNS4zMTY1NDYwNCwyMC41ODg0MDUxIDUuMTc1NDU0OCwyMC4xNzM3MDkzIEw1LjAxMjcwMTA2LDE5Ljc5Njc2NTIgQzQuOTA0MjE3NTcsMTkuNTQ1ODEzNCA0LjczMzQyNTkxLDE5LjI2NzAzNTUgNC41MDAwOTgwNSwxOC45NjE0NjQxIEM0LjI2Njc3MDE5LDE4LjY1NTYwNTggNC4wMzA4MjAwMywxOC40NDgyNTc5IDMuNzkyMTMzNTUsMTguMzM5MDc2MSBMMy42NzgxNzc0MywxOC4yNTY5NzQ2IEMzLjYwMjI0NDY5LDE4LjIwMjQxMjMgMy41MzE3ODQ1OCwxOC4xMzY2MDQ5IDMuNDY2NjI2MDgsMTguMDYwMjQwOCBDMy40MDE1MjQ1OCwxNy45ODM4NzY2IDMuMzUyNzgzOTcsMTcuOTA3NDU1MSAzLjMyMDIzMzIzLDE3LjgzMDkxODggQzMuMjg3NjI1NDcsMTcuNzU0MzI1MSAzLjMxNDY0NjU4LDE3LjY5MTUwMTEgMy40MDE1ODE1OSwxNy42NDIyMTcyIEMzLjQ4ODUxNjYsMTcuNTkyOTMzNCAzLjY0NTYyNjY4LDE3LjU2OTAwODYgMy44NzM1OTU5MywxNy41NjkwMDg2IEw0LjE5ODk4OTM5LDE3LjYxNzk0ODIgQzQuNDE2MDEzMzcsMTcuNjYxNzI0MiA0LjY4NDQ1NzI3LDE3Ljc5MjQ3ODUgNS4wMDQ2NjMxNCwxOC4wMTEwMTQzIEM1LjMyNDY5Nzk4LDE4LjIyOTM3NzkgNS41ODc3ODMyNywxOC41MTMyNjIxIDUuNzkzOTc2LDE4Ljg2MjU1MjEgQzYuMDQzNjY0NzUsMTkuMzEwNDA5OSA2LjM0NDQ4ODM4LDE5LjY1MTY2NzYgNi42OTczMDE5OSwxOS44ODY0OTc0IEM3LjA0OTgzMDU4LDIwLjEyMTMyNzMgNy40MDUyNjY0OSwyMC4yMzg1NDE0IDcuNzYzMjY3NzEsMjAuMjM4NTQxNCBDOC4xMjEyNjg5MiwyMC4yMzg1NDE0IDguNDMwNDcyNTIsMjAuMjExMjMxNiA4LjY5MDk5MjUxLDIwLjE1Njg5ODkgQzguOTUxMjI3NDcsMjAuMTAyMjc5MyA5LjE5NTM4NjU3LDIwLjAyMDE3NzcgOS40MjMzNTU4MiwxOS45MTEwNTMzIEM5LjUyMTAwODA2LDE5LjE3OTA4MTkgOS43ODY4ODY2NywxOC42MTY3NjM5IDEwLjIyMDc2MzYsMTguMjIzNjk3OSBDOS42MDIzNTY0MiwxOC4xNTgyOTIxIDkuMDQ2MzcxNDIsMTguMDU5NzgxOCA4LjU1MjUyMzU3LDE3LjkyODc5OCBDOC4wNTg5NjA3NSwxNy43OTc2NDIxIDcuNTQ4OTIzMDMsMTcuNTg0Nzg2MyA3LjAyMjc1MjQ2LDE3LjI4OTY1NjkgQzYuNDk2Mjk2ODUsMTYuOTk0OTI5MSA2LjA1OTU2OTU4LDE2LjYyODk0MzQgNS43MTI0NTY2MiwxNi4xOTIzMzA5IEM1LjM2NTI4NjY1LDE1Ljc1NTQ4ODkgNS4wODAzNjc4NSwxNS4xODE5ODMxIDQuODU4MDk5MjYsMTQuNDcyMzMgQzQuNjM1NzE2NjYsMTMuNzYyMzkgNC41MjQ0OTY4NiwxMi45NDM0NDAzIDQuNTI0NDk2ODYsMTIuMDE1MjUxNCBDNC41MjQ0OTY4NiwxMC42OTM2NTIzIDQuOTUzMTg2MjEsOS41NjkwMTY0MiA1LjgxMDM5Mzg5LDguNjQwNzEyNzggQzUuNDA4ODM5NjcsNy42NDcxMTgwNyA1LjQ0Njc0OTAzLDYuNTMzMjY4NDYgNS45MjQyMzYsNS4yOTkyNzg2OCBDNi4yMzg5MTIyMiw1LjIwMDg4MzA4IDYuNzA1NTY3OTQsNS4yNzQ3MjI4MSA3LjMyMzk3NTE0LDUuNTIwMzM4ODcgQzcuOTQyNDk2MzQsNS43NjYwNjk2OCA4LjM5NTM1NjQ3LDUuOTc2NTczMTQgOC42ODMwMTE1OSw2LjE1MTEwMzQxIEM4Ljk3MDY2NjcsNi4zMjU1NzYzIDkuMjAxMTQ0MjQsNi40NzM0Mjc4NyA5LjM3NDc4NjIzLDYuNTkzMzM4NTQgQzEwLjM4NDA4NzQsNi4zMDk1MTE3MSAxMS40MjU2NTQzLDYuMTY3NTY5NjEgMTIuNDk5NzcyLDYuMTY3NTY5NjEgQzEzLjU3Mzg4OTYsNi4xNjc1Njk2MSAxNC42MTU2ODQ2LDYuMzA5NTExNzEgMTUuNjI1MDQyOCw2LjU5MzMzODU0IEwxNi4yNDM1MDcsNi4yMDAzODcyNiBDMTYuNjY2NDM4Niw1LjkzODE5MDI1IDE3LjE2NTg3MzEsNS42OTc5MDk5MyAxNy43NDA2MTMzLDUuNDc5NDg4OTIgQzE4LjMxNTY5NTUsNS4yNjExODI2NiAxOC43NTU0NDQxLDUuMjAxMDU1MiAxOS4wNTk0MDMxLDUuMjk5NDUwOCBDMTkuNTQ3NDkzMyw2LjUzMzQ5Nzk1IDE5LjU5MDk4OTMsNy42NDcyOTAxOSAxOS4xODkzMjExLDguNjQwODg0OSBDMjAuMDQ2NDcxNyw5LjU2OTE4ODU0IDIwLjQ3NTMzMjEsMTAuNjk0MTExMiAyMC40NzUzMzIxLDEyLjAxNTQyMzUgQzIwLjQ3NTMzMjEsMTIuOTQzNjEyNCAyMC4zNjM3MTMzLDEzLjc2NTE0MzkgMjAuMTQxNjcyNywxNC40ODA1MzQ0IEMxOS45MTkzNDcxLDE1LjE5NjAzOTYgMTkuNjMxOTc3LDE1Ljc2ODk3MTcgMTkuMjc5NDQ4NSwxNi4yMDA1MzUzIEMxOC45MjY1MjA4LDE2LjYzMjA0MTYgMTguNDg3MDAwMiwxNi45OTUxNTg2IDE3Ljk2MDgyOTcsMTcuMjg5ODI5MSBDMTcuNDM0NTQ1MSwxNy41ODQ3MjkgMTYuOTI0MzM2MywxNy43OTc1ODQ4IDE2LjQzMDc3MzUsMTcuOTI4NzQwNiBDMTUuOTM2OTgyNywxOC4wNTk4OTY1IDE1LjM4MDk5NzcsMTguMTU4NDY0MiAxNC43NjI1OTA1LDE4LjIyMzk4NDggQzE1LjMyNjYxMzQsMTguNzE1MjE2OSAxNS42MDg2ODE5LDE5LjQ5MDYyMDEgMTUuNjA4NjgxOSwyMC41NDk4NTAxIEwxNS42MDg2ODE5LDI0LjAwNTg1OTIgQzE1LjYwODY4MTksMjQuMjAyMTkxNCAxNS42NzY1MTk3LDI0LjM2NjEwNzUgMTUuODEyMzA5MywyNC40OTcwOTEzIEMxNS45NDc5Mjc5LDI0LjYyNzg0NTUgMTYuMTYyMTAxNiwyNC42NjYzNDMyIDE2LjQ1NTExNTMsMjQuNjExNTUxNSBDMTguOTcyNjk2MSwyMy43NzA4NTcyIDIxLjAyNjE4NjUsMjIuMjU1Njc5OCAyMi42MTU3MDA1LDIwLjA2NjA3NjYgQzI0LjIwNTA0MzUsMTcuODc2NjQ1NSAyNSwxNS40MTE1OTIgMjUsMTIuNjcwMjg0OSBDMjQuOTk5NDI5OSwxMC4zODg0ODI1IDI0LjQ0MDMwOTYsOC4yODM4NDk0NSAyMy4zMjMyMDksNi4zNTYzODU4OCBaIiBpZD0iU2hhcGUiPjwvcGF0aD4KICAgICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+" alt="GitHub Logo"/></a></li><li><a href="https://openj9.slack.com/" rel="noopener noreferrer" target="_blank"><img src="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIyNXB4IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgogPCEtLSBDcmVhdGVkIHdpdGggTWV0aG9kIERyYXcgLSBodHRwOi8vZ2l0aHViLmNvbS9kdW9waXhlbC9NZXRob2QtRHJhdy8gLS0+CgogPGc+CiAgPHRpdGxlPmJhY2tncm91bmQ8L3RpdGxlPgogIDxyZWN0IGZpbGw9Im5vbmUiIGlkPSJjYW52YXNfYmFja2dyb3VuZCIgaGVpZ2h0PSIyNiIgd2lkdGg9IjI2IiB5PSItMSIgeD0iLTEiLz4KICA8ZyBkaXNwbGF5PSJub25lIiBvdmVyZmxvdz0idmlzaWJsZSIgeT0iMCIgeD0iMCIgaGVpZ2h0PSIxMDAlIiB3aWR0aD0iMTAwJSIgaWQ9ImNhbnZhc0dyaWQiPgogICA8cmVjdCBmaWxsPSJ1cmwoI2dyaWRwYXR0ZXJuKSIgc3Ryb2tlLXdpZHRoPSIwIiB5PSIxIiB4PSIxIiBoZWlnaHQ9IjIyIiB3aWR0aD0iMjIiLz4KICA8L2c+CiA8L2c+CiA8Zz4KICA8dGl0bGU+TGF5ZXIgMTwvdGl0bGU+CiAgPGVsbGlwc2Ugcnk9IjExIiByeD0iMTEiIGlkPSJzdmdfMSIgY3k9IjEyIiBjeD0iMTIiIHN0cm9rZT0iI0ZGRiIgZmlsbD0iI0ZGRkZGRiIvPgogIDxzdHlsZSB0cmFuc2Zvcm09Im1hdHJpeCgwLjA2NTE4MjQ5NTU3MzI1MzYyLDAsMCwwLjA2NTE4MjQ5NTU3MzI1MzYyLDAsMCkgIiB0eXBlPSJ0ZXh0L2NzcyI+LnN0MHtmaWxsOiM0MzQzNDM7fTwvc3R5bGU+CiAgPGcgc3Ryb2tlPSJudWxsIiBpZD0ic3ZnXzE5Ij4KICAgPGcgc3Ryb2tlPSJudWxsIiB0cmFuc2Zvcm09Im1hdHJpeCgwLjEzMDE1NTgwODUxODA5NDg2LDAsMCwwLjEzMDE1NTgwODUxODA5NDg2LC02Ljg0OTAwNjQ1MDQwNTQ5OSwtNi44MzE1MDczOTEwMjE5MjQpICIgaWQ9InN2Z182Ij4KICAgIDxnIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z183Ij4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfOCIgZD0ibTExMC4yOTgyOTIsMTYxLjI5MzAxMWMwLDcuMSAtNS44LDEyLjkgLTEyLjksMTIuOXMtMTIuOSwtNS44IC0xMi45LC0xMi45YzAsLTcuMSA1LjgsLTEyLjkgMTIuOSwtMTIuOWwxMi45LDBsMCwxMi45eiIgY2xhc3M9InN0MCIvPgogICAgIDxwYXRoIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z185IiBkPSJtMTE2Ljc5ODI5MiwxNjEuMjkzMDExYzAsLTcuMSA1LjgsLTEyLjkgMTIuOSwtMTIuOXMxMi45LDUuOCAxMi45LDEyLjlsMCwzMi4zYzAsNy4xIC01LjgsMTIuOSAtMTIuOSwxMi45cy0xMi45LC01LjggLTEyLjksLTEyLjljMCwwIDAsLTMyLjMgMCwtMzIuM3oiIGNsYXNzPSJzdDAiLz4KICAgIDwvZz4KICAgIDxnIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z18xMCI+CiAgICAgPHBhdGggc3Ryb2tlPSJudWxsIiBpZD0ic3ZnXzExIiBkPSJtMTI5LjY5ODI5MiwxMDkuNDkzMDExYy03LjEsMCAtMTIuOSwtNS44IC0xMi45LC0xMi45czUuOCwtMTIuOSAxMi45LC0xMi45czEyLjksNS44IDEyLjksMTIuOWwwLDEyLjlsLTEyLjksMHoiIGNsYXNzPSJzdDAiLz4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTIiIGQ9Im0xMjkuNjk4MjkyLDExNS45OTMwMTFjNy4xLDAgMTIuOSw1LjggMTIuOSwxMi45cy01LjgsMTIuOSAtMTIuOSwxMi45bC0zMi4zLDBjLTcuMSwwIC0xMi45LC01LjggLTEyLjksLTEyLjlzNS44LC0xMi45IDEyLjksLTEyLjljMCwwIDMyLjMsMCAzMi4zLDB6IiBjbGFzcz0ic3QwIi8+CiAgICA8L2c+CiAgICA8ZyBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTMiPgogICAgIDxwYXRoIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z18xNCIgZD0ibTE4MS40OTgyOTIsMTI4Ljg5MzAxMWMwLC03LjEgNS44LC0xMi45IDEyLjksLTEyLjljNy4xLDAgMTIuOSw1LjggMTIuOSwxMi45cy01LjgsMTIuOSAtMTIuOSwxMi45bC0xMi45LDBsMCwtMTIuOXoiIGNsYXNzPSJzdDAiLz4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTUiIGQ9Im0xNzQuOTk4MjkyLDEyOC44OTMwMTFjMCw3LjEgLTUuOCwxMi45IC0xMi45LDEyLjljLTcuMSwwIC0xMi45LC01LjggLTEyLjksLTEyLjlsMCwtMzIuM2MwLC03LjEgNS44LC0xMi45IDEyLjksLTEyLjljNy4xLDAgMTIuOSw1LjggMTIuOSwxMi45bDAsMzIuM3oiIGNsYXNzPSJzdDAiLz4KICAgIDwvZz4KICAgIDxnIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z18xNiI+CiAgICAgPHBhdGggc3Ryb2tlPSJudWxsIiBpZD0ic3ZnXzE3IiBkPSJtMTYyLjA5ODI5MiwxODAuNjkzMDExYzcuMSwwIDEyLjksNS44IDEyLjksMTIuOWMwLDcuMSAtNS44LDEyLjkgLTEyLjksMTIuOWMtNy4xLDAgLTEyLjksLTUuOCAtMTIuOSwtMTIuOWwwLC0xMi45bDEyLjksMHoiIGNsYXNzPSJzdDAiLz4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTgiIGQ9Im0xNjIuMDk4MjkyLDE3NC4xOTMwMTFjLTcuMSwwIC0xMi45LC01LjggLTEyLjksLTEyLjljMCwtNy4xIDUuOCwtMTIuOSAxMi45LC0xMi45bDMyLjMsMGM3LjEsMCAxMi45LDUuOCAxMi45LDEyLjljMCw3LjEgLTUuOCwxMi45IC0xMi45LDEyLjlsLTMyLjMsMHoiIGNsYXNzPSJzdDAiLz4KICAgIDwvZz4KICAgPC9nPgogIDwvZz4KIDwvZz4KPC9zdmc+" alt="Slack logo"/></a></li><li><a href="https://stackoverflow.com/search?q=%23OpenJ9" rel="noopener noreferrer" target="_blank"><img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjRweCIgaGVpZ2h0PSIyNHB4IiB2aWV3Qm94PSIwIDAgNjUgNzAiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5zdGFja292ZXJmbG93LWxvZ288L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0iI0ZGRkZGRiIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0ic3RhY2tvdmVyZmxvdy1sb2dvIiBmaWxsLXJ1bGU9Im5vbnplcm8iPgogICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgZmlsbD0iI0ZGRkZGRiIgcG9pbnRzPSI1NC4yNDE3MjY2IDYzLjc3MDIyNjUgNTQuMjQxNzI2NiA0NSA2MSA0NSA2MSA3MCAwIDcwIDAgNDUgNi43NTgyNzMzOCA0NSA2Ljc1ODI3MzM4IDYzLjc3MDIyNjUiPjwvcG9seWdvbj4KICAgICAgICAgICAgPHBhdGggZD0iTTE0LjcwNzEwNTcsNDMuNjQyNzU2NyBMNDguMTE3ODUxLDUwLjA4NzIwMTEgTDQ5LjUzMjA2MjQsNDMuODg3NDgyNCBMMTYuMTIxMzE3MiwzNy40NDMwMzggTDE0LjcwNzEwNTcsNDMuNjQyNzU2NyBMMTQuNzA3MTA1Nyw0My42NDI3NTY3IFogTTE5LjEyNjUxNjUsMjguOTU5MjEyNCBMNTAuMDYyMzkxNyw0Mi4yNTU5Nzc1IEw1Mi44OTA4MTQ2LDM2LjU0NTcxMDMgTDIxLjk1NDkzOTMsMjMuMTY3MzY5OSBMMTkuMTI2NTE2NSwyOC45NTkyMTI0IFogTTI3LjcwMDE3MzMsMTQuOTI4MjcgTDUzLjk1MTQ3MzEsMzUuMDc3MzU1OCBMNTguMjgyNDk1NywzMC4yNjQ0MTYzIEwzMi4wMzExOTU4LDEwLjExNTMzMDUgTDI3LjcwMDE3MzMsMTQuOTI4MjcgTDI3LjcwMDE3MzMsMTQuOTI4MjcgWiBNNDQuNjcwNzEwNiwwIEwzOS4xOTA2NDEyLDMuNzUyNDYxMzIgTDU5LjUxOTkzMDcsMjkuMDQwNzg3NiBMNjUsMjUuMjg4MzI2MyBMNDQuNjcwNzEwNiwwIFogTTE0LDU4IEw0OC4xMTc4NTEsNTggTDQ4LjExNzg1MSw1MS43MTg3MDYgTDE0LDUxLjcxODcwNiBMMTQsNTggWiIgaWQ9IlNoYXBlIiBmaWxsPSIjRkZGRkZGIj48L3BhdGg+CiAgICAgICAgPC9nPgogICAgPC9nPgo8L3N2Zz4KCgo=" alt="Stack Overflow logo"/></a></li></ul></nav></footer></div></div><script>
+<p>For all the details of changes and improvements in 0.21.0, read the <a href="https://www.eclipse.org/openj9/docs/version0.21/" target="_blank" rel="nofollow">Version 0.21.0 "What's New" page</a> and see also the <a href="https://github.com/eclipse/openj9/blob/master/doc/release-notes/0.21/0.21.md" target="_blank" rel="nofollow">OpenJ9 Release notes</a>.</p></div><style data-emotion-css="1575med">.css-1575med{background-color:var(--theme-ui-colors-secondary,#5DA7A3);color:white;border-radius:2.5rem;height:2rem;width:12rem;border:none;font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';font-size:16px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-text-decoration:none;text-decoration:none;}.css-1575med:hover{cursor:pointer;background-color:var(--theme-ui-colors-secondaryDark,#5d9da3);border-color:var(--theme-ui-colors-secondaryDark,#5d9da3);-webkit-text-decoration:none;text-decoration:none;color:white;}</style><a href="https://www.eclipse.org/openj9/docs/openj9_releases/" rel="noopener noreferrer" target="_blank" class="css-1575med">New release info</a></article></div></section><style data-emotion-css="px2355">.css-px2355{padding-left:7%;padding-right:7%;padding-top:5%;padding-bottom:5%;background-color:#F5F9FC;}</style><section class="css-px2355"><style data-emotion-css="i51og3">.css-i51og3{margin-top:2rem;}</style><style data-emotion-css="rs5k25">.css-rs5k25{font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.125;font-weight:700;margin-top:16px;margin-bottom:16px;font-size:28px;margin-top:2rem;}</style><h2 class="css-rs5k25">Recent blogs</h2><style data-emotion-css="khllxn">.css-khllxn{display:grid;grid-gap:3rem;grid-template-columns:repeat(1,1fr);}@media screen and (min-width:35rem){.css-khllxn{grid-gap:3rem;grid-template-columns:repeat(1,1fr);}}@media screen and (min-width:62.5rem){.css-khllxn{grid-gap:3rem;grid-template-columns:repeat(1,1fr);}}@media screen and (min-width:85rem){.css-khllxn{grid-gap:6rem;grid-template-columns:repeat(2,1fr);}}</style><div class="css-khllxn"><style data-emotion-css="1b6n4o1">.css-1b6n4o1{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;}</style><div class="css-1b6n4o1"><div><style data-emotion-css="4ddra2">.css-4ddra2{font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.125;font-weight:700;margin-top:16px;margin-bottom:16px;font-size:24px;}</style><h3 class="css-4ddra2"><style data-emotion-css="v1jxfn">.css-v1jxfn{cursor:pointer;color:black;margin-right:0.3rem;-webkit-text-decoration:none;text-decoration:none;}.css-v1jxfn:hover{color:#5DA7A3;-webkit-text-decoration:none;text-decoration:none;}</style><a href="https://blog.openj9.org/2020/06/02/arraylets-what-are-they/" rel="noopener noreferrer" target="_blank" class="css-v1jxfn"> <!-- -->Arraylets: What are They?</a><i class="fas fa-external-link-alt fa-xs"></i></h3><style data-emotion-css="fza3g9">.css-fza3g9{margin-bottom:40px;font-size:18px;}</style><p class="css-fza3g9"><b>02 June 2020</b></p></div><p class="css-fza3g9"><p>Garbage Collectors (GCs) are responsible for allocating and deallocating objects making sure the running application run as smoothly as possible. There are many types of GC configurations out there, mark sweep, generational, region based, concurrent, parallel, reference counting [1] and a combination of these. The way we represent objects in each of these configurations, also&#8230;</p>
+</p></div><style data-emotion-css="144c708">.css-144c708{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start;}</style><div class="css-144c708"><div><h3 class="css-4ddra2"><style data-emotion-css="1yj3fc5">.css-1yj3fc5{cursor:pointer;color:black;-webkit-text-decoration:none;text-decoration:none;margin-right:0.3rem;}.css-1yj3fc5:hover{color:#5DA7A3;-webkit-text-decoration:none;text-decoration:none;}</style><a href="https://blog.openj9.org/2020/05/27/manipulating-the-class-file-with-asmtools/" rel="noopener noreferrer" target="_blank" class="css-1yj3fc5"> <!-- -->Manipulating the Class File with AsmTools</a><i class="fas fa-external-link-alt fa-xs"></i></h3><p class="css-fza3g9"><b>27 May 2020</b></p></div><p class="css-fza3g9"><p>A Java class file is represented with a hardware &amp; OS independent binary format to be loaded &amp; interpreted at runtime. Except the magic number (the first 4 bytes such as CAFEBABE) and the version number (the 8th byte) which are visible or can be manually edited in a hexadecimal way, modifying the majority of&#8230;</p>
+</p></div></div><style data-emotion-css="tzcyjh">.css-tzcyjh{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;padding-left:5%;padding-right:5%;}</style><div class="css-tzcyjh"><style data-emotion-css="1575med">.css-1575med{background-color:var(--theme-ui-colors-secondary,#5DA7A3);color:white;border-radius:2.5rem;height:2rem;width:12rem;border:none;font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';font-size:16px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-text-decoration:none;text-decoration:none;}.css-1575med:hover{cursor:pointer;background-color:var(--theme-ui-colors-secondaryDark,#5d9da3);border-color:var(--theme-ui-colors-secondaryDark,#5d9da3);-webkit-text-decoration:none;text-decoration:none;color:white;}</style><a href="https://blog.openj9.org/" rel="noopener noreferrer" target="_blank" class="css-1575med">See all blogs</a></div></section><style data-emotion-css="17cbhv0">.css-17cbhv0{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;background-color:var(--theme-ui-colors-primary,#434343);color:white;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:1rem;padding-bottom:3rem;-webkit-flex-direction:reverse-column;-ms-flex-direction:reverse-column;flex-direction:reverse-column;}@media screen and (min-width:35rem){.css-17cbhv0{padding-bottom:3rem;}}@media screen and (min-width:62.5rem){.css-17cbhv0{padding-bottom:0;}}@media screen and (min-width:85rem){.css-17cbhv0{padding-bottom:0;}}</style><footer class="css-17cbhv0"><style data-emotion-css="vkolmb">.css-vkolmb{-webkit-flex:50%;-ms-flex:50%;flex:50%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}@media screen and (min-width:35rem){.css-vkolmb{display:none;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}}@media screen and (min-width:62.5rem){.css-vkolmb{display:none;-webkit-align-items:flex-end;-webkit-box-align:flex-end;-ms-flex-align:flex-end;align-items:flex-end;}}@media screen and (min-width:85rem){.css-vkolmb{display:none;-webkit-align-items:flex-end;-webkit-box-align:flex-end;-ms-flex-align:flex-end;align-items:flex-end;}}</style><section class="css-vkolmb"><a href="https://wiki.eclipse.org/Development_Resources/Process_Guidelines/What_is_Incubation" rel="noopener noreferrer" target="_blank"><img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNTBweCIgaGVpZ2h0PSI3NXB4IiB2aWV3Qm94PSIwIDAgMTU3IDIzMSIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KICAgIDwhLS0gR2VuZXJhdG9yOiBTa2V0Y2ggNjEuMiAoODk2NTMpIC0gaHR0cHM6Ly9za2V0Y2guY29tIC0tPgogICAgPHRpdGxlPmVjbGlwc2VfaW5jdWJhdGlvbl92ZXJ0aWNhbF9zdmc8L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0iZWNsaXBzZV9pbmN1YmF0aW9uX3ZlcnRpY2FsX3N2ZyIgZmlsbC1ydWxlPSJub256ZXJvIj4KICAgICAgICAgICAgPGcgaWQ9Ikdyb3VwIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNy4wMDAwMDAsIDIxNC4wMDAwMDApIiBmaWxsPSIjRkZGRkZGIj4KICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJQYXRoIiBwb2ludHM9IjAuNzUgMC4zNCAxLjkyIDAuMzQgMS45MiAxNi4wMyAwLjc1IDE2LjAzIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSI1LjYyIDAuMzQgNi43MiAwLjM0IDE3LjU1IDEzLjk5IDE3LjU1IDAuMzQgMTguNjcgMC4zNCAxOC42NyAxNi4wMyAxNy44IDE2LjAzIDYuNzUgMi4wOSA2Ljc1IDE2LjAzIDUuNjMgMTYuMDMgNS42MyAwLjM0Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMjEuODYsOC4yMyBMMjEuODYsOC4xOSBDMjEuODYsMy43NSAyNS4xOCwwLjA4IDI5LjcxLDAuMDggQzMyLjUxLDAuMDggMzQuMTksMS4xMSAzNS44MSwyLjU5IEwzNC45OCwzLjQ0IEMzMy42MSwyLjEyIDMyLjA0LDEuMTMgMjkuNjksMS4xMyBDMjUuOTIsMS4xMyAyMy4wOCw0LjIgMjMuMDgsOC4xNSBMMjMuMDgsOC4xOSBDMjMuMDgsMTIuMTYgMjUuOTcsMTUuMjUgMjkuNzEsMTUuMjUgQzMxLjk3LDE1LjI1IDMzLjUyLDE0LjM3IDM1LjExLDEyLjgxIEwzNS44OSwxMy41NyBDMzQuMjMsMTUuMjEgMzIuNDQsMTYuMyAyOS42NiwxNi4zIEMyNS4xOCwxNi4zIDIxLjg2LDEyLjc0IDIxLjg2LDguMjMgWiIgaWQ9IlBhdGgiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0zOC40LDkuNTEgTDM4LjQsMC4zNCBMMzkuNTcsMC4zNCBMMzkuNTcsOS40IEMzOS41NywxMy4xIDQxLjU3LDE1LjIzIDQ0Ljg4LDE1LjIzIEM0OC4wNiwxNS4yMyA1MC4xLDEzLjMgNTAuMSw5LjUxIEw1MC4xLDAuMzQgTDUxLjI3LDAuMzQgTDUxLjI3LDkuMzcgQzUxLjI3LDEzLjg4IDQ4LjY1LDE2LjI3MDAzMTQgNDQuODQsMTYuMjcwMDMxNCBDNDEuMDcsMTYuMjggMzguNCwxMy45IDM4LjQsOS41MSBaIiBpZD0iUGF0aCI+PC9wYXRoPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTU0LjAyLDAuMzQgTDYwLjUsMC4zNCBDNjIuMjcsMC4zNCA2My43MSwwLjg2IDY0LjU4LDEuNzMgQzY1LjIzLDIuMzggNjUuNTksMy4yMSA2NS41OSw0LjIgTDY1LjU5LDQuMjQgQzY1LjU5LDYuMzcgNjQuMiw3LjQ1IDYyLjkyLDcuOTYgQzY0LjgsOC40NSA2Ni40Niw5LjUzIDY2LjQ2LDExLjcgTDY2LjQ2LDExLjc0IEM2Ni40NiwxNC4zNiA2NC4yMiwxNi4wMiA2MC44MywxNi4wMiBMNTQuMDIsMTYuMDIgTDU0LjAyLDAuMzQgTDU0LjAyLDAuMzQgWiBNNjQuNCw0LjMxIEM2NC40LDIuNTggNjIuOTksMS40MiA2MC40OCwxLjQyIEw1NS4xOSwxLjQyIEw1NS4xOSw3LjU4IEw2MC4zNyw3LjU4IEM2Mi43Miw3LjU4IDY0LjQsNi40NCA2NC40LDQuMzUgTDY0LjQsNC4zMSBaIE02MC41LDguNjYgTDU1LjE5LDguNjYgTDU1LjE5LDE0Ljk2IEw2MC44OCwxNC45NiBDNjMuNTcsMTQuOTYgNjUuMjcwMDQ0NCwxMy43MyA2NS4yNzAwNDQ0LDExLjc1IEw2NS4yNzAwNDQ0LDExLjcxIEM2NS4yOCw5Ljc4IDYzLjYsOC42NiA2MC41LDguNjYgWiIgaWQ9IlNoYXBlIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNzYuMjgsMC4yMyBMNzcuNCwwLjIzIEw4NC43MSwxNi4wMyBMODMuNDMsMTYuMDMgTDgxLjQ0LDExLjY0IEw3Mi4xOCwxMS42NCBMNzAuMTksMTYuMDMgTDY4Ljk4LDE2LjAzIEw3Ni4yOCwwLjIzIFogTTgwLjk0LDEwLjU5IEw3Ni44MiwxLjUxIEw3Mi42NywxMC41OSBMODAuOTQsMTAuNTkgWiIgaWQ9IlNoYXBlIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSI5MS4wNSAxLjQyIDg1LjU4IDEuNDIgODUuNTggMC4zNCA5Ny42OCAwLjM0IDk3LjY4IDEuNDIgOTIuMjEgMS40MiA5Mi4yMSAxNi4wMyA5MS4wNCAxNi4wMyA5MS4wNCAxLjQyIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSIxMDEuMjkgMC4zNCAxMDIuNDYgMC4zNCAxMDIuNDYgMTYuMDMgMTAxLjI5IDE2LjAzIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTA1LjkxLDguMjMgTDEwNS45MSw4LjE5IEMxMDUuOTEsMy45MSAxMDkuMDcsMC4wOCAxMTMuODIsMC4wOCBDMTE4LjU3LDAuMDggMTIxLjY5LDMuODcgMTIxLjY5LDguMTUgTDEyMS42OSw4LjE5IEMxMjEuNjksMTIuNDcgMTE4LjUzLDE2LjMgMTEzLjc4LDE2LjMgQzEwOS4wMywxNi4zIDEwNS45MSwxMi41MSAxMDUuOTEsOC4yMyBaIE0xMjAuNDgsOC4yMyBMMTIwLjQ4LDguMTkgQzEyMC40OCw0LjMxIDExNy42NiwxLjEzIDExMy43OCwxLjEzIEMxMDkuOSwxLjEzIDEwNy4xMiw0LjI3IDEwNy4xMiw4LjE1IEwxMDcuMTIsOC4xOSBDMTA3LjEyLDEyLjA3IDEwOS45NCwxNS4yNSAxMTMuODIsMTUuMjUgQzExNy43LDE1LjI1IDEyMC40OCwxMi4xMSAxMjAuNDgsOC4yMyBaIiBpZD0iU2hhcGUiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJQYXRoIiBwb2ludHM9IjEyNC44OSAwLjM0IDEyNS45OSAwLjM0IDEzNi44MiAxMy45OSAxMzYuODIgMC4zNCAxMzcuOTQgMC4zNCAxMzcuOTQgMTYuMDMgMTM3LjA3IDE2LjAzIDEyNi4wMiAyLjA5IDEyNi4wMiAxNi4wMyAxMjQuOSAxNi4wMyAxMjQuOSAwLjM0Ij48L3BvbHlnb24+CiAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgPHBhdGggZD0iTTU2LjY2LDE2Ni4yMyBDNTcuNTEsMTYzLjQ4IDYwLjQzLDE2MS40MyA2My45NCwxNjEuNDMgQzY1LjE0LDE2MS40MyA2Ni4yNSwxNjEuNjkgNjcuMjUsMTYyLjExIEM2OS40NiwxNjAuNjQgNzIuMTksMTU5Ljc2IDc1LjE3LDE1OS43NiBMNzUuMTksMTU5Ljc2IEM3Ni4xMSwxNTcuOSA3OC40OCwxNTYuNTcgODEuMywxNTYuNTcgQzgyLjA0LDE1Ni41NyA4Mi43NSwxNTYuNjcgODMuNDIsMTU2Ljg0IEM4My4zMywxNTQuNTYgODMuNjksMTUyLjE4IDg0LjU1LDE0OS42OCBDODUuNTUsMTQ2Ljc5IDg3LDE0NC4wMyA4OC41MiwxNDEuMjggQzg4LjE3LDEzNy4xNiA4Ny45LDEzMy41IDgyLjc0LDEzMiBDODAuODIsMTMxLjQ0IDc4LjgyLDEzMS4yNyA3Ni44NiwxMzEuMDQgTDc2Ljg1LDEzMS4wNCBMNzYuODUsMTMxLjAzIEM3Ni4wMSwxMzAuOTMgNzUuMTcsMTMwLjgxIDc0LjM1LDEzMC42NSBDNjAuMTgsMTQ1LjQxIDQwLjIsMTA5Ljk3IDQwLjIsMTA5Ljk3IEM4NC4zLDEwMy4xMyA3Ni4wMSwxMjUuNjEgNzYuMDEsMTI1LjYxIEM3Mi44MSwxMjQuMDUgNzEuOTMsMTIyLjA4IDY5LjQ5LDExOS43MyBDNjMuOTIsMTE0LjM4IDUwLjYyLDExMy40NCA1MC42MiwxMTMuNDQgQzY2LjU0LDExNy41MSA2OC43MSwxMjUuMjIgNzQuOTcsMTI3LjY5IEM3Ni4zOSwxMjguMDEgNzcuOSwxMjguMTMgNzkuMzUsMTI4LjI5IEM4Mi4xNSwxMjguNTkgODQuODksMTI5LjExIDg3LjIyLDEzMC42MSBDODkuNjMsMTMyLjE2IDkwLjcxLDEzNC4wOSA5MS4yNiwxMzYuMjYgQzkzLDEzMi45NCA5NC41LDEyOS41NiA5NS4wNywxMjUuOTIgQzk1LjgsMTIxLjI3IDk1LjEzLDExNS44OCA5MS44MywxMTIuMDcgQzg4Ljc4LDEwOC41NSA4NC42NiwxMDUuODkgODEuNCwxMDIuNTIgQzc3LjkyLDk4LjkxIDc1LjYxLDk0LjQ2IDc1LjUyLDg5LjcxIEM3My43Niw4NS44NiA3MC45LDgxLjM5IDY4LjI4LDc5LjY1IEM1Ni45LDkwLjM0IDQxLjksNjIuNTggNDEuOSw2Mi41OCBDNzYuODgsNTcuNyA3MS4xLDc1LjY3IDcxLjEsNzUuNjcgQzYyLjcsNjYuMjggNTIuMzEsNjcuMTIgNTIuMzEsNjcuMTIgQzYwLjcxLDY5Ljc5IDY3LjM0LDc1LjE1IDcxLjIsNzguODMgTDcxLjczLDc5LjM2IEM3My4zLDgxIDc0LjksODIuNzUgNzYuMjQsODQuNjMgQzc3LjYsNzkuNDggODAuNzcsNzIuMjcgODMuMjYsNjcuOTcgQzgzLjI2LDY3Ljk3IDkxLjY2LDUzLjE1IDEwNS44LDQzLjkgQzEwNS44LDQzLjkgOTUuMDIsNDUuMTQgODMuNDEsNjIuODkgQzgzLjQxLDYyLjg5IDY3Ljk5LDM4LjcgMTE3LjgzLDM0LjIzIEMxMTcuODMsMzQuMjMgMTE0LjQsNzguMTcgODcuNDUsNjkuNjMgQzgyLjc3LDc2LjY3IDc5LjcsODQuNzQgODAuMzMsOTAuNDIgQzgwLjk1LDk1Ljk2IDg0LjgzLDk5Ljg2IDg5LjExLDEwMy41IEM5MC4yNSw5Ny42NiA5NC40Niw5Mi42MyAxMDAuNjUsODkuODkgQzEwNS42LDg3LjkyIDExMi45LDg2LjAzIDExOS43Miw4NS42MiBDMTE5LjcyLDg1LjYyIDEwNi4zOSw4Mi41OCA5Ni4yNSw4OS41MSBDOTYuMjUsODkuNTEgOTYuNDIsNjkuMjIgMTMyLjM0LDgzLjk1IEMxMzIuMzQsODMuOTUgMTA2LjM0LDExMC4yOSA5Ny45OSw5NC41OSBDOTQuMDMsOTcuMiA5MS41MywxMDEuNTggOTIuMTgsMTA2LjExIEM5NC41LDEwOC4xNCA5Ni42NiwxMTAuMzMgOTcuOTcsMTEzLjAzIEM5OS44LDExNi44MiAxMDAuNDUsMTIxLjI0IDk5Ljk1LDEyNS4zNSBDOTguOTksMTMzLjI1IDk0LjA1LDEzOS45NyA5MC42NywxNDcuMTQgQzg5LjI5LDE1MC4wNiA4Ny45NywxNTMuMjcgODcuOTUsMTU2LjUxIEM4OS42NCwxNTYuMDQgOTEuNDcsMTU1Ljc4IDkzLjM5LDE1NS43OCBDMTAwLjYyLDE1NS43OCAxMDYuNzEsMTU5LjM3IDEwOC42OCwxNjQuMyBDMTExLjYxLDE2NC42MSAxMTMuOTIsMTY2LjMzIDExNC4zNCwxNjguNTEgQzExNi40NSwxNjkuODEgMTE4LjEyLDE3MS42MyAxMTkuMTMsMTczLjc1IEw1MC41NSwxNzMuNzUgQzUyLjAyLDE3MC42MiA1NC4xNCwxNjcuMTYgNTYuNjYsMTY2LjIzIiBpZD0iUGF0aCIgZmlsbD0iI0Y3OEQyQyI+PC9wYXRoPgogICAgICAgICAgICA8ZyBpZD0iR3JvdXAiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE3LjAwMDAwMCwgMTgyLjAwMDAwMCkiIGZpbGw9IiNGRkZGRkYiPgogICAgICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlBhdGgiIHBvaW50cz0iMC41NCAxLjM5IDE4LjU0IDEuMzkgMTguNTQgNS4yMSA0LjggNS4yMSA0LjggMTEuNTIgMTYuOTcgMTEuNTIgMTYuOTcgMTUuMzMgNC44IDE1LjMzIDQuOCAyMS44NSAxOC43MSAyMS44NSAxOC43MSAyNS42NyAwLjU0IDI1LjY3Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMjEuNTUsMTMuNiBMMjEuNTUsMTMuNTMgQzIxLjU1LDYuNjMgMjYuNzIsMC45NyAzNC4wNywwLjk3IEMzOC41NCwwLjk3IDQxLjI1LDIuNTMgNDMuNTcsNC43NSBMNDAuODMsNy45MSBDMzguODksNi4xMSAzNi44MSw0Ljg5IDM0LjAzLDQuODkgQzI5LjQyLDQuODkgMjYuMDIsOC43MSAyNi4wMiwxMy40NiBMMjYuMDIsMTMuNTMgQzI2LjAyLDE4LjI4IDI5LjM4LDIyLjEzIDM0LjAzLDIyLjEzIEMzNy4wMSwyMi4xMyAzOC45MiwyMC45NSA0MSwxOS4wMSBMNDMuNzQsMjEuNzggQzQxLjIxLDI0LjQyIDM4LjQzLDI2LjA4MDAxMzYgMzMuODksMjYuMDgwMDEzNiBDMjYuODMsMjYuMDkgMjEuNTUsMjAuNTcgMjEuNTUsMTMuNiBaIiBpZD0iUGF0aCI+PC9wYXRoPgogICAgICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlBhdGgiIHBvaW50cz0iNDcuMjIgMS4zOSA1MS40OSAxLjM5IDUxLjQ5IDIxLjc4IDY0LjI1IDIxLjc4IDY0LjI1IDI1LjY2IDQ3LjIyIDI1LjY2Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSI2Ny45MyAxLjM5IDcyLjIgMS4zOSA3Mi4yIDI1LjY3IDY3LjkzIDI1LjY3Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNzcuNjcsMS4zOSBMODcuMjQsMS4zOSBDOTIuOTMsMS4zOSA5Ni40Nyw0LjYyIDk2LjQ3LDkuNTEgTDk2LjQ3LDkuNTggQzk2LjQ3LDE1LjAzIDkyLjEsMTcuODcgODYuNzYsMTcuODcgTDgxLjk0LDE3Ljg3IEw4MS45NCwyNS42NyBMNzcuNjcsMjUuNjcgTDc3LjY3LDEuMzkgWiBNODYuOSwxNC4wMiBDOTAuMTMsMTQuMDIgOTIuMTQsMTIuMjIgOTIuMTQsOS42OCBMOTIuMTQsOS42MSBDOTIuMTQsNi43NyA5MC4wOSw1LjI4IDg2LjksNS4yOCBMODEuOTQsNS4yOCBMODEuOTQsMTQuMDIgTDg2LjksMTQuMDIgWiIgaWQ9IlNoYXBlIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNOTguMjEsMjIuMTMgTDEwMC43OCwxOS4wOCBDMTAzLjEsMjEuMDkgMTA1LjQ2LDIyLjI0IDEwOC40NSwyMi4yNCBDMTExLjA5LDIyLjI0IDExMi43NSwyMC45OSAxMTIuNzUsMTkuMTkgTDExMi43NSwxOS4xMiBDMTEyLjc1LDE3LjM5IDExMS43OCwxNi40NSAxMDcuMjcsMTUuNDEgQzEwMi4xLDE0LjE2IDk5LjE5LDEyLjY0IDk5LjE5LDguMTYgTDk5LjE5LDguMDkgQzk5LjE5LDMuOTMgMTAyLjY2LDEuMDUgMTA3LjQ4LDEuMDUgQzExMS4wMiwxLjA1IDExMy44MywyLjEzIDExNi4yOSw0LjEgTDExNCw3LjMzIEMxMTEuODEsNS43IDEwOS42Myw0LjgzIDEwNy40MSw0LjgzIEMxMDQuOTEsNC44MyAxMDMuNDYsNi4xMSAxMDMuNDYsNy43MSBMMTAzLjQ2LDcuNzggQzEwMy40Niw5LjY1IDEwNC41NywxMC40OSAxMDkuMjUsMTEuNiBDMTE0LjM4LDEyLjg1IDExNy4wMiwxNC42OSAxMTcuMDIsMTguNzEgTDExNy4wMiwxOC43OCBDMTE3LjAyLDIzLjMyIDExMy40NSwyNi4wMyAxMDguMzUsMjYuMDMgQzEwNC42MiwyNi4wMiAxMDEuMTIsMjQuNzMgOTguMjEsMjIuMTMgWiIgaWQ9IlBhdGgiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJQYXRoIiBwb2ludHM9IjEyMC45OSAxLjM5IDEzOC45OSAxLjM5IDEzOC45OSA1LjIxIDEyNS4yNiA1LjIxIDEyNS4yNiAxMS41MiAxMzcuNDMgMTEuNTIgMTM3LjQzIDE1LjMzIDEyNS4yNiAxNS4zMyAxMjUuMjYgMjEuODUgMTM5LjE3IDIxLjg1IDEzOS4xNyAyNS42NyAxMjEgMjUuNjcgMTIxIDEuMzkiPjwvcG9seWdvbj4KICAgICAgICAgICAgPC9nPgogICAgICAgICAgICA8cGF0aCBkPSJNMjEuNjYsMzkuOTkgQzQxLjI2LDkuNDIgODAuNSwtMS4yNSAxMTMuMjMsMTMuNDQgQzExMi41MSwxMi45NCAxMTEuNzgsMTIuNDMgMTExLjAzLDExLjk1IEM3Ny41MiwtOS41NCAzMi45OCwwLjExIDExLjU2LDMzLjUyIEMtOS44Nyw2Ni45MiAtMC4wNiwxMTEuNDMgMzMuNDUsMTMyLjkyIEMzNC4yLDEzMy40IDM0Ljk2LDEzMy44NSAzNS43MiwxMzQuMyBDOC43MywxMTAuNjggMi4wNiw3MC41NiAyMS42NiwzOS45OSIgaWQ9IlBhdGgiIGZpbGw9IiNGNzhEMkMiPjwvcGF0aD4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==" alt="Eclipse Incubator Logo"/></a><style data-emotion-css="1uno72p">.css-1uno72p{font-size:0.9rem;}</style><style data-emotion-css="2r9mng">.css-2r9mng{font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.125;font-weight:700;margin-top:16px;margin-bottom:16px;font-size:16px;font-size:0.9rem;}</style><h6 class="css-2r9mng">OpenJ9 is an Eclipse Incubator Project</h6></section><style data-emotion-css="1hrevlp">.css-1hrevlp{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex:100%;-ms-flex:100%;flex:100%;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;}@media screen and (min-width:35rem){.css-1hrevlp{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex:50%;-ms-flex:50%;flex:50%;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;}}@media screen and (min-width:62.5rem){.css-1hrevlp{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex:50%;-ms-flex:50%;flex:50%;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;}}@media screen and (min-width:85rem){.css-1hrevlp{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex:50%;-ms-flex:50%;flex:50%;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;}}.css-1hrevlp a{color:white;-webkit-text-decoration:none;text-decoration:none;}.css-1hrevlp a:hover{color:var(--theme-ui-colors-links,#5DA7A3);}</style><nav class="css-1hrevlp"><style data-emotion-css="1vm4d63">.css-1vm4d63{-webkit-flex:1;-ms-flex:1;flex:1;padding-left:2rem;margin-right:1.1rem;padding:1rem;font-size:1rem;}@media screen and (min-width:35rem){.css-1vm4d63{padding-left:0.8rem;padding:0;font-size:0.9rem;}}@media screen and (min-width:62.5rem){.css-1vm4d63{padding-left:0.8rem;font-size:1rem;}}@media screen and (min-width:85rem){.css-1vm4d63{padding-left:0.8rem;font-size:1rem;}}</style><section class="css-1vm4d63"><style data-emotion-css="1p7eyhh">.css-1p7eyhh{margin-bottom:0.2rem;}</style><style data-emotion-css="shyl6e">.css-shyl6e{font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.125;font-weight:700;margin-top:16px;margin-bottom:16px;font-size:20px;margin-bottom:0.2rem;}</style><h4 class="css-shyl6e">Docs</h4><style data-emotion-css="1l04qsy">.css-1l04qsy{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;list-style:none;-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}.css-1l04qsy li{padding:0;}.css-1l04qsy li:first-of-type{margin-left:0;}.css-1l04qsy li:last-child{margin-right:0;padding-right:0;}</style><ul class="css-1l04qsy"><li><style data-emotion-css="14i0930">.css-14i0930{-webkit-text-decoration:none;text-decoration:none;color:white;}</style><a href="https://www.eclipse.org/openj9/docs/openj9_newuser/" rel="noopener noreferrer" target="_blank" class="css-14i0930">New to OpenJ9?</a></li><li><a href="https://www.eclipse.org/openj9/docs/introduction/" rel="noopener noreferrer" target="_blank" class="css-14i0930">Getting started</a></li><li><a href="https://www.eclipse.org/openj9/docs/cmdline_specifying/" rel="noopener noreferrer" target="_blank" class="css-14i0930">Command-line options</a></li></ul></section><style data-emotion-css="4nlx3l">.css-4nlx3l{-webkit-flex:1;-ms-flex:1;flex:1;padding-left:2rem;padding:1rem;font-size:1rem;}@media screen and (min-width:35rem){.css-4nlx3l{padding-left:0.8rem;padding:0;font-size:0.9rem;}}@media screen and (min-width:62.5rem){.css-4nlx3l{padding-left:0;font-size:1rem;}}@media screen and (min-width:85rem){.css-4nlx3l{padding-left:0;font-size:1rem;}}</style><section class="css-4nlx3l"><h4 class="css-shyl6e">Resources</h4><ul class="css-1l04qsy"><li><a class="css-14i0930" href="/openj9/about">About</a></li><li><a class="css-14i0930" href="/openj9/performance">Performance</a></li></ul></section><style data-emotion-css="1v1ksah">.css-1v1ksah{-webkit-flex:1;-ms-flex:1;flex:1;padding-left:2rem;padding:1rem;font-size:1rem;margin-left:0;}@media screen and (min-width:35rem){.css-1v1ksah{padding-left:0;padding:0;font-size:0.9rem;margin-left:1rem;}}@media screen and (min-width:62.5rem){.css-1v1ksah{padding-left:0;font-size:1rem;}}@media screen and (min-width:85rem){.css-1v1ksah{padding-left:0;font-size:1rem;}}</style><section class="css-1v1ksah"><h4 class="css-shyl6e">Community</h4><ul class="css-1l04qsy"><li><a class="css-14i0930" href="/openj9/news">News</a></li><li><a href="https://blog.openj9.org/" rel="noopener noreferrer" target="_blank" class="css-14i0930">Blogs</a></li></ul></section></nav><style data-emotion-css="1qgmx7a">.css-1qgmx7a{-webkit-flex:25%;-ms-flex:25%;flex:25%;display:none;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}@media screen and (min-width:35rem){.css-1qgmx7a{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:flex-end;-webkit-box-align:flex-end;-ms-flex-align:flex-end;align-items:flex-end;}}@media screen and (min-width:62.5rem){.css-1qgmx7a{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:flex-end;-webkit-box-align:flex-end;-ms-flex-align:flex-end;align-items:flex-end;}}@media screen and (min-width:85rem){.css-1qgmx7a{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:flex-end;-webkit-box-align:flex-end;-ms-flex-align:flex-end;align-items:flex-end;}}</style><section class="css-1qgmx7a"><style data-emotion-css="10op7gg">.css-10op7gg{font-size:0.9rem;margin-top:1.3rem;margin-left:0.6rem;}</style><style data-emotion-css="z87sw5">.css-z87sw5{font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.125;font-weight:700;margin-top:16px;margin-bottom:16px;font-size:16px;font-size:0.9rem;margin-top:1.3rem;margin-left:0.6rem;}</style><h6 class="css-z87sw5">OpenJ9 is an Eclipse Incubator Project</h6><a href="https://wiki.eclipse.org/Development_Resources/Process_Guidelines/What_is_Incubation" rel="noopener noreferrer" target="_blank"><img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNTBweCIgaGVpZ2h0PSI3NXB4IiB2aWV3Qm94PSIwIDAgMTU3IDIzMSIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KICAgIDwhLS0gR2VuZXJhdG9yOiBTa2V0Y2ggNjEuMiAoODk2NTMpIC0gaHR0cHM6Ly9za2V0Y2guY29tIC0tPgogICAgPHRpdGxlPmVjbGlwc2VfaW5jdWJhdGlvbl92ZXJ0aWNhbF9zdmc8L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0iZWNsaXBzZV9pbmN1YmF0aW9uX3ZlcnRpY2FsX3N2ZyIgZmlsbC1ydWxlPSJub256ZXJvIj4KICAgICAgICAgICAgPGcgaWQ9Ikdyb3VwIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNy4wMDAwMDAsIDIxNC4wMDAwMDApIiBmaWxsPSIjRkZGRkZGIj4KICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJQYXRoIiBwb2ludHM9IjAuNzUgMC4zNCAxLjkyIDAuMzQgMS45MiAxNi4wMyAwLjc1IDE2LjAzIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSI1LjYyIDAuMzQgNi43MiAwLjM0IDE3LjU1IDEzLjk5IDE3LjU1IDAuMzQgMTguNjcgMC4zNCAxOC42NyAxNi4wMyAxNy44IDE2LjAzIDYuNzUgMi4wOSA2Ljc1IDE2LjAzIDUuNjMgMTYuMDMgNS42MyAwLjM0Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMjEuODYsOC4yMyBMMjEuODYsOC4xOSBDMjEuODYsMy43NSAyNS4xOCwwLjA4IDI5LjcxLDAuMDggQzMyLjUxLDAuMDggMzQuMTksMS4xMSAzNS44MSwyLjU5IEwzNC45OCwzLjQ0IEMzMy42MSwyLjEyIDMyLjA0LDEuMTMgMjkuNjksMS4xMyBDMjUuOTIsMS4xMyAyMy4wOCw0LjIgMjMuMDgsOC4xNSBMMjMuMDgsOC4xOSBDMjMuMDgsMTIuMTYgMjUuOTcsMTUuMjUgMjkuNzEsMTUuMjUgQzMxLjk3LDE1LjI1IDMzLjUyLDE0LjM3IDM1LjExLDEyLjgxIEwzNS44OSwxMy41NyBDMzQuMjMsMTUuMjEgMzIuNDQsMTYuMyAyOS42NiwxNi4zIEMyNS4xOCwxNi4zIDIxLjg2LDEyLjc0IDIxLjg2LDguMjMgWiIgaWQ9IlBhdGgiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0zOC40LDkuNTEgTDM4LjQsMC4zNCBMMzkuNTcsMC4zNCBMMzkuNTcsOS40IEMzOS41NywxMy4xIDQxLjU3LDE1LjIzIDQ0Ljg4LDE1LjIzIEM0OC4wNiwxNS4yMyA1MC4xLDEzLjMgNTAuMSw5LjUxIEw1MC4xLDAuMzQgTDUxLjI3LDAuMzQgTDUxLjI3LDkuMzcgQzUxLjI3LDEzLjg4IDQ4LjY1LDE2LjI3MDAzMTQgNDQuODQsMTYuMjcwMDMxNCBDNDEuMDcsMTYuMjggMzguNCwxMy45IDM4LjQsOS41MSBaIiBpZD0iUGF0aCI+PC9wYXRoPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTU0LjAyLDAuMzQgTDYwLjUsMC4zNCBDNjIuMjcsMC4zNCA2My43MSwwLjg2IDY0LjU4LDEuNzMgQzY1LjIzLDIuMzggNjUuNTksMy4yMSA2NS41OSw0LjIgTDY1LjU5LDQuMjQgQzY1LjU5LDYuMzcgNjQuMiw3LjQ1IDYyLjkyLDcuOTYgQzY0LjgsOC40NSA2Ni40Niw5LjUzIDY2LjQ2LDExLjcgTDY2LjQ2LDExLjc0IEM2Ni40NiwxNC4zNiA2NC4yMiwxNi4wMiA2MC44MywxNi4wMiBMNTQuMDIsMTYuMDIgTDU0LjAyLDAuMzQgTDU0LjAyLDAuMzQgWiBNNjQuNCw0LjMxIEM2NC40LDIuNTggNjIuOTksMS40MiA2MC40OCwxLjQyIEw1NS4xOSwxLjQyIEw1NS4xOSw3LjU4IEw2MC4zNyw3LjU4IEM2Mi43Miw3LjU4IDY0LjQsNi40NCA2NC40LDQuMzUgTDY0LjQsNC4zMSBaIE02MC41LDguNjYgTDU1LjE5LDguNjYgTDU1LjE5LDE0Ljk2IEw2MC44OCwxNC45NiBDNjMuNTcsMTQuOTYgNjUuMjcwMDQ0NCwxMy43MyA2NS4yNzAwNDQ0LDExLjc1IEw2NS4yNzAwNDQ0LDExLjcxIEM2NS4yOCw5Ljc4IDYzLjYsOC42NiA2MC41LDguNjYgWiIgaWQ9IlNoYXBlIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNzYuMjgsMC4yMyBMNzcuNCwwLjIzIEw4NC43MSwxNi4wMyBMODMuNDMsMTYuMDMgTDgxLjQ0LDExLjY0IEw3Mi4xOCwxMS42NCBMNzAuMTksMTYuMDMgTDY4Ljk4LDE2LjAzIEw3Ni4yOCwwLjIzIFogTTgwLjk0LDEwLjU5IEw3Ni44MiwxLjUxIEw3Mi42NywxMC41OSBMODAuOTQsMTAuNTkgWiIgaWQ9IlNoYXBlIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSI5MS4wNSAxLjQyIDg1LjU4IDEuNDIgODUuNTggMC4zNCA5Ny42OCAwLjM0IDk3LjY4IDEuNDIgOTIuMjEgMS40MiA5Mi4yMSAxNi4wMyA5MS4wNCAxNi4wMyA5MS4wNCAxLjQyIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSIxMDEuMjkgMC4zNCAxMDIuNDYgMC4zNCAxMDIuNDYgMTYuMDMgMTAxLjI5IDE2LjAzIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTA1LjkxLDguMjMgTDEwNS45MSw4LjE5IEMxMDUuOTEsMy45MSAxMDkuMDcsMC4wOCAxMTMuODIsMC4wOCBDMTE4LjU3LDAuMDggMTIxLjY5LDMuODcgMTIxLjY5LDguMTUgTDEyMS42OSw4LjE5IEMxMjEuNjksMTIuNDcgMTE4LjUzLDE2LjMgMTEzLjc4LDE2LjMgQzEwOS4wMywxNi4zIDEwNS45MSwxMi41MSAxMDUuOTEsOC4yMyBaIE0xMjAuNDgsOC4yMyBMMTIwLjQ4LDguMTkgQzEyMC40OCw0LjMxIDExNy42NiwxLjEzIDExMy43OCwxLjEzIEMxMDkuOSwxLjEzIDEwNy4xMiw0LjI3IDEwNy4xMiw4LjE1IEwxMDcuMTIsOC4xOSBDMTA3LjEyLDEyLjA3IDEwOS45NCwxNS4yNSAxMTMuODIsMTUuMjUgQzExNy43LDE1LjI1IDEyMC40OCwxMi4xMSAxMjAuNDgsOC4yMyBaIiBpZD0iU2hhcGUiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJQYXRoIiBwb2ludHM9IjEyNC44OSAwLjM0IDEyNS45OSAwLjM0IDEzNi44MiAxMy45OSAxMzYuODIgMC4zNCAxMzcuOTQgMC4zNCAxMzcuOTQgMTYuMDMgMTM3LjA3IDE2LjAzIDEyNi4wMiAyLjA5IDEyNi4wMiAxNi4wMyAxMjQuOSAxNi4wMyAxMjQuOSAwLjM0Ij48L3BvbHlnb24+CiAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgPHBhdGggZD0iTTU2LjY2LDE2Ni4yMyBDNTcuNTEsMTYzLjQ4IDYwLjQzLDE2MS40MyA2My45NCwxNjEuNDMgQzY1LjE0LDE2MS40MyA2Ni4yNSwxNjEuNjkgNjcuMjUsMTYyLjExIEM2OS40NiwxNjAuNjQgNzIuMTksMTU5Ljc2IDc1LjE3LDE1OS43NiBMNzUuMTksMTU5Ljc2IEM3Ni4xMSwxNTcuOSA3OC40OCwxNTYuNTcgODEuMywxNTYuNTcgQzgyLjA0LDE1Ni41NyA4Mi43NSwxNTYuNjcgODMuNDIsMTU2Ljg0IEM4My4zMywxNTQuNTYgODMuNjksMTUyLjE4IDg0LjU1LDE0OS42OCBDODUuNTUsMTQ2Ljc5IDg3LDE0NC4wMyA4OC41MiwxNDEuMjggQzg4LjE3LDEzNy4xNiA4Ny45LDEzMy41IDgyLjc0LDEzMiBDODAuODIsMTMxLjQ0IDc4LjgyLDEzMS4yNyA3Ni44NiwxMzEuMDQgTDc2Ljg1LDEzMS4wNCBMNzYuODUsMTMxLjAzIEM3Ni4wMSwxMzAuOTMgNzUuMTcsMTMwLjgxIDc0LjM1LDEzMC42NSBDNjAuMTgsMTQ1LjQxIDQwLjIsMTA5Ljk3IDQwLjIsMTA5Ljk3IEM4NC4zLDEwMy4xMyA3Ni4wMSwxMjUuNjEgNzYuMDEsMTI1LjYxIEM3Mi44MSwxMjQuMDUgNzEuOTMsMTIyLjA4IDY5LjQ5LDExOS43MyBDNjMuOTIsMTE0LjM4IDUwLjYyLDExMy40NCA1MC42MiwxMTMuNDQgQzY2LjU0LDExNy41MSA2OC43MSwxMjUuMjIgNzQuOTcsMTI3LjY5IEM3Ni4zOSwxMjguMDEgNzcuOSwxMjguMTMgNzkuMzUsMTI4LjI5IEM4Mi4xNSwxMjguNTkgODQuODksMTI5LjExIDg3LjIyLDEzMC42MSBDODkuNjMsMTMyLjE2IDkwLjcxLDEzNC4wOSA5MS4yNiwxMzYuMjYgQzkzLDEzMi45NCA5NC41LDEyOS41NiA5NS4wNywxMjUuOTIgQzk1LjgsMTIxLjI3IDk1LjEzLDExNS44OCA5MS44MywxMTIuMDcgQzg4Ljc4LDEwOC41NSA4NC42NiwxMDUuODkgODEuNCwxMDIuNTIgQzc3LjkyLDk4LjkxIDc1LjYxLDk0LjQ2IDc1LjUyLDg5LjcxIEM3My43Niw4NS44NiA3MC45LDgxLjM5IDY4LjI4LDc5LjY1IEM1Ni45LDkwLjM0IDQxLjksNjIuNTggNDEuOSw2Mi41OCBDNzYuODgsNTcuNyA3MS4xLDc1LjY3IDcxLjEsNzUuNjcgQzYyLjcsNjYuMjggNTIuMzEsNjcuMTIgNTIuMzEsNjcuMTIgQzYwLjcxLDY5Ljc5IDY3LjM0LDc1LjE1IDcxLjIsNzguODMgTDcxLjczLDc5LjM2IEM3My4zLDgxIDc0LjksODIuNzUgNzYuMjQsODQuNjMgQzc3LjYsNzkuNDggODAuNzcsNzIuMjcgODMuMjYsNjcuOTcgQzgzLjI2LDY3Ljk3IDkxLjY2LDUzLjE1IDEwNS44LDQzLjkgQzEwNS44LDQzLjkgOTUuMDIsNDUuMTQgODMuNDEsNjIuODkgQzgzLjQxLDYyLjg5IDY3Ljk5LDM4LjcgMTE3LjgzLDM0LjIzIEMxMTcuODMsMzQuMjMgMTE0LjQsNzguMTcgODcuNDUsNjkuNjMgQzgyLjc3LDc2LjY3IDc5LjcsODQuNzQgODAuMzMsOTAuNDIgQzgwLjk1LDk1Ljk2IDg0LjgzLDk5Ljg2IDg5LjExLDEwMy41IEM5MC4yNSw5Ny42NiA5NC40Niw5Mi42MyAxMDAuNjUsODkuODkgQzEwNS42LDg3LjkyIDExMi45LDg2LjAzIDExOS43Miw4NS42MiBDMTE5LjcyLDg1LjYyIDEwNi4zOSw4Mi41OCA5Ni4yNSw4OS41MSBDOTYuMjUsODkuNTEgOTYuNDIsNjkuMjIgMTMyLjM0LDgzLjk1IEMxMzIuMzQsODMuOTUgMTA2LjM0LDExMC4yOSA5Ny45OSw5NC41OSBDOTQuMDMsOTcuMiA5MS41MywxMDEuNTggOTIuMTgsMTA2LjExIEM5NC41LDEwOC4xNCA5Ni42NiwxMTAuMzMgOTcuOTcsMTEzLjAzIEM5OS44LDExNi44MiAxMDAuNDUsMTIxLjI0IDk5Ljk1LDEyNS4zNSBDOTguOTksMTMzLjI1IDk0LjA1LDEzOS45NyA5MC42NywxNDcuMTQgQzg5LjI5LDE1MC4wNiA4Ny45NywxNTMuMjcgODcuOTUsMTU2LjUxIEM4OS42NCwxNTYuMDQgOTEuNDcsMTU1Ljc4IDkzLjM5LDE1NS43OCBDMTAwLjYyLDE1NS43OCAxMDYuNzEsMTU5LjM3IDEwOC42OCwxNjQuMyBDMTExLjYxLDE2NC42MSAxMTMuOTIsMTY2LjMzIDExNC4zNCwxNjguNTEgQzExNi40NSwxNjkuODEgMTE4LjEyLDE3MS42MyAxMTkuMTMsMTczLjc1IEw1MC41NSwxNzMuNzUgQzUyLjAyLDE3MC42MiA1NC4xNCwxNjcuMTYgNTYuNjYsMTY2LjIzIiBpZD0iUGF0aCIgZmlsbD0iI0Y3OEQyQyI+PC9wYXRoPgogICAgICAgICAgICA8ZyBpZD0iR3JvdXAiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE3LjAwMDAwMCwgMTgyLjAwMDAwMCkiIGZpbGw9IiNGRkZGRkYiPgogICAgICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlBhdGgiIHBvaW50cz0iMC41NCAxLjM5IDE4LjU0IDEuMzkgMTguNTQgNS4yMSA0LjggNS4yMSA0LjggMTEuNTIgMTYuOTcgMTEuNTIgMTYuOTcgMTUuMzMgNC44IDE1LjMzIDQuOCAyMS44NSAxOC43MSAyMS44NSAxOC43MSAyNS42NyAwLjU0IDI1LjY3Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMjEuNTUsMTMuNiBMMjEuNTUsMTMuNTMgQzIxLjU1LDYuNjMgMjYuNzIsMC45NyAzNC4wNywwLjk3IEMzOC41NCwwLjk3IDQxLjI1LDIuNTMgNDMuNTcsNC43NSBMNDAuODMsNy45MSBDMzguODksNi4xMSAzNi44MSw0Ljg5IDM0LjAzLDQuODkgQzI5LjQyLDQuODkgMjYuMDIsOC43MSAyNi4wMiwxMy40NiBMMjYuMDIsMTMuNTMgQzI2LjAyLDE4LjI4IDI5LjM4LDIyLjEzIDM0LjAzLDIyLjEzIEMzNy4wMSwyMi4xMyAzOC45MiwyMC45NSA0MSwxOS4wMSBMNDMuNzQsMjEuNzggQzQxLjIxLDI0LjQyIDM4LjQzLDI2LjA4MDAxMzYgMzMuODksMjYuMDgwMDEzNiBDMjYuODMsMjYuMDkgMjEuNTUsMjAuNTcgMjEuNTUsMTMuNiBaIiBpZD0iUGF0aCI+PC9wYXRoPgogICAgICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlBhdGgiIHBvaW50cz0iNDcuMjIgMS4zOSA1MS40OSAxLjM5IDUxLjQ5IDIxLjc4IDY0LjI1IDIxLjc4IDY0LjI1IDI1LjY2IDQ3LjIyIDI1LjY2Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSI2Ny45MyAxLjM5IDcyLjIgMS4zOSA3Mi4yIDI1LjY3IDY3LjkzIDI1LjY3Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNzcuNjcsMS4zOSBMODcuMjQsMS4zOSBDOTIuOTMsMS4zOSA5Ni40Nyw0LjYyIDk2LjQ3LDkuNTEgTDk2LjQ3LDkuNTggQzk2LjQ3LDE1LjAzIDkyLjEsMTcuODcgODYuNzYsMTcuODcgTDgxLjk0LDE3Ljg3IEw4MS45NCwyNS42NyBMNzcuNjcsMjUuNjcgTDc3LjY3LDEuMzkgWiBNODYuOSwxNC4wMiBDOTAuMTMsMTQuMDIgOTIuMTQsMTIuMjIgOTIuMTQsOS42OCBMOTIuMTQsOS42MSBDOTIuMTQsNi43NyA5MC4wOSw1LjI4IDg2LjksNS4yOCBMODEuOTQsNS4yOCBMODEuOTQsMTQuMDIgTDg2LjksMTQuMDIgWiIgaWQ9IlNoYXBlIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNOTguMjEsMjIuMTMgTDEwMC43OCwxOS4wOCBDMTAzLjEsMjEuMDkgMTA1LjQ2LDIyLjI0IDEwOC40NSwyMi4yNCBDMTExLjA5LDIyLjI0IDExMi43NSwyMC45OSAxMTIuNzUsMTkuMTkgTDExMi43NSwxOS4xMiBDMTEyLjc1LDE3LjM5IDExMS43OCwxNi40NSAxMDcuMjcsMTUuNDEgQzEwMi4xLDE0LjE2IDk5LjE5LDEyLjY0IDk5LjE5LDguMTYgTDk5LjE5LDguMDkgQzk5LjE5LDMuOTMgMTAyLjY2LDEuMDUgMTA3LjQ4LDEuMDUgQzExMS4wMiwxLjA1IDExMy44MywyLjEzIDExNi4yOSw0LjEgTDExNCw3LjMzIEMxMTEuODEsNS43IDEwOS42Myw0LjgzIDEwNy40MSw0LjgzIEMxMDQuOTEsNC44MyAxMDMuNDYsNi4xMSAxMDMuNDYsNy43MSBMMTAzLjQ2LDcuNzggQzEwMy40Niw5LjY1IDEwNC41NywxMC40OSAxMDkuMjUsMTEuNiBDMTE0LjM4LDEyLjg1IDExNy4wMiwxNC42OSAxMTcuMDIsMTguNzEgTDExNy4wMiwxOC43OCBDMTE3LjAyLDIzLjMyIDExMy40NSwyNi4wMyAxMDguMzUsMjYuMDMgQzEwNC42MiwyNi4wMiAxMDEuMTIsMjQuNzMgOTguMjEsMjIuMTMgWiIgaWQ9IlBhdGgiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJQYXRoIiBwb2ludHM9IjEyMC45OSAxLjM5IDEzOC45OSAxLjM5IDEzOC45OSA1LjIxIDEyNS4yNiA1LjIxIDEyNS4yNiAxMS41MiAxMzcuNDMgMTEuNTIgMTM3LjQzIDE1LjMzIDEyNS4yNiAxNS4zMyAxMjUuMjYgMjEuODUgMTM5LjE3IDIxLjg1IDEzOS4xNyAyNS42NyAxMjEgMjUuNjcgMTIxIDEuMzkiPjwvcG9seWdvbj4KICAgICAgICAgICAgPC9nPgogICAgICAgICAgICA8cGF0aCBkPSJNMjEuNjYsMzkuOTkgQzQxLjI2LDkuNDIgODAuNSwtMS4yNSAxMTMuMjMsMTMuNDQgQzExMi41MSwxMi45NCAxMTEuNzgsMTIuNDMgMTExLjAzLDExLjk1IEM3Ny41MiwtOS41NCAzMi45OCwwLjExIDExLjU2LDMzLjUyIEMtOS44Nyw2Ni45MiAtMC4wNiwxMTEuNDMgMzMuNDUsMTMyLjkyIEMzNC4yLDEzMy40IDM0Ljk2LDEzMy44NSAzNS43MiwxMzQuMyBDOC43MywxMTAuNjggMi4wNiw3MC41NiAyMS42NiwzOS45OSIgaWQ9IlBhdGgiIGZpbGw9IiNGNzhEMkMiPjwvcGF0aD4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==" alt="Eclipse Incubator Logo"/></a></section><style data-emotion-css="7f8z6s">.css-7f8z6s{height:0.15rem;background-color:var(--theme-ui-colors-secondary,#5DA7A3);width:100%;margin-top:16px;margin-bottom:16px;}</style><div class="css-7f8z6s"></div><style data-emotion-css="6gs9hh">.css-6gs9hh{width:70%;}</style><nav class="css-6gs9hh"><style data-emotion-css="1dz3xom">.css-1dz3xom{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}@media screen and (min-width:35rem){.css-1dz3xom{-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;}}@media screen and (min-width:62.5rem){.css-1dz3xom{-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;}}@media screen and (min-width:85rem){.css-1dz3xom{-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;}}.css-1dz3xom li{padding:0.4rem;font-size:0.9rem;list-style-type:none;padding-left:1rem;color:white;}@media screen and (min-width:35rem){.css-1dz3xom li{font-size:0.7rem;}}@media screen and (min-width:62.5rem){.css-1dz3xom li{font-size:1rem;}}@media screen and (min-width:85rem){.css-1dz3xom li{font-size:1rem;}}.css-1dz3xom a{color:white;-webkit-text-decoration:none;text-decoration:none;}.css-1dz3xom a:hover{color:var(--theme-ui-colors-links,#5DA7A3);}</style><ul class="css-1dz3xom"><style data-emotion-css="1ga24ma">.css-1ga24ma{padding-left:1rem;}@media screen and (min-width:35rem){.css-1ga24ma{padding-left:0rem !important;}}@media screen and (min-width:62.5rem){.css-1ga24ma{padding-left:0.5rem !important;}}@media screen and (min-width:85rem){.css-1ga24ma{padding-left:0.5 !important;}}</style><li class="css-1ga24ma"><a href="https://www.eclipse.org/" rel="noopener noreferrer" target="_blank" class="css-14i0930">Eclipse Foundation Website </a></li><li><a href="https://www.eclipse.org/legal/privacy.php" rel="noopener noreferrer" target="_blank" class="css-14i0930">Privacy Policy</a></li><li><a href="https://www.eclipse.org/legal/termsofuse.php" rel="noopener noreferrer" target="_blank" class="css-14i0930">Terms of Use</a></li><li><a href="https://www.eclipse.org/legal/copyright.php" rel="noopener noreferrer" target="_blank" class="css-14i0930">Copyright Agent</a></li><li><a href="https://www.eclipse.org/legal/" rel="noopener noreferrer" target="_blank" class="css-14i0930">Legal</a></li></ul></nav><style data-emotion-css="1g96o9k">.css-1g96o9k{display:inline;-webkit-flex:30%;-ms-flex:30%;flex:30%;}@media screen and (min-width:35rem){.css-1g96o9k{display:inline;}}@media screen and (min-width:62.5rem){.css-1g96o9k{display:block;}}@media screen and (min-width:85rem){.css-1g96o9k{display:block;}}</style><nav class="css-1g96o9k"><style data-emotion-css="gwenrj">.css-gwenrj{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;list-style:none;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;}.css-gwenrj li{padding:8px;margin-left:8px;margin-right:8px;}.css-gwenrj li a{color:white;-webkit-text-decoration:none;text-decoration:none;}.css-gwenrj li a:hover{color:var(--theme-ui-colors-links,#5DA7A3);}.css-gwenrj li:first-of-type{margin-left:0;}.css-gwenrj li:last-child{margin-right:0;padding-right:0;}@media screen and (min-width:35rem){.css-gwenrj{-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end;}}@media screen and (min-width:62.5rem){.css-gwenrj{-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end;}}@media screen and (min-width:85rem){.css-gwenrj{-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end;}}</style><ul class="css-gwenrj"><li><a href="https://twitter.com/openj9/" rel="noopener noreferrer" target="_blank"> <img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIyNXB4IiB2aWV3Qm94PSIwIDAgMjUgMjUiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5Ud2l0dGVyPC90aXRsZT4KICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPgogICAgPGcgaWQ9IlBhZ2UtMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9IlR3aXR0ZXIiIGZpbGwtcnVsZT0ibm9uemVybyI+CiAgICAgICAgICAgIDxnIGlkPSJ0d2l0dGVyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjAwMDAwMCwgMC4yOTg4NzkpIj4KICAgICAgICAgICAgICAgIDxlbGxpcHNlIGlkPSJPdmFsLXBhdGgiIGZpbGw9IiM0MzQzNDMiIGN4PSIxMi41MDAyMjEyIiBjeT0iMTIuMjcyNzI3MyIgcng9IjEyLjUiIHJ5PSIxMi4yNzI3MjczIj48L2VsbGlwc2U+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTIuNTAwMjIxMiwwIEMxOS40MDM3ODA2LDAgMjUuMDAwMjIxMiw1LjQ5NDY4NzE2IDI1LjAwMDIyMTIsMTIuMjcyNzI3MyBDMjUuMDAwMjIxMiwxOS4wNTA3Njc0IDE5LjQwMzc4MDYsMjQuNTQ1NDU0NSAxMi41MDAyMjEyLDI0LjU0NTQ1NDUgQzUuNTk2NjYxODcsMjQuNTQ1NDU0NSAwLjAwMDIyMTIzODkzOCwxOS4wNTA3Njc0IDAuMDAwMjIxMjM4OTM4LDEyLjI3MjcyNzMgQzAuMDAwMjIxMjM4OTM4LDUuNDk0Njg3MTYgNS41OTY2NjE4NywwIDEyLjUwMDIyMTIsMCBaIE0xNS4xMDM0MzMzLDYuODE4MTgxODIgQzEzLjQ2NTM4MDIsNi44MTgxODE4MiAxMi4xMzY4NDA0LDguMDkyMTI0MTEgMTIuMTM2ODQwNCw5LjY2Mjg1OTk2IEMxMi4xMzY4NDA0LDkuODg1ODI2MzggMTIuMTYzMTY3OCwxMC4xMDI4NTI3IDEyLjIxNDA1MjgsMTAuMzExMTgxIEM5Ljc0ODU2NjA0LDEwLjE5MjU5MDggNy41NjI1MDQxLDkuMDYwMTUwNTQgNi4wOTkyMjk3Niw3LjMzODU3ODIzIEM1Ljg0MzkyMDAzLDcuNzU4NjI5MTUgNS42OTc0NTk4NSw4LjI0NzYyNzgxIDUuNjk3NDU5ODUsOC43Njg4NzI4MSBDNS42OTc0NTk4NSw5Ljc1NTU2ODE3IDYuMjIxNTc0ODksMTAuNjI2NjQzNCA3LjAxNzE1MDExLDExLjEzNjY0NDcgQzYuNTMxMDg4MTcsMTEuMTIyMDA2NSA2LjA3MzM0NDgsMTAuOTk0MDgxOSA1LjY3MzU2NjA0LDEwLjc4MDQ1IEw1LjY3MzM0NDgsMTAuODE2NTE0OSBMNS42NzMzNDQ4LDEwLjgxNjUxNDkgQzUuNjczMzQ0OCwxMi4xOTQ4MzM1IDYuNjk2MzUzNjUsMTMuMzQ0NDU3NyA4LjA1MzIxMjA2LDEzLjYwNTYxMDYgQzcuODA0NTM5NSwxMy42NzA5NTE5IDcuNTQxOTI4ODgsMTMuNzA1NTMxOCA3LjI3MTc5NjEzLDEzLjcwNTUzMTggQzcuMDgwMjAzMjEsMTMuNzA1NTMxOCA2Ljg5NDU4Mzc0LDEzLjY4NzkyMzYgNi43MTM2MTAyOSwxMy42NTQ4Mjg3IEM3LjA5MTA0MzkyLDE0Ljc4NDcyMzIgOC4xODYzOTc5LDE1LjYwNzIxNjkgOS40ODQ4NDkyMywxNS42MzAzNDA5IEM4LjQ2OTM2MjUsMTYuMzkzNDMzNCA3LjE5MDM4MDIsMTYuODQ4MDY0MiA1LjgwMDExNDcyLDE2Ljg0ODA2NDIgQzUuNTYxMTc2NjYsMTYuODQ4MDY0MiA1LjMyNDQ1MSwxNi44MzQ2OTkgNS4wOTI4MTM4MywxNi44MDgxODA2IEM2LjQwNDk4MTk3LDE3LjYxNTYxMTggNy45NjQ3MTY0OSwxOC4wODYzNjU4IDkuNjM5OTM3NzMsMTguMDg2MzY1OCBDMTUuMDk2NTc0OSwxOC4wODYzNjU4IDE4LjA4MDY0NTcsMTMuNzUxNzc5OCAxOC4wODA2NDU3LDkuOTkyMzI0MTQgQzE4LjA4MDY0NTcsOS44NjkwNjY3NyAxOC4wNzc3Njk2LDkuNzQ2MjMzNyAxOC4wNzIwMTc0LDkuNjI0NDYxMzcgQzE4LjY1MjEwNTksOS4yMjM1MDM2OCAxOS4xNTQ5ODIsOC43MjI2MjQ3OCAxOS41NTI1NDgzLDguMTUyMTYxNjkgQzE5LjAyMDY4OTksOC4zNzgzMTAzMiAxOC40NDg1NjYsOC41MzEyNjgyNSAxNy44NDg1NjYsOC41OTk1Nzk1NiBDMTguNDYxMTc2Nyw4LjI0NzYyNzgxIDE4LjkzMTMwOTQsNy42OTA3NDIxMyAxOS4xNTMyMTIxLDcuMDI2MDg1ODEgQzE4LjU3OTk4Miw3LjM1MjE1NTYzIDE3Ljk0NDgwNSw3LjU4ODY5OTQ2IDE3LjI2OTM2MjUsNy43MTYxOTk3NiBDMTYuNzI4MjEyMSw3LjE2MzU1NzAyIDE1Ljk1NzE5NDQsNi44MTgxODE4MiAxNS4xMDM0MzMzLDYuODE4MTgxODIgWiIgaWQ9IkNvbWJpbmVkLVNoYXBlIiBmaWxsPSIjRkZGRkZGIj48L3BhdGg+CiAgICAgICAgICAgIDwvZz4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==" alt="Twitter Logo"/></a></li><li><a href="https://github.com/eclipse/openj9" rel="noopener noreferrer" target="_blank"> <img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIyNXB4IiB2aWV3Qm94PSIwIDAgMjUgMjUiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5HaXRIdWI8L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0iR2l0SHViIiBmaWxsPSIjRkZGRkZGIiBmaWxsLXJ1bGU9Im5vbnplcm8iPgogICAgICAgICAgICA8ZyBpZD0iZ2l0aHViLWxvZ28iPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTIzLjMyMzIwOSw2LjM1NjM4NTg4IEMyMi4yMDU0MjQzLDQuNDI4ODY0OTMgMjAuNjg5MjIwNywyLjkwMjg0MzkxIDE4Ljc3NDE5OTMsMS43Nzc5Nzg1OCBDMTYuODU4ODkyOCwwLjY1MzA1NTg3MyAxNC43Njc5NDkxLDAuMDkwNzM3OTUzMyAxMi40OTk4ODYsMC4wOTA3Mzc5NTMzIEMxMC4yMzIxMDc5LDAuMDkwNzM3OTUzMyA4LjE0MDQ4MDEzLDAuNjUzMjI3OTkzIDYuMjI1NTcyNjksMS43Nzc5Nzg1OCBDNC4zMTAzODAyMSwyLjkwMjc4NjU0IDIuNzk0MjMzNjcsNC40Mjg4NjQ5MyAxLjY3NjQ0ODk5LDYuMzU2Mzg1ODggQzAuNTU4ODM1MzMzLDguMjgzODQ5NDUgMCwxMC4zODg2NTQ2IDAsMTIuNjcwNzQzOSBDMCwxNS40MTIwNTEgMC43OTQ2NzE0ODMsMTcuODc3MTA0NSAyLjM4NDQxMzQ5LDIwLjA2NjUzNTUgQzMuOTczOTg0NDksMjIuMjU2MTM4OCA2LjAyNzQ3NDg4LDIzLjc3MTI1ODggOC41NDQ3MTM2NywyNC42MTIwNjc4IEM4LjgzNzcyNzQsMjQuNjY2ODAyMiA5LjA1NDYzNzM3LDI0LjYyODMwNDUgOS4xOTU2NzE2MSwyNC40OTc1NTAzIEM5LjMzNjc2Mjg1LDI0LjM2NjYyMzkgOS40MDcyMjI5NiwyNC4yMDI2NTAzIDkuNDA3MjIyOTYsMjQuMDA2MzE4MSBDOS40MDcyMjI5NiwyMy45NzM1NTc5IDkuNDA0NDI5NjQsMjMuNjc4ODMwMSA5LjM5OTAxNDAxLDIzLjEyMTc5MDUgQzkuMzkzNDI3MzcsMjIuNTY0NzUxIDkuMzkwODA1MDcsMjIuMDc4Nzk3MiA5LjM5MDgwNTA3LDIxLjY2NDE1ODcgTDkuMDE2NDQyOTcsMjEuNzI5MzM1MSBDOC43Nzc3NTY1LDIxLjc3MzM0MDUgOC40NzY2NDc4MywyMS43OTE5ODY5IDguMTEzMTE2OTgsMjEuNzg2NzA4NiBDNy43NDk3NTcxNSwyMS43ODE2MDIzIDcuMzcyNTQ0NzMsMjEuNzQzMjc2OCA2Ljk4MTk5Mjc3LDIxLjY3MjAxODkgQzYuNTkxMjY5NzksMjEuNjAxMzkyMSA2LjIyNzg1Mjk1LDIxLjQzNzU5MDcgNS44OTE0NTcyMiwyMS4xODA5NTg5IEM1LjU1NTIzMjUyLDIwLjkyNDMyNzEgNS4zMTY1NDYwNCwyMC41ODg0MDUxIDUuMTc1NDU0OCwyMC4xNzM3MDkzIEw1LjAxMjcwMTA2LDE5Ljc5Njc2NTIgQzQuOTA0MjE3NTcsMTkuNTQ1ODEzNCA0LjczMzQyNTkxLDE5LjI2NzAzNTUgNC41MDAwOTgwNSwxOC45NjE0NjQxIEM0LjI2Njc3MDE5LDE4LjY1NTYwNTggNC4wMzA4MjAwMywxOC40NDgyNTc5IDMuNzkyMTMzNTUsMTguMzM5MDc2MSBMMy42NzgxNzc0MywxOC4yNTY5NzQ2IEMzLjYwMjI0NDY5LDE4LjIwMjQxMjMgMy41MzE3ODQ1OCwxOC4xMzY2MDQ5IDMuNDY2NjI2MDgsMTguMDYwMjQwOCBDMy40MDE1MjQ1OCwxNy45ODM4NzY2IDMuMzUyNzgzOTcsMTcuOTA3NDU1MSAzLjMyMDIzMzIzLDE3LjgzMDkxODggQzMuMjg3NjI1NDcsMTcuNzU0MzI1MSAzLjMxNDY0NjU4LDE3LjY5MTUwMTEgMy40MDE1ODE1OSwxNy42NDIyMTcyIEMzLjQ4ODUxNjYsMTcuNTkyOTMzNCAzLjY0NTYyNjY4LDE3LjU2OTAwODYgMy44NzM1OTU5MywxNy41NjkwMDg2IEw0LjE5ODk4OTM5LDE3LjYxNzk0ODIgQzQuNDE2MDEzMzcsMTcuNjYxNzI0MiA0LjY4NDQ1NzI3LDE3Ljc5MjQ3ODUgNS4wMDQ2NjMxNCwxOC4wMTEwMTQzIEM1LjMyNDY5Nzk4LDE4LjIyOTM3NzkgNS41ODc3ODMyNywxOC41MTMyNjIxIDUuNzkzOTc2LDE4Ljg2MjU1MjEgQzYuMDQzNjY0NzUsMTkuMzEwNDA5OSA2LjM0NDQ4ODM4LDE5LjY1MTY2NzYgNi42OTczMDE5OSwxOS44ODY0OTc0IEM3LjA0OTgzMDU4LDIwLjEyMTMyNzMgNy40MDUyNjY0OSwyMC4yMzg1NDE0IDcuNzYzMjY3NzEsMjAuMjM4NTQxNCBDOC4xMjEyNjg5MiwyMC4yMzg1NDE0IDguNDMwNDcyNTIsMjAuMjExMjMxNiA4LjY5MDk5MjUxLDIwLjE1Njg5ODkgQzguOTUxMjI3NDcsMjAuMTAyMjc5MyA5LjE5NTM4NjU3LDIwLjAyMDE3NzcgOS40MjMzNTU4MiwxOS45MTEwNTMzIEM5LjUyMTAwODA2LDE5LjE3OTA4MTkgOS43ODY4ODY2NywxOC42MTY3NjM5IDEwLjIyMDc2MzYsMTguMjIzNjk3OSBDOS42MDIzNTY0MiwxOC4xNTgyOTIxIDkuMDQ2MzcxNDIsMTguMDU5NzgxOCA4LjU1MjUyMzU3LDE3LjkyODc5OCBDOC4wNTg5NjA3NSwxNy43OTc2NDIxIDcuNTQ4OTIzMDMsMTcuNTg0Nzg2MyA3LjAyMjc1MjQ2LDE3LjI4OTY1NjkgQzYuNDk2Mjk2ODUsMTYuOTk0OTI5MSA2LjA1OTU2OTU4LDE2LjYyODk0MzQgNS43MTI0NTY2MiwxNi4xOTIzMzA5IEM1LjM2NTI4NjY1LDE1Ljc1NTQ4ODkgNS4wODAzNjc4NSwxNS4xODE5ODMxIDQuODU4MDk5MjYsMTQuNDcyMzMgQzQuNjM1NzE2NjYsMTMuNzYyMzkgNC41MjQ0OTY4NiwxMi45NDM0NDAzIDQuNTI0NDk2ODYsMTIuMDE1MjUxNCBDNC41MjQ0OTY4NiwxMC42OTM2NTIzIDQuOTUzMTg2MjEsOS41NjkwMTY0MiA1LjgxMDM5Mzg5LDguNjQwNzEyNzggQzUuNDA4ODM5NjcsNy42NDcxMTgwNyA1LjQ0Njc0OTAzLDYuNTMzMjY4NDYgNS45MjQyMzYsNS4yOTkyNzg2OCBDNi4yMzg5MTIyMiw1LjIwMDg4MzA4IDYuNzA1NTY3OTQsNS4yNzQ3MjI4MSA3LjMyMzk3NTE0LDUuNTIwMzM4ODcgQzcuOTQyNDk2MzQsNS43NjYwNjk2OCA4LjM5NTM1NjQ3LDUuOTc2NTczMTQgOC42ODMwMTE1OSw2LjE1MTEwMzQxIEM4Ljk3MDY2NjcsNi4zMjU1NzYzIDkuMjAxMTQ0MjQsNi40NzM0Mjc4NyA5LjM3NDc4NjIzLDYuNTkzMzM4NTQgQzEwLjM4NDA4NzQsNi4zMDk1MTE3MSAxMS40MjU2NTQzLDYuMTY3NTY5NjEgMTIuNDk5NzcyLDYuMTY3NTY5NjEgQzEzLjU3Mzg4OTYsNi4xNjc1Njk2MSAxNC42MTU2ODQ2LDYuMzA5NTExNzEgMTUuNjI1MDQyOCw2LjU5MzMzODU0IEwxNi4yNDM1MDcsNi4yMDAzODcyNiBDMTYuNjY2NDM4Niw1LjkzODE5MDI1IDE3LjE2NTg3MzEsNS42OTc5MDk5MyAxNy43NDA2MTMzLDUuNDc5NDg4OTIgQzE4LjMxNTY5NTUsNS4yNjExODI2NiAxOC43NTU0NDQxLDUuMjAxMDU1MiAxOS4wNTk0MDMxLDUuMjk5NDUwOCBDMTkuNTQ3NDkzMyw2LjUzMzQ5Nzk1IDE5LjU5MDk4OTMsNy42NDcyOTAxOSAxOS4xODkzMjExLDguNjQwODg0OSBDMjAuMDQ2NDcxNyw5LjU2OTE4ODU0IDIwLjQ3NTMzMjEsMTAuNjk0MTExMiAyMC40NzUzMzIxLDEyLjAxNTQyMzUgQzIwLjQ3NTMzMjEsMTIuOTQzNjEyNCAyMC4zNjM3MTMzLDEzLjc2NTE0MzkgMjAuMTQxNjcyNywxNC40ODA1MzQ0IEMxOS45MTkzNDcxLDE1LjE5NjAzOTYgMTkuNjMxOTc3LDE1Ljc2ODk3MTcgMTkuMjc5NDQ4NSwxNi4yMDA1MzUzIEMxOC45MjY1MjA4LDE2LjYzMjA0MTYgMTguNDg3MDAwMiwxNi45OTUxNTg2IDE3Ljk2MDgyOTcsMTcuMjg5ODI5MSBDMTcuNDM0NTQ1MSwxNy41ODQ3MjkgMTYuOTI0MzM2MywxNy43OTc1ODQ4IDE2LjQzMDc3MzUsMTcuOTI4NzQwNiBDMTUuOTM2OTgyNywxOC4wNTk4OTY1IDE1LjM4MDk5NzcsMTguMTU4NDY0MiAxNC43NjI1OTA1LDE4LjIyMzk4NDggQzE1LjMyNjYxMzQsMTguNzE1MjE2OSAxNS42MDg2ODE5LDE5LjQ5MDYyMDEgMTUuNjA4NjgxOSwyMC41NDk4NTAxIEwxNS42MDg2ODE5LDI0LjAwNTg1OTIgQzE1LjYwODY4MTksMjQuMjAyMTkxNCAxNS42NzY1MTk3LDI0LjM2NjEwNzUgMTUuODEyMzA5MywyNC40OTcwOTEzIEMxNS45NDc5Mjc5LDI0LjYyNzg0NTUgMTYuMTYyMTAxNiwyNC42NjYzNDMyIDE2LjQ1NTExNTMsMjQuNjExNTUxNSBDMTguOTcyNjk2MSwyMy43NzA4NTcyIDIxLjAyNjE4NjUsMjIuMjU1Njc5OCAyMi42MTU3MDA1LDIwLjA2NjA3NjYgQzI0LjIwNTA0MzUsMTcuODc2NjQ1NSAyNSwxNS40MTE1OTIgMjUsMTIuNjcwMjg0OSBDMjQuOTk5NDI5OSwxMC4zODg0ODI1IDI0LjQ0MDMwOTYsOC4yODM4NDk0NSAyMy4zMjMyMDksNi4zNTYzODU4OCBaIiBpZD0iU2hhcGUiPjwvcGF0aD4KICAgICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+" alt="GitHub Logo"/></a></li><li><a href="https://openj9.slack.com/" rel="noopener noreferrer" target="_blank"><img src="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIyNXB4IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgogPCEtLSBDcmVhdGVkIHdpdGggTWV0aG9kIERyYXcgLSBodHRwOi8vZ2l0aHViLmNvbS9kdW9waXhlbC9NZXRob2QtRHJhdy8gLS0+CgogPGc+CiAgPHRpdGxlPmJhY2tncm91bmQ8L3RpdGxlPgogIDxyZWN0IGZpbGw9Im5vbmUiIGlkPSJjYW52YXNfYmFja2dyb3VuZCIgaGVpZ2h0PSIyNiIgd2lkdGg9IjI2IiB5PSItMSIgeD0iLTEiLz4KICA8ZyBkaXNwbGF5PSJub25lIiBvdmVyZmxvdz0idmlzaWJsZSIgeT0iMCIgeD0iMCIgaGVpZ2h0PSIxMDAlIiB3aWR0aD0iMTAwJSIgaWQ9ImNhbnZhc0dyaWQiPgogICA8cmVjdCBmaWxsPSJ1cmwoI2dyaWRwYXR0ZXJuKSIgc3Ryb2tlLXdpZHRoPSIwIiB5PSIxIiB4PSIxIiBoZWlnaHQ9IjIyIiB3aWR0aD0iMjIiLz4KICA8L2c+CiA8L2c+CiA8Zz4KICA8dGl0bGU+TGF5ZXIgMTwvdGl0bGU+CiAgPGVsbGlwc2Ugcnk9IjExIiByeD0iMTEiIGlkPSJzdmdfMSIgY3k9IjEyIiBjeD0iMTIiIHN0cm9rZT0iI0ZGRiIgZmlsbD0iI0ZGRkZGRiIvPgogIDxzdHlsZSB0cmFuc2Zvcm09Im1hdHJpeCgwLjA2NTE4MjQ5NTU3MzI1MzYyLDAsMCwwLjA2NTE4MjQ5NTU3MzI1MzYyLDAsMCkgIiB0eXBlPSJ0ZXh0L2NzcyI+LnN0MHtmaWxsOiM0MzQzNDM7fTwvc3R5bGU+CiAgPGcgc3Ryb2tlPSJudWxsIiBpZD0ic3ZnXzE5Ij4KICAgPGcgc3Ryb2tlPSJudWxsIiB0cmFuc2Zvcm09Im1hdHJpeCgwLjEzMDE1NTgwODUxODA5NDg2LDAsMCwwLjEzMDE1NTgwODUxODA5NDg2LC02Ljg0OTAwNjQ1MDQwNTQ5OSwtNi44MzE1MDczOTEwMjE5MjQpICIgaWQ9InN2Z182Ij4KICAgIDxnIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z183Ij4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfOCIgZD0ibTExMC4yOTgyOTIsMTYxLjI5MzAxMWMwLDcuMSAtNS44LDEyLjkgLTEyLjksMTIuOXMtMTIuOSwtNS44IC0xMi45LC0xMi45YzAsLTcuMSA1LjgsLTEyLjkgMTIuOSwtMTIuOWwxMi45LDBsMCwxMi45eiIgY2xhc3M9InN0MCIvPgogICAgIDxwYXRoIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z185IiBkPSJtMTE2Ljc5ODI5MiwxNjEuMjkzMDExYzAsLTcuMSA1LjgsLTEyLjkgMTIuOSwtMTIuOXMxMi45LDUuOCAxMi45LDEyLjlsMCwzMi4zYzAsNy4xIC01LjgsMTIuOSAtMTIuOSwxMi45cy0xMi45LC01LjggLTEyLjksLTEyLjljMCwwIDAsLTMyLjMgMCwtMzIuM3oiIGNsYXNzPSJzdDAiLz4KICAgIDwvZz4KICAgIDxnIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z18xMCI+CiAgICAgPHBhdGggc3Ryb2tlPSJudWxsIiBpZD0ic3ZnXzExIiBkPSJtMTI5LjY5ODI5MiwxMDkuNDkzMDExYy03LjEsMCAtMTIuOSwtNS44IC0xMi45LC0xMi45czUuOCwtMTIuOSAxMi45LC0xMi45czEyLjksNS44IDEyLjksMTIuOWwwLDEyLjlsLTEyLjksMHoiIGNsYXNzPSJzdDAiLz4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTIiIGQ9Im0xMjkuNjk4MjkyLDExNS45OTMwMTFjNy4xLDAgMTIuOSw1LjggMTIuOSwxMi45cy01LjgsMTIuOSAtMTIuOSwxMi45bC0zMi4zLDBjLTcuMSwwIC0xMi45LC01LjggLTEyLjksLTEyLjlzNS44LC0xMi45IDEyLjksLTEyLjljMCwwIDMyLjMsMCAzMi4zLDB6IiBjbGFzcz0ic3QwIi8+CiAgICA8L2c+CiAgICA8ZyBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTMiPgogICAgIDxwYXRoIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z18xNCIgZD0ibTE4MS40OTgyOTIsMTI4Ljg5MzAxMWMwLC03LjEgNS44LC0xMi45IDEyLjksLTEyLjljNy4xLDAgMTIuOSw1LjggMTIuOSwxMi45cy01LjgsMTIuOSAtMTIuOSwxMi45bC0xMi45LDBsMCwtMTIuOXoiIGNsYXNzPSJzdDAiLz4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTUiIGQ9Im0xNzQuOTk4MjkyLDEyOC44OTMwMTFjMCw3LjEgLTUuOCwxMi45IC0xMi45LDEyLjljLTcuMSwwIC0xMi45LC01LjggLTEyLjksLTEyLjlsMCwtMzIuM2MwLC03LjEgNS44LC0xMi45IDEyLjksLTEyLjljNy4xLDAgMTIuOSw1LjggMTIuOSwxMi45bDAsMzIuM3oiIGNsYXNzPSJzdDAiLz4KICAgIDwvZz4KICAgIDxnIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z18xNiI+CiAgICAgPHBhdGggc3Ryb2tlPSJudWxsIiBpZD0ic3ZnXzE3IiBkPSJtMTYyLjA5ODI5MiwxODAuNjkzMDExYzcuMSwwIDEyLjksNS44IDEyLjksMTIuOWMwLDcuMSAtNS44LDEyLjkgLTEyLjksMTIuOWMtNy4xLDAgLTEyLjksLTUuOCAtMTIuOSwtMTIuOWwwLC0xMi45bDEyLjksMHoiIGNsYXNzPSJzdDAiLz4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTgiIGQ9Im0xNjIuMDk4MjkyLDE3NC4xOTMwMTFjLTcuMSwwIC0xMi45LC01LjggLTEyLjksLTEyLjljMCwtNy4xIDUuOCwtMTIuOSAxMi45LC0xMi45bDMyLjMsMGM3LjEsMCAxMi45LDUuOCAxMi45LDEyLjljMCw3LjEgLTUuOCwxMi45IC0xMi45LDEyLjlsLTMyLjMsMHoiIGNsYXNzPSJzdDAiLz4KICAgIDwvZz4KICAgPC9nPgogIDwvZz4KIDwvZz4KPC9zdmc+" alt="Slack logo"/></a></li><li><a href="https://stackoverflow.com/search?q=%23OpenJ9" rel="noopener noreferrer" target="_blank"><img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjRweCIgaGVpZ2h0PSIyNHB4IiB2aWV3Qm94PSIwIDAgNjUgNzAiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5zdGFja292ZXJmbG93LWxvZ288L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0iI0ZGRkZGRiIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0ic3RhY2tvdmVyZmxvdy1sb2dvIiBmaWxsLXJ1bGU9Im5vbnplcm8iPgogICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgZmlsbD0iI0ZGRkZGRiIgcG9pbnRzPSI1NC4yNDE3MjY2IDYzLjc3MDIyNjUgNTQuMjQxNzI2NiA0NSA2MSA0NSA2MSA3MCAwIDcwIDAgNDUgNi43NTgyNzMzOCA0NSA2Ljc1ODI3MzM4IDYzLjc3MDIyNjUiPjwvcG9seWdvbj4KICAgICAgICAgICAgPHBhdGggZD0iTTE0LjcwNzEwNTcsNDMuNjQyNzU2NyBMNDguMTE3ODUxLDUwLjA4NzIwMTEgTDQ5LjUzMjA2MjQsNDMuODg3NDgyNCBMMTYuMTIxMzE3MiwzNy40NDMwMzggTDE0LjcwNzEwNTcsNDMuNjQyNzU2NyBMMTQuNzA3MTA1Nyw0My42NDI3NTY3IFogTTE5LjEyNjUxNjUsMjguOTU5MjEyNCBMNTAuMDYyMzkxNyw0Mi4yNTU5Nzc1IEw1Mi44OTA4MTQ2LDM2LjU0NTcxMDMgTDIxLjk1NDkzOTMsMjMuMTY3MzY5OSBMMTkuMTI2NTE2NSwyOC45NTkyMTI0IFogTTI3LjcwMDE3MzMsMTQuOTI4MjcgTDUzLjk1MTQ3MzEsMzUuMDc3MzU1OCBMNTguMjgyNDk1NywzMC4yNjQ0MTYzIEwzMi4wMzExOTU4LDEwLjExNTMzMDUgTDI3LjcwMDE3MzMsMTQuOTI4MjcgTDI3LjcwMDE3MzMsMTQuOTI4MjcgWiBNNDQuNjcwNzEwNiwwIEwzOS4xOTA2NDEyLDMuNzUyNDYxMzIgTDU5LjUxOTkzMDcsMjkuMDQwNzg3NiBMNjUsMjUuMjg4MzI2MyBMNDQuNjcwNzEwNiwwIFogTTE0LDU4IEw0OC4xMTc4NTEsNTggTDQ4LjExNzg1MSw1MS43MTg3MDYgTDE0LDUxLjcxODcwNiBMMTQsNTggWiIgaWQ9IlNoYXBlIiBmaWxsPSIjRkZGRkZGIj48L3BhdGg+CiAgICAgICAgPC9nPgogICAgPC9nPgo8L3N2Zz4KCgo=" alt="Stack Overflow logo"/></a></li></ul></nav></footer></div></div><script>
   
   function gaOptout(){document.cookie=disableStr+'=true; expires=Thu, 31 Dec 2099 23:59:59 UTC;path=/',window[disableStr]=!0}var gaProperty='UA-105616558-3',disableStr='ga-disable-'+gaProperty;document.cookie.indexOf(disableStr+'=true')>-1&&(window[disableStr]=!0);
   if(true) {
@@ -63,4 +63,4 @@
       
       
       
-      }</script><script id="gatsby-script-loader">/*<![CDATA[*/window.pagePath="/news/";/*]]>*/</script><script id="gatsby-chunk-mapping">/*<![CDATA[*/window.___chunkMapping={"app":["/app-0b96427b0b370a80fa06.js"],"component---src-pages-about-js":["/component---src-pages-about-js-0c1171ebe659e1cec428.js"],"component---src-pages-index-js":["/component---src-pages-index-js-743bf9596a9631508e4e.js"],"component---src-pages-news-js":["/component---src-pages-news-js-771033deb1dca3596266.js"],"component---src-pages-performance-js":["/component---src-pages-performance-js-31be57d58d932a4860aa.js"]};/*]]>*/</script><script src="/openj9/webpack-runtime-c69760aa7e58303b27f8.js" async=""></script><script src="/openj9/styles-cc4082ebb0cb6903d934.js" async=""></script><script src="/openj9/app-0b96427b0b370a80fa06.js" async=""></script><script src="/openj9/commons-42a47b90457bdd243664.js" async=""></script><script src="/openj9/component---src-pages-news-js-771033deb1dca3596266.js" async=""></script></body></html>
\ No newline at end of file
+      }</script><script id="gatsby-script-loader">/*<![CDATA[*/window.pagePath="/news/";/*]]>*/</script><script id="gatsby-chunk-mapping">/*<![CDATA[*/window.___chunkMapping={"app":["/app-2da2270a07d62743bcd4.js"],"component---src-pages-about-js":["/component---src-pages-about-js-f3472e79e3f9cd8dc280.js"],"component---src-pages-index-js":["/component---src-pages-index-js-4f88f89ee8348cf9654f.js"],"component---src-pages-news-js":["/component---src-pages-news-js-63e528f45eabc859ccac.js"],"component---src-pages-performance-js":["/component---src-pages-performance-js-985e1e9d446123113ec2.js"]};/*]]>*/</script><script src="/openj9/webpack-runtime-4324011276ab16472ff8.js" async=""></script><script src="/openj9/styles-cc4082ebb0cb6903d934.js" async=""></script><script src="/openj9/app-2da2270a07d62743bcd4.js" async=""></script><script src="/openj9/commons-b35008cb74c6abd7ace8.js" async=""></script><script src="/openj9/component---src-pages-news-js-63e528f45eabc859ccac.js" async=""></script></body></html>
\ No newline at end of file
diff --git a/openj9-logo.svg b/openj9-logo.svg
index 5055477..1fadd4a 100644
--- a/openj9-logo.svg
+++ b/openj9-logo.svg
@@ -1,18 +1,17 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<svg width="201px" height="84px" viewBox="0 0 201 84" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<svg width="417px" height="222px" viewBox="0 0 417 222" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
     <!-- Generator: Sketch 61.2 (89653) - https://sketch.com -->
-    <title>Group 13</title>
+    <title>Group</title>
     <desc>Created with Sketch.</desc>
     <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
-        <g id="Group-13">
-            <g id="Logo"></g>
-            <path d="M25.5072595,49.2823467 C23.4642969,52.420646 20.6343636,53.9889214 17.0148866,53.9889214 C13.497227,53.9889214 10.686775,52.4730966 8.58316306,49.4410975 C6.48065384,46.4083989 5.42903167,42.4770454 5.42903167,37.6445891 C5.42903167,32.6967412 6.47036184,28.6919567 8.55302219,25.6309348 C10.6360501,22.5702626 13.445767,21.0390523 16.9843782,21.0390523 C20.4829241,21.0390523 23.2878626,22.4552208 25.4010314,25.284061 C27.5142002,28.1146495 28.5709683,32.0715291 28.5709683,37.153301 C28.5709683,42.1014985 27.549487,46.1443972 25.5072595,49.2823467 M17.0453951,17 C11.9093179,17 7.7844301,18.9448713 4.670364,22.832516 C1.55703305,26.7205103 0,31.6484269 0,37.6155663 C0,43.3326908 1.48645931,48.1595524 4.45901037,52.095102 C7.43119385,56.0317007 11.5759306,58 16.893588,58 C22.2924788,58 26.4930864,55.9254006 29.4965135,51.7779502 C32.4984703,47.6298005 34,42.7637758 34,37.1826734 C34,31.3697389 32.4528914,26.5523185 29.3594093,22.7307617 C26.2655596,18.9109532 22.1608882,17 17.0453951,17" id="Shape" fill="#5DA7A3" fill-rule="nonzero"></path>
-            <path d="M58.0960285,54.1595988 C56.4319945,55.9437119 54.5193073,56.8372101 52.3621555,56.8372101 C50.4982089,56.8372101 48.7108002,56.0961724 46.9938369,54.6137367 C45.276112,53.1334634 44.3310016,51.2563602 43.9502158,48.9860313 L43.9502158,40.5087909 C44.7117874,38.4467887 45.480594,36.6922306 47.0410544,35.2451167 C48.6015147,33.7980027 50.3637915,33.0742655 52.332835,33.0742655 C54.8254591,33.0742655 56.825727,34.1004009 58.3340197,36.1523111 C59.8415508,38.2042214 60.5955067,41.1236792 60.5955067,44.9110449 C60.5955067,49.2927545 59.7615858,52.376567 58.0960285,54.1595988 M53.5296449,29 C49.0950131,29 45.8541449,31.2209505 43.5694299,35.6606889 L43.5694299,29.6321888 L39,29.6321888 L39,70 L43.9502158,70 L43.9502158,55.3198129 C46.2349308,58.9078626 49.3611824,60.7027885 53.3403943,60.7027885 C57.0488675,60.7027885 60.0833498,59.2636039 62.4506953,56.3866765 C64.8168984,53.5083074 66,49.6189409 66,44.7178561 C66,40.1725126 64.8728739,36.4168645 62.5729275,33.4501908 C60.2718388,30.4831566 57.2735312,29 53.5296449,29" id="Shape" fill="#5DA7A3" fill-rule="nonzero"></path>
-            <path d="M77.4064796,41.5671859 C77.6033864,38.7430992 78.509806,36.5678464 80.1239384,34.9365833 C81.7369909,33.3049672 83.7024598,32.4651544 86.0196254,32.4651544 C87.7421105,32.4651544 89.2165722,32.9042999 90.4451703,33.8080077 C91.6726885,34.7103034 92.5445504,35.8452332 93.0589561,37.1270156 C93.5748017,38.4084449 93.8505433,39.8021317 93.8905006,41.5671859 L77.4064796,41.5671859 Z M95.3318445,33.0447982 C92.9452037,30.3841555 89.7921739,29 85.8709553,29 C81.8914206,29 78.5836011,30.4155735 75.9507366,33.3024961 C73.3171522,36.1880067 72,39.9602806 72,44.6450875 C72,49.2324633 73.2663956,52.9316639 75.8017066,55.7599868 C78.3362976,58.5897217 81.6534764,60 85.7528831,60 C88.8616359,60 91.5636158,59.1753667 93.8606226,57.5278651 C96.1583494,55.8810695 97.7026465,53.8011296 98.4949537,51.2866334 L94.1590427,50.4136376 C92.5938671,54.2769882 89.9008866,56.2097226 86.0790214,56.2097226 C83.9602027,56.2097226 81.9504566,55.5418261 80.0497833,53.9885784 C78.1487501,52.4346247 77.1976935,49.3334244 77.1976935,45.0972943 L99,45.0972943 C98.940604,39.4491209 97.7177655,35.7047349 95.3318445,33.0447982 L95.3318445,33.0447982 Z" id="Shape" fill="#5DA7A3" fill-rule="nonzero"></path>
-            <path d="M123.4024,30.7449355 C121.6532,29.5820067 119.4756,29 116.9888,29 C112.676,29 109.2,31.1281201 106.4,35.3832757 L106.4,29.6344234 L102,29.6344234 L102,60 L106.8,60 L106.8,43.4366575 C106.8,40.3158727 107.7384,37.7995072 109.5316,35.88973 C111.3236,33.9810373 113.5624,33.0266909 116.2024,33.0266909 C118.1172,33.0266909 119.7952,33.5935148 121.1372,34.7271626 C122.4796,35.8600874 123.2,37.8190279 123.2,40.6036226 L123.2,60 L128,60 L128,42.5419578 C128,38.7440931 127.6624,36.1196407 127.0124,34.6675159 C126.3632,33.2153912 125.152,31.9078644 123.4024,30.7449355 Z" id="Shape" fill="#5DA7A3" fill-rule="nonzero"></path>
-            <path d="M147.297872,49.6058796 C147.297872,51.8583934 147.122809,53.4865275 146.782085,54.4928377 C146.440277,55.4980526 145.770404,56.3166838 144.775,56.9505571 C143.780319,57.5837 142.126255,57.8991761 140.026574,57.8991761 C138.550468,57.8991761 137.170213,57.7038292 135,57.3127703 L135,61.2189776 C137.170213,61.7389289 138.780872,62 140.60566,62 C144.013617,62 146.795468,61.0875293 148.85934,59.2644134 C150.922489,57.4402022 152,54.2200824 152,49.6029585 L152,23 L147.297872,23 L147.297872,49.6058796 Z" id="Shape" fill="#FFFFFF" fill-rule="nonzero"></path>
-            <path d="M176.276287,41.8098505 C174.577287,43.6146911 172.473613,44.5172909 169.966313,44.5172909 C167.688758,44.5172909 165.692974,43.7386055 163.976516,42.1815938 C162.260407,40.6235046 161.402178,38.5072617 161.402178,35.8310693 C161.402178,33.3402098 162.17626,31.2264811 163.723726,29.4956301 C165.269795,27.7637015 167.377659,26.8980964 170.045921,26.8980964 C172.678219,26.8980964 174.7997,27.7403553 176.408967,29.426669 C178.018932,31.1126235 178.82374,33.1290165 178.82374,35.4736929 C178.82374,37.892718 177.973891,40.00501 176.276287,41.8098505 M180.344321,27.9576545 C177.908249,24.6539882 174.404105,23 169.832236,23 C166.097648,23 163.024713,24.2642863 160.615177,26.7917814 C158.204244,29.3199948 157,32.3603879 157,35.9140381 C157,39.412735 158.146284,42.3478906 160.440947,44.7198641 C162.735959,47.0914784 165.572515,48.2778243 168.951312,48.2778243 C173.736166,48.2778243 177.320617,46.0268919 179.704315,41.5257453 C179.650545,46.667296 178.747624,50.7388726 176.996599,53.7393975 C175.244177,56.7406408 172.634225,58.2398258 169.164996,58.2398258 C165.59102,58.2398258 163.047059,56.5114889 161.534858,53.0530193 L157.879877,54.4257757 C159.800243,59.4753783 163.544259,62 169.112623,62 C173.878273,62 177.552109,60.1190149 180.130986,56.3566857 C182.709863,52.5939972 184,47.6729783 184,41.5936288 C184,35.8080823 182.78144,31.2627575 180.344321,27.9576545" id="Shape" fill="#FFFFFF" fill-rule="nonzero"></path>
-            <path d="M124.330293,62.7320036 C126.110366,65.9413981 128.336178,68.9617675 131.00773,71.6984425 C147.019412,88.1005192 172.979478,88.1005192 188.99116,71.6984425 C205.002947,55.2964371 205.002947,28.7035683 188.99116,12.3015628 C172.979478,-4.10052095 147.019412,-4.10052095 131.00773,12.3015628 C126.269933,17.1548288 122.934018,22.9003468 121,29.0100947 L123.1264,29.9799044 C124.939565,24.1265807 128.111969,18.6193922 132.643604,13.9773173 C147.751827,-1.49927092 172.24708,-1.49927092 187.355286,13.9773173 C202.463597,29.45382 202.463597,54.5461783 187.355286,70.0226916 C172.24708,85.4992549 147.751827,85.4992549 132.643604,70.0226916 C130.178562,67.4975603 128.115725,64.7164678 126.455058,61.7629276 L124.330293,62.7320036 Z" id="Shape" fill="#5DA7A3" fill-rule="nonzero"></path>
+        <g id="Group" fill-rule="nonzero">
+            <path d="M53.2651595,130.036425 C48.9989729,138.303165 43.0894063,142.434232 35.5310867,142.434232 C28.1853858,142.434232 22.3165007,138.441328 17.923664,130.454598 C13.5331301,122.466026 11.3370955,112.110266 11.3370955,99.3808688 C11.3370955,86.3475134 13.511638,75.798325 17.8607228,67.7351453 C22.2105752,59.6728868 28.0779252,55.6394548 35.467378,55.6394548 C42.773165,55.6394548 48.6305366,59.3698499 53.0433303,66.821429 C57.4561239,74.2776133 59.6629044,84.7006132 59.6629044,98.0867441 C59.6629044,111.12102 57.5298111,121.770607 53.2651595,130.036425 M35.5947957,45 C24.869458,45 16.2557217,50.1230756 9.75281894,60.3637007 C3.25145137,70.6052466 0,83.5861001 0,99.3044185 C0,114.364161 3.10407679,127.078821 9.31146283,137.445635 C15.5180813,147.815212 24.1732668,153 35.2777867,153 C46.551941,153 55.3237981,147.535202 61.5956605,136.61021 C67.8644527,125.683377 71,112.865556 71,98.1641153 C71,82.8519952 67.7692732,70.1622048 61.3093547,60.095665 C54.8486686,50.0337304 46.2771489,45 35.5947957,45" id="Shape" fill="#5DA7A3"></path>
+            <path d="M120.606578,143.274065 C117.155248,147.97368 113.188193,150.327285 108.7141,150.327285 C104.848137,150.327285 101.140919,148.375283 97.5798099,144.470331 C94.0171212,140.571074 92.0568922,135.62651 91.2671143,129.646131 L91.2671143,107.315839 C92.8466702,101.884224 94.441232,97.2624611 97.6777425,93.4505513 C100.914253,89.6386413 104.569345,87.7322116 108.653287,87.7322116 C113.823174,87.7322116 117.971878,90.4352024 121.100189,95.8402341 C124.22692,101.245266 125.790681,108.935545 125.790681,118.912021 C125.790681,130.454085 124.061067,138.577298 120.606578,143.274065 M111.13556,77 C101.937805,77 95.2160042,82.8503086 90.4773361,94.5452293 L90.4773361,78.6652778 L81,78.6652778 L81,185 L91.2671143,185 L91.2671143,146.330239 C96.0057824,155.781687 102.48986,160.509784 110.74304,160.509784 C118.434688,160.509784 124.728429,156.718761 129.638479,149.140514 C134.54616,141.558468 137,131.313308 137,118.403133 C137,106.430033 134.662257,96.5371065 129.891998,88.7224538 C125.119369,80.9068515 118.900657,77 111.13556,77" id="Shape" fill="#5DA7A3"></path>
+            <path d="M160.213439,110.242234 C160.621838,102.772069 162.50182,97.0181743 165.84965,92.7032203 C169.19524,88.3873326 173.271768,86.1658923 178.077742,86.1658923 C181.650303,86.1658923 184.708446,87.327503 187.25665,89.7179559 C189.802613,92.1046735 191.610919,95.1067459 192.677835,98.4972671 C193.747737,101.886854 194.319645,105.573381 194.40252,110.242234 L160.213439,110.242234 Z M197.391974,87.6991436 C192.441904,80.6613145 185.902287,77 177.769389,77 C169.515539,77 162.654876,80.7444202 157.19412,88.3807961 C151.731871,96.0134371 149,105.99171 149,118.38378 C149,130.518129 151.626598,140.303111 156.885021,147.784481 C162.141951,155.269586 169.022025,159 177.524498,159 C183.972282,159 189.576388,156.818712 194.340551,152.460804 C199.106206,148.104764 202.309193,142.602988 203.952497,135.95174 L194.959496,133.642525 C191.713206,143.861711 186.127765,148.974105 178.200933,148.974105 C173.806346,148.974105 169.637984,147.207411 165.695847,143.09882 C161.752963,138.988362 159.780401,130.785187 159.780401,119.57994 L205,119.57994 C204.876808,104.63961 202.340551,94.7351052 197.391974,87.6991436 L197.391974,87.6991436 Z" id="Shape" fill="#5DA7A3"></path>
+            <path d="M256.451138,81.6156358 C252.818185,78.5395016 248.295477,77 243.130585,77 C234.173231,77 226.953846,82.6292209 221.138462,93.8847938 L221.138462,78.6781522 L212,78.6781522 L212,159 L221.969231,159 L221.969231,115.187288 C221.969231,106.932308 223.918215,100.276116 227.642554,95.2244471 C231.3644,90.1756471 236.014215,87.6512469 241.497292,87.6512469 C245.474185,87.6512469 248.959262,89.1505875 251.746492,92.1492688 C254.534554,95.1460376 256.030769,100.327751 256.030769,107.693453 L256.030769,159 L266,159 L266,112.820663 C266,102.774698 265.298831,95.832598 263.948831,91.9914937 C262.600492,88.1503896 260.084923,84.6917703 256.451138,81.6156358 Z" id="Shape" fill="#5DA7A3"></path>
+            <path d="M305.319148,131.26681 C305.319148,137.215757 304.958724,141.515701 304.257234,144.173392 C303.553511,146.82819 302.174361,148.990216 300.125,150.664292 C298.077127,152.336438 294.671701,153.169619 290.348829,153.169619 C287.309787,153.169619 284.468086,152.653703 280,151.620906 L280,161.9373 C284.468086,163.310505 287.784148,164 291.541065,164 C298.557447,164 304.284787,161.590141 308.533935,156.775246 C312.781595,151.957457 315,143.453038 315,131.259096 L315,61 L305.319148,61 L305.319148,131.26681 Z" id="Shape" fill="#000000"></path>
+            <path d="M365.980447,110.677297 C362.456595,115.443928 358.09342,117.827717 352.893094,117.827717 C348.169276,117.827717 344.029872,115.771189 340.469811,111.659081 C336.910474,107.544128 335.130443,101.955076 335.130443,94.887183 C335.130443,88.3087592 336.735947,82.7263475 339.945506,78.1551256 C343.152167,73.5810578 347.524033,71.2949725 353.058207,71.2949725 C358.517788,71.2949725 362.917896,73.5193999 366.255635,77.9729976 C369.594822,82.4256467 371.264053,87.7509923 371.264053,93.9433428 C371.264053,100.33205 369.501404,105.910667 365.980447,110.677297 M374.417851,74.0932927 C369.365257,65.3682252 362.097403,61 352.615008,61 C344.869196,61 338.495701,64.3390125 333.498145,71.0141919 C328.497691,77.6912683 326,85.7210245 326,95.1063058 C326,104.346454 328.377478,112.098275 333.136779,118.362718 C337.896804,124.626212 343.780031,127.759382 350.787906,127.759382 C360.712048,127.759382 368.146465,121.814612 373.090431,109.926968 C372.978908,123.505936 371.106183,134.259074 367.474428,142.183537 C363.839775,150.109897 358.426541,154.069284 351.231103,154.069284 C343.818412,154.069284 338.542048,149.504701 335.405631,140.370795 L327.82493,143.996279 C331.807911,157.332409 339.573278,164 351.122477,164 C361.006788,164 368.626596,159.03227 373.975378,149.095862 C379.32416,139.158505 382,126.161968 382,110.10625 C382,94.8264738 379.472616,82.8221544 374.417851,74.0932927" id="Shape" fill="#060606"></path>
+            <path d="M257.910358,165.791724 C261.604009,174.273695 266.222569,182.2561 271.76604,189.488741 C304.99028,232.837086 358.857417,232.837086 392.081657,189.488741 C425.306114,146.140584 425.306114,75.8594305 392.081657,32.5112731 C358.857417,-10.837091 304.99028,-10.837091 271.76604,32.5112731 C261.935111,45.3377618 255.013087,60.5223451 251,76.669536 L255.41228,79.2326045 C259.174597,63.7631061 265.757336,49.2083937 275.160478,36.9400529 C306.510041,-3.96235883 357.337691,-3.96235883 388.687218,36.9400529 C420.036963,77.8422386 420.036963,144.157757 388.687218,185.059971 C357.337691,225.962316 306.510041,225.962316 275.160478,185.059971 C270.045516,178.386409 265.765129,171.036379 262.319245,163.230594 L257.910358,165.791724 Z" id="Shape" fill="#5DA7A3"></path>
         </g>
     </g>
 </svg>
\ No newline at end of file
diff --git a/page-data/app-data.json b/page-data/app-data.json
index c63b0d9..1be0fc1 100644
--- a/page-data/app-data.json
+++ b/page-data/app-data.json
@@ -1 +1 @@
-{"webpackCompilationHash":"ff81fa116fe05de441f2"}
+{"webpackCompilationHash":"f4d1e98873c519b1a9a3"}
diff --git a/page-data/news/page-data.json b/page-data/news/page-data.json
index d8994bf..89dae17 100644
--- a/page-data/news/page-data.json
+++ b/page-data/news/page-data.json
@@ -1 +1 @@
-{"componentChunkName":"component---src-pages-news-js","path":"/news/","result":{"data":{"allWordpressPost":{"nodes":[{"id":"2448bd6d-c62a-5f4c-9415-052246a5b89b","title":"Arraylets: What are They?","date":"02 June 2020","excerpt":"<p>Garbage Collectors (GCs) are responsible for allocating and deallocating objects making sure the running application run as smoothly as possible. There are many types of GC configurations out there, mark sweep, generational, region based, concurrent, parallel, reference counting [1] and a combination of these. The way we represent objects in each of these configurations, also&#8230;</p>\n","link":"https://blog.openj9.org/2020/06/02/arraylets-what-are-they/"},{"id":"028eea95-c100-5b56-a4af-d5ec8702efaf","title":"Manipulating the Class File with AsmTools","date":"27 May 2020","excerpt":"<p>A Java class file is represented with a hardware &amp; OS independent binary format to be loaded &amp; interpreted at runtime. Except the magic number (the first 4 bytes such as CAFEBABE) and the version number (the 8th byte) which are visible or can be manually edited in a hexadecimal way, modifying the majority of&#8230;</p>\n","link":"https://blog.openj9.org/2020/05/27/manipulating-the-class-file-with-asmtools/"}]},"allMarkdownRemark":{"edges":[{"node":{"id":"8ffbd8d9-4379-5170-a0ae-78ba62fdfea1","html":"<!--\nCopyright (c) 2017, 2020 IBM Corp. and others\n\nThis program and the accompanying materials are made available under\nthe terms of the Eclipse Public License 2.0 which accompanies this\ndistribution and is available at https://www.eclipse.org/legal/epl-2.0/\nor the Apache License, Version 2.0 which accompanies this distribution and\nis available at https://www.apache.org/licenses/LICENSE-2.0.\n\nThis Source Code may also be made available under the following\nSecondary Licenses when the conditions for such availability set\nforth in the Eclipse Public License, v. 2.0 are satisfied: GNU\nGeneral Public License, version 2 with the GNU Classpath\nException [1] and GNU General Public License, version 2 with the\nOpenJDK Assembly Exception [2].\n\n[1] https://www.gnu.org/software/classpath/license.html\n[2] http://openjdk.java.net/legal/assembly-exception.html\n\nSPDX-License-Identifier: EPL-2.0 OR Apache-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 OR LicenseRef-GPL-2.0 WITH Assembly-exception\n\nThe project website pages cannot be redistributed\n-->\n<h3>Eclipse OpenJ9 version 0.21.0 released</h3>\n<p><em>20 July 2020</em></p>\n<p>OpenJ9 version 0.21.0 supports OpenJDK version 8, 11, and 14. OpenJDK builds that contain version 0.21.0 are now available from the AdoptOpenJDK community project:</p>\n<ul>\n<li><a href=\"https://adoptopenjdk.net/releases.html?variant=openjdk8&#x26;jvmVariant=openj9\" target=\"_blank\" rel=\"nofollow\">OpenJDK version 8</a></li>\n<li><a href=\"https://adoptopenjdk.net/releases.html?variant=openjdk11&#x26;jvmVariant=openj9\" target=\"_blank\" rel=\"nofollow\">OpenJDK version 11</a></li>\n<li><a href=\"https://adoptopenjdk.net/releases.html?variant=openjdk14&#x26;jvmVariant=openj9\" target=\"_blank\" rel=\"nofollow\">OpenJDK version 14</a></li>\n</ul>\n<p>This release of OpenJ9 sees several performance enhancements: </p>\n<ul>\n<li>If the <code>-Xtune:virtualized</code> command line option is used, the default JIT scratch memory limit is now reduced from 256 MB to 16 MB. This reduces the peak from JIT compilation activity, allowing you to size containers more easily, based on the particular application's memory usage.</li>\n<li>If the JIT is running in a container and no swap space is defined, the JIT dynamically adjusts its scratch memory consumption based on the amount of free physical memory available, to avoid out-of-memory (OOM) occurrences.</li>\n<li>Several performance features were added to the AArch64 JIT compiler implementation that led to a throughput improvement on multiple applications of at least 20%. The most notable improvements were seen in global register allocation, recompilation (without profiling), CUDA support, concurrent scavenge GC policy, and the inlined code sequence for object allocations.</li>\n</ul>\n<p>In this release, we've introduced two new options:</p>\n<ul>\n<li><code>-XX:[+|-]HandleSIGABRT</code> affects the handling of the operating system signal <code>SIGABRT</code>. For compatibility with the reference implementation, set <code>-XX:-HandleSIGABRT</code>. </li>\n<li><code>-XX:[+|-]PrintFlagsFinal</code> outputs the values of a subset of configuration parameters in a format compatible with that produced by HotSpot. This is an initial implementation, and over time, we expect more options to be added to the output.</li>\n</ul>\n<p>And for your convenience, the Application Programming Interface (API) documentation that applies to OpenJ9 can now be found in the user documentation for both JDK 8 and JDK 11. The documentation includes links to Oracle API documentation for information that is not specific to OpenJ9.</p>\n<p>On macOS® systems: You should note that in this release, the version information for shared libraries on macOS has been updated from 0.0.0 to 1.0.0. If an application has linked against a shared library from a previous OpenJ9 release, it needs to be re-linked against the new release. Failure to re-link causes an error <code>Incompatible library version</code>, <code>requires version 0.0.0</code>.</p>\n<p>For all the details of changes and improvements in 0.21.0, read the <a href=\"https://www.eclipse.org/openj9/docs/version0.21/\" target=\"_blank\" rel=\"nofollow\">Version 0.21.0 \"What's New\" page</a> and see also the <a href=\"https://github.com/eclipse/openj9/blob/master/doc/release-notes/0.21/0.21.md\" target=\"_blank\" rel=\"nofollow\">OpenJ9 Release notes</a>.</p>"}}]}},"pageContext":{}}}
\ No newline at end of file
+{"componentChunkName":"component---src-pages-news-js","path":"/news/","result":{"data":{"allWordpressPost":{"nodes":[{"id":"2448bd6d-c62a-5f4c-9415-052246a5b89b","title":"Arraylets: What are They?","date":"02 June 2020","excerpt":"<p>Garbage Collectors (GCs) are responsible for allocating and deallocating objects making sure the running application run as smoothly as possible. There are many types of GC configurations out there, mark sweep, generational, region based, concurrent, parallel, reference counting [1] and a combination of these. The way we represent objects in each of these configurations, also&#8230;</p>\n","link":"https://blog.openj9.org/2020/06/02/arraylets-what-are-they/"},{"id":"028eea95-c100-5b56-a4af-d5ec8702efaf","title":"Manipulating the Class File with AsmTools","date":"27 May 2020","excerpt":"<p>A Java class file is represented with a hardware &amp; OS independent binary format to be loaded &amp; interpreted at runtime. Except the magic number (the first 4 bytes such as CAFEBABE) and the version number (the 8th byte) which are visible or can be manually edited in a hexadecimal way, modifying the majority of&#8230;</p>\n","link":"https://blog.openj9.org/2020/05/27/manipulating-the-class-file-with-asmtools/"}]},"allMarkdownRemark":{"edges":[{"node":{"id":"5c689f44-7f9e-5afb-8d99-37fbbda2aa6f","html":"<!--\nCopyright (c) 2017, 2020 IBM Corp. and others\n\nThis program and the accompanying materials are made available under\nthe terms of the Eclipse Public License 2.0 which accompanies this\ndistribution and is available at https://www.eclipse.org/legal/epl-2.0/\nor the Apache License, Version 2.0 which accompanies this distribution and\nis available at https://www.apache.org/licenses/LICENSE-2.0.\n\nThis Source Code may also be made available under the following\nSecondary Licenses when the conditions for such availability set\nforth in the Eclipse Public License, v. 2.0 are satisfied: GNU\nGeneral Public License, version 2 with the GNU Classpath\nException [1] and GNU General Public License, version 2 with the\nOpenJDK Assembly Exception [2].\n\n[1] https://www.gnu.org/software/classpath/license.html\n[2] http://openjdk.java.net/legal/assembly-exception.html\n\nSPDX-License-Identifier: EPL-2.0 OR Apache-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 OR LicenseRef-GPL-2.0 WITH Assembly-exception\n\nThe project website pages cannot be redistributed\n-->\n<h3>Eclipse OpenJ9 version 0.21.0 released</h3>\n<p><em>20 July 2020</em></p>\n<p>OpenJ9 version 0.21.0 supports OpenJDK version 8, 11, and 14. OpenJDK builds that contain version 0.21.0 are now available from the AdoptOpenJDK community project:</p>\n<ul>\n<li><a href=\"https://adoptopenjdk.net/releases.html?variant=openjdk8&#x26;jvmVariant=openj9\" target=\"_blank\" rel=\"nofollow\">OpenJDK version 8</a></li>\n<li><a href=\"https://adoptopenjdk.net/releases.html?variant=openjdk11&#x26;jvmVariant=openj9\" target=\"_blank\" rel=\"nofollow\">OpenJDK version 11</a></li>\n<li><a href=\"https://adoptopenjdk.net/releases.html?variant=openjdk14&#x26;jvmVariant=openj9\" target=\"_blank\" rel=\"nofollow\">OpenJDK version 14</a></li>\n</ul>\n<p>This release of OpenJ9 sees several performance enhancements: </p>\n<ul>\n<li>If the <code>-Xtune:virtualized</code> command line option is used, the default JIT scratch memory limit is now reduced from 256 MB to 16 MB. This reduces the peak from JIT compilation activity, allowing you to size containers more easily, based on the particular application's memory usage.</li>\n<li>If the JIT is running in a container and no swap space is defined, the JIT dynamically adjusts its scratch memory consumption based on the amount of free physical memory available, to avoid out-of-memory (OOM) occurrences.</li>\n<li>Several performance features were added to the AArch64 JIT compiler implementation that led to a throughput improvement on multiple applications of at least 20%. The most notable improvements were seen in global register allocation, recompilation (without profiling), CUDA support, concurrent scavenge GC policy, and the inlined code sequence for object allocations.</li>\n</ul>\n<p>In this release, we've introduced two new options:</p>\n<ul>\n<li><code>-XX:[+|-]HandleSIGABRT</code> affects the handling of the operating system signal <code>SIGABRT</code>. For compatibility with the reference implementation, set <code>-XX:-HandleSIGABRT</code>. </li>\n<li><code>-XX:[+|-]PrintFlagsFinal</code> outputs the values of a subset of configuration parameters in a format compatible with that produced by HotSpot. This is an initial implementation, and over time, we expect more options to be added to the output.</li>\n</ul>\n<p>And for your convenience, the Application Programming Interface (API) documentation that applies to OpenJ9 can now be found in the user documentation for both JDK 8 and JDK 11. The documentation includes links to Oracle API documentation for information that is not specific to OpenJ9.</p>\n<p>On macOS® systems: You should note that in this release, the version information for shared libraries on macOS has been updated from 0.0.0 to 1.0.0. If an application has linked against a shared library from a previous OpenJ9 release, it needs to be re-linked against the new release. Failure to re-link causes an error <code>Incompatible library version</code>, <code>requires version 0.0.0</code>.</p>\n<p>For all the details of changes and improvements in 0.21.0, read the <a href=\"https://www.eclipse.org/openj9/docs/version0.21/\" target=\"_blank\" rel=\"nofollow\">Version 0.21.0 \"What's New\" page</a> and see also the <a href=\"https://github.com/eclipse/openj9/blob/master/doc/release-notes/0.21/0.21.md\" target=\"_blank\" rel=\"nofollow\">OpenJ9 Release notes</a>.</p>"}}]}},"pageContext":{}}}
\ No newline at end of file
diff --git a/performance/index.html b/performance/index.html
index 8f0d80d..d1c4cc2 100644
--- a/performance/index.html
+++ b/performance/index.html
@@ -1,7 +1,7 @@
 <!DOCTYPE html><html><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="ie=edge"/><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"/><style data-href="/openj9/styles.49a8f6a822c9d7d4566b.css">/*!
  * Font Awesome Free 5.12.1 by @fontawesome - https://fontawesome.com
  * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
- */.fa,.fab,.fad,.fal,.far,.fas{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-.0667em}.fa-xs{font-size:.75em}.fa-sm{font-size:.875em}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:2.5em;padding-left:0}.fa-ul>li{position:relative}.fa-li{left:-2em;position:absolute;text-align:center;width:2em;line-height:inherit}.fa-border{border:.08em solid #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.fab.fa-pull-left,.fal.fa-pull-left,.far.fa-pull-left,.fas.fa-pull-left{margin-right:.3em}.fa.fa-pull-right,.fab.fa-pull-right,.fal.fa-pull-right,.far.fa-pull-right,.fas.fa-pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s linear infinite;animation:fa-spin 2s linear infinite}.fa-pulse{-webkit-animation:fa-spin 1s steps(8) infinite;animation:fa-spin 1s steps(8) infinite}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scaleX(-1);transform:scaleX(-1)}.fa-flip-vertical{-webkit-transform:scaleY(-1);transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical,.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{-webkit-transform:scale(-1);transform:scale(-1)}:root .fa-flip-both,:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270{-webkit-filter:none;filter:none}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-500px:before{content:"\F26E"}.fa-accessible-icon:before{content:"\F368"}.fa-accusoft:before{content:"\F369"}.fa-acquisitions-incorporated:before{content:"\F6AF"}.fa-ad:before{content:"\F641"}.fa-address-book:before{content:"\F2B9"}.fa-address-card:before{content:"\F2BB"}.fa-adjust:before{content:"\F042"}.fa-adn:before{content:"\F170"}.fa-adobe:before{content:"\F778"}.fa-adversal:before{content:"\F36A"}.fa-affiliatetheme:before{content:"\F36B"}.fa-air-freshener:before{content:"\F5D0"}.fa-airbnb:before{content:"\F834"}.fa-algolia:before{content:"\F36C"}.fa-align-center:before{content:"\F037"}.fa-align-justify:before{content:"\F039"}.fa-align-left:before{content:"\F036"}.fa-align-right:before{content:"\F038"}.fa-alipay:before{content:"\F642"}.fa-allergies:before{content:"\F461"}.fa-amazon:before{content:"\F270"}.fa-amazon-pay:before{content:"\F42C"}.fa-ambulance:before{content:"\F0F9"}.fa-american-sign-language-interpreting:before{content:"\F2A3"}.fa-amilia:before{content:"\F36D"}.fa-anchor:before{content:"\F13D"}.fa-android:before{content:"\F17B"}.fa-angellist:before{content:"\F209"}.fa-angle-double-down:before{content:"\F103"}.fa-angle-double-left:before{content:"\F100"}.fa-angle-double-right:before{content:"\F101"}.fa-angle-double-up:before{content:"\F102"}.fa-angle-down:before{content:"\F107"}.fa-angle-left:before{content:"\F104"}.fa-angle-right:before{content:"\F105"}.fa-angle-up:before{content:"\F106"}.fa-angry:before{content:"\F556"}.fa-angrycreative:before{content:"\F36E"}.fa-angular:before{content:"\F420"}.fa-ankh:before{content:"\F644"}.fa-app-store:before{content:"\F36F"}.fa-app-store-ios:before{content:"\F370"}.fa-apper:before{content:"\F371"}.fa-apple:before{content:"\F179"}.fa-apple-alt:before{content:"\F5D1"}.fa-apple-pay:before{content:"\F415"}.fa-archive:before{content:"\F187"}.fa-archway:before{content:"\F557"}.fa-arrow-alt-circle-down:before{content:"\F358"}.fa-arrow-alt-circle-left:before{content:"\F359"}.fa-arrow-alt-circle-right:before{content:"\F35A"}.fa-arrow-alt-circle-up:before{content:"\F35B"}.fa-arrow-circle-down:before{content:"\F0AB"}.fa-arrow-circle-left:before{content:"\F0A8"}.fa-arrow-circle-right:before{content:"\F0A9"}.fa-arrow-circle-up:before{content:"\F0AA"}.fa-arrow-down:before{content:"\F063"}.fa-arrow-left:before{content:"\F060"}.fa-arrow-right:before{content:"\F061"}.fa-arrow-up:before{content:"\F062"}.fa-arrows-alt:before{content:"\F0B2"}.fa-arrows-alt-h:before{content:"\F337"}.fa-arrows-alt-v:before{content:"\F338"}.fa-artstation:before{content:"\F77A"}.fa-assistive-listening-systems:before{content:"\F2A2"}.fa-asterisk:before{content:"\F069"}.fa-asymmetrik:before{content:"\F372"}.fa-at:before{content:"\F1FA"}.fa-atlas:before{content:"\F558"}.fa-atlassian:before{content:"\F77B"}.fa-atom:before{content:"\F5D2"}.fa-audible:before{content:"\F373"}.fa-audio-description:before{content:"\F29E"}.fa-autoprefixer:before{content:"\F41C"}.fa-avianex:before{content:"\F374"}.fa-aviato:before{content:"\F421"}.fa-award:before{content:"\F559"}.fa-aws:before{content:"\F375"}.fa-baby:before{content:"\F77C"}.fa-baby-carriage:before{content:"\F77D"}.fa-backspace:before{content:"\F55A"}.fa-backward:before{content:"\F04A"}.fa-bacon:before{content:"\F7E5"}.fa-bahai:before{content:"\F666"}.fa-balance-scale:before{content:"\F24E"}.fa-balance-scale-left:before{content:"\F515"}.fa-balance-scale-right:before{content:"\F516"}.fa-ban:before{content:"\F05E"}.fa-band-aid:before{content:"\F462"}.fa-bandcamp:before{content:"\F2D5"}.fa-barcode:before{content:"\F02A"}.fa-bars:before{content:"\F0C9"}.fa-baseball-ball:before{content:"\F433"}.fa-basketball-ball:before{content:"\F434"}.fa-bath:before{content:"\F2CD"}.fa-battery-empty:before{content:"\F244"}.fa-battery-full:before{content:"\F240"}.fa-battery-half:before{content:"\F242"}.fa-battery-quarter:before{content:"\F243"}.fa-battery-three-quarters:before{content:"\F241"}.fa-battle-net:before{content:"\F835"}.fa-bed:before{content:"\F236"}.fa-beer:before{content:"\F0FC"}.fa-behance:before{content:"\F1B4"}.fa-behance-square:before{content:"\F1B5"}.fa-bell:before{content:"\F0F3"}.fa-bell-slash:before{content:"\F1F6"}.fa-bezier-curve:before{content:"\F55B"}.fa-bible:before{content:"\F647"}.fa-bicycle:before{content:"\F206"}.fa-biking:before{content:"\F84A"}.fa-bimobject:before{content:"\F378"}.fa-binoculars:before{content:"\F1E5"}.fa-biohazard:before{content:"\F780"}.fa-birthday-cake:before{content:"\F1FD"}.fa-bitbucket:before{content:"\F171"}.fa-bitcoin:before{content:"\F379"}.fa-bity:before{content:"\F37A"}.fa-black-tie:before{content:"\F27E"}.fa-blackberry:before{content:"\F37B"}.fa-blender:before{content:"\F517"}.fa-blender-phone:before{content:"\F6B6"}.fa-blind:before{content:"\F29D"}.fa-blog:before{content:"\F781"}.fa-blogger:before{content:"\F37C"}.fa-blogger-b:before{content:"\F37D"}.fa-bluetooth:before{content:"\F293"}.fa-bluetooth-b:before{content:"\F294"}.fa-bold:before{content:"\F032"}.fa-bolt:before{content:"\F0E7"}.fa-bomb:before{content:"\F1E2"}.fa-bone:before{content:"\F5D7"}.fa-bong:before{content:"\F55C"}.fa-book:before{content:"\F02D"}.fa-book-dead:before{content:"\F6B7"}.fa-book-medical:before{content:"\F7E6"}.fa-book-open:before{content:"\F518"}.fa-book-reader:before{content:"\F5DA"}.fa-bookmark:before{content:"\F02E"}.fa-bootstrap:before{content:"\F836"}.fa-border-all:before{content:"\F84C"}.fa-border-none:before{content:"\F850"}.fa-border-style:before{content:"\F853"}.fa-bowling-ball:before{content:"\F436"}.fa-box:before{content:"\F466"}.fa-box-open:before{content:"\F49E"}.fa-boxes:before{content:"\F468"}.fa-braille:before{content:"\F2A1"}.fa-brain:before{content:"\F5DC"}.fa-bread-slice:before{content:"\F7EC"}.fa-briefcase:before{content:"\F0B1"}.fa-briefcase-medical:before{content:"\F469"}.fa-broadcast-tower:before{content:"\F519"}.fa-broom:before{content:"\F51A"}.fa-brush:before{content:"\F55D"}.fa-btc:before{content:"\F15A"}.fa-buffer:before{content:"\F837"}.fa-bug:before{content:"\F188"}.fa-building:before{content:"\F1AD"}.fa-bullhorn:before{content:"\F0A1"}.fa-bullseye:before{content:"\F140"}.fa-burn:before{content:"\F46A"}.fa-buromobelexperte:before{content:"\F37F"}.fa-bus:before{content:"\F207"}.fa-bus-alt:before{content:"\F55E"}.fa-business-time:before{content:"\F64A"}.fa-buy-n-large:before{content:"\F8A6"}.fa-buysellads:before{content:"\F20D"}.fa-calculator:before{content:"\F1EC"}.fa-calendar:before{content:"\F133"}.fa-calendar-alt:before{content:"\F073"}.fa-calendar-check:before{content:"\F274"}.fa-calendar-day:before{content:"\F783"}.fa-calendar-minus:before{content:"\F272"}.fa-calendar-plus:before{content:"\F271"}.fa-calendar-times:before{content:"\F273"}.fa-calendar-week:before{content:"\F784"}.fa-camera:before{content:"\F030"}.fa-camera-retro:before{content:"\F083"}.fa-campground:before{content:"\F6BB"}.fa-canadian-maple-leaf:before{content:"\F785"}.fa-candy-cane:before{content:"\F786"}.fa-cannabis:before{content:"\F55F"}.fa-capsules:before{content:"\F46B"}.fa-car:before{content:"\F1B9"}.fa-car-alt:before{content:"\F5DE"}.fa-car-battery:before{content:"\F5DF"}.fa-car-crash:before{content:"\F5E1"}.fa-car-side:before{content:"\F5E4"}.fa-caravan:before{content:"\F8FF"}.fa-caret-down:before{content:"\F0D7"}.fa-caret-left:before{content:"\F0D9"}.fa-caret-right:before{content:"\F0DA"}.fa-caret-square-down:before{content:"\F150"}.fa-caret-square-left:before{content:"\F191"}.fa-caret-square-right:before{content:"\F152"}.fa-caret-square-up:before{content:"\F151"}.fa-caret-up:before{content:"\F0D8"}.fa-carrot:before{content:"\F787"}.fa-cart-arrow-down:before{content:"\F218"}.fa-cart-plus:before{content:"\F217"}.fa-cash-register:before{content:"\F788"}.fa-cat:before{content:"\F6BE"}.fa-cc-amazon-pay:before{content:"\F42D"}.fa-cc-amex:before{content:"\F1F3"}.fa-cc-apple-pay:before{content:"\F416"}.fa-cc-diners-club:before{content:"\F24C"}.fa-cc-discover:before{content:"\F1F2"}.fa-cc-jcb:before{content:"\F24B"}.fa-cc-mastercard:before{content:"\F1F1"}.fa-cc-paypal:before{content:"\F1F4"}.fa-cc-stripe:before{content:"\F1F5"}.fa-cc-visa:before{content:"\F1F0"}.fa-centercode:before{content:"\F380"}.fa-centos:before{content:"\F789"}.fa-certificate:before{content:"\F0A3"}.fa-chair:before{content:"\F6C0"}.fa-chalkboard:before{content:"\F51B"}.fa-chalkboard-teacher:before{content:"\F51C"}.fa-charging-station:before{content:"\F5E7"}.fa-chart-area:before{content:"\F1FE"}.fa-chart-bar:before{content:"\F080"}.fa-chart-line:before{content:"\F201"}.fa-chart-pie:before{content:"\F200"}.fa-check:before{content:"\F00C"}.fa-check-circle:before{content:"\F058"}.fa-check-double:before{content:"\F560"}.fa-check-square:before{content:"\F14A"}.fa-cheese:before{content:"\F7EF"}.fa-chess:before{content:"\F439"}.fa-chess-bishop:before{content:"\F43A"}.fa-chess-board:before{content:"\F43C"}.fa-chess-king:before{content:"\F43F"}.fa-chess-knight:before{content:"\F441"}.fa-chess-pawn:before{content:"\F443"}.fa-chess-queen:before{content:"\F445"}.fa-chess-rook:before{content:"\F447"}.fa-chevron-circle-down:before{content:"\F13A"}.fa-chevron-circle-left:before{content:"\F137"}.fa-chevron-circle-right:before{content:"\F138"}.fa-chevron-circle-up:before{content:"\F139"}.fa-chevron-down:before{content:"\F078"}.fa-chevron-left:before{content:"\F053"}.fa-chevron-right:before{content:"\F054"}.fa-chevron-up:before{content:"\F077"}.fa-child:before{content:"\F1AE"}.fa-chrome:before{content:"\F268"}.fa-chromecast:before{content:"\F838"}.fa-church:before{content:"\F51D"}.fa-circle:before{content:"\F111"}.fa-circle-notch:before{content:"\F1CE"}.fa-city:before{content:"\F64F"}.fa-clinic-medical:before{content:"\F7F2"}.fa-clipboard:before{content:"\F328"}.fa-clipboard-check:before{content:"\F46C"}.fa-clipboard-list:before{content:"\F46D"}.fa-clock:before{content:"\F017"}.fa-clone:before{content:"\F24D"}.fa-closed-captioning:before{content:"\F20A"}.fa-cloud:before{content:"\F0C2"}.fa-cloud-download-alt:before{content:"\F381"}.fa-cloud-meatball:before{content:"\F73B"}.fa-cloud-moon:before{content:"\F6C3"}.fa-cloud-moon-rain:before{content:"\F73C"}.fa-cloud-rain:before{content:"\F73D"}.fa-cloud-showers-heavy:before{content:"\F740"}.fa-cloud-sun:before{content:"\F6C4"}.fa-cloud-sun-rain:before{content:"\F743"}.fa-cloud-upload-alt:before{content:"\F382"}.fa-cloudscale:before{content:"\F383"}.fa-cloudsmith:before{content:"\F384"}.fa-cloudversify:before{content:"\F385"}.fa-cocktail:before{content:"\F561"}.fa-code:before{content:"\F121"}.fa-code-branch:before{content:"\F126"}.fa-codepen:before{content:"\F1CB"}.fa-codiepie:before{content:"\F284"}.fa-coffee:before{content:"\F0F4"}.fa-cog:before{content:"\F013"}.fa-cogs:before{content:"\F085"}.fa-coins:before{content:"\F51E"}.fa-columns:before{content:"\F0DB"}.fa-comment:before{content:"\F075"}.fa-comment-alt:before{content:"\F27A"}.fa-comment-dollar:before{content:"\F651"}.fa-comment-dots:before{content:"\F4AD"}.fa-comment-medical:before{content:"\F7F5"}.fa-comment-slash:before{content:"\F4B3"}.fa-comments:before{content:"\F086"}.fa-comments-dollar:before{content:"\F653"}.fa-compact-disc:before{content:"\F51F"}.fa-compass:before{content:"\F14E"}.fa-compress:before{content:"\F066"}.fa-compress-alt:before{content:"\F422"}.fa-compress-arrows-alt:before{content:"\F78C"}.fa-concierge-bell:before{content:"\F562"}.fa-confluence:before{content:"\F78D"}.fa-connectdevelop:before{content:"\F20E"}.fa-contao:before{content:"\F26D"}.fa-cookie:before{content:"\F563"}.fa-cookie-bite:before{content:"\F564"}.fa-copy:before{content:"\F0C5"}.fa-copyright:before{content:"\F1F9"}.fa-cotton-bureau:before{content:"\F89E"}.fa-couch:before{content:"\F4B8"}.fa-cpanel:before{content:"\F388"}.fa-creative-commons:before{content:"\F25E"}.fa-creative-commons-by:before{content:"\F4E7"}.fa-creative-commons-nc:before{content:"\F4E8"}.fa-creative-commons-nc-eu:before{content:"\F4E9"}.fa-creative-commons-nc-jp:before{content:"\F4EA"}.fa-creative-commons-nd:before{content:"\F4EB"}.fa-creative-commons-pd:before{content:"\F4EC"}.fa-creative-commons-pd-alt:before{content:"\F4ED"}.fa-creative-commons-remix:before{content:"\F4EE"}.fa-creative-commons-sa:before{content:"\F4EF"}.fa-creative-commons-sampling:before{content:"\F4F0"}.fa-creative-commons-sampling-plus:before{content:"\F4F1"}.fa-creative-commons-share:before{content:"\F4F2"}.fa-creative-commons-zero:before{content:"\F4F3"}.fa-credit-card:before{content:"\F09D"}.fa-critical-role:before{content:"\F6C9"}.fa-crop:before{content:"\F125"}.fa-crop-alt:before{content:"\F565"}.fa-cross:before{content:"\F654"}.fa-crosshairs:before{content:"\F05B"}.fa-crow:before{content:"\F520"}.fa-crown:before{content:"\F521"}.fa-crutch:before{content:"\F7F7"}.fa-css3:before{content:"\F13C"}.fa-css3-alt:before{content:"\F38B"}.fa-cube:before{content:"\F1B2"}.fa-cubes:before{content:"\F1B3"}.fa-cut:before{content:"\F0C4"}.fa-cuttlefish:before{content:"\F38C"}.fa-d-and-d:before{content:"\F38D"}.fa-d-and-d-beyond:before{content:"\F6CA"}.fa-dailymotion:before{content:"\F952"}.fa-dashcube:before{content:"\F210"}.fa-database:before{content:"\F1C0"}.fa-deaf:before{content:"\F2A4"}.fa-delicious:before{content:"\F1A5"}.fa-democrat:before{content:"\F747"}.fa-deploydog:before{content:"\F38E"}.fa-deskpro:before{content:"\F38F"}.fa-desktop:before{content:"\F108"}.fa-dev:before{content:"\F6CC"}.fa-deviantart:before{content:"\F1BD"}.fa-dharmachakra:before{content:"\F655"}.fa-dhl:before{content:"\F790"}.fa-diagnoses:before{content:"\F470"}.fa-diaspora:before{content:"\F791"}.fa-dice:before{content:"\F522"}.fa-dice-d20:before{content:"\F6CF"}.fa-dice-d6:before{content:"\F6D1"}.fa-dice-five:before{content:"\F523"}.fa-dice-four:before{content:"\F524"}.fa-dice-one:before{content:"\F525"}.fa-dice-six:before{content:"\F526"}.fa-dice-three:before{content:"\F527"}.fa-dice-two:before{content:"\F528"}.fa-digg:before{content:"\F1A6"}.fa-digital-ocean:before{content:"\F391"}.fa-digital-tachograph:before{content:"\F566"}.fa-directions:before{content:"\F5EB"}.fa-discord:before{content:"\F392"}.fa-discourse:before{content:"\F393"}.fa-divide:before{content:"\F529"}.fa-dizzy:before{content:"\F567"}.fa-dna:before{content:"\F471"}.fa-dochub:before{content:"\F394"}.fa-docker:before{content:"\F395"}.fa-dog:before{content:"\F6D3"}.fa-dollar-sign:before{content:"\F155"}.fa-dolly:before{content:"\F472"}.fa-dolly-flatbed:before{content:"\F474"}.fa-donate:before{content:"\F4B9"}.fa-door-closed:before{content:"\F52A"}.fa-door-open:before{content:"\F52B"}.fa-dot-circle:before{content:"\F192"}.fa-dove:before{content:"\F4BA"}.fa-download:before{content:"\F019"}.fa-draft2digital:before{content:"\F396"}.fa-drafting-compass:before{content:"\F568"}.fa-dragon:before{content:"\F6D5"}.fa-draw-polygon:before{content:"\F5EE"}.fa-dribbble:before{content:"\F17D"}.fa-dribbble-square:before{content:"\F397"}.fa-dropbox:before{content:"\F16B"}.fa-drum:before{content:"\F569"}.fa-drum-steelpan:before{content:"\F56A"}.fa-drumstick-bite:before{content:"\F6D7"}.fa-drupal:before{content:"\F1A9"}.fa-dumbbell:before{content:"\F44B"}.fa-dumpster:before{content:"\F793"}.fa-dumpster-fire:before{content:"\F794"}.fa-dungeon:before{content:"\F6D9"}.fa-dyalog:before{content:"\F399"}.fa-earlybirds:before{content:"\F39A"}.fa-ebay:before{content:"\F4F4"}.fa-edge:before{content:"\F282"}.fa-edit:before{content:"\F044"}.fa-egg:before{content:"\F7FB"}.fa-eject:before{content:"\F052"}.fa-elementor:before{content:"\F430"}.fa-ellipsis-h:before{content:"\F141"}.fa-ellipsis-v:before{content:"\F142"}.fa-ello:before{content:"\F5F1"}.fa-ember:before{content:"\F423"}.fa-empire:before{content:"\F1D1"}.fa-envelope:before{content:"\F0E0"}.fa-envelope-open:before{content:"\F2B6"}.fa-envelope-open-text:before{content:"\F658"}.fa-envelope-square:before{content:"\F199"}.fa-envira:before{content:"\F299"}.fa-equals:before{content:"\F52C"}.fa-eraser:before{content:"\F12D"}.fa-erlang:before{content:"\F39D"}.fa-ethereum:before{content:"\F42E"}.fa-ethernet:before{content:"\F796"}.fa-etsy:before{content:"\F2D7"}.fa-euro-sign:before{content:"\F153"}.fa-evernote:before{content:"\F839"}.fa-exchange-alt:before{content:"\F362"}.fa-exclamation:before{content:"\F12A"}.fa-exclamation-circle:before{content:"\F06A"}.fa-exclamation-triangle:before{content:"\F071"}.fa-expand:before{content:"\F065"}.fa-expand-alt:before{content:"\F424"}.fa-expand-arrows-alt:before{content:"\F31E"}.fa-expeditedssl:before{content:"\F23E"}.fa-external-link-alt:before{content:"\F35D"}.fa-external-link-square-alt:before{content:"\F360"}.fa-eye:before{content:"\F06E"}.fa-eye-dropper:before{content:"\F1FB"}.fa-eye-slash:before{content:"\F070"}.fa-facebook:before{content:"\F09A"}.fa-facebook-f:before{content:"\F39E"}.fa-facebook-messenger:before{content:"\F39F"}.fa-facebook-square:before{content:"\F082"}.fa-fan:before{content:"\F863"}.fa-fantasy-flight-games:before{content:"\F6DC"}.fa-fast-backward:before{content:"\F049"}.fa-fast-forward:before{content:"\F050"}.fa-fax:before{content:"\F1AC"}.fa-feather:before{content:"\F52D"}.fa-feather-alt:before{content:"\F56B"}.fa-fedex:before{content:"\F797"}.fa-fedora:before{content:"\F798"}.fa-female:before{content:"\F182"}.fa-fighter-jet:before{content:"\F0FB"}.fa-figma:before{content:"\F799"}.fa-file:before{content:"\F15B"}.fa-file-alt:before{content:"\F15C"}.fa-file-archive:before{content:"\F1C6"}.fa-file-audio:before{content:"\F1C7"}.fa-file-code:before{content:"\F1C9"}.fa-file-contract:before{content:"\F56C"}.fa-file-csv:before{content:"\F6DD"}.fa-file-download:before{content:"\F56D"}.fa-file-excel:before{content:"\F1C3"}.fa-file-export:before{content:"\F56E"}.fa-file-image:before{content:"\F1C5"}.fa-file-import:before{content:"\F56F"}.fa-file-invoice:before{content:"\F570"}.fa-file-invoice-dollar:before{content:"\F571"}.fa-file-medical:before{content:"\F477"}.fa-file-medical-alt:before{content:"\F478"}.fa-file-pdf:before{content:"\F1C1"}.fa-file-powerpoint:before{content:"\F1C4"}.fa-file-prescription:before{content:"\F572"}.fa-file-signature:before{content:"\F573"}.fa-file-upload:before{content:"\F574"}.fa-file-video:before{content:"\F1C8"}.fa-file-word:before{content:"\F1C2"}.fa-fill:before{content:"\F575"}.fa-fill-drip:before{content:"\F576"}.fa-film:before{content:"\F008"}.fa-filter:before{content:"\F0B0"}.fa-fingerprint:before{content:"\F577"}.fa-fire:before{content:"\F06D"}.fa-fire-alt:before{content:"\F7E4"}.fa-fire-extinguisher:before{content:"\F134"}.fa-firefox:before{content:"\F269"}.fa-firefox-browser:before{content:"\F907"}.fa-first-aid:before{content:"\F479"}.fa-first-order:before{content:"\F2B0"}.fa-first-order-alt:before{content:"\F50A"}.fa-firstdraft:before{content:"\F3A1"}.fa-fish:before{content:"\F578"}.fa-fist-raised:before{content:"\F6DE"}.fa-flag:before{content:"\F024"}.fa-flag-checkered:before{content:"\F11E"}.fa-flag-usa:before{content:"\F74D"}.fa-flask:before{content:"\F0C3"}.fa-flickr:before{content:"\F16E"}.fa-flipboard:before{content:"\F44D"}.fa-flushed:before{content:"\F579"}.fa-fly:before{content:"\F417"}.fa-folder:before{content:"\F07B"}.fa-folder-minus:before{content:"\F65D"}.fa-folder-open:before{content:"\F07C"}.fa-folder-plus:before{content:"\F65E"}.fa-font:before{content:"\F031"}.fa-font-awesome:before{content:"\F2B4"}.fa-font-awesome-alt:before{content:"\F35C"}.fa-font-awesome-flag:before{content:"\F425"}.fa-font-awesome-logo-full:before{content:"\F4E6"}.fa-fonticons:before{content:"\F280"}.fa-fonticons-fi:before{content:"\F3A2"}.fa-football-ball:before{content:"\F44E"}.fa-fort-awesome:before{content:"\F286"}.fa-fort-awesome-alt:before{content:"\F3A3"}.fa-forumbee:before{content:"\F211"}.fa-forward:before{content:"\F04E"}.fa-foursquare:before{content:"\F180"}.fa-free-code-camp:before{content:"\F2C5"}.fa-freebsd:before{content:"\F3A4"}.fa-frog:before{content:"\F52E"}.fa-frown:before{content:"\F119"}.fa-frown-open:before{content:"\F57A"}.fa-fulcrum:before{content:"\F50B"}.fa-funnel-dollar:before{content:"\F662"}.fa-futbol:before{content:"\F1E3"}.fa-galactic-republic:before{content:"\F50C"}.fa-galactic-senate:before{content:"\F50D"}.fa-gamepad:before{content:"\F11B"}.fa-gas-pump:before{content:"\F52F"}.fa-gavel:before{content:"\F0E3"}.fa-gem:before{content:"\F3A5"}.fa-genderless:before{content:"\F22D"}.fa-get-pocket:before{content:"\F265"}.fa-gg:before{content:"\F260"}.fa-gg-circle:before{content:"\F261"}.fa-ghost:before{content:"\F6E2"}.fa-gift:before{content:"\F06B"}.fa-gifts:before{content:"\F79C"}.fa-git:before{content:"\F1D3"}.fa-git-alt:before{content:"\F841"}.fa-git-square:before{content:"\F1D2"}.fa-github:before{content:"\F09B"}.fa-github-alt:before{content:"\F113"}.fa-github-square:before{content:"\F092"}.fa-gitkraken:before{content:"\F3A6"}.fa-gitlab:before{content:"\F296"}.fa-gitter:before{content:"\F426"}.fa-glass-cheers:before{content:"\F79F"}.fa-glass-martini:before{content:"\F000"}.fa-glass-martini-alt:before{content:"\F57B"}.fa-glass-whiskey:before{content:"\F7A0"}.fa-glasses:before{content:"\F530"}.fa-glide:before{content:"\F2A5"}.fa-glide-g:before{content:"\F2A6"}.fa-globe:before{content:"\F0AC"}.fa-globe-africa:before{content:"\F57C"}.fa-globe-americas:before{content:"\F57D"}.fa-globe-asia:before{content:"\F57E"}.fa-globe-europe:before{content:"\F7A2"}.fa-gofore:before{content:"\F3A7"}.fa-golf-ball:before{content:"\F450"}.fa-goodreads:before{content:"\F3A8"}.fa-goodreads-g:before{content:"\F3A9"}.fa-google:before{content:"\F1A0"}.fa-google-drive:before{content:"\F3AA"}.fa-google-play:before{content:"\F3AB"}.fa-google-plus:before{content:"\F2B3"}.fa-google-plus-g:before{content:"\F0D5"}.fa-google-plus-square:before{content:"\F0D4"}.fa-google-wallet:before{content:"\F1EE"}.fa-gopuram:before{content:"\F664"}.fa-graduation-cap:before{content:"\F19D"}.fa-gratipay:before{content:"\F184"}.fa-grav:before{content:"\F2D6"}.fa-greater-than:before{content:"\F531"}.fa-greater-than-equal:before{content:"\F532"}.fa-grimace:before{content:"\F57F"}.fa-grin:before{content:"\F580"}.fa-grin-alt:before{content:"\F581"}.fa-grin-beam:before{content:"\F582"}.fa-grin-beam-sweat:before{content:"\F583"}.fa-grin-hearts:before{content:"\F584"}.fa-grin-squint:before{content:"\F585"}.fa-grin-squint-tears:before{content:"\F586"}.fa-grin-stars:before{content:"\F587"}.fa-grin-tears:before{content:"\F588"}.fa-grin-tongue:before{content:"\F589"}.fa-grin-tongue-squint:before{content:"\F58A"}.fa-grin-tongue-wink:before{content:"\F58B"}.fa-grin-wink:before{content:"\F58C"}.fa-grip-horizontal:before{content:"\F58D"}.fa-grip-lines:before{content:"\F7A4"}.fa-grip-lines-vertical:before{content:"\F7A5"}.fa-grip-vertical:before{content:"\F58E"}.fa-gripfire:before{content:"\F3AC"}.fa-grunt:before{content:"\F3AD"}.fa-guitar:before{content:"\F7A6"}.fa-gulp:before{content:"\F3AE"}.fa-h-square:before{content:"\F0FD"}.fa-hacker-news:before{content:"\F1D4"}.fa-hacker-news-square:before{content:"\F3AF"}.fa-hackerrank:before{content:"\F5F7"}.fa-hamburger:before{content:"\F805"}.fa-hammer:before{content:"\F6E3"}.fa-hamsa:before{content:"\F665"}.fa-hand-holding:before{content:"\F4BD"}.fa-hand-holding-heart:before{content:"\F4BE"}.fa-hand-holding-usd:before{content:"\F4C0"}.fa-hand-lizard:before{content:"\F258"}.fa-hand-middle-finger:before{content:"\F806"}.fa-hand-paper:before{content:"\F256"}.fa-hand-peace:before{content:"\F25B"}.fa-hand-point-down:before{content:"\F0A7"}.fa-hand-point-left:before{content:"\F0A5"}.fa-hand-point-right:before{content:"\F0A4"}.fa-hand-point-up:before{content:"\F0A6"}.fa-hand-pointer:before{content:"\F25A"}.fa-hand-rock:before{content:"\F255"}.fa-hand-scissors:before{content:"\F257"}.fa-hand-spock:before{content:"\F259"}.fa-hands:before{content:"\F4C2"}.fa-hands-helping:before{content:"\F4C4"}.fa-handshake:before{content:"\F2B5"}.fa-hanukiah:before{content:"\F6E6"}.fa-hard-hat:before{content:"\F807"}.fa-hashtag:before{content:"\F292"}.fa-hat-cowboy:before{content:"\F8C0"}.fa-hat-cowboy-side:before{content:"\F8C1"}.fa-hat-wizard:before{content:"\F6E8"}.fa-hdd:before{content:"\F0A0"}.fa-heading:before{content:"\F1DC"}.fa-headphones:before{content:"\F025"}.fa-headphones-alt:before{content:"\F58F"}.fa-headset:before{content:"\F590"}.fa-heart:before{content:"\F004"}.fa-heart-broken:before{content:"\F7A9"}.fa-heartbeat:before{content:"\F21E"}.fa-helicopter:before{content:"\F533"}.fa-highlighter:before{content:"\F591"}.fa-hiking:before{content:"\F6EC"}.fa-hippo:before{content:"\F6ED"}.fa-hips:before{content:"\F452"}.fa-hire-a-helper:before{content:"\F3B0"}.fa-history:before{content:"\F1DA"}.fa-hockey-puck:before{content:"\F453"}.fa-holly-berry:before{content:"\F7AA"}.fa-home:before{content:"\F015"}.fa-hooli:before{content:"\F427"}.fa-hornbill:before{content:"\F592"}.fa-horse:before{content:"\F6F0"}.fa-horse-head:before{content:"\F7AB"}.fa-hospital:before{content:"\F0F8"}.fa-hospital-alt:before{content:"\F47D"}.fa-hospital-symbol:before{content:"\F47E"}.fa-hot-tub:before{content:"\F593"}.fa-hotdog:before{content:"\F80F"}.fa-hotel:before{content:"\F594"}.fa-hotjar:before{content:"\F3B1"}.fa-hourglass:before{content:"\F254"}.fa-hourglass-end:before{content:"\F253"}.fa-hourglass-half:before{content:"\F252"}.fa-hourglass-start:before{content:"\F251"}.fa-house-damage:before{content:"\F6F1"}.fa-houzz:before{content:"\F27C"}.fa-hryvnia:before{content:"\F6F2"}.fa-html5:before{content:"\F13B"}.fa-hubspot:before{content:"\F3B2"}.fa-i-cursor:before{content:"\F246"}.fa-ice-cream:before{content:"\F810"}.fa-icicles:before{content:"\F7AD"}.fa-icons:before{content:"\F86D"}.fa-id-badge:before{content:"\F2C1"}.fa-id-card:before{content:"\F2C2"}.fa-id-card-alt:before{content:"\F47F"}.fa-ideal:before{content:"\F913"}.fa-igloo:before{content:"\F7AE"}.fa-image:before{content:"\F03E"}.fa-images:before{content:"\F302"}.fa-imdb:before{content:"\F2D8"}.fa-inbox:before{content:"\F01C"}.fa-indent:before{content:"\F03C"}.fa-industry:before{content:"\F275"}.fa-infinity:before{content:"\F534"}.fa-info:before{content:"\F129"}.fa-info-circle:before{content:"\F05A"}.fa-instagram:before{content:"\F16D"}.fa-instagram-square:before{content:"\F955"}.fa-intercom:before{content:"\F7AF"}.fa-internet-explorer:before{content:"\F26B"}.fa-invision:before{content:"\F7B0"}.fa-ioxhost:before{content:"\F208"}.fa-italic:before{content:"\F033"}.fa-itch-io:before{content:"\F83A"}.fa-itunes:before{content:"\F3B4"}.fa-itunes-note:before{content:"\F3B5"}.fa-java:before{content:"\F4E4"}.fa-jedi:before{content:"\F669"}.fa-jedi-order:before{content:"\F50E"}.fa-jenkins:before{content:"\F3B6"}.fa-jira:before{content:"\F7B1"}.fa-joget:before{content:"\F3B7"}.fa-joint:before{content:"\F595"}.fa-joomla:before{content:"\F1AA"}.fa-journal-whills:before{content:"\F66A"}.fa-js:before{content:"\F3B8"}.fa-js-square:before{content:"\F3B9"}.fa-jsfiddle:before{content:"\F1CC"}.fa-kaaba:before{content:"\F66B"}.fa-kaggle:before{content:"\F5FA"}.fa-key:before{content:"\F084"}.fa-keybase:before{content:"\F4F5"}.fa-keyboard:before{content:"\F11C"}.fa-keycdn:before{content:"\F3BA"}.fa-khanda:before{content:"\F66D"}.fa-kickstarter:before{content:"\F3BB"}.fa-kickstarter-k:before{content:"\F3BC"}.fa-kiss:before{content:"\F596"}.fa-kiss-beam:before{content:"\F597"}.fa-kiss-wink-heart:before{content:"\F598"}.fa-kiwi-bird:before{content:"\F535"}.fa-korvue:before{content:"\F42F"}.fa-landmark:before{content:"\F66F"}.fa-language:before{content:"\F1AB"}.fa-laptop:before{content:"\F109"}.fa-laptop-code:before{content:"\F5FC"}.fa-laptop-medical:before{content:"\F812"}.fa-laravel:before{content:"\F3BD"}.fa-lastfm:before{content:"\F202"}.fa-lastfm-square:before{content:"\F203"}.fa-laugh:before{content:"\F599"}.fa-laugh-beam:before{content:"\F59A"}.fa-laugh-squint:before{content:"\F59B"}.fa-laugh-wink:before{content:"\F59C"}.fa-layer-group:before{content:"\F5FD"}.fa-leaf:before{content:"\F06C"}.fa-leanpub:before{content:"\F212"}.fa-lemon:before{content:"\F094"}.fa-less:before{content:"\F41D"}.fa-less-than:before{content:"\F536"}.fa-less-than-equal:before{content:"\F537"}.fa-level-down-alt:before{content:"\F3BE"}.fa-level-up-alt:before{content:"\F3BF"}.fa-life-ring:before{content:"\F1CD"}.fa-lightbulb:before{content:"\F0EB"}.fa-line:before{content:"\F3C0"}.fa-link:before{content:"\F0C1"}.fa-linkedin:before{content:"\F08C"}.fa-linkedin-in:before{content:"\F0E1"}.fa-linode:before{content:"\F2B8"}.fa-linux:before{content:"\F17C"}.fa-lira-sign:before{content:"\F195"}.fa-list:before{content:"\F03A"}.fa-list-alt:before{content:"\F022"}.fa-list-ol:before{content:"\F0CB"}.fa-list-ul:before{content:"\F0CA"}.fa-location-arrow:before{content:"\F124"}.fa-lock:before{content:"\F023"}.fa-lock-open:before{content:"\F3C1"}.fa-long-arrow-alt-down:before{content:"\F309"}.fa-long-arrow-alt-left:before{content:"\F30A"}.fa-long-arrow-alt-right:before{content:"\F30B"}.fa-long-arrow-alt-up:before{content:"\F30C"}.fa-low-vision:before{content:"\F2A8"}.fa-luggage-cart:before{content:"\F59D"}.fa-lyft:before{content:"\F3C3"}.fa-magento:before{content:"\F3C4"}.fa-magic:before{content:"\F0D0"}.fa-magnet:before{content:"\F076"}.fa-mail-bulk:before{content:"\F674"}.fa-mailchimp:before{content:"\F59E"}.fa-male:before{content:"\F183"}.fa-mandalorian:before{content:"\F50F"}.fa-map:before{content:"\F279"}.fa-map-marked:before{content:"\F59F"}.fa-map-marked-alt:before{content:"\F5A0"}.fa-map-marker:before{content:"\F041"}.fa-map-marker-alt:before{content:"\F3C5"}.fa-map-pin:before{content:"\F276"}.fa-map-signs:before{content:"\F277"}.fa-markdown:before{content:"\F60F"}.fa-marker:before{content:"\F5A1"}.fa-mars:before{content:"\F222"}.fa-mars-double:before{content:"\F227"}.fa-mars-stroke:before{content:"\F229"}.fa-mars-stroke-h:before{content:"\F22B"}.fa-mars-stroke-v:before{content:"\F22A"}.fa-mask:before{content:"\F6FA"}.fa-mastodon:before{content:"\F4F6"}.fa-maxcdn:before{content:"\F136"}.fa-mdb:before{content:"\F8CA"}.fa-medal:before{content:"\F5A2"}.fa-medapps:before{content:"\F3C6"}.fa-medium:before{content:"\F23A"}.fa-medium-m:before{content:"\F3C7"}.fa-medkit:before{content:"\F0FA"}.fa-medrt:before{content:"\F3C8"}.fa-meetup:before{content:"\F2E0"}.fa-megaport:before{content:"\F5A3"}.fa-meh:before{content:"\F11A"}.fa-meh-blank:before{content:"\F5A4"}.fa-meh-rolling-eyes:before{content:"\F5A5"}.fa-memory:before{content:"\F538"}.fa-mendeley:before{content:"\F7B3"}.fa-menorah:before{content:"\F676"}.fa-mercury:before{content:"\F223"}.fa-meteor:before{content:"\F753"}.fa-microblog:before{content:"\F91A"}.fa-microchip:before{content:"\F2DB"}.fa-microphone:before{content:"\F130"}.fa-microphone-alt:before{content:"\F3C9"}.fa-microphone-alt-slash:before{content:"\F539"}.fa-microphone-slash:before{content:"\F131"}.fa-microscope:before{content:"\F610"}.fa-microsoft:before{content:"\F3CA"}.fa-minus:before{content:"\F068"}.fa-minus-circle:before{content:"\F056"}.fa-minus-square:before{content:"\F146"}.fa-mitten:before{content:"\F7B5"}.fa-mix:before{content:"\F3CB"}.fa-mixcloud:before{content:"\F289"}.fa-mixer:before{content:"\F956"}.fa-mizuni:before{content:"\F3CC"}.fa-mobile:before{content:"\F10B"}.fa-mobile-alt:before{content:"\F3CD"}.fa-modx:before{content:"\F285"}.fa-monero:before{content:"\F3D0"}.fa-money-bill:before{content:"\F0D6"}.fa-money-bill-alt:before{content:"\F3D1"}.fa-money-bill-wave:before{content:"\F53A"}.fa-money-bill-wave-alt:before{content:"\F53B"}.fa-money-check:before{content:"\F53C"}.fa-money-check-alt:before{content:"\F53D"}.fa-monument:before{content:"\F5A6"}.fa-moon:before{content:"\F186"}.fa-mortar-pestle:before{content:"\F5A7"}.fa-mosque:before{content:"\F678"}.fa-motorcycle:before{content:"\F21C"}.fa-mountain:before{content:"\F6FC"}.fa-mouse:before{content:"\F8CC"}.fa-mouse-pointer:before{content:"\F245"}.fa-mug-hot:before{content:"\F7B6"}.fa-music:before{content:"\F001"}.fa-napster:before{content:"\F3D2"}.fa-neos:before{content:"\F612"}.fa-network-wired:before{content:"\F6FF"}.fa-neuter:before{content:"\F22C"}.fa-newspaper:before{content:"\F1EA"}.fa-nimblr:before{content:"\F5A8"}.fa-node:before{content:"\F419"}.fa-node-js:before{content:"\F3D3"}.fa-not-equal:before{content:"\F53E"}.fa-notes-medical:before{content:"\F481"}.fa-npm:before{content:"\F3D4"}.fa-ns8:before{content:"\F3D5"}.fa-nutritionix:before{content:"\F3D6"}.fa-object-group:before{content:"\F247"}.fa-object-ungroup:before{content:"\F248"}.fa-odnoklassniki:before{content:"\F263"}.fa-odnoklassniki-square:before{content:"\F264"}.fa-oil-can:before{content:"\F613"}.fa-old-republic:before{content:"\F510"}.fa-om:before{content:"\F679"}.fa-opencart:before{content:"\F23D"}.fa-openid:before{content:"\F19B"}.fa-opera:before{content:"\F26A"}.fa-optin-monster:before{content:"\F23C"}.fa-orcid:before{content:"\F8D2"}.fa-osi:before{content:"\F41A"}.fa-otter:before{content:"\F700"}.fa-outdent:before{content:"\F03B"}.fa-page4:before{content:"\F3D7"}.fa-pagelines:before{content:"\F18C"}.fa-pager:before{content:"\F815"}.fa-paint-brush:before{content:"\F1FC"}.fa-paint-roller:before{content:"\F5AA"}.fa-palette:before{content:"\F53F"}.fa-palfed:before{content:"\F3D8"}.fa-pallet:before{content:"\F482"}.fa-paper-plane:before{content:"\F1D8"}.fa-paperclip:before{content:"\F0C6"}.fa-parachute-box:before{content:"\F4CD"}.fa-paragraph:before{content:"\F1DD"}.fa-parking:before{content:"\F540"}.fa-passport:before{content:"\F5AB"}.fa-pastafarianism:before{content:"\F67B"}.fa-paste:before{content:"\F0EA"}.fa-patreon:before{content:"\F3D9"}.fa-pause:before{content:"\F04C"}.fa-pause-circle:before{content:"\F28B"}.fa-paw:before{content:"\F1B0"}.fa-paypal:before{content:"\F1ED"}.fa-peace:before{content:"\F67C"}.fa-pen:before{content:"\F304"}.fa-pen-alt:before{content:"\F305"}.fa-pen-fancy:before{content:"\F5AC"}.fa-pen-nib:before{content:"\F5AD"}.fa-pen-square:before{content:"\F14B"}.fa-pencil-alt:before{content:"\F303"}.fa-pencil-ruler:before{content:"\F5AE"}.fa-penny-arcade:before{content:"\F704"}.fa-people-carry:before{content:"\F4CE"}.fa-pepper-hot:before{content:"\F816"}.fa-percent:before{content:"\F295"}.fa-percentage:before{content:"\F541"}.fa-periscope:before{content:"\F3DA"}.fa-person-booth:before{content:"\F756"}.fa-phabricator:before{content:"\F3DB"}.fa-phoenix-framework:before{content:"\F3DC"}.fa-phoenix-squadron:before{content:"\F511"}.fa-phone:before{content:"\F095"}.fa-phone-alt:before{content:"\F879"}.fa-phone-slash:before{content:"\F3DD"}.fa-phone-square:before{content:"\F098"}.fa-phone-square-alt:before{content:"\F87B"}.fa-phone-volume:before{content:"\F2A0"}.fa-photo-video:before{content:"\F87C"}.fa-php:before{content:"\F457"}.fa-pied-piper:before{content:"\F2AE"}.fa-pied-piper-alt:before{content:"\F1A8"}.fa-pied-piper-hat:before{content:"\F4E5"}.fa-pied-piper-pp:before{content:"\F1A7"}.fa-pied-piper-square:before{content:"\F91E"}.fa-piggy-bank:before{content:"\F4D3"}.fa-pills:before{content:"\F484"}.fa-pinterest:before{content:"\F0D2"}.fa-pinterest-p:before{content:"\F231"}.fa-pinterest-square:before{content:"\F0D3"}.fa-pizza-slice:before{content:"\F818"}.fa-place-of-worship:before{content:"\F67F"}.fa-plane:before{content:"\F072"}.fa-plane-arrival:before{content:"\F5AF"}.fa-plane-departure:before{content:"\F5B0"}.fa-play:before{content:"\F04B"}.fa-play-circle:before{content:"\F144"}.fa-playstation:before{content:"\F3DF"}.fa-plug:before{content:"\F1E6"}.fa-plus:before{content:"\F067"}.fa-plus-circle:before{content:"\F055"}.fa-plus-square:before{content:"\F0FE"}.fa-podcast:before{content:"\F2CE"}.fa-poll:before{content:"\F681"}.fa-poll-h:before{content:"\F682"}.fa-poo:before{content:"\F2FE"}.fa-poo-storm:before{content:"\F75A"}.fa-poop:before{content:"\F619"}.fa-portrait:before{content:"\F3E0"}.fa-pound-sign:before{content:"\F154"}.fa-power-off:before{content:"\F011"}.fa-pray:before{content:"\F683"}.fa-praying-hands:before{content:"\F684"}.fa-prescription:before{content:"\F5B1"}.fa-prescription-bottle:before{content:"\F485"}.fa-prescription-bottle-alt:before{content:"\F486"}.fa-print:before{content:"\F02F"}.fa-procedures:before{content:"\F487"}.fa-product-hunt:before{content:"\F288"}.fa-project-diagram:before{content:"\F542"}.fa-pushed:before{content:"\F3E1"}.fa-puzzle-piece:before{content:"\F12E"}.fa-python:before{content:"\F3E2"}.fa-qq:before{content:"\F1D6"}.fa-qrcode:before{content:"\F029"}.fa-question:before{content:"\F128"}.fa-question-circle:before{content:"\F059"}.fa-quidditch:before{content:"\F458"}.fa-quinscape:before{content:"\F459"}.fa-quora:before{content:"\F2C4"}.fa-quote-left:before{content:"\F10D"}.fa-quote-right:before{content:"\F10E"}.fa-quran:before{content:"\F687"}.fa-r-project:before{content:"\F4F7"}.fa-radiation:before{content:"\F7B9"}.fa-radiation-alt:before{content:"\F7BA"}.fa-rainbow:before{content:"\F75B"}.fa-random:before{content:"\F074"}.fa-raspberry-pi:before{content:"\F7BB"}.fa-ravelry:before{content:"\F2D9"}.fa-react:before{content:"\F41B"}.fa-reacteurope:before{content:"\F75D"}.fa-readme:before{content:"\F4D5"}.fa-rebel:before{content:"\F1D0"}.fa-receipt:before{content:"\F543"}.fa-record-vinyl:before{content:"\F8D9"}.fa-recycle:before{content:"\F1B8"}.fa-red-river:before{content:"\F3E3"}.fa-reddit:before{content:"\F1A1"}.fa-reddit-alien:before{content:"\F281"}.fa-reddit-square:before{content:"\F1A2"}.fa-redhat:before{content:"\F7BC"}.fa-redo:before{content:"\F01E"}.fa-redo-alt:before{content:"\F2F9"}.fa-registered:before{content:"\F25D"}.fa-remove-format:before{content:"\F87D"}.fa-renren:before{content:"\F18B"}.fa-reply:before{content:"\F3E5"}.fa-reply-all:before{content:"\F122"}.fa-replyd:before{content:"\F3E6"}.fa-republican:before{content:"\F75E"}.fa-researchgate:before{content:"\F4F8"}.fa-resolving:before{content:"\F3E7"}.fa-restroom:before{content:"\F7BD"}.fa-retweet:before{content:"\F079"}.fa-rev:before{content:"\F5B2"}.fa-ribbon:before{content:"\F4D6"}.fa-ring:before{content:"\F70B"}.fa-road:before{content:"\F018"}.fa-robot:before{content:"\F544"}.fa-rocket:before{content:"\F135"}.fa-rocketchat:before{content:"\F3E8"}.fa-rockrms:before{content:"\F3E9"}.fa-route:before{content:"\F4D7"}.fa-rss:before{content:"\F09E"}.fa-rss-square:before{content:"\F143"}.fa-ruble-sign:before{content:"\F158"}.fa-ruler:before{content:"\F545"}.fa-ruler-combined:before{content:"\F546"}.fa-ruler-horizontal:before{content:"\F547"}.fa-ruler-vertical:before{content:"\F548"}.fa-running:before{content:"\F70C"}.fa-rupee-sign:before{content:"\F156"}.fa-sad-cry:before{content:"\F5B3"}.fa-sad-tear:before{content:"\F5B4"}.fa-safari:before{content:"\F267"}.fa-salesforce:before{content:"\F83B"}.fa-sass:before{content:"\F41E"}.fa-satellite:before{content:"\F7BF"}.fa-satellite-dish:before{content:"\F7C0"}.fa-save:before{content:"\F0C7"}.fa-schlix:before{content:"\F3EA"}.fa-school:before{content:"\F549"}.fa-screwdriver:before{content:"\F54A"}.fa-scribd:before{content:"\F28A"}.fa-scroll:before{content:"\F70E"}.fa-sd-card:before{content:"\F7C2"}.fa-search:before{content:"\F002"}.fa-search-dollar:before{content:"\F688"}.fa-search-location:before{content:"\F689"}.fa-search-minus:before{content:"\F010"}.fa-search-plus:before{content:"\F00E"}.fa-searchengin:before{content:"\F3EB"}.fa-seedling:before{content:"\F4D8"}.fa-sellcast:before{content:"\F2DA"}.fa-sellsy:before{content:"\F213"}.fa-server:before{content:"\F233"}.fa-servicestack:before{content:"\F3EC"}.fa-shapes:before{content:"\F61F"}.fa-share:before{content:"\F064"}.fa-share-alt:before{content:"\F1E0"}.fa-share-alt-square:before{content:"\F1E1"}.fa-share-square:before{content:"\F14D"}.fa-shekel-sign:before{content:"\F20B"}.fa-shield-alt:before{content:"\F3ED"}.fa-ship:before{content:"\F21A"}.fa-shipping-fast:before{content:"\F48B"}.fa-shirtsinbulk:before{content:"\F214"}.fa-shoe-prints:before{content:"\F54B"}.fa-shopify:before{content:"\F957"}.fa-shopping-bag:before{content:"\F290"}.fa-shopping-basket:before{content:"\F291"}.fa-shopping-cart:before{content:"\F07A"}.fa-shopware:before{content:"\F5B5"}.fa-shower:before{content:"\F2CC"}.fa-shuttle-van:before{content:"\F5B6"}.fa-sign:before{content:"\F4D9"}.fa-sign-in-alt:before{content:"\F2F6"}.fa-sign-language:before{content:"\F2A7"}.fa-sign-out-alt:before{content:"\F2F5"}.fa-signal:before{content:"\F012"}.fa-signature:before{content:"\F5B7"}.fa-sim-card:before{content:"\F7C4"}.fa-simplybuilt:before{content:"\F215"}.fa-sistrix:before{content:"\F3EE"}.fa-sitemap:before{content:"\F0E8"}.fa-sith:before{content:"\F512"}.fa-skating:before{content:"\F7C5"}.fa-sketch:before{content:"\F7C6"}.fa-skiing:before{content:"\F7C9"}.fa-skiing-nordic:before{content:"\F7CA"}.fa-skull:before{content:"\F54C"}.fa-skull-crossbones:before{content:"\F714"}.fa-skyatlas:before{content:"\F216"}.fa-skype:before{content:"\F17E"}.fa-slack:before{content:"\F198"}.fa-slack-hash:before{content:"\F3EF"}.fa-slash:before{content:"\F715"}.fa-sleigh:before{content:"\F7CC"}.fa-sliders-h:before{content:"\F1DE"}.fa-slideshare:before{content:"\F1E7"}.fa-smile:before{content:"\F118"}.fa-smile-beam:before{content:"\F5B8"}.fa-smile-wink:before{content:"\F4DA"}.fa-smog:before{content:"\F75F"}.fa-smoking:before{content:"\F48D"}.fa-smoking-ban:before{content:"\F54D"}.fa-sms:before{content:"\F7CD"}.fa-snapchat:before{content:"\F2AB"}.fa-snapchat-ghost:before{content:"\F2AC"}.fa-snapchat-square:before{content:"\F2AD"}.fa-snowboarding:before{content:"\F7CE"}.fa-snowflake:before{content:"\F2DC"}.fa-snowman:before{content:"\F7D0"}.fa-snowplow:before{content:"\F7D2"}.fa-socks:before{content:"\F696"}.fa-solar-panel:before{content:"\F5BA"}.fa-sort:before{content:"\F0DC"}.fa-sort-alpha-down:before{content:"\F15D"}.fa-sort-alpha-down-alt:before{content:"\F881"}.fa-sort-alpha-up:before{content:"\F15E"}.fa-sort-alpha-up-alt:before{content:"\F882"}.fa-sort-amount-down:before{content:"\F160"}.fa-sort-amount-down-alt:before{content:"\F884"}.fa-sort-amount-up:before{content:"\F161"}.fa-sort-amount-up-alt:before{content:"\F885"}.fa-sort-down:before{content:"\F0DD"}.fa-sort-numeric-down:before{content:"\F162"}.fa-sort-numeric-down-alt:before{content:"\F886"}.fa-sort-numeric-up:before{content:"\F163"}.fa-sort-numeric-up-alt:before{content:"\F887"}.fa-sort-up:before{content:"\F0DE"}.fa-soundcloud:before{content:"\F1BE"}.fa-sourcetree:before{content:"\F7D3"}.fa-spa:before{content:"\F5BB"}.fa-space-shuttle:before{content:"\F197"}.fa-speakap:before{content:"\F3F3"}.fa-speaker-deck:before{content:"\F83C"}.fa-spell-check:before{content:"\F891"}.fa-spider:before{content:"\F717"}.fa-spinner:before{content:"\F110"}.fa-splotch:before{content:"\F5BC"}.fa-spotify:before{content:"\F1BC"}.fa-spray-can:before{content:"\F5BD"}.fa-square:before{content:"\F0C8"}.fa-square-full:before{content:"\F45C"}.fa-square-root-alt:before{content:"\F698"}.fa-squarespace:before{content:"\F5BE"}.fa-stack-exchange:before{content:"\F18D"}.fa-stack-overflow:before{content:"\F16C"}.fa-stackpath:before{content:"\F842"}.fa-stamp:before{content:"\F5BF"}.fa-star:before{content:"\F005"}.fa-star-and-crescent:before{content:"\F699"}.fa-star-half:before{content:"\F089"}.fa-star-half-alt:before{content:"\F5C0"}.fa-star-of-david:before{content:"\F69A"}.fa-star-of-life:before{content:"\F621"}.fa-staylinked:before{content:"\F3F5"}.fa-steam:before{content:"\F1B6"}.fa-steam-square:before{content:"\F1B7"}.fa-steam-symbol:before{content:"\F3F6"}.fa-step-backward:before{content:"\F048"}.fa-step-forward:before{content:"\F051"}.fa-stethoscope:before{content:"\F0F1"}.fa-sticker-mule:before{content:"\F3F7"}.fa-sticky-note:before{content:"\F249"}.fa-stop:before{content:"\F04D"}.fa-stop-circle:before{content:"\F28D"}.fa-stopwatch:before{content:"\F2F2"}.fa-store:before{content:"\F54E"}.fa-store-alt:before{content:"\F54F"}.fa-strava:before{content:"\F428"}.fa-stream:before{content:"\F550"}.fa-street-view:before{content:"\F21D"}.fa-strikethrough:before{content:"\F0CC"}.fa-stripe:before{content:"\F429"}.fa-stripe-s:before{content:"\F42A"}.fa-stroopwafel:before{content:"\F551"}.fa-studiovinari:before{content:"\F3F8"}.fa-stumbleupon:before{content:"\F1A4"}.fa-stumbleupon-circle:before{content:"\F1A3"}.fa-subscript:before{content:"\F12C"}.fa-subway:before{content:"\F239"}.fa-suitcase:before{content:"\F0F2"}.fa-suitcase-rolling:before{content:"\F5C1"}.fa-sun:before{content:"\F185"}.fa-superpowers:before{content:"\F2DD"}.fa-superscript:before{content:"\F12B"}.fa-supple:before{content:"\F3F9"}.fa-surprise:before{content:"\F5C2"}.fa-suse:before{content:"\F7D6"}.fa-swatchbook:before{content:"\F5C3"}.fa-swift:before{content:"\F8E1"}.fa-swimmer:before{content:"\F5C4"}.fa-swimming-pool:before{content:"\F5C5"}.fa-symfony:before{content:"\F83D"}.fa-synagogue:before{content:"\F69B"}.fa-sync:before{content:"\F021"}.fa-sync-alt:before{content:"\F2F1"}.fa-syringe:before{content:"\F48E"}.fa-table:before{content:"\F0CE"}.fa-table-tennis:before{content:"\F45D"}.fa-tablet:before{content:"\F10A"}.fa-tablet-alt:before{content:"\F3FA"}.fa-tablets:before{content:"\F490"}.fa-tachometer-alt:before{content:"\F3FD"}.fa-tag:before{content:"\F02B"}.fa-tags:before{content:"\F02C"}.fa-tape:before{content:"\F4DB"}.fa-tasks:before{content:"\F0AE"}.fa-taxi:before{content:"\F1BA"}.fa-teamspeak:before{content:"\F4F9"}.fa-teeth:before{content:"\F62E"}.fa-teeth-open:before{content:"\F62F"}.fa-telegram:before{content:"\F2C6"}.fa-telegram-plane:before{content:"\F3FE"}.fa-temperature-high:before{content:"\F769"}.fa-temperature-low:before{content:"\F76B"}.fa-tencent-weibo:before{content:"\F1D5"}.fa-tenge:before{content:"\F7D7"}.fa-terminal:before{content:"\F120"}.fa-text-height:before{content:"\F034"}.fa-text-width:before{content:"\F035"}.fa-th:before{content:"\F00A"}.fa-th-large:before{content:"\F009"}.fa-th-list:before{content:"\F00B"}.fa-the-red-yeti:before{content:"\F69D"}.fa-theater-masks:before{content:"\F630"}.fa-themeco:before{content:"\F5C6"}.fa-themeisle:before{content:"\F2B2"}.fa-thermometer:before{content:"\F491"}.fa-thermometer-empty:before{content:"\F2CB"}.fa-thermometer-full:before{content:"\F2C7"}.fa-thermometer-half:before{content:"\F2C9"}.fa-thermometer-quarter:before{content:"\F2CA"}.fa-thermometer-three-quarters:before{content:"\F2C8"}.fa-think-peaks:before{content:"\F731"}.fa-thumbs-down:before{content:"\F165"}.fa-thumbs-up:before{content:"\F164"}.fa-thumbtack:before{content:"\F08D"}.fa-ticket-alt:before{content:"\F3FF"}.fa-times:before{content:"\F00D"}.fa-times-circle:before{content:"\F057"}.fa-tint:before{content:"\F043"}.fa-tint-slash:before{content:"\F5C7"}.fa-tired:before{content:"\F5C8"}.fa-toggle-off:before{content:"\F204"}.fa-toggle-on:before{content:"\F205"}.fa-toilet:before{content:"\F7D8"}.fa-toilet-paper:before{content:"\F71E"}.fa-toolbox:before{content:"\F552"}.fa-tools:before{content:"\F7D9"}.fa-tooth:before{content:"\F5C9"}.fa-torah:before{content:"\F6A0"}.fa-torii-gate:before{content:"\F6A1"}.fa-tractor:before{content:"\F722"}.fa-trade-federation:before{content:"\F513"}.fa-trademark:before{content:"\F25C"}.fa-traffic-light:before{content:"\F637"}.fa-trailer:before{content:"\F941"}.fa-train:before{content:"\F238"}.fa-tram:before{content:"\F7DA"}.fa-transgender:before{content:"\F224"}.fa-transgender-alt:before{content:"\F225"}.fa-trash:before{content:"\F1F8"}.fa-trash-alt:before{content:"\F2ED"}.fa-trash-restore:before{content:"\F829"}.fa-trash-restore-alt:before{content:"\F82A"}.fa-tree:before{content:"\F1BB"}.fa-trello:before{content:"\F181"}.fa-tripadvisor:before{content:"\F262"}.fa-trophy:before{content:"\F091"}.fa-truck:before{content:"\F0D1"}.fa-truck-loading:before{content:"\F4DE"}.fa-truck-monster:before{content:"\F63B"}.fa-truck-moving:before{content:"\F4DF"}.fa-truck-pickup:before{content:"\F63C"}.fa-tshirt:before{content:"\F553"}.fa-tty:before{content:"\F1E4"}.fa-tumblr:before{content:"\F173"}.fa-tumblr-square:before{content:"\F174"}.fa-tv:before{content:"\F26C"}.fa-twitch:before{content:"\F1E8"}.fa-twitter:before{content:"\F099"}.fa-twitter-square:before{content:"\F081"}.fa-typo3:before{content:"\F42B"}.fa-uber:before{content:"\F402"}.fa-ubuntu:before{content:"\F7DF"}.fa-uikit:before{content:"\F403"}.fa-umbraco:before{content:"\F8E8"}.fa-umbrella:before{content:"\F0E9"}.fa-umbrella-beach:before{content:"\F5CA"}.fa-underline:before{content:"\F0CD"}.fa-undo:before{content:"\F0E2"}.fa-undo-alt:before{content:"\F2EA"}.fa-uniregistry:before{content:"\F404"}.fa-unity:before{content:"\F949"}.fa-universal-access:before{content:"\F29A"}.fa-university:before{content:"\F19C"}.fa-unlink:before{content:"\F127"}.fa-unlock:before{content:"\F09C"}.fa-unlock-alt:before{content:"\F13E"}.fa-untappd:before{content:"\F405"}.fa-upload:before{content:"\F093"}.fa-ups:before{content:"\F7E0"}.fa-usb:before{content:"\F287"}.fa-user:before{content:"\F007"}.fa-user-alt:before{content:"\F406"}.fa-user-alt-slash:before{content:"\F4FA"}.fa-user-astronaut:before{content:"\F4FB"}.fa-user-check:before{content:"\F4FC"}.fa-user-circle:before{content:"\F2BD"}.fa-user-clock:before{content:"\F4FD"}.fa-user-cog:before{content:"\F4FE"}.fa-user-edit:before{content:"\F4FF"}.fa-user-friends:before{content:"\F500"}.fa-user-graduate:before{content:"\F501"}.fa-user-injured:before{content:"\F728"}.fa-user-lock:before{content:"\F502"}.fa-user-md:before{content:"\F0F0"}.fa-user-minus:before{content:"\F503"}.fa-user-ninja:before{content:"\F504"}.fa-user-nurse:before{content:"\F82F"}.fa-user-plus:before{content:"\F234"}.fa-user-secret:before{content:"\F21B"}.fa-user-shield:before{content:"\F505"}.fa-user-slash:before{content:"\F506"}.fa-user-tag:before{content:"\F507"}.fa-user-tie:before{content:"\F508"}.fa-user-times:before{content:"\F235"}.fa-users:before{content:"\F0C0"}.fa-users-cog:before{content:"\F509"}.fa-usps:before{content:"\F7E1"}.fa-ussunnah:before{content:"\F407"}.fa-utensil-spoon:before{content:"\F2E5"}.fa-utensils:before{content:"\F2E7"}.fa-vaadin:before{content:"\F408"}.fa-vector-square:before{content:"\F5CB"}.fa-venus:before{content:"\F221"}.fa-venus-double:before{content:"\F226"}.fa-venus-mars:before{content:"\F228"}.fa-viacoin:before{content:"\F237"}.fa-viadeo:before{content:"\F2A9"}.fa-viadeo-square:before{content:"\F2AA"}.fa-vial:before{content:"\F492"}.fa-vials:before{content:"\F493"}.fa-viber:before{content:"\F409"}.fa-video:before{content:"\F03D"}.fa-video-slash:before{content:"\F4E2"}.fa-vihara:before{content:"\F6A7"}.fa-vimeo:before{content:"\F40A"}.fa-vimeo-square:before{content:"\F194"}.fa-vimeo-v:before{content:"\F27D"}.fa-vine:before{content:"\F1CA"}.fa-vk:before{content:"\F189"}.fa-vnv:before{content:"\F40B"}.fa-voicemail:before{content:"\F897"}.fa-volleyball-ball:before{content:"\F45F"}.fa-volume-down:before{content:"\F027"}.fa-volume-mute:before{content:"\F6A9"}.fa-volume-off:before{content:"\F026"}.fa-volume-up:before{content:"\F028"}.fa-vote-yea:before{content:"\F772"}.fa-vr-cardboard:before{content:"\F729"}.fa-vuejs:before{content:"\F41F"}.fa-walking:before{content:"\F554"}.fa-wallet:before{content:"\F555"}.fa-warehouse:before{content:"\F494"}.fa-water:before{content:"\F773"}.fa-wave-square:before{content:"\F83E"}.fa-waze:before{content:"\F83F"}.fa-weebly:before{content:"\F5CC"}.fa-weibo:before{content:"\F18A"}.fa-weight:before{content:"\F496"}.fa-weight-hanging:before{content:"\F5CD"}.fa-weixin:before{content:"\F1D7"}.fa-whatsapp:before{content:"\F232"}.fa-whatsapp-square:before{content:"\F40C"}.fa-wheelchair:before{content:"\F193"}.fa-whmcs:before{content:"\F40D"}.fa-wifi:before{content:"\F1EB"}.fa-wikipedia-w:before{content:"\F266"}.fa-wind:before{content:"\F72E"}.fa-window-close:before{content:"\F410"}.fa-window-maximize:before{content:"\F2D0"}.fa-window-minimize:before{content:"\F2D1"}.fa-window-restore:before{content:"\F2D2"}.fa-windows:before{content:"\F17A"}.fa-wine-bottle:before{content:"\F72F"}.fa-wine-glass:before{content:"\F4E3"}.fa-wine-glass-alt:before{content:"\F5CE"}.fa-wix:before{content:"\F5CF"}.fa-wizards-of-the-coast:before{content:"\F730"}.fa-wolf-pack-battalion:before{content:"\F514"}.fa-won-sign:before{content:"\F159"}.fa-wordpress:before{content:"\F19A"}.fa-wordpress-simple:before{content:"\F411"}.fa-wpbeginner:before{content:"\F297"}.fa-wpexplorer:before{content:"\F2DE"}.fa-wpforms:before{content:"\F298"}.fa-wpressr:before{content:"\F3E4"}.fa-wrench:before{content:"\F0AD"}.fa-x-ray:before{content:"\F497"}.fa-xbox:before{content:"\F412"}.fa-xing:before{content:"\F168"}.fa-xing-square:before{content:"\F169"}.fa-y-combinator:before{content:"\F23B"}.fa-yahoo:before{content:"\F19E"}.fa-yammer:before{content:"\F840"}.fa-yandex:before{content:"\F413"}.fa-yandex-international:before{content:"\F414"}.fa-yarn:before{content:"\F7E3"}.fa-yelp:before{content:"\F1E9"}.fa-yen-sign:before{content:"\F157"}.fa-yin-yang:before{content:"\F6AD"}.fa-yoast:before{content:"\F2B1"}.fa-youtube:before{content:"\F167"}.fa-youtube-square:before{content:"\F431"}.fa-zhihu:before{content:"\F63F"}.sr-only{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sr-only-focusable:active,.sr-only-focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}@font-face{font-family:Font Awesome\ 5 Brands;font-style:normal;font-weight:400;font-display:auto;src:url(/openj9/static/fa-brands-400-57dcda6f368ea90179f75cbdae96c263.eot);src:url(/openj9/static/fa-brands-400-57dcda6f368ea90179f75cbdae96c263.eot?#iefix) format("embedded-opentype"),url(/openj9/static/fa-brands-400-067595ad77ecc0db9c81c8905a7eef32.woff2) format("woff2"),url(/openj9/static/fa-brands-400-b564da88bbf0c4aa446fa19653713cd1.woff) format("woff"),url(/openj9/static/fa-brands-400-9ec698d1a597bff5df337094b71ddaaf.ttf) format("truetype"),url(/openj9/static/fa-brands-400-9d67fa1429375bd2a899a17eb77d0342.svg#fontawesome) format("svg")}.fab{font-family:Font Awesome\ 5 Brands}@font-face{font-family:Font Awesome\ 5 Free;font-style:normal;font-weight:400;font-display:auto;src:url(/openj9/static/fa-regular-400-3351f435b3c9037fd88aeb04dc1e43bc.eot);src:url(/openj9/static/fa-regular-400-3351f435b3c9037fd88aeb04dc1e43bc.eot?#iefix) format("embedded-opentype"),url(/openj9/static/fa-regular-400-4165c2688309cbfb1b877caf8f75afb5.woff2) format("woff2"),url(/openj9/static/fa-regular-400-73cf49a2232c06c920b7a34e36bfb58c.woff) format("woff"),url(/openj9/static/fa-regular-400-a0e3ac82940c1998c5977fd4bc1f5ef6.ttf) format("truetype"),url(/openj9/static/fa-regular-400-5d0861781aeef6c82fda3a3076954a1b.svg#fontawesome) format("svg")}.fab,.far{font-weight:400}@font-face{font-family:Font Awesome\ 5 Free;font-style:normal;font-weight:900;font-display:auto;src:url(/openj9/static/fa-solid-900-89e02bae13c9131c7468b1e729339ac1.eot);src:url(/openj9/static/fa-solid-900-89e02bae13c9131c7468b1e729339ac1.eot?#iefix) format("embedded-opentype"),url(/openj9/static/fa-solid-900-55eb2a60e8181f0e68b558c991973bf0.woff2) format("woff2"),url(/openj9/static/fa-solid-900-cdfec5cf5e9840889790bcf2c4042583.woff) format("woff"),url(/openj9/static/fa-solid-900-75f38a159982b6bd1704891332d95fa7.ttf) format("truetype"),url(/openj9/static/fa-solid-900-0724bb8b89ab6b8b9b7df917b17be0b7.svg#fontawesome) format("svg")}.fa,.far,.fas{font-family:Font Awesome\ 5 Free}.fa,.fas{font-weight:900}</style><meta name="generator" content="Gatsby 2.19.7"/><link rel="icon" href="/openj9/favicon-32x32.png?v=0a19b941415d1d6d03226a8c85fc39c9"/><link rel="manifest" href="/openj9/manifest.webmanifest"/><link rel="apple-touch-icon" sizes="48x48" href="/openj9/icons/icon-48x48.png?v=0a19b941415d1d6d03226a8c85fc39c9"/><link rel="apple-touch-icon" sizes="72x72" href="/openj9/icons/icon-72x72.png?v=0a19b941415d1d6d03226a8c85fc39c9"/><link rel="apple-touch-icon" sizes="96x96" href="/openj9/icons/icon-96x96.png?v=0a19b941415d1d6d03226a8c85fc39c9"/><link rel="apple-touch-icon" sizes="144x144" href="/openj9/icons/icon-144x144.png?v=0a19b941415d1d6d03226a8c85fc39c9"/><link rel="apple-touch-icon" sizes="192x192" href="/openj9/icons/icon-192x192.png?v=0a19b941415d1d6d03226a8c85fc39c9"/><link rel="apple-touch-icon" sizes="256x256" href="/openj9/icons/icon-256x256.png?v=0a19b941415d1d6d03226a8c85fc39c9"/><link rel="apple-touch-icon" sizes="384x384" href="/openj9/icons/icon-384x384.png?v=0a19b941415d1d6d03226a8c85fc39c9"/><link rel="apple-touch-icon" sizes="512x512" href="/openj9/icons/icon-512x512.png?v=0a19b941415d1d6d03226a8c85fc39c9"/><link rel="preconnect dns-prefetch" href="https://www.google-analytics.com"/><link as="script" rel="preload" href="/openj9/component---src-pages-performance-js-31be57d58d932a4860aa.js"/><link as="script" rel="preload" href="/openj9/commons-42a47b90457bdd243664.js"/><link as="script" rel="preload" href="/openj9/app-0b96427b0b370a80fa06.js"/><link as="script" rel="preload" href="/openj9/styles-cc4082ebb0cb6903d934.js"/><link as="script" rel="preload" href="/openj9/webpack-runtime-c69760aa7e58303b27f8.js"/><link as="fetch" rel="preload" href="/openj9/page-data/performance/page-data.json" crossorigin="anonymous"/></head><body><div id="___gatsby"><div style="outline:none" tabindex="-1" role="group" id="gatsby-focus-wrapper"><style data-emotion-css="t923zi">body{color:text;background-color:var(--theme-ui-colors-background,#FFFFFF);}</style><style data-emotion-css="1gb9wyy">*{box-sizing:border-box;}body{margin:0;font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.5;font-weight:400;}</style><style data-emotion-css="1xgro3h">*{padding:0;margin:0;}</style><style data-emotion-css="1mh4t0h">.css-1mh4t0h{display:none;background-color:var(--theme-ui-colors-primary,#434343);width:100%;color:var(--theme-ui-colors-lightText,#d8d8d8);padding-left:40px;padding-right:40px;padding-top:32px;padding-bottom:32px;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}@media screen and (min-width:560px){.css-1mh4t0h{display:none;}}@media screen and (min-width:1000px){.css-1mh4t0h{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}}@media screen and (min-width:1366px){.css-1mh4t0h{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}}</style><header class="css-1mh4t0h"><style data-emotion-css="4golyb">.css-4golyb{-webkit-flex:1;-ms-flex:1;flex:1;opacity:1;pointer-events:all;}</style><div class="css-4golyb"><a href="/openj9/"><img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNzlweCIgaGVpZ2h0PSIzM3B4IiB2aWV3Qm94PSIwIDAgNzkgMzMiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5Mb2dvPC90aXRsZT4KICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPgogICAgPGcgaWQ9IlBhZ2UtMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9IkxvZ28iIGZpbGwtcnVsZT0ibm9uemVybyI+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMC4wNDUyMzE4LDE5LjQ2MTIzMzcgQzkuMjQwNjc1MjUsMjAuNjk4NDMyOCA4LjEyNjE5NTA0LDIxLjMxNjY4NzggNi43MDA3Nzc4OSwyMS4zMTY2ODc4IEM1LjMxNTQ1ODI5LDIxLjMxNjY4NzggNC4yMDg2NTAxNywyMC43MTkxMTAzIDMuMzgwMjA4NzgsMTkuNTIzODE3NCBDMi41NTIyMDE2NiwxOC4zMjgyNDg5IDIuMTM4MDUzMzUsMTYuNzc4NDA3MSAyLjEzODA1MzM1LDE0Ljg3MzMyNzMgQzIuMTM4MDUzMzUsMTIuOTIyNzU3MSAyLjU0ODE0ODQ4LDExLjM0Mzk2NyAzLjM2ODMzODc1LDEwLjEzNzIzMjYgQzQuMTg4NjczNzgsOC45MzA2MzYxMiA1LjI5NTE5MjM4LDguMzI2OTkzMjQgNi42ODg3NjMxLDguMzI2OTkzMjQgQzguMDY2NTU1MzcsOC4zMjY5OTMyNCA5LjE3MTE5MjE0LDguODg1MjgzNjUgMTAuMDAzMzk3MiwxMC4wMDA0ODYgQzEwLjgzNTYwMjMsMTEuMTE2Mzc3NSAxMS4yNTE3NzcyLDEyLjY3NjI4MjIgMTEuMjUxNzc3MiwxNC42Nzk2NDg4IEMxMS4yNTE3NzcyLDE2LjYzMDM1NjggMTAuODQ5NDk4OSwxOC4yMjQxNzI1IDEwLjA0NTIzMTgsMTkuNDYxMjMzNyBNNi43MTI3OTI2OCw2LjczNDY5Mzg4IEM0LjY5MDExMDI1LDYuNzM0NjkzODggMy4wNjU2NTI5Myw3LjUwMTQxMjcgMS44MzkyNzU5NSw5LjAzNDAyMzI0IEMwLjYxMzE4ODQ4OSwxMC41NjY3NzE2IDAsMTIuNTA5NDg0NCAwLDE0Ljg2MTg4NTggQzAsMTcuMTE1NzI0OCAwLjU4NTM5NTI0MywxOS4wMTg1OTkxIDEuNzU2MDQwOTcsMjAuNTcwMDk1IEMyLjkyNjU0MTk1LDIyLjEyMjAwNDQgNC41NTg4MTYxMiwyMi44OTc5NTkyIDYuNjUzMDA4MjUsMjIuODk3OTU5MiBDOC43NzkxOTE1NywyMi44OTc5NTkyIDEwLjQzMzQ2ODcsMjIuMDgwMDk4MiAxMS42MTYyNzQsMjAuNDQ1MDY1NSBDMTIuNzk4NTAwMiwxOC44MDk3NTcxIDEzLjM4OTgzMDUsMTYuODkxNDQzNyAxMy4zODk4MzA1LDE0LjY5MTIyODEgQzEzLjM4OTgzMDUsMTIuMzk5NjE4MyAxMi43ODA1NTA0LDEwLjUwMDQ2NiAxMS41NjIyNzk4LDguOTkzOTA5MDQgQzEwLjM0Mzg2NDUsNy40ODgwNDEzIDguNzI3MzY4NzQsNi43MzQ2OTM4OCA2LjcxMjc5MjY4LDYuNzM0NjkzODgiIGlkPSJTaGFwZSIgZmlsbD0iIzVEQTdBMyI+PC9wYXRoPgogICAgICAgICAgICA8cGF0aCBkPSJNMjIuOTc0MzgxNywyMS4zNjc1NDcyIEMyMi4zMTQxOTk5LDIyLjA3MDg5MDkgMjEuNTU1MzY4NiwyMi40MjMxMzExIDIwLjY5OTU0OTUsMjIuNDIzMTMxMSBDMTkuOTYwMDU1MywyMi40MjMxMzExIDE5LjI1MDkyNjQsMjIuMTMwOTk0OCAxOC41Njk3NDU3LDIxLjU0NjU4MDEgQzE3Ljg4ODI2MjksMjAuOTYzMDE3OSAxNy41MTMzMDM4LDIwLjIyMzAxNTEgMTcuMzYyMjMyNSwxOS4zMjc5OTI0IEwxNy4zNjIyMzI1LDE1Ljk4NjA0NCBDMTcuNjY0Mzc1MiwxNS4xNzMxNDkxIDE3Ljk2OTM4ODIsMTQuNDgxNDU2OCAxOC41ODg0Nzg2LDEzLjkxMDk2NjggQzE5LjIwNzU2ODksMTMuMzQwNDc2OSAxOS45MDY3MjcxLDEzLjA1NTE2MDkgMjAuNjg3OTE3LDEzLjA1NTE2MDkgQzIxLjY3NjgzLDEzLjA1NTE2MDkgMjIuNDcwNDA3NywxMy40NTk2OTAxIDIzLjA2ODgwMTMsMTQuMjY4NjA2NSBDMjMuNjY2ODkyNywxNS4wNzc1MjI4IDIzLjk2NjAxNCwxNi4yMjg0NDg5IDIzLjk2NjAxNCwxNy43MjE1MjY5IEMyMy45NjYwMTQsMTkuNDQ4OTEwNyAyMy42MzUxNjc3LDIwLjY2NDYyOTcgMjIuOTc0MzgxNywyMS4zNjc1NDcyIE0yMS4xNjI3MzQyLDExLjQ0ODk3OTYgQzE5LjQwMzM1NzQsMTEuNDQ4OTc5NiAxOC4xMTc1ODkyLDEyLjMyNDUzNiAxNy4yMTExNjEyLDE0LjA3NDc5NjIgTDE3LjIxMTE2MTIsMTEuNjk4MjA0OCBMMTUuMzk4MzA1MSwxMS42OTgyMDQ4IEwxNS4zOTgzMDUxLDI3LjYxMjI0NDkgTDE3LjM2MjIzMjUsMjcuNjEyMjQ0OSBMMTcuMzYyMjMyNSwyMS44MjQ5MzM3IEMxOC4yNjg2NjA1LDIzLjIzOTQzNjEgMTkuNTA4OTU2MiwyMy45NDcwNDI1IDIxLjA4NzY1MTcsMjMuOTQ3MDQyNSBDMjIuNTU4OTM1NSwyMy45NDcwNDI1IDIzLjc2MjgyMywyMy4zNzk2Nzg2IDI0LjcwMjAzMzUsMjIuMjQ1NTE5MSBDMjUuNjQwNzkwOCwyMS4xMTA3OTEyIDI2LjExMDE2OTUsMTkuNTc3NTAxOCAyNi4xMTAxNjk1LDE3LjY0NTM2NjkgQzI2LjExMDE2OTUsMTUuODUzNDc0NCAyNS42NjI5OTgzLDE0LjM3MjkwMDMgMjQuNzUwNTI3NCwxMy4yMDMzNjA0IEMyMy44Mzc2MDMzLDEyLjAzMzY3ODUgMjIuNjQ4MDY3NiwxMS40NDg5Nzk2IDIxLjE2MjczNDIsMTEuNDQ4OTc5NiIgaWQ9IlNoYXBlIiBmaWxsPSIjNURBN0EzIj48L3BhdGg+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMC4yNjM1ODc2LDE2LjM2MzMzNjcgQzMwLjM0MTcwNzYsMTUuMjU4OTg2OCAzMC43MDEzMTY2LDE0LjQwODM2MTMgMzEuMzQxNzAwNiwxMy43NzA0NjExIEMzMS45ODE2NTYxLDEzLjEzMjQyMyAzMi43NjE0Mjc5LDEyLjgwNDAxNjkgMzMuNjgwNzMwMiwxMi44MDQwMTY5IEMzNC4zNjQxMDE2LDEyLjgwNDAxNjkgMzQuOTQ5MDczMiwxMi45NzU3NDMzIDM1LjQzNjUwMiwxMy4zMjkxMzUzIEMzNS45MjM1MDIzLDEzLjY4MTk3NTEgMzYuMjY5NDAxLDE0LjEyNTc4NTcgMzYuNDczNDg0MSwxNC42MjcwMjI1IEMzNi42NzgxMzg1LDE1LjEyODEyMTMgMzYuNzg3NTM1MSwxNS42NzMxMTggMzYuODAzMzg3NiwxNi4zNjMzMzY3IEwzMC4yNjM1ODc2LDE2LjM2MzMzNjcgWiBNMzcuMzc1MjIwMiwxMy4wMzA2ODQ4IEMzNi40MjgzNTQ1LDExLjk5MDI0OTEgMzUuMTc3NDM1LDExLjQ0ODk3OTYgMzMuNjIxNzQ3NSwxMS40NDg5Nzk2IEMzMi4wNDI5MjM5LDExLjQ0ODk3OTYgMzAuNzMwNTkzOCwxMi4wMDI1MzUgMjkuNjg2MDQyNCwxMy4xMzE0NTY3IEMyOC42NDEyMDU0LDE0LjI1OTgyNjIgMjguMTE4NjQ0MSwxNS43MzQ5NjE2IDI4LjExODY0NDEsMTcuNTY2OTQwMSBDMjguMTE4NjQ0MSwxOS4zNjA4MTg0IDI4LjYyMTA2ODQsMjAuODA3Mzc4OCAyOS42MjY5MTY4LDIxLjkxMzM4NTIgQzMwLjYzMjQ3OTYsMjMuMDE5OTQzOCAzMS45NDg1MjMsMjMuNTcxNDI4NiAzMy41NzQ5MDQsMjMuNTcxNDI4NiBDMzQuODA4MjU3MywyMy41NzE0Mjg2IDM1Ljg4MDIyOTIsMjMuMjQ4OTU4NCAzNi43OTE1MzM5LDIyLjYwNDcwODMgQzM3LjcwMzEyNDIsMjEuOTYwNzM0MiAzOC4zMTU4MDIsMjEuMTQ3MzgwNSAzOC42MzAxMzg2LDIwLjE2NDA5NSBMMzYuOTA5OTI3OCwxOS44MjI3MTI4IEMzNi4yODg5NjY3LDIxLjMzMzQ2MzUgMzUuMjIwNTY1MiwyMi4wODkyNTI5IDMzLjcwNDI5NDcsMjIuMDg5MjUyOSBDMzIuODYzNjgzNywyMi4wODkyNTI5IDMyLjA2NjM0NTYsMjEuODI4MDc0MiAzMS4zMTIyODA3LDIxLjIyMDY4MTcgQzMwLjU1ODA3MjksMjAuNjEzMDEzMiAzMC4xODA3NTQ3LDE5LjQwMDI5OSAzMC4xODA3NTQ3LDE3Ljc0Mzc3NDEgTDM4LjgzMDUwODUsMTcuNzQzNzc0MSBDMzguODA2OTQzOSwxNS41MzUwNzQzIDM4LjMyMTgwMDIsMTQuMDcwODQ0MyAzNy4zNzUyMjAyLDEzLjAzMDY4NDggTDM3LjM3NTIyMDIsMTMuMDMwNjg0OCBaIiBpZD0iU2hhcGUiIGZpbGw9IiM1REE3QTMiPjwvcGF0aD4KICAgICAgICAgICAgPHBhdGggZD0iTTQ4LjQzNjA2MzksMTIuMTMxMzMxIEM0Ny43NjA0NDM5LDExLjY3NjU3MTQgNDYuOTE5MzU2NiwxMS40NDg5Nzk2IDQ1Ljk1ODg0MjIsMTEuNDQ4OTc5NiBDNDQuMjkzMDQ0MywxMS40NDg5Nzk2IDQyLjk1MDQ1NjMsMTIuMjgxMTc0IDQxLjg2ODk3LDEzLjk0NTEzODggTDQxLjg2ODk3LDExLjY5NzA2ODggTDQwLjE2OTQ5MTUsMTEuNjk3MDY4OCBMNDAuMTY5NDkxNSwyMy41NzE0Mjg2IEw0Mi4wMjM0NjgxLDIzLjU3MTQyODYgTDQyLjAyMzQ2ODEsMTcuMDk0Mzg3NSBDNDIuMDIzNDY4MSwxNS44NzQwMTQ3IDQyLjM4NTkyMDUsMTQuODg5OTk4MiA0My4wNzg1MzUyLDE0LjE0MzE4NiBDNDMuNzcwNjg2NCwxMy4zOTY3OTggNDQuNjM1NDEyLDEzLjAyMzYwNCA0NS42NTUwOTkxLDEzLjAyMzYwNCBDNDYuMzk0NjgxMiwxMy4wMjM2MDQgNDcuMDQyODAwNSwxMy4yNDUyNTg2IDQ3LjU2MTE0MTUsMTMuNjg4NTY3OSBDNDguMDc5NjM2OSwxNC4xMzE1OTQ0IDQ4LjM1Nzg4NzksMTQuODk3NjMxNyA0OC4zNTc4ODc5LDE1Ljk4NjUzODQgTDQ4LjM1Nzg4NzksMjMuNTcxNDI4NiBMNTAuMjExODY0NCwyMy41NzE0Mjg2IEw1MC4yMTE4NjQ0LDE2Ljc0NDUxODEgQzUwLjIxMTg2NDQsMTUuMjU5Mzc1NSA1MC4wODE0NjgxLDE0LjIzMzA5MTkgNDkuODMwNDA4NywxMy42NjUyNDMyIEM0OS41Nzk2NTg0LDEzLjA5NzM5NDYgNDkuMTExODM4MywxMi41ODYwOTA1IDQ4LjQzNjA2MzksMTIuMTMxMzMxIFoiIGlkPSJTaGFwZSIgZmlsbD0iIzVEQTdBMyI+PC9wYXRoPgogICAgICAgICAgICA8cGF0aCBkPSJNNTcuNzMyOTYwNywxOS4zMjIyNzI0IEM1Ny43MzI5NjA3LDIwLjIxNjkxMjkgNTcuNjY0MDE3MywyMC44NjM1NjU5IDU3LjUyOTgzNDEsMjEuMjYzMjQ2NCBDNTcuMzk1MjIzNiwyMS42NjI0OTE5IDU3LjEzMTQxNTQsMjEuOTg3NjMxMSA1Ni43Mzk0MDY4LDIyLjIzOTM4OTIgQzU2LjM0NzY4MywyMi40OTA4NTczIDU1LjY5NjI4MiwyMi42MTYxNTYzIDU0Ljg2OTM4ODcsMjIuNjE2MTU2MyBDNTQuMjg4MDcwNywyMi42MTYxNTYzIDUzLjc0NDUwMDUsMjIuNTM4NTY5NSA1Mi44ODk4MzA1LDIyLjM4MzI1MSBMNTIuODg5ODMwNSwyMy45MzQ2OTYgQzUzLjc0NDUwMDUsMjQuMTQxMjA3MyA1NC4zNzg4MDgyLDI0LjI0NDg5OCA1NS4wOTc0NDMyLDI0LjI0NDg5OCBDNTYuNDM5NTYsMjQuMjQ0ODk4IDU3LjUzNTEwNDYsMjMuODgyNDg4MSA1OC4zNDc4OTU4LDIzLjE1ODM5MzQgQzU5LjE2MDQwMjEsMjIuNDMzODYzNyA1OS41ODQ3NDU4LDIxLjE1NDkxNSA1OS41ODQ3NDU4LDE5LjMyMTExMjMgTDU5LjU4NDc0NTgsOC43NTUxMDIwNCBMNTcuNzMyOTYwNyw4Ljc1NTEwMjA0IEw1Ny43MzI5NjA3LDE5LjMyMjI3MjQgWiIgaWQ9IlNoYXBlIiBmaWxsPSIjRkZGRkZGIj48L3BhdGg+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik02OS4yNDA4MTE5LDE2LjIyNTg5MDQgQzY4LjU2Njc1NzgsMTYuOTQyNzI2NiA2Ny43MzIxNTUyLDE3LjMwMTIxNiA2Ni43Mzc0MTk4LDE3LjMwMTIxNiBDNjUuODMzODMyNiwxNy4zMDEyMTYgNjUuMDQyMDMzNywxNi45OTE5NDIyIDY0LjM2MTA1MzQsMTYuMzczNTM3MyBDNjMuNjgwMjExNiwxNS43NTQ3MDQzIDYzLjMzOTcyMTUsMTQuOTE0MTg3MiA2My4zMzk3MjE1LDEzLjg1MTI3MjQgQzYzLjMzOTcyMTUsMTIuODYxOTY3MiA2My42NDY4Mjc1LDEyLjAyMjQ0ODUgNjQuMjYwNzYyNiwxMS4zMzQ5OTkxIEM2NC44NzQxNDM1LDEwLjY0NzEyMTYgNjUuNzEwNDA4NCwxMC4zMDMzMjU2IDY2Ljc2OTAwMzEsMTAuMzAzMzI1NiBDNjcuODEzMzI5OCwxMC4zMDMzMjU2IDY4LjY1NDk5NzEsMTAuNjM3ODQ5MSA2OS4yOTM0NTA4LDExLjMwNzYwOTUgQzY5LjkzMjE4MTUsMTEuOTc3MjI3MiA3MC4yNTE0Nzc2LDEyLjc3ODA4NjYgNzAuMjUxNDc3NiwxMy43MDkzMzE3IEM3MC4yNTE0Nzc2LDE0LjY3MDEwNjIgNjkuOTE0MzEyLDE1LjUwOTA1NDIgNjkuMjQwODExOSwxNi4yMjU4OTA0IE03MC44NTQ3NDYzLDEwLjcyNDE1NDggQzY5Ljg4ODI2OTYsOS40MTIwMjM1NyA2OC40OTgwNTAzLDguNzU1MTAyMDQgNjYuNjg0MjI2OCw4Ljc1NTEwMjA0IEM2NS4yMDI1ODIxLDguNzU1MTAyMDQgNjMuOTgzNDM5LDkuMjU3MjQ0MDEgNjMuMDI3NDkwMSwxMC4yNjExIEM2Mi4wNzA5ODcsMTEuMjY1MjQxMyA2MS41OTMyMjAzLDEyLjQ3MjgwNzEgNjEuNTkzMjIwMywxMy44ODQyMjU1IEM2MS41OTMyMjAzLDE1LjI3MzgxNzggNjIuMDQ3OTkyMiwxNi40Mzk1ODYgNjIuOTU4MzY3LDE3LjM4MTY3MjkgQzYzLjg2ODg4MDMsMTguMzIzNjE3IDY0Ljk5NDI0MzIsMTguNzk0ODAzMSA2Ni4zMzQ3MzI3LDE4Ljc5NDgwMzEgQzY4LjIzMzA1NTMsMTguNzk0ODAzMSA2OS42NTUxMzUsMTcuOTAwNzkwNiA3MC42MDA4MzMyLDE2LjExMzA1MTEgQzcwLjU3OTUwMDYsMTguMTU1MTQyNyA3MC4yMjEyNzk1LDE5Ljc3MjI2ODEgNjkuNTI2NTg1NCwyMC45NjM5OTkzIEM2OC44MzEzMzcyLDIyLjE1NjAxNTkgNjcuNzk1ODc1OSwyMi43NTE0NTM2IDY2LjQxOTUwODksMjIuNzUxNDUzNiBDNjUuMDAxNTg0OSwyMi43NTE0NTM2IDYzLjk5MjMwNDUsMjIuMDY1MDAyNyA2My4zOTIzNjAzLDIwLjY5MTM4NzYgTDYxLjk0MjI5ODksMjEuMjM2NjExMSBDNjIuNzA0MTc2OCwyMy4yNDIxODMyIDY0LjE4OTU2MTYsMjQuMjQ0ODk4IDY2LjM5ODczMDQsMjQuMjQ0ODk4IEM2OC4yODk0MzQyLDI0LjI0NDg5OCA2OS43NDY5NzU5LDIzLjQ5NzgxOTEgNzAuNzcwMTA4NiwyMi4wMDM1MTg4IEM3MS43OTMyNDEzLDIwLjUwOTA3NTggNzIuMzA1MDg0NywxOC41NTQ1NzM4IDcyLjMwNTA4NDcsMTYuMTQwMDEyNyBDNzIuMzA1MDg0NywxMy44NDIxNDI2IDcxLjgyMTYzODYsMTIuMDM2ODU2NiA3MC44NTQ3NDYzLDEwLjcyNDE1NDgiIGlkPSJTaGFwZSIgZmlsbD0iI0ZGRkZGRiI+PC9wYXRoPgogICAgICAgICAgICA8cGF0aCBkPSJNNDguODQzNzkwMSwyNC42NDQ3MTU3IEM0OS41NDM5Mzk0LDI1LjkwNTU0OTIgNTAuNDE5NDA5OCwyNy4wOTIxMjI5IDUxLjQ3MDIwMTMsMjguMTY3MjQ1MyBDNTcuNzY4MDE2NSwzNC42MTA5MTgyIDY3Ljk3ODc5MjcsMzQuNjEwOTE4MiA3NC4yNzY2MDc5LDI4LjE2NzI0NTMgQzgwLjU3NDQ2NCwyMS43MjM2MDAzIDgwLjU3NDQ2NCwxMS4yNzY0MDE4IDc0LjI3NjYwNzksNC44MzI3NTY4MyBDNjcuOTc4NzkyNywtMS42MTA5MTg5NCA1Ny43NjgwMTY1LC0xLjYxMDkxODk0IDUxLjQ3MDIwMTMsNC44MzI3NTY4MyBDNDkuNjA2NzAxNiw2LjczOTM5NzA0IDQ4LjI5NDU5ODMsOC45OTY1NjQ4MyA0Ny41MzM4OTgzLDExLjM5NjgyMjkgTDQ4LjM3MDI2NzIsMTEuNzc3ODE5NiBDNDkuMDgzNDMyNSw5LjQ3ODI5OTU2IDUwLjMzMTIyMjcsNy4zMTQ3NjEyMiA1Mi4xMTM2MzM1LDUuNDkxMDg4OTIgQzU4LjA1NjA5NDgsLTAuNTg4OTk5Mjg4IDY3LjY5MDcyMTIsLTAuNTg4OTk5Mjg4IDczLjYzMzE3NTcsNS40OTEwODg5MiBDNzkuNTc1NjcxMiwxMS41NzExNDM2IDc5LjU3NTY3MTIsMjEuNDI4ODU1NyA3My42MzMxNzU3LDI3LjUwODkxNDYgQzY3LjY5MDcyMTIsMzMuNTg4OTkzIDU4LjA1NjA5NDgsMzMuNTg4OTkzIDUyLjExMzYzMzUsMjcuNTA4OTE0NiBDNTEuMTQ0MDY3NywyNi41MTY4OTg3IDUwLjMzMjY5OTgsMjUuNDI0MzI2NyA0OS42Nzk1MTYxLDI0LjI2NDAwNzMgTDQ4Ljg0Mzc5MDEsMjQuNjQ0NzE1NyBaIiBpZD0iU2hhcGUiIGZpbGw9IiM1REE3QTMiPjwvcGF0aD4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==" alt="OpenJ9 Logo"/></a></div><style data-emotion-css="kzfr2u">.css-kzfr2u{-webkit-flex:2;-ms-flex:2;flex:2;}</style><nav class="css-kzfr2u"><style data-emotion-css="d1fq55">.css-d1fq55{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;list-style:none;-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end;}.css-d1fq55 li{padding:8px;margin-left:8px;margin-right:8px;}.css-d1fq55 li a{color:white;-webkit-text-decoration:none;text-decoration:none;}.css-d1fq55 li a:hover{color:var(--theme-ui-colors-links,#5DA7A3);}.css-d1fq55 li:first-of-type{margin-left:0;}.css-d1fq55 li:last-child{margin-right:0;padding-right:0;}</style><ul class="css-d1fq55"><li><a href="/openj9/">Home</a></li><li><a href="/openj9/about">About</a></li><li><a href="https://www.eclipse.org/openj9/docs/" rel="noopener noreferrer" target="_blank">Docs</a></li><li><a href="/openj9/performance">Performance</a></li><li><a href="/openj9/news">News</a></li></ul></nav><style data-emotion-css="1rr4qq7">.css-1rr4qq7{-webkit-flex:1;-ms-flex:1;flex:1;}</style><nav class="css-1rr4qq7"><ul class="css-d1fq55"><li><a href="https://twitter.com/openj9/" rel="noopener noreferrer" target="_blank"> <img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIyNXB4IiB2aWV3Qm94PSIwIDAgMjUgMjUiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5Ud2l0dGVyPC90aXRsZT4KICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPgogICAgPGcgaWQ9IlBhZ2UtMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9IlR3aXR0ZXIiIGZpbGwtcnVsZT0ibm9uemVybyI+CiAgICAgICAgICAgIDxnIGlkPSJ0d2l0dGVyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjAwMDAwMCwgMC4yOTg4NzkpIj4KICAgICAgICAgICAgICAgIDxlbGxpcHNlIGlkPSJPdmFsLXBhdGgiIGZpbGw9IiM0MzQzNDMiIGN4PSIxMi41MDAyMjEyIiBjeT0iMTIuMjcyNzI3MyIgcng9IjEyLjUiIHJ5PSIxMi4yNzI3MjczIj48L2VsbGlwc2U+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTIuNTAwMjIxMiwwIEMxOS40MDM3ODA2LDAgMjUuMDAwMjIxMiw1LjQ5NDY4NzE2IDI1LjAwMDIyMTIsMTIuMjcyNzI3MyBDMjUuMDAwMjIxMiwxOS4wNTA3Njc0IDE5LjQwMzc4MDYsMjQuNTQ1NDU0NSAxMi41MDAyMjEyLDI0LjU0NTQ1NDUgQzUuNTk2NjYxODcsMjQuNTQ1NDU0NSAwLjAwMDIyMTIzODkzOCwxOS4wNTA3Njc0IDAuMDAwMjIxMjM4OTM4LDEyLjI3MjcyNzMgQzAuMDAwMjIxMjM4OTM4LDUuNDk0Njg3MTYgNS41OTY2NjE4NywwIDEyLjUwMDIyMTIsMCBaIE0xNS4xMDM0MzMzLDYuODE4MTgxODIgQzEzLjQ2NTM4MDIsNi44MTgxODE4MiAxMi4xMzY4NDA0LDguMDkyMTI0MTEgMTIuMTM2ODQwNCw5LjY2Mjg1OTk2IEMxMi4xMzY4NDA0LDkuODg1ODI2MzggMTIuMTYzMTY3OCwxMC4xMDI4NTI3IDEyLjIxNDA1MjgsMTAuMzExMTgxIEM5Ljc0ODU2NjA0LDEwLjE5MjU5MDggNy41NjI1MDQxLDkuMDYwMTUwNTQgNi4wOTkyMjk3Niw3LjMzODU3ODIzIEM1Ljg0MzkyMDAzLDcuNzU4NjI5MTUgNS42OTc0NTk4NSw4LjI0NzYyNzgxIDUuNjk3NDU5ODUsOC43Njg4NzI4MSBDNS42OTc0NTk4NSw5Ljc1NTU2ODE3IDYuMjIxNTc0ODksMTAuNjI2NjQzNCA3LjAxNzE1MDExLDExLjEzNjY0NDcgQzYuNTMxMDg4MTcsMTEuMTIyMDA2NSA2LjA3MzM0NDgsMTAuOTk0MDgxOSA1LjY3MzU2NjA0LDEwLjc4MDQ1IEw1LjY3MzM0NDgsMTAuODE2NTE0OSBMNS42NzMzNDQ4LDEwLjgxNjUxNDkgQzUuNjczMzQ0OCwxMi4xOTQ4MzM1IDYuNjk2MzUzNjUsMTMuMzQ0NDU3NyA4LjA1MzIxMjA2LDEzLjYwNTYxMDYgQzcuODA0NTM5NSwxMy42NzA5NTE5IDcuNTQxOTI4ODgsMTMuNzA1NTMxOCA3LjI3MTc5NjEzLDEzLjcwNTUzMTggQzcuMDgwMjAzMjEsMTMuNzA1NTMxOCA2Ljg5NDU4Mzc0LDEzLjY4NzkyMzYgNi43MTM2MTAyOSwxMy42NTQ4Mjg3IEM3LjA5MTA0MzkyLDE0Ljc4NDcyMzIgOC4xODYzOTc5LDE1LjYwNzIxNjkgOS40ODQ4NDkyMywxNS42MzAzNDA5IEM4LjQ2OTM2MjUsMTYuMzkzNDMzNCA3LjE5MDM4MDIsMTYuODQ4MDY0MiA1LjgwMDExNDcyLDE2Ljg0ODA2NDIgQzUuNTYxMTc2NjYsMTYuODQ4MDY0MiA1LjMyNDQ1MSwxNi44MzQ2OTkgNS4wOTI4MTM4MywxNi44MDgxODA2IEM2LjQwNDk4MTk3LDE3LjYxNTYxMTggNy45NjQ3MTY0OSwxOC4wODYzNjU4IDkuNjM5OTM3NzMsMTguMDg2MzY1OCBDMTUuMDk2NTc0OSwxOC4wODYzNjU4IDE4LjA4MDY0NTcsMTMuNzUxNzc5OCAxOC4wODA2NDU3LDkuOTkyMzI0MTQgQzE4LjA4MDY0NTcsOS44NjkwNjY3NyAxOC4wNzc3Njk2LDkuNzQ2MjMzNyAxOC4wNzIwMTc0LDkuNjI0NDYxMzcgQzE4LjY1MjEwNTksOS4yMjM1MDM2OCAxOS4xNTQ5ODIsOC43MjI2MjQ3OCAxOS41NTI1NDgzLDguMTUyMTYxNjkgQzE5LjAyMDY4OTksOC4zNzgzMTAzMiAxOC40NDg1NjYsOC41MzEyNjgyNSAxNy44NDg1NjYsOC41OTk1Nzk1NiBDMTguNDYxMTc2Nyw4LjI0NzYyNzgxIDE4LjkzMTMwOTQsNy42OTA3NDIxMyAxOS4xNTMyMTIxLDcuMDI2MDg1ODEgQzE4LjU3OTk4Miw3LjM1MjE1NTYzIDE3Ljk0NDgwNSw3LjU4ODY5OTQ2IDE3LjI2OTM2MjUsNy43MTYxOTk3NiBDMTYuNzI4MjEyMSw3LjE2MzU1NzAyIDE1Ljk1NzE5NDQsNi44MTgxODE4MiAxNS4xMDM0MzMzLDYuODE4MTgxODIgWiIgaWQ9IkNvbWJpbmVkLVNoYXBlIiBmaWxsPSIjRkZGRkZGIj48L3BhdGg+CiAgICAgICAgICAgIDwvZz4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==" alt="Twitter Logo"/></a></li><li><a href="https://github.com/eclipse/openj9" rel="noopener noreferrer" target="_blank"> <img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIyNXB4IiB2aWV3Qm94PSIwIDAgMjUgMjUiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5HaXRIdWI8L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0iR2l0SHViIiBmaWxsPSIjRkZGRkZGIiBmaWxsLXJ1bGU9Im5vbnplcm8iPgogICAgICAgICAgICA8ZyBpZD0iZ2l0aHViLWxvZ28iPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTIzLjMyMzIwOSw2LjM1NjM4NTg4IEMyMi4yMDU0MjQzLDQuNDI4ODY0OTMgMjAuNjg5MjIwNywyLjkwMjg0MzkxIDE4Ljc3NDE5OTMsMS43Nzc5Nzg1OCBDMTYuODU4ODkyOCwwLjY1MzA1NTg3MyAxNC43Njc5NDkxLDAuMDkwNzM3OTUzMyAxMi40OTk4ODYsMC4wOTA3Mzc5NTMzIEMxMC4yMzIxMDc5LDAuMDkwNzM3OTUzMyA4LjE0MDQ4MDEzLDAuNjUzMjI3OTkzIDYuMjI1NTcyNjksMS43Nzc5Nzg1OCBDNC4zMTAzODAyMSwyLjkwMjc4NjU0IDIuNzk0MjMzNjcsNC40Mjg4NjQ5MyAxLjY3NjQ0ODk5LDYuMzU2Mzg1ODggQzAuNTU4ODM1MzMzLDguMjgzODQ5NDUgMCwxMC4zODg2NTQ2IDAsMTIuNjcwNzQzOSBDMCwxNS40MTIwNTEgMC43OTQ2NzE0ODMsMTcuODc3MTA0NSAyLjM4NDQxMzQ5LDIwLjA2NjUzNTUgQzMuOTczOTg0NDksMjIuMjU2MTM4OCA2LjAyNzQ3NDg4LDIzLjc3MTI1ODggOC41NDQ3MTM2NywyNC42MTIwNjc4IEM4LjgzNzcyNzQsMjQuNjY2ODAyMiA5LjA1NDYzNzM3LDI0LjYyODMwNDUgOS4xOTU2NzE2MSwyNC40OTc1NTAzIEM5LjMzNjc2Mjg1LDI0LjM2NjYyMzkgOS40MDcyMjI5NiwyNC4yMDI2NTAzIDkuNDA3MjIyOTYsMjQuMDA2MzE4MSBDOS40MDcyMjI5NiwyMy45NzM1NTc5IDkuNDA0NDI5NjQsMjMuNjc4ODMwMSA5LjM5OTAxNDAxLDIzLjEyMTc5MDUgQzkuMzkzNDI3MzcsMjIuNTY0NzUxIDkuMzkwODA1MDcsMjIuMDc4Nzk3MiA5LjM5MDgwNTA3LDIxLjY2NDE1ODcgTDkuMDE2NDQyOTcsMjEuNzI5MzM1MSBDOC43Nzc3NTY1LDIxLjc3MzM0MDUgOC40NzY2NDc4MywyMS43OTE5ODY5IDguMTEzMTE2OTgsMjEuNzg2NzA4NiBDNy43NDk3NTcxNSwyMS43ODE2MDIzIDcuMzcyNTQ0NzMsMjEuNzQzMjc2OCA2Ljk4MTk5Mjc3LDIxLjY3MjAxODkgQzYuNTkxMjY5NzksMjEuNjAxMzkyMSA2LjIyNzg1Mjk1LDIxLjQzNzU5MDcgNS44OTE0NTcyMiwyMS4xODA5NTg5IEM1LjU1NTIzMjUyLDIwLjkyNDMyNzEgNS4zMTY1NDYwNCwyMC41ODg0MDUxIDUuMTc1NDU0OCwyMC4xNzM3MDkzIEw1LjAxMjcwMTA2LDE5Ljc5Njc2NTIgQzQuOTA0MjE3NTcsMTkuNTQ1ODEzNCA0LjczMzQyNTkxLDE5LjI2NzAzNTUgNC41MDAwOTgwNSwxOC45NjE0NjQxIEM0LjI2Njc3MDE5LDE4LjY1NTYwNTggNC4wMzA4MjAwMywxOC40NDgyNTc5IDMuNzkyMTMzNTUsMTguMzM5MDc2MSBMMy42NzgxNzc0MywxOC4yNTY5NzQ2IEMzLjYwMjI0NDY5LDE4LjIwMjQxMjMgMy41MzE3ODQ1OCwxOC4xMzY2MDQ5IDMuNDY2NjI2MDgsMTguMDYwMjQwOCBDMy40MDE1MjQ1OCwxNy45ODM4NzY2IDMuMzUyNzgzOTcsMTcuOTA3NDU1MSAzLjMyMDIzMzIzLDE3LjgzMDkxODggQzMuMjg3NjI1NDcsMTcuNzU0MzI1MSAzLjMxNDY0NjU4LDE3LjY5MTUwMTEgMy40MDE1ODE1OSwxNy42NDIyMTcyIEMzLjQ4ODUxNjYsMTcuNTkyOTMzNCAzLjY0NTYyNjY4LDE3LjU2OTAwODYgMy44NzM1OTU5MywxNy41NjkwMDg2IEw0LjE5ODk4OTM5LDE3LjYxNzk0ODIgQzQuNDE2MDEzMzcsMTcuNjYxNzI0MiA0LjY4NDQ1NzI3LDE3Ljc5MjQ3ODUgNS4wMDQ2NjMxNCwxOC4wMTEwMTQzIEM1LjMyNDY5Nzk4LDE4LjIyOTM3NzkgNS41ODc3ODMyNywxOC41MTMyNjIxIDUuNzkzOTc2LDE4Ljg2MjU1MjEgQzYuMDQzNjY0NzUsMTkuMzEwNDA5OSA2LjM0NDQ4ODM4LDE5LjY1MTY2NzYgNi42OTczMDE5OSwxOS44ODY0OTc0IEM3LjA0OTgzMDU4LDIwLjEyMTMyNzMgNy40MDUyNjY0OSwyMC4yMzg1NDE0IDcuNzYzMjY3NzEsMjAuMjM4NTQxNCBDOC4xMjEyNjg5MiwyMC4yMzg1NDE0IDguNDMwNDcyNTIsMjAuMjExMjMxNiA4LjY5MDk5MjUxLDIwLjE1Njg5ODkgQzguOTUxMjI3NDcsMjAuMTAyMjc5MyA5LjE5NTM4NjU3LDIwLjAyMDE3NzcgOS40MjMzNTU4MiwxOS45MTEwNTMzIEM5LjUyMTAwODA2LDE5LjE3OTA4MTkgOS43ODY4ODY2NywxOC42MTY3NjM5IDEwLjIyMDc2MzYsMTguMjIzNjk3OSBDOS42MDIzNTY0MiwxOC4xNTgyOTIxIDkuMDQ2MzcxNDIsMTguMDU5NzgxOCA4LjU1MjUyMzU3LDE3LjkyODc5OCBDOC4wNTg5NjA3NSwxNy43OTc2NDIxIDcuNTQ4OTIzMDMsMTcuNTg0Nzg2MyA3LjAyMjc1MjQ2LDE3LjI4OTY1NjkgQzYuNDk2Mjk2ODUsMTYuOTk0OTI5MSA2LjA1OTU2OTU4LDE2LjYyODk0MzQgNS43MTI0NTY2MiwxNi4xOTIzMzA5IEM1LjM2NTI4NjY1LDE1Ljc1NTQ4ODkgNS4wODAzNjc4NSwxNS4xODE5ODMxIDQuODU4MDk5MjYsMTQuNDcyMzMgQzQuNjM1NzE2NjYsMTMuNzYyMzkgNC41MjQ0OTY4NiwxMi45NDM0NDAzIDQuNTI0NDk2ODYsMTIuMDE1MjUxNCBDNC41MjQ0OTY4NiwxMC42OTM2NTIzIDQuOTUzMTg2MjEsOS41NjkwMTY0MiA1LjgxMDM5Mzg5LDguNjQwNzEyNzggQzUuNDA4ODM5NjcsNy42NDcxMTgwNyA1LjQ0Njc0OTAzLDYuNTMzMjY4NDYgNS45MjQyMzYsNS4yOTkyNzg2OCBDNi4yMzg5MTIyMiw1LjIwMDg4MzA4IDYuNzA1NTY3OTQsNS4yNzQ3MjI4MSA3LjMyMzk3NTE0LDUuNTIwMzM4ODcgQzcuOTQyNDk2MzQsNS43NjYwNjk2OCA4LjM5NTM1NjQ3LDUuOTc2NTczMTQgOC42ODMwMTE1OSw2LjE1MTEwMzQxIEM4Ljk3MDY2NjcsNi4zMjU1NzYzIDkuMjAxMTQ0MjQsNi40NzM0Mjc4NyA5LjM3NDc4NjIzLDYuNTkzMzM4NTQgQzEwLjM4NDA4NzQsNi4zMDk1MTE3MSAxMS40MjU2NTQzLDYuMTY3NTY5NjEgMTIuNDk5NzcyLDYuMTY3NTY5NjEgQzEzLjU3Mzg4OTYsNi4xNjc1Njk2MSAxNC42MTU2ODQ2LDYuMzA5NTExNzEgMTUuNjI1MDQyOCw2LjU5MzMzODU0IEwxNi4yNDM1MDcsNi4yMDAzODcyNiBDMTYuNjY2NDM4Niw1LjkzODE5MDI1IDE3LjE2NTg3MzEsNS42OTc5MDk5MyAxNy43NDA2MTMzLDUuNDc5NDg4OTIgQzE4LjMxNTY5NTUsNS4yNjExODI2NiAxOC43NTU0NDQxLDUuMjAxMDU1MiAxOS4wNTk0MDMxLDUuMjk5NDUwOCBDMTkuNTQ3NDkzMyw2LjUzMzQ5Nzk1IDE5LjU5MDk4OTMsNy42NDcyOTAxOSAxOS4xODkzMjExLDguNjQwODg0OSBDMjAuMDQ2NDcxNyw5LjU2OTE4ODU0IDIwLjQ3NTMzMjEsMTAuNjk0MTExMiAyMC40NzUzMzIxLDEyLjAxNTQyMzUgQzIwLjQ3NTMzMjEsMTIuOTQzNjEyNCAyMC4zNjM3MTMzLDEzLjc2NTE0MzkgMjAuMTQxNjcyNywxNC40ODA1MzQ0IEMxOS45MTkzNDcxLDE1LjE5NjAzOTYgMTkuNjMxOTc3LDE1Ljc2ODk3MTcgMTkuMjc5NDQ4NSwxNi4yMDA1MzUzIEMxOC45MjY1MjA4LDE2LjYzMjA0MTYgMTguNDg3MDAwMiwxNi45OTUxNTg2IDE3Ljk2MDgyOTcsMTcuMjg5ODI5MSBDMTcuNDM0NTQ1MSwxNy41ODQ3MjkgMTYuOTI0MzM2MywxNy43OTc1ODQ4IDE2LjQzMDc3MzUsMTcuOTI4NzQwNiBDMTUuOTM2OTgyNywxOC4wNTk4OTY1IDE1LjM4MDk5NzcsMTguMTU4NDY0MiAxNC43NjI1OTA1LDE4LjIyMzk4NDggQzE1LjMyNjYxMzQsMTguNzE1MjE2OSAxNS42MDg2ODE5LDE5LjQ5MDYyMDEgMTUuNjA4NjgxOSwyMC41NDk4NTAxIEwxNS42MDg2ODE5LDI0LjAwNTg1OTIgQzE1LjYwODY4MTksMjQuMjAyMTkxNCAxNS42NzY1MTk3LDI0LjM2NjEwNzUgMTUuODEyMzA5MywyNC40OTcwOTEzIEMxNS45NDc5Mjc5LDI0LjYyNzg0NTUgMTYuMTYyMTAxNiwyNC42NjYzNDMyIDE2LjQ1NTExNTMsMjQuNjExNTUxNSBDMTguOTcyNjk2MSwyMy43NzA4NTcyIDIxLjAyNjE4NjUsMjIuMjU1Njc5OCAyMi42MTU3MDA1LDIwLjA2NjA3NjYgQzI0LjIwNTA0MzUsMTcuODc2NjQ1NSAyNSwxNS40MTE1OTIgMjUsMTIuNjcwMjg0OSBDMjQuOTk5NDI5OSwxMC4zODg0ODI1IDI0LjQ0MDMwOTYsOC4yODM4NDk0NSAyMy4zMjMyMDksNi4zNTYzODU4OCBaIiBpZD0iU2hhcGUiPjwvcGF0aD4KICAgICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+" alt="GitHub Logo"/></a></li><li><a href="https://openj9.slack.com/" rel="noopener noreferrer" target="_blank"><img src="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIyNXB4IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgogPCEtLSBDcmVhdGVkIHdpdGggTWV0aG9kIERyYXcgLSBodHRwOi8vZ2l0aHViLmNvbS9kdW9waXhlbC9NZXRob2QtRHJhdy8gLS0+CgogPGc+CiAgPHRpdGxlPmJhY2tncm91bmQ8L3RpdGxlPgogIDxyZWN0IGZpbGw9Im5vbmUiIGlkPSJjYW52YXNfYmFja2dyb3VuZCIgaGVpZ2h0PSIyNiIgd2lkdGg9IjI2IiB5PSItMSIgeD0iLTEiLz4KICA8ZyBkaXNwbGF5PSJub25lIiBvdmVyZmxvdz0idmlzaWJsZSIgeT0iMCIgeD0iMCIgaGVpZ2h0PSIxMDAlIiB3aWR0aD0iMTAwJSIgaWQ9ImNhbnZhc0dyaWQiPgogICA8cmVjdCBmaWxsPSJ1cmwoI2dyaWRwYXR0ZXJuKSIgc3Ryb2tlLXdpZHRoPSIwIiB5PSIxIiB4PSIxIiBoZWlnaHQ9IjIyIiB3aWR0aD0iMjIiLz4KICA8L2c+CiA8L2c+CiA8Zz4KICA8dGl0bGU+TGF5ZXIgMTwvdGl0bGU+CiAgPGVsbGlwc2Ugcnk9IjExIiByeD0iMTEiIGlkPSJzdmdfMSIgY3k9IjEyIiBjeD0iMTIiIHN0cm9rZT0iI0ZGRiIgZmlsbD0iI0ZGRkZGRiIvPgogIDxzdHlsZSB0cmFuc2Zvcm09Im1hdHJpeCgwLjA2NTE4MjQ5NTU3MzI1MzYyLDAsMCwwLjA2NTE4MjQ5NTU3MzI1MzYyLDAsMCkgIiB0eXBlPSJ0ZXh0L2NzcyI+LnN0MHtmaWxsOiM0MzQzNDM7fTwvc3R5bGU+CiAgPGcgc3Ryb2tlPSJudWxsIiBpZD0ic3ZnXzE5Ij4KICAgPGcgc3Ryb2tlPSJudWxsIiB0cmFuc2Zvcm09Im1hdHJpeCgwLjEzMDE1NTgwODUxODA5NDg2LDAsMCwwLjEzMDE1NTgwODUxODA5NDg2LC02Ljg0OTAwNjQ1MDQwNTQ5OSwtNi44MzE1MDczOTEwMjE5MjQpICIgaWQ9InN2Z182Ij4KICAgIDxnIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z183Ij4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfOCIgZD0ibTExMC4yOTgyOTIsMTYxLjI5MzAxMWMwLDcuMSAtNS44LDEyLjkgLTEyLjksMTIuOXMtMTIuOSwtNS44IC0xMi45LC0xMi45YzAsLTcuMSA1LjgsLTEyLjkgMTIuOSwtMTIuOWwxMi45LDBsMCwxMi45eiIgY2xhc3M9InN0MCIvPgogICAgIDxwYXRoIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z185IiBkPSJtMTE2Ljc5ODI5MiwxNjEuMjkzMDExYzAsLTcuMSA1LjgsLTEyLjkgMTIuOSwtMTIuOXMxMi45LDUuOCAxMi45LDEyLjlsMCwzMi4zYzAsNy4xIC01LjgsMTIuOSAtMTIuOSwxMi45cy0xMi45LC01LjggLTEyLjksLTEyLjljMCwwIDAsLTMyLjMgMCwtMzIuM3oiIGNsYXNzPSJzdDAiLz4KICAgIDwvZz4KICAgIDxnIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z18xMCI+CiAgICAgPHBhdGggc3Ryb2tlPSJudWxsIiBpZD0ic3ZnXzExIiBkPSJtMTI5LjY5ODI5MiwxMDkuNDkzMDExYy03LjEsMCAtMTIuOSwtNS44IC0xMi45LC0xMi45czUuOCwtMTIuOSAxMi45LC0xMi45czEyLjksNS44IDEyLjksMTIuOWwwLDEyLjlsLTEyLjksMHoiIGNsYXNzPSJzdDAiLz4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTIiIGQ9Im0xMjkuNjk4MjkyLDExNS45OTMwMTFjNy4xLDAgMTIuOSw1LjggMTIuOSwxMi45cy01LjgsMTIuOSAtMTIuOSwxMi45bC0zMi4zLDBjLTcuMSwwIC0xMi45LC01LjggLTEyLjksLTEyLjlzNS44LC0xMi45IDEyLjksLTEyLjljMCwwIDMyLjMsMCAzMi4zLDB6IiBjbGFzcz0ic3QwIi8+CiAgICA8L2c+CiAgICA8ZyBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTMiPgogICAgIDxwYXRoIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z18xNCIgZD0ibTE4MS40OTgyOTIsMTI4Ljg5MzAxMWMwLC03LjEgNS44LC0xMi45IDEyLjksLTEyLjljNy4xLDAgMTIuOSw1LjggMTIuOSwxMi45cy01LjgsMTIuOSAtMTIuOSwxMi45bC0xMi45LDBsMCwtMTIuOXoiIGNsYXNzPSJzdDAiLz4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTUiIGQ9Im0xNzQuOTk4MjkyLDEyOC44OTMwMTFjMCw3LjEgLTUuOCwxMi45IC0xMi45LDEyLjljLTcuMSwwIC0xMi45LC01LjggLTEyLjksLTEyLjlsMCwtMzIuM2MwLC03LjEgNS44LC0xMi45IDEyLjksLTEyLjljNy4xLDAgMTIuOSw1LjggMTIuOSwxMi45bDAsMzIuM3oiIGNsYXNzPSJzdDAiLz4KICAgIDwvZz4KICAgIDxnIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z18xNiI+CiAgICAgPHBhdGggc3Ryb2tlPSJudWxsIiBpZD0ic3ZnXzE3IiBkPSJtMTYyLjA5ODI5MiwxODAuNjkzMDExYzcuMSwwIDEyLjksNS44IDEyLjksMTIuOWMwLDcuMSAtNS44LDEyLjkgLTEyLjksMTIuOWMtNy4xLDAgLTEyLjksLTUuOCAtMTIuOSwtMTIuOWwwLC0xMi45bDEyLjksMHoiIGNsYXNzPSJzdDAiLz4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTgiIGQ9Im0xNjIuMDk4MjkyLDE3NC4xOTMwMTFjLTcuMSwwIC0xMi45LC01LjggLTEyLjksLTEyLjljMCwtNy4xIDUuOCwtMTIuOSAxMi45LC0xMi45bDMyLjMsMGM3LjEsMCAxMi45LDUuOCAxMi45LDEyLjljMCw3LjEgLTUuOCwxMi45IC0xMi45LDEyLjlsLTMyLjMsMHoiIGNsYXNzPSJzdDAiLz4KICAgIDwvZz4KICAgPC9nPgogIDwvZz4KIDwvZz4KPC9zdmc+" alt="Slack logo"/></a></li><li><a href="https://stackoverflow.com/search?q=%23OpenJ9" rel="noopener noreferrer" target="_blank"><img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjRweCIgaGVpZ2h0PSIyNHB4IiB2aWV3Qm94PSIwIDAgNjUgNzAiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5zdGFja292ZXJmbG93LWxvZ288L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0iI0ZGRkZGRiIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0ic3RhY2tvdmVyZmxvdy1sb2dvIiBmaWxsLXJ1bGU9Im5vbnplcm8iPgogICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgZmlsbD0iI0ZGRkZGRiIgcG9pbnRzPSI1NC4yNDE3MjY2IDYzLjc3MDIyNjUgNTQuMjQxNzI2NiA0NSA2MSA0NSA2MSA3MCAwIDcwIDAgNDUgNi43NTgyNzMzOCA0NSA2Ljc1ODI3MzM4IDYzLjc3MDIyNjUiPjwvcG9seWdvbj4KICAgICAgICAgICAgPHBhdGggZD0iTTE0LjcwNzEwNTcsNDMuNjQyNzU2NyBMNDguMTE3ODUxLDUwLjA4NzIwMTEgTDQ5LjUzMjA2MjQsNDMuODg3NDgyNCBMMTYuMTIxMzE3MiwzNy40NDMwMzggTDE0LjcwNzEwNTcsNDMuNjQyNzU2NyBMMTQuNzA3MTA1Nyw0My42NDI3NTY3IFogTTE5LjEyNjUxNjUsMjguOTU5MjEyNCBMNTAuMDYyMzkxNyw0Mi4yNTU5Nzc1IEw1Mi44OTA4MTQ2LDM2LjU0NTcxMDMgTDIxLjk1NDkzOTMsMjMuMTY3MzY5OSBMMTkuMTI2NTE2NSwyOC45NTkyMTI0IFogTTI3LjcwMDE3MzMsMTQuOTI4MjcgTDUzLjk1MTQ3MzEsMzUuMDc3MzU1OCBMNTguMjgyNDk1NywzMC4yNjQ0MTYzIEwzMi4wMzExOTU4LDEwLjExNTMzMDUgTDI3LjcwMDE3MzMsMTQuOTI4MjcgTDI3LjcwMDE3MzMsMTQuOTI4MjcgWiBNNDQuNjcwNzEwNiwwIEwzOS4xOTA2NDEyLDMuNzUyNDYxMzIgTDU5LjUxOTkzMDcsMjkuMDQwNzg3NiBMNjUsMjUuMjg4MzI2MyBMNDQuNjcwNzEwNiwwIFogTTE0LDU4IEw0OC4xMTc4NTEsNTggTDQ4LjExNzg1MSw1MS43MTg3MDYgTDE0LDUxLjcxODcwNiBMMTQsNTggWiIgaWQ9IlNoYXBlIiBmaWxsPSIjRkZGRkZGIj48L3BhdGg+CiAgICAgICAgPC9nPgogICAgPC9nPgo8L3N2Zz4KCgo=" alt="Stack Overflow logo"/></a></li></ul></nav></header><style data-emotion-css="loin3l">.css-loin3l{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:fixed;width:100%;bottom:0;background-color:white;height:3rem;box-shadow:0 10px 30px grey;z-index:9999;}@media screen and (min-width:560px){.css-loin3l{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}}@media screen and (min-width:1000px){.css-loin3l{display:none;}}@media screen and (min-width:1366px){.css-loin3l{display:none;}}</style><nav class="css-loin3l"><style data-emotion-css="94xmc6">.css-94xmc6{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;list-style:none;-webkit-box-pack:space-evenly;-webkit-justify-content:space-evenly;-ms-flex-pack:space-evenly;justify-content:space-evenly;width:100%;}.css-94xmc6 li a{color:black;-webkit-text-decoration:none;text-decoration:none;}.css-94xmc6 li:first-of-type{margin-left:0;}.css-94xmc6 li:last-child{margin-right:0;padding-right:0;}</style><ul class="css-94xmc6"><li><a href="/openj9/">Home</a></li><li><a href="/openj9/about">About</a> </li><li><a href="https://www.eclipse.org/openj9/docs/" rel="noopener noreferrer" target="_blank">Docs</a> </li><li><a href="/openj9/performance">Performance</a> </li><li><a href="/openj9/news">News</a> </li></ul></nav><style data-emotion-css="8ent5q">.css-8ent5q{background-color:#F5F9FC;padding-left:10%;padding-right:10%;padding-top:3%;padding-bottom:1%;}</style><div class="css-8ent5q"><style data-emotion-css="acwcvw">.css-acwcvw{margin-bottom:1rem;}</style><style data-emotion-css="37umsu">.css-37umsu{font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.125;font-weight:700;margin-top:16px;margin-bottom:16px;font-size:36px;margin-bottom:1rem;}</style><h1 class="css-37umsu">Performance Overview</h1><style data-emotion-css="fza3g9">.css-fza3g9{margin-bottom:40px;font-size:18px;}</style><p class="css-fza3g9">Application performance can be measured using many different metrics, including startup time, ramp-up time, footprint, and response time, as well as throughput. At Eclipse OpenJ9, we keep a watchful eye on all of these metrics, making sensible tradeoffs and providing tuning options that allow the virtual machine (VM) to be optimized for different workloads.</p></div><style data-emotion-css="ubyhhb">.css-ubyhhb{background-color:#F5F9FC;padding-left:10%;padding-right:10%;padding-top:1%;padding-bottom:3%;}</style><div class="css-ubyhhb"><style data-emotion-css="1v4dyq7">.css-1v4dyq7{font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.125;font-weight:700;margin-top:16px;margin-bottom:16px;font-size:28px;}</style><h2 class="css-1v4dyq7">OpenJDK 8 performance with Eclipse OpenJ9</h2><style data-emotion-css="cet0rr">.css-cet0rr{margin-bottom:0.5rem;}</style><style data-emotion-css="qgyt1l">.css-qgyt1l{margin-bottom:40px;font-size:18px;margin-bottom:0.5rem;}</style><p class="css-qgyt1l">The result is that OpenJDK 8 with OpenJ9 demonstrates significantly better performance than with Hotspot.</p><style data-emotion-css="1nvf2ph">.css-1nvf2ph{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:space-around;-webkit-justify-content:space-around;-ms-flex-pack:space-around;justify-content:space-around;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;}</style><div class="css-1nvf2ph"><style data-emotion-css="plcak4">.css-plcak4{box-shadow:#DADADA 0 0 20px;border-radius:10px;background-color:var(--theme-ui-colors-primary,#434343);color:white;margin-top:40px;margin-bottom:40px;margin-left:8px;margin-right:8px;width:18rem;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}</style><div class="css-plcak4"><style data-emotion-css="1hio5pu">.css-1hio5pu{font-size:1.1rem;margin:0.5rem 1rem 0.5rem 1rem;text-align:center;height:3rem;}</style><h5 class="css-1hio5pu">66% smaller footprint after startup</h5><div><canvas height="220" width="250"></canvas></div><style data-emotion-css="8naj0n">.css-8naj0n{box-shadow-bottom:cardShadow;border-bottom-right-radius:10px;border-bottom-left-radius:10px;background-color:white;border-top:5px solid #5DA7A3;color:var(--theme-ui-colors-darkText,#4d4f50);height:50%;padding:4rem 1rem;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:100%;margin-bottom:-4rem;margin-top:1rem;}</style><div class="css-8naj0n"><p>OpenJ9 is highly optimized for cloud workloads, where minimizing memory footprint is important. Out of the box, the footprint is 66% smaller than HotSpot.</p></div></div><div class="css-plcak4"><style data-emotion-css="1s2mfp0">.css-1s2mfp0{font-size:1.1rem;margin:0.5rem 1.5rem 0.5rem 1.5rem;text-align:center;height:3rem;}</style><h5 class="css-1s2mfp0">63% smaller footprint during ramp up</h5><div><canvas height="220" width="250"></canvas></div><div class="css-8naj0n"><p>Memory footprint increases rapidly when load is applied. However, at steady state, OpenJ9 consistently used around 63% less physical memory than HotSpot.</p></div></div><div class="css-plcak4"><h5 class="css-1hio5pu">42% faster startup time</h5><div><canvas height="220" width="250"></canvas></div><div class="css-8naj0n"><p>Shared classes and Ahead-of-Time (AOT) technologies typically reduce startup time. By using -Xquickstart mode as well, you can reduce startup time by up to 42%.</p></div></div><div class="css-plcak4"><h5 class="css-1s2mfp0">Faster ramp-up time in the cloud</h5><div><canvas height="220" width="250"></canvas></div><div class="css-8naj0n"><p>OpenJ9 reaches peak throughput on a single CPU core in 8.5 minutes compared with 30 minutes for Hotspot. Ideal for short-lived VMs running in the cloud.</p></div></div></div><style data-emotion-css="hqj7sj">.css-hqj7sj{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;padding-bottom:5%;}</style><div class="css-hqj7sj"><style data-emotion-css="13o8r5h">.css-13o8r5h{background-color:var(--theme-ui-colors-secondary,#5DA7A3);color:white;border-radius:35px;height:35px;width:16rem;border:none;font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';font-size:16px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-text-decoration:none;text-decoration:none;margin-top:5rem;}.css-13o8r5h:hover{cursor:pointer;background-color:var(--theme-ui-colors-secondaryDark,#5d9da3);border-color:var(--theme-ui-colors-secondaryDark,#5d9da3);-webkit-text-decoration:none;text-decoration:none;color:white;}</style><a href="https://github.com/eclipse/openj9-website/blob/master/benchmark/daytrader7.md" rel="noopener noreferrer" target="_blank" class="css-13o8r5h">Read more performance details</a></div></div><style data-emotion-css="15xf14k">.css-15xf14k{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;background-color:var(--theme-ui-colors-primary,#434343);color:white;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:1rem;padding-bottom:3rem;-webkit-flex-direction:reverse-column;-ms-flex-direction:reverse-column;flex-direction:reverse-column;}@media screen and (min-width:560px){.css-15xf14k{padding-bottom:3rem;}}@media screen and (min-width:1000px){.css-15xf14k{padding-bottom:0;}}@media screen and (min-width:1366px){.css-15xf14k{padding-bottom:0;}}</style><footer class="css-15xf14k"><style data-emotion-css="o3kt9a">.css-o3kt9a{-webkit-flex:50%;-ms-flex:50%;flex:50%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}@media screen and (min-width:560px){.css-o3kt9a{display:none;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}}@media screen and (min-width:1000px){.css-o3kt9a{display:none;-webkit-align-items:flex-end;-webkit-box-align:flex-end;-ms-flex-align:flex-end;align-items:flex-end;}}@media screen and (min-width:1366px){.css-o3kt9a{display:none;-webkit-align-items:flex-end;-webkit-box-align:flex-end;-ms-flex-align:flex-end;align-items:flex-end;}}</style><section class="css-o3kt9a"><a href="https://wiki.eclipse.org/Development_Resources/Process_Guidelines/What_is_Incubation" rel="noopener noreferrer" target="_blank"><img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNTBweCIgaGVpZ2h0PSI3NXB4IiB2aWV3Qm94PSIwIDAgMTU3IDIzMSIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KICAgIDwhLS0gR2VuZXJhdG9yOiBTa2V0Y2ggNjEuMiAoODk2NTMpIC0gaHR0cHM6Ly9za2V0Y2guY29tIC0tPgogICAgPHRpdGxlPmVjbGlwc2VfaW5jdWJhdGlvbl92ZXJ0aWNhbF9zdmc8L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0iZWNsaXBzZV9pbmN1YmF0aW9uX3ZlcnRpY2FsX3N2ZyIgZmlsbC1ydWxlPSJub256ZXJvIj4KICAgICAgICAgICAgPGcgaWQ9Ikdyb3VwIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNy4wMDAwMDAsIDIxNC4wMDAwMDApIiBmaWxsPSIjRkZGRkZGIj4KICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJQYXRoIiBwb2ludHM9IjAuNzUgMC4zNCAxLjkyIDAuMzQgMS45MiAxNi4wMyAwLjc1IDE2LjAzIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSI1LjYyIDAuMzQgNi43MiAwLjM0IDE3LjU1IDEzLjk5IDE3LjU1IDAuMzQgMTguNjcgMC4zNCAxOC42NyAxNi4wMyAxNy44IDE2LjAzIDYuNzUgMi4wOSA2Ljc1IDE2LjAzIDUuNjMgMTYuMDMgNS42MyAwLjM0Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMjEuODYsOC4yMyBMMjEuODYsOC4xOSBDMjEuODYsMy43NSAyNS4xOCwwLjA4IDI5LjcxLDAuMDggQzMyLjUxLDAuMDggMzQuMTksMS4xMSAzNS44MSwyLjU5IEwzNC45OCwzLjQ0IEMzMy42MSwyLjEyIDMyLjA0LDEuMTMgMjkuNjksMS4xMyBDMjUuOTIsMS4xMyAyMy4wOCw0LjIgMjMuMDgsOC4xNSBMMjMuMDgsOC4xOSBDMjMuMDgsMTIuMTYgMjUuOTcsMTUuMjUgMjkuNzEsMTUuMjUgQzMxLjk3LDE1LjI1IDMzLjUyLDE0LjM3IDM1LjExLDEyLjgxIEwzNS44OSwxMy41NyBDMzQuMjMsMTUuMjEgMzIuNDQsMTYuMyAyOS42NiwxNi4zIEMyNS4xOCwxNi4zIDIxLjg2LDEyLjc0IDIxLjg2LDguMjMgWiIgaWQ9IlBhdGgiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0zOC40LDkuNTEgTDM4LjQsMC4zNCBMMzkuNTcsMC4zNCBMMzkuNTcsOS40IEMzOS41NywxMy4xIDQxLjU3LDE1LjIzIDQ0Ljg4LDE1LjIzIEM0OC4wNiwxNS4yMyA1MC4xLDEzLjMgNTAuMSw5LjUxIEw1MC4xLDAuMzQgTDUxLjI3LDAuMzQgTDUxLjI3LDkuMzcgQzUxLjI3LDEzLjg4IDQ4LjY1LDE2LjI3MDAzMTQgNDQuODQsMTYuMjcwMDMxNCBDNDEuMDcsMTYuMjggMzguNCwxMy45IDM4LjQsOS41MSBaIiBpZD0iUGF0aCI+PC9wYXRoPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTU0LjAyLDAuMzQgTDYwLjUsMC4zNCBDNjIuMjcsMC4zNCA2My43MSwwLjg2IDY0LjU4LDEuNzMgQzY1LjIzLDIuMzggNjUuNTksMy4yMSA2NS41OSw0LjIgTDY1LjU5LDQuMjQgQzY1LjU5LDYuMzcgNjQuMiw3LjQ1IDYyLjkyLDcuOTYgQzY0LjgsOC40NSA2Ni40Niw5LjUzIDY2LjQ2LDExLjcgTDY2LjQ2LDExLjc0IEM2Ni40NiwxNC4zNiA2NC4yMiwxNi4wMiA2MC44MywxNi4wMiBMNTQuMDIsMTYuMDIgTDU0LjAyLDAuMzQgTDU0LjAyLDAuMzQgWiBNNjQuNCw0LjMxIEM2NC40LDIuNTggNjIuOTksMS40MiA2MC40OCwxLjQyIEw1NS4xOSwxLjQyIEw1NS4xOSw3LjU4IEw2MC4zNyw3LjU4IEM2Mi43Miw3LjU4IDY0LjQsNi40NCA2NC40LDQuMzUgTDY0LjQsNC4zMSBaIE02MC41LDguNjYgTDU1LjE5LDguNjYgTDU1LjE5LDE0Ljk2IEw2MC44OCwxNC45NiBDNjMuNTcsMTQuOTYgNjUuMjcwMDQ0NCwxMy43MyA2NS4yNzAwNDQ0LDExLjc1IEw2NS4yNzAwNDQ0LDExLjcxIEM2NS4yOCw5Ljc4IDYzLjYsOC42NiA2MC41LDguNjYgWiIgaWQ9IlNoYXBlIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNzYuMjgsMC4yMyBMNzcuNCwwLjIzIEw4NC43MSwxNi4wMyBMODMuNDMsMTYuMDMgTDgxLjQ0LDExLjY0IEw3Mi4xOCwxMS42NCBMNzAuMTksMTYuMDMgTDY4Ljk4LDE2LjAzIEw3Ni4yOCwwLjIzIFogTTgwLjk0LDEwLjU5IEw3Ni44MiwxLjUxIEw3Mi42NywxMC41OSBMODAuOTQsMTAuNTkgWiIgaWQ9IlNoYXBlIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSI5MS4wNSAxLjQyIDg1LjU4IDEuNDIgODUuNTggMC4zNCA5Ny42OCAwLjM0IDk3LjY4IDEuNDIgOTIuMjEgMS40MiA5Mi4yMSAxNi4wMyA5MS4wNCAxNi4wMyA5MS4wNCAxLjQyIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSIxMDEuMjkgMC4zNCAxMDIuNDYgMC4zNCAxMDIuNDYgMTYuMDMgMTAxLjI5IDE2LjAzIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTA1LjkxLDguMjMgTDEwNS45MSw4LjE5IEMxMDUuOTEsMy45MSAxMDkuMDcsMC4wOCAxMTMuODIsMC4wOCBDMTE4LjU3LDAuMDggMTIxLjY5LDMuODcgMTIxLjY5LDguMTUgTDEyMS42OSw4LjE5IEMxMjEuNjksMTIuNDcgMTE4LjUzLDE2LjMgMTEzLjc4LDE2LjMgQzEwOS4wMywxNi4zIDEwNS45MSwxMi41MSAxMDUuOTEsOC4yMyBaIE0xMjAuNDgsOC4yMyBMMTIwLjQ4LDguMTkgQzEyMC40OCw0LjMxIDExNy42NiwxLjEzIDExMy43OCwxLjEzIEMxMDkuOSwxLjEzIDEwNy4xMiw0LjI3IDEwNy4xMiw4LjE1IEwxMDcuMTIsOC4xOSBDMTA3LjEyLDEyLjA3IDEwOS45NCwxNS4yNSAxMTMuODIsMTUuMjUgQzExNy43LDE1LjI1IDEyMC40OCwxMi4xMSAxMjAuNDgsOC4yMyBaIiBpZD0iU2hhcGUiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJQYXRoIiBwb2ludHM9IjEyNC44OSAwLjM0IDEyNS45OSAwLjM0IDEzNi44MiAxMy45OSAxMzYuODIgMC4zNCAxMzcuOTQgMC4zNCAxMzcuOTQgMTYuMDMgMTM3LjA3IDE2LjAzIDEyNi4wMiAyLjA5IDEyNi4wMiAxNi4wMyAxMjQuOSAxNi4wMyAxMjQuOSAwLjM0Ij48L3BvbHlnb24+CiAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgPHBhdGggZD0iTTU2LjY2LDE2Ni4yMyBDNTcuNTEsMTYzLjQ4IDYwLjQzLDE2MS40MyA2My45NCwxNjEuNDMgQzY1LjE0LDE2MS40MyA2Ni4yNSwxNjEuNjkgNjcuMjUsMTYyLjExIEM2OS40NiwxNjAuNjQgNzIuMTksMTU5Ljc2IDc1LjE3LDE1OS43NiBMNzUuMTksMTU5Ljc2IEM3Ni4xMSwxNTcuOSA3OC40OCwxNTYuNTcgODEuMywxNTYuNTcgQzgyLjA0LDE1Ni41NyA4Mi43NSwxNTYuNjcgODMuNDIsMTU2Ljg0IEM4My4zMywxNTQuNTYgODMuNjksMTUyLjE4IDg0LjU1LDE0OS42OCBDODUuNTUsMTQ2Ljc5IDg3LDE0NC4wMyA4OC41MiwxNDEuMjggQzg4LjE3LDEzNy4xNiA4Ny45LDEzMy41IDgyLjc0LDEzMiBDODAuODIsMTMxLjQ0IDc4LjgyLDEzMS4yNyA3Ni44NiwxMzEuMDQgTDc2Ljg1LDEzMS4wNCBMNzYuODUsMTMxLjAzIEM3Ni4wMSwxMzAuOTMgNzUuMTcsMTMwLjgxIDc0LjM1LDEzMC42NSBDNjAuMTgsMTQ1LjQxIDQwLjIsMTA5Ljk3IDQwLjIsMTA5Ljk3IEM4NC4zLDEwMy4xMyA3Ni4wMSwxMjUuNjEgNzYuMDEsMTI1LjYxIEM3Mi44MSwxMjQuMDUgNzEuOTMsMTIyLjA4IDY5LjQ5LDExOS43MyBDNjMuOTIsMTE0LjM4IDUwLjYyLDExMy40NCA1MC42MiwxMTMuNDQgQzY2LjU0LDExNy41MSA2OC43MSwxMjUuMjIgNzQuOTcsMTI3LjY5IEM3Ni4zOSwxMjguMDEgNzcuOSwxMjguMTMgNzkuMzUsMTI4LjI5IEM4Mi4xNSwxMjguNTkgODQuODksMTI5LjExIDg3LjIyLDEzMC42MSBDODkuNjMsMTMyLjE2IDkwLjcxLDEzNC4wOSA5MS4yNiwxMzYuMjYgQzkzLDEzMi45NCA5NC41LDEyOS41NiA5NS4wNywxMjUuOTIgQzk1LjgsMTIxLjI3IDk1LjEzLDExNS44OCA5MS44MywxMTIuMDcgQzg4Ljc4LDEwOC41NSA4NC42NiwxMDUuODkgODEuNCwxMDIuNTIgQzc3LjkyLDk4LjkxIDc1LjYxLDk0LjQ2IDc1LjUyLDg5LjcxIEM3My43Niw4NS44NiA3MC45LDgxLjM5IDY4LjI4LDc5LjY1IEM1Ni45LDkwLjM0IDQxLjksNjIuNTggNDEuOSw2Mi41OCBDNzYuODgsNTcuNyA3MS4xLDc1LjY3IDcxLjEsNzUuNjcgQzYyLjcsNjYuMjggNTIuMzEsNjcuMTIgNTIuMzEsNjcuMTIgQzYwLjcxLDY5Ljc5IDY3LjM0LDc1LjE1IDcxLjIsNzguODMgTDcxLjczLDc5LjM2IEM3My4zLDgxIDc0LjksODIuNzUgNzYuMjQsODQuNjMgQzc3LjYsNzkuNDggODAuNzcsNzIuMjcgODMuMjYsNjcuOTcgQzgzLjI2LDY3Ljk3IDkxLjY2LDUzLjE1IDEwNS44LDQzLjkgQzEwNS44LDQzLjkgOTUuMDIsNDUuMTQgODMuNDEsNjIuODkgQzgzLjQxLDYyLjg5IDY3Ljk5LDM4LjcgMTE3LjgzLDM0LjIzIEMxMTcuODMsMzQuMjMgMTE0LjQsNzguMTcgODcuNDUsNjkuNjMgQzgyLjc3LDc2LjY3IDc5LjcsODQuNzQgODAuMzMsOTAuNDIgQzgwLjk1LDk1Ljk2IDg0LjgzLDk5Ljg2IDg5LjExLDEwMy41IEM5MC4yNSw5Ny42NiA5NC40Niw5Mi42MyAxMDAuNjUsODkuODkgQzEwNS42LDg3LjkyIDExMi45LDg2LjAzIDExOS43Miw4NS42MiBDMTE5LjcyLDg1LjYyIDEwNi4zOSw4Mi41OCA5Ni4yNSw4OS41MSBDOTYuMjUsODkuNTEgOTYuNDIsNjkuMjIgMTMyLjM0LDgzLjk1IEMxMzIuMzQsODMuOTUgMTA2LjM0LDExMC4yOSA5Ny45OSw5NC41OSBDOTQuMDMsOTcuMiA5MS41MywxMDEuNTggOTIuMTgsMTA2LjExIEM5NC41LDEwOC4xNCA5Ni42NiwxMTAuMzMgOTcuOTcsMTEzLjAzIEM5OS44LDExNi44MiAxMDAuNDUsMTIxLjI0IDk5Ljk1LDEyNS4zNSBDOTguOTksMTMzLjI1IDk0LjA1LDEzOS45NyA5MC42NywxNDcuMTQgQzg5LjI5LDE1MC4wNiA4Ny45NywxNTMuMjcgODcuOTUsMTU2LjUxIEM4OS42NCwxNTYuMDQgOTEuNDcsMTU1Ljc4IDkzLjM5LDE1NS43OCBDMTAwLjYyLDE1NS43OCAxMDYuNzEsMTU5LjM3IDEwOC42OCwxNjQuMyBDMTExLjYxLDE2NC42MSAxMTMuOTIsMTY2LjMzIDExNC4zNCwxNjguNTEgQzExNi40NSwxNjkuODEgMTE4LjEyLDE3MS42MyAxMTkuMTMsMTczLjc1IEw1MC41NSwxNzMuNzUgQzUyLjAyLDE3MC42MiA1NC4xNCwxNjcuMTYgNTYuNjYsMTY2LjIzIiBpZD0iUGF0aCIgZmlsbD0iI0Y3OEQyQyI+PC9wYXRoPgogICAgICAgICAgICA8ZyBpZD0iR3JvdXAiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE3LjAwMDAwMCwgMTgyLjAwMDAwMCkiIGZpbGw9IiNGRkZGRkYiPgogICAgICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlBhdGgiIHBvaW50cz0iMC41NCAxLjM5IDE4LjU0IDEuMzkgMTguNTQgNS4yMSA0LjggNS4yMSA0LjggMTEuNTIgMTYuOTcgMTEuNTIgMTYuOTcgMTUuMzMgNC44IDE1LjMzIDQuOCAyMS44NSAxOC43MSAyMS44NSAxOC43MSAyNS42NyAwLjU0IDI1LjY3Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMjEuNTUsMTMuNiBMMjEuNTUsMTMuNTMgQzIxLjU1LDYuNjMgMjYuNzIsMC45NyAzNC4wNywwLjk3IEMzOC41NCwwLjk3IDQxLjI1LDIuNTMgNDMuNTcsNC43NSBMNDAuODMsNy45MSBDMzguODksNi4xMSAzNi44MSw0Ljg5IDM0LjAzLDQuODkgQzI5LjQyLDQuODkgMjYuMDIsOC43MSAyNi4wMiwxMy40NiBMMjYuMDIsMTMuNTMgQzI2LjAyLDE4LjI4IDI5LjM4LDIyLjEzIDM0LjAzLDIyLjEzIEMzNy4wMSwyMi4xMyAzOC45MiwyMC45NSA0MSwxOS4wMSBMNDMuNzQsMjEuNzggQzQxLjIxLDI0LjQyIDM4LjQzLDI2LjA4MDAxMzYgMzMuODksMjYuMDgwMDEzNiBDMjYuODMsMjYuMDkgMjEuNTUsMjAuNTcgMjEuNTUsMTMuNiBaIiBpZD0iUGF0aCI+PC9wYXRoPgogICAgICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlBhdGgiIHBvaW50cz0iNDcuMjIgMS4zOSA1MS40OSAxLjM5IDUxLjQ5IDIxLjc4IDY0LjI1IDIxLjc4IDY0LjI1IDI1LjY2IDQ3LjIyIDI1LjY2Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSI2Ny45MyAxLjM5IDcyLjIgMS4zOSA3Mi4yIDI1LjY3IDY3LjkzIDI1LjY3Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNzcuNjcsMS4zOSBMODcuMjQsMS4zOSBDOTIuOTMsMS4zOSA5Ni40Nyw0LjYyIDk2LjQ3LDkuNTEgTDk2LjQ3LDkuNTggQzk2LjQ3LDE1LjAzIDkyLjEsMTcuODcgODYuNzYsMTcuODcgTDgxLjk0LDE3Ljg3IEw4MS45NCwyNS42NyBMNzcuNjcsMjUuNjcgTDc3LjY3LDEuMzkgWiBNODYuOSwxNC4wMiBDOTAuMTMsMTQuMDIgOTIuMTQsMTIuMjIgOTIuMTQsOS42OCBMOTIuMTQsOS42MSBDOTIuMTQsNi43NyA5MC4wOSw1LjI4IDg2LjksNS4yOCBMODEuOTQsNS4yOCBMODEuOTQsMTQuMDIgTDg2LjksMTQuMDIgWiIgaWQ9IlNoYXBlIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNOTguMjEsMjIuMTMgTDEwMC43OCwxOS4wOCBDMTAzLjEsMjEuMDkgMTA1LjQ2LDIyLjI0IDEwOC40NSwyMi4yNCBDMTExLjA5LDIyLjI0IDExMi43NSwyMC45OSAxMTIuNzUsMTkuMTkgTDExMi43NSwxOS4xMiBDMTEyLjc1LDE3LjM5IDExMS43OCwxNi40NSAxMDcuMjcsMTUuNDEgQzEwMi4xLDE0LjE2IDk5LjE5LDEyLjY0IDk5LjE5LDguMTYgTDk5LjE5LDguMDkgQzk5LjE5LDMuOTMgMTAyLjY2LDEuMDUgMTA3LjQ4LDEuMDUgQzExMS4wMiwxLjA1IDExMy44MywyLjEzIDExNi4yOSw0LjEgTDExNCw3LjMzIEMxMTEuODEsNS43IDEwOS42Myw0LjgzIDEwNy40MSw0LjgzIEMxMDQuOTEsNC44MyAxMDMuNDYsNi4xMSAxMDMuNDYsNy43MSBMMTAzLjQ2LDcuNzggQzEwMy40Niw5LjY1IDEwNC41NywxMC40OSAxMDkuMjUsMTEuNiBDMTE0LjM4LDEyLjg1IDExNy4wMiwxNC42OSAxMTcuMDIsMTguNzEgTDExNy4wMiwxOC43OCBDMTE3LjAyLDIzLjMyIDExMy40NSwyNi4wMyAxMDguMzUsMjYuMDMgQzEwNC42MiwyNi4wMiAxMDEuMTIsMjQuNzMgOTguMjEsMjIuMTMgWiIgaWQ9IlBhdGgiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJQYXRoIiBwb2ludHM9IjEyMC45OSAxLjM5IDEzOC45OSAxLjM5IDEzOC45OSA1LjIxIDEyNS4yNiA1LjIxIDEyNS4yNiAxMS41MiAxMzcuNDMgMTEuNTIgMTM3LjQzIDE1LjMzIDEyNS4yNiAxNS4zMyAxMjUuMjYgMjEuODUgMTM5LjE3IDIxLjg1IDEzOS4xNyAyNS42NyAxMjEgMjUuNjcgMTIxIDEuMzkiPjwvcG9seWdvbj4KICAgICAgICAgICAgPC9nPgogICAgICAgICAgICA8cGF0aCBkPSJNMjEuNjYsMzkuOTkgQzQxLjI2LDkuNDIgODAuNSwtMS4yNSAxMTMuMjMsMTMuNDQgQzExMi41MSwxMi45NCAxMTEuNzgsMTIuNDMgMTExLjAzLDExLjk1IEM3Ny41MiwtOS41NCAzMi45OCwwLjExIDExLjU2LDMzLjUyIEMtOS44Nyw2Ni45MiAtMC4wNiwxMTEuNDMgMzMuNDUsMTMyLjkyIEMzNC4yLDEzMy40IDM0Ljk2LDEzMy44NSAzNS43MiwxMzQuMyBDOC43MywxMTAuNjggMi4wNiw3MC41NiAyMS42NiwzOS45OSIgaWQ9IlBhdGgiIGZpbGw9IiNGNzhEMkMiPjwvcGF0aD4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==" alt="Eclipse Incubator Logo"/></a><style data-emotion-css="1uno72p">.css-1uno72p{font-size:0.9rem;}</style><style data-emotion-css="2r9mng">.css-2r9mng{font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.125;font-weight:700;margin-top:16px;margin-bottom:16px;font-size:16px;font-size:0.9rem;}</style><h6 class="css-2r9mng">OpenJ9 is an Eclipse Incubator Project</h6></section><style data-emotion-css="90v6js">.css-90v6js{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex:100%;-ms-flex:100%;flex:100%;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;}@media screen and (min-width:560px){.css-90v6js{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex:50%;-ms-flex:50%;flex:50%;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;}}@media screen and (min-width:1000px){.css-90v6js{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex:50%;-ms-flex:50%;flex:50%;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;}}@media screen and (min-width:1366px){.css-90v6js{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex:50%;-ms-flex:50%;flex:50%;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;}}.css-90v6js a{color:white;-webkit-text-decoration:none;text-decoration:none;}.css-90v6js a:hover{color:var(--theme-ui-colors-links,#5DA7A3);}</style><nav class="css-90v6js"><style data-emotion-css="hkdp8o">.css-hkdp8o{-webkit-flex:1;-ms-flex:1;flex:1;padding-left:2rem;margin-right:1.1rem;padding:1rem;font-size:1rem;}@media screen and (min-width:560px){.css-hkdp8o{padding-left:0.8rem;padding:0;font-size:0.9rem;}}@media screen and (min-width:1000px){.css-hkdp8o{padding-left:0.8rem;font-size:1rem;}}@media screen and (min-width:1366px){.css-hkdp8o{padding-left:0.8rem;font-size:1rem;}}</style><section class="css-hkdp8o"><style data-emotion-css="1p7eyhh">.css-1p7eyhh{margin-bottom:0.2rem;}</style><style data-emotion-css="shyl6e">.css-shyl6e{font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.125;font-weight:700;margin-top:16px;margin-bottom:16px;font-size:20px;margin-bottom:0.2rem;}</style><h4 class="css-shyl6e">Docs</h4><style data-emotion-css="1l04qsy">.css-1l04qsy{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;list-style:none;-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}.css-1l04qsy li{padding:0;}.css-1l04qsy li:first-of-type{margin-left:0;}.css-1l04qsy li:last-child{margin-right:0;padding-right:0;}</style><ul class="css-1l04qsy"><li><style data-emotion-css="14i0930">.css-14i0930{-webkit-text-decoration:none;text-decoration:none;color:white;}</style><a href="https://www.eclipse.org/openj9/docs/openj9_newuser/" rel="noopener noreferrer" target="_blank" class="css-14i0930">New to OpenJ9?</a></li><li><a href="https://www.eclipse.org/openj9/docs/introduction/" rel="noopener noreferrer" target="_blank" class="css-14i0930">Getting started</a></li><li><a href="https://www.eclipse.org/openj9/docs/cmdline_specifying/" rel="noopener noreferrer" target="_blank" class="css-14i0930">Command-line options</a></li></ul></section><style data-emotion-css="7usxs3">.css-7usxs3{-webkit-flex:1;-ms-flex:1;flex:1;padding-left:2rem;padding:1rem;font-size:1rem;}@media screen and (min-width:560px){.css-7usxs3{padding-left:0.8rem;padding:0;font-size:0.9rem;}}@media screen and (min-width:1000px){.css-7usxs3{padding-left:0;font-size:1rem;}}@media screen and (min-width:1366px){.css-7usxs3{padding-left:0;font-size:1rem;}}</style><section class="css-7usxs3"><h4 class="css-shyl6e">Resources</h4><ul class="css-1l04qsy"><li><a class="css-14i0930" href="/openj9/about">About</a></li><li><a class="css-14i0930" href="/openj9/performance">Performance</a></li></ul></section><style data-emotion-css="rlig4a">.css-rlig4a{-webkit-flex:1;-ms-flex:1;flex:1;padding-left:2rem;padding:1rem;font-size:1rem;margin-left:0;}@media screen and (min-width:560px){.css-rlig4a{padding-left:0;padding:0;font-size:0.9rem;margin-left:1rem;}}@media screen and (min-width:1000px){.css-rlig4a{padding-left:0;font-size:1rem;}}@media screen and (min-width:1366px){.css-rlig4a{padding-left:0;font-size:1rem;}}</style><section class="css-rlig4a"><h4 class="css-shyl6e">Community</h4><ul class="css-1l04qsy"><li><a class="css-14i0930" href="/openj9/news">News</a></li><li><a href="https://blog.openj9.org/" rel="noopener noreferrer" target="_blank" class="css-14i0930">Blogs</a></li></ul></section></nav><style data-emotion-css="13pxy6t">.css-13pxy6t{-webkit-flex:25%;-ms-flex:25%;flex:25%;display:none;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}@media screen and (min-width:560px){.css-13pxy6t{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:flex-end;-webkit-box-align:flex-end;-ms-flex-align:flex-end;align-items:flex-end;}}@media screen and (min-width:1000px){.css-13pxy6t{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:flex-end;-webkit-box-align:flex-end;-ms-flex-align:flex-end;align-items:flex-end;}}@media screen and (min-width:1366px){.css-13pxy6t{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:flex-end;-webkit-box-align:flex-end;-ms-flex-align:flex-end;align-items:flex-end;}}</style><section class="css-13pxy6t"><style data-emotion-css="10op7gg">.css-10op7gg{font-size:0.9rem;margin-top:1.3rem;margin-left:0.6rem;}</style><style data-emotion-css="z87sw5">.css-z87sw5{font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.125;font-weight:700;margin-top:16px;margin-bottom:16px;font-size:16px;font-size:0.9rem;margin-top:1.3rem;margin-left:0.6rem;}</style><h6 class="css-z87sw5">OpenJ9 is an Eclipse Incubator Project</h6><a href="https://wiki.eclipse.org/Development_Resources/Process_Guidelines/What_is_Incubation" rel="noopener noreferrer" target="_blank"><img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNTBweCIgaGVpZ2h0PSI3NXB4IiB2aWV3Qm94PSIwIDAgMTU3IDIzMSIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KICAgIDwhLS0gR2VuZXJhdG9yOiBTa2V0Y2ggNjEuMiAoODk2NTMpIC0gaHR0cHM6Ly9za2V0Y2guY29tIC0tPgogICAgPHRpdGxlPmVjbGlwc2VfaW5jdWJhdGlvbl92ZXJ0aWNhbF9zdmc8L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0iZWNsaXBzZV9pbmN1YmF0aW9uX3ZlcnRpY2FsX3N2ZyIgZmlsbC1ydWxlPSJub256ZXJvIj4KICAgICAgICAgICAgPGcgaWQ9Ikdyb3VwIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNy4wMDAwMDAsIDIxNC4wMDAwMDApIiBmaWxsPSIjRkZGRkZGIj4KICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJQYXRoIiBwb2ludHM9IjAuNzUgMC4zNCAxLjkyIDAuMzQgMS45MiAxNi4wMyAwLjc1IDE2LjAzIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSI1LjYyIDAuMzQgNi43MiAwLjM0IDE3LjU1IDEzLjk5IDE3LjU1IDAuMzQgMTguNjcgMC4zNCAxOC42NyAxNi4wMyAxNy44IDE2LjAzIDYuNzUgMi4wOSA2Ljc1IDE2LjAzIDUuNjMgMTYuMDMgNS42MyAwLjM0Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMjEuODYsOC4yMyBMMjEuODYsOC4xOSBDMjEuODYsMy43NSAyNS4xOCwwLjA4IDI5LjcxLDAuMDggQzMyLjUxLDAuMDggMzQuMTksMS4xMSAzNS44MSwyLjU5IEwzNC45OCwzLjQ0IEMzMy42MSwyLjEyIDMyLjA0LDEuMTMgMjkuNjksMS4xMyBDMjUuOTIsMS4xMyAyMy4wOCw0LjIgMjMuMDgsOC4xNSBMMjMuMDgsOC4xOSBDMjMuMDgsMTIuMTYgMjUuOTcsMTUuMjUgMjkuNzEsMTUuMjUgQzMxLjk3LDE1LjI1IDMzLjUyLDE0LjM3IDM1LjExLDEyLjgxIEwzNS44OSwxMy41NyBDMzQuMjMsMTUuMjEgMzIuNDQsMTYuMyAyOS42NiwxNi4zIEMyNS4xOCwxNi4zIDIxLjg2LDEyLjc0IDIxLjg2LDguMjMgWiIgaWQ9IlBhdGgiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0zOC40LDkuNTEgTDM4LjQsMC4zNCBMMzkuNTcsMC4zNCBMMzkuNTcsOS40IEMzOS41NywxMy4xIDQxLjU3LDE1LjIzIDQ0Ljg4LDE1LjIzIEM0OC4wNiwxNS4yMyA1MC4xLDEzLjMgNTAuMSw5LjUxIEw1MC4xLDAuMzQgTDUxLjI3LDAuMzQgTDUxLjI3LDkuMzcgQzUxLjI3LDEzLjg4IDQ4LjY1LDE2LjI3MDAzMTQgNDQuODQsMTYuMjcwMDMxNCBDNDEuMDcsMTYuMjggMzguNCwxMy45IDM4LjQsOS41MSBaIiBpZD0iUGF0aCI+PC9wYXRoPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTU0LjAyLDAuMzQgTDYwLjUsMC4zNCBDNjIuMjcsMC4zNCA2My43MSwwLjg2IDY0LjU4LDEuNzMgQzY1LjIzLDIuMzggNjUuNTksMy4yMSA2NS41OSw0LjIgTDY1LjU5LDQuMjQgQzY1LjU5LDYuMzcgNjQuMiw3LjQ1IDYyLjkyLDcuOTYgQzY0LjgsOC40NSA2Ni40Niw5LjUzIDY2LjQ2LDExLjcgTDY2LjQ2LDExLjc0IEM2Ni40NiwxNC4zNiA2NC4yMiwxNi4wMiA2MC44MywxNi4wMiBMNTQuMDIsMTYuMDIgTDU0LjAyLDAuMzQgTDU0LjAyLDAuMzQgWiBNNjQuNCw0LjMxIEM2NC40LDIuNTggNjIuOTksMS40MiA2MC40OCwxLjQyIEw1NS4xOSwxLjQyIEw1NS4xOSw3LjU4IEw2MC4zNyw3LjU4IEM2Mi43Miw3LjU4IDY0LjQsNi40NCA2NC40LDQuMzUgTDY0LjQsNC4zMSBaIE02MC41LDguNjYgTDU1LjE5LDguNjYgTDU1LjE5LDE0Ljk2IEw2MC44OCwxNC45NiBDNjMuNTcsMTQuOTYgNjUuMjcwMDQ0NCwxMy43MyA2NS4yNzAwNDQ0LDExLjc1IEw2NS4yNzAwNDQ0LDExLjcxIEM2NS4yOCw5Ljc4IDYzLjYsOC42NiA2MC41LDguNjYgWiIgaWQ9IlNoYXBlIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNzYuMjgsMC4yMyBMNzcuNCwwLjIzIEw4NC43MSwxNi4wMyBMODMuNDMsMTYuMDMgTDgxLjQ0LDExLjY0IEw3Mi4xOCwxMS42NCBMNzAuMTksMTYuMDMgTDY4Ljk4LDE2LjAzIEw3Ni4yOCwwLjIzIFogTTgwLjk0LDEwLjU5IEw3Ni44MiwxLjUxIEw3Mi42NywxMC41OSBMODAuOTQsMTAuNTkgWiIgaWQ9IlNoYXBlIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSI5MS4wNSAxLjQyIDg1LjU4IDEuNDIgODUuNTggMC4zNCA5Ny42OCAwLjM0IDk3LjY4IDEuNDIgOTIuMjEgMS40MiA5Mi4yMSAxNi4wMyA5MS4wNCAxNi4wMyA5MS4wNCAxLjQyIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSIxMDEuMjkgMC4zNCAxMDIuNDYgMC4zNCAxMDIuNDYgMTYuMDMgMTAxLjI5IDE2LjAzIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTA1LjkxLDguMjMgTDEwNS45MSw4LjE5IEMxMDUuOTEsMy45MSAxMDkuMDcsMC4wOCAxMTMuODIsMC4wOCBDMTE4LjU3LDAuMDggMTIxLjY5LDMuODcgMTIxLjY5LDguMTUgTDEyMS42OSw4LjE5IEMxMjEuNjksMTIuNDcgMTE4LjUzLDE2LjMgMTEzLjc4LDE2LjMgQzEwOS4wMywxNi4zIDEwNS45MSwxMi41MSAxMDUuOTEsOC4yMyBaIE0xMjAuNDgsOC4yMyBMMTIwLjQ4LDguMTkgQzEyMC40OCw0LjMxIDExNy42NiwxLjEzIDExMy43OCwxLjEzIEMxMDkuOSwxLjEzIDEwNy4xMiw0LjI3IDEwNy4xMiw4LjE1IEwxMDcuMTIsOC4xOSBDMTA3LjEyLDEyLjA3IDEwOS45NCwxNS4yNSAxMTMuODIsMTUuMjUgQzExNy43LDE1LjI1IDEyMC40OCwxMi4xMSAxMjAuNDgsOC4yMyBaIiBpZD0iU2hhcGUiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJQYXRoIiBwb2ludHM9IjEyNC44OSAwLjM0IDEyNS45OSAwLjM0IDEzNi44MiAxMy45OSAxMzYuODIgMC4zNCAxMzcuOTQgMC4zNCAxMzcuOTQgMTYuMDMgMTM3LjA3IDE2LjAzIDEyNi4wMiAyLjA5IDEyNi4wMiAxNi4wMyAxMjQuOSAxNi4wMyAxMjQuOSAwLjM0Ij48L3BvbHlnb24+CiAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgPHBhdGggZD0iTTU2LjY2LDE2Ni4yMyBDNTcuNTEsMTYzLjQ4IDYwLjQzLDE2MS40MyA2My45NCwxNjEuNDMgQzY1LjE0LDE2MS40MyA2Ni4yNSwxNjEuNjkgNjcuMjUsMTYyLjExIEM2OS40NiwxNjAuNjQgNzIuMTksMTU5Ljc2IDc1LjE3LDE1OS43NiBMNzUuMTksMTU5Ljc2IEM3Ni4xMSwxNTcuOSA3OC40OCwxNTYuNTcgODEuMywxNTYuNTcgQzgyLjA0LDE1Ni41NyA4Mi43NSwxNTYuNjcgODMuNDIsMTU2Ljg0IEM4My4zMywxNTQuNTYgODMuNjksMTUyLjE4IDg0LjU1LDE0OS42OCBDODUuNTUsMTQ2Ljc5IDg3LDE0NC4wMyA4OC41MiwxNDEuMjggQzg4LjE3LDEzNy4xNiA4Ny45LDEzMy41IDgyLjc0LDEzMiBDODAuODIsMTMxLjQ0IDc4LjgyLDEzMS4yNyA3Ni44NiwxMzEuMDQgTDc2Ljg1LDEzMS4wNCBMNzYuODUsMTMxLjAzIEM3Ni4wMSwxMzAuOTMgNzUuMTcsMTMwLjgxIDc0LjM1LDEzMC42NSBDNjAuMTgsMTQ1LjQxIDQwLjIsMTA5Ljk3IDQwLjIsMTA5Ljk3IEM4NC4zLDEwMy4xMyA3Ni4wMSwxMjUuNjEgNzYuMDEsMTI1LjYxIEM3Mi44MSwxMjQuMDUgNzEuOTMsMTIyLjA4IDY5LjQ5LDExOS43MyBDNjMuOTIsMTE0LjM4IDUwLjYyLDExMy40NCA1MC42MiwxMTMuNDQgQzY2LjU0LDExNy41MSA2OC43MSwxMjUuMjIgNzQuOTcsMTI3LjY5IEM3Ni4zOSwxMjguMDEgNzcuOSwxMjguMTMgNzkuMzUsMTI4LjI5IEM4Mi4xNSwxMjguNTkgODQuODksMTI5LjExIDg3LjIyLDEzMC42MSBDODkuNjMsMTMyLjE2IDkwLjcxLDEzNC4wOSA5MS4yNiwxMzYuMjYgQzkzLDEzMi45NCA5NC41LDEyOS41NiA5NS4wNywxMjUuOTIgQzk1LjgsMTIxLjI3IDk1LjEzLDExNS44OCA5MS44MywxMTIuMDcgQzg4Ljc4LDEwOC41NSA4NC42NiwxMDUuODkgODEuNCwxMDIuNTIgQzc3LjkyLDk4LjkxIDc1LjYxLDk0LjQ2IDc1LjUyLDg5LjcxIEM3My43Niw4NS44NiA3MC45LDgxLjM5IDY4LjI4LDc5LjY1IEM1Ni45LDkwLjM0IDQxLjksNjIuNTggNDEuOSw2Mi41OCBDNzYuODgsNTcuNyA3MS4xLDc1LjY3IDcxLjEsNzUuNjcgQzYyLjcsNjYuMjggNTIuMzEsNjcuMTIgNTIuMzEsNjcuMTIgQzYwLjcxLDY5Ljc5IDY3LjM0LDc1LjE1IDcxLjIsNzguODMgTDcxLjczLDc5LjM2IEM3My4zLDgxIDc0LjksODIuNzUgNzYuMjQsODQuNjMgQzc3LjYsNzkuNDggODAuNzcsNzIuMjcgODMuMjYsNjcuOTcgQzgzLjI2LDY3Ljk3IDkxLjY2LDUzLjE1IDEwNS44LDQzLjkgQzEwNS44LDQzLjkgOTUuMDIsNDUuMTQgODMuNDEsNjIuODkgQzgzLjQxLDYyLjg5IDY3Ljk5LDM4LjcgMTE3LjgzLDM0LjIzIEMxMTcuODMsMzQuMjMgMTE0LjQsNzguMTcgODcuNDUsNjkuNjMgQzgyLjc3LDc2LjY3IDc5LjcsODQuNzQgODAuMzMsOTAuNDIgQzgwLjk1LDk1Ljk2IDg0LjgzLDk5Ljg2IDg5LjExLDEwMy41IEM5MC4yNSw5Ny42NiA5NC40Niw5Mi42MyAxMDAuNjUsODkuODkgQzEwNS42LDg3LjkyIDExMi45LDg2LjAzIDExOS43Miw4NS42MiBDMTE5LjcyLDg1LjYyIDEwNi4zOSw4Mi41OCA5Ni4yNSw4OS41MSBDOTYuMjUsODkuNTEgOTYuNDIsNjkuMjIgMTMyLjM0LDgzLjk1IEMxMzIuMzQsODMuOTUgMTA2LjM0LDExMC4yOSA5Ny45OSw5NC41OSBDOTQuMDMsOTcuMiA5MS41MywxMDEuNTggOTIuMTgsMTA2LjExIEM5NC41LDEwOC4xNCA5Ni42NiwxMTAuMzMgOTcuOTcsMTEzLjAzIEM5OS44LDExNi44MiAxMDAuNDUsMTIxLjI0IDk5Ljk1LDEyNS4zNSBDOTguOTksMTMzLjI1IDk0LjA1LDEzOS45NyA5MC42NywxNDcuMTQgQzg5LjI5LDE1MC4wNiA4Ny45NywxNTMuMjcgODcuOTUsMTU2LjUxIEM4OS42NCwxNTYuMDQgOTEuNDcsMTU1Ljc4IDkzLjM5LDE1NS43OCBDMTAwLjYyLDE1NS43OCAxMDYuNzEsMTU5LjM3IDEwOC42OCwxNjQuMyBDMTExLjYxLDE2NC42MSAxMTMuOTIsMTY2LjMzIDExNC4zNCwxNjguNTEgQzExNi40NSwxNjkuODEgMTE4LjEyLDE3MS42MyAxMTkuMTMsMTczLjc1IEw1MC41NSwxNzMuNzUgQzUyLjAyLDE3MC42MiA1NC4xNCwxNjcuMTYgNTYuNjYsMTY2LjIzIiBpZD0iUGF0aCIgZmlsbD0iI0Y3OEQyQyI+PC9wYXRoPgogICAgICAgICAgICA8ZyBpZD0iR3JvdXAiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE3LjAwMDAwMCwgMTgyLjAwMDAwMCkiIGZpbGw9IiNGRkZGRkYiPgogICAgICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlBhdGgiIHBvaW50cz0iMC41NCAxLjM5IDE4LjU0IDEuMzkgMTguNTQgNS4yMSA0LjggNS4yMSA0LjggMTEuNTIgMTYuOTcgMTEuNTIgMTYuOTcgMTUuMzMgNC44IDE1LjMzIDQuOCAyMS44NSAxOC43MSAyMS44NSAxOC43MSAyNS42NyAwLjU0IDI1LjY3Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMjEuNTUsMTMuNiBMMjEuNTUsMTMuNTMgQzIxLjU1LDYuNjMgMjYuNzIsMC45NyAzNC4wNywwLjk3IEMzOC41NCwwLjk3IDQxLjI1LDIuNTMgNDMuNTcsNC43NSBMNDAuODMsNy45MSBDMzguODksNi4xMSAzNi44MSw0Ljg5IDM0LjAzLDQuODkgQzI5LjQyLDQuODkgMjYuMDIsOC43MSAyNi4wMiwxMy40NiBMMjYuMDIsMTMuNTMgQzI2LjAyLDE4LjI4IDI5LjM4LDIyLjEzIDM0LjAzLDIyLjEzIEMzNy4wMSwyMi4xMyAzOC45MiwyMC45NSA0MSwxOS4wMSBMNDMuNzQsMjEuNzggQzQxLjIxLDI0LjQyIDM4LjQzLDI2LjA4MDAxMzYgMzMuODksMjYuMDgwMDEzNiBDMjYuODMsMjYuMDkgMjEuNTUsMjAuNTcgMjEuNTUsMTMuNiBaIiBpZD0iUGF0aCI+PC9wYXRoPgogICAgICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlBhdGgiIHBvaW50cz0iNDcuMjIgMS4zOSA1MS40OSAxLjM5IDUxLjQ5IDIxLjc4IDY0LjI1IDIxLjc4IDY0LjI1IDI1LjY2IDQ3LjIyIDI1LjY2Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSI2Ny45MyAxLjM5IDcyLjIgMS4zOSA3Mi4yIDI1LjY3IDY3LjkzIDI1LjY3Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNzcuNjcsMS4zOSBMODcuMjQsMS4zOSBDOTIuOTMsMS4zOSA5Ni40Nyw0LjYyIDk2LjQ3LDkuNTEgTDk2LjQ3LDkuNTggQzk2LjQ3LDE1LjAzIDkyLjEsMTcuODcgODYuNzYsMTcuODcgTDgxLjk0LDE3Ljg3IEw4MS45NCwyNS42NyBMNzcuNjcsMjUuNjcgTDc3LjY3LDEuMzkgWiBNODYuOSwxNC4wMiBDOTAuMTMsMTQuMDIgOTIuMTQsMTIuMjIgOTIuMTQsOS42OCBMOTIuMTQsOS42MSBDOTIuMTQsNi43NyA5MC4wOSw1LjI4IDg2LjksNS4yOCBMODEuOTQsNS4yOCBMODEuOTQsMTQuMDIgTDg2LjksMTQuMDIgWiIgaWQ9IlNoYXBlIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNOTguMjEsMjIuMTMgTDEwMC43OCwxOS4wOCBDMTAzLjEsMjEuMDkgMTA1LjQ2LDIyLjI0IDEwOC40NSwyMi4yNCBDMTExLjA5LDIyLjI0IDExMi43NSwyMC45OSAxMTIuNzUsMTkuMTkgTDExMi43NSwxOS4xMiBDMTEyLjc1LDE3LjM5IDExMS43OCwxNi40NSAxMDcuMjcsMTUuNDEgQzEwMi4xLDE0LjE2IDk5LjE5LDEyLjY0IDk5LjE5LDguMTYgTDk5LjE5LDguMDkgQzk5LjE5LDMuOTMgMTAyLjY2LDEuMDUgMTA3LjQ4LDEuMDUgQzExMS4wMiwxLjA1IDExMy44MywyLjEzIDExNi4yOSw0LjEgTDExNCw3LjMzIEMxMTEuODEsNS43IDEwOS42Myw0LjgzIDEwNy40MSw0LjgzIEMxMDQuOTEsNC44MyAxMDMuNDYsNi4xMSAxMDMuNDYsNy43MSBMMTAzLjQ2LDcuNzggQzEwMy40Niw5LjY1IDEwNC41NywxMC40OSAxMDkuMjUsMTEuNiBDMTE0LjM4LDEyLjg1IDExNy4wMiwxNC42OSAxMTcuMDIsMTguNzEgTDExNy4wMiwxOC43OCBDMTE3LjAyLDIzLjMyIDExMy40NSwyNi4wMyAxMDguMzUsMjYuMDMgQzEwNC42MiwyNi4wMiAxMDEuMTIsMjQuNzMgOTguMjEsMjIuMTMgWiIgaWQ9IlBhdGgiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJQYXRoIiBwb2ludHM9IjEyMC45OSAxLjM5IDEzOC45OSAxLjM5IDEzOC45OSA1LjIxIDEyNS4yNiA1LjIxIDEyNS4yNiAxMS41MiAxMzcuNDMgMTEuNTIgMTM3LjQzIDE1LjMzIDEyNS4yNiAxNS4zMyAxMjUuMjYgMjEuODUgMTM5LjE3IDIxLjg1IDEzOS4xNyAyNS42NyAxMjEgMjUuNjcgMTIxIDEuMzkiPjwvcG9seWdvbj4KICAgICAgICAgICAgPC9nPgogICAgICAgICAgICA8cGF0aCBkPSJNMjEuNjYsMzkuOTkgQzQxLjI2LDkuNDIgODAuNSwtMS4yNSAxMTMuMjMsMTMuNDQgQzExMi41MSwxMi45NCAxMTEuNzgsMTIuNDMgMTExLjAzLDExLjk1IEM3Ny41MiwtOS41NCAzMi45OCwwLjExIDExLjU2LDMzLjUyIEMtOS44Nyw2Ni45MiAtMC4wNiwxMTEuNDMgMzMuNDUsMTMyLjkyIEMzNC4yLDEzMy40IDM0Ljk2LDEzMy44NSAzNS43MiwxMzQuMyBDOC43MywxMTAuNjggMi4wNiw3MC41NiAyMS42NiwzOS45OSIgaWQ9IlBhdGgiIGZpbGw9IiNGNzhEMkMiPjwvcGF0aD4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==" alt="Eclipse Incubator Logo"/></a></section><style data-emotion-css="1mjb60s">.css-1mjb60s{height:2px;background-color:var(--theme-ui-colors-secondary,#5DA7A3);width:100%;margin-top:16px;margin-bottom:16px;}</style><div class="css-1mjb60s"></div><style data-emotion-css="6gs9hh">.css-6gs9hh{width:70%;}</style><nav class="css-6gs9hh"><style data-emotion-css="1rx6mfb">.css-1rx6mfb{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}@media screen and (min-width:560px){.css-1rx6mfb{-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;}}@media screen and (min-width:1000px){.css-1rx6mfb{-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;}}@media screen and (min-width:1366px){.css-1rx6mfb{-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;}}.css-1rx6mfb li{padding:0.4rem;font-size:0.9rem;list-style-type:none;padding-left:1rem;color:white;}@media screen and (min-width:560px){.css-1rx6mfb li{font-size:0.7rem;}}@media screen and (min-width:1000px){.css-1rx6mfb li{font-size:1rem;}}@media screen and (min-width:1366px){.css-1rx6mfb li{font-size:1rem;}}.css-1rx6mfb a{color:white;-webkit-text-decoration:none;text-decoration:none;}.css-1rx6mfb a:hover{color:var(--theme-ui-colors-links,#5DA7A3);}</style><ul class="css-1rx6mfb"><style data-emotion-css="1lir2xx">.css-1lir2xx{padding-left:1rem;}@media screen and (min-width:560px){.css-1lir2xx{padding-left:0rem !important;}}@media screen and (min-width:1000px){.css-1lir2xx{padding-left:0.5rem !important;}}@media screen and (min-width:1366px){.css-1lir2xx{padding-left:0.5 !important;}}</style><li class="css-1lir2xx"><a href="https://www.eclipse.org/" rel="noopener noreferrer" target="_blank" class="css-14i0930">Eclipse Foundation Website </a></li><li><a href="https://www.eclipse.org/legal/privacy.php" rel="noopener noreferrer" target="_blank" class="css-14i0930">Privacy Policy</a></li><li><a href="https://www.eclipse.org/legal/termsofuse.php" rel="noopener noreferrer" target="_blank" class="css-14i0930">Terms of Use</a></li><li><a href="https://www.eclipse.org/legal/copyright.php" rel="noopener noreferrer" target="_blank" class="css-14i0930">Copyright Agent</a></li><li><a href="https://www.eclipse.org/legal/" rel="noopener noreferrer" target="_blank" class="css-14i0930">Legal</a></li></ul></nav><style data-emotion-css="15pdxr9">.css-15pdxr9{display:inline;-webkit-flex:30%;-ms-flex:30%;flex:30%;}@media screen and (min-width:560px){.css-15pdxr9{display:inline;}}@media screen and (min-width:1000px){.css-15pdxr9{display:block;}}@media screen and (min-width:1366px){.css-15pdxr9{display:block;}}</style><nav class="css-15pdxr9"><style data-emotion-css="1q18ssc">.css-1q18ssc{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;list-style:none;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;}.css-1q18ssc li{padding:8px;margin-left:8px;margin-right:8px;}.css-1q18ssc li a{color:white;-webkit-text-decoration:none;text-decoration:none;}.css-1q18ssc li a:hover{color:var(--theme-ui-colors-links,#5DA7A3);}.css-1q18ssc li:first-of-type{margin-left:0;}.css-1q18ssc li:last-child{margin-right:0;padding-right:0;}@media screen and (min-width:560px){.css-1q18ssc{-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end;}}@media screen and (min-width:1000px){.css-1q18ssc{-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end;}}@media screen and (min-width:1366px){.css-1q18ssc{-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end;}}</style><ul class="css-1q18ssc"><li><a href="https://twitter.com/openj9/" rel="noopener noreferrer" target="_blank"> <img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIyNXB4IiB2aWV3Qm94PSIwIDAgMjUgMjUiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5Ud2l0dGVyPC90aXRsZT4KICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPgogICAgPGcgaWQ9IlBhZ2UtMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9IlR3aXR0ZXIiIGZpbGwtcnVsZT0ibm9uemVybyI+CiAgICAgICAgICAgIDxnIGlkPSJ0d2l0dGVyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjAwMDAwMCwgMC4yOTg4NzkpIj4KICAgICAgICAgICAgICAgIDxlbGxpcHNlIGlkPSJPdmFsLXBhdGgiIGZpbGw9IiM0MzQzNDMiIGN4PSIxMi41MDAyMjEyIiBjeT0iMTIuMjcyNzI3MyIgcng9IjEyLjUiIHJ5PSIxMi4yNzI3MjczIj48L2VsbGlwc2U+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTIuNTAwMjIxMiwwIEMxOS40MDM3ODA2LDAgMjUuMDAwMjIxMiw1LjQ5NDY4NzE2IDI1LjAwMDIyMTIsMTIuMjcyNzI3MyBDMjUuMDAwMjIxMiwxOS4wNTA3Njc0IDE5LjQwMzc4MDYsMjQuNTQ1NDU0NSAxMi41MDAyMjEyLDI0LjU0NTQ1NDUgQzUuNTk2NjYxODcsMjQuNTQ1NDU0NSAwLjAwMDIyMTIzODkzOCwxOS4wNTA3Njc0IDAuMDAwMjIxMjM4OTM4LDEyLjI3MjcyNzMgQzAuMDAwMjIxMjM4OTM4LDUuNDk0Njg3MTYgNS41OTY2NjE4NywwIDEyLjUwMDIyMTIsMCBaIE0xNS4xMDM0MzMzLDYuODE4MTgxODIgQzEzLjQ2NTM4MDIsNi44MTgxODE4MiAxMi4xMzY4NDA0LDguMDkyMTI0MTEgMTIuMTM2ODQwNCw5LjY2Mjg1OTk2IEMxMi4xMzY4NDA0LDkuODg1ODI2MzggMTIuMTYzMTY3OCwxMC4xMDI4NTI3IDEyLjIxNDA1MjgsMTAuMzExMTgxIEM5Ljc0ODU2NjA0LDEwLjE5MjU5MDggNy41NjI1MDQxLDkuMDYwMTUwNTQgNi4wOTkyMjk3Niw3LjMzODU3ODIzIEM1Ljg0MzkyMDAzLDcuNzU4NjI5MTUgNS42OTc0NTk4NSw4LjI0NzYyNzgxIDUuNjk3NDU5ODUsOC43Njg4NzI4MSBDNS42OTc0NTk4NSw5Ljc1NTU2ODE3IDYuMjIxNTc0ODksMTAuNjI2NjQzNCA3LjAxNzE1MDExLDExLjEzNjY0NDcgQzYuNTMxMDg4MTcsMTEuMTIyMDA2NSA2LjA3MzM0NDgsMTAuOTk0MDgxOSA1LjY3MzU2NjA0LDEwLjc4MDQ1IEw1LjY3MzM0NDgsMTAuODE2NTE0OSBMNS42NzMzNDQ4LDEwLjgxNjUxNDkgQzUuNjczMzQ0OCwxMi4xOTQ4MzM1IDYuNjk2MzUzNjUsMTMuMzQ0NDU3NyA4LjA1MzIxMjA2LDEzLjYwNTYxMDYgQzcuODA0NTM5NSwxMy42NzA5NTE5IDcuNTQxOTI4ODgsMTMuNzA1NTMxOCA3LjI3MTc5NjEzLDEzLjcwNTUzMTggQzcuMDgwMjAzMjEsMTMuNzA1NTMxOCA2Ljg5NDU4Mzc0LDEzLjY4NzkyMzYgNi43MTM2MTAyOSwxMy42NTQ4Mjg3IEM3LjA5MTA0MzkyLDE0Ljc4NDcyMzIgOC4xODYzOTc5LDE1LjYwNzIxNjkgOS40ODQ4NDkyMywxNS42MzAzNDA5IEM4LjQ2OTM2MjUsMTYuMzkzNDMzNCA3LjE5MDM4MDIsMTYuODQ4MDY0MiA1LjgwMDExNDcyLDE2Ljg0ODA2NDIgQzUuNTYxMTc2NjYsMTYuODQ4MDY0MiA1LjMyNDQ1MSwxNi44MzQ2OTkgNS4wOTI4MTM4MywxNi44MDgxODA2IEM2LjQwNDk4MTk3LDE3LjYxNTYxMTggNy45NjQ3MTY0OSwxOC4wODYzNjU4IDkuNjM5OTM3NzMsMTguMDg2MzY1OCBDMTUuMDk2NTc0OSwxOC4wODYzNjU4IDE4LjA4MDY0NTcsMTMuNzUxNzc5OCAxOC4wODA2NDU3LDkuOTkyMzI0MTQgQzE4LjA4MDY0NTcsOS44NjkwNjY3NyAxOC4wNzc3Njk2LDkuNzQ2MjMzNyAxOC4wNzIwMTc0LDkuNjI0NDYxMzcgQzE4LjY1MjEwNTksOS4yMjM1MDM2OCAxOS4xNTQ5ODIsOC43MjI2MjQ3OCAxOS41NTI1NDgzLDguMTUyMTYxNjkgQzE5LjAyMDY4OTksOC4zNzgzMTAzMiAxOC40NDg1NjYsOC41MzEyNjgyNSAxNy44NDg1NjYsOC41OTk1Nzk1NiBDMTguNDYxMTc2Nyw4LjI0NzYyNzgxIDE4LjkzMTMwOTQsNy42OTA3NDIxMyAxOS4xNTMyMTIxLDcuMDI2MDg1ODEgQzE4LjU3OTk4Miw3LjM1MjE1NTYzIDE3Ljk0NDgwNSw3LjU4ODY5OTQ2IDE3LjI2OTM2MjUsNy43MTYxOTk3NiBDMTYuNzI4MjEyMSw3LjE2MzU1NzAyIDE1Ljk1NzE5NDQsNi44MTgxODE4MiAxNS4xMDM0MzMzLDYuODE4MTgxODIgWiIgaWQ9IkNvbWJpbmVkLVNoYXBlIiBmaWxsPSIjRkZGRkZGIj48L3BhdGg+CiAgICAgICAgICAgIDwvZz4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==" alt="Twitter Logo"/></a></li><li><a href="https://github.com/eclipse/openj9" rel="noopener noreferrer" target="_blank"> <img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIyNXB4IiB2aWV3Qm94PSIwIDAgMjUgMjUiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5HaXRIdWI8L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0iR2l0SHViIiBmaWxsPSIjRkZGRkZGIiBmaWxsLXJ1bGU9Im5vbnplcm8iPgogICAgICAgICAgICA8ZyBpZD0iZ2l0aHViLWxvZ28iPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTIzLjMyMzIwOSw2LjM1NjM4NTg4IEMyMi4yMDU0MjQzLDQuNDI4ODY0OTMgMjAuNjg5MjIwNywyLjkwMjg0MzkxIDE4Ljc3NDE5OTMsMS43Nzc5Nzg1OCBDMTYuODU4ODkyOCwwLjY1MzA1NTg3MyAxNC43Njc5NDkxLDAuMDkwNzM3OTUzMyAxMi40OTk4ODYsMC4wOTA3Mzc5NTMzIEMxMC4yMzIxMDc5LDAuMDkwNzM3OTUzMyA4LjE0MDQ4MDEzLDAuNjUzMjI3OTkzIDYuMjI1NTcyNjksMS43Nzc5Nzg1OCBDNC4zMTAzODAyMSwyLjkwMjc4NjU0IDIuNzk0MjMzNjcsNC40Mjg4NjQ5MyAxLjY3NjQ0ODk5LDYuMzU2Mzg1ODggQzAuNTU4ODM1MzMzLDguMjgzODQ5NDUgMCwxMC4zODg2NTQ2IDAsMTIuNjcwNzQzOSBDMCwxNS40MTIwNTEgMC43OTQ2NzE0ODMsMTcuODc3MTA0NSAyLjM4NDQxMzQ5LDIwLjA2NjUzNTUgQzMuOTczOTg0NDksMjIuMjU2MTM4OCA2LjAyNzQ3NDg4LDIzLjc3MTI1ODggOC41NDQ3MTM2NywyNC42MTIwNjc4IEM4LjgzNzcyNzQsMjQuNjY2ODAyMiA5LjA1NDYzNzM3LDI0LjYyODMwNDUgOS4xOTU2NzE2MSwyNC40OTc1NTAzIEM5LjMzNjc2Mjg1LDI0LjM2NjYyMzkgOS40MDcyMjI5NiwyNC4yMDI2NTAzIDkuNDA3MjIyOTYsMjQuMDA2MzE4MSBDOS40MDcyMjI5NiwyMy45NzM1NTc5IDkuNDA0NDI5NjQsMjMuNjc4ODMwMSA5LjM5OTAxNDAxLDIzLjEyMTc5MDUgQzkuMzkzNDI3MzcsMjIuNTY0NzUxIDkuMzkwODA1MDcsMjIuMDc4Nzk3MiA5LjM5MDgwNTA3LDIxLjY2NDE1ODcgTDkuMDE2NDQyOTcsMjEuNzI5MzM1MSBDOC43Nzc3NTY1LDIxLjc3MzM0MDUgOC40NzY2NDc4MywyMS43OTE5ODY5IDguMTEzMTE2OTgsMjEuNzg2NzA4NiBDNy43NDk3NTcxNSwyMS43ODE2MDIzIDcuMzcyNTQ0NzMsMjEuNzQzMjc2OCA2Ljk4MTk5Mjc3LDIxLjY3MjAxODkgQzYuNTkxMjY5NzksMjEuNjAxMzkyMSA2LjIyNzg1Mjk1LDIxLjQzNzU5MDcgNS44OTE0NTcyMiwyMS4xODA5NTg5IEM1LjU1NTIzMjUyLDIwLjkyNDMyNzEgNS4zMTY1NDYwNCwyMC41ODg0MDUxIDUuMTc1NDU0OCwyMC4xNzM3MDkzIEw1LjAxMjcwMTA2LDE5Ljc5Njc2NTIgQzQuOTA0MjE3NTcsMTkuNTQ1ODEzNCA0LjczMzQyNTkxLDE5LjI2NzAzNTUgNC41MDAwOTgwNSwxOC45NjE0NjQxIEM0LjI2Njc3MDE5LDE4LjY1NTYwNTggNC4wMzA4MjAwMywxOC40NDgyNTc5IDMuNzkyMTMzNTUsMTguMzM5MDc2MSBMMy42NzgxNzc0MywxOC4yNTY5NzQ2IEMzLjYwMjI0NDY5LDE4LjIwMjQxMjMgMy41MzE3ODQ1OCwxOC4xMzY2MDQ5IDMuNDY2NjI2MDgsMTguMDYwMjQwOCBDMy40MDE1MjQ1OCwxNy45ODM4NzY2IDMuMzUyNzgzOTcsMTcuOTA3NDU1MSAzLjMyMDIzMzIzLDE3LjgzMDkxODggQzMuMjg3NjI1NDcsMTcuNzU0MzI1MSAzLjMxNDY0NjU4LDE3LjY5MTUwMTEgMy40MDE1ODE1OSwxNy42NDIyMTcyIEMzLjQ4ODUxNjYsMTcuNTkyOTMzNCAzLjY0NTYyNjY4LDE3LjU2OTAwODYgMy44NzM1OTU5MywxNy41NjkwMDg2IEw0LjE5ODk4OTM5LDE3LjYxNzk0ODIgQzQuNDE2MDEzMzcsMTcuNjYxNzI0MiA0LjY4NDQ1NzI3LDE3Ljc5MjQ3ODUgNS4wMDQ2NjMxNCwxOC4wMTEwMTQzIEM1LjMyNDY5Nzk4LDE4LjIyOTM3NzkgNS41ODc3ODMyNywxOC41MTMyNjIxIDUuNzkzOTc2LDE4Ljg2MjU1MjEgQzYuMDQzNjY0NzUsMTkuMzEwNDA5OSA2LjM0NDQ4ODM4LDE5LjY1MTY2NzYgNi42OTczMDE5OSwxOS44ODY0OTc0IEM3LjA0OTgzMDU4LDIwLjEyMTMyNzMgNy40MDUyNjY0OSwyMC4yMzg1NDE0IDcuNzYzMjY3NzEsMjAuMjM4NTQxNCBDOC4xMjEyNjg5MiwyMC4yMzg1NDE0IDguNDMwNDcyNTIsMjAuMjExMjMxNiA4LjY5MDk5MjUxLDIwLjE1Njg5ODkgQzguOTUxMjI3NDcsMjAuMTAyMjc5MyA5LjE5NTM4NjU3LDIwLjAyMDE3NzcgOS40MjMzNTU4MiwxOS45MTEwNTMzIEM5LjUyMTAwODA2LDE5LjE3OTA4MTkgOS43ODY4ODY2NywxOC42MTY3NjM5IDEwLjIyMDc2MzYsMTguMjIzNjk3OSBDOS42MDIzNTY0MiwxOC4xNTgyOTIxIDkuMDQ2MzcxNDIsMTguMDU5NzgxOCA4LjU1MjUyMzU3LDE3LjkyODc5OCBDOC4wNTg5NjA3NSwxNy43OTc2NDIxIDcuNTQ4OTIzMDMsMTcuNTg0Nzg2MyA3LjAyMjc1MjQ2LDE3LjI4OTY1NjkgQzYuNDk2Mjk2ODUsMTYuOTk0OTI5MSA2LjA1OTU2OTU4LDE2LjYyODk0MzQgNS43MTI0NTY2MiwxNi4xOTIzMzA5IEM1LjM2NTI4NjY1LDE1Ljc1NTQ4ODkgNS4wODAzNjc4NSwxNS4xODE5ODMxIDQuODU4MDk5MjYsMTQuNDcyMzMgQzQuNjM1NzE2NjYsMTMuNzYyMzkgNC41MjQ0OTY4NiwxMi45NDM0NDAzIDQuNTI0NDk2ODYsMTIuMDE1MjUxNCBDNC41MjQ0OTY4NiwxMC42OTM2NTIzIDQuOTUzMTg2MjEsOS41NjkwMTY0MiA1LjgxMDM5Mzg5LDguNjQwNzEyNzggQzUuNDA4ODM5NjcsNy42NDcxMTgwNyA1LjQ0Njc0OTAzLDYuNTMzMjY4NDYgNS45MjQyMzYsNS4yOTkyNzg2OCBDNi4yMzg5MTIyMiw1LjIwMDg4MzA4IDYuNzA1NTY3OTQsNS4yNzQ3MjI4MSA3LjMyMzk3NTE0LDUuNTIwMzM4ODcgQzcuOTQyNDk2MzQsNS43NjYwNjk2OCA4LjM5NTM1NjQ3LDUuOTc2NTczMTQgOC42ODMwMTE1OSw2LjE1MTEwMzQxIEM4Ljk3MDY2NjcsNi4zMjU1NzYzIDkuMjAxMTQ0MjQsNi40NzM0Mjc4NyA5LjM3NDc4NjIzLDYuNTkzMzM4NTQgQzEwLjM4NDA4NzQsNi4zMDk1MTE3MSAxMS40MjU2NTQzLDYuMTY3NTY5NjEgMTIuNDk5NzcyLDYuMTY3NTY5NjEgQzEzLjU3Mzg4OTYsNi4xNjc1Njk2MSAxNC42MTU2ODQ2LDYuMzA5NTExNzEgMTUuNjI1MDQyOCw2LjU5MzMzODU0IEwxNi4yNDM1MDcsNi4yMDAzODcyNiBDMTYuNjY2NDM4Niw1LjkzODE5MDI1IDE3LjE2NTg3MzEsNS42OTc5MDk5MyAxNy43NDA2MTMzLDUuNDc5NDg4OTIgQzE4LjMxNTY5NTUsNS4yNjExODI2NiAxOC43NTU0NDQxLDUuMjAxMDU1MiAxOS4wNTk0MDMxLDUuMjk5NDUwOCBDMTkuNTQ3NDkzMyw2LjUzMzQ5Nzk1IDE5LjU5MDk4OTMsNy42NDcyOTAxOSAxOS4xODkzMjExLDguNjQwODg0OSBDMjAuMDQ2NDcxNyw5LjU2OTE4ODU0IDIwLjQ3NTMzMjEsMTAuNjk0MTExMiAyMC40NzUzMzIxLDEyLjAxNTQyMzUgQzIwLjQ3NTMzMjEsMTIuOTQzNjEyNCAyMC4zNjM3MTMzLDEzLjc2NTE0MzkgMjAuMTQxNjcyNywxNC40ODA1MzQ0IEMxOS45MTkzNDcxLDE1LjE5NjAzOTYgMTkuNjMxOTc3LDE1Ljc2ODk3MTcgMTkuMjc5NDQ4NSwxNi4yMDA1MzUzIEMxOC45MjY1MjA4LDE2LjYzMjA0MTYgMTguNDg3MDAwMiwxNi45OTUxNTg2IDE3Ljk2MDgyOTcsMTcuMjg5ODI5MSBDMTcuNDM0NTQ1MSwxNy41ODQ3MjkgMTYuOTI0MzM2MywxNy43OTc1ODQ4IDE2LjQzMDc3MzUsMTcuOTI4NzQwNiBDMTUuOTM2OTgyNywxOC4wNTk4OTY1IDE1LjM4MDk5NzcsMTguMTU4NDY0MiAxNC43NjI1OTA1LDE4LjIyMzk4NDggQzE1LjMyNjYxMzQsMTguNzE1MjE2OSAxNS42MDg2ODE5LDE5LjQ5MDYyMDEgMTUuNjA4NjgxOSwyMC41NDk4NTAxIEwxNS42MDg2ODE5LDI0LjAwNTg1OTIgQzE1LjYwODY4MTksMjQuMjAyMTkxNCAxNS42NzY1MTk3LDI0LjM2NjEwNzUgMTUuODEyMzA5MywyNC40OTcwOTEzIEMxNS45NDc5Mjc5LDI0LjYyNzg0NTUgMTYuMTYyMTAxNiwyNC42NjYzNDMyIDE2LjQ1NTExNTMsMjQuNjExNTUxNSBDMTguOTcyNjk2MSwyMy43NzA4NTcyIDIxLjAyNjE4NjUsMjIuMjU1Njc5OCAyMi42MTU3MDA1LDIwLjA2NjA3NjYgQzI0LjIwNTA0MzUsMTcuODc2NjQ1NSAyNSwxNS40MTE1OTIgMjUsMTIuNjcwMjg0OSBDMjQuOTk5NDI5OSwxMC4zODg0ODI1IDI0LjQ0MDMwOTYsOC4yODM4NDk0NSAyMy4zMjMyMDksNi4zNTYzODU4OCBaIiBpZD0iU2hhcGUiPjwvcGF0aD4KICAgICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+" alt="GitHub Logo"/></a></li><li><a href="https://openj9.slack.com/" rel="noopener noreferrer" target="_blank"><img src="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIyNXB4IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgogPCEtLSBDcmVhdGVkIHdpdGggTWV0aG9kIERyYXcgLSBodHRwOi8vZ2l0aHViLmNvbS9kdW9waXhlbC9NZXRob2QtRHJhdy8gLS0+CgogPGc+CiAgPHRpdGxlPmJhY2tncm91bmQ8L3RpdGxlPgogIDxyZWN0IGZpbGw9Im5vbmUiIGlkPSJjYW52YXNfYmFja2dyb3VuZCIgaGVpZ2h0PSIyNiIgd2lkdGg9IjI2IiB5PSItMSIgeD0iLTEiLz4KICA8ZyBkaXNwbGF5PSJub25lIiBvdmVyZmxvdz0idmlzaWJsZSIgeT0iMCIgeD0iMCIgaGVpZ2h0PSIxMDAlIiB3aWR0aD0iMTAwJSIgaWQ9ImNhbnZhc0dyaWQiPgogICA8cmVjdCBmaWxsPSJ1cmwoI2dyaWRwYXR0ZXJuKSIgc3Ryb2tlLXdpZHRoPSIwIiB5PSIxIiB4PSIxIiBoZWlnaHQ9IjIyIiB3aWR0aD0iMjIiLz4KICA8L2c+CiA8L2c+CiA8Zz4KICA8dGl0bGU+TGF5ZXIgMTwvdGl0bGU+CiAgPGVsbGlwc2Ugcnk9IjExIiByeD0iMTEiIGlkPSJzdmdfMSIgY3k9IjEyIiBjeD0iMTIiIHN0cm9rZT0iI0ZGRiIgZmlsbD0iI0ZGRkZGRiIvPgogIDxzdHlsZSB0cmFuc2Zvcm09Im1hdHJpeCgwLjA2NTE4MjQ5NTU3MzI1MzYyLDAsMCwwLjA2NTE4MjQ5NTU3MzI1MzYyLDAsMCkgIiB0eXBlPSJ0ZXh0L2NzcyI+LnN0MHtmaWxsOiM0MzQzNDM7fTwvc3R5bGU+CiAgPGcgc3Ryb2tlPSJudWxsIiBpZD0ic3ZnXzE5Ij4KICAgPGcgc3Ryb2tlPSJudWxsIiB0cmFuc2Zvcm09Im1hdHJpeCgwLjEzMDE1NTgwODUxODA5NDg2LDAsMCwwLjEzMDE1NTgwODUxODA5NDg2LC02Ljg0OTAwNjQ1MDQwNTQ5OSwtNi44MzE1MDczOTEwMjE5MjQpICIgaWQ9InN2Z182Ij4KICAgIDxnIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z183Ij4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfOCIgZD0ibTExMC4yOTgyOTIsMTYxLjI5MzAxMWMwLDcuMSAtNS44LDEyLjkgLTEyLjksMTIuOXMtMTIuOSwtNS44IC0xMi45LC0xMi45YzAsLTcuMSA1LjgsLTEyLjkgMTIuOSwtMTIuOWwxMi45LDBsMCwxMi45eiIgY2xhc3M9InN0MCIvPgogICAgIDxwYXRoIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z185IiBkPSJtMTE2Ljc5ODI5MiwxNjEuMjkzMDExYzAsLTcuMSA1LjgsLTEyLjkgMTIuOSwtMTIuOXMxMi45LDUuOCAxMi45LDEyLjlsMCwzMi4zYzAsNy4xIC01LjgsMTIuOSAtMTIuOSwxMi45cy0xMi45LC01LjggLTEyLjksLTEyLjljMCwwIDAsLTMyLjMgMCwtMzIuM3oiIGNsYXNzPSJzdDAiLz4KICAgIDwvZz4KICAgIDxnIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z18xMCI+CiAgICAgPHBhdGggc3Ryb2tlPSJudWxsIiBpZD0ic3ZnXzExIiBkPSJtMTI5LjY5ODI5MiwxMDkuNDkzMDExYy03LjEsMCAtMTIuOSwtNS44IC0xMi45LC0xMi45czUuOCwtMTIuOSAxMi45LC0xMi45czEyLjksNS44IDEyLjksMTIuOWwwLDEyLjlsLTEyLjksMHoiIGNsYXNzPSJzdDAiLz4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTIiIGQ9Im0xMjkuNjk4MjkyLDExNS45OTMwMTFjNy4xLDAgMTIuOSw1LjggMTIuOSwxMi45cy01LjgsMTIuOSAtMTIuOSwxMi45bC0zMi4zLDBjLTcuMSwwIC0xMi45LC01LjggLTEyLjksLTEyLjlzNS44LC0xMi45IDEyLjksLTEyLjljMCwwIDMyLjMsMCAzMi4zLDB6IiBjbGFzcz0ic3QwIi8+CiAgICA8L2c+CiAgICA8ZyBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTMiPgogICAgIDxwYXRoIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z18xNCIgZD0ibTE4MS40OTgyOTIsMTI4Ljg5MzAxMWMwLC03LjEgNS44LC0xMi45IDEyLjksLTEyLjljNy4xLDAgMTIuOSw1LjggMTIuOSwxMi45cy01LjgsMTIuOSAtMTIuOSwxMi45bC0xMi45LDBsMCwtMTIuOXoiIGNsYXNzPSJzdDAiLz4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTUiIGQ9Im0xNzQuOTk4MjkyLDEyOC44OTMwMTFjMCw3LjEgLTUuOCwxMi45IC0xMi45LDEyLjljLTcuMSwwIC0xMi45LC01LjggLTEyLjksLTEyLjlsMCwtMzIuM2MwLC03LjEgNS44LC0xMi45IDEyLjksLTEyLjljNy4xLDAgMTIuOSw1LjggMTIuOSwxMi45bDAsMzIuM3oiIGNsYXNzPSJzdDAiLz4KICAgIDwvZz4KICAgIDxnIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z18xNiI+CiAgICAgPHBhdGggc3Ryb2tlPSJudWxsIiBpZD0ic3ZnXzE3IiBkPSJtMTYyLjA5ODI5MiwxODAuNjkzMDExYzcuMSwwIDEyLjksNS44IDEyLjksMTIuOWMwLDcuMSAtNS44LDEyLjkgLTEyLjksMTIuOWMtNy4xLDAgLTEyLjksLTUuOCAtMTIuOSwtMTIuOWwwLC0xMi45bDEyLjksMHoiIGNsYXNzPSJzdDAiLz4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTgiIGQ9Im0xNjIuMDk4MjkyLDE3NC4xOTMwMTFjLTcuMSwwIC0xMi45LC01LjggLTEyLjksLTEyLjljMCwtNy4xIDUuOCwtMTIuOSAxMi45LC0xMi45bDMyLjMsMGM3LjEsMCAxMi45LDUuOCAxMi45LDEyLjljMCw3LjEgLTUuOCwxMi45IC0xMi45LDEyLjlsLTMyLjMsMHoiIGNsYXNzPSJzdDAiLz4KICAgIDwvZz4KICAgPC9nPgogIDwvZz4KIDwvZz4KPC9zdmc+" alt="Slack logo"/></a></li><li><a href="https://stackoverflow.com/search?q=%23OpenJ9" rel="noopener noreferrer" target="_blank"><img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjRweCIgaGVpZ2h0PSIyNHB4IiB2aWV3Qm94PSIwIDAgNjUgNzAiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5zdGFja292ZXJmbG93LWxvZ288L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0iI0ZGRkZGRiIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0ic3RhY2tvdmVyZmxvdy1sb2dvIiBmaWxsLXJ1bGU9Im5vbnplcm8iPgogICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgZmlsbD0iI0ZGRkZGRiIgcG9pbnRzPSI1NC4yNDE3MjY2IDYzLjc3MDIyNjUgNTQuMjQxNzI2NiA0NSA2MSA0NSA2MSA3MCAwIDcwIDAgNDUgNi43NTgyNzMzOCA0NSA2Ljc1ODI3MzM4IDYzLjc3MDIyNjUiPjwvcG9seWdvbj4KICAgICAgICAgICAgPHBhdGggZD0iTTE0LjcwNzEwNTcsNDMuNjQyNzU2NyBMNDguMTE3ODUxLDUwLjA4NzIwMTEgTDQ5LjUzMjA2MjQsNDMuODg3NDgyNCBMMTYuMTIxMzE3MiwzNy40NDMwMzggTDE0LjcwNzEwNTcsNDMuNjQyNzU2NyBMMTQuNzA3MTA1Nyw0My42NDI3NTY3IFogTTE5LjEyNjUxNjUsMjguOTU5MjEyNCBMNTAuMDYyMzkxNyw0Mi4yNTU5Nzc1IEw1Mi44OTA4MTQ2LDM2LjU0NTcxMDMgTDIxLjk1NDkzOTMsMjMuMTY3MzY5OSBMMTkuMTI2NTE2NSwyOC45NTkyMTI0IFogTTI3LjcwMDE3MzMsMTQuOTI4MjcgTDUzLjk1MTQ3MzEsMzUuMDc3MzU1OCBMNTguMjgyNDk1NywzMC4yNjQ0MTYzIEwzMi4wMzExOTU4LDEwLjExNTMzMDUgTDI3LjcwMDE3MzMsMTQuOTI4MjcgTDI3LjcwMDE3MzMsMTQuOTI4MjcgWiBNNDQuNjcwNzEwNiwwIEwzOS4xOTA2NDEyLDMuNzUyNDYxMzIgTDU5LjUxOTkzMDcsMjkuMDQwNzg3NiBMNjUsMjUuMjg4MzI2MyBMNDQuNjcwNzEwNiwwIFogTTE0LDU4IEw0OC4xMTc4NTEsNTggTDQ4LjExNzg1MSw1MS43MTg3MDYgTDE0LDUxLjcxODcwNiBMMTQsNTggWiIgaWQ9IlNoYXBlIiBmaWxsPSIjRkZGRkZGIj48L3BhdGg+CiAgICAgICAgPC9nPgogICAgPC9nPgo8L3N2Zz4KCgo=" alt="Stack Overflow logo"/></a></li></ul></nav></footer></div></div><script>
+ */.fa,.fab,.fad,.fal,.far,.fas{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-.0667em}.fa-xs{font-size:.75em}.fa-sm{font-size:.875em}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:2.5em;padding-left:0}.fa-ul>li{position:relative}.fa-li{left:-2em;position:absolute;text-align:center;width:2em;line-height:inherit}.fa-border{border:.08em solid #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.fab.fa-pull-left,.fal.fa-pull-left,.far.fa-pull-left,.fas.fa-pull-left{margin-right:.3em}.fa.fa-pull-right,.fab.fa-pull-right,.fal.fa-pull-right,.far.fa-pull-right,.fas.fa-pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s linear infinite;animation:fa-spin 2s linear infinite}.fa-pulse{-webkit-animation:fa-spin 1s steps(8) infinite;animation:fa-spin 1s steps(8) infinite}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scaleX(-1);transform:scaleX(-1)}.fa-flip-vertical{-webkit-transform:scaleY(-1);transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical,.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{-webkit-transform:scale(-1);transform:scale(-1)}:root .fa-flip-both,:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270{-webkit-filter:none;filter:none}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-500px:before{content:"\F26E"}.fa-accessible-icon:before{content:"\F368"}.fa-accusoft:before{content:"\F369"}.fa-acquisitions-incorporated:before{content:"\F6AF"}.fa-ad:before{content:"\F641"}.fa-address-book:before{content:"\F2B9"}.fa-address-card:before{content:"\F2BB"}.fa-adjust:before{content:"\F042"}.fa-adn:before{content:"\F170"}.fa-adobe:before{content:"\F778"}.fa-adversal:before{content:"\F36A"}.fa-affiliatetheme:before{content:"\F36B"}.fa-air-freshener:before{content:"\F5D0"}.fa-airbnb:before{content:"\F834"}.fa-algolia:before{content:"\F36C"}.fa-align-center:before{content:"\F037"}.fa-align-justify:before{content:"\F039"}.fa-align-left:before{content:"\F036"}.fa-align-right:before{content:"\F038"}.fa-alipay:before{content:"\F642"}.fa-allergies:before{content:"\F461"}.fa-amazon:before{content:"\F270"}.fa-amazon-pay:before{content:"\F42C"}.fa-ambulance:before{content:"\F0F9"}.fa-american-sign-language-interpreting:before{content:"\F2A3"}.fa-amilia:before{content:"\F36D"}.fa-anchor:before{content:"\F13D"}.fa-android:before{content:"\F17B"}.fa-angellist:before{content:"\F209"}.fa-angle-double-down:before{content:"\F103"}.fa-angle-double-left:before{content:"\F100"}.fa-angle-double-right:before{content:"\F101"}.fa-angle-double-up:before{content:"\F102"}.fa-angle-down:before{content:"\F107"}.fa-angle-left:before{content:"\F104"}.fa-angle-right:before{content:"\F105"}.fa-angle-up:before{content:"\F106"}.fa-angry:before{content:"\F556"}.fa-angrycreative:before{content:"\F36E"}.fa-angular:before{content:"\F420"}.fa-ankh:before{content:"\F644"}.fa-app-store:before{content:"\F36F"}.fa-app-store-ios:before{content:"\F370"}.fa-apper:before{content:"\F371"}.fa-apple:before{content:"\F179"}.fa-apple-alt:before{content:"\F5D1"}.fa-apple-pay:before{content:"\F415"}.fa-archive:before{content:"\F187"}.fa-archway:before{content:"\F557"}.fa-arrow-alt-circle-down:before{content:"\F358"}.fa-arrow-alt-circle-left:before{content:"\F359"}.fa-arrow-alt-circle-right:before{content:"\F35A"}.fa-arrow-alt-circle-up:before{content:"\F35B"}.fa-arrow-circle-down:before{content:"\F0AB"}.fa-arrow-circle-left:before{content:"\F0A8"}.fa-arrow-circle-right:before{content:"\F0A9"}.fa-arrow-circle-up:before{content:"\F0AA"}.fa-arrow-down:before{content:"\F063"}.fa-arrow-left:before{content:"\F060"}.fa-arrow-right:before{content:"\F061"}.fa-arrow-up:before{content:"\F062"}.fa-arrows-alt:before{content:"\F0B2"}.fa-arrows-alt-h:before{content:"\F337"}.fa-arrows-alt-v:before{content:"\F338"}.fa-artstation:before{content:"\F77A"}.fa-assistive-listening-systems:before{content:"\F2A2"}.fa-asterisk:before{content:"\F069"}.fa-asymmetrik:before{content:"\F372"}.fa-at:before{content:"\F1FA"}.fa-atlas:before{content:"\F558"}.fa-atlassian:before{content:"\F77B"}.fa-atom:before{content:"\F5D2"}.fa-audible:before{content:"\F373"}.fa-audio-description:before{content:"\F29E"}.fa-autoprefixer:before{content:"\F41C"}.fa-avianex:before{content:"\F374"}.fa-aviato:before{content:"\F421"}.fa-award:before{content:"\F559"}.fa-aws:before{content:"\F375"}.fa-baby:before{content:"\F77C"}.fa-baby-carriage:before{content:"\F77D"}.fa-backspace:before{content:"\F55A"}.fa-backward:before{content:"\F04A"}.fa-bacon:before{content:"\F7E5"}.fa-bahai:before{content:"\F666"}.fa-balance-scale:before{content:"\F24E"}.fa-balance-scale-left:before{content:"\F515"}.fa-balance-scale-right:before{content:"\F516"}.fa-ban:before{content:"\F05E"}.fa-band-aid:before{content:"\F462"}.fa-bandcamp:before{content:"\F2D5"}.fa-barcode:before{content:"\F02A"}.fa-bars:before{content:"\F0C9"}.fa-baseball-ball:before{content:"\F433"}.fa-basketball-ball:before{content:"\F434"}.fa-bath:before{content:"\F2CD"}.fa-battery-empty:before{content:"\F244"}.fa-battery-full:before{content:"\F240"}.fa-battery-half:before{content:"\F242"}.fa-battery-quarter:before{content:"\F243"}.fa-battery-three-quarters:before{content:"\F241"}.fa-battle-net:before{content:"\F835"}.fa-bed:before{content:"\F236"}.fa-beer:before{content:"\F0FC"}.fa-behance:before{content:"\F1B4"}.fa-behance-square:before{content:"\F1B5"}.fa-bell:before{content:"\F0F3"}.fa-bell-slash:before{content:"\F1F6"}.fa-bezier-curve:before{content:"\F55B"}.fa-bible:before{content:"\F647"}.fa-bicycle:before{content:"\F206"}.fa-biking:before{content:"\F84A"}.fa-bimobject:before{content:"\F378"}.fa-binoculars:before{content:"\F1E5"}.fa-biohazard:before{content:"\F780"}.fa-birthday-cake:before{content:"\F1FD"}.fa-bitbucket:before{content:"\F171"}.fa-bitcoin:before{content:"\F379"}.fa-bity:before{content:"\F37A"}.fa-black-tie:before{content:"\F27E"}.fa-blackberry:before{content:"\F37B"}.fa-blender:before{content:"\F517"}.fa-blender-phone:before{content:"\F6B6"}.fa-blind:before{content:"\F29D"}.fa-blog:before{content:"\F781"}.fa-blogger:before{content:"\F37C"}.fa-blogger-b:before{content:"\F37D"}.fa-bluetooth:before{content:"\F293"}.fa-bluetooth-b:before{content:"\F294"}.fa-bold:before{content:"\F032"}.fa-bolt:before{content:"\F0E7"}.fa-bomb:before{content:"\F1E2"}.fa-bone:before{content:"\F5D7"}.fa-bong:before{content:"\F55C"}.fa-book:before{content:"\F02D"}.fa-book-dead:before{content:"\F6B7"}.fa-book-medical:before{content:"\F7E6"}.fa-book-open:before{content:"\F518"}.fa-book-reader:before{content:"\F5DA"}.fa-bookmark:before{content:"\F02E"}.fa-bootstrap:before{content:"\F836"}.fa-border-all:before{content:"\F84C"}.fa-border-none:before{content:"\F850"}.fa-border-style:before{content:"\F853"}.fa-bowling-ball:before{content:"\F436"}.fa-box:before{content:"\F466"}.fa-box-open:before{content:"\F49E"}.fa-boxes:before{content:"\F468"}.fa-braille:before{content:"\F2A1"}.fa-brain:before{content:"\F5DC"}.fa-bread-slice:before{content:"\F7EC"}.fa-briefcase:before{content:"\F0B1"}.fa-briefcase-medical:before{content:"\F469"}.fa-broadcast-tower:before{content:"\F519"}.fa-broom:before{content:"\F51A"}.fa-brush:before{content:"\F55D"}.fa-btc:before{content:"\F15A"}.fa-buffer:before{content:"\F837"}.fa-bug:before{content:"\F188"}.fa-building:before{content:"\F1AD"}.fa-bullhorn:before{content:"\F0A1"}.fa-bullseye:before{content:"\F140"}.fa-burn:before{content:"\F46A"}.fa-buromobelexperte:before{content:"\F37F"}.fa-bus:before{content:"\F207"}.fa-bus-alt:before{content:"\F55E"}.fa-business-time:before{content:"\F64A"}.fa-buy-n-large:before{content:"\F8A6"}.fa-buysellads:before{content:"\F20D"}.fa-calculator:before{content:"\F1EC"}.fa-calendar:before{content:"\F133"}.fa-calendar-alt:before{content:"\F073"}.fa-calendar-check:before{content:"\F274"}.fa-calendar-day:before{content:"\F783"}.fa-calendar-minus:before{content:"\F272"}.fa-calendar-plus:before{content:"\F271"}.fa-calendar-times:before{content:"\F273"}.fa-calendar-week:before{content:"\F784"}.fa-camera:before{content:"\F030"}.fa-camera-retro:before{content:"\F083"}.fa-campground:before{content:"\F6BB"}.fa-canadian-maple-leaf:before{content:"\F785"}.fa-candy-cane:before{content:"\F786"}.fa-cannabis:before{content:"\F55F"}.fa-capsules:before{content:"\F46B"}.fa-car:before{content:"\F1B9"}.fa-car-alt:before{content:"\F5DE"}.fa-car-battery:before{content:"\F5DF"}.fa-car-crash:before{content:"\F5E1"}.fa-car-side:before{content:"\F5E4"}.fa-caravan:before{content:"\F8FF"}.fa-caret-down:before{content:"\F0D7"}.fa-caret-left:before{content:"\F0D9"}.fa-caret-right:before{content:"\F0DA"}.fa-caret-square-down:before{content:"\F150"}.fa-caret-square-left:before{content:"\F191"}.fa-caret-square-right:before{content:"\F152"}.fa-caret-square-up:before{content:"\F151"}.fa-caret-up:before{content:"\F0D8"}.fa-carrot:before{content:"\F787"}.fa-cart-arrow-down:before{content:"\F218"}.fa-cart-plus:before{content:"\F217"}.fa-cash-register:before{content:"\F788"}.fa-cat:before{content:"\F6BE"}.fa-cc-amazon-pay:before{content:"\F42D"}.fa-cc-amex:before{content:"\F1F3"}.fa-cc-apple-pay:before{content:"\F416"}.fa-cc-diners-club:before{content:"\F24C"}.fa-cc-discover:before{content:"\F1F2"}.fa-cc-jcb:before{content:"\F24B"}.fa-cc-mastercard:before{content:"\F1F1"}.fa-cc-paypal:before{content:"\F1F4"}.fa-cc-stripe:before{content:"\F1F5"}.fa-cc-visa:before{content:"\F1F0"}.fa-centercode:before{content:"\F380"}.fa-centos:before{content:"\F789"}.fa-certificate:before{content:"\F0A3"}.fa-chair:before{content:"\F6C0"}.fa-chalkboard:before{content:"\F51B"}.fa-chalkboard-teacher:before{content:"\F51C"}.fa-charging-station:before{content:"\F5E7"}.fa-chart-area:before{content:"\F1FE"}.fa-chart-bar:before{content:"\F080"}.fa-chart-line:before{content:"\F201"}.fa-chart-pie:before{content:"\F200"}.fa-check:before{content:"\F00C"}.fa-check-circle:before{content:"\F058"}.fa-check-double:before{content:"\F560"}.fa-check-square:before{content:"\F14A"}.fa-cheese:before{content:"\F7EF"}.fa-chess:before{content:"\F439"}.fa-chess-bishop:before{content:"\F43A"}.fa-chess-board:before{content:"\F43C"}.fa-chess-king:before{content:"\F43F"}.fa-chess-knight:before{content:"\F441"}.fa-chess-pawn:before{content:"\F443"}.fa-chess-queen:before{content:"\F445"}.fa-chess-rook:before{content:"\F447"}.fa-chevron-circle-down:before{content:"\F13A"}.fa-chevron-circle-left:before{content:"\F137"}.fa-chevron-circle-right:before{content:"\F138"}.fa-chevron-circle-up:before{content:"\F139"}.fa-chevron-down:before{content:"\F078"}.fa-chevron-left:before{content:"\F053"}.fa-chevron-right:before{content:"\F054"}.fa-chevron-up:before{content:"\F077"}.fa-child:before{content:"\F1AE"}.fa-chrome:before{content:"\F268"}.fa-chromecast:before{content:"\F838"}.fa-church:before{content:"\F51D"}.fa-circle:before{content:"\F111"}.fa-circle-notch:before{content:"\F1CE"}.fa-city:before{content:"\F64F"}.fa-clinic-medical:before{content:"\F7F2"}.fa-clipboard:before{content:"\F328"}.fa-clipboard-check:before{content:"\F46C"}.fa-clipboard-list:before{content:"\F46D"}.fa-clock:before{content:"\F017"}.fa-clone:before{content:"\F24D"}.fa-closed-captioning:before{content:"\F20A"}.fa-cloud:before{content:"\F0C2"}.fa-cloud-download-alt:before{content:"\F381"}.fa-cloud-meatball:before{content:"\F73B"}.fa-cloud-moon:before{content:"\F6C3"}.fa-cloud-moon-rain:before{content:"\F73C"}.fa-cloud-rain:before{content:"\F73D"}.fa-cloud-showers-heavy:before{content:"\F740"}.fa-cloud-sun:before{content:"\F6C4"}.fa-cloud-sun-rain:before{content:"\F743"}.fa-cloud-upload-alt:before{content:"\F382"}.fa-cloudscale:before{content:"\F383"}.fa-cloudsmith:before{content:"\F384"}.fa-cloudversify:before{content:"\F385"}.fa-cocktail:before{content:"\F561"}.fa-code:before{content:"\F121"}.fa-code-branch:before{content:"\F126"}.fa-codepen:before{content:"\F1CB"}.fa-codiepie:before{content:"\F284"}.fa-coffee:before{content:"\F0F4"}.fa-cog:before{content:"\F013"}.fa-cogs:before{content:"\F085"}.fa-coins:before{content:"\F51E"}.fa-columns:before{content:"\F0DB"}.fa-comment:before{content:"\F075"}.fa-comment-alt:before{content:"\F27A"}.fa-comment-dollar:before{content:"\F651"}.fa-comment-dots:before{content:"\F4AD"}.fa-comment-medical:before{content:"\F7F5"}.fa-comment-slash:before{content:"\F4B3"}.fa-comments:before{content:"\F086"}.fa-comments-dollar:before{content:"\F653"}.fa-compact-disc:before{content:"\F51F"}.fa-compass:before{content:"\F14E"}.fa-compress:before{content:"\F066"}.fa-compress-alt:before{content:"\F422"}.fa-compress-arrows-alt:before{content:"\F78C"}.fa-concierge-bell:before{content:"\F562"}.fa-confluence:before{content:"\F78D"}.fa-connectdevelop:before{content:"\F20E"}.fa-contao:before{content:"\F26D"}.fa-cookie:before{content:"\F563"}.fa-cookie-bite:before{content:"\F564"}.fa-copy:before{content:"\F0C5"}.fa-copyright:before{content:"\F1F9"}.fa-cotton-bureau:before{content:"\F89E"}.fa-couch:before{content:"\F4B8"}.fa-cpanel:before{content:"\F388"}.fa-creative-commons:before{content:"\F25E"}.fa-creative-commons-by:before{content:"\F4E7"}.fa-creative-commons-nc:before{content:"\F4E8"}.fa-creative-commons-nc-eu:before{content:"\F4E9"}.fa-creative-commons-nc-jp:before{content:"\F4EA"}.fa-creative-commons-nd:before{content:"\F4EB"}.fa-creative-commons-pd:before{content:"\F4EC"}.fa-creative-commons-pd-alt:before{content:"\F4ED"}.fa-creative-commons-remix:before{content:"\F4EE"}.fa-creative-commons-sa:before{content:"\F4EF"}.fa-creative-commons-sampling:before{content:"\F4F0"}.fa-creative-commons-sampling-plus:before{content:"\F4F1"}.fa-creative-commons-share:before{content:"\F4F2"}.fa-creative-commons-zero:before{content:"\F4F3"}.fa-credit-card:before{content:"\F09D"}.fa-critical-role:before{content:"\F6C9"}.fa-crop:before{content:"\F125"}.fa-crop-alt:before{content:"\F565"}.fa-cross:before{content:"\F654"}.fa-crosshairs:before{content:"\F05B"}.fa-crow:before{content:"\F520"}.fa-crown:before{content:"\F521"}.fa-crutch:before{content:"\F7F7"}.fa-css3:before{content:"\F13C"}.fa-css3-alt:before{content:"\F38B"}.fa-cube:before{content:"\F1B2"}.fa-cubes:before{content:"\F1B3"}.fa-cut:before{content:"\F0C4"}.fa-cuttlefish:before{content:"\F38C"}.fa-d-and-d:before{content:"\F38D"}.fa-d-and-d-beyond:before{content:"\F6CA"}.fa-dailymotion:before{content:"\F952"}.fa-dashcube:before{content:"\F210"}.fa-database:before{content:"\F1C0"}.fa-deaf:before{content:"\F2A4"}.fa-delicious:before{content:"\F1A5"}.fa-democrat:before{content:"\F747"}.fa-deploydog:before{content:"\F38E"}.fa-deskpro:before{content:"\F38F"}.fa-desktop:before{content:"\F108"}.fa-dev:before{content:"\F6CC"}.fa-deviantart:before{content:"\F1BD"}.fa-dharmachakra:before{content:"\F655"}.fa-dhl:before{content:"\F790"}.fa-diagnoses:before{content:"\F470"}.fa-diaspora:before{content:"\F791"}.fa-dice:before{content:"\F522"}.fa-dice-d20:before{content:"\F6CF"}.fa-dice-d6:before{content:"\F6D1"}.fa-dice-five:before{content:"\F523"}.fa-dice-four:before{content:"\F524"}.fa-dice-one:before{content:"\F525"}.fa-dice-six:before{content:"\F526"}.fa-dice-three:before{content:"\F527"}.fa-dice-two:before{content:"\F528"}.fa-digg:before{content:"\F1A6"}.fa-digital-ocean:before{content:"\F391"}.fa-digital-tachograph:before{content:"\F566"}.fa-directions:before{content:"\F5EB"}.fa-discord:before{content:"\F392"}.fa-discourse:before{content:"\F393"}.fa-divide:before{content:"\F529"}.fa-dizzy:before{content:"\F567"}.fa-dna:before{content:"\F471"}.fa-dochub:before{content:"\F394"}.fa-docker:before{content:"\F395"}.fa-dog:before{content:"\F6D3"}.fa-dollar-sign:before{content:"\F155"}.fa-dolly:before{content:"\F472"}.fa-dolly-flatbed:before{content:"\F474"}.fa-donate:before{content:"\F4B9"}.fa-door-closed:before{content:"\F52A"}.fa-door-open:before{content:"\F52B"}.fa-dot-circle:before{content:"\F192"}.fa-dove:before{content:"\F4BA"}.fa-download:before{content:"\F019"}.fa-draft2digital:before{content:"\F396"}.fa-drafting-compass:before{content:"\F568"}.fa-dragon:before{content:"\F6D5"}.fa-draw-polygon:before{content:"\F5EE"}.fa-dribbble:before{content:"\F17D"}.fa-dribbble-square:before{content:"\F397"}.fa-dropbox:before{content:"\F16B"}.fa-drum:before{content:"\F569"}.fa-drum-steelpan:before{content:"\F56A"}.fa-drumstick-bite:before{content:"\F6D7"}.fa-drupal:before{content:"\F1A9"}.fa-dumbbell:before{content:"\F44B"}.fa-dumpster:before{content:"\F793"}.fa-dumpster-fire:before{content:"\F794"}.fa-dungeon:before{content:"\F6D9"}.fa-dyalog:before{content:"\F399"}.fa-earlybirds:before{content:"\F39A"}.fa-ebay:before{content:"\F4F4"}.fa-edge:before{content:"\F282"}.fa-edit:before{content:"\F044"}.fa-egg:before{content:"\F7FB"}.fa-eject:before{content:"\F052"}.fa-elementor:before{content:"\F430"}.fa-ellipsis-h:before{content:"\F141"}.fa-ellipsis-v:before{content:"\F142"}.fa-ello:before{content:"\F5F1"}.fa-ember:before{content:"\F423"}.fa-empire:before{content:"\F1D1"}.fa-envelope:before{content:"\F0E0"}.fa-envelope-open:before{content:"\F2B6"}.fa-envelope-open-text:before{content:"\F658"}.fa-envelope-square:before{content:"\F199"}.fa-envira:before{content:"\F299"}.fa-equals:before{content:"\F52C"}.fa-eraser:before{content:"\F12D"}.fa-erlang:before{content:"\F39D"}.fa-ethereum:before{content:"\F42E"}.fa-ethernet:before{content:"\F796"}.fa-etsy:before{content:"\F2D7"}.fa-euro-sign:before{content:"\F153"}.fa-evernote:before{content:"\F839"}.fa-exchange-alt:before{content:"\F362"}.fa-exclamation:before{content:"\F12A"}.fa-exclamation-circle:before{content:"\F06A"}.fa-exclamation-triangle:before{content:"\F071"}.fa-expand:before{content:"\F065"}.fa-expand-alt:before{content:"\F424"}.fa-expand-arrows-alt:before{content:"\F31E"}.fa-expeditedssl:before{content:"\F23E"}.fa-external-link-alt:before{content:"\F35D"}.fa-external-link-square-alt:before{content:"\F360"}.fa-eye:before{content:"\F06E"}.fa-eye-dropper:before{content:"\F1FB"}.fa-eye-slash:before{content:"\F070"}.fa-facebook:before{content:"\F09A"}.fa-facebook-f:before{content:"\F39E"}.fa-facebook-messenger:before{content:"\F39F"}.fa-facebook-square:before{content:"\F082"}.fa-fan:before{content:"\F863"}.fa-fantasy-flight-games:before{content:"\F6DC"}.fa-fast-backward:before{content:"\F049"}.fa-fast-forward:before{content:"\F050"}.fa-fax:before{content:"\F1AC"}.fa-feather:before{content:"\F52D"}.fa-feather-alt:before{content:"\F56B"}.fa-fedex:before{content:"\F797"}.fa-fedora:before{content:"\F798"}.fa-female:before{content:"\F182"}.fa-fighter-jet:before{content:"\F0FB"}.fa-figma:before{content:"\F799"}.fa-file:before{content:"\F15B"}.fa-file-alt:before{content:"\F15C"}.fa-file-archive:before{content:"\F1C6"}.fa-file-audio:before{content:"\F1C7"}.fa-file-code:before{content:"\F1C9"}.fa-file-contract:before{content:"\F56C"}.fa-file-csv:before{content:"\F6DD"}.fa-file-download:before{content:"\F56D"}.fa-file-excel:before{content:"\F1C3"}.fa-file-export:before{content:"\F56E"}.fa-file-image:before{content:"\F1C5"}.fa-file-import:before{content:"\F56F"}.fa-file-invoice:before{content:"\F570"}.fa-file-invoice-dollar:before{content:"\F571"}.fa-file-medical:before{content:"\F477"}.fa-file-medical-alt:before{content:"\F478"}.fa-file-pdf:before{content:"\F1C1"}.fa-file-powerpoint:before{content:"\F1C4"}.fa-file-prescription:before{content:"\F572"}.fa-file-signature:before{content:"\F573"}.fa-file-upload:before{content:"\F574"}.fa-file-video:before{content:"\F1C8"}.fa-file-word:before{content:"\F1C2"}.fa-fill:before{content:"\F575"}.fa-fill-drip:before{content:"\F576"}.fa-film:before{content:"\F008"}.fa-filter:before{content:"\F0B0"}.fa-fingerprint:before{content:"\F577"}.fa-fire:before{content:"\F06D"}.fa-fire-alt:before{content:"\F7E4"}.fa-fire-extinguisher:before{content:"\F134"}.fa-firefox:before{content:"\F269"}.fa-firefox-browser:before{content:"\F907"}.fa-first-aid:before{content:"\F479"}.fa-first-order:before{content:"\F2B0"}.fa-first-order-alt:before{content:"\F50A"}.fa-firstdraft:before{content:"\F3A1"}.fa-fish:before{content:"\F578"}.fa-fist-raised:before{content:"\F6DE"}.fa-flag:before{content:"\F024"}.fa-flag-checkered:before{content:"\F11E"}.fa-flag-usa:before{content:"\F74D"}.fa-flask:before{content:"\F0C3"}.fa-flickr:before{content:"\F16E"}.fa-flipboard:before{content:"\F44D"}.fa-flushed:before{content:"\F579"}.fa-fly:before{content:"\F417"}.fa-folder:before{content:"\F07B"}.fa-folder-minus:before{content:"\F65D"}.fa-folder-open:before{content:"\F07C"}.fa-folder-plus:before{content:"\F65E"}.fa-font:before{content:"\F031"}.fa-font-awesome:before{content:"\F2B4"}.fa-font-awesome-alt:before{content:"\F35C"}.fa-font-awesome-flag:before{content:"\F425"}.fa-font-awesome-logo-full:before{content:"\F4E6"}.fa-fonticons:before{content:"\F280"}.fa-fonticons-fi:before{content:"\F3A2"}.fa-football-ball:before{content:"\F44E"}.fa-fort-awesome:before{content:"\F286"}.fa-fort-awesome-alt:before{content:"\F3A3"}.fa-forumbee:before{content:"\F211"}.fa-forward:before{content:"\F04E"}.fa-foursquare:before{content:"\F180"}.fa-free-code-camp:before{content:"\F2C5"}.fa-freebsd:before{content:"\F3A4"}.fa-frog:before{content:"\F52E"}.fa-frown:before{content:"\F119"}.fa-frown-open:before{content:"\F57A"}.fa-fulcrum:before{content:"\F50B"}.fa-funnel-dollar:before{content:"\F662"}.fa-futbol:before{content:"\F1E3"}.fa-galactic-republic:before{content:"\F50C"}.fa-galactic-senate:before{content:"\F50D"}.fa-gamepad:before{content:"\F11B"}.fa-gas-pump:before{content:"\F52F"}.fa-gavel:before{content:"\F0E3"}.fa-gem:before{content:"\F3A5"}.fa-genderless:before{content:"\F22D"}.fa-get-pocket:before{content:"\F265"}.fa-gg:before{content:"\F260"}.fa-gg-circle:before{content:"\F261"}.fa-ghost:before{content:"\F6E2"}.fa-gift:before{content:"\F06B"}.fa-gifts:before{content:"\F79C"}.fa-git:before{content:"\F1D3"}.fa-git-alt:before{content:"\F841"}.fa-git-square:before{content:"\F1D2"}.fa-github:before{content:"\F09B"}.fa-github-alt:before{content:"\F113"}.fa-github-square:before{content:"\F092"}.fa-gitkraken:before{content:"\F3A6"}.fa-gitlab:before{content:"\F296"}.fa-gitter:before{content:"\F426"}.fa-glass-cheers:before{content:"\F79F"}.fa-glass-martini:before{content:"\F000"}.fa-glass-martini-alt:before{content:"\F57B"}.fa-glass-whiskey:before{content:"\F7A0"}.fa-glasses:before{content:"\F530"}.fa-glide:before{content:"\F2A5"}.fa-glide-g:before{content:"\F2A6"}.fa-globe:before{content:"\F0AC"}.fa-globe-africa:before{content:"\F57C"}.fa-globe-americas:before{content:"\F57D"}.fa-globe-asia:before{content:"\F57E"}.fa-globe-europe:before{content:"\F7A2"}.fa-gofore:before{content:"\F3A7"}.fa-golf-ball:before{content:"\F450"}.fa-goodreads:before{content:"\F3A8"}.fa-goodreads-g:before{content:"\F3A9"}.fa-google:before{content:"\F1A0"}.fa-google-drive:before{content:"\F3AA"}.fa-google-play:before{content:"\F3AB"}.fa-google-plus:before{content:"\F2B3"}.fa-google-plus-g:before{content:"\F0D5"}.fa-google-plus-square:before{content:"\F0D4"}.fa-google-wallet:before{content:"\F1EE"}.fa-gopuram:before{content:"\F664"}.fa-graduation-cap:before{content:"\F19D"}.fa-gratipay:before{content:"\F184"}.fa-grav:before{content:"\F2D6"}.fa-greater-than:before{content:"\F531"}.fa-greater-than-equal:before{content:"\F532"}.fa-grimace:before{content:"\F57F"}.fa-grin:before{content:"\F580"}.fa-grin-alt:before{content:"\F581"}.fa-grin-beam:before{content:"\F582"}.fa-grin-beam-sweat:before{content:"\F583"}.fa-grin-hearts:before{content:"\F584"}.fa-grin-squint:before{content:"\F585"}.fa-grin-squint-tears:before{content:"\F586"}.fa-grin-stars:before{content:"\F587"}.fa-grin-tears:before{content:"\F588"}.fa-grin-tongue:before{content:"\F589"}.fa-grin-tongue-squint:before{content:"\F58A"}.fa-grin-tongue-wink:before{content:"\F58B"}.fa-grin-wink:before{content:"\F58C"}.fa-grip-horizontal:before{content:"\F58D"}.fa-grip-lines:before{content:"\F7A4"}.fa-grip-lines-vertical:before{content:"\F7A5"}.fa-grip-vertical:before{content:"\F58E"}.fa-gripfire:before{content:"\F3AC"}.fa-grunt:before{content:"\F3AD"}.fa-guitar:before{content:"\F7A6"}.fa-gulp:before{content:"\F3AE"}.fa-h-square:before{content:"\F0FD"}.fa-hacker-news:before{content:"\F1D4"}.fa-hacker-news-square:before{content:"\F3AF"}.fa-hackerrank:before{content:"\F5F7"}.fa-hamburger:before{content:"\F805"}.fa-hammer:before{content:"\F6E3"}.fa-hamsa:before{content:"\F665"}.fa-hand-holding:before{content:"\F4BD"}.fa-hand-holding-heart:before{content:"\F4BE"}.fa-hand-holding-usd:before{content:"\F4C0"}.fa-hand-lizard:before{content:"\F258"}.fa-hand-middle-finger:before{content:"\F806"}.fa-hand-paper:before{content:"\F256"}.fa-hand-peace:before{content:"\F25B"}.fa-hand-point-down:before{content:"\F0A7"}.fa-hand-point-left:before{content:"\F0A5"}.fa-hand-point-right:before{content:"\F0A4"}.fa-hand-point-up:before{content:"\F0A6"}.fa-hand-pointer:before{content:"\F25A"}.fa-hand-rock:before{content:"\F255"}.fa-hand-scissors:before{content:"\F257"}.fa-hand-spock:before{content:"\F259"}.fa-hands:before{content:"\F4C2"}.fa-hands-helping:before{content:"\F4C4"}.fa-handshake:before{content:"\F2B5"}.fa-hanukiah:before{content:"\F6E6"}.fa-hard-hat:before{content:"\F807"}.fa-hashtag:before{content:"\F292"}.fa-hat-cowboy:before{content:"\F8C0"}.fa-hat-cowboy-side:before{content:"\F8C1"}.fa-hat-wizard:before{content:"\F6E8"}.fa-hdd:before{content:"\F0A0"}.fa-heading:before{content:"\F1DC"}.fa-headphones:before{content:"\F025"}.fa-headphones-alt:before{content:"\F58F"}.fa-headset:before{content:"\F590"}.fa-heart:before{content:"\F004"}.fa-heart-broken:before{content:"\F7A9"}.fa-heartbeat:before{content:"\F21E"}.fa-helicopter:before{content:"\F533"}.fa-highlighter:before{content:"\F591"}.fa-hiking:before{content:"\F6EC"}.fa-hippo:before{content:"\F6ED"}.fa-hips:before{content:"\F452"}.fa-hire-a-helper:before{content:"\F3B0"}.fa-history:before{content:"\F1DA"}.fa-hockey-puck:before{content:"\F453"}.fa-holly-berry:before{content:"\F7AA"}.fa-home:before{content:"\F015"}.fa-hooli:before{content:"\F427"}.fa-hornbill:before{content:"\F592"}.fa-horse:before{content:"\F6F0"}.fa-horse-head:before{content:"\F7AB"}.fa-hospital:before{content:"\F0F8"}.fa-hospital-alt:before{content:"\F47D"}.fa-hospital-symbol:before{content:"\F47E"}.fa-hot-tub:before{content:"\F593"}.fa-hotdog:before{content:"\F80F"}.fa-hotel:before{content:"\F594"}.fa-hotjar:before{content:"\F3B1"}.fa-hourglass:before{content:"\F254"}.fa-hourglass-end:before{content:"\F253"}.fa-hourglass-half:before{content:"\F252"}.fa-hourglass-start:before{content:"\F251"}.fa-house-damage:before{content:"\F6F1"}.fa-houzz:before{content:"\F27C"}.fa-hryvnia:before{content:"\F6F2"}.fa-html5:before{content:"\F13B"}.fa-hubspot:before{content:"\F3B2"}.fa-i-cursor:before{content:"\F246"}.fa-ice-cream:before{content:"\F810"}.fa-icicles:before{content:"\F7AD"}.fa-icons:before{content:"\F86D"}.fa-id-badge:before{content:"\F2C1"}.fa-id-card:before{content:"\F2C2"}.fa-id-card-alt:before{content:"\F47F"}.fa-ideal:before{content:"\F913"}.fa-igloo:before{content:"\F7AE"}.fa-image:before{content:"\F03E"}.fa-images:before{content:"\F302"}.fa-imdb:before{content:"\F2D8"}.fa-inbox:before{content:"\F01C"}.fa-indent:before{content:"\F03C"}.fa-industry:before{content:"\F275"}.fa-infinity:before{content:"\F534"}.fa-info:before{content:"\F129"}.fa-info-circle:before{content:"\F05A"}.fa-instagram:before{content:"\F16D"}.fa-instagram-square:before{content:"\F955"}.fa-intercom:before{content:"\F7AF"}.fa-internet-explorer:before{content:"\F26B"}.fa-invision:before{content:"\F7B0"}.fa-ioxhost:before{content:"\F208"}.fa-italic:before{content:"\F033"}.fa-itch-io:before{content:"\F83A"}.fa-itunes:before{content:"\F3B4"}.fa-itunes-note:before{content:"\F3B5"}.fa-java:before{content:"\F4E4"}.fa-jedi:before{content:"\F669"}.fa-jedi-order:before{content:"\F50E"}.fa-jenkins:before{content:"\F3B6"}.fa-jira:before{content:"\F7B1"}.fa-joget:before{content:"\F3B7"}.fa-joint:before{content:"\F595"}.fa-joomla:before{content:"\F1AA"}.fa-journal-whills:before{content:"\F66A"}.fa-js:before{content:"\F3B8"}.fa-js-square:before{content:"\F3B9"}.fa-jsfiddle:before{content:"\F1CC"}.fa-kaaba:before{content:"\F66B"}.fa-kaggle:before{content:"\F5FA"}.fa-key:before{content:"\F084"}.fa-keybase:before{content:"\F4F5"}.fa-keyboard:before{content:"\F11C"}.fa-keycdn:before{content:"\F3BA"}.fa-khanda:before{content:"\F66D"}.fa-kickstarter:before{content:"\F3BB"}.fa-kickstarter-k:before{content:"\F3BC"}.fa-kiss:before{content:"\F596"}.fa-kiss-beam:before{content:"\F597"}.fa-kiss-wink-heart:before{content:"\F598"}.fa-kiwi-bird:before{content:"\F535"}.fa-korvue:before{content:"\F42F"}.fa-landmark:before{content:"\F66F"}.fa-language:before{content:"\F1AB"}.fa-laptop:before{content:"\F109"}.fa-laptop-code:before{content:"\F5FC"}.fa-laptop-medical:before{content:"\F812"}.fa-laravel:before{content:"\F3BD"}.fa-lastfm:before{content:"\F202"}.fa-lastfm-square:before{content:"\F203"}.fa-laugh:before{content:"\F599"}.fa-laugh-beam:before{content:"\F59A"}.fa-laugh-squint:before{content:"\F59B"}.fa-laugh-wink:before{content:"\F59C"}.fa-layer-group:before{content:"\F5FD"}.fa-leaf:before{content:"\F06C"}.fa-leanpub:before{content:"\F212"}.fa-lemon:before{content:"\F094"}.fa-less:before{content:"\F41D"}.fa-less-than:before{content:"\F536"}.fa-less-than-equal:before{content:"\F537"}.fa-level-down-alt:before{content:"\F3BE"}.fa-level-up-alt:before{content:"\F3BF"}.fa-life-ring:before{content:"\F1CD"}.fa-lightbulb:before{content:"\F0EB"}.fa-line:before{content:"\F3C0"}.fa-link:before{content:"\F0C1"}.fa-linkedin:before{content:"\F08C"}.fa-linkedin-in:before{content:"\F0E1"}.fa-linode:before{content:"\F2B8"}.fa-linux:before{content:"\F17C"}.fa-lira-sign:before{content:"\F195"}.fa-list:before{content:"\F03A"}.fa-list-alt:before{content:"\F022"}.fa-list-ol:before{content:"\F0CB"}.fa-list-ul:before{content:"\F0CA"}.fa-location-arrow:before{content:"\F124"}.fa-lock:before{content:"\F023"}.fa-lock-open:before{content:"\F3C1"}.fa-long-arrow-alt-down:before{content:"\F309"}.fa-long-arrow-alt-left:before{content:"\F30A"}.fa-long-arrow-alt-right:before{content:"\F30B"}.fa-long-arrow-alt-up:before{content:"\F30C"}.fa-low-vision:before{content:"\F2A8"}.fa-luggage-cart:before{content:"\F59D"}.fa-lyft:before{content:"\F3C3"}.fa-magento:before{content:"\F3C4"}.fa-magic:before{content:"\F0D0"}.fa-magnet:before{content:"\F076"}.fa-mail-bulk:before{content:"\F674"}.fa-mailchimp:before{content:"\F59E"}.fa-male:before{content:"\F183"}.fa-mandalorian:before{content:"\F50F"}.fa-map:before{content:"\F279"}.fa-map-marked:before{content:"\F59F"}.fa-map-marked-alt:before{content:"\F5A0"}.fa-map-marker:before{content:"\F041"}.fa-map-marker-alt:before{content:"\F3C5"}.fa-map-pin:before{content:"\F276"}.fa-map-signs:before{content:"\F277"}.fa-markdown:before{content:"\F60F"}.fa-marker:before{content:"\F5A1"}.fa-mars:before{content:"\F222"}.fa-mars-double:before{content:"\F227"}.fa-mars-stroke:before{content:"\F229"}.fa-mars-stroke-h:before{content:"\F22B"}.fa-mars-stroke-v:before{content:"\F22A"}.fa-mask:before{content:"\F6FA"}.fa-mastodon:before{content:"\F4F6"}.fa-maxcdn:before{content:"\F136"}.fa-mdb:before{content:"\F8CA"}.fa-medal:before{content:"\F5A2"}.fa-medapps:before{content:"\F3C6"}.fa-medium:before{content:"\F23A"}.fa-medium-m:before{content:"\F3C7"}.fa-medkit:before{content:"\F0FA"}.fa-medrt:before{content:"\F3C8"}.fa-meetup:before{content:"\F2E0"}.fa-megaport:before{content:"\F5A3"}.fa-meh:before{content:"\F11A"}.fa-meh-blank:before{content:"\F5A4"}.fa-meh-rolling-eyes:before{content:"\F5A5"}.fa-memory:before{content:"\F538"}.fa-mendeley:before{content:"\F7B3"}.fa-menorah:before{content:"\F676"}.fa-mercury:before{content:"\F223"}.fa-meteor:before{content:"\F753"}.fa-microblog:before{content:"\F91A"}.fa-microchip:before{content:"\F2DB"}.fa-microphone:before{content:"\F130"}.fa-microphone-alt:before{content:"\F3C9"}.fa-microphone-alt-slash:before{content:"\F539"}.fa-microphone-slash:before{content:"\F131"}.fa-microscope:before{content:"\F610"}.fa-microsoft:before{content:"\F3CA"}.fa-minus:before{content:"\F068"}.fa-minus-circle:before{content:"\F056"}.fa-minus-square:before{content:"\F146"}.fa-mitten:before{content:"\F7B5"}.fa-mix:before{content:"\F3CB"}.fa-mixcloud:before{content:"\F289"}.fa-mixer:before{content:"\F956"}.fa-mizuni:before{content:"\F3CC"}.fa-mobile:before{content:"\F10B"}.fa-mobile-alt:before{content:"\F3CD"}.fa-modx:before{content:"\F285"}.fa-monero:before{content:"\F3D0"}.fa-money-bill:before{content:"\F0D6"}.fa-money-bill-alt:before{content:"\F3D1"}.fa-money-bill-wave:before{content:"\F53A"}.fa-money-bill-wave-alt:before{content:"\F53B"}.fa-money-check:before{content:"\F53C"}.fa-money-check-alt:before{content:"\F53D"}.fa-monument:before{content:"\F5A6"}.fa-moon:before{content:"\F186"}.fa-mortar-pestle:before{content:"\F5A7"}.fa-mosque:before{content:"\F678"}.fa-motorcycle:before{content:"\F21C"}.fa-mountain:before{content:"\F6FC"}.fa-mouse:before{content:"\F8CC"}.fa-mouse-pointer:before{content:"\F245"}.fa-mug-hot:before{content:"\F7B6"}.fa-music:before{content:"\F001"}.fa-napster:before{content:"\F3D2"}.fa-neos:before{content:"\F612"}.fa-network-wired:before{content:"\F6FF"}.fa-neuter:before{content:"\F22C"}.fa-newspaper:before{content:"\F1EA"}.fa-nimblr:before{content:"\F5A8"}.fa-node:before{content:"\F419"}.fa-node-js:before{content:"\F3D3"}.fa-not-equal:before{content:"\F53E"}.fa-notes-medical:before{content:"\F481"}.fa-npm:before{content:"\F3D4"}.fa-ns8:before{content:"\F3D5"}.fa-nutritionix:before{content:"\F3D6"}.fa-object-group:before{content:"\F247"}.fa-object-ungroup:before{content:"\F248"}.fa-odnoklassniki:before{content:"\F263"}.fa-odnoklassniki-square:before{content:"\F264"}.fa-oil-can:before{content:"\F613"}.fa-old-republic:before{content:"\F510"}.fa-om:before{content:"\F679"}.fa-opencart:before{content:"\F23D"}.fa-openid:before{content:"\F19B"}.fa-opera:before{content:"\F26A"}.fa-optin-monster:before{content:"\F23C"}.fa-orcid:before{content:"\F8D2"}.fa-osi:before{content:"\F41A"}.fa-otter:before{content:"\F700"}.fa-outdent:before{content:"\F03B"}.fa-page4:before{content:"\F3D7"}.fa-pagelines:before{content:"\F18C"}.fa-pager:before{content:"\F815"}.fa-paint-brush:before{content:"\F1FC"}.fa-paint-roller:before{content:"\F5AA"}.fa-palette:before{content:"\F53F"}.fa-palfed:before{content:"\F3D8"}.fa-pallet:before{content:"\F482"}.fa-paper-plane:before{content:"\F1D8"}.fa-paperclip:before{content:"\F0C6"}.fa-parachute-box:before{content:"\F4CD"}.fa-paragraph:before{content:"\F1DD"}.fa-parking:before{content:"\F540"}.fa-passport:before{content:"\F5AB"}.fa-pastafarianism:before{content:"\F67B"}.fa-paste:before{content:"\F0EA"}.fa-patreon:before{content:"\F3D9"}.fa-pause:before{content:"\F04C"}.fa-pause-circle:before{content:"\F28B"}.fa-paw:before{content:"\F1B0"}.fa-paypal:before{content:"\F1ED"}.fa-peace:before{content:"\F67C"}.fa-pen:before{content:"\F304"}.fa-pen-alt:before{content:"\F305"}.fa-pen-fancy:before{content:"\F5AC"}.fa-pen-nib:before{content:"\F5AD"}.fa-pen-square:before{content:"\F14B"}.fa-pencil-alt:before{content:"\F303"}.fa-pencil-ruler:before{content:"\F5AE"}.fa-penny-arcade:before{content:"\F704"}.fa-people-carry:before{content:"\F4CE"}.fa-pepper-hot:before{content:"\F816"}.fa-percent:before{content:"\F295"}.fa-percentage:before{content:"\F541"}.fa-periscope:before{content:"\F3DA"}.fa-person-booth:before{content:"\F756"}.fa-phabricator:before{content:"\F3DB"}.fa-phoenix-framework:before{content:"\F3DC"}.fa-phoenix-squadron:before{content:"\F511"}.fa-phone:before{content:"\F095"}.fa-phone-alt:before{content:"\F879"}.fa-phone-slash:before{content:"\F3DD"}.fa-phone-square:before{content:"\F098"}.fa-phone-square-alt:before{content:"\F87B"}.fa-phone-volume:before{content:"\F2A0"}.fa-photo-video:before{content:"\F87C"}.fa-php:before{content:"\F457"}.fa-pied-piper:before{content:"\F2AE"}.fa-pied-piper-alt:before{content:"\F1A8"}.fa-pied-piper-hat:before{content:"\F4E5"}.fa-pied-piper-pp:before{content:"\F1A7"}.fa-pied-piper-square:before{content:"\F91E"}.fa-piggy-bank:before{content:"\F4D3"}.fa-pills:before{content:"\F484"}.fa-pinterest:before{content:"\F0D2"}.fa-pinterest-p:before{content:"\F231"}.fa-pinterest-square:before{content:"\F0D3"}.fa-pizza-slice:before{content:"\F818"}.fa-place-of-worship:before{content:"\F67F"}.fa-plane:before{content:"\F072"}.fa-plane-arrival:before{content:"\F5AF"}.fa-plane-departure:before{content:"\F5B0"}.fa-play:before{content:"\F04B"}.fa-play-circle:before{content:"\F144"}.fa-playstation:before{content:"\F3DF"}.fa-plug:before{content:"\F1E6"}.fa-plus:before{content:"\F067"}.fa-plus-circle:before{content:"\F055"}.fa-plus-square:before{content:"\F0FE"}.fa-podcast:before{content:"\F2CE"}.fa-poll:before{content:"\F681"}.fa-poll-h:before{content:"\F682"}.fa-poo:before{content:"\F2FE"}.fa-poo-storm:before{content:"\F75A"}.fa-poop:before{content:"\F619"}.fa-portrait:before{content:"\F3E0"}.fa-pound-sign:before{content:"\F154"}.fa-power-off:before{content:"\F011"}.fa-pray:before{content:"\F683"}.fa-praying-hands:before{content:"\F684"}.fa-prescription:before{content:"\F5B1"}.fa-prescription-bottle:before{content:"\F485"}.fa-prescription-bottle-alt:before{content:"\F486"}.fa-print:before{content:"\F02F"}.fa-procedures:before{content:"\F487"}.fa-product-hunt:before{content:"\F288"}.fa-project-diagram:before{content:"\F542"}.fa-pushed:before{content:"\F3E1"}.fa-puzzle-piece:before{content:"\F12E"}.fa-python:before{content:"\F3E2"}.fa-qq:before{content:"\F1D6"}.fa-qrcode:before{content:"\F029"}.fa-question:before{content:"\F128"}.fa-question-circle:before{content:"\F059"}.fa-quidditch:before{content:"\F458"}.fa-quinscape:before{content:"\F459"}.fa-quora:before{content:"\F2C4"}.fa-quote-left:before{content:"\F10D"}.fa-quote-right:before{content:"\F10E"}.fa-quran:before{content:"\F687"}.fa-r-project:before{content:"\F4F7"}.fa-radiation:before{content:"\F7B9"}.fa-radiation-alt:before{content:"\F7BA"}.fa-rainbow:before{content:"\F75B"}.fa-random:before{content:"\F074"}.fa-raspberry-pi:before{content:"\F7BB"}.fa-ravelry:before{content:"\F2D9"}.fa-react:before{content:"\F41B"}.fa-reacteurope:before{content:"\F75D"}.fa-readme:before{content:"\F4D5"}.fa-rebel:before{content:"\F1D0"}.fa-receipt:before{content:"\F543"}.fa-record-vinyl:before{content:"\F8D9"}.fa-recycle:before{content:"\F1B8"}.fa-red-river:before{content:"\F3E3"}.fa-reddit:before{content:"\F1A1"}.fa-reddit-alien:before{content:"\F281"}.fa-reddit-square:before{content:"\F1A2"}.fa-redhat:before{content:"\F7BC"}.fa-redo:before{content:"\F01E"}.fa-redo-alt:before{content:"\F2F9"}.fa-registered:before{content:"\F25D"}.fa-remove-format:before{content:"\F87D"}.fa-renren:before{content:"\F18B"}.fa-reply:before{content:"\F3E5"}.fa-reply-all:before{content:"\F122"}.fa-replyd:before{content:"\F3E6"}.fa-republican:before{content:"\F75E"}.fa-researchgate:before{content:"\F4F8"}.fa-resolving:before{content:"\F3E7"}.fa-restroom:before{content:"\F7BD"}.fa-retweet:before{content:"\F079"}.fa-rev:before{content:"\F5B2"}.fa-ribbon:before{content:"\F4D6"}.fa-ring:before{content:"\F70B"}.fa-road:before{content:"\F018"}.fa-robot:before{content:"\F544"}.fa-rocket:before{content:"\F135"}.fa-rocketchat:before{content:"\F3E8"}.fa-rockrms:before{content:"\F3E9"}.fa-route:before{content:"\F4D7"}.fa-rss:before{content:"\F09E"}.fa-rss-square:before{content:"\F143"}.fa-ruble-sign:before{content:"\F158"}.fa-ruler:before{content:"\F545"}.fa-ruler-combined:before{content:"\F546"}.fa-ruler-horizontal:before{content:"\F547"}.fa-ruler-vertical:before{content:"\F548"}.fa-running:before{content:"\F70C"}.fa-rupee-sign:before{content:"\F156"}.fa-sad-cry:before{content:"\F5B3"}.fa-sad-tear:before{content:"\F5B4"}.fa-safari:before{content:"\F267"}.fa-salesforce:before{content:"\F83B"}.fa-sass:before{content:"\F41E"}.fa-satellite:before{content:"\F7BF"}.fa-satellite-dish:before{content:"\F7C0"}.fa-save:before{content:"\F0C7"}.fa-schlix:before{content:"\F3EA"}.fa-school:before{content:"\F549"}.fa-screwdriver:before{content:"\F54A"}.fa-scribd:before{content:"\F28A"}.fa-scroll:before{content:"\F70E"}.fa-sd-card:before{content:"\F7C2"}.fa-search:before{content:"\F002"}.fa-search-dollar:before{content:"\F688"}.fa-search-location:before{content:"\F689"}.fa-search-minus:before{content:"\F010"}.fa-search-plus:before{content:"\F00E"}.fa-searchengin:before{content:"\F3EB"}.fa-seedling:before{content:"\F4D8"}.fa-sellcast:before{content:"\F2DA"}.fa-sellsy:before{content:"\F213"}.fa-server:before{content:"\F233"}.fa-servicestack:before{content:"\F3EC"}.fa-shapes:before{content:"\F61F"}.fa-share:before{content:"\F064"}.fa-share-alt:before{content:"\F1E0"}.fa-share-alt-square:before{content:"\F1E1"}.fa-share-square:before{content:"\F14D"}.fa-shekel-sign:before{content:"\F20B"}.fa-shield-alt:before{content:"\F3ED"}.fa-ship:before{content:"\F21A"}.fa-shipping-fast:before{content:"\F48B"}.fa-shirtsinbulk:before{content:"\F214"}.fa-shoe-prints:before{content:"\F54B"}.fa-shopify:before{content:"\F957"}.fa-shopping-bag:before{content:"\F290"}.fa-shopping-basket:before{content:"\F291"}.fa-shopping-cart:before{content:"\F07A"}.fa-shopware:before{content:"\F5B5"}.fa-shower:before{content:"\F2CC"}.fa-shuttle-van:before{content:"\F5B6"}.fa-sign:before{content:"\F4D9"}.fa-sign-in-alt:before{content:"\F2F6"}.fa-sign-language:before{content:"\F2A7"}.fa-sign-out-alt:before{content:"\F2F5"}.fa-signal:before{content:"\F012"}.fa-signature:before{content:"\F5B7"}.fa-sim-card:before{content:"\F7C4"}.fa-simplybuilt:before{content:"\F215"}.fa-sistrix:before{content:"\F3EE"}.fa-sitemap:before{content:"\F0E8"}.fa-sith:before{content:"\F512"}.fa-skating:before{content:"\F7C5"}.fa-sketch:before{content:"\F7C6"}.fa-skiing:before{content:"\F7C9"}.fa-skiing-nordic:before{content:"\F7CA"}.fa-skull:before{content:"\F54C"}.fa-skull-crossbones:before{content:"\F714"}.fa-skyatlas:before{content:"\F216"}.fa-skype:before{content:"\F17E"}.fa-slack:before{content:"\F198"}.fa-slack-hash:before{content:"\F3EF"}.fa-slash:before{content:"\F715"}.fa-sleigh:before{content:"\F7CC"}.fa-sliders-h:before{content:"\F1DE"}.fa-slideshare:before{content:"\F1E7"}.fa-smile:before{content:"\F118"}.fa-smile-beam:before{content:"\F5B8"}.fa-smile-wink:before{content:"\F4DA"}.fa-smog:before{content:"\F75F"}.fa-smoking:before{content:"\F48D"}.fa-smoking-ban:before{content:"\F54D"}.fa-sms:before{content:"\F7CD"}.fa-snapchat:before{content:"\F2AB"}.fa-snapchat-ghost:before{content:"\F2AC"}.fa-snapchat-square:before{content:"\F2AD"}.fa-snowboarding:before{content:"\F7CE"}.fa-snowflake:before{content:"\F2DC"}.fa-snowman:before{content:"\F7D0"}.fa-snowplow:before{content:"\F7D2"}.fa-socks:before{content:"\F696"}.fa-solar-panel:before{content:"\F5BA"}.fa-sort:before{content:"\F0DC"}.fa-sort-alpha-down:before{content:"\F15D"}.fa-sort-alpha-down-alt:before{content:"\F881"}.fa-sort-alpha-up:before{content:"\F15E"}.fa-sort-alpha-up-alt:before{content:"\F882"}.fa-sort-amount-down:before{content:"\F160"}.fa-sort-amount-down-alt:before{content:"\F884"}.fa-sort-amount-up:before{content:"\F161"}.fa-sort-amount-up-alt:before{content:"\F885"}.fa-sort-down:before{content:"\F0DD"}.fa-sort-numeric-down:before{content:"\F162"}.fa-sort-numeric-down-alt:before{content:"\F886"}.fa-sort-numeric-up:before{content:"\F163"}.fa-sort-numeric-up-alt:before{content:"\F887"}.fa-sort-up:before{content:"\F0DE"}.fa-soundcloud:before{content:"\F1BE"}.fa-sourcetree:before{content:"\F7D3"}.fa-spa:before{content:"\F5BB"}.fa-space-shuttle:before{content:"\F197"}.fa-speakap:before{content:"\F3F3"}.fa-speaker-deck:before{content:"\F83C"}.fa-spell-check:before{content:"\F891"}.fa-spider:before{content:"\F717"}.fa-spinner:before{content:"\F110"}.fa-splotch:before{content:"\F5BC"}.fa-spotify:before{content:"\F1BC"}.fa-spray-can:before{content:"\F5BD"}.fa-square:before{content:"\F0C8"}.fa-square-full:before{content:"\F45C"}.fa-square-root-alt:before{content:"\F698"}.fa-squarespace:before{content:"\F5BE"}.fa-stack-exchange:before{content:"\F18D"}.fa-stack-overflow:before{content:"\F16C"}.fa-stackpath:before{content:"\F842"}.fa-stamp:before{content:"\F5BF"}.fa-star:before{content:"\F005"}.fa-star-and-crescent:before{content:"\F699"}.fa-star-half:before{content:"\F089"}.fa-star-half-alt:before{content:"\F5C0"}.fa-star-of-david:before{content:"\F69A"}.fa-star-of-life:before{content:"\F621"}.fa-staylinked:before{content:"\F3F5"}.fa-steam:before{content:"\F1B6"}.fa-steam-square:before{content:"\F1B7"}.fa-steam-symbol:before{content:"\F3F6"}.fa-step-backward:before{content:"\F048"}.fa-step-forward:before{content:"\F051"}.fa-stethoscope:before{content:"\F0F1"}.fa-sticker-mule:before{content:"\F3F7"}.fa-sticky-note:before{content:"\F249"}.fa-stop:before{content:"\F04D"}.fa-stop-circle:before{content:"\F28D"}.fa-stopwatch:before{content:"\F2F2"}.fa-store:before{content:"\F54E"}.fa-store-alt:before{content:"\F54F"}.fa-strava:before{content:"\F428"}.fa-stream:before{content:"\F550"}.fa-street-view:before{content:"\F21D"}.fa-strikethrough:before{content:"\F0CC"}.fa-stripe:before{content:"\F429"}.fa-stripe-s:before{content:"\F42A"}.fa-stroopwafel:before{content:"\F551"}.fa-studiovinari:before{content:"\F3F8"}.fa-stumbleupon:before{content:"\F1A4"}.fa-stumbleupon-circle:before{content:"\F1A3"}.fa-subscript:before{content:"\F12C"}.fa-subway:before{content:"\F239"}.fa-suitcase:before{content:"\F0F2"}.fa-suitcase-rolling:before{content:"\F5C1"}.fa-sun:before{content:"\F185"}.fa-superpowers:before{content:"\F2DD"}.fa-superscript:before{content:"\F12B"}.fa-supple:before{content:"\F3F9"}.fa-surprise:before{content:"\F5C2"}.fa-suse:before{content:"\F7D6"}.fa-swatchbook:before{content:"\F5C3"}.fa-swift:before{content:"\F8E1"}.fa-swimmer:before{content:"\F5C4"}.fa-swimming-pool:before{content:"\F5C5"}.fa-symfony:before{content:"\F83D"}.fa-synagogue:before{content:"\F69B"}.fa-sync:before{content:"\F021"}.fa-sync-alt:before{content:"\F2F1"}.fa-syringe:before{content:"\F48E"}.fa-table:before{content:"\F0CE"}.fa-table-tennis:before{content:"\F45D"}.fa-tablet:before{content:"\F10A"}.fa-tablet-alt:before{content:"\F3FA"}.fa-tablets:before{content:"\F490"}.fa-tachometer-alt:before{content:"\F3FD"}.fa-tag:before{content:"\F02B"}.fa-tags:before{content:"\F02C"}.fa-tape:before{content:"\F4DB"}.fa-tasks:before{content:"\F0AE"}.fa-taxi:before{content:"\F1BA"}.fa-teamspeak:before{content:"\F4F9"}.fa-teeth:before{content:"\F62E"}.fa-teeth-open:before{content:"\F62F"}.fa-telegram:before{content:"\F2C6"}.fa-telegram-plane:before{content:"\F3FE"}.fa-temperature-high:before{content:"\F769"}.fa-temperature-low:before{content:"\F76B"}.fa-tencent-weibo:before{content:"\F1D5"}.fa-tenge:before{content:"\F7D7"}.fa-terminal:before{content:"\F120"}.fa-text-height:before{content:"\F034"}.fa-text-width:before{content:"\F035"}.fa-th:before{content:"\F00A"}.fa-th-large:before{content:"\F009"}.fa-th-list:before{content:"\F00B"}.fa-the-red-yeti:before{content:"\F69D"}.fa-theater-masks:before{content:"\F630"}.fa-themeco:before{content:"\F5C6"}.fa-themeisle:before{content:"\F2B2"}.fa-thermometer:before{content:"\F491"}.fa-thermometer-empty:before{content:"\F2CB"}.fa-thermometer-full:before{content:"\F2C7"}.fa-thermometer-half:before{content:"\F2C9"}.fa-thermometer-quarter:before{content:"\F2CA"}.fa-thermometer-three-quarters:before{content:"\F2C8"}.fa-think-peaks:before{content:"\F731"}.fa-thumbs-down:before{content:"\F165"}.fa-thumbs-up:before{content:"\F164"}.fa-thumbtack:before{content:"\F08D"}.fa-ticket-alt:before{content:"\F3FF"}.fa-times:before{content:"\F00D"}.fa-times-circle:before{content:"\F057"}.fa-tint:before{content:"\F043"}.fa-tint-slash:before{content:"\F5C7"}.fa-tired:before{content:"\F5C8"}.fa-toggle-off:before{content:"\F204"}.fa-toggle-on:before{content:"\F205"}.fa-toilet:before{content:"\F7D8"}.fa-toilet-paper:before{content:"\F71E"}.fa-toolbox:before{content:"\F552"}.fa-tools:before{content:"\F7D9"}.fa-tooth:before{content:"\F5C9"}.fa-torah:before{content:"\F6A0"}.fa-torii-gate:before{content:"\F6A1"}.fa-tractor:before{content:"\F722"}.fa-trade-federation:before{content:"\F513"}.fa-trademark:before{content:"\F25C"}.fa-traffic-light:before{content:"\F637"}.fa-trailer:before{content:"\F941"}.fa-train:before{content:"\F238"}.fa-tram:before{content:"\F7DA"}.fa-transgender:before{content:"\F224"}.fa-transgender-alt:before{content:"\F225"}.fa-trash:before{content:"\F1F8"}.fa-trash-alt:before{content:"\F2ED"}.fa-trash-restore:before{content:"\F829"}.fa-trash-restore-alt:before{content:"\F82A"}.fa-tree:before{content:"\F1BB"}.fa-trello:before{content:"\F181"}.fa-tripadvisor:before{content:"\F262"}.fa-trophy:before{content:"\F091"}.fa-truck:before{content:"\F0D1"}.fa-truck-loading:before{content:"\F4DE"}.fa-truck-monster:before{content:"\F63B"}.fa-truck-moving:before{content:"\F4DF"}.fa-truck-pickup:before{content:"\F63C"}.fa-tshirt:before{content:"\F553"}.fa-tty:before{content:"\F1E4"}.fa-tumblr:before{content:"\F173"}.fa-tumblr-square:before{content:"\F174"}.fa-tv:before{content:"\F26C"}.fa-twitch:before{content:"\F1E8"}.fa-twitter:before{content:"\F099"}.fa-twitter-square:before{content:"\F081"}.fa-typo3:before{content:"\F42B"}.fa-uber:before{content:"\F402"}.fa-ubuntu:before{content:"\F7DF"}.fa-uikit:before{content:"\F403"}.fa-umbraco:before{content:"\F8E8"}.fa-umbrella:before{content:"\F0E9"}.fa-umbrella-beach:before{content:"\F5CA"}.fa-underline:before{content:"\F0CD"}.fa-undo:before{content:"\F0E2"}.fa-undo-alt:before{content:"\F2EA"}.fa-uniregistry:before{content:"\F404"}.fa-unity:before{content:"\F949"}.fa-universal-access:before{content:"\F29A"}.fa-university:before{content:"\F19C"}.fa-unlink:before{content:"\F127"}.fa-unlock:before{content:"\F09C"}.fa-unlock-alt:before{content:"\F13E"}.fa-untappd:before{content:"\F405"}.fa-upload:before{content:"\F093"}.fa-ups:before{content:"\F7E0"}.fa-usb:before{content:"\F287"}.fa-user:before{content:"\F007"}.fa-user-alt:before{content:"\F406"}.fa-user-alt-slash:before{content:"\F4FA"}.fa-user-astronaut:before{content:"\F4FB"}.fa-user-check:before{content:"\F4FC"}.fa-user-circle:before{content:"\F2BD"}.fa-user-clock:before{content:"\F4FD"}.fa-user-cog:before{content:"\F4FE"}.fa-user-edit:before{content:"\F4FF"}.fa-user-friends:before{content:"\F500"}.fa-user-graduate:before{content:"\F501"}.fa-user-injured:before{content:"\F728"}.fa-user-lock:before{content:"\F502"}.fa-user-md:before{content:"\F0F0"}.fa-user-minus:before{content:"\F503"}.fa-user-ninja:before{content:"\F504"}.fa-user-nurse:before{content:"\F82F"}.fa-user-plus:before{content:"\F234"}.fa-user-secret:before{content:"\F21B"}.fa-user-shield:before{content:"\F505"}.fa-user-slash:before{content:"\F506"}.fa-user-tag:before{content:"\F507"}.fa-user-tie:before{content:"\F508"}.fa-user-times:before{content:"\F235"}.fa-users:before{content:"\F0C0"}.fa-users-cog:before{content:"\F509"}.fa-usps:before{content:"\F7E1"}.fa-ussunnah:before{content:"\F407"}.fa-utensil-spoon:before{content:"\F2E5"}.fa-utensils:before{content:"\F2E7"}.fa-vaadin:before{content:"\F408"}.fa-vector-square:before{content:"\F5CB"}.fa-venus:before{content:"\F221"}.fa-venus-double:before{content:"\F226"}.fa-venus-mars:before{content:"\F228"}.fa-viacoin:before{content:"\F237"}.fa-viadeo:before{content:"\F2A9"}.fa-viadeo-square:before{content:"\F2AA"}.fa-vial:before{content:"\F492"}.fa-vials:before{content:"\F493"}.fa-viber:before{content:"\F409"}.fa-video:before{content:"\F03D"}.fa-video-slash:before{content:"\F4E2"}.fa-vihara:before{content:"\F6A7"}.fa-vimeo:before{content:"\F40A"}.fa-vimeo-square:before{content:"\F194"}.fa-vimeo-v:before{content:"\F27D"}.fa-vine:before{content:"\F1CA"}.fa-vk:before{content:"\F189"}.fa-vnv:before{content:"\F40B"}.fa-voicemail:before{content:"\F897"}.fa-volleyball-ball:before{content:"\F45F"}.fa-volume-down:before{content:"\F027"}.fa-volume-mute:before{content:"\F6A9"}.fa-volume-off:before{content:"\F026"}.fa-volume-up:before{content:"\F028"}.fa-vote-yea:before{content:"\F772"}.fa-vr-cardboard:before{content:"\F729"}.fa-vuejs:before{content:"\F41F"}.fa-walking:before{content:"\F554"}.fa-wallet:before{content:"\F555"}.fa-warehouse:before{content:"\F494"}.fa-water:before{content:"\F773"}.fa-wave-square:before{content:"\F83E"}.fa-waze:before{content:"\F83F"}.fa-weebly:before{content:"\F5CC"}.fa-weibo:before{content:"\F18A"}.fa-weight:before{content:"\F496"}.fa-weight-hanging:before{content:"\F5CD"}.fa-weixin:before{content:"\F1D7"}.fa-whatsapp:before{content:"\F232"}.fa-whatsapp-square:before{content:"\F40C"}.fa-wheelchair:before{content:"\F193"}.fa-whmcs:before{content:"\F40D"}.fa-wifi:before{content:"\F1EB"}.fa-wikipedia-w:before{content:"\F266"}.fa-wind:before{content:"\F72E"}.fa-window-close:before{content:"\F410"}.fa-window-maximize:before{content:"\F2D0"}.fa-window-minimize:before{content:"\F2D1"}.fa-window-restore:before{content:"\F2D2"}.fa-windows:before{content:"\F17A"}.fa-wine-bottle:before{content:"\F72F"}.fa-wine-glass:before{content:"\F4E3"}.fa-wine-glass-alt:before{content:"\F5CE"}.fa-wix:before{content:"\F5CF"}.fa-wizards-of-the-coast:before{content:"\F730"}.fa-wolf-pack-battalion:before{content:"\F514"}.fa-won-sign:before{content:"\F159"}.fa-wordpress:before{content:"\F19A"}.fa-wordpress-simple:before{content:"\F411"}.fa-wpbeginner:before{content:"\F297"}.fa-wpexplorer:before{content:"\F2DE"}.fa-wpforms:before{content:"\F298"}.fa-wpressr:before{content:"\F3E4"}.fa-wrench:before{content:"\F0AD"}.fa-x-ray:before{content:"\F497"}.fa-xbox:before{content:"\F412"}.fa-xing:before{content:"\F168"}.fa-xing-square:before{content:"\F169"}.fa-y-combinator:before{content:"\F23B"}.fa-yahoo:before{content:"\F19E"}.fa-yammer:before{content:"\F840"}.fa-yandex:before{content:"\F413"}.fa-yandex-international:before{content:"\F414"}.fa-yarn:before{content:"\F7E3"}.fa-yelp:before{content:"\F1E9"}.fa-yen-sign:before{content:"\F157"}.fa-yin-yang:before{content:"\F6AD"}.fa-yoast:before{content:"\F2B1"}.fa-youtube:before{content:"\F167"}.fa-youtube-square:before{content:"\F431"}.fa-zhihu:before{content:"\F63F"}.sr-only{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sr-only-focusable:active,.sr-only-focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}@font-face{font-family:Font Awesome\ 5 Brands;font-style:normal;font-weight:400;font-display:auto;src:url(/openj9/static/fa-brands-400-57dcda6f368ea90179f75cbdae96c263.eot);src:url(/openj9/static/fa-brands-400-57dcda6f368ea90179f75cbdae96c263.eot?#iefix) format("embedded-opentype"),url(/openj9/static/fa-brands-400-067595ad77ecc0db9c81c8905a7eef32.woff2) format("woff2"),url(/openj9/static/fa-brands-400-b564da88bbf0c4aa446fa19653713cd1.woff) format("woff"),url(/openj9/static/fa-brands-400-9ec698d1a597bff5df337094b71ddaaf.ttf) format("truetype"),url(/openj9/static/fa-brands-400-9d67fa1429375bd2a899a17eb77d0342.svg#fontawesome) format("svg")}.fab{font-family:Font Awesome\ 5 Brands}@font-face{font-family:Font Awesome\ 5 Free;font-style:normal;font-weight:400;font-display:auto;src:url(/openj9/static/fa-regular-400-3351f435b3c9037fd88aeb04dc1e43bc.eot);src:url(/openj9/static/fa-regular-400-3351f435b3c9037fd88aeb04dc1e43bc.eot?#iefix) format("embedded-opentype"),url(/openj9/static/fa-regular-400-4165c2688309cbfb1b877caf8f75afb5.woff2) format("woff2"),url(/openj9/static/fa-regular-400-73cf49a2232c06c920b7a34e36bfb58c.woff) format("woff"),url(/openj9/static/fa-regular-400-a0e3ac82940c1998c5977fd4bc1f5ef6.ttf) format("truetype"),url(/openj9/static/fa-regular-400-5d0861781aeef6c82fda3a3076954a1b.svg#fontawesome) format("svg")}.fab,.far{font-weight:400}@font-face{font-family:Font Awesome\ 5 Free;font-style:normal;font-weight:900;font-display:auto;src:url(/openj9/static/fa-solid-900-89e02bae13c9131c7468b1e729339ac1.eot);src:url(/openj9/static/fa-solid-900-89e02bae13c9131c7468b1e729339ac1.eot?#iefix) format("embedded-opentype"),url(/openj9/static/fa-solid-900-55eb2a60e8181f0e68b558c991973bf0.woff2) format("woff2"),url(/openj9/static/fa-solid-900-cdfec5cf5e9840889790bcf2c4042583.woff) format("woff"),url(/openj9/static/fa-solid-900-75f38a159982b6bd1704891332d95fa7.ttf) format("truetype"),url(/openj9/static/fa-solid-900-0724bb8b89ab6b8b9b7df917b17be0b7.svg#fontawesome) format("svg")}.fa,.far,.fas{font-family:Font Awesome\ 5 Free}.fa,.fas{font-weight:900}</style><meta name="generator" content="Gatsby 2.19.7"/><link rel="icon" href="/openj9/favicon-32x32.png?v=521b6ab03638f6a52fffc5f7bf4c617e"/><link rel="manifest" href="/openj9/manifest.webmanifest"/><link rel="apple-touch-icon" sizes="48x48" href="/openj9/icons/icon-48x48.png?v=521b6ab03638f6a52fffc5f7bf4c617e"/><link rel="apple-touch-icon" sizes="72x72" href="/openj9/icons/icon-72x72.png?v=521b6ab03638f6a52fffc5f7bf4c617e"/><link rel="apple-touch-icon" sizes="96x96" href="/openj9/icons/icon-96x96.png?v=521b6ab03638f6a52fffc5f7bf4c617e"/><link rel="apple-touch-icon" sizes="144x144" href="/openj9/icons/icon-144x144.png?v=521b6ab03638f6a52fffc5f7bf4c617e"/><link rel="apple-touch-icon" sizes="192x192" href="/openj9/icons/icon-192x192.png?v=521b6ab03638f6a52fffc5f7bf4c617e"/><link rel="apple-touch-icon" sizes="256x256" href="/openj9/icons/icon-256x256.png?v=521b6ab03638f6a52fffc5f7bf4c617e"/><link rel="apple-touch-icon" sizes="384x384" href="/openj9/icons/icon-384x384.png?v=521b6ab03638f6a52fffc5f7bf4c617e"/><link rel="apple-touch-icon" sizes="512x512" href="/openj9/icons/icon-512x512.png?v=521b6ab03638f6a52fffc5f7bf4c617e"/><link rel="preconnect dns-prefetch" href="https://www.google-analytics.com"/><link as="script" rel="preload" href="/openj9/component---src-pages-performance-js-985e1e9d446123113ec2.js"/><link as="script" rel="preload" href="/openj9/commons-b35008cb74c6abd7ace8.js"/><link as="script" rel="preload" href="/openj9/app-2da2270a07d62743bcd4.js"/><link as="script" rel="preload" href="/openj9/styles-cc4082ebb0cb6903d934.js"/><link as="script" rel="preload" href="/openj9/webpack-runtime-4324011276ab16472ff8.js"/><link as="fetch" rel="preload" href="/openj9/page-data/performance/page-data.json" crossorigin="anonymous"/></head><body><div id="___gatsby"><div style="outline:none" tabindex="-1" role="group" id="gatsby-focus-wrapper"><style data-emotion-css="t923zi">body{color:text;background-color:var(--theme-ui-colors-background,#FFFFFF);}</style><style data-emotion-css="1gb9wyy">*{box-sizing:border-box;}body{margin:0;font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.5;font-weight:400;}</style><style data-emotion-css="1xgro3h">*{padding:0;margin:0;}</style><style data-emotion-css="gns71q">.css-gns71q{display:none;background-color:var(--theme-ui-colors-primary,#434343);width:100%;color:var(--theme-ui-colors-lightText,#d8d8d8);padding-left:40px;padding-right:40px;padding-top:32px;padding-bottom:32px;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}@media screen and (min-width:35rem){.css-gns71q{display:none;}}@media screen and (min-width:62.5rem){.css-gns71q{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}}@media screen and (min-width:85rem){.css-gns71q{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}}</style><header class="css-gns71q"><style data-emotion-css="4golyb">.css-4golyb{-webkit-flex:1;-ms-flex:1;flex:1;opacity:1;pointer-events:all;}</style><div class="css-4golyb"><a href="/openj9/"><img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNzlweCIgaGVpZ2h0PSIzM3B4IiB2aWV3Qm94PSIwIDAgNzkgMzMiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5Mb2dvPC90aXRsZT4KICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPgogICAgPGcgaWQ9IlBhZ2UtMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9IkxvZ28iIGZpbGwtcnVsZT0ibm9uemVybyI+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMC4wNDUyMzE4LDE5LjQ2MTIzMzcgQzkuMjQwNjc1MjUsMjAuNjk4NDMyOCA4LjEyNjE5NTA0LDIxLjMxNjY4NzggNi43MDA3Nzc4OSwyMS4zMTY2ODc4IEM1LjMxNTQ1ODI5LDIxLjMxNjY4NzggNC4yMDg2NTAxNywyMC43MTkxMTAzIDMuMzgwMjA4NzgsMTkuNTIzODE3NCBDMi41NTIyMDE2NiwxOC4zMjgyNDg5IDIuMTM4MDUzMzUsMTYuNzc4NDA3MSAyLjEzODA1MzM1LDE0Ljg3MzMyNzMgQzIuMTM4MDUzMzUsMTIuOTIyNzU3MSAyLjU0ODE0ODQ4LDExLjM0Mzk2NyAzLjM2ODMzODc1LDEwLjEzNzIzMjYgQzQuMTg4NjczNzgsOC45MzA2MzYxMiA1LjI5NTE5MjM4LDguMzI2OTkzMjQgNi42ODg3NjMxLDguMzI2OTkzMjQgQzguMDY2NTU1MzcsOC4zMjY5OTMyNCA5LjE3MTE5MjE0LDguODg1MjgzNjUgMTAuMDAzMzk3MiwxMC4wMDA0ODYgQzEwLjgzNTYwMjMsMTEuMTE2Mzc3NSAxMS4yNTE3NzcyLDEyLjY3NjI4MjIgMTEuMjUxNzc3MiwxNC42Nzk2NDg4IEMxMS4yNTE3NzcyLDE2LjYzMDM1NjggMTAuODQ5NDk4OSwxOC4yMjQxNzI1IDEwLjA0NTIzMTgsMTkuNDYxMjMzNyBNNi43MTI3OTI2OCw2LjczNDY5Mzg4IEM0LjY5MDExMDI1LDYuNzM0NjkzODggMy4wNjU2NTI5Myw3LjUwMTQxMjcgMS44MzkyNzU5NSw5LjAzNDAyMzI0IEMwLjYxMzE4ODQ4OSwxMC41NjY3NzE2IDAsMTIuNTA5NDg0NCAwLDE0Ljg2MTg4NTggQzAsMTcuMTE1NzI0OCAwLjU4NTM5NTI0MywxOS4wMTg1OTkxIDEuNzU2MDQwOTcsMjAuNTcwMDk1IEMyLjkyNjU0MTk1LDIyLjEyMjAwNDQgNC41NTg4MTYxMiwyMi44OTc5NTkyIDYuNjUzMDA4MjUsMjIuODk3OTU5MiBDOC43NzkxOTE1NywyMi44OTc5NTkyIDEwLjQzMzQ2ODcsMjIuMDgwMDk4MiAxMS42MTYyNzQsMjAuNDQ1MDY1NSBDMTIuNzk4NTAwMiwxOC44MDk3NTcxIDEzLjM4OTgzMDUsMTYuODkxNDQzNyAxMy4zODk4MzA1LDE0LjY5MTIyODEgQzEzLjM4OTgzMDUsMTIuMzk5NjE4MyAxMi43ODA1NTA0LDEwLjUwMDQ2NiAxMS41NjIyNzk4LDguOTkzOTA5MDQgQzEwLjM0Mzg2NDUsNy40ODgwNDEzIDguNzI3MzY4NzQsNi43MzQ2OTM4OCA2LjcxMjc5MjY4LDYuNzM0NjkzODgiIGlkPSJTaGFwZSIgZmlsbD0iIzVEQTdBMyI+PC9wYXRoPgogICAgICAgICAgICA8cGF0aCBkPSJNMjIuOTc0MzgxNywyMS4zNjc1NDcyIEMyMi4zMTQxOTk5LDIyLjA3MDg5MDkgMjEuNTU1MzY4NiwyMi40MjMxMzExIDIwLjY5OTU0OTUsMjIuNDIzMTMxMSBDMTkuOTYwMDU1MywyMi40MjMxMzExIDE5LjI1MDkyNjQsMjIuMTMwOTk0OCAxOC41Njk3NDU3LDIxLjU0NjU4MDEgQzE3Ljg4ODI2MjksMjAuOTYzMDE3OSAxNy41MTMzMDM4LDIwLjIyMzAxNTEgMTcuMzYyMjMyNSwxOS4zMjc5OTI0IEwxNy4zNjIyMzI1LDE1Ljk4NjA0NCBDMTcuNjY0Mzc1MiwxNS4xNzMxNDkxIDE3Ljk2OTM4ODIsMTQuNDgxNDU2OCAxOC41ODg0Nzg2LDEzLjkxMDk2NjggQzE5LjIwNzU2ODksMTMuMzQwNDc2OSAxOS45MDY3MjcxLDEzLjA1NTE2MDkgMjAuNjg3OTE3LDEzLjA1NTE2MDkgQzIxLjY3NjgzLDEzLjA1NTE2MDkgMjIuNDcwNDA3NywxMy40NTk2OTAxIDIzLjA2ODgwMTMsMTQuMjY4NjA2NSBDMjMuNjY2ODkyNywxNS4wNzc1MjI4IDIzLjk2NjAxNCwxNi4yMjg0NDg5IDIzLjk2NjAxNCwxNy43MjE1MjY5IEMyMy45NjYwMTQsMTkuNDQ4OTEwNyAyMy42MzUxNjc3LDIwLjY2NDYyOTcgMjIuOTc0MzgxNywyMS4zNjc1NDcyIE0yMS4xNjI3MzQyLDExLjQ0ODk3OTYgQzE5LjQwMzM1NzQsMTEuNDQ4OTc5NiAxOC4xMTc1ODkyLDEyLjMyNDUzNiAxNy4yMTExNjEyLDE0LjA3NDc5NjIgTDE3LjIxMTE2MTIsMTEuNjk4MjA0OCBMMTUuMzk4MzA1MSwxMS42OTgyMDQ4IEwxNS4zOTgzMDUxLDI3LjYxMjI0NDkgTDE3LjM2MjIzMjUsMjcuNjEyMjQ0OSBMMTcuMzYyMjMyNSwyMS44MjQ5MzM3IEMxOC4yNjg2NjA1LDIzLjIzOTQzNjEgMTkuNTA4OTU2MiwyMy45NDcwNDI1IDIxLjA4NzY1MTcsMjMuOTQ3MDQyNSBDMjIuNTU4OTM1NSwyMy45NDcwNDI1IDIzLjc2MjgyMywyMy4zNzk2Nzg2IDI0LjcwMjAzMzUsMjIuMjQ1NTE5MSBDMjUuNjQwNzkwOCwyMS4xMTA3OTEyIDI2LjExMDE2OTUsMTkuNTc3NTAxOCAyNi4xMTAxNjk1LDE3LjY0NTM2NjkgQzI2LjExMDE2OTUsMTUuODUzNDc0NCAyNS42NjI5OTgzLDE0LjM3MjkwMDMgMjQuNzUwNTI3NCwxMy4yMDMzNjA0IEMyMy44Mzc2MDMzLDEyLjAzMzY3ODUgMjIuNjQ4MDY3NiwxMS40NDg5Nzk2IDIxLjE2MjczNDIsMTEuNDQ4OTc5NiIgaWQ9IlNoYXBlIiBmaWxsPSIjNURBN0EzIj48L3BhdGg+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMC4yNjM1ODc2LDE2LjM2MzMzNjcgQzMwLjM0MTcwNzYsMTUuMjU4OTg2OCAzMC43MDEzMTY2LDE0LjQwODM2MTMgMzEuMzQxNzAwNiwxMy43NzA0NjExIEMzMS45ODE2NTYxLDEzLjEzMjQyMyAzMi43NjE0Mjc5LDEyLjgwNDAxNjkgMzMuNjgwNzMwMiwxMi44MDQwMTY5IEMzNC4zNjQxMDE2LDEyLjgwNDAxNjkgMzQuOTQ5MDczMiwxMi45NzU3NDMzIDM1LjQzNjUwMiwxMy4zMjkxMzUzIEMzNS45MjM1MDIzLDEzLjY4MTk3NTEgMzYuMjY5NDAxLDE0LjEyNTc4NTcgMzYuNDczNDg0MSwxNC42MjcwMjI1IEMzNi42NzgxMzg1LDE1LjEyODEyMTMgMzYuNzg3NTM1MSwxNS42NzMxMTggMzYuODAzMzg3NiwxNi4zNjMzMzY3IEwzMC4yNjM1ODc2LDE2LjM2MzMzNjcgWiBNMzcuMzc1MjIwMiwxMy4wMzA2ODQ4IEMzNi40MjgzNTQ1LDExLjk5MDI0OTEgMzUuMTc3NDM1LDExLjQ0ODk3OTYgMzMuNjIxNzQ3NSwxMS40NDg5Nzk2IEMzMi4wNDI5MjM5LDExLjQ0ODk3OTYgMzAuNzMwNTkzOCwxMi4wMDI1MzUgMjkuNjg2MDQyNCwxMy4xMzE0NTY3IEMyOC42NDEyMDU0LDE0LjI1OTgyNjIgMjguMTE4NjQ0MSwxNS43MzQ5NjE2IDI4LjExODY0NDEsMTcuNTY2OTQwMSBDMjguMTE4NjQ0MSwxOS4zNjA4MTg0IDI4LjYyMTA2ODQsMjAuODA3Mzc4OCAyOS42MjY5MTY4LDIxLjkxMzM4NTIgQzMwLjYzMjQ3OTYsMjMuMDE5OTQzOCAzMS45NDg1MjMsMjMuNTcxNDI4NiAzMy41NzQ5MDQsMjMuNTcxNDI4NiBDMzQuODA4MjU3MywyMy41NzE0Mjg2IDM1Ljg4MDIyOTIsMjMuMjQ4OTU4NCAzNi43OTE1MzM5LDIyLjYwNDcwODMgQzM3LjcwMzEyNDIsMjEuOTYwNzM0MiAzOC4zMTU4MDIsMjEuMTQ3MzgwNSAzOC42MzAxMzg2LDIwLjE2NDA5NSBMMzYuOTA5OTI3OCwxOS44MjI3MTI4IEMzNi4yODg5NjY3LDIxLjMzMzQ2MzUgMzUuMjIwNTY1MiwyMi4wODkyNTI5IDMzLjcwNDI5NDcsMjIuMDg5MjUyOSBDMzIuODYzNjgzNywyMi4wODkyNTI5IDMyLjA2NjM0NTYsMjEuODI4MDc0MiAzMS4zMTIyODA3LDIxLjIyMDY4MTcgQzMwLjU1ODA3MjksMjAuNjEzMDEzMiAzMC4xODA3NTQ3LDE5LjQwMDI5OSAzMC4xODA3NTQ3LDE3Ljc0Mzc3NDEgTDM4LjgzMDUwODUsMTcuNzQzNzc0MSBDMzguODA2OTQzOSwxNS41MzUwNzQzIDM4LjMyMTgwMDIsMTQuMDcwODQ0MyAzNy4zNzUyMjAyLDEzLjAzMDY4NDggTDM3LjM3NTIyMDIsMTMuMDMwNjg0OCBaIiBpZD0iU2hhcGUiIGZpbGw9IiM1REE3QTMiPjwvcGF0aD4KICAgICAgICAgICAgPHBhdGggZD0iTTQ4LjQzNjA2MzksMTIuMTMxMzMxIEM0Ny43NjA0NDM5LDExLjY3NjU3MTQgNDYuOTE5MzU2NiwxMS40NDg5Nzk2IDQ1Ljk1ODg0MjIsMTEuNDQ4OTc5NiBDNDQuMjkzMDQ0MywxMS40NDg5Nzk2IDQyLjk1MDQ1NjMsMTIuMjgxMTc0IDQxLjg2ODk3LDEzLjk0NTEzODggTDQxLjg2ODk3LDExLjY5NzA2ODggTDQwLjE2OTQ5MTUsMTEuNjk3MDY4OCBMNDAuMTY5NDkxNSwyMy41NzE0Mjg2IEw0Mi4wMjM0NjgxLDIzLjU3MTQyODYgTDQyLjAyMzQ2ODEsMTcuMDk0Mzg3NSBDNDIuMDIzNDY4MSwxNS44NzQwMTQ3IDQyLjM4NTkyMDUsMTQuODg5OTk4MiA0My4wNzg1MzUyLDE0LjE0MzE4NiBDNDMuNzcwNjg2NCwxMy4zOTY3OTggNDQuNjM1NDEyLDEzLjAyMzYwNCA0NS42NTUwOTkxLDEzLjAyMzYwNCBDNDYuMzk0NjgxMiwxMy4wMjM2MDQgNDcuMDQyODAwNSwxMy4yNDUyNTg2IDQ3LjU2MTE0MTUsMTMuNjg4NTY3OSBDNDguMDc5NjM2OSwxNC4xMzE1OTQ0IDQ4LjM1Nzg4NzksMTQuODk3NjMxNyA0OC4zNTc4ODc5LDE1Ljk4NjUzODQgTDQ4LjM1Nzg4NzksMjMuNTcxNDI4NiBMNTAuMjExODY0NCwyMy41NzE0Mjg2IEw1MC4yMTE4NjQ0LDE2Ljc0NDUxODEgQzUwLjIxMTg2NDQsMTUuMjU5Mzc1NSA1MC4wODE0NjgxLDE0LjIzMzA5MTkgNDkuODMwNDA4NywxMy42NjUyNDMyIEM0OS41Nzk2NTg0LDEzLjA5NzM5NDYgNDkuMTExODM4MywxMi41ODYwOTA1IDQ4LjQzNjA2MzksMTIuMTMxMzMxIFoiIGlkPSJTaGFwZSIgZmlsbD0iIzVEQTdBMyI+PC9wYXRoPgogICAgICAgICAgICA8cGF0aCBkPSJNNTcuNzMyOTYwNywxOS4zMjIyNzI0IEM1Ny43MzI5NjA3LDIwLjIxNjkxMjkgNTcuNjY0MDE3MywyMC44NjM1NjU5IDU3LjUyOTgzNDEsMjEuMjYzMjQ2NCBDNTcuMzk1MjIzNiwyMS42NjI0OTE5IDU3LjEzMTQxNTQsMjEuOTg3NjMxMSA1Ni43Mzk0MDY4LDIyLjIzOTM4OTIgQzU2LjM0NzY4MywyMi40OTA4NTczIDU1LjY5NjI4MiwyMi42MTYxNTYzIDU0Ljg2OTM4ODcsMjIuNjE2MTU2MyBDNTQuMjg4MDcwNywyMi42MTYxNTYzIDUzLjc0NDUwMDUsMjIuNTM4NTY5NSA1Mi44ODk4MzA1LDIyLjM4MzI1MSBMNTIuODg5ODMwNSwyMy45MzQ2OTYgQzUzLjc0NDUwMDUsMjQuMTQxMjA3MyA1NC4zNzg4MDgyLDI0LjI0NDg5OCA1NS4wOTc0NDMyLDI0LjI0NDg5OCBDNTYuNDM5NTYsMjQuMjQ0ODk4IDU3LjUzNTEwNDYsMjMuODgyNDg4MSA1OC4zNDc4OTU4LDIzLjE1ODM5MzQgQzU5LjE2MDQwMjEsMjIuNDMzODYzNyA1OS41ODQ3NDU4LDIxLjE1NDkxNSA1OS41ODQ3NDU4LDE5LjMyMTExMjMgTDU5LjU4NDc0NTgsOC43NTUxMDIwNCBMNTcuNzMyOTYwNyw4Ljc1NTEwMjA0IEw1Ny43MzI5NjA3LDE5LjMyMjI3MjQgWiIgaWQ9IlNoYXBlIiBmaWxsPSIjRkZGRkZGIj48L3BhdGg+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik02OS4yNDA4MTE5LDE2LjIyNTg5MDQgQzY4LjU2Njc1NzgsMTYuOTQyNzI2NiA2Ny43MzIxNTUyLDE3LjMwMTIxNiA2Ni43Mzc0MTk4LDE3LjMwMTIxNiBDNjUuODMzODMyNiwxNy4zMDEyMTYgNjUuMDQyMDMzNywxNi45OTE5NDIyIDY0LjM2MTA1MzQsMTYuMzczNTM3MyBDNjMuNjgwMjExNiwxNS43NTQ3MDQzIDYzLjMzOTcyMTUsMTQuOTE0MTg3MiA2My4zMzk3MjE1LDEzLjg1MTI3MjQgQzYzLjMzOTcyMTUsMTIuODYxOTY3MiA2My42NDY4Mjc1LDEyLjAyMjQ0ODUgNjQuMjYwNzYyNiwxMS4zMzQ5OTkxIEM2NC44NzQxNDM1LDEwLjY0NzEyMTYgNjUuNzEwNDA4NCwxMC4zMDMzMjU2IDY2Ljc2OTAwMzEsMTAuMzAzMzI1NiBDNjcuODEzMzI5OCwxMC4zMDMzMjU2IDY4LjY1NDk5NzEsMTAuNjM3ODQ5MSA2OS4yOTM0NTA4LDExLjMwNzYwOTUgQzY5LjkzMjE4MTUsMTEuOTc3MjI3MiA3MC4yNTE0Nzc2LDEyLjc3ODA4NjYgNzAuMjUxNDc3NiwxMy43MDkzMzE3IEM3MC4yNTE0Nzc2LDE0LjY3MDEwNjIgNjkuOTE0MzEyLDE1LjUwOTA1NDIgNjkuMjQwODExOSwxNi4yMjU4OTA0IE03MC44NTQ3NDYzLDEwLjcyNDE1NDggQzY5Ljg4ODI2OTYsOS40MTIwMjM1NyA2OC40OTgwNTAzLDguNzU1MTAyMDQgNjYuNjg0MjI2OCw4Ljc1NTEwMjA0IEM2NS4yMDI1ODIxLDguNzU1MTAyMDQgNjMuOTgzNDM5LDkuMjU3MjQ0MDEgNjMuMDI3NDkwMSwxMC4yNjExIEM2Mi4wNzA5ODcsMTEuMjY1MjQxMyA2MS41OTMyMjAzLDEyLjQ3MjgwNzEgNjEuNTkzMjIwMywxMy44ODQyMjU1IEM2MS41OTMyMjAzLDE1LjI3MzgxNzggNjIuMDQ3OTkyMiwxNi40Mzk1ODYgNjIuOTU4MzY3LDE3LjM4MTY3MjkgQzYzLjg2ODg4MDMsMTguMzIzNjE3IDY0Ljk5NDI0MzIsMTguNzk0ODAzMSA2Ni4zMzQ3MzI3LDE4Ljc5NDgwMzEgQzY4LjIzMzA1NTMsMTguNzk0ODAzMSA2OS42NTUxMzUsMTcuOTAwNzkwNiA3MC42MDA4MzMyLDE2LjExMzA1MTEgQzcwLjU3OTUwMDYsMTguMTU1MTQyNyA3MC4yMjEyNzk1LDE5Ljc3MjI2ODEgNjkuNTI2NTg1NCwyMC45NjM5OTkzIEM2OC44MzEzMzcyLDIyLjE1NjAxNTkgNjcuNzk1ODc1OSwyMi43NTE0NTM2IDY2LjQxOTUwODksMjIuNzUxNDUzNiBDNjUuMDAxNTg0OSwyMi43NTE0NTM2IDYzLjk5MjMwNDUsMjIuMDY1MDAyNyA2My4zOTIzNjAzLDIwLjY5MTM4NzYgTDYxLjk0MjI5ODksMjEuMjM2NjExMSBDNjIuNzA0MTc2OCwyMy4yNDIxODMyIDY0LjE4OTU2MTYsMjQuMjQ0ODk4IDY2LjM5ODczMDQsMjQuMjQ0ODk4IEM2OC4yODk0MzQyLDI0LjI0NDg5OCA2OS43NDY5NzU5LDIzLjQ5NzgxOTEgNzAuNzcwMTA4NiwyMi4wMDM1MTg4IEM3MS43OTMyNDEzLDIwLjUwOTA3NTggNzIuMzA1MDg0NywxOC41NTQ1NzM4IDcyLjMwNTA4NDcsMTYuMTQwMDEyNyBDNzIuMzA1MDg0NywxMy44NDIxNDI2IDcxLjgyMTYzODYsMTIuMDM2ODU2NiA3MC44NTQ3NDYzLDEwLjcyNDE1NDgiIGlkPSJTaGFwZSIgZmlsbD0iI0ZGRkZGRiI+PC9wYXRoPgogICAgICAgICAgICA8cGF0aCBkPSJNNDguODQzNzkwMSwyNC42NDQ3MTU3IEM0OS41NDM5Mzk0LDI1LjkwNTU0OTIgNTAuNDE5NDA5OCwyNy4wOTIxMjI5IDUxLjQ3MDIwMTMsMjguMTY3MjQ1MyBDNTcuNzY4MDE2NSwzNC42MTA5MTgyIDY3Ljk3ODc5MjcsMzQuNjEwOTE4MiA3NC4yNzY2MDc5LDI4LjE2NzI0NTMgQzgwLjU3NDQ2NCwyMS43MjM2MDAzIDgwLjU3NDQ2NCwxMS4yNzY0MDE4IDc0LjI3NjYwNzksNC44MzI3NTY4MyBDNjcuOTc4NzkyNywtMS42MTA5MTg5NCA1Ny43NjgwMTY1LC0xLjYxMDkxODk0IDUxLjQ3MDIwMTMsNC44MzI3NTY4MyBDNDkuNjA2NzAxNiw2LjczOTM5NzA0IDQ4LjI5NDU5ODMsOC45OTY1NjQ4MyA0Ny41MzM4OTgzLDExLjM5NjgyMjkgTDQ4LjM3MDI2NzIsMTEuNzc3ODE5NiBDNDkuMDgzNDMyNSw5LjQ3ODI5OTU2IDUwLjMzMTIyMjcsNy4zMTQ3NjEyMiA1Mi4xMTM2MzM1LDUuNDkxMDg4OTIgQzU4LjA1NjA5NDgsLTAuNTg4OTk5Mjg4IDY3LjY5MDcyMTIsLTAuNTg4OTk5Mjg4IDczLjYzMzE3NTcsNS40OTEwODg5MiBDNzkuNTc1NjcxMiwxMS41NzExNDM2IDc5LjU3NTY3MTIsMjEuNDI4ODU1NyA3My42MzMxNzU3LDI3LjUwODkxNDYgQzY3LjY5MDcyMTIsMzMuNTg4OTkzIDU4LjA1NjA5NDgsMzMuNTg4OTkzIDUyLjExMzYzMzUsMjcuNTA4OTE0NiBDNTEuMTQ0MDY3NywyNi41MTY4OTg3IDUwLjMzMjY5OTgsMjUuNDI0MzI2NyA0OS42Nzk1MTYxLDI0LjI2NDAwNzMgTDQ4Ljg0Mzc5MDEsMjQuNjQ0NzE1NyBaIiBpZD0iU2hhcGUiIGZpbGw9IiM1REE3QTMiPjwvcGF0aD4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==" alt="OpenJ9 Logo"/></a></div><style data-emotion-css="kzfr2u">.css-kzfr2u{-webkit-flex:2;-ms-flex:2;flex:2;}</style><nav class="css-kzfr2u"><style data-emotion-css="d1fq55">.css-d1fq55{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;list-style:none;-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end;}.css-d1fq55 li{padding:8px;margin-left:8px;margin-right:8px;}.css-d1fq55 li a{color:white;-webkit-text-decoration:none;text-decoration:none;}.css-d1fq55 li a:hover{color:var(--theme-ui-colors-links,#5DA7A3);}.css-d1fq55 li:first-of-type{margin-left:0;}.css-d1fq55 li:last-child{margin-right:0;padding-right:0;}</style><ul class="css-d1fq55"><li><a href="/openj9/">Home</a></li><li><a href="/openj9/about">About</a></li><li><a href="https://www.eclipse.org/openj9/docs/" rel="noopener noreferrer" target="_blank">Docs</a></li><li><a href="/openj9/performance">Performance</a></li><li><a href="/openj9/news">News</a></li></ul></nav><style data-emotion-css="1rr4qq7">.css-1rr4qq7{-webkit-flex:1;-ms-flex:1;flex:1;}</style><nav class="css-1rr4qq7"><ul class="css-d1fq55"><li><a href="https://twitter.com/openj9/" rel="noopener noreferrer" target="_blank"> <img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIyNXB4IiB2aWV3Qm94PSIwIDAgMjUgMjUiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5Ud2l0dGVyPC90aXRsZT4KICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPgogICAgPGcgaWQ9IlBhZ2UtMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9IlR3aXR0ZXIiIGZpbGwtcnVsZT0ibm9uemVybyI+CiAgICAgICAgICAgIDxnIGlkPSJ0d2l0dGVyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjAwMDAwMCwgMC4yOTg4NzkpIj4KICAgICAgICAgICAgICAgIDxlbGxpcHNlIGlkPSJPdmFsLXBhdGgiIGZpbGw9IiM0MzQzNDMiIGN4PSIxMi41MDAyMjEyIiBjeT0iMTIuMjcyNzI3MyIgcng9IjEyLjUiIHJ5PSIxMi4yNzI3MjczIj48L2VsbGlwc2U+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTIuNTAwMjIxMiwwIEMxOS40MDM3ODA2LDAgMjUuMDAwMjIxMiw1LjQ5NDY4NzE2IDI1LjAwMDIyMTIsMTIuMjcyNzI3MyBDMjUuMDAwMjIxMiwxOS4wNTA3Njc0IDE5LjQwMzc4MDYsMjQuNTQ1NDU0NSAxMi41MDAyMjEyLDI0LjU0NTQ1NDUgQzUuNTk2NjYxODcsMjQuNTQ1NDU0NSAwLjAwMDIyMTIzODkzOCwxOS4wNTA3Njc0IDAuMDAwMjIxMjM4OTM4LDEyLjI3MjcyNzMgQzAuMDAwMjIxMjM4OTM4LDUuNDk0Njg3MTYgNS41OTY2NjE4NywwIDEyLjUwMDIyMTIsMCBaIE0xNS4xMDM0MzMzLDYuODE4MTgxODIgQzEzLjQ2NTM4MDIsNi44MTgxODE4MiAxMi4xMzY4NDA0LDguMDkyMTI0MTEgMTIuMTM2ODQwNCw5LjY2Mjg1OTk2IEMxMi4xMzY4NDA0LDkuODg1ODI2MzggMTIuMTYzMTY3OCwxMC4xMDI4NTI3IDEyLjIxNDA1MjgsMTAuMzExMTgxIEM5Ljc0ODU2NjA0LDEwLjE5MjU5MDggNy41NjI1MDQxLDkuMDYwMTUwNTQgNi4wOTkyMjk3Niw3LjMzODU3ODIzIEM1Ljg0MzkyMDAzLDcuNzU4NjI5MTUgNS42OTc0NTk4NSw4LjI0NzYyNzgxIDUuNjk3NDU5ODUsOC43Njg4NzI4MSBDNS42OTc0NTk4NSw5Ljc1NTU2ODE3IDYuMjIxNTc0ODksMTAuNjI2NjQzNCA3LjAxNzE1MDExLDExLjEzNjY0NDcgQzYuNTMxMDg4MTcsMTEuMTIyMDA2NSA2LjA3MzM0NDgsMTAuOTk0MDgxOSA1LjY3MzU2NjA0LDEwLjc4MDQ1IEw1LjY3MzM0NDgsMTAuODE2NTE0OSBMNS42NzMzNDQ4LDEwLjgxNjUxNDkgQzUuNjczMzQ0OCwxMi4xOTQ4MzM1IDYuNjk2MzUzNjUsMTMuMzQ0NDU3NyA4LjA1MzIxMjA2LDEzLjYwNTYxMDYgQzcuODA0NTM5NSwxMy42NzA5NTE5IDcuNTQxOTI4ODgsMTMuNzA1NTMxOCA3LjI3MTc5NjEzLDEzLjcwNTUzMTggQzcuMDgwMjAzMjEsMTMuNzA1NTMxOCA2Ljg5NDU4Mzc0LDEzLjY4NzkyMzYgNi43MTM2MTAyOSwxMy42NTQ4Mjg3IEM3LjA5MTA0MzkyLDE0Ljc4NDcyMzIgOC4xODYzOTc5LDE1LjYwNzIxNjkgOS40ODQ4NDkyMywxNS42MzAzNDA5IEM4LjQ2OTM2MjUsMTYuMzkzNDMzNCA3LjE5MDM4MDIsMTYuODQ4MDY0MiA1LjgwMDExNDcyLDE2Ljg0ODA2NDIgQzUuNTYxMTc2NjYsMTYuODQ4MDY0MiA1LjMyNDQ1MSwxNi44MzQ2OTkgNS4wOTI4MTM4MywxNi44MDgxODA2IEM2LjQwNDk4MTk3LDE3LjYxNTYxMTggNy45NjQ3MTY0OSwxOC4wODYzNjU4IDkuNjM5OTM3NzMsMTguMDg2MzY1OCBDMTUuMDk2NTc0OSwxOC4wODYzNjU4IDE4LjA4MDY0NTcsMTMuNzUxNzc5OCAxOC4wODA2NDU3LDkuOTkyMzI0MTQgQzE4LjA4MDY0NTcsOS44NjkwNjY3NyAxOC4wNzc3Njk2LDkuNzQ2MjMzNyAxOC4wNzIwMTc0LDkuNjI0NDYxMzcgQzE4LjY1MjEwNTksOS4yMjM1MDM2OCAxOS4xNTQ5ODIsOC43MjI2MjQ3OCAxOS41NTI1NDgzLDguMTUyMTYxNjkgQzE5LjAyMDY4OTksOC4zNzgzMTAzMiAxOC40NDg1NjYsOC41MzEyNjgyNSAxNy44NDg1NjYsOC41OTk1Nzk1NiBDMTguNDYxMTc2Nyw4LjI0NzYyNzgxIDE4LjkzMTMwOTQsNy42OTA3NDIxMyAxOS4xNTMyMTIxLDcuMDI2MDg1ODEgQzE4LjU3OTk4Miw3LjM1MjE1NTYzIDE3Ljk0NDgwNSw3LjU4ODY5OTQ2IDE3LjI2OTM2MjUsNy43MTYxOTk3NiBDMTYuNzI4MjEyMSw3LjE2MzU1NzAyIDE1Ljk1NzE5NDQsNi44MTgxODE4MiAxNS4xMDM0MzMzLDYuODE4MTgxODIgWiIgaWQ9IkNvbWJpbmVkLVNoYXBlIiBmaWxsPSIjRkZGRkZGIj48L3BhdGg+CiAgICAgICAgICAgIDwvZz4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==" alt="Twitter Logo"/></a></li><li><a href="https://github.com/eclipse/openj9" rel="noopener noreferrer" target="_blank"> <img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIyNXB4IiB2aWV3Qm94PSIwIDAgMjUgMjUiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5HaXRIdWI8L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0iR2l0SHViIiBmaWxsPSIjRkZGRkZGIiBmaWxsLXJ1bGU9Im5vbnplcm8iPgogICAgICAgICAgICA8ZyBpZD0iZ2l0aHViLWxvZ28iPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTIzLjMyMzIwOSw2LjM1NjM4NTg4IEMyMi4yMDU0MjQzLDQuNDI4ODY0OTMgMjAuNjg5MjIwNywyLjkwMjg0MzkxIDE4Ljc3NDE5OTMsMS43Nzc5Nzg1OCBDMTYuODU4ODkyOCwwLjY1MzA1NTg3MyAxNC43Njc5NDkxLDAuMDkwNzM3OTUzMyAxMi40OTk4ODYsMC4wOTA3Mzc5NTMzIEMxMC4yMzIxMDc5LDAuMDkwNzM3OTUzMyA4LjE0MDQ4MDEzLDAuNjUzMjI3OTkzIDYuMjI1NTcyNjksMS43Nzc5Nzg1OCBDNC4zMTAzODAyMSwyLjkwMjc4NjU0IDIuNzk0MjMzNjcsNC40Mjg4NjQ5MyAxLjY3NjQ0ODk5LDYuMzU2Mzg1ODggQzAuNTU4ODM1MzMzLDguMjgzODQ5NDUgMCwxMC4zODg2NTQ2IDAsMTIuNjcwNzQzOSBDMCwxNS40MTIwNTEgMC43OTQ2NzE0ODMsMTcuODc3MTA0NSAyLjM4NDQxMzQ5LDIwLjA2NjUzNTUgQzMuOTczOTg0NDksMjIuMjU2MTM4OCA2LjAyNzQ3NDg4LDIzLjc3MTI1ODggOC41NDQ3MTM2NywyNC42MTIwNjc4IEM4LjgzNzcyNzQsMjQuNjY2ODAyMiA5LjA1NDYzNzM3LDI0LjYyODMwNDUgOS4xOTU2NzE2MSwyNC40OTc1NTAzIEM5LjMzNjc2Mjg1LDI0LjM2NjYyMzkgOS40MDcyMjI5NiwyNC4yMDI2NTAzIDkuNDA3MjIyOTYsMjQuMDA2MzE4MSBDOS40MDcyMjI5NiwyMy45NzM1NTc5IDkuNDA0NDI5NjQsMjMuNjc4ODMwMSA5LjM5OTAxNDAxLDIzLjEyMTc5MDUgQzkuMzkzNDI3MzcsMjIuNTY0NzUxIDkuMzkwODA1MDcsMjIuMDc4Nzk3MiA5LjM5MDgwNTA3LDIxLjY2NDE1ODcgTDkuMDE2NDQyOTcsMjEuNzI5MzM1MSBDOC43Nzc3NTY1LDIxLjc3MzM0MDUgOC40NzY2NDc4MywyMS43OTE5ODY5IDguMTEzMTE2OTgsMjEuNzg2NzA4NiBDNy43NDk3NTcxNSwyMS43ODE2MDIzIDcuMzcyNTQ0NzMsMjEuNzQzMjc2OCA2Ljk4MTk5Mjc3LDIxLjY3MjAxODkgQzYuNTkxMjY5NzksMjEuNjAxMzkyMSA2LjIyNzg1Mjk1LDIxLjQzNzU5MDcgNS44OTE0NTcyMiwyMS4xODA5NTg5IEM1LjU1NTIzMjUyLDIwLjkyNDMyNzEgNS4zMTY1NDYwNCwyMC41ODg0MDUxIDUuMTc1NDU0OCwyMC4xNzM3MDkzIEw1LjAxMjcwMTA2LDE5Ljc5Njc2NTIgQzQuOTA0MjE3NTcsMTkuNTQ1ODEzNCA0LjczMzQyNTkxLDE5LjI2NzAzNTUgNC41MDAwOTgwNSwxOC45NjE0NjQxIEM0LjI2Njc3MDE5LDE4LjY1NTYwNTggNC4wMzA4MjAwMywxOC40NDgyNTc5IDMuNzkyMTMzNTUsMTguMzM5MDc2MSBMMy42NzgxNzc0MywxOC4yNTY5NzQ2IEMzLjYwMjI0NDY5LDE4LjIwMjQxMjMgMy41MzE3ODQ1OCwxOC4xMzY2MDQ5IDMuNDY2NjI2MDgsMTguMDYwMjQwOCBDMy40MDE1MjQ1OCwxNy45ODM4NzY2IDMuMzUyNzgzOTcsMTcuOTA3NDU1MSAzLjMyMDIzMzIzLDE3LjgzMDkxODggQzMuMjg3NjI1NDcsMTcuNzU0MzI1MSAzLjMxNDY0NjU4LDE3LjY5MTUwMTEgMy40MDE1ODE1OSwxNy42NDIyMTcyIEMzLjQ4ODUxNjYsMTcuNTkyOTMzNCAzLjY0NTYyNjY4LDE3LjU2OTAwODYgMy44NzM1OTU5MywxNy41NjkwMDg2IEw0LjE5ODk4OTM5LDE3LjYxNzk0ODIgQzQuNDE2MDEzMzcsMTcuNjYxNzI0MiA0LjY4NDQ1NzI3LDE3Ljc5MjQ3ODUgNS4wMDQ2NjMxNCwxOC4wMTEwMTQzIEM1LjMyNDY5Nzk4LDE4LjIyOTM3NzkgNS41ODc3ODMyNywxOC41MTMyNjIxIDUuNzkzOTc2LDE4Ljg2MjU1MjEgQzYuMDQzNjY0NzUsMTkuMzEwNDA5OSA2LjM0NDQ4ODM4LDE5LjY1MTY2NzYgNi42OTczMDE5OSwxOS44ODY0OTc0IEM3LjA0OTgzMDU4LDIwLjEyMTMyNzMgNy40MDUyNjY0OSwyMC4yMzg1NDE0IDcuNzYzMjY3NzEsMjAuMjM4NTQxNCBDOC4xMjEyNjg5MiwyMC4yMzg1NDE0IDguNDMwNDcyNTIsMjAuMjExMjMxNiA4LjY5MDk5MjUxLDIwLjE1Njg5ODkgQzguOTUxMjI3NDcsMjAuMTAyMjc5MyA5LjE5NTM4NjU3LDIwLjAyMDE3NzcgOS40MjMzNTU4MiwxOS45MTEwNTMzIEM5LjUyMTAwODA2LDE5LjE3OTA4MTkgOS43ODY4ODY2NywxOC42MTY3NjM5IDEwLjIyMDc2MzYsMTguMjIzNjk3OSBDOS42MDIzNTY0MiwxOC4xNTgyOTIxIDkuMDQ2MzcxNDIsMTguMDU5NzgxOCA4LjU1MjUyMzU3LDE3LjkyODc5OCBDOC4wNTg5NjA3NSwxNy43OTc2NDIxIDcuNTQ4OTIzMDMsMTcuNTg0Nzg2MyA3LjAyMjc1MjQ2LDE3LjI4OTY1NjkgQzYuNDk2Mjk2ODUsMTYuOTk0OTI5MSA2LjA1OTU2OTU4LDE2LjYyODk0MzQgNS43MTI0NTY2MiwxNi4xOTIzMzA5IEM1LjM2NTI4NjY1LDE1Ljc1NTQ4ODkgNS4wODAzNjc4NSwxNS4xODE5ODMxIDQuODU4MDk5MjYsMTQuNDcyMzMgQzQuNjM1NzE2NjYsMTMuNzYyMzkgNC41MjQ0OTY4NiwxMi45NDM0NDAzIDQuNTI0NDk2ODYsMTIuMDE1MjUxNCBDNC41MjQ0OTY4NiwxMC42OTM2NTIzIDQuOTUzMTg2MjEsOS41NjkwMTY0MiA1LjgxMDM5Mzg5LDguNjQwNzEyNzggQzUuNDA4ODM5NjcsNy42NDcxMTgwNyA1LjQ0Njc0OTAzLDYuNTMzMjY4NDYgNS45MjQyMzYsNS4yOTkyNzg2OCBDNi4yMzg5MTIyMiw1LjIwMDg4MzA4IDYuNzA1NTY3OTQsNS4yNzQ3MjI4MSA3LjMyMzk3NTE0LDUuNTIwMzM4ODcgQzcuOTQyNDk2MzQsNS43NjYwNjk2OCA4LjM5NTM1NjQ3LDUuOTc2NTczMTQgOC42ODMwMTE1OSw2LjE1MTEwMzQxIEM4Ljk3MDY2NjcsNi4zMjU1NzYzIDkuMjAxMTQ0MjQsNi40NzM0Mjc4NyA5LjM3NDc4NjIzLDYuNTkzMzM4NTQgQzEwLjM4NDA4NzQsNi4zMDk1MTE3MSAxMS40MjU2NTQzLDYuMTY3NTY5NjEgMTIuNDk5NzcyLDYuMTY3NTY5NjEgQzEzLjU3Mzg4OTYsNi4xNjc1Njk2MSAxNC42MTU2ODQ2LDYuMzA5NTExNzEgMTUuNjI1MDQyOCw2LjU5MzMzODU0IEwxNi4yNDM1MDcsNi4yMDAzODcyNiBDMTYuNjY2NDM4Niw1LjkzODE5MDI1IDE3LjE2NTg3MzEsNS42OTc5MDk5MyAxNy43NDA2MTMzLDUuNDc5NDg4OTIgQzE4LjMxNTY5NTUsNS4yNjExODI2NiAxOC43NTU0NDQxLDUuMjAxMDU1MiAxOS4wNTk0MDMxLDUuMjk5NDUwOCBDMTkuNTQ3NDkzMyw2LjUzMzQ5Nzk1IDE5LjU5MDk4OTMsNy42NDcyOTAxOSAxOS4xODkzMjExLDguNjQwODg0OSBDMjAuMDQ2NDcxNyw5LjU2OTE4ODU0IDIwLjQ3NTMzMjEsMTAuNjk0MTExMiAyMC40NzUzMzIxLDEyLjAxNTQyMzUgQzIwLjQ3NTMzMjEsMTIuOTQzNjEyNCAyMC4zNjM3MTMzLDEzLjc2NTE0MzkgMjAuMTQxNjcyNywxNC40ODA1MzQ0IEMxOS45MTkzNDcxLDE1LjE5NjAzOTYgMTkuNjMxOTc3LDE1Ljc2ODk3MTcgMTkuMjc5NDQ4NSwxNi4yMDA1MzUzIEMxOC45MjY1MjA4LDE2LjYzMjA0MTYgMTguNDg3MDAwMiwxNi45OTUxNTg2IDE3Ljk2MDgyOTcsMTcuMjg5ODI5MSBDMTcuNDM0NTQ1MSwxNy41ODQ3MjkgMTYuOTI0MzM2MywxNy43OTc1ODQ4IDE2LjQzMDc3MzUsMTcuOTI4NzQwNiBDMTUuOTM2OTgyNywxOC4wNTk4OTY1IDE1LjM4MDk5NzcsMTguMTU4NDY0MiAxNC43NjI1OTA1LDE4LjIyMzk4NDggQzE1LjMyNjYxMzQsMTguNzE1MjE2OSAxNS42MDg2ODE5LDE5LjQ5MDYyMDEgMTUuNjA4NjgxOSwyMC41NDk4NTAxIEwxNS42MDg2ODE5LDI0LjAwNTg1OTIgQzE1LjYwODY4MTksMjQuMjAyMTkxNCAxNS42NzY1MTk3LDI0LjM2NjEwNzUgMTUuODEyMzA5MywyNC40OTcwOTEzIEMxNS45NDc5Mjc5LDI0LjYyNzg0NTUgMTYuMTYyMTAxNiwyNC42NjYzNDMyIDE2LjQ1NTExNTMsMjQuNjExNTUxNSBDMTguOTcyNjk2MSwyMy43NzA4NTcyIDIxLjAyNjE4NjUsMjIuMjU1Njc5OCAyMi42MTU3MDA1LDIwLjA2NjA3NjYgQzI0LjIwNTA0MzUsMTcuODc2NjQ1NSAyNSwxNS40MTE1OTIgMjUsMTIuNjcwMjg0OSBDMjQuOTk5NDI5OSwxMC4zODg0ODI1IDI0LjQ0MDMwOTYsOC4yODM4NDk0NSAyMy4zMjMyMDksNi4zNTYzODU4OCBaIiBpZD0iU2hhcGUiPjwvcGF0aD4KICAgICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+" alt="GitHub Logo"/></a></li><li><a href="https://openj9.slack.com/" rel="noopener noreferrer" target="_blank"><img src="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIyNXB4IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgogPCEtLSBDcmVhdGVkIHdpdGggTWV0aG9kIERyYXcgLSBodHRwOi8vZ2l0aHViLmNvbS9kdW9waXhlbC9NZXRob2QtRHJhdy8gLS0+CgogPGc+CiAgPHRpdGxlPmJhY2tncm91bmQ8L3RpdGxlPgogIDxyZWN0IGZpbGw9Im5vbmUiIGlkPSJjYW52YXNfYmFja2dyb3VuZCIgaGVpZ2h0PSIyNiIgd2lkdGg9IjI2IiB5PSItMSIgeD0iLTEiLz4KICA8ZyBkaXNwbGF5PSJub25lIiBvdmVyZmxvdz0idmlzaWJsZSIgeT0iMCIgeD0iMCIgaGVpZ2h0PSIxMDAlIiB3aWR0aD0iMTAwJSIgaWQ9ImNhbnZhc0dyaWQiPgogICA8cmVjdCBmaWxsPSJ1cmwoI2dyaWRwYXR0ZXJuKSIgc3Ryb2tlLXdpZHRoPSIwIiB5PSIxIiB4PSIxIiBoZWlnaHQ9IjIyIiB3aWR0aD0iMjIiLz4KICA8L2c+CiA8L2c+CiA8Zz4KICA8dGl0bGU+TGF5ZXIgMTwvdGl0bGU+CiAgPGVsbGlwc2Ugcnk9IjExIiByeD0iMTEiIGlkPSJzdmdfMSIgY3k9IjEyIiBjeD0iMTIiIHN0cm9rZT0iI0ZGRiIgZmlsbD0iI0ZGRkZGRiIvPgogIDxzdHlsZSB0cmFuc2Zvcm09Im1hdHJpeCgwLjA2NTE4MjQ5NTU3MzI1MzYyLDAsMCwwLjA2NTE4MjQ5NTU3MzI1MzYyLDAsMCkgIiB0eXBlPSJ0ZXh0L2NzcyI+LnN0MHtmaWxsOiM0MzQzNDM7fTwvc3R5bGU+CiAgPGcgc3Ryb2tlPSJudWxsIiBpZD0ic3ZnXzE5Ij4KICAgPGcgc3Ryb2tlPSJudWxsIiB0cmFuc2Zvcm09Im1hdHJpeCgwLjEzMDE1NTgwODUxODA5NDg2LDAsMCwwLjEzMDE1NTgwODUxODA5NDg2LC02Ljg0OTAwNjQ1MDQwNTQ5OSwtNi44MzE1MDczOTEwMjE5MjQpICIgaWQ9InN2Z182Ij4KICAgIDxnIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z183Ij4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfOCIgZD0ibTExMC4yOTgyOTIsMTYxLjI5MzAxMWMwLDcuMSAtNS44LDEyLjkgLTEyLjksMTIuOXMtMTIuOSwtNS44IC0xMi45LC0xMi45YzAsLTcuMSA1LjgsLTEyLjkgMTIuOSwtMTIuOWwxMi45LDBsMCwxMi45eiIgY2xhc3M9InN0MCIvPgogICAgIDxwYXRoIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z185IiBkPSJtMTE2Ljc5ODI5MiwxNjEuMjkzMDExYzAsLTcuMSA1LjgsLTEyLjkgMTIuOSwtMTIuOXMxMi45LDUuOCAxMi45LDEyLjlsMCwzMi4zYzAsNy4xIC01LjgsMTIuOSAtMTIuOSwxMi45cy0xMi45LC01LjggLTEyLjksLTEyLjljMCwwIDAsLTMyLjMgMCwtMzIuM3oiIGNsYXNzPSJzdDAiLz4KICAgIDwvZz4KICAgIDxnIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z18xMCI+CiAgICAgPHBhdGggc3Ryb2tlPSJudWxsIiBpZD0ic3ZnXzExIiBkPSJtMTI5LjY5ODI5MiwxMDkuNDkzMDExYy03LjEsMCAtMTIuOSwtNS44IC0xMi45LC0xMi45czUuOCwtMTIuOSAxMi45LC0xMi45czEyLjksNS44IDEyLjksMTIuOWwwLDEyLjlsLTEyLjksMHoiIGNsYXNzPSJzdDAiLz4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTIiIGQ9Im0xMjkuNjk4MjkyLDExNS45OTMwMTFjNy4xLDAgMTIuOSw1LjggMTIuOSwxMi45cy01LjgsMTIuOSAtMTIuOSwxMi45bC0zMi4zLDBjLTcuMSwwIC0xMi45LC01LjggLTEyLjksLTEyLjlzNS44LC0xMi45IDEyLjksLTEyLjljMCwwIDMyLjMsMCAzMi4zLDB6IiBjbGFzcz0ic3QwIi8+CiAgICA8L2c+CiAgICA8ZyBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTMiPgogICAgIDxwYXRoIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z18xNCIgZD0ibTE4MS40OTgyOTIsMTI4Ljg5MzAxMWMwLC03LjEgNS44LC0xMi45IDEyLjksLTEyLjljNy4xLDAgMTIuOSw1LjggMTIuOSwxMi45cy01LjgsMTIuOSAtMTIuOSwxMi45bC0xMi45LDBsMCwtMTIuOXoiIGNsYXNzPSJzdDAiLz4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTUiIGQ9Im0xNzQuOTk4MjkyLDEyOC44OTMwMTFjMCw3LjEgLTUuOCwxMi45IC0xMi45LDEyLjljLTcuMSwwIC0xMi45LC01LjggLTEyLjksLTEyLjlsMCwtMzIuM2MwLC03LjEgNS44LC0xMi45IDEyLjksLTEyLjljNy4xLDAgMTIuOSw1LjggMTIuOSwxMi45bDAsMzIuM3oiIGNsYXNzPSJzdDAiLz4KICAgIDwvZz4KICAgIDxnIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z18xNiI+CiAgICAgPHBhdGggc3Ryb2tlPSJudWxsIiBpZD0ic3ZnXzE3IiBkPSJtMTYyLjA5ODI5MiwxODAuNjkzMDExYzcuMSwwIDEyLjksNS44IDEyLjksMTIuOWMwLDcuMSAtNS44LDEyLjkgLTEyLjksMTIuOWMtNy4xLDAgLTEyLjksLTUuOCAtMTIuOSwtMTIuOWwwLC0xMi45bDEyLjksMHoiIGNsYXNzPSJzdDAiLz4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTgiIGQ9Im0xNjIuMDk4MjkyLDE3NC4xOTMwMTFjLTcuMSwwIC0xMi45LC01LjggLTEyLjksLTEyLjljMCwtNy4xIDUuOCwtMTIuOSAxMi45LC0xMi45bDMyLjMsMGM3LjEsMCAxMi45LDUuOCAxMi45LDEyLjljMCw3LjEgLTUuOCwxMi45IC0xMi45LDEyLjlsLTMyLjMsMHoiIGNsYXNzPSJzdDAiLz4KICAgIDwvZz4KICAgPC9nPgogIDwvZz4KIDwvZz4KPC9zdmc+" alt="Slack logo"/></a></li><li><a href="https://stackoverflow.com/search?q=%23OpenJ9" rel="noopener noreferrer" target="_blank"><img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjRweCIgaGVpZ2h0PSIyNHB4IiB2aWV3Qm94PSIwIDAgNjUgNzAiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5zdGFja292ZXJmbG93LWxvZ288L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0iI0ZGRkZGRiIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0ic3RhY2tvdmVyZmxvdy1sb2dvIiBmaWxsLXJ1bGU9Im5vbnplcm8iPgogICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgZmlsbD0iI0ZGRkZGRiIgcG9pbnRzPSI1NC4yNDE3MjY2IDYzLjc3MDIyNjUgNTQuMjQxNzI2NiA0NSA2MSA0NSA2MSA3MCAwIDcwIDAgNDUgNi43NTgyNzMzOCA0NSA2Ljc1ODI3MzM4IDYzLjc3MDIyNjUiPjwvcG9seWdvbj4KICAgICAgICAgICAgPHBhdGggZD0iTTE0LjcwNzEwNTcsNDMuNjQyNzU2NyBMNDguMTE3ODUxLDUwLjA4NzIwMTEgTDQ5LjUzMjA2MjQsNDMuODg3NDgyNCBMMTYuMTIxMzE3MiwzNy40NDMwMzggTDE0LjcwNzEwNTcsNDMuNjQyNzU2NyBMMTQuNzA3MTA1Nyw0My42NDI3NTY3IFogTTE5LjEyNjUxNjUsMjguOTU5MjEyNCBMNTAuMDYyMzkxNyw0Mi4yNTU5Nzc1IEw1Mi44OTA4MTQ2LDM2LjU0NTcxMDMgTDIxLjk1NDkzOTMsMjMuMTY3MzY5OSBMMTkuMTI2NTE2NSwyOC45NTkyMTI0IFogTTI3LjcwMDE3MzMsMTQuOTI4MjcgTDUzLjk1MTQ3MzEsMzUuMDc3MzU1OCBMNTguMjgyNDk1NywzMC4yNjQ0MTYzIEwzMi4wMzExOTU4LDEwLjExNTMzMDUgTDI3LjcwMDE3MzMsMTQuOTI4MjcgTDI3LjcwMDE3MzMsMTQuOTI4MjcgWiBNNDQuNjcwNzEwNiwwIEwzOS4xOTA2NDEyLDMuNzUyNDYxMzIgTDU5LjUxOTkzMDcsMjkuMDQwNzg3NiBMNjUsMjUuMjg4MzI2MyBMNDQuNjcwNzEwNiwwIFogTTE0LDU4IEw0OC4xMTc4NTEsNTggTDQ4LjExNzg1MSw1MS43MTg3MDYgTDE0LDUxLjcxODcwNiBMMTQsNTggWiIgaWQ9IlNoYXBlIiBmaWxsPSIjRkZGRkZGIj48L3BhdGg+CiAgICAgICAgPC9nPgogICAgPC9nPgo8L3N2Zz4KCgo=" alt="Stack Overflow logo"/></a></li></ul></nav></header><style data-emotion-css="1824c0p">.css-1824c0p{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:fixed;width:100%;bottom:0;background-color:white;height:3rem;box-shadow:0 0.5rem 2rem grey;z-index:9999;}@media screen and (min-width:35rem){.css-1824c0p{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}}@media screen and (min-width:62.5rem){.css-1824c0p{display:none;}}@media screen and (min-width:85rem){.css-1824c0p{display:none;}}</style><nav class="css-1824c0p"><style data-emotion-css="94xmc6">.css-94xmc6{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;list-style:none;-webkit-box-pack:space-evenly;-webkit-justify-content:space-evenly;-ms-flex-pack:space-evenly;justify-content:space-evenly;width:100%;}.css-94xmc6 li a{color:black;-webkit-text-decoration:none;text-decoration:none;}.css-94xmc6 li:first-of-type{margin-left:0;}.css-94xmc6 li:last-child{margin-right:0;padding-right:0;}</style><ul class="css-94xmc6"><li><a href="/openj9/">Home</a></li><li><a href="/openj9/about">About</a> </li><li><a href="https://www.eclipse.org/openj9/docs/" rel="noopener noreferrer" target="_blank">Docs</a> </li><li><a href="/openj9/performance">Performance</a> </li><li><a href="/openj9/news">News</a> </li></ul></nav><style data-emotion-css="1p7zuuy">.css-1p7zuuy{background-color:#F5F9FC;padding-left:7%;padding-right:7%;padding-top:5%;padding-bottom:1%;}</style><section class="css-1p7zuuy"><style data-emotion-css="acwcvw">.css-acwcvw{margin-bottom:1rem;}</style><style data-emotion-css="37umsu">.css-37umsu{font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.125;font-weight:700;margin-top:16px;margin-bottom:16px;font-size:36px;margin-bottom:1rem;}</style><h1 class="css-37umsu">Performance Overview</h1><style data-emotion-css="fza3g9">.css-fza3g9{margin-bottom:40px;font-size:18px;}</style><p class="css-fza3g9">Application performance can be measured using many different metrics, including startup time, ramp-up time, footprint, and response time, as well as throughput. At Eclipse OpenJ9, we keep a watchful eye on all of these metrics, making sensible tradeoffs and providing tuning options that allow the virtual machine (VM) to be optimized for different workloads.</p></section><style data-emotion-css="17c7ung">.css-17c7ung{background-color:#F5F9FC;padding-left:7%;padding-right:7%;padding-top:1%;padding-bottom:3%;}</style><section class="css-17c7ung"><style data-emotion-css="1v4dyq7">.css-1v4dyq7{font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.125;font-weight:700;margin-top:16px;margin-bottom:16px;font-size:28px;}</style><h2 class="css-1v4dyq7">OpenJDK 8 performance with Eclipse OpenJ9</h2><style data-emotion-css="cet0rr">.css-cet0rr{margin-bottom:0.5rem;}</style><style data-emotion-css="qgyt1l">.css-qgyt1l{margin-bottom:40px;font-size:18px;margin-bottom:0.5rem;}</style><p class="css-qgyt1l">The result is that OpenJDK 8 with OpenJ9 demonstrates significantly better performance than with Hotspot.</p><style data-emotion-css="1nvf2ph">.css-1nvf2ph{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:space-around;-webkit-justify-content:space-around;-ms-flex-pack:space-around;justify-content:space-around;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;}</style><div class="css-1nvf2ph"><style data-emotion-css="97vs5v">.css-97vs5v{box-shadow:#DADADA 0 0 1.25rem;border-radius:0.5rem;background-color:var(--theme-ui-colors-primary,#434343);color:white;margin-top:40px;margin-bottom:40px;margin-left:8px;margin-right:8px;width:18rem;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}</style><div class="css-97vs5v"><style data-emotion-css="1hio5pu">.css-1hio5pu{font-size:1.1rem;margin:0.5rem 1rem 0.5rem 1rem;text-align:center;height:3rem;}</style><h5 class="css-1hio5pu">66% smaller footprint after startup</h5><div><canvas height="220" width="250"></canvas></div><style data-emotion-css="1dvshnm">.css-1dvshnm{box-shadow-bottom:cardShadow;border-bottom-right-radius:0.5rem;border-bottom-left-radius:0.5rem;background-color:white;border-top:0.35rem solid #5DA7A3;color:var(--theme-ui-colors-darkText,#4d4f50);height:50%;padding:4rem 1rem;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:100%;margin-bottom:-4rem;margin-top:1rem;}</style><div class="css-1dvshnm"><p>OpenJ9 is highly optimized for cloud workloads, where minimizing memory footprint is important. Out of the box, the footprint is 66% smaller than HotSpot.</p></div></div><div class="css-97vs5v"><style data-emotion-css="1s2mfp0">.css-1s2mfp0{font-size:1.1rem;margin:0.5rem 1.5rem 0.5rem 1.5rem;text-align:center;height:3rem;}</style><h5 class="css-1s2mfp0">63% smaller footprint during ramp up</h5><div><canvas height="220" width="250"></canvas></div><div class="css-1dvshnm"><p>Memory footprint increases rapidly when load is applied. However, at steady state, OpenJ9 consistently used around 63% less physical memory than HotSpot.</p></div></div><div class="css-97vs5v"><h5 class="css-1hio5pu">42% faster startup time</h5><div><canvas height="220" width="250"></canvas></div><div class="css-1dvshnm"><p>Shared classes and Ahead-of-Time (AOT) technologies typically reduce startup time. By using -Xquickstart mode as well, you can reduce startup time by up to 42%.</p></div></div><div class="css-97vs5v"><h5 class="css-1s2mfp0">Faster ramp-up time in the cloud</h5><div><canvas height="220" width="250"></canvas></div><div class="css-1dvshnm"><p>OpenJ9 reaches peak throughput on a single CPU core in 8.5 minutes compared with 30 minutes for Hotspot. Ideal for short-lived VMs running in the cloud.</p></div></div></div><style data-emotion-css="hqj7sj">.css-hqj7sj{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;padding-bottom:5%;}</style><div class="css-hqj7sj"><style data-emotion-css="v732fk">.css-v732fk{background-color:var(--theme-ui-colors-secondary,#5DA7A3);color:white;border-radius:2.5rem;height:2rem;width:16rem;border:none;font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';font-size:16px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-text-decoration:none;text-decoration:none;margin-top:7rem;}.css-v732fk:hover{cursor:pointer;background-color:var(--theme-ui-colors-secondaryDark,#5d9da3);border-color:var(--theme-ui-colors-secondaryDark,#5d9da3);-webkit-text-decoration:none;text-decoration:none;color:white;}</style><a href="https://github.com/eclipse/openj9-website/blob/master/benchmark/daytrader7.md" rel="noopener noreferrer" target="_blank" class="css-v732fk">Read more performance details</a></div></section><style data-emotion-css="17cbhv0">.css-17cbhv0{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;background-color:var(--theme-ui-colors-primary,#434343);color:white;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:1rem;padding-bottom:3rem;-webkit-flex-direction:reverse-column;-ms-flex-direction:reverse-column;flex-direction:reverse-column;}@media screen and (min-width:35rem){.css-17cbhv0{padding-bottom:3rem;}}@media screen and (min-width:62.5rem){.css-17cbhv0{padding-bottom:0;}}@media screen and (min-width:85rem){.css-17cbhv0{padding-bottom:0;}}</style><footer class="css-17cbhv0"><style data-emotion-css="vkolmb">.css-vkolmb{-webkit-flex:50%;-ms-flex:50%;flex:50%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}@media screen and (min-width:35rem){.css-vkolmb{display:none;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}}@media screen and (min-width:62.5rem){.css-vkolmb{display:none;-webkit-align-items:flex-end;-webkit-box-align:flex-end;-ms-flex-align:flex-end;align-items:flex-end;}}@media screen and (min-width:85rem){.css-vkolmb{display:none;-webkit-align-items:flex-end;-webkit-box-align:flex-end;-ms-flex-align:flex-end;align-items:flex-end;}}</style><section class="css-vkolmb"><a href="https://wiki.eclipse.org/Development_Resources/Process_Guidelines/What_is_Incubation" rel="noopener noreferrer" target="_blank"><img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNTBweCIgaGVpZ2h0PSI3NXB4IiB2aWV3Qm94PSIwIDAgMTU3IDIzMSIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KICAgIDwhLS0gR2VuZXJhdG9yOiBTa2V0Y2ggNjEuMiAoODk2NTMpIC0gaHR0cHM6Ly9za2V0Y2guY29tIC0tPgogICAgPHRpdGxlPmVjbGlwc2VfaW5jdWJhdGlvbl92ZXJ0aWNhbF9zdmc8L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0iZWNsaXBzZV9pbmN1YmF0aW9uX3ZlcnRpY2FsX3N2ZyIgZmlsbC1ydWxlPSJub256ZXJvIj4KICAgICAgICAgICAgPGcgaWQ9Ikdyb3VwIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNy4wMDAwMDAsIDIxNC4wMDAwMDApIiBmaWxsPSIjRkZGRkZGIj4KICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJQYXRoIiBwb2ludHM9IjAuNzUgMC4zNCAxLjkyIDAuMzQgMS45MiAxNi4wMyAwLjc1IDE2LjAzIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSI1LjYyIDAuMzQgNi43MiAwLjM0IDE3LjU1IDEzLjk5IDE3LjU1IDAuMzQgMTguNjcgMC4zNCAxOC42NyAxNi4wMyAxNy44IDE2LjAzIDYuNzUgMi4wOSA2Ljc1IDE2LjAzIDUuNjMgMTYuMDMgNS42MyAwLjM0Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMjEuODYsOC4yMyBMMjEuODYsOC4xOSBDMjEuODYsMy43NSAyNS4xOCwwLjA4IDI5LjcxLDAuMDggQzMyLjUxLDAuMDggMzQuMTksMS4xMSAzNS44MSwyLjU5IEwzNC45OCwzLjQ0IEMzMy42MSwyLjEyIDMyLjA0LDEuMTMgMjkuNjksMS4xMyBDMjUuOTIsMS4xMyAyMy4wOCw0LjIgMjMuMDgsOC4xNSBMMjMuMDgsOC4xOSBDMjMuMDgsMTIuMTYgMjUuOTcsMTUuMjUgMjkuNzEsMTUuMjUgQzMxLjk3LDE1LjI1IDMzLjUyLDE0LjM3IDM1LjExLDEyLjgxIEwzNS44OSwxMy41NyBDMzQuMjMsMTUuMjEgMzIuNDQsMTYuMyAyOS42NiwxNi4zIEMyNS4xOCwxNi4zIDIxLjg2LDEyLjc0IDIxLjg2LDguMjMgWiIgaWQ9IlBhdGgiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0zOC40LDkuNTEgTDM4LjQsMC4zNCBMMzkuNTcsMC4zNCBMMzkuNTcsOS40IEMzOS41NywxMy4xIDQxLjU3LDE1LjIzIDQ0Ljg4LDE1LjIzIEM0OC4wNiwxNS4yMyA1MC4xLDEzLjMgNTAuMSw5LjUxIEw1MC4xLDAuMzQgTDUxLjI3LDAuMzQgTDUxLjI3LDkuMzcgQzUxLjI3LDEzLjg4IDQ4LjY1LDE2LjI3MDAzMTQgNDQuODQsMTYuMjcwMDMxNCBDNDEuMDcsMTYuMjggMzguNCwxMy45IDM4LjQsOS41MSBaIiBpZD0iUGF0aCI+PC9wYXRoPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTU0LjAyLDAuMzQgTDYwLjUsMC4zNCBDNjIuMjcsMC4zNCA2My43MSwwLjg2IDY0LjU4LDEuNzMgQzY1LjIzLDIuMzggNjUuNTksMy4yMSA2NS41OSw0LjIgTDY1LjU5LDQuMjQgQzY1LjU5LDYuMzcgNjQuMiw3LjQ1IDYyLjkyLDcuOTYgQzY0LjgsOC40NSA2Ni40Niw5LjUzIDY2LjQ2LDExLjcgTDY2LjQ2LDExLjc0IEM2Ni40NiwxNC4zNiA2NC4yMiwxNi4wMiA2MC44MywxNi4wMiBMNTQuMDIsMTYuMDIgTDU0LjAyLDAuMzQgTDU0LjAyLDAuMzQgWiBNNjQuNCw0LjMxIEM2NC40LDIuNTggNjIuOTksMS40MiA2MC40OCwxLjQyIEw1NS4xOSwxLjQyIEw1NS4xOSw3LjU4IEw2MC4zNyw3LjU4IEM2Mi43Miw3LjU4IDY0LjQsNi40NCA2NC40LDQuMzUgTDY0LjQsNC4zMSBaIE02MC41LDguNjYgTDU1LjE5LDguNjYgTDU1LjE5LDE0Ljk2IEw2MC44OCwxNC45NiBDNjMuNTcsMTQuOTYgNjUuMjcwMDQ0NCwxMy43MyA2NS4yNzAwNDQ0LDExLjc1IEw2NS4yNzAwNDQ0LDExLjcxIEM2NS4yOCw5Ljc4IDYzLjYsOC42NiA2MC41LDguNjYgWiIgaWQ9IlNoYXBlIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNzYuMjgsMC4yMyBMNzcuNCwwLjIzIEw4NC43MSwxNi4wMyBMODMuNDMsMTYuMDMgTDgxLjQ0LDExLjY0IEw3Mi4xOCwxMS42NCBMNzAuMTksMTYuMDMgTDY4Ljk4LDE2LjAzIEw3Ni4yOCwwLjIzIFogTTgwLjk0LDEwLjU5IEw3Ni44MiwxLjUxIEw3Mi42NywxMC41OSBMODAuOTQsMTAuNTkgWiIgaWQ9IlNoYXBlIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSI5MS4wNSAxLjQyIDg1LjU4IDEuNDIgODUuNTggMC4zNCA5Ny42OCAwLjM0IDk3LjY4IDEuNDIgOTIuMjEgMS40MiA5Mi4yMSAxNi4wMyA5MS4wNCAxNi4wMyA5MS4wNCAxLjQyIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSIxMDEuMjkgMC4zNCAxMDIuNDYgMC4zNCAxMDIuNDYgMTYuMDMgMTAxLjI5IDE2LjAzIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTA1LjkxLDguMjMgTDEwNS45MSw4LjE5IEMxMDUuOTEsMy45MSAxMDkuMDcsMC4wOCAxMTMuODIsMC4wOCBDMTE4LjU3LDAuMDggMTIxLjY5LDMuODcgMTIxLjY5LDguMTUgTDEyMS42OSw4LjE5IEMxMjEuNjksMTIuNDcgMTE4LjUzLDE2LjMgMTEzLjc4LDE2LjMgQzEwOS4wMywxNi4zIDEwNS45MSwxMi41MSAxMDUuOTEsOC4yMyBaIE0xMjAuNDgsOC4yMyBMMTIwLjQ4LDguMTkgQzEyMC40OCw0LjMxIDExNy42NiwxLjEzIDExMy43OCwxLjEzIEMxMDkuOSwxLjEzIDEwNy4xMiw0LjI3IDEwNy4xMiw4LjE1IEwxMDcuMTIsOC4xOSBDMTA3LjEyLDEyLjA3IDEwOS45NCwxNS4yNSAxMTMuODIsMTUuMjUgQzExNy43LDE1LjI1IDEyMC40OCwxMi4xMSAxMjAuNDgsOC4yMyBaIiBpZD0iU2hhcGUiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJQYXRoIiBwb2ludHM9IjEyNC44OSAwLjM0IDEyNS45OSAwLjM0IDEzNi44MiAxMy45OSAxMzYuODIgMC4zNCAxMzcuOTQgMC4zNCAxMzcuOTQgMTYuMDMgMTM3LjA3IDE2LjAzIDEyNi4wMiAyLjA5IDEyNi4wMiAxNi4wMyAxMjQuOSAxNi4wMyAxMjQuOSAwLjM0Ij48L3BvbHlnb24+CiAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgPHBhdGggZD0iTTU2LjY2LDE2Ni4yMyBDNTcuNTEsMTYzLjQ4IDYwLjQzLDE2MS40MyA2My45NCwxNjEuNDMgQzY1LjE0LDE2MS40MyA2Ni4yNSwxNjEuNjkgNjcuMjUsMTYyLjExIEM2OS40NiwxNjAuNjQgNzIuMTksMTU5Ljc2IDc1LjE3LDE1OS43NiBMNzUuMTksMTU5Ljc2IEM3Ni4xMSwxNTcuOSA3OC40OCwxNTYuNTcgODEuMywxNTYuNTcgQzgyLjA0LDE1Ni41NyA4Mi43NSwxNTYuNjcgODMuNDIsMTU2Ljg0IEM4My4zMywxNTQuNTYgODMuNjksMTUyLjE4IDg0LjU1LDE0OS42OCBDODUuNTUsMTQ2Ljc5IDg3LDE0NC4wMyA4OC41MiwxNDEuMjggQzg4LjE3LDEzNy4xNiA4Ny45LDEzMy41IDgyLjc0LDEzMiBDODAuODIsMTMxLjQ0IDc4LjgyLDEzMS4yNyA3Ni44NiwxMzEuMDQgTDc2Ljg1LDEzMS4wNCBMNzYuODUsMTMxLjAzIEM3Ni4wMSwxMzAuOTMgNzUuMTcsMTMwLjgxIDc0LjM1LDEzMC42NSBDNjAuMTgsMTQ1LjQxIDQwLjIsMTA5Ljk3IDQwLjIsMTA5Ljk3IEM4NC4zLDEwMy4xMyA3Ni4wMSwxMjUuNjEgNzYuMDEsMTI1LjYxIEM3Mi44MSwxMjQuMDUgNzEuOTMsMTIyLjA4IDY5LjQ5LDExOS43MyBDNjMuOTIsMTE0LjM4IDUwLjYyLDExMy40NCA1MC42MiwxMTMuNDQgQzY2LjU0LDExNy41MSA2OC43MSwxMjUuMjIgNzQuOTcsMTI3LjY5IEM3Ni4zOSwxMjguMDEgNzcuOSwxMjguMTMgNzkuMzUsMTI4LjI5IEM4Mi4xNSwxMjguNTkgODQuODksMTI5LjExIDg3LjIyLDEzMC42MSBDODkuNjMsMTMyLjE2IDkwLjcxLDEzNC4wOSA5MS4yNiwxMzYuMjYgQzkzLDEzMi45NCA5NC41LDEyOS41NiA5NS4wNywxMjUuOTIgQzk1LjgsMTIxLjI3IDk1LjEzLDExNS44OCA5MS44MywxMTIuMDcgQzg4Ljc4LDEwOC41NSA4NC42NiwxMDUuODkgODEuNCwxMDIuNTIgQzc3LjkyLDk4LjkxIDc1LjYxLDk0LjQ2IDc1LjUyLDg5LjcxIEM3My43Niw4NS44NiA3MC45LDgxLjM5IDY4LjI4LDc5LjY1IEM1Ni45LDkwLjM0IDQxLjksNjIuNTggNDEuOSw2Mi41OCBDNzYuODgsNTcuNyA3MS4xLDc1LjY3IDcxLjEsNzUuNjcgQzYyLjcsNjYuMjggNTIuMzEsNjcuMTIgNTIuMzEsNjcuMTIgQzYwLjcxLDY5Ljc5IDY3LjM0LDc1LjE1IDcxLjIsNzguODMgTDcxLjczLDc5LjM2IEM3My4zLDgxIDc0LjksODIuNzUgNzYuMjQsODQuNjMgQzc3LjYsNzkuNDggODAuNzcsNzIuMjcgODMuMjYsNjcuOTcgQzgzLjI2LDY3Ljk3IDkxLjY2LDUzLjE1IDEwNS44LDQzLjkgQzEwNS44LDQzLjkgOTUuMDIsNDUuMTQgODMuNDEsNjIuODkgQzgzLjQxLDYyLjg5IDY3Ljk5LDM4LjcgMTE3LjgzLDM0LjIzIEMxMTcuODMsMzQuMjMgMTE0LjQsNzguMTcgODcuNDUsNjkuNjMgQzgyLjc3LDc2LjY3IDc5LjcsODQuNzQgODAuMzMsOTAuNDIgQzgwLjk1LDk1Ljk2IDg0LjgzLDk5Ljg2IDg5LjExLDEwMy41IEM5MC4yNSw5Ny42NiA5NC40Niw5Mi42MyAxMDAuNjUsODkuODkgQzEwNS42LDg3LjkyIDExMi45LDg2LjAzIDExOS43Miw4NS42MiBDMTE5LjcyLDg1LjYyIDEwNi4zOSw4Mi41OCA5Ni4yNSw4OS41MSBDOTYuMjUsODkuNTEgOTYuNDIsNjkuMjIgMTMyLjM0LDgzLjk1IEMxMzIuMzQsODMuOTUgMTA2LjM0LDExMC4yOSA5Ny45OSw5NC41OSBDOTQuMDMsOTcuMiA5MS41MywxMDEuNTggOTIuMTgsMTA2LjExIEM5NC41LDEwOC4xNCA5Ni42NiwxMTAuMzMgOTcuOTcsMTEzLjAzIEM5OS44LDExNi44MiAxMDAuNDUsMTIxLjI0IDk5Ljk1LDEyNS4zNSBDOTguOTksMTMzLjI1IDk0LjA1LDEzOS45NyA5MC42NywxNDcuMTQgQzg5LjI5LDE1MC4wNiA4Ny45NywxNTMuMjcgODcuOTUsMTU2LjUxIEM4OS42NCwxNTYuMDQgOTEuNDcsMTU1Ljc4IDkzLjM5LDE1NS43OCBDMTAwLjYyLDE1NS43OCAxMDYuNzEsMTU5LjM3IDEwOC42OCwxNjQuMyBDMTExLjYxLDE2NC42MSAxMTMuOTIsMTY2LjMzIDExNC4zNCwxNjguNTEgQzExNi40NSwxNjkuODEgMTE4LjEyLDE3MS42MyAxMTkuMTMsMTczLjc1IEw1MC41NSwxNzMuNzUgQzUyLjAyLDE3MC42MiA1NC4xNCwxNjcuMTYgNTYuNjYsMTY2LjIzIiBpZD0iUGF0aCIgZmlsbD0iI0Y3OEQyQyI+PC9wYXRoPgogICAgICAgICAgICA8ZyBpZD0iR3JvdXAiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE3LjAwMDAwMCwgMTgyLjAwMDAwMCkiIGZpbGw9IiNGRkZGRkYiPgogICAgICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlBhdGgiIHBvaW50cz0iMC41NCAxLjM5IDE4LjU0IDEuMzkgMTguNTQgNS4yMSA0LjggNS4yMSA0LjggMTEuNTIgMTYuOTcgMTEuNTIgMTYuOTcgMTUuMzMgNC44IDE1LjMzIDQuOCAyMS44NSAxOC43MSAyMS44NSAxOC43MSAyNS42NyAwLjU0IDI1LjY3Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMjEuNTUsMTMuNiBMMjEuNTUsMTMuNTMgQzIxLjU1LDYuNjMgMjYuNzIsMC45NyAzNC4wNywwLjk3IEMzOC41NCwwLjk3IDQxLjI1LDIuNTMgNDMuNTcsNC43NSBMNDAuODMsNy45MSBDMzguODksNi4xMSAzNi44MSw0Ljg5IDM0LjAzLDQuODkgQzI5LjQyLDQuODkgMjYuMDIsOC43MSAyNi4wMiwxMy40NiBMMjYuMDIsMTMuNTMgQzI2LjAyLDE4LjI4IDI5LjM4LDIyLjEzIDM0LjAzLDIyLjEzIEMzNy4wMSwyMi4xMyAzOC45MiwyMC45NSA0MSwxOS4wMSBMNDMuNzQsMjEuNzggQzQxLjIxLDI0LjQyIDM4LjQzLDI2LjA4MDAxMzYgMzMuODksMjYuMDgwMDEzNiBDMjYuODMsMjYuMDkgMjEuNTUsMjAuNTcgMjEuNTUsMTMuNiBaIiBpZD0iUGF0aCI+PC9wYXRoPgogICAgICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlBhdGgiIHBvaW50cz0iNDcuMjIgMS4zOSA1MS40OSAxLjM5IDUxLjQ5IDIxLjc4IDY0LjI1IDIxLjc4IDY0LjI1IDI1LjY2IDQ3LjIyIDI1LjY2Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSI2Ny45MyAxLjM5IDcyLjIgMS4zOSA3Mi4yIDI1LjY3IDY3LjkzIDI1LjY3Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNzcuNjcsMS4zOSBMODcuMjQsMS4zOSBDOTIuOTMsMS4zOSA5Ni40Nyw0LjYyIDk2LjQ3LDkuNTEgTDk2LjQ3LDkuNTggQzk2LjQ3LDE1LjAzIDkyLjEsMTcuODcgODYuNzYsMTcuODcgTDgxLjk0LDE3Ljg3IEw4MS45NCwyNS42NyBMNzcuNjcsMjUuNjcgTDc3LjY3LDEuMzkgWiBNODYuOSwxNC4wMiBDOTAuMTMsMTQuMDIgOTIuMTQsMTIuMjIgOTIuMTQsOS42OCBMOTIuMTQsOS42MSBDOTIuMTQsNi43NyA5MC4wOSw1LjI4IDg2LjksNS4yOCBMODEuOTQsNS4yOCBMODEuOTQsMTQuMDIgTDg2LjksMTQuMDIgWiIgaWQ9IlNoYXBlIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNOTguMjEsMjIuMTMgTDEwMC43OCwxOS4wOCBDMTAzLjEsMjEuMDkgMTA1LjQ2LDIyLjI0IDEwOC40NSwyMi4yNCBDMTExLjA5LDIyLjI0IDExMi43NSwyMC45OSAxMTIuNzUsMTkuMTkgTDExMi43NSwxOS4xMiBDMTEyLjc1LDE3LjM5IDExMS43OCwxNi40NSAxMDcuMjcsMTUuNDEgQzEwMi4xLDE0LjE2IDk5LjE5LDEyLjY0IDk5LjE5LDguMTYgTDk5LjE5LDguMDkgQzk5LjE5LDMuOTMgMTAyLjY2LDEuMDUgMTA3LjQ4LDEuMDUgQzExMS4wMiwxLjA1IDExMy44MywyLjEzIDExNi4yOSw0LjEgTDExNCw3LjMzIEMxMTEuODEsNS43IDEwOS42Myw0LjgzIDEwNy40MSw0LjgzIEMxMDQuOTEsNC44MyAxMDMuNDYsNi4xMSAxMDMuNDYsNy43MSBMMTAzLjQ2LDcuNzggQzEwMy40Niw5LjY1IDEwNC41NywxMC40OSAxMDkuMjUsMTEuNiBDMTE0LjM4LDEyLjg1IDExNy4wMiwxNC42OSAxMTcuMDIsMTguNzEgTDExNy4wMiwxOC43OCBDMTE3LjAyLDIzLjMyIDExMy40NSwyNi4wMyAxMDguMzUsMjYuMDMgQzEwNC42MiwyNi4wMiAxMDEuMTIsMjQuNzMgOTguMjEsMjIuMTMgWiIgaWQ9IlBhdGgiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJQYXRoIiBwb2ludHM9IjEyMC45OSAxLjM5IDEzOC45OSAxLjM5IDEzOC45OSA1LjIxIDEyNS4yNiA1LjIxIDEyNS4yNiAxMS41MiAxMzcuNDMgMTEuNTIgMTM3LjQzIDE1LjMzIDEyNS4yNiAxNS4zMyAxMjUuMjYgMjEuODUgMTM5LjE3IDIxLjg1IDEzOS4xNyAyNS42NyAxMjEgMjUuNjcgMTIxIDEuMzkiPjwvcG9seWdvbj4KICAgICAgICAgICAgPC9nPgogICAgICAgICAgICA8cGF0aCBkPSJNMjEuNjYsMzkuOTkgQzQxLjI2LDkuNDIgODAuNSwtMS4yNSAxMTMuMjMsMTMuNDQgQzExMi41MSwxMi45NCAxMTEuNzgsMTIuNDMgMTExLjAzLDExLjk1IEM3Ny41MiwtOS41NCAzMi45OCwwLjExIDExLjU2LDMzLjUyIEMtOS44Nyw2Ni45MiAtMC4wNiwxMTEuNDMgMzMuNDUsMTMyLjkyIEMzNC4yLDEzMy40IDM0Ljk2LDEzMy44NSAzNS43MiwxMzQuMyBDOC43MywxMTAuNjggMi4wNiw3MC41NiAyMS42NiwzOS45OSIgaWQ9IlBhdGgiIGZpbGw9IiNGNzhEMkMiPjwvcGF0aD4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==" alt="Eclipse Incubator Logo"/></a><style data-emotion-css="1uno72p">.css-1uno72p{font-size:0.9rem;}</style><style data-emotion-css="2r9mng">.css-2r9mng{font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.125;font-weight:700;margin-top:16px;margin-bottom:16px;font-size:16px;font-size:0.9rem;}</style><h6 class="css-2r9mng">OpenJ9 is an Eclipse Incubator Project</h6></section><style data-emotion-css="1hrevlp">.css-1hrevlp{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex:100%;-ms-flex:100%;flex:100%;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;}@media screen and (min-width:35rem){.css-1hrevlp{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex:50%;-ms-flex:50%;flex:50%;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;}}@media screen and (min-width:62.5rem){.css-1hrevlp{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex:50%;-ms-flex:50%;flex:50%;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;}}@media screen and (min-width:85rem){.css-1hrevlp{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex:50%;-ms-flex:50%;flex:50%;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;}}.css-1hrevlp a{color:white;-webkit-text-decoration:none;text-decoration:none;}.css-1hrevlp a:hover{color:var(--theme-ui-colors-links,#5DA7A3);}</style><nav class="css-1hrevlp"><style data-emotion-css="1vm4d63">.css-1vm4d63{-webkit-flex:1;-ms-flex:1;flex:1;padding-left:2rem;margin-right:1.1rem;padding:1rem;font-size:1rem;}@media screen and (min-width:35rem){.css-1vm4d63{padding-left:0.8rem;padding:0;font-size:0.9rem;}}@media screen and (min-width:62.5rem){.css-1vm4d63{padding-left:0.8rem;font-size:1rem;}}@media screen and (min-width:85rem){.css-1vm4d63{padding-left:0.8rem;font-size:1rem;}}</style><section class="css-1vm4d63"><style data-emotion-css="1p7eyhh">.css-1p7eyhh{margin-bottom:0.2rem;}</style><style data-emotion-css="shyl6e">.css-shyl6e{font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.125;font-weight:700;margin-top:16px;margin-bottom:16px;font-size:20px;margin-bottom:0.2rem;}</style><h4 class="css-shyl6e">Docs</h4><style data-emotion-css="1l04qsy">.css-1l04qsy{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;list-style:none;-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}.css-1l04qsy li{padding:0;}.css-1l04qsy li:first-of-type{margin-left:0;}.css-1l04qsy li:last-child{margin-right:0;padding-right:0;}</style><ul class="css-1l04qsy"><li><style data-emotion-css="14i0930">.css-14i0930{-webkit-text-decoration:none;text-decoration:none;color:white;}</style><a href="https://www.eclipse.org/openj9/docs/openj9_newuser/" rel="noopener noreferrer" target="_blank" class="css-14i0930">New to OpenJ9?</a></li><li><a href="https://www.eclipse.org/openj9/docs/introduction/" rel="noopener noreferrer" target="_blank" class="css-14i0930">Getting started</a></li><li><a href="https://www.eclipse.org/openj9/docs/cmdline_specifying/" rel="noopener noreferrer" target="_blank" class="css-14i0930">Command-line options</a></li></ul></section><style data-emotion-css="4nlx3l">.css-4nlx3l{-webkit-flex:1;-ms-flex:1;flex:1;padding-left:2rem;padding:1rem;font-size:1rem;}@media screen and (min-width:35rem){.css-4nlx3l{padding-left:0.8rem;padding:0;font-size:0.9rem;}}@media screen and (min-width:62.5rem){.css-4nlx3l{padding-left:0;font-size:1rem;}}@media screen and (min-width:85rem){.css-4nlx3l{padding-left:0;font-size:1rem;}}</style><section class="css-4nlx3l"><h4 class="css-shyl6e">Resources</h4><ul class="css-1l04qsy"><li><a class="css-14i0930" href="/openj9/about">About</a></li><li><a class="css-14i0930" href="/openj9/performance">Performance</a></li></ul></section><style data-emotion-css="1v1ksah">.css-1v1ksah{-webkit-flex:1;-ms-flex:1;flex:1;padding-left:2rem;padding:1rem;font-size:1rem;margin-left:0;}@media screen and (min-width:35rem){.css-1v1ksah{padding-left:0;padding:0;font-size:0.9rem;margin-left:1rem;}}@media screen and (min-width:62.5rem){.css-1v1ksah{padding-left:0;font-size:1rem;}}@media screen and (min-width:85rem){.css-1v1ksah{padding-left:0;font-size:1rem;}}</style><section class="css-1v1ksah"><h4 class="css-shyl6e">Community</h4><ul class="css-1l04qsy"><li><a class="css-14i0930" href="/openj9/news">News</a></li><li><a href="https://blog.openj9.org/" rel="noopener noreferrer" target="_blank" class="css-14i0930">Blogs</a></li></ul></section></nav><style data-emotion-css="1qgmx7a">.css-1qgmx7a{-webkit-flex:25%;-ms-flex:25%;flex:25%;display:none;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}@media screen and (min-width:35rem){.css-1qgmx7a{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:flex-end;-webkit-box-align:flex-end;-ms-flex-align:flex-end;align-items:flex-end;}}@media screen and (min-width:62.5rem){.css-1qgmx7a{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:flex-end;-webkit-box-align:flex-end;-ms-flex-align:flex-end;align-items:flex-end;}}@media screen and (min-width:85rem){.css-1qgmx7a{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:flex-end;-webkit-box-align:flex-end;-ms-flex-align:flex-end;align-items:flex-end;}}</style><section class="css-1qgmx7a"><style data-emotion-css="10op7gg">.css-10op7gg{font-size:0.9rem;margin-top:1.3rem;margin-left:0.6rem;}</style><style data-emotion-css="z87sw5">.css-z87sw5{font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.125;font-weight:700;margin-top:16px;margin-bottom:16px;font-size:16px;font-size:0.9rem;margin-top:1.3rem;margin-left:0.6rem;}</style><h6 class="css-z87sw5">OpenJ9 is an Eclipse Incubator Project</h6><a href="https://wiki.eclipse.org/Development_Resources/Process_Guidelines/What_is_Incubation" rel="noopener noreferrer" target="_blank"><img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNTBweCIgaGVpZ2h0PSI3NXB4IiB2aWV3Qm94PSIwIDAgMTU3IDIzMSIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KICAgIDwhLS0gR2VuZXJhdG9yOiBTa2V0Y2ggNjEuMiAoODk2NTMpIC0gaHR0cHM6Ly9za2V0Y2guY29tIC0tPgogICAgPHRpdGxlPmVjbGlwc2VfaW5jdWJhdGlvbl92ZXJ0aWNhbF9zdmc8L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0iZWNsaXBzZV9pbmN1YmF0aW9uX3ZlcnRpY2FsX3N2ZyIgZmlsbC1ydWxlPSJub256ZXJvIj4KICAgICAgICAgICAgPGcgaWQ9Ikdyb3VwIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNy4wMDAwMDAsIDIxNC4wMDAwMDApIiBmaWxsPSIjRkZGRkZGIj4KICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJQYXRoIiBwb2ludHM9IjAuNzUgMC4zNCAxLjkyIDAuMzQgMS45MiAxNi4wMyAwLjc1IDE2LjAzIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSI1LjYyIDAuMzQgNi43MiAwLjM0IDE3LjU1IDEzLjk5IDE3LjU1IDAuMzQgMTguNjcgMC4zNCAxOC42NyAxNi4wMyAxNy44IDE2LjAzIDYuNzUgMi4wOSA2Ljc1IDE2LjAzIDUuNjMgMTYuMDMgNS42MyAwLjM0Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMjEuODYsOC4yMyBMMjEuODYsOC4xOSBDMjEuODYsMy43NSAyNS4xOCwwLjA4IDI5LjcxLDAuMDggQzMyLjUxLDAuMDggMzQuMTksMS4xMSAzNS44MSwyLjU5IEwzNC45OCwzLjQ0IEMzMy42MSwyLjEyIDMyLjA0LDEuMTMgMjkuNjksMS4xMyBDMjUuOTIsMS4xMyAyMy4wOCw0LjIgMjMuMDgsOC4xNSBMMjMuMDgsOC4xOSBDMjMuMDgsMTIuMTYgMjUuOTcsMTUuMjUgMjkuNzEsMTUuMjUgQzMxLjk3LDE1LjI1IDMzLjUyLDE0LjM3IDM1LjExLDEyLjgxIEwzNS44OSwxMy41NyBDMzQuMjMsMTUuMjEgMzIuNDQsMTYuMyAyOS42NiwxNi4zIEMyNS4xOCwxNi4zIDIxLjg2LDEyLjc0IDIxLjg2LDguMjMgWiIgaWQ9IlBhdGgiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0zOC40LDkuNTEgTDM4LjQsMC4zNCBMMzkuNTcsMC4zNCBMMzkuNTcsOS40IEMzOS41NywxMy4xIDQxLjU3LDE1LjIzIDQ0Ljg4LDE1LjIzIEM0OC4wNiwxNS4yMyA1MC4xLDEzLjMgNTAuMSw5LjUxIEw1MC4xLDAuMzQgTDUxLjI3LDAuMzQgTDUxLjI3LDkuMzcgQzUxLjI3LDEzLjg4IDQ4LjY1LDE2LjI3MDAzMTQgNDQuODQsMTYuMjcwMDMxNCBDNDEuMDcsMTYuMjggMzguNCwxMy45IDM4LjQsOS41MSBaIiBpZD0iUGF0aCI+PC9wYXRoPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTU0LjAyLDAuMzQgTDYwLjUsMC4zNCBDNjIuMjcsMC4zNCA2My43MSwwLjg2IDY0LjU4LDEuNzMgQzY1LjIzLDIuMzggNjUuNTksMy4yMSA2NS41OSw0LjIgTDY1LjU5LDQuMjQgQzY1LjU5LDYuMzcgNjQuMiw3LjQ1IDYyLjkyLDcuOTYgQzY0LjgsOC40NSA2Ni40Niw5LjUzIDY2LjQ2LDExLjcgTDY2LjQ2LDExLjc0IEM2Ni40NiwxNC4zNiA2NC4yMiwxNi4wMiA2MC44MywxNi4wMiBMNTQuMDIsMTYuMDIgTDU0LjAyLDAuMzQgTDU0LjAyLDAuMzQgWiBNNjQuNCw0LjMxIEM2NC40LDIuNTggNjIuOTksMS40MiA2MC40OCwxLjQyIEw1NS4xOSwxLjQyIEw1NS4xOSw3LjU4IEw2MC4zNyw3LjU4IEM2Mi43Miw3LjU4IDY0LjQsNi40NCA2NC40LDQuMzUgTDY0LjQsNC4zMSBaIE02MC41LDguNjYgTDU1LjE5LDguNjYgTDU1LjE5LDE0Ljk2IEw2MC44OCwxNC45NiBDNjMuNTcsMTQuOTYgNjUuMjcwMDQ0NCwxMy43MyA2NS4yNzAwNDQ0LDExLjc1IEw2NS4yNzAwNDQ0LDExLjcxIEM2NS4yOCw5Ljc4IDYzLjYsOC42NiA2MC41LDguNjYgWiIgaWQ9IlNoYXBlIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNzYuMjgsMC4yMyBMNzcuNCwwLjIzIEw4NC43MSwxNi4wMyBMODMuNDMsMTYuMDMgTDgxLjQ0LDExLjY0IEw3Mi4xOCwxMS42NCBMNzAuMTksMTYuMDMgTDY4Ljk4LDE2LjAzIEw3Ni4yOCwwLjIzIFogTTgwLjk0LDEwLjU5IEw3Ni44MiwxLjUxIEw3Mi42NywxMC41OSBMODAuOTQsMTAuNTkgWiIgaWQ9IlNoYXBlIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSI5MS4wNSAxLjQyIDg1LjU4IDEuNDIgODUuNTggMC4zNCA5Ny42OCAwLjM0IDk3LjY4IDEuNDIgOTIuMjEgMS40MiA5Mi4yMSAxNi4wMyA5MS4wNCAxNi4wMyA5MS4wNCAxLjQyIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSIxMDEuMjkgMC4zNCAxMDIuNDYgMC4zNCAxMDIuNDYgMTYuMDMgMTAxLjI5IDE2LjAzIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTA1LjkxLDguMjMgTDEwNS45MSw4LjE5IEMxMDUuOTEsMy45MSAxMDkuMDcsMC4wOCAxMTMuODIsMC4wOCBDMTE4LjU3LDAuMDggMTIxLjY5LDMuODcgMTIxLjY5LDguMTUgTDEyMS42OSw4LjE5IEMxMjEuNjksMTIuNDcgMTE4LjUzLDE2LjMgMTEzLjc4LDE2LjMgQzEwOS4wMywxNi4zIDEwNS45MSwxMi41MSAxMDUuOTEsOC4yMyBaIE0xMjAuNDgsOC4yMyBMMTIwLjQ4LDguMTkgQzEyMC40OCw0LjMxIDExNy42NiwxLjEzIDExMy43OCwxLjEzIEMxMDkuOSwxLjEzIDEwNy4xMiw0LjI3IDEwNy4xMiw4LjE1IEwxMDcuMTIsOC4xOSBDMTA3LjEyLDEyLjA3IDEwOS45NCwxNS4yNSAxMTMuODIsMTUuMjUgQzExNy43LDE1LjI1IDEyMC40OCwxMi4xMSAxMjAuNDgsOC4yMyBaIiBpZD0iU2hhcGUiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJQYXRoIiBwb2ludHM9IjEyNC44OSAwLjM0IDEyNS45OSAwLjM0IDEzNi44MiAxMy45OSAxMzYuODIgMC4zNCAxMzcuOTQgMC4zNCAxMzcuOTQgMTYuMDMgMTM3LjA3IDE2LjAzIDEyNi4wMiAyLjA5IDEyNi4wMiAxNi4wMyAxMjQuOSAxNi4wMyAxMjQuOSAwLjM0Ij48L3BvbHlnb24+CiAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgPHBhdGggZD0iTTU2LjY2LDE2Ni4yMyBDNTcuNTEsMTYzLjQ4IDYwLjQzLDE2MS40MyA2My45NCwxNjEuNDMgQzY1LjE0LDE2MS40MyA2Ni4yNSwxNjEuNjkgNjcuMjUsMTYyLjExIEM2OS40NiwxNjAuNjQgNzIuMTksMTU5Ljc2IDc1LjE3LDE1OS43NiBMNzUuMTksMTU5Ljc2IEM3Ni4xMSwxNTcuOSA3OC40OCwxNTYuNTcgODEuMywxNTYuNTcgQzgyLjA0LDE1Ni41NyA4Mi43NSwxNTYuNjcgODMuNDIsMTU2Ljg0IEM4My4zMywxNTQuNTYgODMuNjksMTUyLjE4IDg0LjU1LDE0OS42OCBDODUuNTUsMTQ2Ljc5IDg3LDE0NC4wMyA4OC41MiwxNDEuMjggQzg4LjE3LDEzNy4xNiA4Ny45LDEzMy41IDgyLjc0LDEzMiBDODAuODIsMTMxLjQ0IDc4LjgyLDEzMS4yNyA3Ni44NiwxMzEuMDQgTDc2Ljg1LDEzMS4wNCBMNzYuODUsMTMxLjAzIEM3Ni4wMSwxMzAuOTMgNzUuMTcsMTMwLjgxIDc0LjM1LDEzMC42NSBDNjAuMTgsMTQ1LjQxIDQwLjIsMTA5Ljk3IDQwLjIsMTA5Ljk3IEM4NC4zLDEwMy4xMyA3Ni4wMSwxMjUuNjEgNzYuMDEsMTI1LjYxIEM3Mi44MSwxMjQuMDUgNzEuOTMsMTIyLjA4IDY5LjQ5LDExOS43MyBDNjMuOTIsMTE0LjM4IDUwLjYyLDExMy40NCA1MC42MiwxMTMuNDQgQzY2LjU0LDExNy41MSA2OC43MSwxMjUuMjIgNzQuOTcsMTI3LjY5IEM3Ni4zOSwxMjguMDEgNzcuOSwxMjguMTMgNzkuMzUsMTI4LjI5IEM4Mi4xNSwxMjguNTkgODQuODksMTI5LjExIDg3LjIyLDEzMC42MSBDODkuNjMsMTMyLjE2IDkwLjcxLDEzNC4wOSA5MS4yNiwxMzYuMjYgQzkzLDEzMi45NCA5NC41LDEyOS41NiA5NS4wNywxMjUuOTIgQzk1LjgsMTIxLjI3IDk1LjEzLDExNS44OCA5MS44MywxMTIuMDcgQzg4Ljc4LDEwOC41NSA4NC42NiwxMDUuODkgODEuNCwxMDIuNTIgQzc3LjkyLDk4LjkxIDc1LjYxLDk0LjQ2IDc1LjUyLDg5LjcxIEM3My43Niw4NS44NiA3MC45LDgxLjM5IDY4LjI4LDc5LjY1IEM1Ni45LDkwLjM0IDQxLjksNjIuNTggNDEuOSw2Mi41OCBDNzYuODgsNTcuNyA3MS4xLDc1LjY3IDcxLjEsNzUuNjcgQzYyLjcsNjYuMjggNTIuMzEsNjcuMTIgNTIuMzEsNjcuMTIgQzYwLjcxLDY5Ljc5IDY3LjM0LDc1LjE1IDcxLjIsNzguODMgTDcxLjczLDc5LjM2IEM3My4zLDgxIDc0LjksODIuNzUgNzYuMjQsODQuNjMgQzc3LjYsNzkuNDggODAuNzcsNzIuMjcgODMuMjYsNjcuOTcgQzgzLjI2LDY3Ljk3IDkxLjY2LDUzLjE1IDEwNS44LDQzLjkgQzEwNS44LDQzLjkgOTUuMDIsNDUuMTQgODMuNDEsNjIuODkgQzgzLjQxLDYyLjg5IDY3Ljk5LDM4LjcgMTE3LjgzLDM0LjIzIEMxMTcuODMsMzQuMjMgMTE0LjQsNzguMTcgODcuNDUsNjkuNjMgQzgyLjc3LDc2LjY3IDc5LjcsODQuNzQgODAuMzMsOTAuNDIgQzgwLjk1LDk1Ljk2IDg0LjgzLDk5Ljg2IDg5LjExLDEwMy41IEM5MC4yNSw5Ny42NiA5NC40Niw5Mi42MyAxMDAuNjUsODkuODkgQzEwNS42LDg3LjkyIDExMi45LDg2LjAzIDExOS43Miw4NS42MiBDMTE5LjcyLDg1LjYyIDEwNi4zOSw4Mi41OCA5Ni4yNSw4OS41MSBDOTYuMjUsODkuNTEgOTYuNDIsNjkuMjIgMTMyLjM0LDgzLjk1IEMxMzIuMzQsODMuOTUgMTA2LjM0LDExMC4yOSA5Ny45OSw5NC41OSBDOTQuMDMsOTcuMiA5MS41MywxMDEuNTggOTIuMTgsMTA2LjExIEM5NC41LDEwOC4xNCA5Ni42NiwxMTAuMzMgOTcuOTcsMTEzLjAzIEM5OS44LDExNi44MiAxMDAuNDUsMTIxLjI0IDk5Ljk1LDEyNS4zNSBDOTguOTksMTMzLjI1IDk0LjA1LDEzOS45NyA5MC42NywxNDcuMTQgQzg5LjI5LDE1MC4wNiA4Ny45NywxNTMuMjcgODcuOTUsMTU2LjUxIEM4OS42NCwxNTYuMDQgOTEuNDcsMTU1Ljc4IDkzLjM5LDE1NS43OCBDMTAwLjYyLDE1NS43OCAxMDYuNzEsMTU5LjM3IDEwOC42OCwxNjQuMyBDMTExLjYxLDE2NC42MSAxMTMuOTIsMTY2LjMzIDExNC4zNCwxNjguNTEgQzExNi40NSwxNjkuODEgMTE4LjEyLDE3MS42MyAxMTkuMTMsMTczLjc1IEw1MC41NSwxNzMuNzUgQzUyLjAyLDE3MC42MiA1NC4xNCwxNjcuMTYgNTYuNjYsMTY2LjIzIiBpZD0iUGF0aCIgZmlsbD0iI0Y3OEQyQyI+PC9wYXRoPgogICAgICAgICAgICA8ZyBpZD0iR3JvdXAiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE3LjAwMDAwMCwgMTgyLjAwMDAwMCkiIGZpbGw9IiNGRkZGRkYiPgogICAgICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlBhdGgiIHBvaW50cz0iMC41NCAxLjM5IDE4LjU0IDEuMzkgMTguNTQgNS4yMSA0LjggNS4yMSA0LjggMTEuNTIgMTYuOTcgMTEuNTIgMTYuOTcgMTUuMzMgNC44IDE1LjMzIDQuOCAyMS44NSAxOC43MSAyMS44NSAxOC43MSAyNS42NyAwLjU0IDI1LjY3Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMjEuNTUsMTMuNiBMMjEuNTUsMTMuNTMgQzIxLjU1LDYuNjMgMjYuNzIsMC45NyAzNC4wNywwLjk3IEMzOC41NCwwLjk3IDQxLjI1LDIuNTMgNDMuNTcsNC43NSBMNDAuODMsNy45MSBDMzguODksNi4xMSAzNi44MSw0Ljg5IDM0LjAzLDQuODkgQzI5LjQyLDQuODkgMjYuMDIsOC43MSAyNi4wMiwxMy40NiBMMjYuMDIsMTMuNTMgQzI2LjAyLDE4LjI4IDI5LjM4LDIyLjEzIDM0LjAzLDIyLjEzIEMzNy4wMSwyMi4xMyAzOC45MiwyMC45NSA0MSwxOS4wMSBMNDMuNzQsMjEuNzggQzQxLjIxLDI0LjQyIDM4LjQzLDI2LjA4MDAxMzYgMzMuODksMjYuMDgwMDEzNiBDMjYuODMsMjYuMDkgMjEuNTUsMjAuNTcgMjEuNTUsMTMuNiBaIiBpZD0iUGF0aCI+PC9wYXRoPgogICAgICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlBhdGgiIHBvaW50cz0iNDcuMjIgMS4zOSA1MS40OSAxLjM5IDUxLjQ5IDIxLjc4IDY0LjI1IDIxLjc4IDY0LjI1IDI1LjY2IDQ3LjIyIDI1LjY2Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSI2Ny45MyAxLjM5IDcyLjIgMS4zOSA3Mi4yIDI1LjY3IDY3LjkzIDI1LjY3Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNzcuNjcsMS4zOSBMODcuMjQsMS4zOSBDOTIuOTMsMS4zOSA5Ni40Nyw0LjYyIDk2LjQ3LDkuNTEgTDk2LjQ3LDkuNTggQzk2LjQ3LDE1LjAzIDkyLjEsMTcuODcgODYuNzYsMTcuODcgTDgxLjk0LDE3Ljg3IEw4MS45NCwyNS42NyBMNzcuNjcsMjUuNjcgTDc3LjY3LDEuMzkgWiBNODYuOSwxNC4wMiBDOTAuMTMsMTQuMDIgOTIuMTQsMTIuMjIgOTIuMTQsOS42OCBMOTIuMTQsOS42MSBDOTIuMTQsNi43NyA5MC4wOSw1LjI4IDg2LjksNS4yOCBMODEuOTQsNS4yOCBMODEuOTQsMTQuMDIgTDg2LjksMTQuMDIgWiIgaWQ9IlNoYXBlIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNOTguMjEsMjIuMTMgTDEwMC43OCwxOS4wOCBDMTAzLjEsMjEuMDkgMTA1LjQ2LDIyLjI0IDEwOC40NSwyMi4yNCBDMTExLjA5LDIyLjI0IDExMi43NSwyMC45OSAxMTIuNzUsMTkuMTkgTDExMi43NSwxOS4xMiBDMTEyLjc1LDE3LjM5IDExMS43OCwxNi40NSAxMDcuMjcsMTUuNDEgQzEwMi4xLDE0LjE2IDk5LjE5LDEyLjY0IDk5LjE5LDguMTYgTDk5LjE5LDguMDkgQzk5LjE5LDMuOTMgMTAyLjY2LDEuMDUgMTA3LjQ4LDEuMDUgQzExMS4wMiwxLjA1IDExMy44MywyLjEzIDExNi4yOSw0LjEgTDExNCw3LjMzIEMxMTEuODEsNS43IDEwOS42Myw0LjgzIDEwNy40MSw0LjgzIEMxMDQuOTEsNC44MyAxMDMuNDYsNi4xMSAxMDMuNDYsNy43MSBMMTAzLjQ2LDcuNzggQzEwMy40Niw5LjY1IDEwNC41NywxMC40OSAxMDkuMjUsMTEuNiBDMTE0LjM4LDEyLjg1IDExNy4wMiwxNC42OSAxMTcuMDIsMTguNzEgTDExNy4wMiwxOC43OCBDMTE3LjAyLDIzLjMyIDExMy40NSwyNi4wMyAxMDguMzUsMjYuMDMgQzEwNC42MiwyNi4wMiAxMDEuMTIsMjQuNzMgOTguMjEsMjIuMTMgWiIgaWQ9IlBhdGgiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJQYXRoIiBwb2ludHM9IjEyMC45OSAxLjM5IDEzOC45OSAxLjM5IDEzOC45OSA1LjIxIDEyNS4yNiA1LjIxIDEyNS4yNiAxMS41MiAxMzcuNDMgMTEuNTIgMTM3LjQzIDE1LjMzIDEyNS4yNiAxNS4zMyAxMjUuMjYgMjEuODUgMTM5LjE3IDIxLjg1IDEzOS4xNyAyNS42NyAxMjEgMjUuNjcgMTIxIDEuMzkiPjwvcG9seWdvbj4KICAgICAgICAgICAgPC9nPgogICAgICAgICAgICA8cGF0aCBkPSJNMjEuNjYsMzkuOTkgQzQxLjI2LDkuNDIgODAuNSwtMS4yNSAxMTMuMjMsMTMuNDQgQzExMi41MSwxMi45NCAxMTEuNzgsMTIuNDMgMTExLjAzLDExLjk1IEM3Ny41MiwtOS41NCAzMi45OCwwLjExIDExLjU2LDMzLjUyIEMtOS44Nyw2Ni45MiAtMC4wNiwxMTEuNDMgMzMuNDUsMTMyLjkyIEMzNC4yLDEzMy40IDM0Ljk2LDEzMy44NSAzNS43MiwxMzQuMyBDOC43MywxMTAuNjggMi4wNiw3MC41NiAyMS42NiwzOS45OSIgaWQ9IlBhdGgiIGZpbGw9IiNGNzhEMkMiPjwvcGF0aD4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==" alt="Eclipse Incubator Logo"/></a></section><style data-emotion-css="7f8z6s">.css-7f8z6s{height:0.15rem;background-color:var(--theme-ui-colors-secondary,#5DA7A3);width:100%;margin-top:16px;margin-bottom:16px;}</style><div class="css-7f8z6s"></div><style data-emotion-css="6gs9hh">.css-6gs9hh{width:70%;}</style><nav class="css-6gs9hh"><style data-emotion-css="1dz3xom">.css-1dz3xom{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}@media screen and (min-width:35rem){.css-1dz3xom{-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;}}@media screen and (min-width:62.5rem){.css-1dz3xom{-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;}}@media screen and (min-width:85rem){.css-1dz3xom{-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;}}.css-1dz3xom li{padding:0.4rem;font-size:0.9rem;list-style-type:none;padding-left:1rem;color:white;}@media screen and (min-width:35rem){.css-1dz3xom li{font-size:0.7rem;}}@media screen and (min-width:62.5rem){.css-1dz3xom li{font-size:1rem;}}@media screen and (min-width:85rem){.css-1dz3xom li{font-size:1rem;}}.css-1dz3xom a{color:white;-webkit-text-decoration:none;text-decoration:none;}.css-1dz3xom a:hover{color:var(--theme-ui-colors-links,#5DA7A3);}</style><ul class="css-1dz3xom"><style data-emotion-css="1ga24ma">.css-1ga24ma{padding-left:1rem;}@media screen and (min-width:35rem){.css-1ga24ma{padding-left:0rem !important;}}@media screen and (min-width:62.5rem){.css-1ga24ma{padding-left:0.5rem !important;}}@media screen and (min-width:85rem){.css-1ga24ma{padding-left:0.5 !important;}}</style><li class="css-1ga24ma"><a href="https://www.eclipse.org/" rel="noopener noreferrer" target="_blank" class="css-14i0930">Eclipse Foundation Website </a></li><li><a href="https://www.eclipse.org/legal/privacy.php" rel="noopener noreferrer" target="_blank" class="css-14i0930">Privacy Policy</a></li><li><a href="https://www.eclipse.org/legal/termsofuse.php" rel="noopener noreferrer" target="_blank" class="css-14i0930">Terms of Use</a></li><li><a href="https://www.eclipse.org/legal/copyright.php" rel="noopener noreferrer" target="_blank" class="css-14i0930">Copyright Agent</a></li><li><a href="https://www.eclipse.org/legal/" rel="noopener noreferrer" target="_blank" class="css-14i0930">Legal</a></li></ul></nav><style data-emotion-css="1g96o9k">.css-1g96o9k{display:inline;-webkit-flex:30%;-ms-flex:30%;flex:30%;}@media screen and (min-width:35rem){.css-1g96o9k{display:inline;}}@media screen and (min-width:62.5rem){.css-1g96o9k{display:block;}}@media screen and (min-width:85rem){.css-1g96o9k{display:block;}}</style><nav class="css-1g96o9k"><style data-emotion-css="gwenrj">.css-gwenrj{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;list-style:none;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;}.css-gwenrj li{padding:8px;margin-left:8px;margin-right:8px;}.css-gwenrj li a{color:white;-webkit-text-decoration:none;text-decoration:none;}.css-gwenrj li a:hover{color:var(--theme-ui-colors-links,#5DA7A3);}.css-gwenrj li:first-of-type{margin-left:0;}.css-gwenrj li:last-child{margin-right:0;padding-right:0;}@media screen and (min-width:35rem){.css-gwenrj{-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end;}}@media screen and (min-width:62.5rem){.css-gwenrj{-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end;}}@media screen and (min-width:85rem){.css-gwenrj{-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end;}}</style><ul class="css-gwenrj"><li><a href="https://twitter.com/openj9/" rel="noopener noreferrer" target="_blank"> <img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIyNXB4IiB2aWV3Qm94PSIwIDAgMjUgMjUiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5Ud2l0dGVyPC90aXRsZT4KICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPgogICAgPGcgaWQ9IlBhZ2UtMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9IlR3aXR0ZXIiIGZpbGwtcnVsZT0ibm9uemVybyI+CiAgICAgICAgICAgIDxnIGlkPSJ0d2l0dGVyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjAwMDAwMCwgMC4yOTg4NzkpIj4KICAgICAgICAgICAgICAgIDxlbGxpcHNlIGlkPSJPdmFsLXBhdGgiIGZpbGw9IiM0MzQzNDMiIGN4PSIxMi41MDAyMjEyIiBjeT0iMTIuMjcyNzI3MyIgcng9IjEyLjUiIHJ5PSIxMi4yNzI3MjczIj48L2VsbGlwc2U+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTIuNTAwMjIxMiwwIEMxOS40MDM3ODA2LDAgMjUuMDAwMjIxMiw1LjQ5NDY4NzE2IDI1LjAwMDIyMTIsMTIuMjcyNzI3MyBDMjUuMDAwMjIxMiwxOS4wNTA3Njc0IDE5LjQwMzc4MDYsMjQuNTQ1NDU0NSAxMi41MDAyMjEyLDI0LjU0NTQ1NDUgQzUuNTk2NjYxODcsMjQuNTQ1NDU0NSAwLjAwMDIyMTIzODkzOCwxOS4wNTA3Njc0IDAuMDAwMjIxMjM4OTM4LDEyLjI3MjcyNzMgQzAuMDAwMjIxMjM4OTM4LDUuNDk0Njg3MTYgNS41OTY2NjE4NywwIDEyLjUwMDIyMTIsMCBaIE0xNS4xMDM0MzMzLDYuODE4MTgxODIgQzEzLjQ2NTM4MDIsNi44MTgxODE4MiAxMi4xMzY4NDA0LDguMDkyMTI0MTEgMTIuMTM2ODQwNCw5LjY2Mjg1OTk2IEMxMi4xMzY4NDA0LDkuODg1ODI2MzggMTIuMTYzMTY3OCwxMC4xMDI4NTI3IDEyLjIxNDA1MjgsMTAuMzExMTgxIEM5Ljc0ODU2NjA0LDEwLjE5MjU5MDggNy41NjI1MDQxLDkuMDYwMTUwNTQgNi4wOTkyMjk3Niw3LjMzODU3ODIzIEM1Ljg0MzkyMDAzLDcuNzU4NjI5MTUgNS42OTc0NTk4NSw4LjI0NzYyNzgxIDUuNjk3NDU5ODUsOC43Njg4NzI4MSBDNS42OTc0NTk4NSw5Ljc1NTU2ODE3IDYuMjIxNTc0ODksMTAuNjI2NjQzNCA3LjAxNzE1MDExLDExLjEzNjY0NDcgQzYuNTMxMDg4MTcsMTEuMTIyMDA2NSA2LjA3MzM0NDgsMTAuOTk0MDgxOSA1LjY3MzU2NjA0LDEwLjc4MDQ1IEw1LjY3MzM0NDgsMTAuODE2NTE0OSBMNS42NzMzNDQ4LDEwLjgxNjUxNDkgQzUuNjczMzQ0OCwxMi4xOTQ4MzM1IDYuNjk2MzUzNjUsMTMuMzQ0NDU3NyA4LjA1MzIxMjA2LDEzLjYwNTYxMDYgQzcuODA0NTM5NSwxMy42NzA5NTE5IDcuNTQxOTI4ODgsMTMuNzA1NTMxOCA3LjI3MTc5NjEzLDEzLjcwNTUzMTggQzcuMDgwMjAzMjEsMTMuNzA1NTMxOCA2Ljg5NDU4Mzc0LDEzLjY4NzkyMzYgNi43MTM2MTAyOSwxMy42NTQ4Mjg3IEM3LjA5MTA0MzkyLDE0Ljc4NDcyMzIgOC4xODYzOTc5LDE1LjYwNzIxNjkgOS40ODQ4NDkyMywxNS42MzAzNDA5IEM4LjQ2OTM2MjUsMTYuMzkzNDMzNCA3LjE5MDM4MDIsMTYuODQ4MDY0MiA1LjgwMDExNDcyLDE2Ljg0ODA2NDIgQzUuNTYxMTc2NjYsMTYuODQ4MDY0MiA1LjMyNDQ1MSwxNi44MzQ2OTkgNS4wOTI4MTM4MywxNi44MDgxODA2IEM2LjQwNDk4MTk3LDE3LjYxNTYxMTggNy45NjQ3MTY0OSwxOC4wODYzNjU4IDkuNjM5OTM3NzMsMTguMDg2MzY1OCBDMTUuMDk2NTc0OSwxOC4wODYzNjU4IDE4LjA4MDY0NTcsMTMuNzUxNzc5OCAxOC4wODA2NDU3LDkuOTkyMzI0MTQgQzE4LjA4MDY0NTcsOS44NjkwNjY3NyAxOC4wNzc3Njk2LDkuNzQ2MjMzNyAxOC4wNzIwMTc0LDkuNjI0NDYxMzcgQzE4LjY1MjEwNTksOS4yMjM1MDM2OCAxOS4xNTQ5ODIsOC43MjI2MjQ3OCAxOS41NTI1NDgzLDguMTUyMTYxNjkgQzE5LjAyMDY4OTksOC4zNzgzMTAzMiAxOC40NDg1NjYsOC41MzEyNjgyNSAxNy44NDg1NjYsOC41OTk1Nzk1NiBDMTguNDYxMTc2Nyw4LjI0NzYyNzgxIDE4LjkzMTMwOTQsNy42OTA3NDIxMyAxOS4xNTMyMTIxLDcuMDI2MDg1ODEgQzE4LjU3OTk4Miw3LjM1MjE1NTYzIDE3Ljk0NDgwNSw3LjU4ODY5OTQ2IDE3LjI2OTM2MjUsNy43MTYxOTk3NiBDMTYuNzI4MjEyMSw3LjE2MzU1NzAyIDE1Ljk1NzE5NDQsNi44MTgxODE4MiAxNS4xMDM0MzMzLDYuODE4MTgxODIgWiIgaWQ9IkNvbWJpbmVkLVNoYXBlIiBmaWxsPSIjRkZGRkZGIj48L3BhdGg+CiAgICAgICAgICAgIDwvZz4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==" alt="Twitter Logo"/></a></li><li><a href="https://github.com/eclipse/openj9" rel="noopener noreferrer" target="_blank"> <img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIyNXB4IiB2aWV3Qm94PSIwIDAgMjUgMjUiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5HaXRIdWI8L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0iR2l0SHViIiBmaWxsPSIjRkZGRkZGIiBmaWxsLXJ1bGU9Im5vbnplcm8iPgogICAgICAgICAgICA8ZyBpZD0iZ2l0aHViLWxvZ28iPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTIzLjMyMzIwOSw2LjM1NjM4NTg4IEMyMi4yMDU0MjQzLDQuNDI4ODY0OTMgMjAuNjg5MjIwNywyLjkwMjg0MzkxIDE4Ljc3NDE5OTMsMS43Nzc5Nzg1OCBDMTYuODU4ODkyOCwwLjY1MzA1NTg3MyAxNC43Njc5NDkxLDAuMDkwNzM3OTUzMyAxMi40OTk4ODYsMC4wOTA3Mzc5NTMzIEMxMC4yMzIxMDc5LDAuMDkwNzM3OTUzMyA4LjE0MDQ4MDEzLDAuNjUzMjI3OTkzIDYuMjI1NTcyNjksMS43Nzc5Nzg1OCBDNC4zMTAzODAyMSwyLjkwMjc4NjU0IDIuNzk0MjMzNjcsNC40Mjg4NjQ5MyAxLjY3NjQ0ODk5LDYuMzU2Mzg1ODggQzAuNTU4ODM1MzMzLDguMjgzODQ5NDUgMCwxMC4zODg2NTQ2IDAsMTIuNjcwNzQzOSBDMCwxNS40MTIwNTEgMC43OTQ2NzE0ODMsMTcuODc3MTA0NSAyLjM4NDQxMzQ5LDIwLjA2NjUzNTUgQzMuOTczOTg0NDksMjIuMjU2MTM4OCA2LjAyNzQ3NDg4LDIzLjc3MTI1ODggOC41NDQ3MTM2NywyNC42MTIwNjc4IEM4LjgzNzcyNzQsMjQuNjY2ODAyMiA5LjA1NDYzNzM3LDI0LjYyODMwNDUgOS4xOTU2NzE2MSwyNC40OTc1NTAzIEM5LjMzNjc2Mjg1LDI0LjM2NjYyMzkgOS40MDcyMjI5NiwyNC4yMDI2NTAzIDkuNDA3MjIyOTYsMjQuMDA2MzE4MSBDOS40MDcyMjI5NiwyMy45NzM1NTc5IDkuNDA0NDI5NjQsMjMuNjc4ODMwMSA5LjM5OTAxNDAxLDIzLjEyMTc5MDUgQzkuMzkzNDI3MzcsMjIuNTY0NzUxIDkuMzkwODA1MDcsMjIuMDc4Nzk3MiA5LjM5MDgwNTA3LDIxLjY2NDE1ODcgTDkuMDE2NDQyOTcsMjEuNzI5MzM1MSBDOC43Nzc3NTY1LDIxLjc3MzM0MDUgOC40NzY2NDc4MywyMS43OTE5ODY5IDguMTEzMTE2OTgsMjEuNzg2NzA4NiBDNy43NDk3NTcxNSwyMS43ODE2MDIzIDcuMzcyNTQ0NzMsMjEuNzQzMjc2OCA2Ljk4MTk5Mjc3LDIxLjY3MjAxODkgQzYuNTkxMjY5NzksMjEuNjAxMzkyMSA2LjIyNzg1Mjk1LDIxLjQzNzU5MDcgNS44OTE0NTcyMiwyMS4xODA5NTg5IEM1LjU1NTIzMjUyLDIwLjkyNDMyNzEgNS4zMTY1NDYwNCwyMC41ODg0MDUxIDUuMTc1NDU0OCwyMC4xNzM3MDkzIEw1LjAxMjcwMTA2LDE5Ljc5Njc2NTIgQzQuOTA0MjE3NTcsMTkuNTQ1ODEzNCA0LjczMzQyNTkxLDE5LjI2NzAzNTUgNC41MDAwOTgwNSwxOC45NjE0NjQxIEM0LjI2Njc3MDE5LDE4LjY1NTYwNTggNC4wMzA4MjAwMywxOC40NDgyNTc5IDMuNzkyMTMzNTUsMTguMzM5MDc2MSBMMy42NzgxNzc0MywxOC4yNTY5NzQ2IEMzLjYwMjI0NDY5LDE4LjIwMjQxMjMgMy41MzE3ODQ1OCwxOC4xMzY2MDQ5IDMuNDY2NjI2MDgsMTguMDYwMjQwOCBDMy40MDE1MjQ1OCwxNy45ODM4NzY2IDMuMzUyNzgzOTcsMTcuOTA3NDU1MSAzLjMyMDIzMzIzLDE3LjgzMDkxODggQzMuMjg3NjI1NDcsMTcuNzU0MzI1MSAzLjMxNDY0NjU4LDE3LjY5MTUwMTEgMy40MDE1ODE1OSwxNy42NDIyMTcyIEMzLjQ4ODUxNjYsMTcuNTkyOTMzNCAzLjY0NTYyNjY4LDE3LjU2OTAwODYgMy44NzM1OTU5MywxNy41NjkwMDg2IEw0LjE5ODk4OTM5LDE3LjYxNzk0ODIgQzQuNDE2MDEzMzcsMTcuNjYxNzI0MiA0LjY4NDQ1NzI3LDE3Ljc5MjQ3ODUgNS4wMDQ2NjMxNCwxOC4wMTEwMTQzIEM1LjMyNDY5Nzk4LDE4LjIyOTM3NzkgNS41ODc3ODMyNywxOC41MTMyNjIxIDUuNzkzOTc2LDE4Ljg2MjU1MjEgQzYuMDQzNjY0NzUsMTkuMzEwNDA5OSA2LjM0NDQ4ODM4LDE5LjY1MTY2NzYgNi42OTczMDE5OSwxOS44ODY0OTc0IEM3LjA0OTgzMDU4LDIwLjEyMTMyNzMgNy40MDUyNjY0OSwyMC4yMzg1NDE0IDcuNzYzMjY3NzEsMjAuMjM4NTQxNCBDOC4xMjEyNjg5MiwyMC4yMzg1NDE0IDguNDMwNDcyNTIsMjAuMjExMjMxNiA4LjY5MDk5MjUxLDIwLjE1Njg5ODkgQzguOTUxMjI3NDcsMjAuMTAyMjc5MyA5LjE5NTM4NjU3LDIwLjAyMDE3NzcgOS40MjMzNTU4MiwxOS45MTEwNTMzIEM5LjUyMTAwODA2LDE5LjE3OTA4MTkgOS43ODY4ODY2NywxOC42MTY3NjM5IDEwLjIyMDc2MzYsMTguMjIzNjk3OSBDOS42MDIzNTY0MiwxOC4xNTgyOTIxIDkuMDQ2MzcxNDIsMTguMDU5NzgxOCA4LjU1MjUyMzU3LDE3LjkyODc5OCBDOC4wNTg5NjA3NSwxNy43OTc2NDIxIDcuNTQ4OTIzMDMsMTcuNTg0Nzg2MyA3LjAyMjc1MjQ2LDE3LjI4OTY1NjkgQzYuNDk2Mjk2ODUsMTYuOTk0OTI5MSA2LjA1OTU2OTU4LDE2LjYyODk0MzQgNS43MTI0NTY2MiwxNi4xOTIzMzA5IEM1LjM2NTI4NjY1LDE1Ljc1NTQ4ODkgNS4wODAzNjc4NSwxNS4xODE5ODMxIDQuODU4MDk5MjYsMTQuNDcyMzMgQzQuNjM1NzE2NjYsMTMuNzYyMzkgNC41MjQ0OTY4NiwxMi45NDM0NDAzIDQuNTI0NDk2ODYsMTIuMDE1MjUxNCBDNC41MjQ0OTY4NiwxMC42OTM2NTIzIDQuOTUzMTg2MjEsOS41NjkwMTY0MiA1LjgxMDM5Mzg5LDguNjQwNzEyNzggQzUuNDA4ODM5NjcsNy42NDcxMTgwNyA1LjQ0Njc0OTAzLDYuNTMzMjY4NDYgNS45MjQyMzYsNS4yOTkyNzg2OCBDNi4yMzg5MTIyMiw1LjIwMDg4MzA4IDYuNzA1NTY3OTQsNS4yNzQ3MjI4MSA3LjMyMzk3NTE0LDUuNTIwMzM4ODcgQzcuOTQyNDk2MzQsNS43NjYwNjk2OCA4LjM5NTM1NjQ3LDUuOTc2NTczMTQgOC42ODMwMTE1OSw2LjE1MTEwMzQxIEM4Ljk3MDY2NjcsNi4zMjU1NzYzIDkuMjAxMTQ0MjQsNi40NzM0Mjc4NyA5LjM3NDc4NjIzLDYuNTkzMzM4NTQgQzEwLjM4NDA4NzQsNi4zMDk1MTE3MSAxMS40MjU2NTQzLDYuMTY3NTY5NjEgMTIuNDk5NzcyLDYuMTY3NTY5NjEgQzEzLjU3Mzg4OTYsNi4xNjc1Njk2MSAxNC42MTU2ODQ2LDYuMzA5NTExNzEgMTUuNjI1MDQyOCw2LjU5MzMzODU0IEwxNi4yNDM1MDcsNi4yMDAzODcyNiBDMTYuNjY2NDM4Niw1LjkzODE5MDI1IDE3LjE2NTg3MzEsNS42OTc5MDk5MyAxNy43NDA2MTMzLDUuNDc5NDg4OTIgQzE4LjMxNTY5NTUsNS4yNjExODI2NiAxOC43NTU0NDQxLDUuMjAxMDU1MiAxOS4wNTk0MDMxLDUuMjk5NDUwOCBDMTkuNTQ3NDkzMyw2LjUzMzQ5Nzk1IDE5LjU5MDk4OTMsNy42NDcyOTAxOSAxOS4xODkzMjExLDguNjQwODg0OSBDMjAuMDQ2NDcxNyw5LjU2OTE4ODU0IDIwLjQ3NTMzMjEsMTAuNjk0MTExMiAyMC40NzUzMzIxLDEyLjAxNTQyMzUgQzIwLjQ3NTMzMjEsMTIuOTQzNjEyNCAyMC4zNjM3MTMzLDEzLjc2NTE0MzkgMjAuMTQxNjcyNywxNC40ODA1MzQ0IEMxOS45MTkzNDcxLDE1LjE5NjAzOTYgMTkuNjMxOTc3LDE1Ljc2ODk3MTcgMTkuMjc5NDQ4NSwxNi4yMDA1MzUzIEMxOC45MjY1MjA4LDE2LjYzMjA0MTYgMTguNDg3MDAwMiwxNi45OTUxNTg2IDE3Ljk2MDgyOTcsMTcuMjg5ODI5MSBDMTcuNDM0NTQ1MSwxNy41ODQ3MjkgMTYuOTI0MzM2MywxNy43OTc1ODQ4IDE2LjQzMDc3MzUsMTcuOTI4NzQwNiBDMTUuOTM2OTgyNywxOC4wNTk4OTY1IDE1LjM4MDk5NzcsMTguMTU4NDY0MiAxNC43NjI1OTA1LDE4LjIyMzk4NDggQzE1LjMyNjYxMzQsMTguNzE1MjE2OSAxNS42MDg2ODE5LDE5LjQ5MDYyMDEgMTUuNjA4NjgxOSwyMC41NDk4NTAxIEwxNS42MDg2ODE5LDI0LjAwNTg1OTIgQzE1LjYwODY4MTksMjQuMjAyMTkxNCAxNS42NzY1MTk3LDI0LjM2NjEwNzUgMTUuODEyMzA5MywyNC40OTcwOTEzIEMxNS45NDc5Mjc5LDI0LjYyNzg0NTUgMTYuMTYyMTAxNiwyNC42NjYzNDMyIDE2LjQ1NTExNTMsMjQuNjExNTUxNSBDMTguOTcyNjk2MSwyMy43NzA4NTcyIDIxLjAyNjE4NjUsMjIuMjU1Njc5OCAyMi42MTU3MDA1LDIwLjA2NjA3NjYgQzI0LjIwNTA0MzUsMTcuODc2NjQ1NSAyNSwxNS40MTE1OTIgMjUsMTIuNjcwMjg0OSBDMjQuOTk5NDI5OSwxMC4zODg0ODI1IDI0LjQ0MDMwOTYsOC4yODM4NDk0NSAyMy4zMjMyMDksNi4zNTYzODU4OCBaIiBpZD0iU2hhcGUiPjwvcGF0aD4KICAgICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+" alt="GitHub Logo"/></a></li><li><a href="https://openj9.slack.com/" rel="noopener noreferrer" target="_blank"><img src="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIyNXB4IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgogPCEtLSBDcmVhdGVkIHdpdGggTWV0aG9kIERyYXcgLSBodHRwOi8vZ2l0aHViLmNvbS9kdW9waXhlbC9NZXRob2QtRHJhdy8gLS0+CgogPGc+CiAgPHRpdGxlPmJhY2tncm91bmQ8L3RpdGxlPgogIDxyZWN0IGZpbGw9Im5vbmUiIGlkPSJjYW52YXNfYmFja2dyb3VuZCIgaGVpZ2h0PSIyNiIgd2lkdGg9IjI2IiB5PSItMSIgeD0iLTEiLz4KICA8ZyBkaXNwbGF5PSJub25lIiBvdmVyZmxvdz0idmlzaWJsZSIgeT0iMCIgeD0iMCIgaGVpZ2h0PSIxMDAlIiB3aWR0aD0iMTAwJSIgaWQ9ImNhbnZhc0dyaWQiPgogICA8cmVjdCBmaWxsPSJ1cmwoI2dyaWRwYXR0ZXJuKSIgc3Ryb2tlLXdpZHRoPSIwIiB5PSIxIiB4PSIxIiBoZWlnaHQ9IjIyIiB3aWR0aD0iMjIiLz4KICA8L2c+CiA8L2c+CiA8Zz4KICA8dGl0bGU+TGF5ZXIgMTwvdGl0bGU+CiAgPGVsbGlwc2Ugcnk9IjExIiByeD0iMTEiIGlkPSJzdmdfMSIgY3k9IjEyIiBjeD0iMTIiIHN0cm9rZT0iI0ZGRiIgZmlsbD0iI0ZGRkZGRiIvPgogIDxzdHlsZSB0cmFuc2Zvcm09Im1hdHJpeCgwLjA2NTE4MjQ5NTU3MzI1MzYyLDAsMCwwLjA2NTE4MjQ5NTU3MzI1MzYyLDAsMCkgIiB0eXBlPSJ0ZXh0L2NzcyI+LnN0MHtmaWxsOiM0MzQzNDM7fTwvc3R5bGU+CiAgPGcgc3Ryb2tlPSJudWxsIiBpZD0ic3ZnXzE5Ij4KICAgPGcgc3Ryb2tlPSJudWxsIiB0cmFuc2Zvcm09Im1hdHJpeCgwLjEzMDE1NTgwODUxODA5NDg2LDAsMCwwLjEzMDE1NTgwODUxODA5NDg2LC02Ljg0OTAwNjQ1MDQwNTQ5OSwtNi44MzE1MDczOTEwMjE5MjQpICIgaWQ9InN2Z182Ij4KICAgIDxnIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z183Ij4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfOCIgZD0ibTExMC4yOTgyOTIsMTYxLjI5MzAxMWMwLDcuMSAtNS44LDEyLjkgLTEyLjksMTIuOXMtMTIuOSwtNS44IC0xMi45LC0xMi45YzAsLTcuMSA1LjgsLTEyLjkgMTIuOSwtMTIuOWwxMi45LDBsMCwxMi45eiIgY2xhc3M9InN0MCIvPgogICAgIDxwYXRoIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z185IiBkPSJtMTE2Ljc5ODI5MiwxNjEuMjkzMDExYzAsLTcuMSA1LjgsLTEyLjkgMTIuOSwtMTIuOXMxMi45LDUuOCAxMi45LDEyLjlsMCwzMi4zYzAsNy4xIC01LjgsMTIuOSAtMTIuOSwxMi45cy0xMi45LC01LjggLTEyLjksLTEyLjljMCwwIDAsLTMyLjMgMCwtMzIuM3oiIGNsYXNzPSJzdDAiLz4KICAgIDwvZz4KICAgIDxnIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z18xMCI+CiAgICAgPHBhdGggc3Ryb2tlPSJudWxsIiBpZD0ic3ZnXzExIiBkPSJtMTI5LjY5ODI5MiwxMDkuNDkzMDExYy03LjEsMCAtMTIuOSwtNS44IC0xMi45LC0xMi45czUuOCwtMTIuOSAxMi45LC0xMi45czEyLjksNS44IDEyLjksMTIuOWwwLDEyLjlsLTEyLjksMHoiIGNsYXNzPSJzdDAiLz4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTIiIGQ9Im0xMjkuNjk4MjkyLDExNS45OTMwMTFjNy4xLDAgMTIuOSw1LjggMTIuOSwxMi45cy01LjgsMTIuOSAtMTIuOSwxMi45bC0zMi4zLDBjLTcuMSwwIC0xMi45LC01LjggLTEyLjksLTEyLjlzNS44LC0xMi45IDEyLjksLTEyLjljMCwwIDMyLjMsMCAzMi4zLDB6IiBjbGFzcz0ic3QwIi8+CiAgICA8L2c+CiAgICA8ZyBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTMiPgogICAgIDxwYXRoIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z18xNCIgZD0ibTE4MS40OTgyOTIsMTI4Ljg5MzAxMWMwLC03LjEgNS44LC0xMi45IDEyLjksLTEyLjljNy4xLDAgMTIuOSw1LjggMTIuOSwxMi45cy01LjgsMTIuOSAtMTIuOSwxMi45bC0xMi45LDBsMCwtMTIuOXoiIGNsYXNzPSJzdDAiLz4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTUiIGQ9Im0xNzQuOTk4MjkyLDEyOC44OTMwMTFjMCw3LjEgLTUuOCwxMi45IC0xMi45LDEyLjljLTcuMSwwIC0xMi45LC01LjggLTEyLjksLTEyLjlsMCwtMzIuM2MwLC03LjEgNS44LC0xMi45IDEyLjksLTEyLjljNy4xLDAgMTIuOSw1LjggMTIuOSwxMi45bDAsMzIuM3oiIGNsYXNzPSJzdDAiLz4KICAgIDwvZz4KICAgIDxnIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z18xNiI+CiAgICAgPHBhdGggc3Ryb2tlPSJudWxsIiBpZD0ic3ZnXzE3IiBkPSJtMTYyLjA5ODI5MiwxODAuNjkzMDExYzcuMSwwIDEyLjksNS44IDEyLjksMTIuOWMwLDcuMSAtNS44LDEyLjkgLTEyLjksMTIuOWMtNy4xLDAgLTEyLjksLTUuOCAtMTIuOSwtMTIuOWwwLC0xMi45bDEyLjksMHoiIGNsYXNzPSJzdDAiLz4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTgiIGQ9Im0xNjIuMDk4MjkyLDE3NC4xOTMwMTFjLTcuMSwwIC0xMi45LC01LjggLTEyLjksLTEyLjljMCwtNy4xIDUuOCwtMTIuOSAxMi45LC0xMi45bDMyLjMsMGM3LjEsMCAxMi45LDUuOCAxMi45LDEyLjljMCw3LjEgLTUuOCwxMi45IC0xMi45LDEyLjlsLTMyLjMsMHoiIGNsYXNzPSJzdDAiLz4KICAgIDwvZz4KICAgPC9nPgogIDwvZz4KIDwvZz4KPC9zdmc+" alt="Slack logo"/></a></li><li><a href="https://stackoverflow.com/search?q=%23OpenJ9" rel="noopener noreferrer" target="_blank"><img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjRweCIgaGVpZ2h0PSIyNHB4IiB2aWV3Qm94PSIwIDAgNjUgNzAiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5zdGFja292ZXJmbG93LWxvZ288L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0iI0ZGRkZGRiIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0ic3RhY2tvdmVyZmxvdy1sb2dvIiBmaWxsLXJ1bGU9Im5vbnplcm8iPgogICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgZmlsbD0iI0ZGRkZGRiIgcG9pbnRzPSI1NC4yNDE3MjY2IDYzLjc3MDIyNjUgNTQuMjQxNzI2NiA0NSA2MSA0NSA2MSA3MCAwIDcwIDAgNDUgNi43NTgyNzMzOCA0NSA2Ljc1ODI3MzM4IDYzLjc3MDIyNjUiPjwvcG9seWdvbj4KICAgICAgICAgICAgPHBhdGggZD0iTTE0LjcwNzEwNTcsNDMuNjQyNzU2NyBMNDguMTE3ODUxLDUwLjA4NzIwMTEgTDQ5LjUzMjA2MjQsNDMuODg3NDgyNCBMMTYuMTIxMzE3MiwzNy40NDMwMzggTDE0LjcwNzEwNTcsNDMuNjQyNzU2NyBMMTQuNzA3MTA1Nyw0My42NDI3NTY3IFogTTE5LjEyNjUxNjUsMjguOTU5MjEyNCBMNTAuMDYyMzkxNyw0Mi4yNTU5Nzc1IEw1Mi44OTA4MTQ2LDM2LjU0NTcxMDMgTDIxLjk1NDkzOTMsMjMuMTY3MzY5OSBMMTkuMTI2NTE2NSwyOC45NTkyMTI0IFogTTI3LjcwMDE3MzMsMTQuOTI4MjcgTDUzLjk1MTQ3MzEsMzUuMDc3MzU1OCBMNTguMjgyNDk1NywzMC4yNjQ0MTYzIEwzMi4wMzExOTU4LDEwLjExNTMzMDUgTDI3LjcwMDE3MzMsMTQuOTI4MjcgTDI3LjcwMDE3MzMsMTQuOTI4MjcgWiBNNDQuNjcwNzEwNiwwIEwzOS4xOTA2NDEyLDMuNzUyNDYxMzIgTDU5LjUxOTkzMDcsMjkuMDQwNzg3NiBMNjUsMjUuMjg4MzI2MyBMNDQuNjcwNzEwNiwwIFogTTE0LDU4IEw0OC4xMTc4NTEsNTggTDQ4LjExNzg1MSw1MS43MTg3MDYgTDE0LDUxLjcxODcwNiBMMTQsNTggWiIgaWQ9IlNoYXBlIiBmaWxsPSIjRkZGRkZGIj48L3BhdGg+CiAgICAgICAgPC9nPgogICAgPC9nPgo8L3N2Zz4KCgo=" alt="Stack Overflow logo"/></a></li></ul></nav></footer></div></div><script>
   
   function gaOptout(){document.cookie=disableStr+'=true; expires=Thu, 31 Dec 2099 23:59:59 UTC;path=/',window[disableStr]=!0}var gaProperty='UA-105616558-3',disableStr='ga-disable-'+gaProperty;document.cookie.indexOf(disableStr+'=true')>-1&&(window[disableStr]=!0);
   if(true) {
@@ -17,4 +17,4 @@
       
       
       
-      }</script><script id="gatsby-script-loader">/*<![CDATA[*/window.pagePath="/performance/";/*]]>*/</script><script id="gatsby-chunk-mapping">/*<![CDATA[*/window.___chunkMapping={"app":["/app-0b96427b0b370a80fa06.js"],"component---src-pages-about-js":["/component---src-pages-about-js-0c1171ebe659e1cec428.js"],"component---src-pages-index-js":["/component---src-pages-index-js-743bf9596a9631508e4e.js"],"component---src-pages-news-js":["/component---src-pages-news-js-771033deb1dca3596266.js"],"component---src-pages-performance-js":["/component---src-pages-performance-js-31be57d58d932a4860aa.js"]};/*]]>*/</script><script src="/openj9/webpack-runtime-c69760aa7e58303b27f8.js" async=""></script><script src="/openj9/styles-cc4082ebb0cb6903d934.js" async=""></script><script src="/openj9/app-0b96427b0b370a80fa06.js" async=""></script><script src="/openj9/commons-42a47b90457bdd243664.js" async=""></script><script src="/openj9/component---src-pages-performance-js-31be57d58d932a4860aa.js" async=""></script></body></html>
\ No newline at end of file
+      }</script><script id="gatsby-script-loader">/*<![CDATA[*/window.pagePath="/performance/";/*]]>*/</script><script id="gatsby-chunk-mapping">/*<![CDATA[*/window.___chunkMapping={"app":["/app-2da2270a07d62743bcd4.js"],"component---src-pages-about-js":["/component---src-pages-about-js-f3472e79e3f9cd8dc280.js"],"component---src-pages-index-js":["/component---src-pages-index-js-4f88f89ee8348cf9654f.js"],"component---src-pages-news-js":["/component---src-pages-news-js-63e528f45eabc859ccac.js"],"component---src-pages-performance-js":["/component---src-pages-performance-js-985e1e9d446123113ec2.js"]};/*]]>*/</script><script src="/openj9/webpack-runtime-4324011276ab16472ff8.js" async=""></script><script src="/openj9/styles-cc4082ebb0cb6903d934.js" async=""></script><script src="/openj9/app-2da2270a07d62743bcd4.js" async=""></script><script src="/openj9/commons-b35008cb74c6abd7ace8.js" async=""></script><script src="/openj9/component---src-pages-performance-js-985e1e9d446123113ec2.js" async=""></script></body></html>
\ No newline at end of file
diff --git a/webpack-runtime-4324011276ab16472ff8.js b/webpack-runtime-4324011276ab16472ff8.js
new file mode 100644
index 0000000..f604bfe
--- /dev/null
+++ b/webpack-runtime-4324011276ab16472ff8.js
@@ -0,0 +1,2 @@
+!function(e){function r(r){for(var t,a,u=r[0],i=r[1],f=r[2],s=0,l=[];s<u.length;s++)a=u[s],Object.prototype.hasOwnProperty.call(o,a)&&o[a]&&l.push(o[a][0]),o[a]=0;for(t in i)Object.prototype.hasOwnProperty.call(i,t)&&(e[t]=i[t]);for(p&&p(r);l.length;)l.shift()();return c.push.apply(c,f||[]),n()}function n(){for(var e,r=0;r<c.length;r++){for(var n=c[r],t=!0,u=1;u<n.length;u++){var i=n[u];0!==o[i]&&(t=!1)}t&&(c.splice(r--,1),e=a(a.s=n[0]))}return e}var t={},o={7:0},c=[];function a(r){if(t[r])return t[r].exports;var n=t[r]={i:r,l:!1,exports:{}};return e[r].call(n.exports,n,n.exports,a),n.l=!0,n.exports}a.e=function(e){var r=[],n=o[e];if(0!==n)if(n)r.push(n[2]);else{var t=new Promise((function(r,t){n=o[e]=[r,t]}));r.push(n[2]=t);var c,u=document.createElement("script");u.charset="utf-8",u.timeout=120,a.nc&&u.setAttribute("nonce",a.nc),u.src=function(e){return a.p+""+({2:"component---src-pages-about-js",3:"component---src-pages-index-js",4:"component---src-pages-news-js",5:"component---src-pages-performance-js"}[e]||e)+"-"+{2:"f3472e79e3f9cd8dc280",3:"4f88f89ee8348cf9654f",4:"63e528f45eabc859ccac",5:"985e1e9d446123113ec2"}[e]+".js"}(e);var i=new Error;c=function(r){u.onerror=u.onload=null,clearTimeout(f);var n=o[e];if(0!==n){if(n){var t=r&&("load"===r.type?"missing":r.type),c=r&&r.target&&r.target.src;i.message="Loading chunk "+e+" failed.\n("+t+": "+c+")",i.name="ChunkLoadError",i.type=t,i.request=c,n[1](i)}o[e]=void 0}};var f=setTimeout((function(){c({type:"timeout",target:u})}),12e4);u.onerror=u.onload=c,document.head.appendChild(u)}return Promise.all(r)},a.m=e,a.c=t,a.d=function(e,r,n){a.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:n})},a.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},a.t=function(e,r){if(1&r&&(e=a(e)),8&r)return e;if(4&r&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(a.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&r&&"string"!=typeof e)for(var t in e)a.d(n,t,function(r){return e[r]}.bind(null,t));return n},a.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return a.d(r,"a",r),r},a.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},a.p="/openj9/",a.oe=function(e){throw console.error(e),e};var u=window.webpackJsonp=window.webpackJsonp||[],i=u.push.bind(u);u.push=r,u=u.slice();for(var f=0;f<u.length;f++)r(u[f]);var p=i;n()}([]);
+//# sourceMappingURL=webpack-runtime-4324011276ab16472ff8.js.map
\ No newline at end of file
diff --git a/webpack-runtime-c69760aa7e58303b27f8.js.map b/webpack-runtime-4324011276ab16472ff8.js.map
similarity index 98%
rename from webpack-runtime-c69760aa7e58303b27f8.js.map
rename to webpack-runtime-4324011276ab16472ff8.js.map
index 25df544..1ca7849 100644
--- a/webpack-runtime-c69760aa7e58303b27f8.js.map
+++ b/webpack-runtime-4324011276ab16472ff8.js.map
@@ -1 +1 @@
-{"version":3,"sources":["webpack:///webpack/bootstrap"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","7","exports","module","l","e","promises","installedChunkData","promise","Promise","resolve","reject","onScriptComplete","script","document","createElement","charset","timeout","nc","setAttribute","src","p","jsonpScriptSrc","error","Error","event","onerror","onload","clearTimeout","chunk","errorType","type","realSrc","target","message","name","request","undefined","setTimeout","head","appendChild","all","m","c","d","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","oe","err","console","jsonpArray","window","oldJsonpFunction","slice"],"mappings":"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","file":"webpack-runtime-c69760aa7e58303b27f8.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t7: 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"\" + ({\"2\":\"component---src-pages-about-js\",\"3\":\"component---src-pages-index-js\",\"4\":\"component---src-pages-news-js\",\"5\":\"component---src-pages-performance-js\"}[chunkId]||chunkId) + \"-\" + {\"2\":\"0c1171ebe659e1cec428\",\"3\":\"743bf9596a9631508e4e\",\"4\":\"771033deb1dca3596266\",\"5\":\"31be57d58d932a4860aa\"}[chunkId] + \".js\"\n \t}\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n \t\t\t// a Promise means \"currently loading\".\n \t\t\tif(installedChunkData) {\n \t\t\t\tpromises.push(installedChunkData[2]);\n \t\t\t} else {\n \t\t\t\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar script = document.createElement('script');\n \t\t\t\tvar onScriptComplete;\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120;\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = jsonpScriptSrc(chunkId);\n\n \t\t\t\t// create error before stack unwound to get useful stacktrace later\n \t\t\t\tvar error = new Error();\n \t\t\t\tonScriptComplete = function (event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n \t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n \t\t\t\t\t\t\terror.type = errorType;\n \t\t\t\t\t\t\terror.request = realSrc;\n \t\t\t\t\t\t\tchunk[1](error);\n \t\t\t\t\t\t}\n \t\t\t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\tvar timeout = setTimeout(function(){\n \t\t\t\t\tonScriptComplete({ type: 'timeout', target: script });\n \t\t\t\t}, 120000);\n \t\t\t\tscript.onerror = script.onload = onScriptComplete;\n \t\t\t\tdocument.head.appendChild(script);\n \t\t\t}\n \t\t}\n \t\treturn Promise.all(promises);\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/openj9/\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// run deferred modules from other chunks\n \tcheckDeferredModules();\n"],"sourceRoot":""}
\ No newline at end of file
+{"version":3,"sources":["webpack:///webpack/bootstrap"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","7","exports","module","l","e","promises","installedChunkData","promise","Promise","resolve","reject","onScriptComplete","script","document","createElement","charset","timeout","nc","setAttribute","src","p","jsonpScriptSrc","error","Error","event","onerror","onload","clearTimeout","chunk","errorType","type","realSrc","target","message","name","request","undefined","setTimeout","head","appendChild","all","m","c","d","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","oe","err","console","jsonpArray","window","oldJsonpFunction","slice"],"mappings":"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","file":"webpack-runtime-4324011276ab16472ff8.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t7: 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"\" + ({\"2\":\"component---src-pages-about-js\",\"3\":\"component---src-pages-index-js\",\"4\":\"component---src-pages-news-js\",\"5\":\"component---src-pages-performance-js\"}[chunkId]||chunkId) + \"-\" + {\"2\":\"f3472e79e3f9cd8dc280\",\"3\":\"4f88f89ee8348cf9654f\",\"4\":\"63e528f45eabc859ccac\",\"5\":\"985e1e9d446123113ec2\"}[chunkId] + \".js\"\n \t}\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n \t\t\t// a Promise means \"currently loading\".\n \t\t\tif(installedChunkData) {\n \t\t\t\tpromises.push(installedChunkData[2]);\n \t\t\t} else {\n \t\t\t\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar script = document.createElement('script');\n \t\t\t\tvar onScriptComplete;\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120;\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = jsonpScriptSrc(chunkId);\n\n \t\t\t\t// create error before stack unwound to get useful stacktrace later\n \t\t\t\tvar error = new Error();\n \t\t\t\tonScriptComplete = function (event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n \t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n \t\t\t\t\t\t\terror.type = errorType;\n \t\t\t\t\t\t\terror.request = realSrc;\n \t\t\t\t\t\t\tchunk[1](error);\n \t\t\t\t\t\t}\n \t\t\t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\tvar timeout = setTimeout(function(){\n \t\t\t\t\tonScriptComplete({ type: 'timeout', target: script });\n \t\t\t\t}, 120000);\n \t\t\t\tscript.onerror = script.onload = onScriptComplete;\n \t\t\t\tdocument.head.appendChild(script);\n \t\t\t}\n \t\t}\n \t\treturn Promise.all(promises);\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/openj9/\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// run deferred modules from other chunks\n \tcheckDeferredModules();\n"],"sourceRoot":""}
\ No newline at end of file
diff --git a/webpack-runtime-c69760aa7e58303b27f8.js b/webpack-runtime-c69760aa7e58303b27f8.js
deleted file mode 100644
index 45b158f..0000000
--- a/webpack-runtime-c69760aa7e58303b27f8.js
+++ /dev/null
@@ -1,2 +0,0 @@
-!function(e){function r(r){for(var t,u,c=r[0],i=r[1],p=r[2],l=0,f=[];l<c.length;l++)u=c[l],Object.prototype.hasOwnProperty.call(o,u)&&o[u]&&f.push(o[u][0]),o[u]=0;for(t in i)Object.prototype.hasOwnProperty.call(i,t)&&(e[t]=i[t]);for(s&&s(r);f.length;)f.shift()();return a.push.apply(a,p||[]),n()}function n(){for(var e,r=0;r<a.length;r++){for(var n=a[r],t=!0,c=1;c<n.length;c++){var i=n[c];0!==o[i]&&(t=!1)}t&&(a.splice(r--,1),e=u(u.s=n[0]))}return e}var t={},o={7:0},a=[];function u(r){if(t[r])return t[r].exports;var n=t[r]={i:r,l:!1,exports:{}};return e[r].call(n.exports,n,n.exports,u),n.l=!0,n.exports}u.e=function(e){var r=[],n=o[e];if(0!==n)if(n)r.push(n[2]);else{var t=new Promise((function(r,t){n=o[e]=[r,t]}));r.push(n[2]=t);var a,c=document.createElement("script");c.charset="utf-8",c.timeout=120,u.nc&&c.setAttribute("nonce",u.nc),c.src=function(e){return u.p+""+({2:"component---src-pages-about-js",3:"component---src-pages-index-js",4:"component---src-pages-news-js",5:"component---src-pages-performance-js"}[e]||e)+"-"+{2:"0c1171ebe659e1cec428",3:"743bf9596a9631508e4e",4:"771033deb1dca3596266",5:"31be57d58d932a4860aa"}[e]+".js"}(e);var i=new Error;a=function(r){c.onerror=c.onload=null,clearTimeout(p);var n=o[e];if(0!==n){if(n){var t=r&&("load"===r.type?"missing":r.type),a=r&&r.target&&r.target.src;i.message="Loading chunk "+e+" failed.\n("+t+": "+a+")",i.name="ChunkLoadError",i.type=t,i.request=a,n[1](i)}o[e]=void 0}};var p=setTimeout((function(){a({type:"timeout",target:c})}),12e4);c.onerror=c.onload=a,document.head.appendChild(c)}return Promise.all(r)},u.m=e,u.c=t,u.d=function(e,r,n){u.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:n})},u.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},u.t=function(e,r){if(1&r&&(e=u(e)),8&r)return e;if(4&r&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(u.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&r&&"string"!=typeof e)for(var t in e)u.d(n,t,function(r){return e[r]}.bind(null,t));return n},u.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return u.d(r,"a",r),r},u.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},u.p="/openj9/",u.oe=function(e){throw console.error(e),e};var c=window.webpackJsonp=window.webpackJsonp||[],i=c.push.bind(c);c.push=r,c=c.slice();for(var p=0;p<c.length;p++)r(c[p]);var s=i;n()}([]);
-//# sourceMappingURL=webpack-runtime-c69760aa7e58303b27f8.js.map
\ No newline at end of file
diff --git a/webpack.stats.json b/webpack.stats.json
index 44e0db7..9e2fa37 100644
--- a/webpack.stats.json
+++ b/webpack.stats.json
@@ -1 +1 @@
-{"errors":[],"warnings":[],"namedChunkGroups":{"app":{"chunks":[7,6,0,1],"assets":["webpack-runtime-c69760aa7e58303b27f8.js","webpack-runtime-c69760aa7e58303b27f8.js.map","styles.49a8f6a822c9d7d4566b.css","styles-cc4082ebb0cb6903d934.js","styles-cc4082ebb0cb6903d934.js.map","commons-42a47b90457bdd243664.js","commons-42a47b90457bdd243664.js.map","app-0b96427b0b370a80fa06.js","app-0b96427b0b370a80fa06.js.map"],"children":{},"childAssets":{}},"component---src-pages-about-js":{"chunks":[0,2],"assets":["commons-42a47b90457bdd243664.js","commons-42a47b90457bdd243664.js.map","component---src-pages-about-js-0c1171ebe659e1cec428.js","component---src-pages-about-js-0c1171ebe659e1cec428.js.map"],"children":{},"childAssets":{}},"component---src-pages-index-js":{"chunks":[0,3],"assets":["commons-42a47b90457bdd243664.js","commons-42a47b90457bdd243664.js.map","component---src-pages-index-js-743bf9596a9631508e4e.js","component---src-pages-index-js-743bf9596a9631508e4e.js.map"],"children":{},"childAssets":{}},"component---src-pages-news-js":{"chunks":[0,4],"assets":["commons-42a47b90457bdd243664.js","commons-42a47b90457bdd243664.js.map","component---src-pages-news-js-771033deb1dca3596266.js","component---src-pages-news-js-771033deb1dca3596266.js.map"],"children":{},"childAssets":{}},"component---src-pages-performance-js":{"chunks":[0,5],"assets":["commons-42a47b90457bdd243664.js","commons-42a47b90457bdd243664.js.map","component---src-pages-performance-js-31be57d58d932a4860aa.js","component---src-pages-performance-js-31be57d58d932a4860aa.js.map"],"children":{},"childAssets":{}}},"assetsByChunkName":{"app":["webpack-runtime-c69760aa7e58303b27f8.js","styles.49a8f6a822c9d7d4566b.css","styles-cc4082ebb0cb6903d934.js","commons-42a47b90457bdd243664.js","app-0b96427b0b370a80fa06.js"],"component---src-pages-about-js":["commons-42a47b90457bdd243664.js","component---src-pages-about-js-0c1171ebe659e1cec428.js"],"component---src-pages-index-js":["commons-42a47b90457bdd243664.js","component---src-pages-index-js-743bf9596a9631508e4e.js"],"component---src-pages-news-js":["commons-42a47b90457bdd243664.js","component---src-pages-news-js-771033deb1dca3596266.js"],"component---src-pages-performance-js":["commons-42a47b90457bdd243664.js","component---src-pages-performance-js-31be57d58d932a4860aa.js"]}}
\ No newline at end of file
+{"errors":[],"warnings":[],"namedChunkGroups":{"app":{"chunks":[7,6,0,1],"assets":["webpack-runtime-4324011276ab16472ff8.js","webpack-runtime-4324011276ab16472ff8.js.map","styles.49a8f6a822c9d7d4566b.css","styles-cc4082ebb0cb6903d934.js","styles-cc4082ebb0cb6903d934.js.map","commons-b35008cb74c6abd7ace8.js","commons-b35008cb74c6abd7ace8.js.map","app-2da2270a07d62743bcd4.js","app-2da2270a07d62743bcd4.js.map"],"children":{},"childAssets":{}},"component---src-pages-about-js":{"chunks":[0,2],"assets":["commons-b35008cb74c6abd7ace8.js","commons-b35008cb74c6abd7ace8.js.map","component---src-pages-about-js-f3472e79e3f9cd8dc280.js","component---src-pages-about-js-f3472e79e3f9cd8dc280.js.map"],"children":{},"childAssets":{}},"component---src-pages-index-js":{"chunks":[0,3],"assets":["commons-b35008cb74c6abd7ace8.js","commons-b35008cb74c6abd7ace8.js.map","component---src-pages-index-js-4f88f89ee8348cf9654f.js","component---src-pages-index-js-4f88f89ee8348cf9654f.js.map"],"children":{},"childAssets":{}},"component---src-pages-news-js":{"chunks":[0,4],"assets":["commons-b35008cb74c6abd7ace8.js","commons-b35008cb74c6abd7ace8.js.map","component---src-pages-news-js-63e528f45eabc859ccac.js","component---src-pages-news-js-63e528f45eabc859ccac.js.map"],"children":{},"childAssets":{}},"component---src-pages-performance-js":{"chunks":[0,5],"assets":["commons-b35008cb74c6abd7ace8.js","commons-b35008cb74c6abd7ace8.js.map","component---src-pages-performance-js-985e1e9d446123113ec2.js","component---src-pages-performance-js-985e1e9d446123113ec2.js.map"],"children":{},"childAssets":{}}},"assetsByChunkName":{"app":["webpack-runtime-4324011276ab16472ff8.js","styles.49a8f6a822c9d7d4566b.css","styles-cc4082ebb0cb6903d934.js","commons-b35008cb74c6abd7ace8.js","app-2da2270a07d62743bcd4.js"],"component---src-pages-about-js":["commons-b35008cb74c6abd7ace8.js","component---src-pages-about-js-f3472e79e3f9cd8dc280.js"],"component---src-pages-index-js":["commons-b35008cb74c6abd7ace8.js","component---src-pages-index-js-4f88f89ee8348cf9654f.js"],"component---src-pages-news-js":["commons-b35008cb74c6abd7ace8.js","component---src-pages-news-js-63e528f45eabc859ccac.js"],"component---src-pages-performance-js":["commons-b35008cb74c6abd7ace8.js","component---src-pages-performance-js-985e1e9d446123113ec2.js"]}}
\ No newline at end of file